Once the simulator engine has finished executing and has transmitted the output signals back to the GUI, the simulate.tcl module of the GUI takes control again. The sim_process_outputs procedure of this module is invoked to parse all the signal times and values it received from the simulator engine. For each output netlist, sim_process_outputs calls the sig_draw_signal procedure of the sigdisp.tcl module to display the corresponding output waveform in the signal display window. Upon completion, the file identifier for the command pipeline is closed and the GUI will once again respond to input from the end user.
In the example from the previous section, the waveform corresponding to the protocol in Figure 5.12 is shown in Figure 5.13. After examining the waveform, the user may change the input signals or the circuit itself and then re-simulate the circuit until the desired output waveform is achieved.
Figure 5.13: Output Signal Waveform Displayed Graphically
In summary, the GUI may be thought of as the structural subsystem of the entire architecture, in that it provides the means by which components are interconnected and structurally defined by the user. The simulator engine itself may be thought of as the functional or behavioural subsystem, since it is responsible for mirroring the circuit description provided by the user and injecting each of the components with behavioural and functional semantics necessary to give life to the circuit.