4. CCI architecture overview

The core of the SystemC Configuration standard is the pairing of parameters and brokers, where a parameter is a named instance of a specific compile-time type and a broker aggregates parameters and provides access to them in the form of handles. Brokers and parameters are both generally accessed via handles which, among other things, identify the source (“originator”) of new parameter value assignments. Originator identification is commonly contextual and managed implicitly.

Each parameter is registered during construction with a single broker. Parameters are typically constructed and owned by a SystemC module, with other users subsequently obtaining a handle from the broker. The owner constructs a parameter with a default value, however the broker can override this with a preset value, allowing tools to provide runtime configurations.

Typically a global broker will exist, created early in the elaboration phase. Modules may supply their own local brokers, for example to keep their parameters private. In such a case, a hierarchy of brokers mirrors the hierarchy of sc_modules.

Figure 1 shows a typical sequence of a parameter being constructed and used:

  1. A tool obtains a broker handle (cci_broker_handle, not explicitly shown) and specifies a preset value for the named parameter (cci_param); this should be completed prior to construction of the owning module.
  2. The module owning the parameter instantiates it with a default value.
  3. The parameter registers with the broker (cci_broker_if) and acquires the preset value, supplanting the default.
  4. A user gets a handle for the parameter (cci_param_handle) and through it gets the current (i.e. preset) value.
Key interactions for parameter construction and access

Figure 1Key interactions for parameter construction and access

It is useful to consider several perspectives when overviewing the more complete set of SystemC Configuration standard features: