First in a series of editorials on the subject of prototyping. In this article we tackle the question - what is a prototype...
A few weeks ago, I asked several EDA vendors for their opinions about the prototyping market. I asked how they categorized prototyping, who created the models, what were they used for, roadblocks in adoption and their opinions about the future of prototyping. This is the first of a series of articles that will attempt to bring all of those answers together and to provide a comprehensive view of the prototyping space. If you are considering inserting a prototype into your design flow, which ones are likely to provide you with the most value and what are the difficulties you can expect to face? I hope by the conclusion of this series that you will be a lot more informed about the choices, or at the very least know the right questions to ask and who to talk to about them. Not everyone responded to my request, so there are some prototyping products available that are not mentioned here or discussed at all.
Let’s get started. The first question I asked them was: what is a prototype? Marc Serughetti, director of product marketing for virtual prototyping at Synopsys provided this definition.
A prototype model is built to test a concept or act as an early platform to validate that a design meets the target user’s requirements. The prototype will typically include as many, if not all, priority aspects of the design including the hardware/software operation, mechanical and external interfaces. Of course, the goal of the prototype typically dictates which prototype implementation is used at what stage of the project’s overall design cycle.
While this definition concentrates on a particular type of prototype (one suitable for an end user) it does provide a reasonable basis on which we can discuss the types of prototypes that exist. I think the most important aspect of this definition is that a prototype is a model - just like the hardware design model. The prototype model can usually exist before the same capability would be available in a design model because it is either quicker to write, contains less detail, or abstracts away some notions of the design or implementation. Most of these prototype models also have significantly faster execution performance compared to the design model as well, enabling them to be used for other aspects of the design and/or verification flow. They are also constructed to bring out specific aspects of the design. So a functional prototype is not suitable if detailed timing is being analyzed, but is suitable for the execution of most application level software. Conversely a model with more detailed timing may be great for doing architectural analysis but execute too slow for software development. All models are a tradeoff and attempting to use a single model for too many tasks will dilute the value the model has to any specific task.Frank Schirrmeister
, Group Director for Product Marketing in the System Development System & Software Realization Group at Cadence and Marc Serughetti, both divide the prototyping space into three main categories: Pre RTL or virtual, RTL and Silicon based. Both of them further divide these broad categories into a number of sub-categories. For example within the virtual prototyping space there are software development kits (SDKs), architectural models, prototypes for software development, data flow models and several others. When we think about the electronic system level (ESL) we are restricting ourselves to only those aspects related to the hardware, but there are many other types of prototype as well, such as those that combine mechanical and electrical, or user interfaces, or possibly even a complete airplane. Each of these are optimized for one or more intended tasks. It could also be argued that the verification team develops a virtual prototype and this is the model against which the hardware implementation model is compared. In the RTL space we have acceleration, emulation and FPGA prototyping. Each of these may require some changes or compromises in the design in order to get greater speed of execution while maintaining debug capabilities such as visibility and controllability. In the silicon space we may see first silicon being utilized or prior products with new capabilities being added through FPGA or discrete logic. We will look at each of these in more detail over the coming weeks.
It seems to me that the only way to define a prototype in our industry is to say that it is model developed for one or more specific purposes that is not directly on the hardware development path. We don’t call an RTL model a prototype, or a gate level model, or even a SystemC model if it will be directly synthesized to RTL. But if there is no direct path in the implementation chain then we call it a prototype, be it virtual or physical. This is unfortunate because it marginalizes the value that the prototype may provide and makes it sound as if it is an overhead.
– keeping you covered
If you found this article to be of interest, visit EDA Designline
where you will find the latest and greatest design, technology, product, and news articles with regard to all aspects of Electronic Design Automation (EDA).
Also, you can obtain a highlights update delivered directly to your inbox by signing up for the EDA Designline weekly newsletter – just Click Here
to request this newsletter using the Manage Newsletters tab (if you aren't already a member you'll be asked to register, but it's free and painless so don't let that stop you [grin]).