Generic Class Library |
|
ODETTE page at OFFIS |
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 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:
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).
Synchronisation classes These elements provide basic mechanisms for synchronisation and data sharing between modules and processes.
Types of computations This group contain objects that are commonly used for complex computations.
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:
|
|