instrs = create_random_ops(dut, 15, True, 4)
if True: # LD/ST test (with immediate)
- instrs.append( (1, 2, 2, 0x30, 1, 1, (0, 0)) )
+ instrs.append( (1, 2, 0, 0x20, 1, 1, (0, 0)) )
#instrs.append( (1, 2, 7, 0x10, 1, 1, (0, 0)) )
if False:
# is there a clash, yes/no
matchgrp = []
for i in range(self.n_adr):
- nomatch = []
+ match = []
for j in range(self.n_adr):
if i == j:
- nomatch.append(Const(1)) # don't match against self!
+ match.append(Const(0)) # don't match against self!
else:
- nomatch.append(addrs_r[i] != addrs_r[j])
- matchgrp.append((~Cat(*nomatch)).bool()) # true if all matches fail
- comb += self.addr_nomatch_o[i].eq(Cat(*nomatch) & l.q)
- comb += self.addr_nomatch_o.eq((~Cat(*matchgrp)) & l.q)
+ match.append(addrs_r[i] == addrs_r[j])
+ comb += self.addr_nomatch_a_o[i].eq(~Cat(*match) & l.q)
+ matchgrp.append(self.addr_nomatch_a_o[i] == l.q)
+ comb += self.addr_nomatch_o.eq(Cat(*matchgrp) & l.q)
return m