anchor.diff:     Vector#(numServers, FIFO#(Bool))              outfs <- replicateM(mkSizedFIFO(1));
      Vector#(numServers, FIFOF#(MemengineCmd))    cmds_in <- replicateM(mkSizedFIFOF(1));
      Vector#(numServers, FIFOF#(Bit#(dataWidth)))  write_data_buffs <- replicateM(mkSizedBRAMFIFOF(bufferSizeBeats));
  -   Vector#(numServers, PipeOut#(Bit#(dataWidth))) write_data_output_pipes = map(toPipeOut, write_data_buffs); 
  -   BurstFunnel#(numServers,dataWidth) write_data_funnel <- mkBurstFunnel(bufferSizeBeats);
  -   zipWithM(mkConnection, write_data_output_pipes, write_data_funnel.dataIn);
         
      Reg#(Bit#(8))                    respCnt <- mkReg(0);
      Reg#(Bit#(TAdd#(1,serverIdxSz))) loadIdx <- mkReg(0);
  
positive.code:    for(Integer i = 0; i < valueOf(numServers); i=i+1)
        rs[i] = (interface Server#(MemengineCmd,Bool);
  		  interface Put request;
  		     method Action put(MemengineCmd c) if (outs0[i] < cmd_q_depth);
  			Bit#(32) bsb = fromInteger(bufferSizeBytes);
  `ifdef BSIM	 
  			Bit#(32) dw = fromInteger(valueOf(dataWidthBytes));
  			Bit#(32) bl = extend(c.burstLen);
  			// this is because bsc lifts the divide operation (below) 
  			// and on startup the simulator gets a floating-point exception
  	  		if (bl ==0)
  			   bl = 1;
  			let mdw0 = ((c.len)/bl)*bl != c.len;
  			let mdw1 = ((c.len)/dw)*dw != c.len;
  			let bbl = extend(c.burstLen) > bsb;
  			if(bbl || mdw0 || mdw1 || c.len == 0) begin
  			   if (bbl)
  			      $display("XXXXXXXXXX mkMemwriteEngineBuff::unsupported burstLen %d %d", bsb, c.burstLen);
  			   if (mdw0 || mdw1 || c.len == 0)
  			      $display("XXXXXXXXXX mkMemwriteEngineBuff::unsupported len %h mdw0=%d mdw1=%d", c.len, mdw0, mdw1);
  			end
  			else begin
  `endif
  			   outs0[i] <= outs0[i]+1;
  			   cmds_in[i].enq(c);
  			   write_data_funnel.burstLen[i] <= c.burstLen >> beat_shift;
  			   //$display("(%d) %h %h %h", i, c.base, c.len, c.burstLen);
  `ifdef BSIM
  			end
  `endif
  
negative.code: 	 if (cmd.len < extend(cmd.burstLen))
  	    x = truncate(cmd.len);
  	 loadf_c.enq(tuple2(truncate(loadIdx),cmd));
  	 //write_data_funnel.loadIdx(truncate(loadIdx));
  	 if (cond1) begin
  	    outs1[loadIdx] <= False;
  	 end
  