ACM '65 Proceedings of the 1965 20th national conference
Computer System Simulation: An Introduction
ACM Computing Surveys (CSUR)
Event manipulation for discrete simulations requiring large numbers of events
Communications of the ACM
MIXS: A mixed level simulator for large digital system logic verification
DAC '80 Proceedings of the 17th Design Automation Conference
Non-integral event timing for digital logic simulation
DAC '76 Proceedings of the 13th Design Automation Conference
Hi-index | 0.02 |
A major problem in the area of discrete time-step simulation is the precise, rapid, and fully automatic scheduling and simulation of hundreds or thousands of serial and parallel events. A partial solution to this problem has been found in the “next event” simulation technique 1 which, based upon inter-related concepts of list processing and dynamic storage allocation, has replaced “fixed time step” methods 1 of the past. However, this solution is not satisfactory for large systems because the next event technique, particularly useful for handling a moderate number of serial events, decreases rapidly in scheduling efficiency for large numbers of events and in simulation efficiency for parallel events. This paper extends and generalizes work reported previously and describes a technique originally developed for digital simulation 2 of digital systems which is applicable to general-purpose simulation. The technique was specifically developed for simulating large numbers of parallel events. It is based on “time mapping,&rdquo i.e., a simple, time-to-address mapping method, and falls in the category of fixed time step simulation. On a second level, the advantages of next-event simulation are exploited by using this technique in auxiliary roles. The result of combining these techniques leads to an optimization of simulation speed, which becomes significant when the average event queue exceeds 20 events. Also, the simulation of any number of parallel events is possible without the usual amount of additional complexity and bookkeeping.