Skip to content

Commit 8b604c9

Browse files
committed
Bug fix: FSM label number rule in AxiMemoryModel
1 parent ec45582 commit 8b604c9

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

veriloggen/types/axi.py

+12-3
Original file line numberDiff line numberDiff line change
@@ -2931,6 +2931,8 @@ def _make_img(filename, size, width, blksize=4096):
29312931
def _make_fsm(self, write_delay=10, read_delay=10, sleep=4):
29322932
write_mode = 100
29332933
read_mode = 200
2934+
while read_mode <= write_mode + write_delay + 10:
2935+
read_mode += 100
29342936

29352937
self.fsm.If(self.waddr.awvalid).goto(write_mode)
29362938
self.fsm.If(self.raddr.arvalid).goto(read_mode)
@@ -3291,6 +3293,8 @@ def __init__(self, m, name, clk, rst, datawidth=32, addrwidth=32, numports=2,
32913293
self._make_fsms(write_delay, read_delay, sleep)
32923294

32933295
def _make_fsms(self, write_delay=10, read_delay=10, sleep=4):
3296+
write_mode = 0
3297+
read_mode = 0
32943298

32953299
for i, (fsm, waddr, wdata, wresp, raddr, rdata) in enumerate(
32963300
zip(self.fsms, self.waddrs, self.wdatas, self.wresps, self.raddrs, self.rdatas)):
@@ -3315,9 +3319,14 @@ def _make_fsms(self, write_delay=10, read_delay=10, sleep=4):
33153319
sleep_count(0)
33163320
)
33173321

3318-
offset = 1000 * i
3319-
write_mode = 100 + offset
3320-
read_mode = 200 + offset
3322+
offset = 100 * i
3323+
while offset <= read_mode + read_delay + 10:
3324+
offset += 100
3325+
3326+
write_mode = offset + 100
3327+
read_mode = offset + 200
3328+
while read_mode <= write_mode + write_delay + 10:
3329+
read_mode += 100
33213330

33223331
fsm.If(waddr.awvalid).goto(write_mode)
33233332
fsm.If(raddr.arvalid).goto(read_mode)

0 commit comments

Comments
 (0)