Gone are the days when a designer’s job was done as soon as the ASIC went into tape-out. In fact, getting the hardware - the chip - right is not even the biggest challenge anymore. The focus has rapidly shifted to getting the software right, and getting it working with the hardware.
But, you might say, having to re-spin the chip will cost millions of dollars, so we have to get it right the first time! True, but what will you do with that “right the first time” chip if the software is not ready?
So which is it? The software or the hardware?
It’s a software-differentiated world!
During the past few years, we have seen a dramatic change in how consumers select a certain product and, consequently, the key components that go into these consumer products have changed even more.Let’s take, for example, the good old cellphone. Ten years ago, even five years ago, when you were in the market for a new phone, you probably looked at and compared HARDWARE features:
* Dual-band or tri-band
* How big are the buttons on the keyboard
* How big is the display
* Integrated MP3 player or not
* (Handset) sound quality
If you are looking for a new cell phone today, chances are you will select a smartphone, something that’s more a small form-factor multimedia PC than a phone. Size, weight, screen size are pretty much the same, so how do you choose between the different brands and models?
You will look at the software that runs on it and the applications that you can load onto your shiny new phone.
This is true for more and more products: TVs are Web-connected, cars have voice recognition to set the climate control, and so on. It has undoubtedly become a software-differentiated world, and the suppliers of the chips that go into these devices have to supply a lot more than just the chip - they have to supply much of the software that enables these chips in a system. This software has become a key differentiator and a competitive advantage – or disadvantage!
Challenge or opportunity?
While it is definitely a challenge dealing with and developing all this software (not to mention the ASIC itself), it also represents a unique opportunity for those who get it right. Having software-differentiated hardware has the potential for longer hardware (chip) product lifecycles, which is an interesting aspect considering the staggeringly high development costs for 65nm and smaller geometry devices.
That said, what are the new challenges and how do they affect traditional design and verification flows? For one, an ASIC is no longer just evaluated based on its hardware capabilities, but increasingly on how well software can be executed on it.
Not all of that software, however, is available at the time the ASIC goes into production. Some of the software may only become available a year or so later, with a new software update. This puts a huge burden on verifying all the hardware features, especially those that might not be used initially.Secondly, designers will have to make architectural decisions about what to put into hardware and what to put into software, and validating those decisions and the resulting system performance, power consumption and so on before even RTL development. This is a key to having a successful final product.
Last but not least, you want to execute as much software as possible, as early as possible, on a cycle-accurate, post-RTL yet pre-silicon, model of the chip.
This step is probably the most critical one in the whole development process, as here the hardware and the software truly come together to work in unison. This where system validation is happening.
In addition, this cycle-accurate model serves another equally important purpose: it is a pre-silicon representation of the chip and, therefore, the ideal platform for hardware-close software development - mostly drivers, firmware and other parts of the software stack.
Breaking down the walls!
Turning these challenges into opportunities and competitive advantages and mastering these new system development challenges does not require new EDA tools or new design languages. Don’t we have enough design languages already, Verilog, VHDL, SystemVerilog, SystemC, C/C++, plus many proprietary extensions and derivatives? And what would we do with yet another simulator?
Figure 1: System development requires a continuum of tools
All it requires is to break down some barriers. Not just climb over some walls with a lot of effort but to tear down these walls. And there are many barriers -- barriers between the hardware designers and the software designers, barriers between the various EDA tools.
All the necessary pieces are there already:
* Virtual Systems Platforms to do pre-RTL software development, but also
to evaluate and validate architectural decision and hardware/software
partitioning before starting the RTL development
* Simulation for early RTL verification
* Emulation is providing the horsepower as well as the advanced debug
capabilities to exhaustively verify the hardware design, and to start
doing hardware-close software development
* FPGA-based prototyping, which has become the methodology of choice for
pre-silicon software development and high-performance system validation
But, and this is where the real problem lies, these tools traditionally have not worked together very well. Let’s say you have put together a virtual platform of your system, and you start your RTL development.
Wouldn’t it be nice to gradually move RTL blocks as they become available into your emulator while preserving the same debug environment?
Or once you have verified the hardware, the RTL, on your emulator and you need FPGA-based prototypes as a software development platform. Today, you have to start all over again: modify the ASIC-RTL to make it suitable for FPGAs and spend months to bring-up the FPGA-based prototype. Why not reuse what you have done already in emulation and get your prototype up in a fraction of the time?
What is really needed is continuum of tools that work together (Figure 2, below), not a collection of tools each surrounded by walls and fences!
Doing a true System Design is the key, is perhaps the only way to be successful in today’s economy. Hardware has become software-differentiated and software is depending more than ever on powerful hardware to run on.
Coming back to the original question “So which is it, the software or the hardware?”. Well, it is both. Without software executing on it, the chip itself is just an expensive piece of silicon that is good for nothing. And without having a sophisticated and capable hardware, the software has nothing to run on.
About the author:
Juergen Jaeger is Sr. Product Marketing Manager at Cadence Design Systems, where he is part of the team responsible for the company’s System Development Suite, a continuum of existing and proven tools, working together and providing interfaces between them which allow developers to build upon and reuse work conducted in the previous design steps in an open, connected and scalable environment. He has more than 20 years of experience in hardware and software design and verification in the ASIC and FPGA space. He holds a BSEE degree from the Fachhochschule of Kaiserlautern, Germany and a masters degree in computer science from the University of Hagen, Germany.