Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
tools:prsim [2019/04/18 15:04]
rajit [Tracing]
tools:prsim [2022/06/22 06:58] (current)
rajit [Running Simulation]
Line 27: Line 27:
 </code> </code>
  
-In this example, I've assumed that the circuit reset signals are the global variables ''Reset'' and ''_Reset''. You should use the appropriate signals for your circuit there. The nice thing about this setup is that you can have a ''prsim'' script file that looks something like this:+In this example, I've assumed that the circuit reset signals are the global variables ''Reset'' and ''_Reset'', and that both ''Vdd'' and ''GND'' are defined as globals for the power supplies. You should use the appropriate signals for your circuit there. The nice thing about this setup is that you can have a ''prsim'' script file that looks something like this:
  
 <code> <code>
Line 72: Line 72:
 ==== Running Simulation ==== ==== Running Simulation ====
  
-<code>mode reset|run|unstab|nounstab</code>+<code>mode reset|run</code>
 set current running mode. set current running mode.
 ^ Mode ^ Effect ^ ^ Mode ^ Effect ^
-| ''reset''/''run'' | ''reset'' turns off weak interference warnings (node still becomes X) and ''run'' turns them on +| ''reset'' | ''reset'' turns off weak interference warnings (node still becomes X). During chip initialization, there can be weak interference since the simulator assumes all nodes are initially X. Setting the mode to ''reset'' during the reset phase prevents these warnings from being printed to the screen. 
-| ''unstab''/''nounstab''''unstab'' marks all nodes as possibly unstable, turning of the instability warnings (node still becomes X), ''nounstab'' turns them on |+| ''run''Warnings of weak interference are enabled. This should be the standard mode after the reset phase has completed. | 
  
 <code>initialize</code> <code>initialize</code>
Line 113: Line 114:
 <code>uget <n></code> <code>uget <n></code>
 get value of node <n> but report its canonical name get value of node <n> but report its canonical name
 +
 +<code>set_principal <n></code>
 +select <n> as the canonical name for a node
  
 <code>watch <n></code> <code>watch <n></code>
Line 142: Line 146:
 <code>fanout <node></code> <code>fanout <node></code>
 print the set of nodes for which <node> appears in the guard of a driving production rule print the set of nodes for which <node> appears in the guard of a driving production rule
 +
 +<code>chk-save <file></code>
 +save a simulation checkpoint to <file>
 +
 +<code>chk-restore <file></code>
 +restore simulation state from a checkpoint
  
 ==== Tracing ==== ==== Tracing ====
Line 156: Line 166:
 <code>timescale <t></code> <code>timescale <t></code>
 set time scale to <t> picoseconds for tracing set time scale to <t> picoseconds for tracing
 +
 +==== ACT Attributes for simulation ====
 +
 +Attributes can be added to production rules specified in ACT as follows:
 +<code>
 +    prs {
 +      [after=20] a & b #> c-
 +    }
 +</code>
 +
 +Attributes currently recognized by ''prsim'' are:
 +
 +^ Attribute ^ Meaning ^
 +| after | used to set the delay in simulation time units for the production rule firing in non-random timing mode |
 +| weak | if there is a ''weak'' attribute, it means the production rule has a weak drive and can be overridden by a stronger production rule during simulation |
 +| unstab | if there is an ''unstab'' attribute, it means that the production rule may be unstable. ''prsim'' will suppress instability reporting on such rules |
  
 ===== Large Files ===== ===== Large Files =====