Electronic System Level

Models and their Application

Virtual Prototypes and mixed abstraction modeling

 






















 

 

 

 

 

 

 

 

 

Chapter 5 Virtual Prototypes and mixed abstraction modeling

In the preceding chapters we talked about models and the strengths and weaknesses that they posses. In this chapter, and the chapters that follow, we start to see how those models are combined and applied to solve some of the problems associated with ESL. Unsurprisingly, most ESL methodologies that have been constructed start with a model that is generally called a [ACR] System-Level Virtual Prototype (SLVP). This is the closest thing that the electronics industry has to an executable specification.

A SLVP is a fully functional software model of a system, including the processors, memories, I/O and user interface, and is capable of running unmodified production code, including the drivers, OS or application. Speed is of the essence with these prototypes as they must run as close to real time as possible so that execution times for long operations are kept to a reasonable length. Other concerns that users may have about SLVPs are time of availability, accuracy, development cost, bring up cost, debug insight, execution control and system interfaces to the environment in which a system resides. We will talk about these later in this chapter.

Early SLVPs were proprietary and constructed for a particular purpose, such as hardware-software partitioning, architectural exploration or to enable early integration and testing of software. Each of those posed different requirements on models where certain types of decisions required specific accuracy of models. For example, a SLVP designed for early software development may only make sense if it is available early enough prior to silicon or physical prototype or if it offers significant advantages like debug insight and execution control. We have already talked about the problems that this caused, primarily related to the inability to migrate models from one SLVP to another or promoting an effective 3rd party IP business. Thus these SLVPs were also targeted to one or a small number of industries such that the quantity of models required was limited.

While we tend to think of the SLVP as something new, the software community has been using similar concepts for quite a while. These earlier prototypes were not fully functional and often were less useful for the lower layers in the software stack. But the software community has shown that it is very willing to adopt these systems. For example, when Apple released the [ACR] software development kit (SDK) for the iPhone [BIB Apple 0803], which includes a software simulator, it was downloaded 100,000 times in the first four days of its availability, and that number reached 250,000 [BIB Apple0806] over the following three months.

SystemC and TLM 2.0 changed this dynamic, in that the industry now has a respectable way of integrating models together and promoting interoperability. What we see today are SLVPs that are in transition from being closed proprietary systems to open systems based on standards. This transition cannot happen overnight, not just because of the tool development that is required, but because of the large number of models that were created using the old languages. Models are one of the biggest roadblocks when it comes to the adoption of SLVPs, so enormous value is still attached to these legacy models.

In the next few chapters we will see that there are still many different types of SLVP, each one targeting a specific task within an ESL sub-flow. Each of these in effect becomes the anchor for a sub-flow with, for example, very specific requirements on model accuracy, which has yet to be fully integrated into one continuous flow. It is thus important to decide what you want to accomplish with a SLVP for before deciding if one or another approach is the right one.

In this chapter, we will be looking at a SLVP of the hardware system that is specifically intended to be used for the development and testing of software. It thus concentrates on processors, busses, memories and abstract notions of hardware blocks. By performing this early integration it enables architectural choices to be made in both the hardware and software architectures maximizing the utilization of resources, optimizing power consumption and ensuring that the interface between the hardware and software is well constituted. Perhaps even more importantly, it enables the development and testing of software a lot earlier than has been possible in the past. Hardware / software co-simulation started this migration path, but this modeling technology makes it possible to start platform development at the same time as the hardware is being designed. As soon as this has been completed, the software team has a full binary compatible model on which they can start to develop and debug the software, shaving months off of the schedule and in many cases taking software off the critical path in the development flow.

In addition, this chapter will demonstrate some of the process of change in the industry. Aspects of the SLVP described here preceded the introduction of SystemC and TLM 2.0 and were thus proprietary and closed. Synopsys has always been an adopter and promoter of standards and thus when a suitable standard emerged they knew the importance of following it and converting the systems that they had to be compliant to those standards. This is not an easy process. Legacy is an important part of this industry, not only in terms of tool support, but also in the models that have been created. Synopsys had a huge library of models which have often been cited as one of the main holdbacks in ESL adoption. To lose those models would have been a setback, not only to Synopsys but potentially to the industry adoption of SLVPs in general.

It should thus be noted, that aspects of both the old and the new will be discussed in this chapter, but that Synopsys is dedicated to the future based on standards. At the time of the actual publication of this book, it is likely that more of the legacy capabilities will have been transferred into the System/TLM features of the environment.

5.1 Introduction
     5.1.1 Historical perspective
     5.1.2 Use Models
     5.1.3 Technology
     5.1.4 Interfaces
     5.1.5 Processor Models
5.2 System Prototypes
     5.2.1 Development environments for software development
     5.2.2 Hybrid Hardware - Software Based Development Platforms
     5.2.3 Hybrid System Prototyping use models
5.3 Constructing a System Level Virtual Prototype
     5.3.1 Modeling Languages
     5.3.2 Model Creation
     5.3.3 Model Import
     5.3.4 Model libraries
     5.3.5 Virtual devices
     5.3.6 Modeling the Environment
     5.3.7 Tying it all together
     5.3.8 Documentation
5.4 Running the prototype
     5.4.1 Debug
     5.4.2 Analysis
5.5 Verification
     5.5.1 Platform Deployment
     5.5.2 Verification Methodology Manual
     5.5.3 Building the RTL testbench
     5.5.4 Regressions
5.6 Example
     5.6.1 The application
     5.6.2 The bottom line
5.7 The Future
5.8 References

Errata

Feedback

     Your name:
     Your company or affiliation:
     e-mail address:

     Would you like to be contacted by one of the authors

Your comments or suggestion


Buy the books here

This site is owned and maintained by Brian Bailey
All information is Copyright © 2007-2010