sync function unit src/dest
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 16 May 2019 04:22:07 +0000 (05:22 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 16 May 2019 04:22:07 +0000 (05:22 +0100)
src/experiment/compalu.py
src/experiment/cscore.py

index cd781603c243f5f71eaec0ec52cd5aded1842b23..12e6a92f5f57166268ed3331996a8ae4ccd1b432 100644 (file)
@@ -54,7 +54,7 @@ class ComputationUnitNoDelay(Elaboratable):
         m.d.comb += self.busy_o.eq(opc_l.q) # busy out
 
         with m.If(src_l.q & (self.counter == 0)):
-            m.d.sync += self.counter.eq(3)
+            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) | (self.counter == 0)):
index 4faa049af2c52bdd5dae6fba34223cef9d6ae319..ae44fb72476e8ed84671e9c45a2cd6f5d370673d 100644 (file)
@@ -147,9 +147,9 @@ class Scoreboard(Elaboratable):
             fn_issue_l.append(fu.issue_i)
             fn_busy_l.append(fu.busy_o)
             m.d.sync += 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.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.comb += issueunit.i.busy_i[i].eq(fu.busy_o)
 
@@ -186,6 +186,7 @@ class Scoreboard(Elaboratable):
         with m.If(if_l[0].go_wr_i | if_l[1].go_wr_i):
             m.d.comb += int_dest.wen.eq(g_int_wr_pend_v.g_pend_o)
         #with m.If(intpick1.go_rd_o):
+        #with m.If(if_l[0].go_rd_i | if_l[1].go_rd_i):
         m.d.comb += int_src1.ren.eq(g_int_src1_pend_v.g_pend_o)
         m.d.comb += int_src2.ren.eq(g_int_src2_pend_v.g_pend_o)
 
@@ -342,7 +343,7 @@ def scoreboard_sim(dut, alusim):
                 dest = 7
 
             #op = (i+1) % 2
-            op = 0
+            op = i
 
         print ("random %d: %d %d %d %d\n" % (i, op, src1, src2, dest))
         yield from int_instr(dut, alusim, op, src1, src2, dest)