The ability to simulate analog and mixed-signal circuits from the discrete and IC levels through board and system levels can prove valuable in many engineering problems. Examples include top-down design of complex electronic systems, and determining normal, faulted, and tolerance behavior of existing circuits. Unfortunately, traditional analog simulators such as SPICE are targeted primarily at low-level IC design and provide little support for board-level and system-level domains.
The SPICE program's set of built-in device models is limited to discrete components (resistors, diodes, transistors, etc.) and to simple linear and polynomial controlled sources. To allows SPICE to simulate board-level circuits, macro-modeling approaches have been developped in which discrete devices and controlled sources are combined to create more efficient models of ICs such as operational amplifiers. Some simulators now provide higher level primitives such as limiters, multipliers, and user-defined equations to better support the macro-modeling approach, and a few allow users to extend the simulator's set of primitives by coding models in a general-purpose programming language and linking them with the simulator core. This "code modeling" approach has the potential to allow users to describe arbitrarily complex functions and behavior, freeing them from a restricted set of devices or functions, and from development time and execution time inefficiencies inherent in the traditional macro-modeling approach.
Nevertheless, the utility of the code modeling approach has not been widely recognized. We believe this is due largely to the limited provisions for the code modeling in available simulators and to a lack of programming support. Our work has been aimed at making code modeling a viable alternative to traditional macro-modeling technology by providing usable code modeling tools in a modern SPICE-based simulation environment. This code-level modeling support extends SPICE3 to the board-level and system-level domains.