Provided by: irsim_9.7.93-1_amd64 bug

NAME

       irsim - An event-driven logic-level simulator for MOS circuits

SYNOPSIS

       irsim [-s] prm_file sim_file ... [+hist_file] [-cmd_file ...]

DESCRIPTION

       IRSIM is an event-driven logic-level simulator for MOS (both N and P) transistor circuits.
       Two simulation models are available:

       switch Each transistor is modeled as a voltage-controlled switch.  Useful for initializing
              or determining the functionality of the network.

       linear Each  transistor  is  modeled  as  a  resistor  in series with a voltage-controlled
              switch; each node has a capacitance.  Node values and transition times are computed
              from  the  resulting  RC  network, using Chorng-Yeoung Chu's model.  Chris Terman's
              original model is not supported any more.

       If the -s switch is specified, 2 or more transistors of the same type connected in series,
       with  no  other  connections  to their common source/drain will be stacked into a compound
       transistor with multiple gates.

       The prm_file is the electrical parameters file that configure the devices to be simulated.
       It  defines  the  capacitance  of  the  various  layers, transistor resistances, threshold
       voltages, etc... (see presim(1)).
       If prm_file does not specify an absolute path then IRSIM will search for the  prm_file  as
       follows (in that order):

            1) ./<prm_file> (in the current directory).
            2) ${CAD_ROOT}/irsim/<prm_file>
            3) ${CAD_ROOT}/irsim/<prm_file>.prm

       The  default  search  directory (nominally /usr/local/lib) can be overriden by setting the
       environment variable CAD_ROOT to the appropriate directory prior to  running  IRSIM  (i.e.
       setenv CAD_ROOT /cad/lib).

       IRSIM first processes the files named on the command line, then (assuming the exit command
       has not been processed) accepts commands from the  user,  executing  each  command  before
       reading the next.

       File  names  NOT  beginning with a '-' are assumed to be sim files (see sim(5)), note that
       this version does not require to run the sim files through presim.  These files  are  read
       and  added  to  the  network  database.   There  is only a single name space for nodes, so
       references to node "A" in different network files all refer to the same node.  While  this
       feature  allows one to modularize a large circuit into several network files, care must be
       taken to ensure that no unwanted node merges happen due to an unfortunate clash in names.

       File names prefaced with a '-' are assumed to be command files: text files  which  contain
       command  lines  to  be processed in the normal fashion.  These files are processed line by
       line; when an end-of-file is encountered, processing continues with the next  file.  After
       all the command files have been processed, and if an "exit" command has not terminated the
       simulation run, IRSIM will accept further commands from the user, prompting for  each  one
       like so:

       irsim>

       The  hist_file is the name of a file created with the dumph command (see below).  If it is
       present, IRSIM will initilize the network to the state saved in that file.  This  file  is
       different  from  the  ones  created with the ">" command since it saves the state of every
       node for all times, including any pending events.

       This version supports changes to the  network  through  the  update  command.   Also,  the
       capability  to incrementally re-simulate the network up to the current time is provided by
       the isim command.

