adjust ships to use fill/drain/full/empty macros
[fleet.git] / ships / Rotator.ship
index 0049ab8..e3d7208 100644 (file)
@@ -36,6 +36,9 @@ public void service() {
   reg [(`DATAWIDTH):0] out_d;
   assign out_d_ = out_d;
 
+  reg full;
+  initial full = 0;
+
   reg [5:0] shamt;
   initial shamt = 0;
 
@@ -45,22 +48,23 @@ public void service() {
   always @(posedge clk) begin
     if (!rst) begin
       `reset
+      full <= 0;
     end else begin
       `flush
-      if (!in_r_       && in_a && !inAmount_r)       in_a        <= 0;
-      if (!inAmount_r_ && inAmount_a) inAmount_a  <= 0;
-      if (out_r        && out_a)      out_r       <= 0;
-      if (in_r && !in_a && inAmount_r && !inAmount_a && !out_r && !out_a) begin
-        in_a  <= 1;
-        out_d <= { 1'b0, in_d };
-        shamt <= 0;
-      end else if (in_a && inAmount_r && !inAmount_a && !out_r && !out_a) begin
-        if (!shamt_eq) begin
-           out_d <= { out_d[0], out_d[0], out_d[`DATAWIDTH-1:1] };
-           shamt <= shamt+1;
+      `cleanup
+      if (`in_full && `inAmount_full && `out_empty) begin
+        if (!full) begin
+          out_d <= { 1'b0, in_d };
+          shamt <= 0;
+          full  <= 1;
+        end else if (!shamt_eq) begin
+          out_d <= { out_d[0], out_d[0], out_d[`DATAWIDTH-1:1] };
+          shamt <= shamt+1;
         end else begin
-           inAmount_a <= 1;
-           out_r <= 1;
+          `drain_in
+          `drain_inAmount
+          `fill_out
+          full <= 0;
         end
       end
     end