I hear a lot of discussions about hardware/software co-design. And what is most surprising is that most of the "talkers" address the subject as if it was a new thing: a new capability that ESL brought about. A few times, the argument is inverted and hardware/software co-design is credited with the invention of ESL.
In 1970 I was working for a company that was developing one of the first commercial microprocessors. There I developed a Fortran program that allowed software programmers to develop their code well in advance of the silicon being ready. Later on this type of program would be called an Instruction Set Simulator (ISS). Then in 1976 I joined Intel to work on their development system products. It was a special purpose computer that allowed software programmers working for Intel's customers to develop and debug code for Intel microprocessors before the hardware product was ready.
It is unfortunate that our industry is mostly a young man's industry, so that things are re-discovered due to a lack of historical prospective. Hardware/software co-design has been happening since the introduction of the first commercial microprocessor, make no mistake about it.
Yes, but it is different
I agree that the use of ASIC has changed the nature of the solution required for hardware/software co-design. Today building an ISS for a chip with a relatively short market life is not economically feasible. But it is also becoming undesirable for many applications to develop such a chip, in spite of the fact that semiconductor fabrication technology allows a degree of integration that was unthinkable even twenty years ago (I know that seems like a long time to the young guns). What is happening today is an attempt to recreate those standard microprocessors. We do it in the form of "platforms", systems that we can re-use from one product to the next while retaining the flexibility to update one of the functional component in the system while keeping most of the rest constant.
We have also developed configurable "development systems". They are now called emulators and take advantage of the tremendous strides FPGA technology has made in the last few years. Today's emulators allow the development of embedded and application software without the need for final silicon. And they do so at a price point that makes them desirable and convenient.
The methods are not different, the tools are more modern. Instead of using a proprietary programming language, we use C or C++, or even Java. Instead of one box per microprocessor, we have modular and configurable systems, but the methods remain the same. With very few exceptions we design a hardware system and then we develop code for it. This is not co-design, it is co-development, a difference often glossed over by the lack of precision in the use of terms.
Where is the software?
Unfortunately, EDA is still a hardware focused industry. Tools for system level design are hardware centric. The common description is that they "allow" software co-design, not support it. In fact it is not real co-design. It is more like early development and debug given a defined hardware environment. When was the last time you went to a conference where the problems of hardware and software design, development, and debug was discussed together?
What made me think of this is a press release I received from Mentor, announcing that one of their nucleus operating systems had passed OpenMAX IL conformance testing, making it the first commercial OS to achieve such platform conformance validation awarded by the Khronos Group.
According to its web site the Khronos Group is a member-funded industry consortium focused on the creation of open standard APIs to enable the authoring and playback of dynamic media on a wide variety of platforms and devices. All Khronos members are able to contribute to the development of Khronos API specifications, are empowered to vote at various stages before public deployment, and are able to accelerate the delivery of their cutting-edge 3D platforms and applications through early access to specification drafts and conformance tests.
What I found very interesting is that Mentor Graphics is the only EDA company that is a member of the group. Given that dynamic media plays a major role in most consumer products, and that this category of products is the one sustaining the profitability of most of the EDA users, the fact that not just the big companies, but even startups who claim to be in the ESL market do not belong to this consortium is discouraging. A quick look at the members list shows that all major EDA customers are members, so this is not an organization that marketing departments can ignore. To grow, EDA must get its head out of hardware and start looking at its customers' products in a holistic way.