SystemC

SystemC

SystemC is often thought of as a "hardware description language" like VHDL and Verilog, but is more aptly described as a "system description language", since it exhibits its real power during transaction-level modeling and behavioral modeling. SystemC is a set of library routines and macros implemented in C++, which makes it possible to "simulate" concurrent processes, each described by ordinary C++ syntax. Instantiated in the SystemC framework, the objects described in this manner may communicate in a "simulated" real-time environment, using signals of all the datatypes offered by C++, some additional ones offered by the SystemC library, as well as user defined.

The behaviours (processes) defined may be instantiated any number of times, and provisions are made for processes defined by hierarchies of other processes, as one would expect.

The language thus offered has semantical similarities to VHDL and Verilog, but may be said to have a syntactical overhead compared to these. On the other hand, greater freedom of expressiveness is offered in return, like object oriented design partitioning and template classes. Which is more: SystemC is "both" a description language "and" a simulation kernel. The code written will compile together with the library's simulation kernel to give an executable that behaves like the described model when it is run. The performance of this simulation kernel is not to be compared with that of commercial VHDL/Verilog simulators designed to simulate RTL level designs at the present.

History

* 1999-09-27 Open SystemC Initiative announced
* 2000-03-01 SystemC V0.91 released
* 2000-03-28 SystemC V1.0 released
* 2001-02-01 SystemC V2.0 specification and V1.2 Beta source code released
* 2003-06-03 SystemC 2.0.1 LRM (language reference manual) released
* 2005-06-06 SystemC 2.1 LRM and TLM 1.0 transaction-level modeling standard released
* 2005-12-12 IEEE approves the IEEE 1666–2005 standard for SystemC
* 2007-04-13 SystemC v2.2 released
* 2008-06-09 TLM 2.0 released

SystemC was originally developed by Synopsys, Inc., an Electronic Design Automation (EDA) company, to act as the modeling foundation for forthcoming system simulation and synthesis tools. A number of Synopsys' end-users suggested that the only way a modeling environment like SystemC would be adopted broadly, would be as an open source project. Synopsys teamed with a number of large electronics companies, ARM Ltd. and CoWare to launch SystemC in 1999. The chief competitor at the time was another C++ based open source package offered by a small startup called CynApps which later became Forte Design Automation. In June 2000, a standards group known as the Open SystemC Initiative was formed to provide an industry neutral organization to host SystemC activities and to allow Synopsys' largest competitors, Cadence and Mentor Graphics, democratic representation in SystemC development.

Language Features

Modules

Modules are the basic building blocks of a SystemC design hierarchy. A SystemC model usually consists of several modules which communicate via ports.

Ports

Ports allow communication from inside a module to the outside (usually to other modules)

Processes

Processes are the main computation elements. They are concurrent.

Channels

Channels are the communication elements of SystemC. They can be either simple wires or complex communication mechanisms like fifos or bus channels.

Elementary Channels:
* signal
* buffer
* fifo
* mutex
* semaphore

Interfaces

Ports use interfaces to communicate with channels.

Events

Allow synchronization between processes.

Data types

SystemC introduces several data types which support the modeling of hardware.

Extended standard types:
* sc_int<> 64-bit signed integer
* sc_uint<> 64-bit unsigned integer
* sc_bigint<> arbitrary precision signed integer
* sc_biguint<> arbitrary precision unsigned integer

Logic types:
* sc_bit 2-valued single bit
* sc_logic 4-valued single bit
* sc_bv<> vector of sc_bit
* sc_lv<> vector of sc_logic

Fixed point types:
* sc_fixed<> templated signed fixed point
* sc_ufixed<> templated unsigned fixed point
* sc_fix untemplated signed fixed point
* sc_ufix untemplated unsigned fixed point

Example

Example code of an adder:


#include "systemc.h"

SC_MODULE(adder) // module (class) declaration{ sc_in a, b; // ports sc_out sum;

void do_add() // process { sum = a + b; }

SC_CTOR(adder) // constructor { SC_METHOD(do_add); // register do_add to kernel sensitive << a << b; // sensitivity list of do_add ;

References

