Abstract :
Modern systems often contain special-purpose hardware for performance and power reasons. It is sometimes difficult to know a priori the best decomposition of the system from performance point of view. Since different components are designed by different teams it also difficult to ensure that the whole system would function properly when various components are put together. These risks can be mitigated substantially if one can build rapidly an accurate and fast prototype of the system being designed. Such prototyping does not extend the time-to-market if the design methodology ensures that there is an automatic or semiautomatic path from the prototype design to the real product design. Our methodology has three essential aspects: reusing complex blocks involving domain expertise; experimenting with designs to achieve goals such as cost, performance, and power; conducting high-fidelity full system simulation, including software, throughout the design process. We will illustrate this methodology using several prototypes we have built over the past few years - AirBlue, H.264, Mulicore PowerPC simulator and BlueSSD.