Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
intro_example:inverter [2022/05/13 13:15] – rajit | intro_example:inverter [2025/05/01 13:32] (current) – [Simulating with prsim] rajit | ||
---|---|---|---|
Line 108: | Line 108: | ||
After this command, all delays are randomized. This is a useful test to see if your production rules are stable and non-interfering. If '' | After this command, all delays are randomized. This is a useful test to see if your production rules are stable and non-interfering. If '' | ||
+ | |||
+ | ===== Simulating with actsim ===== | ||
+ | |||
+ | ACTSIM is setup to simulate processes by default. We recommend having a top-level process that is used for testing purposes. In this setup, the complete example is: | ||
+ | |||
+ | <code act> | ||
+ | defproc inverter (bool? i; bool! o) | ||
+ | { | ||
+ | prs { | ||
+ | i => o- | ||
+ | } | ||
+ | } | ||
+ | |||
+ | defproc test() | ||
+ | { | ||
+ | inverter inv; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | If the file above is called '' | ||
+ | |||
+ | < | ||
+ | % actsim -p test test_inv.act | ||
+ | </ | ||
+ | |||
+ | Note that we don't need to generate the flattened production rule file, which could be quite large. We can simulate this as follows: | ||
+ | |||
+ | < | ||
+ | actsim> watch inv.i | ||
+ | actsim> watch inv.o | ||
+ | actsim> status X | ||
+ | inv { o } | ||
+ | actsim> set inv.i 0 | ||
+ | [ 0] < | ||
+ | actsim> cycle | ||
+ | [ 10] < | ||
+ | actsim> set inv.i 1 | ||
+ | [ 10] < | ||
+ | actsim> cycle | ||
+ | [ 20] < | ||
+ | </ | ||
+ | |||
+ | '' | ||
+ | |||
+ | One of the useful features of '' | ||
+ | |||
+ | < | ||
+ | actsim> random | ||
+ | </ | ||
+ | |||
+ | After this command, all delays are randomized. This is a useful test to see if your production rules are stable and non-interfering. If '' | ||