Many of the existing simulators adopt very similar approaches towards the classification of circuit elements, as will be discussed in a subsequent section. Where many of the simulator designs start to deviate, however, is in the area of component interconnectivity and simulation. Many of the implementations still enforce the need for a separation between the representation of the circuit and its ensuing simulation.
For example, DOSE  provides the anticipated classes for components, input ports and output ports upon which a discrete event-driven simulator may be based. It also supports the notion of composite components for the purposes of hierarchical modelling. However, the class library also introduces an independent simulator object which is composed of three other objects; namely, a component manager, connection manager and event scheduler. The interaction between these three objects essentially provides the necessary support for event-driven simulation. One major drawback to this technique is that the pervasive nature of these three objects tends to make the components less autonomous and more dependent upon global entities to provide them with inputs and to propagate their outputs. This dependence can seriously compromise the ability to distribute the simulation and can make hierarchical modelling unwieldy.
A second approach  is somewhat similar to above, yet provides better support for distributed simulation. A system overview of its architecture is presented in Figure 4.2. As can be seen from the figure, the architecture creates a clear separation between the simulation support subsystem and a model representing the entity being simulated. This simulator implements a sophisticated hierarchical event handling mechanism. If an entity receives an event it is unable to handle, the event is propagated to its parent. However, the concept of a ``global simulation control manager'' is still required for the purpose of phase change notifications. In addition, the system supports the concept of a model entity class which contains event lists. These models may be nested, thereby giving rise to the concept of multiple event lists. The literature is careful to point out though, that ``[if] event lists are distributed, the models are responsible for synchronizing them.'' Consequently, the implementation still perpetuates the concept of global time and emphasizes the necessity for synchronization when the simulation is distributed over several machines.
Figure 4.2: System Overview of a Hierarchical Simulator
Subsequent sections will discuss the design and implementation of a simulator engine which is largely asynchronous in nature. Concepts such as global time and global event queues will be abandoned in favour of local time and distributed event queues.