anchor.diff:  	    else begin
   	       respCnt <= new_respCnt;
   	    end
  -	    match {._idx, .wd} <- toGet(write_data_funnel.dataOut).get;
  -	    if(_idx != idx) begin
  -	       $display("ERROR mkMemwriteEngineBuf: bursts oo %d %d", idx, _idx);
  -	       $finish;
  -	    end
  +	    let wd <- toGet(write_data_buffs[idx]).get();
   	    // TODO: this last field should be set correctly to mark the end of bursts
   	    return MemData{data:wd, tag:new_tag, last:False};
   	 endmethod
  
positive.code:    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);
  
negative.code:    for(Integer i = 0; i < valueOf(numServers); i=i+1)
        rs[i] = (interface Server#(MemengineCmd,Bool);
  		  interface Put request;
  		     method Action put(MemengineCmd cmd) if (outs0[i] < cmd_q_depth);
  			Bit#(32) bsb = fromInteger(bufferSizeBytes);
  `ifdef BSIM	 
  			Bit#(32) dw = fromInteger(valueOf(dataWidthBytes));
  			Bit#(32) bl = extend(cmd.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 = ((cmd.len)/bl)*bl != cmd.len;
  			let mdw1 = ((cmd.len)/dw)*dw != cmd.len;
  			let bbl = extend(cmd.burstLen) > bsb;
  			if(bbl || mdw0 || mdw1 || cmd.len == 0) begin
  			   if (bbl)
  			      $display("XXXXXXXXXX mkMemwriteEngineBuff::unsupported burstLen %d %d", bsb, cmd.burstLen);
  			   if (mdw0 || mdw1 || cmd.len == 0)
  			      $display("XXXXXXXXXX mkMemwriteEngineBuff::unsupported len %h mdw0=%d mdw1=%d", cmd.len, mdw0, mdw1);
  			end
  			else begin
  `endif
  			   outs0[i] <= outs0[i]+1;
  			   cmds_in[i].enq(cmd);
  			   //$display("(%d) %h %h %h", i, cmd.base, cmd.len, cmd.burstLen);
  `ifdef BSIM
  			end
  `endif
  