Reality is the new simulation frontier
There’s an iconic cartoon that shows an excited father and son in their living room watching a beautiful sunset on television. The kicker is that through the living room window we see that this very same sunset is happening for real, just outside. In electronics, simulation is a useful tool for understanding the workings of the circuits we design. But sometimes the drive to simulate blinds us to the fact that if possible, building and testing the real thing is better than simulating it.
Of course building and testing the real thing is sometimes difficult, expensive and time consuming – after all that’s the reason why simulation was invented in the first place – but electronics technology is rapidly changing, and this brings with it new possibilities. Like the father and son in the cartoon, we just need to look out the window to see it.
From a twenty-first century perspective it’s difficult to understand the magnitude of change brought about by microprocessors a couple of decades ago. It wasn’t the processor itself that changed things, it was the fact that it allowed functionality to be developed and deployed as software, rather than as hard wired components. This allowed designers to rapidly develop functionality and implement it without traditional hardware costs. All they needed was sufficient memory capacity.
We all know that the switch to software-based functionality was the catalyst that ignited the whole embedded industry we know today. What’s not widely recognized, though, is that there’s another disruptive technology in the wings that has the potential to have a significant impact on embedded design – large-scale programmable devices in the form of high capacity FPGAs.
You may be thinking that FPGAs have been around for a while now and don’t appear to have led to a design revolution. But remember that microprocessors hit the scene many years before the embedded industry took off. The key here is ‘critical mass’. The processor revolution didn’t happen when the processor was invented, but when it became fast, cheap and plentiful enough to be used in mainstream applications. FPGAs are reaching that critical mass today.
Today you can buy for a few tens of dollars FPGA devices that are fast, feature rich and have more than enough capacity to house an entire embedded system – processor and all. What’s more, the system hardware developed in such a way is as malleable and changeable as traditional C code. This because it’s ‘soft’.
So what does all this have to do with simulation, and more importantly, what does it mean for design in general?
Until now low cost FPGAs have been viewed primarily as a convenient way to consolidate blocks of logic functionality. They’ve been treated as a component of a bigger system. As such, FPGA development has followed the same methodology as chip development, where simulation is a key part of the process.
In much the same way as software developers rely heavily on debuggers and code emulators to track down errors and prove functionality, FPGA designers have grown accustomed to using simulation to develop the functionality they put into the chip. In fact, current FPGA design flows are predominantly centred on good simulation tools.
This notion works when developing bits of a system at a low level. But if we want go beyond this and capitalize on the potential of FPGAs as a reconfigurable system platform, we really need to raise the abstraction level at which we design inside the device. We need to be able to work with large functional blocks at a high level. Indeed, the appropriate metaphor for creating FPGA-based systems is a board level one, not chip level.
To a board
level designer, the notion of simulating an entire system at the gate level is
likely to promote hilarity, if not outright hostility. By assuming that
components meet the specs of their datasheets, board level designers treat
components as black boxes and focus development around component interactions.
Systems are rarely simulated in their entirety. Instead, they are prototyped
and run ‘live’ using test code and/or stimulation sources.
And therein lies the beauty of FPGAs. They allow designers to prototype systems to a large extent without having to manufacture the underlying hardware. FPGAs bring the mutability of software to the creation of hardware.
The old timers among us will recognise the paradigm. It used to be called ‘breadboarding’. FPGAs take breadboarding to a new level – the nano level. But they also add a new dimension. Unlike traditional breadboards, the development done on FPGA hardware can translate directly to the finished product. In other words, the development platform and production platform become one and the same.
Large-capacity, feature-rich, low-cost FPGAs have the potential to become the embedded system platform of choice for next generation electronic products. But a few essential keys are needed to unlock this potential.
Chief among these is the creation of design tools that facilitate a component-based approach to FPGA design. Beyond providing a delivery mechanism for the required IP blocks necessary to construct an embedded system, and a means to connect them together, this new generation of tools needs to provide a solution to testing the interconnect signals between logic blocks inside the FPGA. Without some method of seeing ‘inside’ the programmable chip, we’re back to relying on simulation to tell us what’s likely to occur. This would negate many of the benefits of FPGA-based system design, particularly the rapid design cycle.
The FPGA vendors offer some solutions to this problem. Xilinx’s ChipScope is an example. It allows designers to incorporate IP into the design that breaks out internal FPGA signals via the JTAG programming port, allowing the status of the signals to be analysed on a computer.
Altium has taken this concept to a whole new level with a range of configurable virtual instruments supplied as part of Altium Designer. These instruments are highly configurable and come with sophisticated PC-based dashboards. This allows designers to stimulate and probe signal lines inside the FPGA in a similar manner to a board-level designer working with bench test instruments.
Simulation plays a vital part in electronics design at many levels, and will continue to do so. But today’s product designs are becoming more complex and increasingly interconnected. The challenge in designing the next generation of electronics devices is finding ways to wrangle this complexity and keep it manageable during development. Basically, we need to find new ways to do design.
FPGAs offer a way forward in that they can bring many of the benefits of a software approach to design to the creation of system hardware. They allow changes to be made quickly and at no cost, and they also allow hardware functionality to be programmed and altered after manufacture. To harness these benefits, however, we need to abandon our current reliance on simulation in the development cycle of these programmable chips. This is a crucial step in changing our perception of these devices from a component in a system, to the system itself.
If we raise our eyes and look up from the simulation for a moment, we may find that simply making real hardware straight off gets us to where we want to go much quicker and easier. After all, in the FPGA world, if reality doesn’t work the first time, we can rebuild it in the blink of an eye.
Check out real, hands-on design: