This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
using_tcl_for_fame_and_fortune [2020/02/07 14:51] nelson |
using_tcl_for_fame_and_fortune [2020/02/07 15:22] (current) nelson [Using Looping to Exercise All Combinations of 1's and 0's] |
||
---|---|---|---|
Line 40: | Line 40: | ||
} | } | ||
- | Or, if what you are forcing is itself a 4-bit quantity, it can be trivial: | + | Or, if what you are forcing is itself a 4-bit quantity, it requires a function to be defined first to do the integer to binary conversion: |
+ | proc dec2bin i { | ||
+ | #returns a string, e.g. dec2bin 12 => 1100 | ||
+ | set res {} | ||
+ | while {$i>0} { | ||
+ | set res [expr {$i%2}]$res | ||
+ | set i [expr {$i/2}] | ||
+ | } | ||
+ | if {$res == {}} {set res 0} | ||
+ | return $res | ||
+ | } | ||
+ | | ||
set i 0 | set i 0 | ||
while {$i < 16} { | while {$i < 16} { | ||
- | add_force mySignal $i | + | add_force a [dec2bin $i] |
+ | run 10ns | ||
+ | incr i | ||
+ | } | ||
+ | |||
+ | And, if you prefer for-loops: | ||
+ | |||
+ | for {set i 0} {$i < 16} {incr i} { | ||
+ | add_force mySignal [dec2bin $i] | ||
run 100ns | run 100ns | ||
incr i | incr i | ||
} | } | ||