2012 ACM/IEEE/SCS 26th Workshop on Principles of Advanced and Distributed Simulation (2010)
May 17, 2010 to May 19, 2010
George Riley , Dept. of Electr.&Comput. Eng., Georgia Inst. of Technol., Atlanta, GA, USA
Brian Hayes , Dept. of Electr.&Comput. Eng., Georgia Inst. of Technol., Atlanta, GA, USA
Elizabeth Lynch , Dept. of Electr.&Comput. Eng., Georgia Inst. of Technol., Atlanta, GA, USA
Digital hardware designs are nearly always tested and validated prior to deployment using functional-level simulation. Each component of the design, such as a four-bit adder or an eight-to-one multiplexer, is described and modeled as a set of inputs and a set of outputs that change based on changes in the input. Using traditional discrete event simulation, each change in the input set for a component would result in future events being scheduled for each input connected to the component's output. These future events would represent the changed inputs and speed-of-light delays between an output and the corresponding input. Further, some components might respond to clock-tick events that allow for synchronous actions, such as the latching of a bit in a single flip-flop, which results in a changed output only during a specific clock event. We discuss a different approach to functional-level modeling that we call the Pull-Model. In this approach, components do not schedule events to notify other components of input data changes. Rather, each component queries other components asking for the current output value, and does so only when the value is actually needed to model the data flow at that time. We show that this approach significantly reduces the number of events, even when modeling a very simple CPU architecture with only a few components.
CPU architecture, functional-level hardware simulation, pull-model data flow, digital hardware designs, four-bit adder, eight-to-one multiplexer, discrete event simulation, single flip-flop
George Riley, Brian Hayes, Elizabeth Lynch, "Functional-Level Hardware Simulation with Pull-Model Data Flow", 2012 ACM/IEEE/SCS 26th Workshop on Principles of Advanced and Distributed Simulation, vol. 00, no. , pp. 1-8, 2010, doi:10.1109/PADS.2010.5471656