1IRSIM(1) IRSIM Users's Manual IRSIM(1)
2
3
4
6 irsim - An event-driven logic-level simulator for MOS circuits
7
9 irsim [-s] prm_file sim_file ... [+hist_file] [-cmd_file ...]
10
12 IRSIM is an event-driven logic-level simulator for MOS (both N and P)
13 transistor circuits. Two simulation models are available:
14
15 switch Each transistor is modeled as a voltage-controlled switch. Use‐
16 ful for initializing or determining the functionality of the
17 network.
18
19 linear Each transistor is modeled as a resistor in series with a volt‐
20 age-controlled switch; each node has a capacitance. Node values
21 and transition times are computed from the resulting RC network,
22 using Chorng-Yeoung Chu's model. Chris Terman's original model
23 is not supported any more.
24
25 If the -s switch is specified, 2 or more transistors of the same type
26 connected in series, with no other connections to their common
27 source/drain will be stacked into a compound transistor with multiple
28 gates.
29
30 The prm_file is the electrical parameters file that configure the
31 devices to be simulated. It defines the capacitance of the various
32 layers, transistor resistances, threshold voltages, etc... (see
33 presim(1)).
34 If prm_file does not specify an absolute path then IRSIM will search
35 for the prm_file as follows (in that order):
36
37 1) ./<prm_file> (in the current directory).
38 2) ${CAD_ROOT}/irsim/<prm_file>
39 3) ${CAD_ROOT}/irsim/<prm_file>.prm
40
41 The default search directory (nominally /usr/local/lib) can be overri‐
42 den by setting the environment variable CAD_ROOT to the appropriate
43 directory prior to running IRSIM (i.e. setenv CAD_ROOT /cad/lib).
44
45 IRSIM first processes the files named on the command line, then (assum‐
46 ing the exit command has not been processed) accepts commands from the
47 user, executing each command before reading the next.
48
49 File names NOT beginning with a '-' are assumed to be sim files (see
50 sim(5)), note that this version does not require to run the sim files
51 through presim. These files are read and added to the network data‐
52 base. There is only a single name space for nodes, so references to
53 node "A" in different network files all refer to the same node. While
54 this feature allows one to modularize a large circuit into several net‐
55 work files, care must be taken to ensure that no unwanted node merges
56 happen due to an unfortunate clash in names.
57
58 File names prefaced with a '-' are assumed to be command files: text
59 files which contain command lines to be processed in the normal fash‐
60 ion. These files are processed line by line; when an end-of-file is
61 encountered, processing continues with the next file. After all the
62 command files have been processed, and if an "exit" command has not
63 terminated the simulation run, IRSIM will accept further commands from
64 the user, prompting for each one like so:
65
66 irsim>
67
68 The hist_file is the name of a file created with the dumph command (see
69 below). If it is present, IRSIM will initilize the network to the
70 state saved in that file. This file is different from the ones created
71 with the ">" command since it saves the state of every node for all
72 times, including any pending events.
73
74 This version supports changes to the network through the update com‐
75 mand. Also, the capability to incrementally re-simulate the network up
76 to the current time is provided by the isim command.
77
78
79
81 @ filename take commands from command file
82 ? wnode... print info about node's source/drain connec‐
83 tions
84 ! wnode... print info about node's gate connections
85 < filename restore network state from file
86 > filename write current network state to file
87 << filename same as "<" but restores inputs too
88 | comment... comment line
89 activity from [to] graph circuit activity in time interval
90 ana wnode... display nodes in analyzer window
91 analyzer wnode... display nodes in analyzer window
92 assert wnode [m] val assert that wnode equals value
93 assertWhen nodeT valT node val
94 assert when a condition is met
95 back [time] move back to time
96 c [n] simulate for n clock cycles (default:1)
97 changes from [to] print nodes that changed in time interval
98 clock [node [val]] define value sequence for clock node
99 clear clear analyzer window (remove signals)
100 d [wnode]... print display list or specified node(s)
101 debug [debug_level...]
102 set debug level (default: off)
103 decay [n] set charge decay time (0 => no decay)
104 display [arg]... control what gets displayed when
105 dumph filename... write net history to file
106 hist [on|off] turn history on or off
107 exit [status] return to system
108 flush [time] flush out history up to time (default: now)
109 h wnode... make node logic high (1) input
110 has_coords print YES if transistor coordinates are avail‐
111 able
112 inputs print current list of input nodes
113 ires [n] set incremental resolution to n ns
114 isim [filename] incrementally resimulate changes form filename
115 l wnode... make node logic low (0) input
116 logfile [filename] start/stop log file
117 model [name] set simulation model to name
118 p step clock one simulation step (phase)
119 path wnode... display critical path for last transition of a
120 node
121 powlogfile [filename] start/stop power logfile
122 powtrace -[node]... start/stop power tracing of specified
123 node(s)/vector(s)
124 powstep toggle the display of power estimate for each
125 timestep
126 print comment... print specified text
127 printp print a list of all pending events
128 printx print all undefined (X) nodes
129 q terminate input from current stream
130 R [n] simulate for n cycles (default:longest
131 sequence)
132 readh filename read history from filename
133 report[level] set/reset reporting of decay events
134 s [n] simulate for n ns. (default: stepsize)
135 stepsize [n] set simulation step size to n ns.
136 set vector value assign value to vector
137 setlog[file|off] log net changes to file (off -> no log)
138 setpath set search path for cmd files
139 stats print event statistics
140 sumcap print out the sum of the capacitance of all
141 nodes
142 t [-]wnode... start/stop tracing of specified nodes
143 tcap print list of shorted transistors
144 time [command] print resource utilization summary
145 until wnode [mask] value count
146 delayed assert based on the clock count.
147 u wnode... make node undefined (X) input
148 unitdelay [n] force transitions to take n ns. (0 disables)
149 update filename read net changes from file
150 V [node [value...]] define sequence of inputs for a node
151 vector label node... define bit vector
152 vsupply voltage set supply voltage for calculating power
153 (default 5V)
154 w [-]wnode... add/delete nodes from display list
155 wnet [filename] write network to file
156 x wnode... remove node from input lists
157 Xdisplay [host:n] set/show X display (for analyzer)
158
159
160
161 COMMAND DESCRIPTIONS
162
163 Commands have the following simple syntax:
164
165 cmd arg1 arg2 ... argn <newline>
166
167 where cmd specifies the command to be performed and the argi are argu‐
168 ments to that command. The arguments are separated by spaces (or tabs)
169 and the command is terminated by a <newline>.
170
171 If cmd is not one of the built-in commands documented below, IRSIM
172 appends ".cmd" to the command name and tries to open that file as a
173 command file (see "@" command). Thus the command "foo" has the same
174 effect as "@ foo.cmd".
175
176 Notation:
177
178
179 ... indicates zero or more repetitions
180
181 [ ] enclosed arguments are optional
182
183 node name of node or vector in network
184
185 wnode name of node or vector in network, can include '*' wildcard
186 which matches any sequence of zero or more characters. The pair
187 of characters '{' and '}' denote iteration over the limits
188 enclosed by it, for example: name{1:10} will expand into name1,
189 name2 ... name10. A 3rd optional argument sets the stride, for
190 example: name{1:10:2} will expand into name1, name3, ... name7,
191 name9.
192
193 | comment...
194 Lines beginning with vertical bar are treated as comments and
195 ignored -- useful for comments or temporarily disabling certain
196 commands in a command file.
197
198 Most commands take one or more node names as arguments. Whenever a
199 node name is acceptible in a command line, one can also use the name of
200 a bit vector. In this case, the command will be applied to each node
201 of the vector (the "t" and "d" treat vectors specially, see below).
202
203 vector label node...
204 Define a bit vector named "label" which includes the specified
205 nodes. If you redefine a bit vector, any special attributes of
206 the old vector (e.g., being on the display or trace list) are
207 lost. Wild cards are not accepted in the list of node names
208 since you would have no control over the order in which matching
209 nodes would appear in the vector.
210
211 The simulator performs most commands silently. To find out what's hap‐
212 pened you can use one of the following commands to examine the state of
213 the network and/or the simulator.
214
215 set vector value
216 Assign value to vector. For example, the following sequence of
217 commands:
218
219 vector BUS bit.1 bit.2 bit.3
220 set BUS 01x
221
222 The first command will define BUS to be a vector composed of
223 nodes bit.1, bit.2, and bit.3. The second command will assign
224 the following values:
225
226 bit.1 = 0
227 bit.2 = 1
228 bit.3 = X
229
230 Value can be any sequence of [0,1,h,H,l,L,x,X], and must be of
231 the same length as the bit vector itself.
232
233 d [wnode]...
234 Display. Without arguments displays the values all nodes and
235 bit vectors currently on the display list (see w command). With
236 arguments, only displays the nodes or bit vectors specified.
237 See also the "display" command if you wish to have the display
238 list printed out automatically at the end of certain simulation
239 commands.
240
241 w [-]wnode...
242 Watch/unwatch one or more nodes. Whenever a "d" command is
243 given, each watched node will displayed like so:
244
245 node1=0 node2=X ...
246
247 To remove a node from the watched list, preface its name with a
248 '-'. If wnode is the name of a bit vector, the values of the
249 nodes which make up the vector will be displayed as follows:
250
251 label=010100
252
253 where the first 0 is the value of first node in the list, the
254 first 1 the value of the second node, etc.
255
256 assert wnode [mask] value
257 Assert that the boolean value of the node or vector wnode is
258 value. If the comparison fails, an error message is printed.
259 If mask is given then only those bits corresponding to zero bits
260 in mask take part in the comparison, any character other than 0
261 will skip that bit. The format of the error message is the fol‐
262 lowing:
263
264 (tty, 3): assertion failed on 'name' 10X10 (1010X)
265
266 Where name is the name of the vector, followed by the actual
267 value and the expected value enclosed in parenthesis. If a mask
268 is specified, then bits that were not compared are printed as
269 '-'.
270
271 until wnode [mask] value count
272 Acts just like the assert command except it requires an addi‐
273 tional argument <count> which is the max number of clock cycles
274 to run. Instead of just testing the current state, like assert,
275 until tests for true and if false it runs clock cycles until
276 condition becomes true or count runs out.
277
278 ana wnode...
279 This is a shorthand for the analyzer command (described below).
280
281 analyzer wnode...
282 Add the specified node(s)/vector(s) to the analyzer display list
283 (see irsim-analyzer(3) for a detailed explanation). If the ana‐
284 lyzer window does not exist, it will be created. If no argu‐
285 ments are given and the analyzer window already exists, nothing
286 happens.
287
288 Xdisplay [host:display]
289 You must be able to connect to an X-server to start the ana‐
290 lyzer. If you haven't set up the DISPLAY environment variable
291 properly, the analyzer command may fail. If this is the case you
292 can use the Xdisplay command to set it from within the simula‐
293 tor. With no arguments, the name of the current X-server will
294 be printed.
295
296 clear Removes all nodes and vectors from the analyzer window. This
297 command is most useful in command scripts for switching between
298 different signals being displayed on the analyzer.
299
300 "?" and "!" allow the user to go both backwards and forwards through
301 the network. This is a useful debugging aid.
302
303 ? wnode...
304 Prints a synopsis of the named nodes including their current
305 values and the state of all transistors that affect the value of
306 these nodes. This is the most common way of wandering through
307 the network in search of what went wrong.
308 The output from the command ? out looks like
309
310 out=0 (vl=0.3 vh=0.8) (0.100 pf) is computed from:
311 n-channel phi2=0 out=0 in=0 [1.0e+04, 1.3e+04, 8.7e+03]
312 pulled down by (a=1 b=1) [1.0e+04, 1.3e+04, 8.8e+03]
313 pulled up [4.0e+04, 7.4e+04, 4.0e+04]
314
315 The first line gives the node's name and current value, its low
316 and high logic thresholds, user-specifed low-to-high and high-
317 to-low propagation delays if present, and its capacitance if
318 nonzero. Succeeding lines list the transistor whose sources or
319 drains connect to this node: the transistor type ("pulled down"
320 is an n-channel transistor connected to gnd, "pulled up" is a
321 depletion pullup or p-channel transistor connected to vdd), the
322 values of the gate, source, and drain nodes, and the modeling
323 resistances. Simple chains of transistors with the same implant
324 type are collapsed by the -s option into a single transistor
325 with a "compound" gate; compound gates appear as a parenthesized
326 list of nodes (e.g., the pulldown shown above). The three
327 resistance values -- static, dynamic high, dynamic low -- are
328 given in Kilo-ohms.
329
330 Finally, any pending events for a node are listed after the
331 electrical information.
332
333 ! wnode...
334 For each node in the argument list, print a list of transistors
335 controlled by that node.
336
337 tcap
338 Prints a list of all transistors with their source/drain shorted
339 together or whose source/drain are connected to the power sup‐
340 plies. These transistors will have no effect on the simulation
341 other than their gate capacitance load. Although transistors
342 connected across the power supplies are real design errors, the
343 simulator does not complain about them.
344
345 Any node can be made an input -- the simulator will not change an input
346 node's value until it is released. Usually on specific nodes -- inputs
347 to the circuit -- are manipulated using the commands below, but you can
348 fool with a subcircuit by forcing values on internal nodes just as eas‐
349 ily.
350
351 h wnode...
352 Force each node on the argument list to be a high (1) input.
353 Overrides previous input commands if necessary.
354
355 l wnode...
356 Like "h" except forces nodes to be a low (0) input.
357
358 u wnode...
359 Like "h" except forces nodes to be a undefined (X) input.
360
361 x wnode...
362 Removes nodes from whatever input list they happen to be on.
363 The next simulation step will determine the correct node value
364 from the surrounding circuit. This is the default state of most
365 nodes. Note that this does not force nodes to have an "X" value
366 -- it simply removes them from the input lists.
367
368 inputs prints the high, low, and undefined input lists.
369
370
371
372 It is possible to define a sequence of values for a node, and then
373 cycle the circuit as many times as necessary to input each value and
374 simulate the network. A similar mechanism is used to define the
375 sequence of values each clock node goes through during a single cycle.
376
377 Each value is a list of characters (with no intervening blanks) chosen
378 from the following:
379
380 1, h, H logic high (1)
381 0, l, L logic low (0)
382 u, U undefined (X)
383 x, X remove node from input lists
384
385 Presumably the length of the character list is the same as the size of
386 the node/vector to which it will be assigned. Blanks (spaces and tabs)
387 are used to separate values in a sequence. The sequence is used one
388 value at a time, left to right. If more values are needed than sup‐
389 plied by the sequence, IRSIM just restarts the sequence again.
390
391 V [node [value...]]
392 Define a vector of inputs for a node. After each cycle of an
393 "R" command, the node is set to the next value specified in the
394 sequence.
395
396 With no arguments, clears all input sequences (does not affect
397 clock sequences however). With one argument, "node", clears any
398 input sequences for that node/vector.
399
400 clock [node [value...]]
401 Define a phase of the clock. Each cycle, each node specified by
402 a clock command must run through its respective values. For
403 example,
404
405 clock phi1 1 0 0 0
406 clock phi2 0 0 1 0
407
408 defines a simple 4-phase clock using nodes phi1 and phi2.
409 Alternatively one could have issued the following commands:
410
411 vector clk phi1 phi2
412 clock clk 10 00 01 00
413
414 With no arguments, clears all clock sequences. With one argu‐
415 ment, "node", clears any clock sequences for that node/vector.
416
417 After input values have been established, their effect can be propa‐
418 gated through the network with the following commands. The basic simu‐
419 lated time unit is 0.1ns; all event times are quantized into basic time
420 units. A simulation step continues until stepsize ns. have elapsed,
421 and any events scheduled for that interval are processed. It is possi‐
422 ble to build circuits which oscillate -- if the period of oscillation
423 is zero, the simulation command will not return. If this seems to be
424 the case, you can hit <ctrl-C> to return to the command interpreter.
425 Note that if you do this while input is being taken from a file, the
426 simulator will bring you to the top level interpreter, aborting all
427 pending input from any command files.
428
429 When using the linear model (see the "model" command) transition times
430 are estimated using an RC time constant calculated from the surrounding
431 circuit. When using the switch model, transitions are scheduled with
432 unit delay. These calculations can be overridden for a node by setting
433 its tplh and tphl parameters which will then be used to determine the
434 time for a transition.
435
436 s [n] Simulation step. Propogates new values for the inputs through
437 the network, returns when n (default: stepsize) ns. have passed.
438 If n is specified, it will temporarily override the stepsize
439 value. Unlike previous versions, this value is NOT remembered
440 as the default value for the stepsize parameter. If the display
441 mode is "automatic", the current display list is printed out on
442 the completion of this command (see "display" command).
443
444 c [n] Cycle n times (default: 1) through the clock, as defined by the
445 "clock" command. Each phase of the clock lasts stepsize ns. If
446 the display mode is "automatic", the current display list is
447 printed out on the completion of this command (see "display"
448 command).
449
450 p Step the clock through one phase (or simulation step). For
451 example, if the clock is defined as above
452
453 clock phi1 1 0 0 0
454 clock phi2 0 0 1 0
455
456 then "p" will set phi1 to 1 and phi2 to 0, and then propagate
457 the effects for one simulation step. The next time "p" is
458 issued, phi1 and phi2 will both be set to 0, and the effects
459 propagated, and so on. If the "c" command is issued after "p"
460 has been used, the effect will be to step through the next 4
461 phases from where the "p" command left off.
462
463 R [n] Run the simulator through n cycles (see the "c" command). If n
464 is not present make the run as long as the longest sequence. If
465 display mode is automatic (see "display" command) the display is
466 printed at the end of each cycle. Each "R" command starts over
467 at the beginning of the sequence defined for each node.
468
469 back time
470 Move back to the specified time. This command restores circuit
471 state as of time, effectively undoing any changes in between.
472 Note that you can not move past any previously flushed out his‐
473 tory (see flush command below) as the history mechanism is used
474 to restore the network state. This command can be useful to
475 undo a mistake in the input vectors or to re-simulate the cir‐
476 cuit with a different debug level.
477
478 path wnode...
479 display critical path(s) for last transition of the specified
480 node(s). The critical path transistions are reported using the
481 following format:
482
483 node -> value @ time (delta)
484
485 where node is the name of the node, value is the value to which
486 the node transitioned, time is the time at which the transistion
487 occurred, and delta is the delay through the node since the last
488 transition. For example:
489
490 critical path for last transition of Hit_v1:
491 phi1-> 1 @ 2900.0ns , node was an input
492 PC_driver-> 0 @ 2900.4ns (0.4ns)
493 PC_b_q1-> 1 @ 2904.0ns (3.6ns)
494 tagDone_b_v1-> 0 @ 2912.8ns (8.8ns)
495 tagDone1_v1-> 1 @ 2915.3ns (2.5ns)
496 tagDone1_b_v1-> 0 @ 2916.0ns (0.7ns)
497 tagDone_v1-> 1 @ 2918.4ns (2.4ns)
498 tagCmp_b_v1-> 0 @ 2922.1ns (3.7ns)
499 tagCmp_v1-> 1 @ 2923.0ns (0.9ns)
500 Vbit_b_v1-> 0 @ 2923.2ns (0.2ns)
501 Hit_v1-> 1 @ 2923.5ns (0.3ns)
502
503 activity from_time [to_time]
504 print histogram showing amount of circuit activity in the speci‐
505 fied time inteval. Actually only shows number of nodes which
506 had their most recent transition in the interval.
507
508 changes from_time [to_time]
509 print list of nodes which last changed value in the specified
510 time interval.
511
512 printp print list of all pending events sorted in time. The node asso‐
513 ciated with each event and the scheduled time is printed.
514
515 printx print a list of all nodes with undefined (X) values.
516
517 Using the trace command, it is possible to get more detail about what's
518 happening to a particular node. Much of what is said below is
519 described in much more detail in "Logic-level Simulation for VLSI Cir‐
520 cuits" by Chris Terman, available from Kluwer Academic Press. When a
521 node is traced, the simulator reports each change in the node's value:
522
523 [event #100] node out.1: 0 -> 1 @ 407.6ns
524
525 The event index is incremented for each event that is processed. The
526 transition is reported as
527
528 old value -> new value @ report time
529
530 Note that since the time the event is processed may differ from the
531 event's report time, the report time for successive events may not be
532 strictly increasing.
533
534 Depending on the debug level (see the "debug" command) each calculation
535 of a traced node's value is reported:
536
537 [event #99] node clk: 0 -> 1 @ 400.2ns
538 final_value( Load ) V=[0.00, 0.04] => 0
539 ..compute_tau( Load )
540 {Rmin=2.2K Rdom=2.2K Rmax=2.2K} {Ca=0.06 Cd=0.17}
541 tauA=0.1 tauD=0.4 ns
542 [event #99: clk->1] transition for Load: 1 -> 0 (tau=0.5ns,
543 delay=0.6ns)
544
545 In this example, a calculation for node Load is reported. The calcula‐
546 tion was caused by event 99 in which node clk went to 1. When using
547 the linear model (as in this example) the report shows
548
549 current value -> final value
550
551 The second line displays information regarding the final value (or dc)
552 analysis for node "Load"; the minimun and maximum voltages as well as
553 the final logical value (0 in this case).
554
555 The next three lines display timing analysis information used to esti‐
556 mate the delays. The meaning of the variables displayed can be found
557 Chu's thesis: "Improved Models for Switch-Level Simulation".
558
559 When the final value is reported as "D", the node is not connected to
560 an input and may be scheduled to decay from its current value to X at
561 some later time (see the "decay" command).
562
563 "tau" is the calculated transition time constant, "delta" is when any
564 consequences of the event will be computed; the difference in the two
565 times is how IRSIM accounts for the shape of the transition waveform on
566 subsequent stages (see reference given above for more details). The
567 middle lines of the report indicate the Thevenin and capacitance param‐
568 eters of the surrounding networks, i.e., the parameters on which the
569 transition calculations are based.
570
571 debug [ev dc tau taup tw spk][off][all]
572 Set debugging level. Useful for debugging simulator and/or cir‐
573 cuit at various levels of the computation. The meaning of the
574 various debug levels is as follows:
575
576 ev display event enqueueing and dequeueing.
577
578 dc display dc calculation information.
579
580 tau display time constant (timing) calculation.
581
582 taup display second time constant (timing) calculation.
583
584 tw display network parameters for each stage of the tree
585 walk, this applies to dc, tau, and taup. This level of
586 debugging detail is usually needed only when debugging
587 the simulator.
588
589 spk displays spike analysis information.
590
591 all This is a shorthand for specifying all of the above.
592
593 off This turns off all debugging information.
594
595 If a debug switch is on then during a simulation step, each time
596 a watched node is encounted in some event, that fact is indi‐
597 cated to the user along with some event info. If a node keeps
598 appearing in this prinout, chances are that its value is oscil‐
599 lating. Vice versa, if your circuit never settles (ie., it
600 oscillates) , you can use the "debug" and "t" commands to find
601 the node(s) that are causing the problem.
602
603 Without any arguments, the debug command prints the current
604 debug level.
605
606 t [-]wnode...
607 set trace flag for node. Enables the various printouts
608 described above. Prefacing the node name with '-' clear its
609 trace flag. If "wnode" is the name of a vector, whenever any
610 node of that vector changes value, the current time and the val‐
611 ues of all traced vectors is printed. This feature is useful
612 for watching the relative arrival times of values at nodes in an
613 output vector.
614
615 System interface commands:
616
617 > filename
618 Write current state of each node into specified file. Useful
619 for making a breakpoint in your simulation run. Only stores
620 values so isn't really useful to "dump" a run for later use,
621 i.e., the current input lists, pending events, etc. are NOT
622 saved in the state file.
623
624 < filename
625 Read from specified file, reinitializing the value of each node
626 as directed. Note that network must already exist and be iden‐
627 tical to the network used to create the dump file with the ">"
628 command. These state saving commands are really provided so
629 that complicated initializing sequences need only be simulated
630 once.
631
632 << filename
633 Same as "<" command, except that this command will restore the
634 input status of the nodes as well. It does not, however,
635 restore pending events.
636
637 dumph [filename]
638 Write the history of the simulation to the specified file, that
639 is; all transistions since time = 0. The resulting file is a
640 machine-independent binary file, and contains all the required
641 information to continue simulation at the time the dump takes
642 place. If the filename isn't specified, it will be constructed
643 by taking the name of the sim_file (from the command line) and
644 appending ".hist" to it.
645
646 readh filename
647 Read the specified history-dump file into the current network.
648 This command will restore the state of the circuit to that of
649 the dump file, overwriting the current state.
650
651 flush [time]
652 If memory consumption due to history maintanance becomes prohib‐
653 itive, this command can be used to free the memory consumed by
654 the history up to the time specified. With no arguments, all
655 history up to the current point in the simulation is freed.
656 Flushing out the history may invalidate an incremental simula‐
657 tion and the portions flushed will no longer appear in the ana‐
658 lyzer window.
659
660 setpath [path...]
661 Set the search-path for command files. Path should be a
662 sequence of directories to be searched for ".cmd" files, "."
663 meaning the current directory. For eaxmple:
664
665 setpath . /usr/me/rsim/cmds /cad/lib/cmds
666
667 With no arguments, it will print the current search-path. Ini‐
668 tially this is just ".".
669
670 print text...
671 Simply prints the text on the user's console. Useful for keep‐
672 ing user posted of progress through a long command file.
673
674 logfile [filename]
675 Create a logfile with the specified name, closing current log
676 file if any; if no argument, just close current logfile. All
677 output which appears on user's console will also be placed in
678 the logfile. Output to the logfile is cleverly formatted so
679 that logfiles themselves can serve as command files.
680
681 setlog [filename | off]
682 Record all net changes, as well as resulting error messages, to
683 the specified file (see "update" command). Net changes are
684 always appended to the log-file, preceding each sequence of
685 changes by the current date. If the argument is off then net-
686 changes will not be logged. With no arguments, the name of the
687 current log-file is printed.
688
689 The default is to always record net changes; if no filename is
690 specified (using the "setlog" command) the default filename
691 irsim_changes.log will be used. The log-files are formatted so
692 that log-files may themselves be used as net-change files.
693
694 wnet [filename]
695 Write the current network to the specified file. If the file‐
696 name isn't specified, it will be constructed by taking the name
697 of the sim_file (from the command line) and appending ".inet" to
698 it. The resulting file can be used in a future simulation run,
699 as if it were a sim file. The file produced is a machine inde‐
700 pendent binary file, which is typically about 1/3 the size of
701 the sim file and about 8 times faster to load.
702
703 time [command]
704 With no argument, a summary of time used by the simulator is
705 printed. If arguments are given the specified command is timed
706 and a time summary is printed when the command completes. The
707 format of the time summary is Uu Ss E P% M, where:
708
709 U => User time in seconds
710 S => System time in seconds
711 E => Elapsed time, minutes:seconds
712 P => Percentage of CPU time (((U + S)/E) * 100)
713 M => Median text, data, and stack size use
714
715 q
716 Terminate current input stream. If this is typed at top level,
717 the simulator will exit back to the system; otherwise, input
718 reverts to the previous input stream.
719
720 exit [n]
721 Exit to system, n is the reported status (default: 0).
722
723 Simulator parameters are set with the following commands. With no
724 arguments, each of the commands simply prints the current value of the
725 parameter.
726
727 decay [n]
728 Set decay parameter to n ns. (default: 0). If non-zero, it
729 tells the number of ns. it takes for charge on a node to decay
730 to X. A value of 0 implies no decay at all. You cannot specify
731 this parameters separately for each node, but this turns out not
732 to be a problem. See "report" command.
733
734 display [-][cmdfile][automatic]
735 set/reset the display modes, which are
736
737 cmdfile commands executed from command files are displayed
738 to user before executing. The default is cmdfile =
739 OFF.
740
741 automatic print out current display list (see "d" command)
742 after completion of "s" or "c" command. The default
743 is automatic = ON.
744
745 Prefacing the previous commands with a "-" turns off that dis‐
746 play option.
747
748 model [name]
749 Set simulation model to one of the following:
750
751 switch Model transistors as voltage controlled switches. This
752 model uses interval logic levels, without accounting for
753 transistor resistances, so circuits with fighting tran‐
754 sistors may not be accuratelly modelled. Delays may not
755 reflect the true speed of the circuit as well.
756
757 linear Model transistors as a resistor in series with a voltage
758 controlled switch. This model uses a single-time-con‐
759 stant computed from the resulting RC network and uses a
760 two-time-constant model to analyze charge sharing and
761 spikes.
762
763 The default is the linear model. You can change the simulation
764 model at any time -- even with events pending -- as only new
765 calculations are affected. Without arguments, this command
766 prints the current model name.
767
768 report [level]
769 When level is nonzero, report all nodes which are set to X
770 because of charge decay, regardless on whether they are being
771 traced. Setting level to zero disables reporting, but not the
772 decay itself (see "decay" command).
773
774 stepsize [n]
775 Specify duration of simulation step or clock phase. n is speci‐
776 fied in ns. (nanoseconds). Floating point numbers with up to 1
777 digit past the decimal point are allowed. Further decimals are
778 trucated (i.e. 10.299 == 10.2).
779
780 unitdelay [n]
781 When nonzero, force all transitions to take n ns. Setting the
782 parameter to zero disables this feature. The resolution is the
783 same as for the "stepsize" command.
784
785 stats Print event statitistics, as follows:
786
787 changes = 26077
788 punts (cns) = 208 (34)
789 punts = 0.79%, cons_punted = 16.35%
790 nevents = 28012; evaluations = 27972
791
792 Where changes is the total number of transistions recorded,
793 punts is the number of punted events, (cns) is the number of
794 consecutive punted events (a punted event that punted another
795 event). The penultimate line shows the percentage of punted
796 events with respect to the total number of events, and the per‐
797 centage of consecutive punted events with respect to the number
798 of punted events. The last line shows the total number of
799 events (nevents) and the number of net evaluations.
800
801 Incremental simulation commands:
802
803 Irsim supports incremental changes to the network and resimulation of
804 the resulting network. This is done incrementally so that only the
805 nodes affected by the changes, either directly or indirectly, are re-
806 evaluated.
807
808
809 update filename
810 Read net-change tokens from the specified file. The following
811 net-change commands are available:
812
813 add type gate source drain length width [area]
814 delete type gate source drain length width [area]
815 move type gate source drain length width [area] g s d
816 cap node value
817 N node metal-area poly-area diff-area diff-perim
818 M node M2A M2P MA MP PA PP DA DP PDA PDP
819 thresh node low high
820 Delay node tplh tphl
821
822 For a detailed dscription of this file see netchange(5). Note
823 that this is an experimental interface and is likely to change
824 in the future.
825
826 Note that this command doesn't resimulate the circuit so that it
827 may leave the network in an inconsistent state. Usually this
828 command will be followed by an isim command (see below), if that
829 is not the case then it's up to the user to initilize the state
830 of the circuit. This command exists only for historical reasons
831 and will probably disappear in the future. It's use is discour‐
832 aged.
833
834 isim [filename]
835 Read net-change tokens from the specified file (see
836 netchange(5)) and incrementally resimulate the circuit up to the
837 current simulation time (not supported yet).
838
839 ires n The incremental algorithm keeps track of nodes deviating from
840 their past behavior as recorded in the network history. During
841 resimulation, a node is considered to deviate from its history
842 if it's new state is found to be different within n ns of its
843 previous state. This command allows for changing the incremen‐
844 tal resolution. With no arguments, it will print the current
845 resolution. The default resolution is 0 ns.
846
847 powlogfile [filename]
848 Opens filename for writting nodal transition reports. The format
849 of the report is the same you get when you trace a node normaly.
850 With no arguments powlogfile just closes the opened logfile and
851 prints out a power dissipation summary. Nodal transitions in
852 inputs are not included in the transition count.
853
854 powtrace [[-]node...]
855 The syntax of this command is the same as the normal t (trace)
856 command. If you want to trace and report power dissipation for
857 all the nodes just use powtrace *. Use powtrace -node if you
858 want to exclude some nodes.
859
860 powstep
861 Toggles whether dynamic power estimation is displayed after each
862 timestep. The ynamic power displayed will only be for the nodes
863 that have been selected using the powtrace command.
864
865 vsupply voltage
866 Sets the V variable for use in the P=CV^2/(2t) expression where
867 C is capacitance switched, and t is the timestep. The default
868 value for vsupply is 5.0 Volts.
869
870 sumcap Gives a sum of all nodal capcitances, not just those selected
871 with the powtrace command.
872
873
874
875
876
878 presim(1) (now obsolete)
879 rsim(1)
880 irsim-analyzer(3)
881 sim(5)
882 netchange(5)
883
884
885
8863rd Berkeley Distribution IRSIM(1)