What ever became of the idea that we could define an embedded system in C, push the Compile button, and watch the tool spit out a complete hardware and software system design?
This month we lead off with an article on using SystemC to develop an SoC at Texas Instruments. The author describes a very specific use of SystemC in the tightly-constrained context of the OMAP platform, and in the hands of an experienced IC design team. Yet the subject itself raises the question of an old promise: what ever became of the idea that we could define an embedded system in C, push the Compile button, and watch the tool spit out a complete hardware and software system design?
Maybe this question belongs in the same bin with “Where's my flying car?” and “What happened to my robot butler?” Some forecasts are overly optimistic.
But the synthesis question is not that easy to dismiss. Many systems designers say that it is possible, with some care, to define the behavior of a system in an extended C dialect. The challenge lies in moving from a description of the behavior to a description of the implementation.
One problem is that most hardware designs in the real world contain large predefined hardware blocks, such as microcontrollers, DRAMs, or peripheral chips. We need to synthesize connections between, and ancillary blocks to, existing chips for which we may not have good models. Tricky.
We can simplify the problem, though. Suppose we write code for an existing embedded computing system, and we just want to separate out a few hot-spots in the code and compile them into a custom hardware accelerator. Now the picture is a little brighter. High-level synthesis tools are good at datapaths. And because the hardware in question is usually small, the target is generally an FPGA instead of an ASIC, so there is no need to call in a chip-design team.
In fact there are EDA tools—both specialized accelerator-generators and more general C-to-RTL synthesis tools—intended for just such applications. An evaluation last year by Berkeley Design Technology, Inc. (BDTI) demonstrated that such tools could in fact produce hardware designs about as good as a hand-crafted design. But the report had fine print, too.
BDTI found that it was necessary to tune the high-level code for synthesis rather than for software compilation. And they determined that you still need an experienced FPGA designer to take the design from RTL to a finished FPGA.
So, yes: you can get a flying car, though it's not the Sci-Fi version. No butler either, but maybe you'd take a robot vacuum cleaner. And no push-button embedded hardware system from C. But it can be very much worth your while to learn about C-synthesis tools for generating hardware accelerators.
Ron Wilson is the director of content/ media for Embedded.com and Designlines at UBM Electronics. You may reach him at email@example.com.