VLAB

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.

SystemC/TLM Foundations

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 in Graphical Mode

Integrated Environment

VLAB provides an integrated environment presenting a unified interface for performing all tasks related to both the development flow of a VLAB application, from initial concept through to a ready to use and deploy 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 operation of a virtual platform.

Runtime Assembly and Configuration

All aspects of system simulation 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 system or a sub-system model is built and verified, it can be encapsulated as a reusable simulation component and instantiated in any other system simulation —no further compilation or linking is required. For example, a complete virtual platform can be modified or extended by the end user, if enabled by the creator of the platform, without rebuilding the platform itself.

VLAB does not bring unnecessary limitations and delineation between virtual platform creation and virtual platform use. Every virtual platform user can be a virtual platform creator and every virtual platform creator can be a virtual platform user, all in the same integrated environment. Any limitations or restrictions on what can be modified and what not, what can be observed and what not, are under the control of the virtual platform creator, no limitations are imposed by VLAB.

High Performance

VLAB is designed to deliver higher simulation performance. 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 of most simulations as compared 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.

Standards Compliance

We have built VLAB to comply with the industry standards for SystemC/TLM. 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 (MIT) to create VLAB binary models from standards compliant SystemC/TLM model libraries.

Discoverable User Interface

Intuitive User Interface

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.

Interactive Script Programmable Interface

VLAB includes an interactive and programmable scripting interface based on the powerful 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.

Asynchronous Execution Control

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 simulation object, also called hardware breakpoints, and then continued as required. A hardware 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.

Advanced Instrumentation and Debug

VLAB Script Debugging

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.

Multi-Simulation Toolbox

The Multi-Simulation Toolbox™ enables multiple simulation processes to be run by a user concurrently under the same license on the same host machine, potentially in parallel on a multicore 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.

Modelling Components Toolbox

The Modelling Components Toolbox™ provides a library of general purpose VLAB modelling components, such as memory models, bus models, and others, that facilitate the task of composing virtual platforms from discrete models.