for i, fu in enumerate(if_l):
fn_issue_l.append(fu.issue_i)
fn_busy_l.append(fu.busy_o)
- m.d.comb += fu.issue_i.eq(issueunit.i.fn_issue_o[i])
- m.d.comb += fu.dest_i.eq(self.int_dest_i)
- m.d.comb += fu.src1_i.eq(self.int_src1_i)
- m.d.comb += fu.src2_i.eq(self.int_src2_i)
+ m.d.sync += fu.issue_i.eq(issueunit.i.fn_issue_o[i])
+ m.d.sync += fu.dest_i.eq(self.int_dest_i)
+ m.d.sync += fu.src1_i.eq(self.int_src1_i)
+ m.d.sync += fu.src2_i.eq(self.int_src2_i)
# XXX sync, so as to stop a simulation infinite loop
m.d.sync += issueunit.i.busy_i[i].eq(fu.busy_o)
#---------
# Connect Register File(s)
#---------
+ print ("intregdeps wen len", len(intregdeps.dest_rsel_o))
m.d.comb += int_dest.wen.eq(intregdeps.dest_rsel_o)
m.d.comb += int_src1.ren.eq(intregdeps.src1_rsel_o)
m.d.comb += int_src2.ren.eq(intregdeps.src2_rsel_o)
break
if dest not in [src1, src2]:
break
- src1 = 3
+ src1 = 4
src2 = 1
dest = 1
yield
yield
yield from alusim.check(dut)
+ yield from alusim.dump(dut)
def explore_groups(dut):
m.d.comb += self.rd_src1_pend_o.eq(Cat(*rd_src1_pend))
m.d.comb += self.rd_src2_pend_o.eq(Cat(*rd_src2_pend))
+ print ("wr pend len", len(wr_pend))
+
# ---
# connect Reg Selection vector
# ---
dest_rsel.append(rsv.dest_rsel_o)
src1_rsel.append(rsv.src1_rsel_o)
src2_rsel.append(rsv.src2_rsel_o)
+ print ("dest_rsel_rsv len", len(rsv.dest_rsel_o))
# ... and output them from this module (horizontal, width=REGs)
m.d.comb += self.dest_rsel_o.eq(Cat(*dest_rsel))
m.d.comb += self.src1_rsel_o.eq(Cat(*src1_rsel))
m.d.comb += self.src2_rsel_o.eq(Cat(*src2_rsel))
+ print ("dest rsel len", len(dest_rsel), self.dest_rsel_o)
# ---
# connect Dependency Matrix dest/src1/src2/issue to module d/s/s/i
# ---