SystemC Configuration, Control and Inspection Standard
1. Overview
1.1 Scope
This standard defines SystemC® Configuration as an ANSI standard C++ class library used to make SystemC models configurable.The standard does not specify a file format for specifying configuration parameter values.
1.2 Purpose
The general purpose of SystemC Configuration is to provide a standard for developing configurable SystemC models and supporting the development of configuration tools.
The specific purpose of this standard is to provide precise and complete definitions of (1) the SystemC Configuration class library and (2) the interfaces necessary to implement brokers and to integrate existing parameter solutions.
1.3 Word usage
The word shall indicates mandatory requirements strictly to be followed in order to conform to the standard and from which no deviation is permitted (shall equals is required to).1, 2
The word should indicates that among several possibilities one is recommended as particularly suitable, without mentioning or excluding others; or that a certain course of action is preferred but not necessarily required (should equals is recommended that).
The word may is used to indicate a course of action permissible within the limits of the standard (may equals is permitted to).
The word can is used for statements of possibility and capability, whether material, physical, or causal (can equals is able to).
1.3.1 Relationship with C++ (ISO/IEC 14882:2011)
This standard is closely related to the C++ programming language and adheres to the terminology used in ISO/IEC 14882:2011. This standard does not seek to restrict the usage of the C++ programming language; an application using the SystemC Configuration standard may use any of the facilities provided by C++, which in turn may use any of the facilities provided by C. However, where the facilities provided by this standard are used, they shall be used in accordance with the rules and constraints set out in this standard.
This standard presumes that C++11 is the minimum revision supported and makes use of features of that revision such as move semantics. Implementations may choose to support earlier revisions such as C++03 by hiding or approximating such features, however they are not required to do so.
This standard defines the public interface to the SystemC Configuration class library and the constraints on how those classes may be used. The class library may be implemented in any manner whatsoever, provided only that the obligations imposed by this standard are honored.
A C++ class library may be extended using the mechanisms provided by the C++ language. Implementers and users are free to extend SystemC Configuration in this way, provided that they do not violate this standard.
NOTE—It is possible to create C++ programs that are legal according to the C++ programming language standard but violate this standard. An implementation is not obliged to detect every violation of this standard.
1.3.2 Relationship with SystemC
This standard is built on the IEEE Std 1666-2011 and extends it using the mechanisms provided by the C++ language, to provide an additional layer of configuration constructs.
1.3.3 Guidance for readers
Readers who are not familiar with SystemC Configuration should start with Clause 4 which provides a brief informal summary intended to aid in the understanding of the normative definitions. Such readers may also find it helpful to scan the examples embedded in the normative definitions and to see the Annex B glossary.
Readers should pay close attention to the terminology defined in 3.1 which is necessary for a precise interpretation of this standard.
Clause 5 defines the public interface to the SystemC Configuration class library. The following information is listed for each class:
- A brief class description.
- A C++ source code listing of the class definition.
- A statement of any constraints on the use of the class and its members.
- A statement of the semantics of the class and its members.
- For certain classes, a description of functions, typedefs, and macros associated with the class.
- Informative examples illustrating typical uses of the class.
Annex A provides a practical introduction to the standard, heavily using example code to illustrate and demonstrate key concepts.
Annex C provides recommended guidelines for effectively using this standard.
Annex D describes how to enable the use of user-defined value types with configuration parameters.