Grupo de Ingeniería Microelectrónica

Microelectronics Engineering Group

Departamento de Tecnología Electrónica, Ingeniería de Sistemas y Automática Universidad de Cantabria
Home   People   Research   Teaching   Doctorate   Publications  


SWGen Library


Related Bibliography

Related Links


News :  (January 31th, 2007): SWGen website updated, advantages section rewritten and bibliograbhy link available! (January 26th, 2007): SWGenv1.1 library available for free download! GIM>Research>SWGen
   SWGen Library

What is it?

  The SWGen library is a methodological library which enables a direct generation of embedded SW from a SystemC™ specification.

 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.

  • Automatic Generation. The SystemC code needs not to be refined. A few console commands serve to generate the source code and the binary code.

  • Efficient generation. 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 platform facilities.

  • 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 target HW/SW 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 specification methodology.

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 which 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) platform.


   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.

  • The HetSC 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 downloaded here.


   The people directly involved in this work are Eugenio Villar and Fernando Herrera.

© Copyright GIM (TEISA-UC)    ¤    All rights reserved.    ¤    Legal Terms E-Mail Webmaster