Overview
SystemC-Components (SCC) is a lightweight productivity library for SystemC and TLM 2.0 based modeling tasks using C++11. It offers extended logging and log configuration implementation, a config file reader and configuration handler, automatic tracer, TLM2.0 compliant sockets for tracing transactions, a stripped-down version of Accellera's SystemC Verification (SCV) library, extended and optimized transaction recording databases, as well as various TLM2.0 AT and pin-level adapters for common bus protocols.
Features
- Extended logging and log configuration implementation: SCC extends the SystemC report implementation and allows for iostream-based logging and instance-based log level configuration.
- Config file reader and configuration handler: SCC provides a configurer that can read a JSON file and apply the values to cci_param and sc_attributes, enabling instance-based logging and trace configuration.
- Automatic tracer: SCC's tracer automatically discovers signals and sc_variables and registers them with the trace file. It can be controlled on a per-instance basis when used with the configurer.
- Tracing TLM2 Sockets: SCC offers TLM2.0 compliant sockets that can be configured to trace transactions passing through them using the SCV transaction recording facilities.
- Stripped down version of SCV: To reduce dependency, SCC comes with a stripped-down version of Accellera's SCV library, primarily focused on enabling transaction recording. Traces can be visualized using SCViewer.
- Extended and optimized transaction recording database(s): SCC supports multiple file format writers, including scv_tr_sqlite, a SQLite-based database back-end for SCV transaction recording, and scv_tr_compressed, a text-based database back-end with compression to reduce file size.
- sysc::sc_variable: SCC includes a plain C/C++ variable wrapper, sysc::sc_variable, that allows accessing a storage location via the SystemC object tree and registering value change observers.
- sysc::sc_register: SCC provides a resource wrapper, sysc::sc_register, for accessing a storage location via a TLM 2.0 socket. It allows registering read and write callbacks to implement register functionality.
- sysc::tlm_target: SCC includes a component, sysc::tlm_target, that distributes TLM2.0 accesses to target resources, such as sysc::sc_register.
- sysc::router: SCC offers a simple component, sysc::router, that routes TLM2.0 accesses of a set of masters to a set of targets based on generic payload addresses.
- Various TLM2.0 AT and pin-level adapters: SCC provides various TLM2.0 AT and pin-level adapters for common bus protocols like APB, AHB, AXI/ACE, and OBI.