System-C Fundamentals
Instructor: EDA Academy
Resource—All LevelEnglish
Build practical System-C foundations for hardware and software design through modules, ports, data types, processes, constructors, clocked threads, templates, and file structure. Create executable wrappers around C++ logic and model clock-driven behavior with clearer simulation and debugging discipline.
5.0
1students
This offering includes
- 1 module
- 5 lectures
- Access on mobile and computer
- 1.76 hours on-demand video
Description
System-C provides a C++-based foundation for modeling digital systems that include hardware behavior, software behavior, or both. It extends ordinary C++ with hardware-oriented concepts such as modules, ports, signals, processes, clocked execution, reset handling, and bit-accurate data representation. These features make it possible to wrap C++ logic in a System-C structure, execute it in a simulation environment, and describe behavior with the timing and concurrency expected in digital design.
The technical foundation centers on System-C modules and interfaces. A module defines the boundary of a hardware block, while input and output ports define how data and control signals move across that boundary. Clock and reset input ports establish timing and initialization behavior. Data ports carry typed values into and out of the module. Port access through read() and write() keeps data movement explicit and separates interface behavior from internal computation.
System-C data types are essential for hardware-accurate modeling. Bit-accurate integer types such as sc_int and sc_uint define signedness and exact width. Fixed-point types such as sc_fixed and sc_ufixed support integer and fractional representation with quantization and overflow control. Hardware-oriented operators, including bit selection, part selection, concatenation, and type conversion, support direct manipulation of digital values at the bit level.
Process modeling defines how System-C modules actually behave during simulation. SC_METHOD supports efficient event-driven behavior for combinational logic and simple sequential logic. SC_THREAD provides flexible suspension, waiting, and resumption for abstract modeling and testbench-style behavior. SC_CTHREAD models clocked hardware with a clock-driven thread structure, reset support, and multi-cycle execution. These process types clarify the difference between ordinary C++ function calls and concurrent hardware-style execution managed by the System-C kernel.
Constructor macros and file structure complete the practical modeling flow. SC_CTOR registers module processes and handles standard construction, while SC_HAS_PROCESS supports custom constructors when process registration is needed. Templated SC_MODULEs make hardware blocks more reusable by accepting parameters such as data type and array length. A clean header/design-file split separates declarations from process definitions. The FIR filter example integrates these ideas through clock, reset, input, output, tap shifting, coefficient multiplication, accumulation, and clock-cycle-based output generation.
Catalogue:
System-C Overview
Why System-C
Fixed-Point Data Types
System-C Data Types
sc_int/sc_uint Operators
Model System-C Hardware Constructs
Step 1: Declaring a Module
Step2: Declaring Clock and Reset Input Ports
Step3: Declaring Data Input Ports
Step4: Declaring Data Output Ports (I)
Step4: Declaring Data Output Ports (II)
Step4: Declaring Data Output Ports (III)
Step5: Performing Read/Write Through I/O Ports
Step6: Declaring System-C Constructors
SC_CTOR and SC_HAS_PROCESS
System-C Processes (I)
System-C Processes (II)
System-C Processes: SC_METHOD
System-C Processes: SC_THREAD
System-C Processes: SC_CTHREAD
Templated SC_MODULEs
System-C File Structure
Example: System-C Clocked Threads (I)
Example: System-C Clocked Threads (II)
Example: System-C Clocked Threads (III)
Example: System-C Clocked Threads (IV)
You might also like
More offerings will load here.
Secure checkout via our payment partner.
