VLAB™ is a programmable and interactive environment for the assembly, configuration, programming and operation of electronic system level simulations, such as virtual system prototypes and virtual platforms, as well as other VLAB applications.
A VLAB application is a program of VLAB commands, such as simulation assembly, configuration, control, introspection, observation, computation and state change VLAB commands, as well as any other user Python code, running on VLAB. It should not be confused with target application software which runs on a virtual hardware platform.
A VLAB virtual platform is a VLAB application which integrates together VLAB, simulation models and other simulation objects, scripts, tools, test and infrastructure software, and perhaps target software.
VLAB is built on a foundation of SystemC/TLM industry standards, including IEEE Standard SystemC 1666™-2005, OSCI SystemC 2.2 reference implementation, and SystemC TLM 2.0.1, while offering a new, powerful, value adding level of capabilities, higher level abstractions, APIs, and functions.
VLAB provides an integrated environment presenting a unified interface for performing all tasks related to both the development flow of a VLAB application, such as a VLAB virtual platform, and all tasks related to the use and execution of a VLAB application, for example the use and execution of a virtual platform.
All aspects of virtual platform configuration, including selection of simulation models, their connectivity, configuration of each model instance, and overall simulation model integration are performed dynamically at run-time, without impact to simulation run-time performance. Once a model or subsystem is built and verified, it becomes a reusable simulation component to be instantiated in any system simulation—no further compilation or linking is required. For example, a complete virtual platform can be modified or extended by the user, if enabled by the creator of the platform, without rebuilding the platform itself.
VLAB is designed to deliver the highest simulation performance possible. The VLAB OSCAR® enhanced simulation kernel uses advanced just-in-time compilation techniques to reduce the internal overheads. VLAB makes extensive use of multi-threading and multi-processing to take advantage of the computational resources of modern multi-core computers. As a result, VLAB delivers a significant speedup for most simulations, as compared to simulators built with the reference OSCI SystemC 2.2 implementation or derivatives of the OSCI reference implementation. In particular, simulations which make use of data logging and signal tracing often execute many times faster on VLAB than on OSCI.
We have built VLAB from the ground up on the basis of existing ESL standards. VLAB is source code level compatible with IEEE Standard SystemC 1666™-2005 and the OSCI SystemC 2.2 reference implementation, as well as the latest SystemC TLM 2.0.1 transaction level modelling standard. VLAB provides an automated model import tool to create VLAB binary models from standards compliant model libraries.
VLAB offers text (console) and graphical mode (IDE) environments, both providing usability features such as session history and assisted command completion. In addition to this, the VLAB IDE presents discoverable functionality, context sensitive online help, and syntax highlighting and source level debug for VLAB scripts and commands, system views, and support for data instrumentation and analysis views.
VLAB includes an interactive and programmable scripting interface based on the very popular Python language. The scripted programming interface offers commands for all activities provided by VLAB, including platform integration, runtime execution and control, instrumentation, etc. Furthermore, VLAB provides a native scripting interface for SystemC/TLM, making it possible to create and interact with simulation objects at runtime.
VLAB provides users with complete control over the execution of a VLAB application, such as a VLAB virtual platform. Simulation can be interrupted at any point by user interaction or programmatically via user defined breakpoints, either in target software or in a simulated object, and then continued as required. A breakpoint can be triggered by passage of time, or a change in state of the simulated objects, and a scripted callback can optionally be executed in response to the breakpoint. VLAB also provides mechanisms for safe access to simulation object state while the simulation is actively running.
VLAB offers efficient instrumentation for all major simulation objects, including ports, signals, buses, and registers for models of hardware. Instrumentation, on a per object level, can be turned on and off dynamically at any point in the simulation. A powerful yet simple and intuitive trace point description is used to succinctly specify groups of objects to instrument.
VLAB provides extensive source level debug and automatic introspection capabilities for VLAB applications. Users can query and discover the composition, connectivity and configuration of the simulated system. The state of any simulation object can be safely viewed and modified at any point in the simulation.
The Multi-Simulation Toolbox™ enables multiple simulation processes to be run by a user concurrently on the same host machine. When the VLAB IDE is used, a convenient graphical multi-session interface is provided to quickly and efficiently switch between the simulation processes running at any one time.
The Modelling Components Toolbox™ provides a number of VLAB modelling components, such as memory models, bus models, and others, that facilitate the task of composing complete virtual platforms from discrete models.