LRM Standards Version Map
Understanding the chronological evolution of IEEE 1666, SystemC AMS, CCI, and UVM-SystemC standards.
How to Read This Lesson
This lesson is an LRM bridge. We translate standard language into the questions you actually ask while debugging and reviewing models.
LRM Standards Version Map
The SystemC ecosystem is defined by several inter-locking standards managed by Accellera and IEEE. Understanding the version history is critical for ensuring compliance and compiler compatibility. Furthermore, examining the Accellera GitHub repositories reveals how these versions are enforced at compile time.
Standard and source context
1. SystemC Core (IEEE 1666)
- IEEE 1666-2005: The first formal IEEE standardization of SystemC. Introduced core discrete-event simulation, SC_METHOD, SC_THREAD, events, and standard data types.
- IEEE 1666-2011: The landmark update that officially merged TLM 2.0 into the core language standard. Introduced process control (
sc_process_handle),sc_spawn, and async resets. - IEEE 1666-2023 (Current): The modern standard. Under the Hood: The official Accellera
systemcGitHub repository updated itsCMakeLists.txtto strictly mandateCMAKE_CXX_STANDARD 14(compatible up to C++17/C++20). This update replaced many internal macro-hacks with native C++11/14 features (likestd::unique_ptrin internal object managers andoverridespecifiers), introduced stages of elaboration callbacks (before_end_of_elaboration, etc.), and formalized memory management semantics.
2. SystemC AMS (Analog/Mixed-Signal)
- AMS 1.0 (2010): Introduced Timed Data Flow (TDF), Linear Signal Flow (LSF), and Electrical Linear Networks (ELN).
- AMS 2.0 (2016 - Current): Defined dynamic TDF rates, improved continuous-time solver synchronization with the IEEE 1666 discrete kernel, and added standard AMS tracing capabilities.
3. SystemC CCI (Configuration, Control, and Inspection)
- CCI 1.0 (2018): Standardized the
cci_paramand broker APIs for configuring Virtual Platforms without proprietary string parsing. Under the Hood: Theccirepo integrates cleanly withsc_object, leveraging the 1666 hierarchical string mapping to provide JSON-likecci_valueconfiguration trees.
4. UVM-SystemC
- UVM-SystemC public-review drafts: UVM-SystemC brings the UVM methodology into SystemC/C++. Accellera published a
1.0-beta6public-review release signal in July 2024. The local February 2023 draft LRM is useful for clause reading, while the officialuvm-systemcrepository is the implementation trail to inspect for release-specific behavior. Under the Hood: the implementation uses SystemC process facilities and C++ type mechanisms to support phases, factory behavior, and reusable verification components.
Basic Compliant Starter
A compliant model today explicitly leverages the sc_core namespace and standard macros.
Under the Hood: sc_core::sc_version() returns a statically compiled string generated during the library's CMake build process (usually combining SC_VERSION, SC_VERSION_RELEASE_DATE, and SC_VERSION_PRERELEASE macros from sysc/kernel/sc_ver.h), ensuring you can programmatically verify the kernel version.
#include <systemc>
// A fully IEEE 1666-2023 compliant stub
SC_MODULE(CompliantModel) {
SC_CTOR(CompliantModel) {
SC_REPORT_INFO("Version", sc_core::sc_version());
}
};
int sc_main(int argc, char* argv[]) {
CompliantModel model("model");
sc_core::sc_start();
return 0;
}Can you answer these clearly?
Keep moving when you can answer each question without looking back at the lesson.
Comments and Corrections