As system complexity has increased, the need for more abstract models of the system has been growing.  When those models make up a complete functional representation of the system that is object code compatible with the target system, we call that a virtual prototype. The biggest beneficiary of these virtual prototypes are the embedded software developers who now have available to them an execution, analysis and debug environment that is often better than the real thing. In this fundamentals course, we will be examining virtual prototypes and some of the impacts they have on delivery schedules, product capabilities, quality and the ease with which multi-processor systems can be visualized and debugged. It will also introduce you to one solution from Synopsys called Virtualizer and show you how their virtual development kits can get you on the road to better products, faster.