The Software Side Of Derivatives

With software now an increasingly important and time-consuming part of IC designs, there is a growing emphasis to re-use code.


By Ann Steffora Mutschler
With the options and perils associated with derivative designs well articulated today, the elephant remaining in the room is, of course, software.

The software aspect of derivatives is bit muddier with some claiming the software can be maintained without modification, while others assert this is simply not possible.

One indisputable fact is that software development is a huge effort and growing. It also is routinely cited by design teams as their No. 1 challenge—which is reflected in the rapid growth in software engineers and the increasing use of emulation platforms for software rather than hardware.

“From the user point of view there are three main problems,” said Swami Venkat, senior director of marketing for Synopsys’ verification group. “There is gigascale complexity. There is a rise in gigahertz, even with multicore. And there are gigacomplex geometries.”

But being able to re-use software—or at least create derivatives of software, is critical. Once drivers and other embedded software to manage a chip’s functionality are created, teams don’t want to go back and have to recreate that software anymore than they want to re-create standard interfaces for hardware.

“Our customers are saying, ‘Ten years ago, this was irrelevant and EDA in general has partnered with semis to make designs more effective, but the challenge has shifted,’” noted Michal Siwinski, group director of product marketing for the system and software realization group for Cadence. “Now the two challenges are, one obviously, software is more relevant than hardware, and there is more time is spent on software than hardware. From the semis perspective, it really comes down to software and software/hardware co-validation, co-integration. Clearly when you go from new designs to derivatives, it is also impacted. It’s not like the software stacks remain the same when you change something in the hardware and nothing changes. I’ve seen some nice slides from people saying, ‘We separate software from hardware,’ or ‘You build the software stack in such a way that the application’s completely separate from the underlying hardware implementation.’”

It might work with a smartphone application. But that’s not the same when things get more complicated, such as managing multiple power islands or voltage rails on a complex SoC. And because software and hardware are intricately linked in advanced systems, that must be taken into consideration in derivative designs.

Jon McDonald, part of Mentor Graphics’ technical marketing, related a customer example that illustrates the issue: “One specific customer was targeting a product for a number of different markets and they had data sets for the kind of data they would need to deal with for each of the different markets. These were fairly different areas. They were interested in actually characterizing the architecture with each of the different data sets and they had a number of different possible architectures.”

Traditionally this company would bring its lead architects in a room and they would argue until somebody finally agreed to submit to the architectural choice of whomever was the most forceful.

“What they were trying to do with some of things that we were offering was to create a model—an executable model at the system level that they could quantify the choice so there’s not an argument if you have data,” McDonald said. “They wanted to gather the data. One of the things they had that was kind of an advantage for them. They had data for the target markets. They knew exactly what the target application needed to be. They knew what the processing needed to be in the different markets they were going into. They were trying to figure out the best architecture to make a tradeoff from the architecture that would satisfy all of the different markets.”

Following this line of thinking, it is clear that hardware can’t be designed in isolation, he added. “You have to design the hardware and optimize it for the application. Software has to be optimized for the platform. The platform has to be optimized for the application, for the data sets that are going to be processed.”

This is even more the case with derivatives because the engineering team must anticipate the differences in the application requirements for the different derivatives, quantify those and make the analysis to understand the impact of having some other processing capability or some higher data load for different types of data and analyze that up front, he concluded.