anchor.diff:        if (sendit) begin
   	 tlpWriteHeaderFifo.deq();
   	 tlpOutFifo.enq(tlp);
  -	 writeHeaderSent <= True;
  +	 $display("writeHeaderTlp dwCount=%d", dwCount);
  +	 writeDwCount <= dwCount;
         end
      endrule
   
  -   rule writeTlps if (writeDwCount > 0 && writeHeaderSent);
  +   rule writeTlps if (writeDwCount > 0);
         TLPData#(16) tlp = defaultValue;
         tlp.sof = False;
         Vector#(4, Bit#(32)) v = unpack(0);
  
positive.code: 		 hdr_3dw.length = tlplen;
  		 hdr_3dw.firstbe = 4'hf;
  		 hdr_3dw.lastbe = 4'hf;
  		 
  		 // this would cause a deadlock
  		 //Vector#(busWidthWords, Bit#(32)) v = writeDataMimo.deq(1);
  		 //hdr_3dw.data = v[0];
  		 //dwCount = dwCount - 1;
  
  		 tlp.be = 16'hfff0; // no data word in this TLP
  
  		 tlp.data = pack(hdr_3dw);
  	      end
  	      tlpOutFifo.enq(tlp);
  	      writeBurstCount <= zeroExtend(burstLen)+1;
  	      writeDwCount <= dwCount;
  	      writeTag <= truncate(awid);
             endmethod: writeAddr
  	   method Action writeData(Bit#(busWidth) data, Bit#(busWidthBytes) byteEnable, Bit#(1) last, Bit#(idWidth) wid)
  
negative.code:     MIMO#(busWidthWords,4,8,Bit#(32)) writeDataMimo <- mkMIMO(mimoCfg);
      Reg#(TLPTag) lastTag <- mkReg(0);
      Reg#(Bit#(9)) writeBurstCount <- mkReg(0);
      Reg#(TLPLength)  writeDwCount <- mkReg(0);
      Reg#(TLPTag) writeTag <- mkReg(0);
  
      function Integer tlpWordCount(TLPData#(16) tlp);
         if (tlp.be == 16'h0000)
  