What is it?
The SWGen library is a methodological
library which enables a direct generation of embedded SW from a SystemC™
Which are the advantages of SWGen library?
There are several advantages associated with
the usage of this library:
Translation from a
standard language. The SWGen library takes as input a
SystemC code. The standarization of SystemC language
(IEEE 1666) strengthen the position of SystemC to become a widespread system-level specification language.
It enables a single-source
design methodology. The same SystemC specification can be
either compiled against the SystemC simulation kernel for system-level
verification and/or validation or cross-compiled against the SWGen
library for generate teh SW binary.
The SystemC code needs not to be refined. A few console commands
serve to generate the source code and the binary code.
The generation all the stuff of SystemC library which is not
necessary in SW. This is code corresponding to the discrete
event simulator and other system-level features provided by the
library. Therefore, the code generated is more efficient in size
and speed than if the application were crosscompiled together
with the SystemC library.
Low demand to the cross-support.
The SystemC library does not need to be cross-compiled.
This could be non-straighforward for many target platforms. In
contrast, the SWGen library requires a basic support of RTOS and
HW/SW platform based.
The SW generation library assumes that the code will be executed
in a HW/SW platform considered
to be the set of RTOS(SW) + processor&peripherals (HW). That
is, the RTOS is also considered as part of the available
platform. This takes advantage of the current state of art in SW
generation. There is no need to synthesize an ad-hoc RTOS.
Easy Extensibility to new
platforms. The SWGen library is
structured in several translation levels. Each of these levels
correspond to a source code package: sc2cpp (for code that can
be directly translated to SystemC to C/C++), sc2rtos (for code
that needs to call RTOS services through a RTOS-API) and
sc2platform (for code that need to invoke services out of a
supported API or that need to know the platform architecture).
Connection with a
heterogeneous specification methodology. The library is
connected to the HetSC library. The main intend is to enable a
direct path to (SW) implementation from this heterogeneous system-level
Which kind of SystemC can I generate from?
The library support basic SystemC features such as,
modularity, concurrency and separation of
computation and comunication. In a more specific way, the
general specification methodology of HetSC is practically covered.
In the current public releases that includes SC_MODULE, SC_CTOR,
SC_THREAD, wait(double,sc_time_unit, sc_main, sc_start(-1), ports,
basic port binding and some standard channels). However, be aware that no every
SystemC constructs are directly supported. In most of cases, it is a
question of time and those constructs are likely to appear in future
versions of the SWGen library. There are other constructs where it is not forseen a straight forward translation
can be easily commited by future users.
Which Development Environment SWGen works in?
The first available versions of the SWGen library will
(in alpha version) are ready for Linux and Unix platforms. Likely, the support for other platforms (Windows +
Cygwin) will be quickly provided.
Which Development Platforms can I target?
Altough the first developments of the library
have been done for eCos RTOS and its C-API for OpenRisc and ARM7
architectures, the first available release will be for translation
to a HW/SW platform presenting a POSIX-API, and chequed for a native
Linux(2.6.3)-x86(PC) platform and a embedded (GX-)Linux-ARM(9)
The next software has to be installed:
A C++ compiler. The library should be supported
by the gcc compiler (at least gcc 2.95.3 version, with forward
compatibility). The compiler is available here.
The 2.1 kernel of SystemC (versions
from 2.0 to 2.1 will work with minor limitations). The SystemC
library can be downloaded here.
library would be necessary if you have to translate non-standard
structures proper of the heterogeneous specification methodology
which the HetSC library enables.
You do not need to install other methodological libraries based on
SystemC (such us SCV, TLM, Perfidy, SC2RTOS, etc).
Where do I download it?
The SWGen library can be