Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Language specification  



1.1  Compared to HDLs  





1.2  Versions  







2 Language features  



2.1  Modules  





2.2  Ports  





2.3  Signals  





2.4  Exports  





2.5  Processes  





2.6  Channels  





2.7  Interfaces  





2.8  Events  





2.9  Data types  







3 History  





4 Example code  





5 Power and energy estimation in SystemC  





6 See also  





7 Notes  





8 References  





9 External links  














SystemC






Català
Deutsch
Español
Français
Italiano

Polski
Română
Русский
Suomi
Українська

 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


SystemC is a set of C++ classes and macros which provide an event-driven simulation interface (see also discrete event simulation). These facilities enable a designer to simulate concurrent processes, each described using plain C++ syntax. SystemC processes can 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. In certain respects, SystemC deliberately mimics the hardware description languages VHDL and Verilog, but is more aptly described as a system-level modeling language.

SystemC is applied to system-level modeling, architectural exploration, performance modeling, software development, functional verification, and high-level synthesis. SystemC is often associated with electronic system-level (ESL) design, and with transaction-level modeling (TLM).

Language specification[edit]

SystemC is defined and promoted by the Open SystemC Initiative (OSCI — now Accellera), and has been approved by the IEEE Standards Association as IEEE 1666-2011[1] - the SystemC Language Reference Manual (LRM). The LRM provides the definitive statement of the semantics of SystemC. OSCI also provide an open-source proof-of-concept simulator (sometimes incorrectly referred to as the reference simulator), which can be downloaded from the OSCI website.[2] Although it was the intent of OSCI that commercial vendors and academia could create original software compliant to IEEE 1666, in practice most SystemC implementations have been at least partly based on the OSCI proof-of-concept simulator.

Compared to HDLs[edit]

SystemC has semantic similarities to VHDL and Verilog, but may be said to have a syntactical overhead compared to these when used as a hardware description language. On the other hand, it offers a greater range of expression, similar to object-oriented design partitioning and template classes. Although strictly a C++ class library, SystemC is sometimes viewed as being a language in its own right. Source code can be compiled with the SystemC library (which includes a simulation kernel) to give an executable. The performance of the OSCI open-source implementation is typically worse than commercial VHDL/Verilog simulators when used for register transfer level simulation.[citation needed]

Versions[edit]

SystemC version 1 included common hardware-description language features such as structural hierarchy and connectivity, clock-cycle accuracy, delta cycles, four-valued logic (0, 1, X, Z), and bus-resolution functions.

SystemC version 2 onward focused on communication abstraction, transaction-level modeling, and virtual-platform modeling. It also added abstract ports, dynamic processes, and timed event notifications.

Language features[edit]

Modules[edit]

SystemC has a notion of a container class called a module. This is a hierarchical entity that can have other modules or processes contained in it.

Modules are the basic building blocks of a SystemC design hierarchy. A SystemC model usually consists of several modules which communicate via ports. The modules can be thought of as a building block of SystemC.

Ports[edit]

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

Signals[edit]

SystemC supports resolved and unresolved signals. Resolved signals can have more than one driver (a bus) while unresolved signals can have only one driver.

Exports[edit]

Modules have ports through which they connect to other modules. SystemC supports single-direction and bidirectional ports.

Exports incorporate channels and allow communication from inside a module to the outside (usually to other modules).

Processes[edit]

Processes are used to describe functionality. Processes are contained inside modules. SystemC provides three different process abstractions[which?] to be used by hardware and software designers. Processes are the main computation elements. They are concurrent.

Channels[edit]

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

Elementary channels:

Interfaces[edit]

Ports use interfaces to communicate with channels.

Events[edit]

Events allow synchronization between processes and must be defined during initialization.

Data types[edit]

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

Extended standard types:

Logic types:

Fixed point types:

History[edit]

SystemC traces its origins to work on Scenic programming language described in a DAC 1997 paper.[4]

ARM Ltd., CoWare, Synopsys and CynApps teamed up to develop SystemC (CynApps later became Forte Design Systems) to launch it first draft version in 1999.[5][6] The chief competitor at the time was SpecC another C based open source package developed by UC Irvine personnel and some Japanese companies.

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.

Example code[edit]

Example code of an adder:

#include "systemc.h"

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

  void do_add()           // process
  {
    sum.write(a.read() + b.read()); //or just sum = a + b
  }

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

Power and energy estimation in SystemC[edit]

The power and energy estimation can be accomplished in SystemC by means of simulations. Powersim[7] is a SystemC class library aimed to the calculation of power and energy consumption of hardware described at system level. To this end, C++ operators are monitored and different energy models can be used for each SystemC data type. Simulations with Powersim do not require any change in the application source code.

See also[edit]

Notes[edit]

  1. ^ "Browse Standards". standards.ieee.org.
  • ^ www.systemc.org, the Open SystemC Initiative website Archived 2008-10-06 at the Wayback Machine
  • ^ (November 10, 2011) IEEE Approves Revised IEEE 1666™ “SystemC Language” Standard for Electronic System-Level Design, Adding Support for Transaction-level Modeling
  • ^ Liao, Stan; Tjiang, Steve; Gupta, Rajesh (1997). "ScenicDAC1997". pp. 70–75. CiteSeerX 10.1.1.56.6483.
  • ^ Synopsys and Co-Ware Inc., which did much of the work behind the SystemC -- http://www.electronicsweekly.com/Articles/1999/12/07/13906/stm-synopsys-in-3-year-rampd-deal.htm
  • ^ "ARM is pleased that Synopsys, CoWare and other companies have come together on SystemC, because if it is taken up by the industry, it simplifies our world," said Tudor Brown, chief technology officer of ARM Ltd" in Babel of languages competing for role in SoC - http://www.eetimes.com/ip99/ip99story1.html
  • ^ Powersim download | SourceForge.net
  • References[edit]

    External links[edit]


    Retrieved from "https://en.wikipedia.org/w/index.php?title=SystemC&oldid=1217084249"

    Categories: 
    Hardware description languages
    Hardware verification languages
    System description languages
    C++ programming language family
    Hidden categories: 
    Webarchive template wayback links
    Use American English from March 2019
    All Wikipedia articles written in American English
    Articles with short description
    Short description matches Wikidata
    Use mdy dates from March 2019
    All articles with unsourced statements
    Articles with unsourced statements from December 2021
    All articles with specifically marked weasel-worded phrases
    Articles with specifically marked weasel-worded phrases from May 2019
     



    This page was last edited on 3 April 2024, at 19:05 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki