fix firing conditions on Alu.ship
authorAdam Megacz <adam@megacz.com>
Sat, 22 Aug 2009 21:24:19 +0000 (14:24 -0700)
committerAdam Megacz <adam@megacz.com>
Sat, 22 Aug 2009 21:24:19 +0000 (14:24 -0700)
ships/Alu.ship

index ddd3a4e..67effe4 100644 (file)
@@ -200,6 +200,14 @@ public void service() {
           (inOp_d_trunc==12) ? (in1_d ^ in2_d) :
           0;
 
+  wire firing_condition;
+  assign firing_condition =
+          (inOp_d_trunc==0) ? `in1_full  :
+          (inOp_d_trunc==1) ? `in2_full  :
+          (inOp_d_trunc==7) ? `in1_full  :
+          (inOp_d_trunc==8) ? `in2_full  :
+          ((`in1_full) && (`in2_full));
+
   always @(posedge clk) begin
     if (rst) begin
       `reset
@@ -211,6 +219,8 @@ public void service() {
         out_draining <= 0;
         if      (inOp_d_trunc==0) `drain_in1
         else if (inOp_d_trunc==1) `drain_in2
+        else if (inOp_d_trunc==7) `drain_in1
+        else if (inOp_d_trunc==8) `drain_in2
         else if (inOp_d_trunc==9 &&  both_negative) begin `drain_in1 `drain_in2 end
         else if (inOp_d_trunc==4 &&  greater) `drain_in1
         else if (inOp_d_trunc==5 &&  greater) `drain_in2
@@ -223,8 +233,8 @@ public void service() {
           `drain_in2
         end
       end
-      if (!out_draining && `out_empty && `in1_full && `in2_full && `inOp_full) begin
-        `fill_out
+      if (!out_draining && `out_empty && firing_condition && `inOp_full) begin
+        if (inOp_d_trunc!=7 && inOp_d_trunc!=8) `fill_out
         out_draining <= 1;
       end
     end