ICCAD Seminar on Hardware/Software Codesign of Embedded Systems, November 9, 1995

This seminar was given by three people:

Hardware/software codesign has been discussed a lot lately in the CAE industry and since it is an area that I don't know much about, I decided to take this seminar. When I signed up I had the suspicion that it might be long on academic content and short on practice. Unfortunately my suspicions were realized.

The sortest talk was given by Loganath Ramachandran, from LSI Logic. He was the only person who talked about a real project that attempted to do real hardware/software codesign. And even here, most of his talk discussed how much work still needed to be done on tools to make hardware/software codedesign practical. Only in the last few minutes did Mr. Ramachandran talk about a project at LSI Logic to design a JPEG decoder using hardware/software design principles. No tools were available to help LSI Logic do their JPEG design, so the only thing that was unique about the project was that they considered the hardware and software design together.

Frank Vahid's presentation took two hours and was simply a recitation of research, including discussions of abstract topics, like petri nets. As far as I am concerned, this talk was useless.

Jorg Henkel spent the afternoon talking about the state of research in hardware/software codesign. Hardware/software codesign is aimed at an embedded system consisting of a processor, memory and other hardware. The nature of the processor and the "other hardware" varies depending on the application and approach. The processor could have a customized instruction set, optimized for the application (JPEG for example). The "other hardware" could include signal processing components or state machines. Most of the academic work is aimed at automatically partitioning a design between the processor, memory and the custom hardware. The design is specified in a HDL, like Verilog or VHDL, or a special language developed by the researchers. If processors are customized for the embedded application, either by adding special instructions to an existing instruction set or by creating an application specific instruction set, there must be a compiler and a debugger to support this new processor. Unfortunately, there are no easily retargetable compilers available that generate high quality code (the GNU compiler is neither easy to retarget or particularly efficient, in many cases).

Some embedded applications also require operating system services. For example, a real time application may require support for interrupt processing and thread support. Although there are several retargetable real time operating systems available, the cost of retargeting is high. Some academic work has been done on using a software tool to staticly create the necessary services on the basis of the design description.

back to VLSI Tools page

back to home page