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.