m.d.comb += self.busy_o.eq(opc_l.q) # busy out
with m.If(self.go_rd_i):
- m.d.sync += self.counter.eq(1)
+ m.d.sync += self.counter.eq(2)
with m.If(self.counter > 0):
m.d.sync += self.counter.eq(self.counter - 1)
with m.If(self.counter == 1):
yield from int_instr(dut, alusim, op, src1, src2, dest)
yield from print_reg(dut, [3,4,5])
yield
- yield from print_reg(dut, [3,4,5])
- for i in range(len(dut.int_insn_i)):
- yield dut.int_insn_i[i].eq(0)
- yield
- yield
- yield
while True:
issue_o = yield dut.issue_o
if issue_o:
break
+ print ("busy",)
+ yield from print_reg(dut, [3,4,5])
yield
+ yield from print_reg(dut, [3,4,5])
+ for i in range(len(dut.int_insn_i)):
+ yield dut.int_insn_i[i].eq(0)
yield
src1_r = Signal(max=self.reg_width, reset_less=True)
src2_r = Signal(max=self.reg_width, reset_less=True)
# XXX latch based on *issue* rather than !latch (as in book)
- latchregister(m, self.dest_i, dest_r, self.issue_i) #wr_l.qn)
- latchregister(m, self.src1_i, src1_r, self.issue_i) #wr_l.qn)
- latchregister(m, self.src2_i, src2_r, self.issue_i) #wr_l.qn)
+ latchregister(m, self.dest_i, dest_r, wr_l.qn)
+ latchregister(m, self.src1_i, src1_r, wr_l.qn)
+ latchregister(m, self.src2_i, src2_r, wr_l.qn)
# dest decoder (use dest reg as input): write-pending out
m.d.comb += dest_d.i.eq(dest_r)
ro = Signal(reset_less=True)
m.d.comb += g_rd.eq(self.g_wr_pend_i & self.rd_pend_o)
m.d.comb += ro.eq(~g_rd.bool())
- m.d.comb += self.readable_o.eq(ro & rd_l.q)
+ m.d.comb += self.readable_o.eq(ro & wr_l.q)
# writable output signal
g_wr_v = Signal(self.reg_width, reset_less=True)