Posted by Michael Posner on October 12th, 2012
Answer: You need both !!
I often get asked the difference between Emulation and FPGA-Based Prototyping. These are complementary technologies with the focus of Emulation being verification and the focus of FPGA-based prototyping being validation. This translates to emulation being used earlier in the design cycle as part of the verification by simulation design cycle. Of course Hybrid Prototyping, connecting Virtual with FPGA-Based Prototypes, enables the FPGA-based prototype to be used earlier in the design cycle but that’s solving a different problem. Hybrid Prototyping is focused on enabling earlier development of hardware aware software. Emulation is complementary to prototyping as each technology is solving a different problem; in fact many of our customers utilize both emulation and prototyping in their SoC development process today. As mentioned before, Emulation systems focus on SoC verification, whereas FPGA-prototypes focus on validation tasks such as hardware validation and hw/sw integration and extend to software development and debug.
Design verification means confirmation by examination and provision of objective evidence that specified requirements have been fulfilled. So basically does the design meet the functional requirements outlined in the designs functional spec.
Design validation means establishing by objective evidence that device (product) specifications conform to user needs and intended use(s). So basically does the design meet user requirements and usage models which are usually defined in the marketing requirements document? For example:- it’s supposed to seamlessly USB ports, does it actually do that. (yes you designed in a USB controller and PHY but in the real world can you physically plug in the cable and interoperate with the third party USB port)
While you really want to have both of these technologies enabling you to deliver the highest quality hardware and software products, sometimes financially you cannot afford both. This is when you need to decide which of these technologies to buy. To make that decision you need to answer the question as to what is the highest priority problem you are trying to solve is. The points below may help you work that out.
- What is the goal of the hardware assisted flow?
- Are you willing to trade off a little accuracy?
- Is the goal verification or validation?
- Is near 100% debug visibility required?
- Is there a minimum frequency for real world I/O
- Is performance needed for firmware/application software development
You know you want Emulation when
- Goals are Verification focused
- You want a faster model than RTL simulation
- You are willing to accept a trade-off between performance and accuracy
- The focus is RTL functional Verification just like the goal of RTL simulation
- You need close to 100% visibility for RTL functional debug
- Only interested in testing low level firmware.
You know you want FPGA-Based Prototyping when
- Goals are Validation focused
- Must have accuracy at near real time, high performance enabling comprehensive software stack to be executed.
- You require a model that faithfully represent design, especially asynchronous behaviors
- The testing requires real world I/O running at speed
- You are doing HW validation, HW/SW integration and software development which mean you need the solution to deliver high performance needed to run the real software.
- You can accept focused areas of debug visibility
- You want to immerse the design in real world stimuli
As you can see the two technologies are complementary as they are solving different problems. This is why you need to use both to ensure highest productivity and product quality. Anyway, that’s my view of Emulation and FPGA-Based Prototyping in a nut shell. Does your view differ? If yes, post me a comment and we can chat about it.