anchor.diff:  endinterface
   
   (* synthesize *)
  -module mkIPDriver(InnerProdDriver);
  +module mkConvDriver(ConvDriver);
      let clock <- exposeCurrentClock();
      let reset <- exposeCurrentReset();
      FIFOF#(BRAMRequest#(Bit#(LineBufferAddrSize),Int#(16))) lineBufferRequestFifo <- mkFIFOF();
  
positive.code: // TLog#(kernelheight * rowlenbytes)
  typedef 11 LineBufferAddrSize;
  
  interface InnerProdDriver;
     interface Reg#(SGLId)                 readPointer;
     interface Reg#(SGLId)                 writePointer;
     interface Put#(IteratorConfig#(Bit#(16))) rowRequest;
  
negative.code:    mkConnection(toPipeOut(inputFifo), rp.inPipe, clocked_by derivedClock, reset_by derivedReset);
     mkConnection(op.outPipe, toPipeIn(bramFifo), clocked_by derivedClock, reset_by derivedReset);
  
     let ipDriver <- mkConvDriver();
     mkConnection(ipDriver.lineBufferReadClient, lineBuffer.portB);
     mkConnection(ipDriver.lineBufferWriteClient, lineBuffer.portA);
     mkConnection(ipDriver.innerProdRequest, toPipeIn(inputFifo));
  