Skip to content

Commit 2615e2f

Browse files
committed
Bug fix of AXI-Lite Master: Changed the outstanding_wcount increment/decrement conditions. Changed the write_acceptable condition. Changed the write_data condition.
1 parent ad9fd93 commit 2615e2f

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

veriloggen/types/axi.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,12 +1004,12 @@ def __init__(self, m, name, clk, rst, datawidth=32, addrwidth=32,
10041004
self.outstanding_wcount = self.m.TmpReg(self.outstanding_wcount_width, initval=0,
10051005
prefix='outstanding_wcount')
10061006

1007-
self.seq.If(vtypes.Ands(self.wdata.wvalid, self.wdata.wready),
1007+
self.seq.If(vtypes.Ands(self.waddr.awvalid, self.waddr.awready),
10081008
vtypes.Not(vtypes.Ands(self.wresp.bvalid, self.wresp.bready)),
1009-
self.outstanding_wcount < (2 ** self.outstanding_wcount_width - 1))(
1009+
self.outstanding_wcount < 2 ** self.outstanding_wcount_width - 1)(
10101010
self.outstanding_wcount.inc()
10111011
)
1012-
self.seq.If(vtypes.Not(vtypes.Ands(self.wdata.wvalid, self.wdata.wready)),
1012+
self.seq.If(vtypes.Not(vtypes.Ands(self.waddr.awvalid, self.waddr.awready)),
10131013
vtypes.Ands(self.wresp.bvalid, self.wresp.bready),
10141014
self.outstanding_wcount > 0)(
10151015
self.outstanding_wcount.dec()
@@ -1043,6 +1043,10 @@ def disable_read(self):
10431043

10441044
self._read_disabled = True
10451045

1046+
def write_acceptable(self):
1047+
""" AXI-Lite Master must not issue any request until the previous request is completed."""
1048+
return self.outstanding_wcount == 0
1049+
10461050
def write_request(self, addr, length=1, cond=None):
10471051
"""
10481052
@return ack
@@ -1086,8 +1090,7 @@ def write_data(self, data, cond=None):
10861090
if cond is not None:
10871091
self.seq.If(cond)
10881092

1089-
ack = vtypes.Ands(self.write_acceptable(),
1090-
vtypes.Ors(self.wdata.wready, vtypes.Not(self.wdata.wvalid)))
1093+
ack = vtypes.Ors(self.wdata.wready, vtypes.Not(self.wdata.wvalid))
10911094

10921095
self.seq.If(ack)(
10931096
self.wdata.wdata(data),

0 commit comments

Comments
 (0)