Debugging system issues has always been a difficult task. Unfortunately, as multicore systems become more prevalent, debugging becomes substantially more difficult. The programmer must now deal with all of the previous issues, plus the resource contention and deadlock problems inherent in most multicore designs. Many times, these problems are impossible to debug by simply looking at registers through a JTAG connection.
Needless to say, a better solution is required.
Virtual platforms increasingly are being used to meet the rigorous debug requirements of multicore design, accomplished via a widely deployable platform that executes at high speeds and delivers complete visibility into the entire system. Their superior debug capabilities can pinpoint and fix problems in a virtual world much faster than is possible with physical prototypes or real silicon. Typically, virtual prototypes are available much earlier in the design cycle.
Virtual prototypes are, of course, only as accurate as the models they contain. Virtual models created from the hardware implementation are a vital part of any virtual prototype flow. They enable accurate debugging because they ensure that real software and real hardware are executing together. Virtual models created from a hardware implementation can help accelerate the development of virtual prototypes, since a portion of any design is reused.
A new generation of systems is requiring a new breed of debug solutions and virtual prototypes leveraging hardware accurate models is rising to meet the task.