remove use of uart_rts and uart_cts in ships/Debug, and overhaul it
[fleet.git] / ships / CarrySaveAdder.ship
index 7bbb9e7..edef42d 100644 (file)
@@ -22,17 +22,17 @@ public void service() {
 
 == FPGA ==============================================================
 
-  reg [(`DATAWIDTH-1):0] temp;
-  reg [(`DATAWIDTH):0]   out_d;
+  reg [(`WORDWIDTH-1):0] temp;
+  reg [(`WORDWIDTH):0]   out_d;
   reg [1:0] state;
   initial state = 0;
   assign out_d_ = out_d;
 
-  wire [(`DATAWIDTH-1):0] majority;
-  wire [(`DATAWIDTH-1):0] xors;
+  wire [(`WORDWIDTH-1):0] majority;
+  wire [(`WORDWIDTH-1):0] xors;
   genvar i;
   generate
-    for(i=0; i<`DATAWIDTH; i=i+1) begin : OUT
+    for(i=0; i<`WORDWIDTH; i=i+1) begin : OUT
       assign majority[i] = (temp[i] & out_d[i]) | (in_d[i] & out_d[i]) | (temp[i] & in_d[i]);
       assign xors[i]     = temp[i] ^ out_d[i] ^ in_d[i];
     end
@@ -43,30 +43,29 @@ public void service() {
       `reset
       state <= 0;
     end else begin
-      if (!in_r        && in_a)       in_a        <= 0;
-      if (out_r        && out_a)      out_r       <= 0;
-      if (!out_r && !out_a && state==3) begin
+      `flush
+      `cleanup
+      if (`out_empty && state==3) begin
         out_d <= { 1'b0, temp };
-        out_r <= 1;
+        `fill_out
         state <= state + 1;
-      end else if (in_r && !in_a && !out_r && !out_a) begin
+      end else if (`in_full && `out_empty) begin
         if (state == 0) begin
           out_d <= { 1'b0, in_d };
         end else if (state == 1) begin
           temp <= in_d;
         end else if (state == 2) begin
-          out_d <= { majority[`DATAWIDTH-1:0], 1'b0 };
+          out_d <= { majority[`WORDWIDTH-1:0], 1'b0 };
           temp  <= xors;
-          out_r <= 1;
+          `fill_out
         end
         state <= state + 1;
-        in_a  <= 1;
+        `drain_in
       end
     end
   end
 
 == Test ==============================================================
-
 // expected output
 #expect 0x3c4bc6
 #expect 0x1796d2