Skip to content

Commit f686109

Browse files
committed
Reg supports intrinsic write method.
1 parent c24948b commit f686109

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

tests/extension/thread_/stream_reg/thread_stream_reg.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def mkLed():
2929

3030
# to extern
3131

32-
when = a < 4
32+
when = a > 4
3333
r = strm.Reg(a, when)
3434

3535
# from extern
@@ -40,14 +40,16 @@ def mkLed():
4040
def comp_stream(size, offset):
4141
strm.set_source('a', ram_a, offset, size)
4242
strm.set_sink('b', ram_b, offset, size)
43+
# set Reg value
44+
r.write(1000)
4345
strm.run()
4446
strm.join()
4547

4648
def comp_sequential(size, offset):
47-
r = 0
49+
r = 1000
4850
for i in range(size):
4951
a = ram_a.read(i + offset)
50-
if a < 4:
52+
if a > 4:
5153
r = a
5254
b = r + 100
5355
ram_b.write(i + offset, b)

veriloggen/stream/stypes.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3172,6 +3172,7 @@ def _implement(self, m, seq, svalid=None, senable=None):
31723172

31733173

31743174
class Reg(_SpecialOperator):
3175+
__intrinsics__ = ('write')
31753176
latency = 1
31763177

31773178
def __init__(self, data, when=None):
@@ -3207,6 +3208,13 @@ def _implement(self, m, seq, svalid=None, senable=None):
32073208

32083209
seq(data(arg_data[0]), cond=enable)
32093210

3211+
def write(self, fsm, value):
3212+
cond = fsm.here
3213+
3214+
self.seq.If(cond)(
3215+
self.sig_data(value)
3216+
)
3217+
32103218

32113219
class ReadRAM(_SpecialOperator):
32123220
latency = 3

0 commit comments

Comments
 (0)