Which Came First?

Understanding the origin of re-used technology or software can save a lot of time and problems.


By Jon McDonald
Which came first the chicken or the egg? Based on some of my recent discussions I could ask the question in a slightly different way: “Which came first, the hardware or the software?” Depending on your point of view and personal bias the answer may appear obvious, but from what I’ve seen it can be very dependent on your current engineering situation. Adopting one perspective when the other is more appropriate could lead to significant difficulty in a project.

Looking at a specific project, I may find that the software is being re-used from a previous project on a new platform. In this case the software came first and the ESL platform models must be capable of dealing with the hidden assumptions that may have been made in that legacy software. In a specific recent case transaction-level models were being developed for a virtual platform to run legacy software and leverage legacy drivers. The models were developed and tested based on the hardware spec and tested with the software drivers provided by the hardware IP supplier. I’m sure everyone will be shocked to find that when the legacy software was run on the platform it didn’t work. Still more shocking, we found that the legacy drivers had been interfacing to the hardware in ways that were outside the specified interface methods. One specific issue was that the legacy drivers relied on byte addressing of certain registers even though the hardware was specified to support word addressing only.

In this case the software came first and the software drove the requirements of the hardware models. The hardware model may have perfectly implemented the hardware specification, but because it did not implement the unspecified behavior of the hardware block, the hardware model was assumed to be incorrect.

In another project, the software did not exist before the hardware architecture was created. Hardware models were developed using load models for the software. The software and drivers were then developed on the virtual platform. In this case the transaction-level hardware model was the executable spec against which the software was developed. In this situation there was very little risk of the software inadvertently using the hardware TLM outside the specified modes, since the TLM embodied the specification.

Which comes first? Which way is correct? The answers depend on your particular situation. It’s important to understand that the flexibility exists to apply ESL techniques to projects relying heavily on legacy components as well as projects built significantly from scratch. Depending on the situation, different requirements and assumptions may be made with respect to what is considered “correct.” Ultimately which came first doesn’t matter. Both hardware and software exist and must work together as smoothly and early as possible to facilitate successful projects.

–-Jon McDonald is a technical marketing engineer for the design and creation business at Mentor Graphics.

Leave a Reply

(Note: This name will be displayed publicly)