Are We There Yet?

We’ve been talking in the industry for as long as I can remember about hardware and software co-design and I’m always curious to hear how that it progressing….or not.

I posed this question to Jon McDonald, technical marketing engineer in Mentor Graphics’ design creation synthesis group who is constantly in touch with engineering teams. His take is that hardware and software teams are not yet working closely together, although they are trying to come up with models that allow them to share information better. They acknowledge they need an accurate model of the hardware that the software runs against in order to have a platform for discussion.

“Without some quantitative feedback, without being able to run an algorithm on the processor and say, ‘This is how long it takes, this is how much power it uses, this is the energy for this algorithm on this silicon on this ISS/ processor,’ it’s very difficult to discuss anything with the hardware guys,” he said. This is because the hardware guys are going to say they can just build a hardware accelerator, at any speed and throughput, thanks to pipelining.

The problem is that historically, hardware has been developed out of context, McDonald believes. “You get a spec and you go build a hardware block and you’re not testing it in the context that it’s going to be used in. You’re not developing it, optimizing it in the context it’s going to be used in.”

The answer, he said, is creating a model that allows software to run on that hardware model, so the software is using the hardware in the way it is intended to be used. “You can process real data, you can look at the real response time, the real energy consumed by different functions being executed on that hardware and it’s not a manufactured test bench or your verification flow. Face it, the verification engineer is not going to exercise the design in the way it’s going to be used, He’s looking for corner cases, he’s looking for complete coverage of all of the different modes of operation, and it’s not using the system in the way they would typically be used.”

So, are we there yet? Do we have the models with the accuracy that is needed to bring software and hardware engineers together in meaningful collaboration? In some cases, perhaps, but the true answer most likely depends on whom you ask.