Things To Do
The Tcl command-line commands first duplicate the original command-line interface, with a few exceptions due to syntactical incompatibility. The commands that are the same between both versions are the following. Differences from the original in usage or return value are noted.The commands that have changed to avoid conflicts with existing, common Tcl commands are as follows (the original command name is in parentheses). Note that if the original command "@" is used to source a command file, then the original "set" and "flush" commands are handled by text substitution. In other words, the command "@" should be used to execute files written in the original IRSIM command syntax, whereas the (Tcl) command "source" should be used to execute command files written in the new IRSIM command syntax.
- assert node
- Short form. Without an assertion, returns the value of node node. This can be used directly in conjunction with magic to query the simulation value of nodes without adding them to the watch or display lists. To return the value of a layout node, select paint and do (verbatim):
assert [getnode]Another set of commands has been renamed to more "normal" full-word command names. However, the IRSIM startup script defines the original command names for backward compatibility.
- histflush (flush)
- setvector (set)
- A few entirely new commands have been added to IRSIM with the Tcl/Tk based version:
- restorestate (<)
- restoreall (<<)
- savestate (>)
- querygate (!)
- querysource (?)
- source (@)
- Revision 28 introduces a new command "settle" to implement a delay time for resolving the value of nodes driven by more than one input at different logic levels. This avoids the common problem where a back-to-back inverter holding a logic value is driven by an incoming (different) logic value. In a fully-analog simulation, the strong positive feedback of the back-to-back inverters would cause the node value to change slowly, preventing any glitches until the transient condition disappears (e.g., due to a transmission gate between the inverters closing). IRSIM's switch-level model is too simple to understand the behavior of the back-to-back inverters, so it sees a glitch and propagates an "unknown" ("X") value into the circuit. A value for "settle" that is longer than a typical gate delay but shorter than a clock phase suffices to prevent unknown values from taking over a circuit simulation.
- start [-s] param_file sim_file
- Because IRSIM is a Tcl package, it has an initialization function, which runs automatically upon loading, and a separate function which starts the simulator. This allows IRSIM to be loaded and ready to go before having a ".sim" file ready for input. The start command takes the same syntax as the standalone UNIX command prompt irsim command.
- This function returns a list of all the nodes in the (flattened) circuit. IRSIM version 9.7 Revision 4 and newer make use of this to enable a "signal manager" window displaying all traces and allowing traces to be added to or removed from the analyzer display.
- This function returns a list of all the vectors that have been defined in the simulation.
Revision 28 changes the time step from nanoseconds down to picoseconds, which is a necessary step to properly model the time resolution of fast (GigaHz) logic in 90nm processes and below. Time units in revision 28 were changed to double-long ("long long"), or 8 byte integers, to allow reasonably long simulation times with the reduced time unit.
Revision 32 makes a significant change in the use of IRSIM by adding scheduled events with the (new) "at" and "every" commands. When written with Tcl branch and conditional instructions, it makes IRSIM command code very similar to Verilog code (anyone feel like writing a front-end Verilog parser?).
Also see the code history page for a complete list of additions and corrections to the code.
Currently, there is no way to remove or reload a file being simulated by IRSIM. Fixing this is a high-priority item.
Last updated: August 5, 2016 at 7:18pm