Overview

Consortium

Results

Articles

SystemC(TM)

SystemC(TM) Plus Methodology

Events

Links


Generic Class Library




 

HOME


ODETTE page at OFFIS


SystemC(TM) Plus Methodology

 
OSSS
 
Design Flow
 
Tool Architecture
 
Synthesis
 
Veification
 
Co-Simulation
Generic Class Library
 
Application Specific
Class Library
 
Downloads
 
Publications

 

Generic Class Library

Generic Class Library User's Guide

Presentation of the Generic and Telecom Class Libraries developed in the ODETTE project

 


Class libraries allow reuse and sharing of common elements that are often used in hardware and software modelling. They provide their users a simple method for using these common elements without the need to develop their functionality from scratch, while giving her freedom to adopt and extend the elements according to specific needs via parameterisation and inheritance.

In fact in an object oriented environment the utilisation of a library cell differs notably from the usual methodology, applied for instance in a VHDL environment. In fact a VHDL library element is a model that can be instantiated in the design as it is, providing some parameters that are defined in the GENERIC part of the entity, allowing choosing a few characteristics of the object to be instantiated.

In the SystemC(TM) Plus environment, the concept of library cell is based mainly on the concepts of template (parameterisation) and of class specialisation (inheritance). Using the template feature, different parameters can be associated to a specific implementation. This is the case for instance for data containers (FIFOs, Stacks, and so on), that can contain different types of data (bytes, packets, ATM cells, etc.) according to the type defined in the template. Moreover specialisation allows a parallel exploitation of the object orientation features for re-use. This is the case when the library element is a generic model that before being used must be specialised by the user in some way. This applies for instance to ATM cell data types, that need to be customized according to the rules of each Company.

The goal of generic class library developed in the ODETTE project is to provide a basic class library for hardware design and modelling. This class library comprises a set of building blocks that are often used during modelling and design process, starting from early stages of system modelling and going all the way to a synthesizable description of the system.
The elements of the library are written according to the guidelines of Language Reference Manual (OSSS specification) in order to allow for synthesis in the developed ODETTE synthesis tool.

 

The elements of the library are divide into four groups:


Data containers

Elements of this group are used as containers of various types for data objects. They are used to store and manipulate other data objects.

Each of the data containers defined here contains a fixed-size storage, which is defined as one of the template parameters of the class (template parameter Size), for a specific data type and methods that provide access to this storage. In all the data containers that are defined here, the data type that is stored in the container (template parameter Type) needs to be default constructible (support constructor without parameters) and assignable (support copy constructor and assignment operator).

This library provides two kinds of implementation for data containers: a pure C++ implementation, and a Global version.

Therefore, the user can:
- use the C++ classes as they are (e.g. when used as simple object by a process),
- explicitly define a global version "wrapping" a data container in a proper global object definition,
- use the global version provided in this library (if there are no needs for different interfaces and/or guard conditions),

  • Memory
  • Global Memory
  • FIFO
  • Global FIFO
  • Stack
  • Global Stack
  • DeQueue
  • Global DeQueue
  • MultiTap
  • SyncMultiTap
  • Global MultiTap
  • HashTable
  • HashTablePlus
  • Global HashTable
  • Global HashTablePlus
  • Associative Memory
  • Global Associative Memory
  • Mailbox
  • Global Mailbox
  •  


    Interfaces

    Elements of this group provide communication mechanisms between modules and processes in the design. The interface elements enhance the interface elements that are currently supported by SystemC(TM).

  • PeerToPeer channel
  •  


    Synchronisation classes

    These elements provide basic mechanisms for synchronisation and data sharing between modules and processes.

  • Semaphore
  • MutEx
  • Read-Write MuEx
  • Rendevous
  •  


    Types of computations

    This group contain objects that are commonly used for complex computations.

  • Complex Numbers
  • Vectors
  • Complex Vectors
  • Matrixes
     
  •  


    Generic Class Library User's Guide, which is available for download here contains, information and usage description of each element of the Generic Class Library.

    The structure of each element description consists of:

  • short description of the object that the class represents,
  • notes on the class implementation including definition of types, list of template parameters, data members description, constructors definition and list of interface methods;
  • information on testing;
  • user examples on how to use the object
  •