The netlists comprising a circuit are represented by stanzas with the
headers input, output or internal,
each of which represent a different type of netlist. An input
netlist is defined to be a netlist which is connected only to the input
ports of one or more components; an output netlist is defined
to be a labelled netlist which is connected to the output port of a
component (an output netlist may also be connected to one or
more input ports). An
internal netlist is the same as an output netlist,
except that it has not been labelled by the user. Netlists which are not
connected to the ports of any component are not transmitted by the
protocol. The number of attributes each netlist has depends upon the
netlist type and which module (either the GUI or the simulator engine)
is generating the protocol. All three netlist types have an
id attribute whose value is the netlist number as assigned by
the GUI.
The GUI can generate stanzas representing all three netlists as part of
its protocol to the simulator engine. Only the id attributes
of the internal and output netlists are specified.
The input netlists, however, each contain an additional attribute called
values. The value of this attribute consists of a
Tcl-like list of input signal values and the times that the
signals occurred. The list takes the form of {
}
{
} ...{
}, where t represents the
time of the signal and v represents its value -- either
0, 1 or X. In order to minimize the amount
of data being transferred through the pipe, only the changes in the input
signals are actually transmitted by the GUI to the simulator engine.
After constructing the circuit internally and initializing the input netlists according to the stanzas received from the GUI, the simulator engine then simulates the circuit, thereby producing signals on the output netlists. The output netlists are then traversed by the simulator engine. Stanzas representing each output netlist and their corresponding identifiers and signals values are transmitted back to the GUI along the pipe for presentation. The format of the output stanzas produced by the simulator engine is identical to that of the input stanzas produced by the GUI. Again, only changes in output signal values are reported by the simulator engine so as to limit the volume of information sent along the pipe.
Examples of the stanzas comprising both the component and netlist protocols are presented in the next section which provides more implementation details regarding the communication between the GUI and the simulator engine.