Automated concurrency re-assignment in high level system models for efficient system-level simulation
Efficient modeling of concurrency and reactivity along with their efficient implementation in the simulation kernel are crucial to the overall utility of system level models using the C++ based modeling frameworks. However, the concurrency alignment in most modeling frameworks are naturally along hardware units which is supported by the various language constructs and the system designers express concurrency in their system models by providing threads for some modules/units of the model. Our experimental analysis show that this concurrency model leads to inefficient simulation performance and a concurrency alignment along dataflow gives much better simulation performance but changes the conceptual model of hardware structures. As a result, we propose an algorithmic transformation of designs written in these C++ based environments with concurrency alignment along units/modules. This transformation, provided as a compiler front-end, will re-assign the concurrency along the dataflow, as opposed to threading along concurrent hardware/software modules, keeping the functionality of the model unchanged. Such a front-end transformation strategy will relieve hardware system designers from concerns about software engineering issues such as, threading architecture, and simulation performance, while allowing them to design in the most natural manner, whereas, the simulation performance can be enhanced upto almost two times as shown in our experiments.