Are You Designing The Right Product?

Why it’s so important to keep track of system requirements throughout the design process.


Development and production of SoCs is becoming more and more complex and expensive. And rightfully so, the semiconductor industry spends billions of dollars on verification efforts.

Verification is about checking the design behaves per its specification, a process that is very important and well understood. Still, something can go terribly wrong because having a verified SoC does not guarantee that it works as intended in its real environment for real use cases.

Fig. 1: This hallway was built according to spec but definitely not according to the user needs and requirements.

Performing checks against the real use cases is called validation. Doing it post-silicon and fixing issues is obviously too expensive and thus semiconductor companies spend more and more effort on tasks to:

1. Capture the system requirements early and correctly translate them into hardware and software specifications.
2. Perform continuous validation to ensure that the HW/SW design is meeting the original system requirements and use cases.

Fig. 2: Two areas vastly important for successful SoC projects are capturing system requirements and continuous validation.

System requirements for embedded hardware and software development are typically related to:

Performance: Does my SoC system provide enough performance and throughput for various use cases, such as being able to render videos while also running other arbitrary applications in parallel?
Power: Does my SoC power management balance power versus performance to achieve a reasonable user experience in various use cases, such as low battery situations?
Behavior: Does my SoC system functionality behave as expected in conjunction with other connected devices and real-world scenarios?
Safety: Does my SoC system functionality recover from various user and environment errors and faults?

Capturing the System Requirements
In the beginning of a new SoC project the system architects need to make predictions on how a certain HW/SW architecture can fulfill the requirements. Virtual prototypes for architecture definition allow quick exploration of varying alternatives so that an educated design decision can be made. In an earlier blog, Pat Sheridan described how system requirements can be expressed as a Key Performance Indicator (KPI), such as frames per second or browser launch time.

Comparing different architecture choices with the target KPI allows the Architect to close the loop between the system requirements and SoC specifications.

Performing Continuous Validation
Tom De Schutter recently wrote how FPGA-based prototyping can shift left the system validation into the pre-silicon phase. He showed how exposing a verified HDMI design to a real-world environment can expose critical system issues.

Virtual prototyping can further shift left validation tasks to a pre-RTL phase.

a) Virtual prototypes for software development allow early validation of software behavior and safety requirements. The full visibility and control that these prototypes offer enables validation of use cases that are nearly impossible to reproduce in the real word like Flash memory faults for managed storage devices.
b) Virtual prototypes for architecture definition enable early validation of system performance and power as discussed above.

As the hardware and software is refined during the development process, it’s important to keep system requirements continuously in sight. Virtual prototypes offer guidance in two ways:

1. First, they can be incrementally refined so that RTL subsystems can be brought into the virtual prototype, or the virtual environment can be brought into the FPGA-based prototype to allow extensive reuse and easy refinement of the design.
2. Second, the KPIs for performance and power can be continuously tracked for system validation during the implementation flow, even after SoC tape-out, by adding performance monitors into the design.

Fig. 3: Incremental refinement allows to reuse RTL artifacts and virtual artifacts in both prototyping environments for Validation.

So, are you designing the right product? Virtual prototyping enables the capture and validation of requirements early and works hand in hand with FPGA-based prototyping methods throughout the SoC flow.