1 from itertools
import count
3 from migen
.fhdl
.namer
import build_namespace
7 codechars
= [chr(i
) for i
in range(33, 127)]
9 q
, r
= divmod(n
, len(codechars
))
12 q
, r
= divmod(q
, len(codechars
))
13 code
= codechars
[r
] + code
18 def __init__(self
, filename
, signals
):
19 self
.fo
= open(filename
, "w")
21 self
.signal_values
= dict()
25 ns
= build_namespace(signals
)
27 for signal
in signals
:
28 name
= ns
.get_name(signal
)
30 self
.codes
[signal
] = code
31 self
.fo
.write("$var wire {len} {code} {name} $end\n"
32 .format(name
=name
, code
=code
, len=len(signal
)))
33 self
.fo
.write("$dumpvars\n")
34 for signal
in signals
:
35 value
= signal
.reset
.value
36 self
._write
_value
(signal
, value
)
37 self
.signal_values
[signal
] = value
38 self
.fo
.write("$end\n")
44 def _write_value(self
, signal
, value
):
49 fmtstr
= "b{:0" + str(l
) + "b} {}\n"
52 self
.fo
.write(fmtstr
.format(value
, self
.codes
[signal
]))
54 def set(self
, signal
, value
):
55 if self
.signal_values
[signal
] != value
:
56 self
._write
_value
(signal
, value
)
57 self
.signal_values
[signal
] = value
59 def delay(self
, delay
):
61 self
.fo
.write("#{}\n".format(self
.t
))
68 def set(self
, signal
, value
):
71 def delay(self
, delay
):