• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

analyzer/H24-Feb-2020-7,9505,985

base/H03-May-2022-17,90113,280

doc/H24-Feb-2020-3,7303,133

faultsim/H24-Feb-2020-2,5001,972

irsim/H24-Feb-2020-748496

lib/H24-Feb-2020-4,2183,757

other/H24-Feb-2020-1,173929

random/H24-Feb-2020-512355

scripts/H03-May-2022-13,56711,203

tclsubckt/H24-Feb-2020-535313

tcltk/H24-Feb-2020-9,0996,862

usersubckt/H24-Feb-2020-881625

.gitignoreH A D24-Feb-202079 1110

COPYRIGHTH A D24-Feb-202015.2 KiB294243

MakefileH A D24-Feb-20202.9 KiB11686

READMEH A D24-Feb-20208.9 KiB244179

VERSIONH A D30-Sep-20208 21

configureH A D24-Feb-2020241 81

rules.makH A D24-Feb-2020979 4230

README

1This is release 9.7 of irsim.
2
3----------------------------------------------------------------------------
4Compilation and installation
5----------------------------------------------------------------------------
6
7The make script has been changed to work similarly to the magic-7.3 GNU
8autoconf make.  To make the default IRSIM version, which includes Tcl/Tk
9(if available) and OpenGL (if available), do:
10
11	./configure
12	make
13	make install
14
15----------------------------------------------------------------------------
16Running IRSIM under Magic
17----------------------------------------------------------------------------
18
19Standard magic version:
20   See the magic tutorial #11 (document "tut11.ps" in the magic source
21   distribution).
22
23Tcl-based magic version and Tcl-based IRSIM (irsim-9.6):
24
25   Run the Tcl version of magic in the usual manner.  As an example,
26   consider "tut11a" used in tutorial #11 for demonstrating IRSIM.
27
28	magic -w -d OGL tut11a
29
30   Start IRSIM with:
31
32	irsim
33
34   This is a Tcl procedure which can guess at default values.  Magic
35   starts up with a definition for the procedure which looks for the
36   "irsim.tcl" script in the CAD_ROOT install directory.  Assuming that
37   magic and irsim are installed in the same CAD_ROOT root (e.g.,
38   /usr/local/lib or /home/cad/lib), this file will be sourced, and IRSIM
39   will be ready to run.  If not, it will be necessary to run "source
40   <pathname>/irsim.tcl" by hand, substituting the actual install path
41   for IRSIM.
42
43   If a layout is loaded into magic, it is assumed to be the circuit to
44   be simulated.  If .ext and/or .sim files don't exist for the circuit,
45   they will be created.
46
47   The full syntax is:
48
49	irsim [parameter_file [sim_file]]
50
51   where "parameter_file" is an irsim ".prm" file from the IRSIM library
52   install directory, and "sim_file" is a .sim file, presumably generated
53   in magic by "exttosim".
54
55   At this point, if all goes well and no errors occurred, all IRSIM
56   commands will be available under magic.  Additional commands are added
57   when running irsim under magic.  These are:
58
59	watchnode [node_name [style_name]]
60		Display a node's simulation value on the layout.  If
61		no name is given, find the node under the box and
62		display its value.  The style name is one of magic's
63		display styles from the ".dstyle5" file.  The default
64		is "white".
65
66	unwatchnode node_name
67		Erases the node value from the layout.
68
69	movenode node_name
70		Node values normally appear positioned at the point
71		found by the magic "goto" command.  If this is a
72		poor choice, the node can be moved to a position
73		centered on the magic cursor box using this command.
74
75	watchtime
76		Causes the simulation time to be drawn on the layout,
77		centered on the magic cursor box's current position.
78
79	unwatchtime
80		Erases the simulation time from the layout.
81
82	movetime
83		Moves the position of the simulation time text to be
84		centered on the current position of the magic cursor
85		box.
86
87   For example, with layout file tut11a.mag, after invoking "startirsim", do:
88
89	watchnode bit_0
90	watchnode bit_1
91	watchnode bit_2
92	watchnode bit_3
93	watchnode RESET_B black
94	watchnode hold red3
95
96	vector clk phi1 phi2
97	vector clkb phi1_b phi2_b
98	clock clk 10 00 01 00
99	clock clkb 01 11 10 11
100	vector bits bit_3 bit_2 bit_1 bit_0
101	w clk hold RESET_B bits
102
103	c
104	l hold
105	l RESET_B
106	c
107	h RESET_B
108	c
109	c
110	c
111
112   The values are drawn on the magic layout in time with the simulation.
113   Note that "source tut11a.cmd" is a valid command.  The .cmd file
114   that comes with the tutorial should be okay as-is.  However, note
115   that several commands in IRSIM are not legal Tcl syntax, and have
116   been changed.  Any of these commands in a file must be changed to
117   match before the file can be sourced.  Also, some commands in
118   IRSIM are already defined as Tcl commands.  These are:  time, set,
119   and clear.  To get the expected behavior in IRSIM, they must
120   include the namespace:  irsim::time, irsim::set, irsim::clear.
121   "exit" is a trivial overloaded command.  "clock" is also
122   overloaded, but because the IRSIM and Tcl syntax for "clock"
123   are mutually exclusive, the command is handled by IRSIM and
124   checked for which version of the command is intended.
125
126   Note that it is possible to display vectors on the magic layout.
127   Position the box to an empty area of the layout and type:
128
129	watchnode bits
130
131   Similarly, you can postion the box to another empty area and do:
132
133	watchtime
134
135   to get the simulation time display printed on the magic layout.
136   You do not need to know the name of a node in order to see its
137   value.  For instance, select a random piece of the layout and
138   type "watchnode".  The node value will be displayed at the position
139   of the selection.
140
141   To simply query a node value (without selecting it for display), use
142   the 2-argument form of "assert", combining IRSIM and Magic commands.
143   Select a bit of layout paint, and do:
144
145	assert [getnode]
146
147   -----------------------------------------------------------------------
148
149   Under irsim, the "display" command has an additional option, "tclproc".
150
151	display tclproc proc_name
152	display -tclproc
153
154   when proc_name is specified, the IRSIM "d" command will invoke the
155   specified Tcl procedure instead of printing values to the screen.
156   The procedure will also be called whenever node and vector values
157   in the watch list ("w" command) are updated.  This method allows
158   signal names, values, and times to be captured and used by other
159   programs.  "watchnode" makes use of this method to write simulated
160   node values back into the magic window.
161
162   The syntax of the Tcl procedure is:
163
164	proc proc_name { name value time } {}
165
166   This procedure is called internally from IRSIM.  "name" will be
167   given the name of the node or vector being watched.  "value" will
168   be given the value of the node or vector.  "time" will be given
169   the current simulation time in nanoseconds.  Note that this
170   procedure is always called at least twice, with the last call
171   being name="curtime", value="t", such that procedures may defer
172   printing the time value until all watched node values have been
173   displayed.  Only the last call to the procedure will return its
174   value to the interpreter.
175
176----------------------------------------------------------------------------
177Release Notes
178----------------------------------------------------------------------------
179
180The calibrate directory contains information on creating your own prm files.
181
182Release 9.5+ includes the software to perform incremental simulations, which
183can also be used to create an incremental-fault-simulator.  To make the
184fault simulator, you will have to do it by hand: First use the make_irsim
185script to build irsim, then (before cleaning anything in irsim) go into the
186src/fsim directory and run make.  This will create the program called "ifsim",
187which you can use to run statistical simulations of stuck-at faults.
188The directory src/fsim/doc contains both latex and PostScript versions of the
189documentation needed to use ifsim.
190
191Release 9.5 also includes the following extra code:
192
193 1) Power estimation code through toggle counts (written by Don Ramsey)
194    The code is not completely debugged yet (?) but there is demand for
195    it from a lot of people.  It can be turned on/off selectively
196    through the "make config" script.  See the file man/powerEst.doc
197    for details on how to use this.
198
199 2) Code that enables the user to write their own subcircuit models
200    for "analogish stuff". (written by R. Gonzales and S.  Sidiropoulos).
201    Again it is enabled in "make config".  An example pll is in
202    src/irsim/UserSubckt
203
204 3) Some extra commands (assertWhen and until) which may help debugging
205    of asynchronous designs
206
207 4) Fixes for Linux displays (M. Godfrey)
208
209Release 9.6 includes the following new features:
210
211 5) Tcl-based IRSIM (T. Edwards)
212
213 6) Threaded X11 graphics (no anXhelper!) (T. Edwards)
214
215 7) Makefile configuration support for Mac OS-X, Solaris, and Cygwin.
216
217 8) Pseudorandom number generator for the Tcl version (T. Edwards)
218
219Release 9.7 includes the following new features:
220
221 9) GNU autoconf-base "make" process equivalent to that of magic-7.3
222
22310) Tk-based Analyzer window, including a full set of command-line commands
224    for manipulating the analyzer.
225
22611) Verilog testbench-like commands "at", "every", "when", and "whenever"
227
22812) Command "settle" to handle problematic tight loops (e.g., back-to-back
229    inverters in flip-flops) by waiting a certain period before setting a
230    node undefined.
231
23213) Command "relax" to handle problematic large loops (e.g., flip-flop/
233    multiplexer loops) by forcing initial conditions.
234
23514) Ability to handle multiple circuits by placing each in its own namespace.
236
23715) Ability to define and set nodes that are not part of an input circuit.
238
23916) Simplified vector definitions and setting, including handling of decimal
240    and hexidecimal notation, and specifying numerical ranges in a vector
241    name (such as "vector D D0:8")
242
24317) Tcl procedure-based user-defined subcircuits.
244