Hybrid execution - the next step in the evolution of hardware-software co-development

June 03, 2014 // By Frank Schirrmeister, Cadence Design Systems
Software has become a crucial component as it determines significant portions of the functionality visible to us end consumers, as well as differentiation.

Over the past decade the software content to be addressed by semiconductor companies has multiplied several-fold. Where providing some core drivers and managing an ecosystem of operating system (OS) providers was sufficient in the late 90’s to win a socket in the mobile space, today the contenders for providing application processor have to be able to deliver the chip with multiple OSs already ported, up and running, ready to be adopted by system customers.

Unfortunately, in classic development flows, hardware and software – while ultimately derived from joint requirements – diverge in their development and in the worst case integration doesn’t happen until a “big-bang” integration test is done.

The upper portion of Figure 1 shows such a disconnected hardware-software development flow from requirements through preliminary design, unit coding, testing and integration. The system integration at the very end often brings surprises that cannot be overcome without significant re-development. The industry has been striving for years to achieve a fully agile system development flow as indicated in the lower portion of Figure 1. Integration ideally should happen early and then be repeated often.


Figure 1 - The need for an agile hardware/software development flow.

Given its importance, software has become the long tail in development cycles and its efficient development and testing is of great concern. Design teams are attempting to develop software as early as possible on whatever representation of the hardware they can get their hands on – achieving what the industry sometimes calls the great shift to the left. In an ideal world software development would be enabled at the very start of a chip-development project, but in reality users face various development options across levels of abstraction and different execution engines.

Hardware execution engines to enable early software development

Figure 2 illustrates the situation, outlining the various development engines that project teams consider using to bring hardware and software together as early as possible.


Figure 2 – There is no one-fits-all solution

During a chip development project, verification and software development is mainly done on four different core execution engines....next...