anchor.diff:      // default configuration for MIMO is for guarded enq() and deq().
       // However, the implicit guard only checks for space for 1 element for enq(), and availability of 1 element for deq().
       MIMOConfiguration mimoCfg = defaultValue;
  -   MIFO#(4,busWidthWords,16,Bit#(32)) completionMimo <- mkMIFO();
  -   MIFO#(4,busWidthWords,16,TLPTag) completionTagMimo <- mkMIFO();
  -
  -    MIMO#(busWidthWords,4,16,Bit#(32)) writeDataMimo <- mkMIMO(mimoCfg);
  +    MIMO#(4,busWidthWords,32,Bit#(32)) completionMimo <- mkMIMO(mimoCfg);
  +    MIMO#(4,busWidthWords,32,TLPTag) completionTagMimo <- mkMIMO(mimoCfg);
  +
  +    MIMO#(busWidthWords,4,32,Bit#(32)) writeDataMimo <- mkMIMO(mimoCfg);
       Reg#(Bit#(10)) writeBurstCount <- mkReg(0);
      FIFO#(Bit#(10)) writeBurstCountFifo <- mkFIFO();
       Reg#(TLPLength)  writeDwCount <- mkReg(0); // how many 4 byte (double) words to send
  
positive.code: 	 if (tlp.eof) begin
  	    count = truncate(unpack(wordCountReg));
  	 end
  	 if (completionMimo.enqReady()
  	    && completionTagMimo.enqReady())
  	    begin
  	       wordCount = wordCountReg - extend(pack(count));
  	       completionMimo.enq(count, vec);
  
negative.code: 							   && completionTagMimo.deqReady());
  	      let data_v = completionMimo.first;
  	      let tag_v = completionTagMimo.first;
  	      completionMimo.deq(fromInteger(valueOf(busWidthWords)));
  	      completionTagMimo.deq(fromInteger(valueOf(busWidthWords)));
                Bit#(buswidth) v = 0;
  	      for (Integer i = 0; i < valueOf(busWidthWords); i = i+1)
  		 v[(i+1)*32-1:i*32] = byteSwap(data_v[i]);
  