# [http://www.systemc.org SystemC.org] SystemC World/News Room
# T. Grötker, S. Liao, G. Martin, S. Swan, System Design with SystemC. Springer, 2002. ISBN 1402070721
# [http://sclive.blogsite.org/ A SystemC based Linux Live CD with C++/SystemC tutorial]
# J. Bhasker, A SystemC Primer, Second Edition, Star Galaxy Publishing, 2004. ISBN 0965039129
# D. C. Black, J. Donovan, SystemC: From the Ground Up, Springer 2005. ISBN 0387292403
# Frank Ghenassia (Editor), Transaction-Level Modeling with Systemc: Tlm Concepts and Applications for Embedded Systems, Springer 2006. ISBN 0387262326

External links

* [http://www.systemc.org/web/sitedocs/library_2_1.html Open SystemC 2.1]
* [http://sourceforge.net/projects/systemc/ Open SystemC 1.0]
* [http://www-ti.informatik.uni-tuebingen.de/~systemc/ ESCUG] - European SystemC Users Group
* [http://www.nascug.org NASCUG] - North American SystemC User's Group
* [http://www.lascug.org LASCUG] - Latin American SystemC User's Group
* [http://www.archc.org ArchC] - A SystemC-Based Architecture Description Language
* [http://systemc-ams.eas.iis.fraunhofer.de/ Fraunhofer IIS/EAS SystemC-AMS Homepage]
* [http://www.deit.univpm.it/systemc-wms SystemC-WMS Homepage]
* [http://sclive.blogsite.org/ SCLive a SystemC based Linux Live CD with C++/SystemC tutorial]
* [http://www.asic-world.com/systemc/ Online SystemC Tutorial]
* [http://www.veripool.com/ Veripool - SystemC Perl utilities and Verilog to SystemC compiler]
* [http://www.dettus.net/systemc.html SystemC 2.0.1 on OpenBSD- A patch to run SystemC on OpenBSD]
* [http://standards.ieee.org/getieee/1666/ IEEE 1666 Standard SystemC Language Reference Manual]
* [http://panoramis.free.fr/search.systemc.org/ Search engine for SystemC technical documents and code generator for SystemC data structures]
* an alternate free simulator : [https://www-asim.lip6.fr/trac/systemcass/wiki Cycle Accurate SystemC Simulator]


Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Look at other dictionaries:

  • SystemC — ist eine Modellierungs und Simulationssprache insbesondere für die Entwicklung von komplexen elektronischen Systemen, die sowohl Hardware als auch Softwarekomponenten enthalten. Im Gegensatz zu reinen Hardwarebeschreibungssprachen (wie VHDL und… …   Deutsch Wikipedia

  • SystemC — Тип библиотека (программирование) Разработчик Open SystemC Initiative Написана на С++ Операционная система Кроссплатформенный Последняя версия 2.3 Сайт …   Википедия

  • SystemC — es frecuentemente descrito como un lenguaje de descripción de hardware como son VHDL y Verilog, pero es más adecuado describirlo como un lenguaje de descripción de sistemas, puesto que es realmente útil cuando se usa para modelar sistemas a nivel …   Wikipedia Español

  • SystemC — es frecuentemente descrito como un lenguaje de descripción de hardware como son VHDL y Verilog, pero es más adecuado describirlo como un lenguaje de descripción de sistemas, puesto que es realmente útil cuando se usa para modelar sistemas a nivel …   Enciclopedia Universal

  • SystemC — Introduction SystemC est souvent présenté comme un langage de description de matériel, au même titre que VHDL ou verilog. En fait, SystemC est un langage de description de plus haut niveau, puisqu il permet une modélisation de systèmes au niveau… …   Wikipédia en Français

  • Hardware description language — In electronics, a hardware description language or HDL is any language from a class of computer languages and/or programming languages for formal description of electronic circuits. It can describe the circuit s operation, its design and… …   Wikipedia

  • Transaction-level modeling — (TLM) is a high level approach to modeling digital systems where details of communication among modules are separated from the details of the implementation of functional units or of the communication architecture. Communication mechanisms such… …   Wikipedia

  • NCSim — Incisive Developer(s) Cadence Design Systems Operating system Cross platform Type Simulator License proprietary …   Wikipedia

  • Juzzle — est une plateforme de développement open source de mise au point et d exploitation de simulateurs, utilisée depuis de nombreuses années dans les domaines de la simulation scientifique par la communauté industrielle française. Cet environnement se …   Wikipédia en Français

  • Verilog — Класс языка: Язык описания аппаратуры Появился в: 1983 1984 Автор(ы): Phil Moorby, Prabhu Goel Расширение файлов: .v Verilog, Verilog HDL (англ. Verilog Hardwar …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”