// Free Resource

SystemC — Complete Article Series

19 in-depth articles covering everything from installation to scheduler internals. Free, no sign-in required.

Built for engineers. Open to agents.

19 articles ~4 hrs total reading Beginner to advanced
Share: LinkedIn X / Twitter
// Warm-up New to C/C++? Read the C/C++ warm-up series first →
01 Getting Started 2 articles
1
What Is System-Level Modeling? — And Why SystemC Is Built for It System-level modeling explained from scratch — abstraction levels, virtual prototypes, and where SystemC fits in the picture.
2
Installing SystemC on Windows, Linux & macOS Build SystemC 2.3.3 from source — CMake flags, library path setup, and your first simulation running.
02 Language Fundamentals 4 articles
2
SC_MODULE in SystemC The macro expansion, SC_CTOR vs SC_HAS_PROCESS, ports, processes, and module hierarchy.
3
SystemC Data Types sc_int, sc_uint, sc_bv, sc_logic, sc_lv, sc_bigint, sc_fixed — bit ops, range/slice syntax, when to use each.
4
sc_main Deep Dive Elaboration, sc_start(), sc_stop(), VCD tracing, sc_report_handler, and common sc_main mistakes.
5
sc_clock in SystemC Period, duty cycle, posedge/negedge events, multiple clocks, and clock gating patterns.
03 Processes & Timing 5 articles
6
SC_THREAD vs SC_METHOD SC_THREAD suspends with wait(); SC_METHOD runs to completion. Stack, sensitivity, and when calling wait() is a fatal error.
7
Events and Sensitivity in SystemC sc_event, notify(), wait(), static vs dynamic sensitivity — and the lost notification problem when notify() fires before wait().
8
sc_signal and the Evaluate-Update Mechanism Why reading a signal in the same delta you wrote it returns the old value — and the single-writer rule.
9
Delta Cycles in SystemC The evaluate-update loop, SC_ZERO_TIME vs immediate notify(), and what triggers the delta cycle limit exceeded error.
10
Simulation Phases in SystemC before_end_of_elaboration → end_of_elaboration → start_of_simulation → execute → end_of_simulation. Every phase explained.
04 Channels & Communication 4 articles
11
Evolution of Channels in SystemC From sc_signal to TLM 2.0 — primitive vs hierarchical channels and when to use sc_signal vs sc_fifo vs custom channel.
12
sc_fifo in SystemC Blocking write()/read(), non-blocking nb_write()/nb_read(), depth, events, and a complete producer-consumer example.
13
sc_mutex and sc_semaphore Coordinating SC_THREAD access to shared resources — lock/unlock, wait/post, deadlock pitfalls, and comparison table.
14
sc_prim_channel — Building Custom Channels request_update() and update() — how to build a correct, deadlock-free custom channel from scratch.
05 Ports & Interfaces 4 articles
15
sc_interface in SystemC The abstract base class behind every SystemC channel — the Interface Method Call (IMC) pattern and custom interfaces.
16
sc_port and sc_export sc_port requires a service; sc_export provides one. Hierarchical binding and how one channel serves multiple interface views.
17
Port Binding in SystemC Direct binding in sc_main, hierarchical port forwarding, the four binding rules, and common binding errors.
18
SystemC IMC Pattern Wire sc_interface, sc_prim_channel, and sc_port into a complete Master/Memory system — the pattern TLM 2.0 is built on.
06 Internals 1 article
19
SystemC Scheduler Internals The runnable queue, cooperative multitasking, process states, initialization phase, and why execution order is never guaranteed.

// Go deeper

Ready to build real SystemC designs?

The SystemC Studio takes you from these articles into hands-on projects — step by step, with exercises and a capstone timer model.

Open SystemC Studio →