Ralph Görgen and Philipp A. Hartmann and Wolfgang Nebel
Proceedings of DVCon Europe 2015
SystemC-based models are often instantiated automatically, at least parts of it. They mainly consist of configurable components taken form some catalogue or library and a description of their configuration and connections. The instantiation of the actual SystemC objects is done automatically according to the description. In addition, automatic instantiation of SystemC components occurs inside configurable components, for instance in components with a configurable number of I/O ports, bus connections, or arbitrary signal dimensions.
This contribution describes how modern C++ features introduced in C++11 and C++14 can facilitate the implementation of such automatisms in combination with sc_vector. We show how anonymous functions (lambda functions), type inference (auto), and constant expressions (constexpr) can be used in the context of SystemC to make the designers life easier. We illustrate the practical application with code examples of a configurable platform consisting of an arbitrary hierarchy of computational elements and communication links. In addition, the possibility for supporting initializer lists and push_back in sc_vector is discussed.
The paper is organized as follows: First, we will to introduce sc_vector and our platform model shortly in Section II and Section III. Then, we explain the creation of vector elements with anonymous functions in Section IV, vector based binding and the benefits of auto in Section V, and the application of relaxed constant expressions in Section VI. Finally, the discussion of initializer lists and push_back in sc_vector is given in Section VII, and Section VIII concludes the paper.
11 / 2015
Accellera Systems Initiative
Developing Hardware and Design Methodologies for Heterogeneous Low Power Field Programmable Servers
Design of embedded mixed-criticality CONTRol systems under consideration of EXtra-functional properties