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 Ports allow communication from inside a module to the outside (usually to other modules) via channels. Signals 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 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 Processes are used to describe functionality. Processes are contained inside modules. SystemC provides three different process abstractions to be used by hardware and software designers. 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: the equivalent of a wire buffer fifo mutex semaphore Interfaces Ports use interfaces to communicate with channels. Events Events allow synchronization between processes and must be defined during initialization. Data types SystemC introduces several data types which support the modeling of hardware. Extended standard types: n-bit signed integer n-bit unsigned integer n-bit signed integer for n > 64 n-bit unsigned integer for n > 64 Logic types: 2-valued single bit 4-valued single bit vector of length n of sc_bit vector of length n of sc_logic Fixed point types: templated signed fixed point templated unsigned fixed point untemplated signed fixed point untemplated unsigned fixed point 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.0 library released 2009-07-27 TLM-2.0 LRM released, accompanied by TLM-2.0.1 library 2010-03-08 SystemC AMS extensions 1.0 LRM released 2011-11-10 IEEE approves the IEEE 1666–2011 standard for SystemC 2016-04-06 IEEE approves the IEEE 1666.1–2016 standard for SystemC AMS SystemC traces its origins to work on Scenic programming language described in a DAC 1997 paper. ARM