COMMAND SUMMARY

          @ filename            take commands from command file
          ? wnode...            print info about node's source/drain connections
          ! wnode...            print info about node's gate connections
          < filename            restore network state from file
          > filename            write current network state to file
          << filename           same as "<" but restores inputs too
          | comment...          comment line
          activity from [to]    graph circuit activity in time interval
          ana wnode...          display nodes in analyzer window
          analyzer wnode...     display nodes in analyzer window
          assert wnode [m] val  assert that wnode equals value
          assertWhen nodeT valT node val
                                assert when a condition is met
          back [time]           move back to time
          c [n]                 simulate for n clock cycles (default:1)
          changes from [to]     print nodes that changed in time interval
          clock [node [val]]    define value sequence for clock node
          clear                 clear analyzer window (remove signals)
          d [wnode]...          print display list or specified node(s)
          debug [debug_level...]
                                set debug level (default: off)
          decay [n]             set charge decay time (0 => no decay)
          display [arg]...      control what gets displayed when
          dumph filename...     write net history to file
          hist [on|off]         turn history on or off
          exit [status]         return to system
          flush [time]          flush out history up to time (default: now)
          h wnode...            make node logic high (1) input
          has_coords            print YES if transistor coordinates are available
          inputs                print current list of input nodes
          ires [n]              set incremental resolution to n ns
          isim [filename]       incrementally resimulate changes form filename
          l wnode...            make node logic low (0) input
          logfile [filename]    start/stop log file
          model [name]          set simulation model to name
          p                     step clock one simulation step (phase)
          path wnode...         display critical path for last transition of a node
          powlogfile [filename] start/stop power logfile
          powtrace -[node]...   start/stop power tracing  of specified node(s)/vector(s)
          powstep               toggle the display of power estimate for each timestep
          print comment...      print specified text
          printp                print a list of all pending events
          printx                print all undefined (X) nodes
          q                     terminate input from current stream
          R [n]                 simulate for n cycles (default:longest sequence)
          readh filename        read history from filename
          report[level]         set/reset reporting of decay events
          s [n]                 simulate for n ns. (default: stepsize)
          stepsize [n]          set simulation step size to n ns.
          set vector value      assign value to vector
          setlog[file|off]      log net changes to file (off -> no log)
          setpath [path...]     set search path for cmd files
          stats                 print event statistics
          sumcap                print out the sum of the capacitance of all nodes
          t [-]wnode...         start/stop tracing of specified nodes
          tcap                  print list of shorted transistors
          time [command]        print resource utilization summary
          until wnode [mask] value count
                                delayed assert based on the clock count.
          u wnode...            make node undefined (X) input
          unitdelay [n]         force transitions to take n ns. (0 disables)
          update filename       read net changes from file
          V [node [value...]]   define sequence of inputs for a node
          vector label node...  define bit vector
          vsupply voltage       set supply voltage for calculating power (default 5V)
          w [-]wnode...         add/delete nodes from display list
          wnet [filename]       write network to file
          x wnode...            remove node from input lists
          Xdisplay [host:n]     set/show X display (for analyzer)

       COMMAND DESCRIPTIONS

       Commands have the following simple syntax:

       cmd arg1 arg2 ... argn <newline>

       where cmd specifies the command to be  performed  and  the  argi  are  arguments  to  that
       command.  The arguments are separated by spaces (or tabs) and the command is terminated by
       a <newline>.

       If cmd is not one of the built-in commands documented below, IRSIM appends ".cmd"  to  the
       command  name  and  tries to open that file as a command file (see "@" command).  Thus the
       command "foo" has the same effect as "@ foo.cmd".

       Notation:

       ...    indicates zero or more repetitions

       [ ]    enclosed arguments are optional

       node   name of node or vector in network

       wnode  name of node or vector in network, can  include  '*'  wildcard  which  matches  any
              sequence  of  zero  or  more characters.  The pair of characters '{' and '}' denote
              iteration over the limits enclosed by it, for example: name{1:10} will expand  into
              name1,  name2  ...  name10.   A 3rd optional argument sets the stride, for example:
              name{1:10:2} will expand into name1, name3, ... name7, name9.

       | comment...
              Lines beginning with vertical bar are treated as comments and ignored -- useful for
              comments or temporarily disabling certain commands in a command file.

       Most  commands  take  one  or  more  node  names  as  arguments.   Whenever a node name is
       acceptible in a command line, one can also use the name of a bit vector.   In  this  case,
       the  command  will  be  applied  to each node of the vector (the "t" and "d" treat vectors
       specially, see below).

       vector label node...
              Define a bit vector named "label" which  includes  the  specified  nodes.   If  you
              redefine a bit vector, any special attributes of the old vector (e.g., being on the
              display or trace list) are lost.  Wild cards are not accepted in the list  of  node
              names  since you would have no control over the order in which matching nodes would
              appear in the vector.

       The simulator performs most commands silently.  To find out what's happened  you  can  use
       one of the following commands to examine the state of the network and/or the simulator.

       set vector value
              Assign value to vector.  For example, the following sequence of commands:

                   vector BUS bit.1 bit.2 bit.3
                   set BUS 01x

              The  first  command  will define BUS to be a vector composed of nodes bit.1, bit.2,
              and bit.3.  The second command will assign the following values:

                 bit.1 = 0
                 bit.2 = 1
                 bit.3 = X

              Value can be any sequence of [0,1,h,H,l,L,x,X], and must be of the same  length  as
              the bit vector itself.

       d [wnode]...
              Display.  Without arguments displays the values all nodes and bit vectors currently
              on the display list (see w command).  With arguments, only displays  the  nodes  or
              bit  vectors  specified.   See  also  the "display" command if you wish to have the
              display list printed out automatically at the end of certain simulation commands.

       w [-]wnode...
              Watch/unwatch one or more nodes.  Whenever a "d" command  is  given,  each  watched
              node will displayed like so:

              node1=0 node2=X ...

              To  remove  a node from the watched list, preface its name with a '-'.  If wnode is
              the name of a bit vector, the values of the nodes which make up the vector will  be
              displayed as follows:

              label=010100

              where  the first 0 is the value of first node in the list, the first 1 the value of
              the second node, etc.

       assert wnode [mask] value
              Assert that the boolean value of the  node  or  vector  wnode  is  value.   If  the
              comparison  fails,  an  error message is printed.  If mask is given then only those
              bits corresponding to zero bits in mask take part in the comparison, any  character
              other than 0 will skip that bit.  The format of the error message is the following:

                 (tty, 3): assertion failed on 'name' 10X10 (1010X)

              Where name is the name of the vector, followed by the actual value and the expected
              value enclosed in parenthesis.  If a mask is specified, then  bits  that  were  not
              compared are printed as '-'.

       until wnode [mask] value count
              Acts just like the assert command except it requires an additional argument <count>
              which is the max number of clock cycles to run. Instead of just testing the current
              state,  like  assert,  until tests for true and if false it runs clock cycles until
              condition becomes true or count runs out.

       ana wnode...
              This is a shorthand for the analyzer command (described below).

       analyzer wnode...
              Add the specified node(s)/vector(s)  to  the  analyzer  display  list  (see  irsim-
              analyzer(3) for a detailed explanation).  If the analyzer window does not exist, it
              will be created.  If no arguments are given and the analyzer window already exists,
              nothing happens.

       Xdisplay [host:display]
              You  must  be able to connect to an X-server to start the analyzer.  If you haven't
              set up the DISPLAY environment variable properly, the analyzer command may fail. If
              this  is  the  case  you  can  use  the  Xdisplay command to set it from within the
              simulator.  With no arguments, the name of the current X-server will be printed.

       clear  Removes all nodes and vectors from the  analyzer  window.   This  command  is  most
              useful  in  command scripts for switching between different signals being displayed
              on the analyzer.

       "?" and "!" allow the user to go both backwards and forwards through the network.  This is
       a useful debugging aid.

       ? wnode...
              Prints  a  synopsis of the named nodes including their current values and the state
              of all transistors that affect the value of these nodes.  This is the  most  common
              way of wandering through the network in search of what went wrong.
              The output from the command ? out looks like

              out=0 (vl=0.3 vh=0.8) (0.100 pf) is computed from:
              n-channel phi2=0 out=0 in=0 [1.0e+04, 1.3e+04, 8.7e+03]
              pulled down by (a=1 b=1)  [1.0e+04, 1.3e+04, 8.8e+03]
              pulled up [4.0e+04, 7.4e+04, 4.0e+04]

              The  first  line  gives  the  node's name and current value, its low and high logic
              thresholds,  user-specifed  low-to-high  and  high-to-low  propagation  delays   if
              present,  and  its  capacitance  if  nonzero.  Succeeding lines list the transistor
              whose sources or drains connect to this node: the transistor type ("pulled down" is
              an  n-channel  transistor connected to gnd, "pulled up" is a depletion pullup or p-
              channel transistor connected to vdd), the values of the  gate,  source,  and  drain
              nodes,  and  the  modeling resistances.  Simple chains of transistors with the same
              implant type are collapsed by the  -s  option  into  a  single  transistor  with  a
              "compound"  gate; compound gates appear as a parenthesized list of nodes (e.g., the
              pulldown shown above).  The  three  resistance  values  --  static,  dynamic  high,
              dynamic low -- are given in Kilo-ohms.

              Finally, any pending events for a node are listed after the electrical information.

       ! wnode...
              For  each node in the argument list, print a list of transistors controlled by that
              node.

       tcap
              Prints a list of all transistors with their source/drain shorted together or  whose
              source/drain  are  connected to the power supplies.  These transistors will have no
              effect on  the  simulation  other  than  their  gate  capacitance  load.   Although
              transistors  connected  across  the  power  supplies  are  real  design errors, the
              simulator does not complain about them.

       Any node can be made an input -- the simulator will not change an input node's value until
       it  is  released.   Usually  on specific nodes -- inputs to the circuit -- are manipulated
       using the commands below, but you can fool with a subcircuit by forcing values on internal
       nodes just as easily.

       h wnode...
              Force  each  node  on the argument list to be a high (1) input.  Overrides previous
              input commands if necessary.

       l wnode...
              Like "h" except forces nodes to be a low (0) input.

       u wnode...
              Like "h" except forces nodes to be a undefined (X) input.

       x wnode...
              Removes nodes from whatever input list they happen to be on.  The  next  simulation
              step  will  determine the correct node value from the surrounding circuit.  This is
              the default state of most nodes.  Note that this does not force nodes  to  have  an
              "X" value -- it simply removes them from the input lists.

       inputs prints the high, low, and undefined input lists.

       It  is  possible  to define a sequence of values for a node, and then cycle the circuit as
       many times as necessary to input each value and simulate the network.  A similar mechanism
       is  used  to  define  the  sequence of values each clock node goes through during a single
       cycle.

       Each value is a list of characters (with no intervening blanks) chosen from the following:

              1, h, H     logic high (1)
              0, l, L     logic low (0)
              u, U        undefined (X)
              x, X        remove node from input lists

       Presumably the length of the character list is the same as the size of the node/vector  to
       which  it  will  be  assigned.   Blanks (spaces and tabs) are used to separate values in a
       sequence.  The sequence is used one value at a time, left to right.  If  more  values  are
       needed than supplied by the sequence, IRSIM just restarts the sequence again.

       V [node [value...]]
              Define a vector of inputs for a node.  After each cycle of an "R" command, the node
              is set to the next value specified in the sequence.

              With no arguments, clears all input sequences  (does  not  affect  clock  sequences
              however).   With  one  argument,  "node",  clears  any  input  sequences  for  that
              node/vector.

       clock [node [value...]]
              Define a phase of the clock.  Each cycle, each node specified by  a  clock  command
              must run through its respective values.  For example,

                 clock phi1 1 0 0 0
                 clock phi2 0 0 1 0

              defines  a simple 4-phase clock using nodes phi1 and phi2.  Alternatively one could
              have issued the following commands:

                        vector clk phi1 phi2
                        clock clk 10 00 01 00

              With no arguments, clears all clock sequences.  With one argument,  "node",  clears
              any clock sequences for that node/vector.

       After  input  values  have  been  established,  their effect can be propagated through the
       network with the following commands.  The basic simulated time unit is  0.1ns;  all  event
       times are quantized into basic time units.  A simulation step continues until stepsize ns.
       have elapsed, and any events scheduled for that interval are processed.  It is possible to
       build  circuits  which  oscillate  -- if the period of oscillation is zero, the simulation
       command will not return.  If this seems to be the case, you can hit <ctrl-C> to return  to
       the command interpreter.  Note that if you do this while input is being taken from a file,
       the simulator will bring you to the top level interpreter, aborting all pending input from
       any command files.

       When using the linear model (see the "model" command) transition times are estimated using
       an RC time constant calculated from the surrounding circuit.  When using the switch model,
       transitions  are  scheduled  with  unit delay.  These calculations can be overridden for a
       node by setting its tplh and tphl parameters which will then be used to determine the time
       for a transition.

       s [n]  Simulation step.  Propogates new values for the inputs through the network, returns
              when n (default: stepsize) ns. have passed.  If n is specified, it will temporarily
              override  the  stepsize  value.   Unlike  previous  versions,  this  value  is  NOT
              remembered as the default value for the stepsize parameter.  If the display mode is
              "automatic",  the  current  display  list  is printed out on the completion of this
              command (see "display" command).

       c [n]  Cycle n times (default: 1) through the clock, as defined by  the  "clock"  command.
              Each phase of the clock lasts stepsize ns.  If the display mode is "automatic", the
              current display list is  printed  out  on  the  completion  of  this  command  (see
              "display" command).

       p      Step  the  clock through one phase (or simulation step).  For example, if the clock
              is defined as above

                 clock phi1   1 0 0 0
                 clock phi2   0 0 1 0

              then "p" will set phi1 to 1 and phi2 to 0, and then propagate the effects  for  one
              simulation step.  The next time "p" is issued, phi1 and phi2 will both be set to 0,
              and the effects propagated, and so on.  If the "c" command is issued after "p"  has
              been  used, the effect will be to step through the next 4 phases from where the "p"
              command left off.

       R [n]  Run the simulator through n cycles (see the "c" command).  If n is not present make
              the  run  as  long  as  the  longest  sequence.   If display mode is automatic (see
              "display" command) the display is printed at the  end  of  each  cycle.   Each  "R"
              command starts over at the beginning of the sequence defined for each node.

       back time
              Move  back  to the specified time.  This command restores circuit state as of time,
              effectively undoing any changes in between.  Note that you can not  move  past  any
              previously  flushed  out history (see flush command below) as the history mechanism
              is used to restore the network state.  This command can be useful to undo a mistake
              in the input vectors or to re-simulate the circuit with a different debug level.

       path wnode...
              display  critical  path(s)  for  last  transition  of  the  specified node(s).  The
              critical path transistions are reported using the following format:

                 node -> value @ time (delta)

              where node is the name  of  the  node,  value  is  the  value  to  which  the  node
              transitioned,  time is the time at which the transistion occurred, and delta is the
              delay through the node since the last transition.  For example:

                 critical path for last transition of Hit_v1:
                      phi1-> 1 @ 2900.0ns , node was an input
                      PC_driver-> 0 @ 2900.4ns    (0.4ns)
                      PC_b_q1-> 1 @ 2904.0ns    (3.6ns)
                      tagDone_b_v1-> 0 @ 2912.8ns    (8.8ns)
                      tagDone1_v1-> 1 @ 2915.3ns    (2.5ns)
                      tagDone1_b_v1-> 0 @ 2916.0ns    (0.7ns)
                      tagDone_v1-> 1 @ 2918.4ns    (2.4ns)
                      tagCmp_b_v1-> 0 @ 2922.1ns    (3.7ns)
                      tagCmp_v1-> 1 @ 2923.0ns    (0.9ns)
                      Vbit_b_v1-> 0 @ 2923.2ns    (0.2ns)
                      Hit_v1-> 1 @ 2923.5ns    (0.3ns)

       activity from_time [to_time]
              print histogram showing amount of circuit activity in the specified  time  inteval.
              Actually  only  shows number of nodes which had their most recent transition in the
              interval.

       changes from_time [to_time]
              print list of nodes which last changed value in the specified time interval.

       printp print list of all pending events sorted in time.  The  node  associated  with  each
              event and the scheduled time is printed.

       printx print a list of all nodes with undefined (X) values.

       Using  the  trace  command,  it is possible to get more detail about what's happening to a
       particular node.  Much of what is said below is described in much more detail  in  "Logic-
       level Simulation for VLSI Circuits" by Chris Terman, available from Kluwer Academic Press.
       When a node is traced, the simulator reports each change in the node's value:

                   [event #100] node out.1: 0 -> 1 @ 407.6ns

       The event index is incremented for each  event  that  is  processed.   The  transition  is
       reported as

            old value -> new value @ report time

       Note  that  since the time the event is processed may differ from the event's report time,
       the report time for successive events may not be strictly increasing.

       Depending on the debug level (see the "debug" command) each calculation of a traced node's
       value is reported:

            [event #99] node clk: 0 -> 1 @ 400.2ns
            final_value( Load )  V=[0.00, 0.04]  => 0
            ..compute_tau( Load )
            {Rmin=2.2K  Rdom=2.2K  Rmax=2.2K}  {Ca=0.06  Cd=0.17}
            tauA=0.1  tauD=0.4 ns
            [event #99: clk->1] transition for Load: 1 -> 0 (tau=0.5ns, delay=0.6ns)

       In  this  example, a calculation for node Load is reported.  The calculation was caused by
       event 99 in which node clk went to 1.  When using the linear model (as  in  this  example)
       the report shows

            current value -> final value

       The  second  line displays information regarding the final value (or dc) analysis for node
       "Load"; the minimun and maximum voltages as well as the final logical  value  (0  in  this
       case).

       The next three lines display timing analysis information used to estimate the delays.  The
       meaning of the variables displayed can be found Chu's thesis: "Improved Models for Switch-
       Level Simulation".

       When  the final value is reported as "D", the node is not connected to an input and may be
       scheduled to decay from its current value to  X  at  some  later  time  (see  the  "decay"
       command).

       "tau"  is the calculated transition time constant, "delta" is when any consequences of the
       event will be computed; the difference in the two times is  how  IRSIM  accounts  for  the
       shape  of the transition waveform on subsequent stages (see reference given above for more
       details).  The middle lines of the report indicate the Thevenin and capacitance parameters
       of the surrounding networks, i.e., the parameters on which the transition calculations are
       based.

       debug [ev dc tau taup tw spk][off][all]
              Set debugging level.  Useful for debugging  simulator  and/or  circuit  at  various
              levels of the computation.  The meaning of the various debug levels is as follows:

              ev      display event enqueueing and dequeueing.

              dc      display dc calculation information.

              tau     display time constant (timing) calculation.

              taup    display second time constant (timing) calculation.

              tw      display network parameters for each stage of the tree walk, this applies to
                      dc, tau, and taup.  This level of debugging detail is usually  needed  only
                      when debugging the simulator.

              spk     displays spike analysis information.

              all     This is a shorthand for specifying all of the above.

              off     This turns off all debugging information.

              If  a debug switch is on then during a simulation step, each time a watched node is
              encounted in some event, that fact is indicated to the user along with  some  event
              info.   If  a  node  keeps appearing in this prinout, chances are that its value is
              oscillating.  Vice versa, if your circuit never settles (ie., it oscillates) ,  you
              can  use  the  "debug"  and  "t"  commands to find the node(s) that are causing the
              problem.

              Without any arguments, the debug command prints the current debug level.

       t [-]wnode...
              set trace flag for node.  Enables the various printouts described above.  Prefacing
              the  node  name with '-' clear its trace flag.  If "wnode" is the name of a vector,
              whenever any node of that vector changes value, the current time and the values  of
              all  traced  vectors  is printed.  This feature is useful for watching the relative
              arrival times of values at nodes in an output vector.

       System interface commands:

       > filename
              Write current state of  each  node  into  specified  file.   Useful  for  making  a
              breakpoint  in  your  simulation run.  Only stores values so isn't really useful to
              "dump" a run for later use, i.e., the current input lists, pending events, etc. are
              NOT saved in the state file.

       < filename
              Read  from specified file, reinitializing the value of each node as directed.  Note
              that network must already exist and be identical to the network used to create  the
              dump file with the ">" command.  These state saving commands are really provided so
              that complicated initializing sequences need only be simulated once.

       << filename
              Same as "<" command, except that this command will restore the input status of  the
              nodes as well.  It does not, however, restore pending events.

       dumph [filename]
              Write  the  history  of  the  simulation  to  the  specified  file,  that  is;  all
              transistions since time = 0.  The resulting file is  a  machine-independent  binary
              file,  and contains all the required information to continue simulation at the time
              the dump takes place.  If the filename isn't specified, it will be  constructed  by
              taking  the  name  of the sim_file (from the command line) and appending ".hist" to
              it.

       readh filename
              Read the specified history-dump file into the current network.  This  command  will
              restore  the state of the circuit to that of the dump file, overwriting the current
              state.

       flush [time]
              If memory consumption due to history maintanance becomes prohibitive, this  command
              can  be  used  to free the memory consumed by the history up to the time specified.
              With no arguments, all history up to the current point in the simulation is  freed.
              Flushing  out the history may invalidate an incremental simulation and the portions
              flushed will no longer appear in the analyzer window.

       setpath [path...]
              Set the search-path for command files.  Path should be a sequence of directories to
              be searched for ".cmd" files, "." meaning the current directory.  For eaxmple:

            setpath . /usr/me/rsim/cmds /cad/lib/cmds

              With  no  arguments, it will print the current search-path.  Initially this is just
              ".".

       print text...
              Simply prints the text on the user's console.  Useful for keeping  user  posted  of
              progress through a long command file.

       logfile [filename]
              Create  a  logfile  with the specified name, closing current log file if any; if no
              argument, just close current logfile.  All output which appears on  user's  console
              will also be placed in the logfile.  Output to the logfile is cleverly formatted so
              that logfiles themselves can serve as command files.

       setlog [filename | off]
              Record all net changes, as well as resulting error messages, to the specified  file
              (see "update" command).  Net changes are always appended to the log-file, preceding
              each sequence of changes by the current date.  If the argument  is  off  then  net-
              changes will not be logged.  With no arguments, the name of the current log-file is
              printed.

              The default is to always record net changes; if no filename is specified (using the
              "setlog"  command)  the  default filename irsim_changes.log will be used.  The log-
              files are formatted so that log-files may themselves be used as net-change files.

       wnet [filename]
              Write the current network to the specified file.  If the filename isn't  specified,
              it  will  be constructed by taking the name of the sim_file (from the command line)
              and appending ".inet" to it.  The resulting file can be used in a future simulation
              run,  as  if it were a sim file.  The file produced is a machine independent binary
              file, which is typically about 1/3 the size of the  sim  file  and  about  8  times
              faster to load.

       time [command]
              With no argument, a summary of time used by the simulator is printed.  If arguments
              are given the specified command is timed and a time summary  is  printed  when  the
              command completes.  The format of the time summary is Uu Ss E P% M, where:

            U => User time in seconds
            S => System time in seconds
            E => Elapsed time, minutes:seconds
            P => Percentage of CPU time (((U + S)/E) * 100)
            M => Median text, data, and stack size use

       q
              Terminate  current input stream.  If this is typed at top level, the simulator will
              exit back to the system; otherwise, input reverts to the previous input stream.

       exit [n]
              Exit to system, n is the reported status (default: 0).

       Simulator parameters are set with the following commands.  With no arguments, each of  the
       commands simply prints the current value of the parameter.

       decay [n]
              Set decay parameter to n ns. (default: 0).  If non-zero, it tells the number of ns.
              it takes for charge on a node to decay to X.  A value of 0 implies no decay at all.
              You cannot specify this parameters separately for each node, but this turns out not
              to be a problem.  See "report" command.

       display [-][cmdfile][automatic]
              set/reset the display modes, which are

              cmdfile     commands executed from command  files  are  displayed  to  user  before
                          executing.  The default is cmdfile = OFF.

              automatic   print  out  current  display list (see "d" command) after completion of
                          "s" or "c" command.  The default is automatic = ON.

              Prefacing the previous commands with a "-" turns off that display option.

       model [name]
              Set simulation model to one of the following:

              switch Model transistors as voltage controlled switches.  This model uses  interval
                     logic  levels,  without  accounting  for transistor resistances, so circuits
                     with fighting transistors may not be accuratelly modelled.  Delays  may  not
                     reflect the true speed of the circuit as well.

              linear Model  transistors as a resistor in series with a voltage controlled switch.
                     This model uses  a  single-time-constant  computed  from  the  resulting  RC
                     network  and  uses  a  two-time-constant model to analyze charge sharing and
                     spikes.

              The default is the linear model.  You can change the simulation model at  any  time
              --  even  with  events  pending  -- as only new calculations are affected.  Without
              arguments, this command prints the current model name.

       report [level]
              When level is nonzero, report all nodes which are set to X because of charge decay,
              regardless  on  whether  they  are  being  traced.   Setting level to zero disables
              reporting, but not the decay itself (see "decay" command).

       stepsize [n]
              Specify duration of simulation  step  or  clock  phase.   n  is  specified  in  ns.
              (nanoseconds).   Floating  point  numbers with up to 1 digit past the decimal point
              are allowed.  Further decimals are trucated (i.e. 10.299 == 10.2).

       unitdelay [n]
              When nonzero, force all transitions to take n ns.  Setting the  parameter  to  zero
              disables this feature.  The resolution is the same as for the "stepsize" command.

       stats  Print event statitistics, as follows:

                 changes = 26077
                 punts (cns) = 208 (34)
                 punts = 0.79%, cons_punted = 16.35%
                 nevents = 28012; evaluations = 27972

              Where  changes is the total number of transistions recorded, punts is the number of
              punted events, (cns) is the number of consecutive punted  events  (a  punted  event
              that  punted  another  event).  The penultimate line shows the percentage of punted
              events with  respect  to  the  total  number  of  events,  and  the  percentage  of
              consecutive  punted  events  with respect to the number of punted events.  The last
              line shows the total number of events (nevents) and the number of net evaluations.

       Incremental simulation commands:

       Irsim supports incremental changes to  the  network  and  resimulation  of  the  resulting
       network.   This  is  done  incrementally  so  that only the nodes affected by the changes,
       either directly or indirectly, are re-evaluated.

       update filename
              Read net-change tokens from the specified file.  The following net-change  commands
              are available:

              add     type gate source drain length width [area]
              delete  type gate source drain length width [area]
              move    type gate source drain length width [area] g s d
              cap     node value
              N       node metal-area poly-area diff-area diff-perim
              M       node M2A M2P MA MP PA PP DA DP PDA PDP
              thresh  node low high
              Delay   node tplh tphl

              For  a  detailed  dscription  of  this file see netchange(5).  Note that this is an
              experimental interface and is likely to change in the future.

              Note that this command doesn't resimulate the circuit so  that  it  may  leave  the
              network in an inconsistent state.  Usually this command will be followed by an isim
              command (see below), if that is not the case then it's up to the user to  initilize
              the state of the circuit.  This command exists only for historical reasons and will
              probably disappear in the future.  It's use is discouraged.

       isim [filename]
              Read net-change tokens from the specified file (see netchange(5)) and incrementally
              resimulate the circuit up to the current simulation time (not supported yet).

       ires n The  incremental  algorithm keeps track of nodes deviating from their past behavior
              as recorded in the network history.  During resimulation, a node is  considered  to
              deviate  from its history if it's new state is found to be different within n ns of
              its previous state.  This command allows for changing the  incremental  resolution.
              With no arguments, it will print the current resolution.  The default resolution is
              0 ns.

       powlogfile [filename]
              Opens filename for writting nodal transition reports. The format of the  report  is
              the  same you get when you trace a node normaly.  With no arguments powlogfile just
              closes the opened logfile  and  prints  out  a  power  dissipation  summary.  Nodal
              transitions in inputs are not included in the transition count.

       powtrace [[-]node...]
              The  syntax  of  this  command is the same as the normal t (trace) command.  If you
              want to trace and report power dissipation for all the nodes just use  powtrace  *.
              Use powtrace -node if you want to exclude some nodes.

       powstep
              Toggles  whether  dynamic  power  estimation  is displayed after each timestep. The
              ynamic power displayed will only be for the nodes that have been selected using the
              powtrace command.

       vsupply voltage
              Sets  the  V  variable for use in the P=CV^2/(2t) expression where C is capacitance
              switched, and t is the timestep.  The default value for vsupply is 5.0 Volts.

       sumcap Gives a sum of all nodal capcitances, not just those  selected  with  the  powtrace
              command.

SEE ALSO

       presim(1) (now obsolete)
       rsim(1)
       irsim-analyzer(3)
       sim(5)
       netchange(5)