- ...inputs.
- For the purpose of this
example, it is assumed that prior to the simulation, both gates are
generating indeterminate outputs. These indeterminate outputs are
represented in the diagram by the horizontal dashed lines.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...UNIX
- UNIX is a registered trademark of
X/Open Company, Ltd.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...System
- X
Window System is a trademark of X Consortium, Inc.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...XFree86
- XFree86 is a
trademark of The XFree86 Project, Inc.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...Microsystems
- Sun
Microsystems is a trademark of Sun Microsystems, Inc.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...arrays.
- Some purists argue that associative arrays
are not true types in Tcl.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...points,
- Wire points serve primarily as handles which
make manipulation of the end points of wires easier for the end user.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...together.
- Should
the need arise to support tristate circuit elements, these soldering
restrictions may be lifted by making minor modifications to the script.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...script.
- Remember that Tcl is an interpreted
language. Therefore any comments appearing inside loops, for example,
have to be identified and ignored each time the loop is executed.
By eliminating the comments, we eliminate this extra parsing.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...wire.
- Moving a wire connected to a
component is problematic since the implementation would have to
consider the possibility of moving two separate components if
the wire is connected to both components. This situation has yet to be
implemented by the GUI.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...take.
- This action usually
takes the form of the component being required to process a change in an
input signal or to make a change in its internal state.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...levels.
- Due to the inherent
discrete representation of time, simulation at the lowest circuit-level,
which requires a continuous representation of time, is not immediately
realizable by this simulator engine.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...together.
- A component may also be connected to itself,
therefore allowing feedback loops to be simulated.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...process()).
- Actually, the Component
class contains more than these data members and member functions.
However, only the data members and methods which are of particular
interest are usually displayed in a Booch diagram.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...class.
- In our implementation,
parameterized classes are implemented using the C++
template mechanism.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...class.
- Note that even though objects may
not be instantiated from an abstract base class, it is perfectly valid
and indeed necessary in many circumstances, to create pointers to these
base classes. The fact that a derived class pointer can be assigned to
a pointer to its public base class without a cast forms the foundation
upon which polymorphism is based.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...output.
- A trivial modification to the simulator engine could
detect null components during run-time and display a diagnostic error
message when they are encountered during the simulation.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...sum.
- This example may not be
as contrived as one might think. Since Tcl scripts are
interpreted, it is naturally going to execute more slowly than a
compiled binary. As a result, if one is evaluating a convoluted
expression that involves numerous iterations and time consuming control
flow, then sending the raw data down a pipe to an executable for
processing and then reading the result back may actually be faster than
performing the entire evaluation in native Tcl.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...engines.
- Note that if doing continuous simulation
at the transistor level, the GUI will require changes to support the
drawing of transistor symbols on the workarea canvas and the signal
display would have to be adapted to support continuous waveforms.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...ports).
- The input and output netlists are
analogous as the primary inputs and primary outputs of the circuit.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...netlists.
- More accurately, the component
constructors accept references to Connector objects as
parameters, which are then connected to the ports of the components.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...used.
- Although later versions of Tcl/Tk have been
ported to other non-UNIX operating systems, DigiTcl
has not yet been tested on any of them.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.