Despite the advantages of simulation presented above, simulators, like most tools, do have their drawbacks. Many of these problems can be attributed to the computationally intensive processing required by some simulators. As a consequence, the results of the simulation may not be readily available after the simulation has started -- an event that may occur instantaneously in the real world may actually take hours to mimic in a simulated environment. The delays may be due to an exceedingly large number of entities being simulated or due to the complex interactions that occur between the entities within the system being simulated. Consequently, these simulators are restricted by limited hardware platforms which cannot meet the computational demands of the simulator. However, as more powerful platforms and improved simulation techniques become available, this problem is becoming less of a concern.
One of the ways of combating the aforementioned complexity is to introduce simplifying assumptions or heuristics into the simulator engine. While this technique can dramatically reduce the simulation time, it may also give its users a false sense of security regarding the accuracy of the simulation results. For example, consider a circuit simulator which makes the simplifying assumption that a current passing through one wire does not adversely affect current flowing in an adjacent wire. Such an assumption may indeed reduce the time required for the circuit simulator to generate results. However, if the user places two wires of a circuit too close together during the design, the circuit, when fabricated may fail to operate correctly due to electromagnetic interference between the two wires. Even though the simulation may have shown no anomalies in a design, the circuit may still have flaws.
Another means of dealing with the computational complexity is to employ the hierarchical approach to design and simulation so as to permit the designer to operate at a higher level of design. However, this technique may introduce its own problems as well. By operating at too high an abstraction level, the designer may tend to oversimplify or even omit some of the lower level details of the system. If the level of abstraction is too high, then it may be impossible to actually build the device physically due to the lack of sufficiently detailed information within the design. Actual construction of the system will not be able to occur until the user provides low level information concerning the system's subcomponents. With respect to circuit design and fabrication, work is currently on going in the field of silicon compilers  which are able to convert high level designs of circuits and translate them accurately and efficiently into low level designs suitable for fabrication.