anchor.diff:     // stage 1 (latency == 2)
      BRAM_Configure bramConfig = defaultValue;
      bramConfig.latency        = 2;
  -   BRAM2Port#(RegionsIdx, Region)       reg8 <- mkBRAM2Server(bramConfig);
  -   BRAM2Port#(RegionsIdx, Region)       reg4 <- mkBRAM2Server(bramConfig);
  -   BRAM2Port#(RegionsIdx, Region)       reg0 <- mkBRAM2Server(bramConfig);
  +   BRAM2Port#(RegionsIdx, Region)       regall <- mkBRAM2Server(bramConfig);
      Vector#(2,FIFOF#(ReqTup))           reqs0 <- replicateM(mkSizedFIFOF(3));
      
      // stage 2 (latency == 1)
  
positive.code: 	 idxOffsets1[i].enq(idxOffset);
  	 ptrs1[i].enq(req.id);
        endrule
        rule stage4;
  	 let off <- toGet(offs0[i]).get();
  	 let pbase <- toGet(pbases[i]).get();
  	 let idxOffset <- toGet(idxOffsets1[i]).get();
  
negative.code:    // FIXME: split this into three methods?
     interface SGListSetup setup;
     method Action region(Bit#(32) pointer, Bit#(64) barr8, Bit#(32) index8, Bit#(64) barr4, Bit#(32) index4, Bit#(64) barr0, Bit#(32) index0);
        portsel(regall, 0).request.put(BRAMRequest{write:True, responseOnWrite:False,
            address: truncate(pointer), datain: Region{
               reg8: SingleRegion{barrier: truncate(barr8), idxOffset: truncate(index8)},
               reg4: SingleRegion{barrier: truncate(barr4), idxOffset: truncate(index4)},
               reg0: SingleRegion{barrier: truncate(barr0), idxOffset: truncate(index0)}} });
        //$display("region pointer=%d off8=%h off4=%h off0=%h", pointer, off8, off4, off0);
        configRespFifo.enq(truncate(pointer));
     endmethod
  