anchor.diff:     interface Put inp = toPut(fifo_inp);
      interface Get oup = toGet(fifo_out);
   endmodule
  +
  +
  +(* synthesize *)
  +module mkSatd8x2(ISatd8x2);
  +   ISatd8   satd0    <- mkSatd8;
  +   ISatd8   satd1    <- mkSatd8;
  +
  +   interface Put inp = interface Put;
  +                          method Action put(Vector#(16, Bit#(9)) x);
  +                             Vector#(2, Vector#(8, Bit#(9))) y = unpack(pack(x));
  +                             satd0.inp.put(y[0]);
  +                             satd1.inp.put(y[1]);
  +                          endmethod
  +                       endinterface;
  +   
  +   interface Get oup = interface Get;
  +                          method ActionValue#(Vector#(2, Bit#(19))) get();
  +                             let x0 <- satd0.oup.get();
  +                             let x1 <- satd1.oup.get();
  +                             Vector#(2, Bit#(19)) y = unpack({x0, x1});
  +                             return y;
  +                          endmethod
  +                       endinterface;
  +endmodule
  
positive.code:          sum = sum + zExtend(pack(abs(v)));
        end
  
        fifo_out.enq(sum);
     endrule
  
     rule do_1d(fifo_inp.notEmpty());
  
negative.code: 
  interface ISatd8;
     interface Put#(Vector#(8, Bit#(9))) inp;
     interface Get#(Bit#(19)) oup;
  endinterface
  
  interface ISatd8x2;
     interface Put#(Vector#(16, Bit#(9))) inp;
     interface Get#(Vector#(2, Bit#(19))) oup;
  endinterface
  
  function Vector#(8, Bit#(na)) satd_1d(Vector#(8, Bit#(n)) x)
  