This is an old revision of the document!
If you hate to type repetitive TCL commands to exercise your design, here are some ideas.
It turns out TCL is a full-featured programming language (even if it is verbose and perhaps clunky). But, once you find some examples to cannibalize, it can be pretty easy to create very compact simulation scripts.
The following code sample shows how to loop across all combinations of 4-bits (from 0000 to 1111).
Note that when you set a variable name you just state it but when you want to get at the value stored in that variable you must prefix it with a $ sign.
Note also that you call functions using [functionName … ] syntax. In this case, “expr” evaluates an arithmetic expression.
set i 0 while {$i < 16} { set a [expr ($i >> 3) & 1] set b [expr ($i >> 2) & 1] set c [expr ($i >> 1) & 1] set d [expr ($i >> 0) & 1] puts "Test this combination: $a $b $c $d" add_force mySignal3 $a add_force mySignal2 $b add_force mySignal1 $c add_force mySignal0 $d run 100ns incr i }
Or, it could be much simpler:
set i 0 while {$i < 16} { add_force mySignal3 [expr ($i >> 3) & 1] add_force mySignal2 [expr ($i >> 2) & 1] add_force mySignal1 [expr ($i >> 1) & 1] add_force mySignal0 [expr ($i >> 0) & 1] run 100ns incr i }
Or, if what you are forcing is itself a 4-bit quantity, it can be trivial:
set i 0 while {$i < 16} { add_force mySignal $i run 100ns incr i }