There are
basically two flavors of C++ models:
1. Peripherals, implementations of peripheral functions:
UART, LAN, GPIO, file io,...
2. Interfaces, Instruction Set Simulators and HDL
simulators.
The second kind is used to inter-connect the Adveda
simulators (ISS & HDL). You can also develop a wrapper
on this level to attach for instance an ARM
Armulator™
to the Univers environment. Adveda provides the service
to develop such interfaces for you.
The first kind
of C++ models:
The Univers
tools include a set of general peripheral models. These
models are developed in C++ and use the open debug API.
This API provides many features. It is possible to add
or remove instructions from an ISS by attaching a C++
peripheral model. A floating point unit including its specific
instructions is a good example. This mechanism has major
simulation performance benefits: the ISS does not suffer
from unused components.
C++ peripheral models can include more than just
the peripheral itself. A good example is to visualize
the LCD output on the PC.
C++ peripheral models can be
developed by Adveda as a service, but users can also
develop their own proprietary peripherals.
To highlight some of the benefits of
modeling an example of a UART is given. The C++
peripheral model adds a register window to the Univers environment
to inspect/change the status of the UART. Additional a
console window is part of the UART peripheral. This
console window supports:
Visualization of Input and Output of
the UART (ASCII or hexadecimal format)
Visualization of the UART outputs in a waveform window
Error injection by forcing signals
Data transfer with PC COM-Port to connect hardware to
the simulated UART
|