anchor.diff:     Wire#(Bool) writeHeaderTlpWire <- mkDWire(False);
      Wire#(Bool) writeDataMimoEnqWire <- mkDWire(False);
   
  -   Reg#(Bool) writeDataCntAboveThreshold <- mkReg(False);
      Reg#(Bool) writeDataMimoHasRoom <- mkReg(False);
      rule updateWriteDataMimoHasRoom;
         writeDataMimoHasRoom <= (writeDataCnt.read <= fromInteger(valueOf(WriteDataMimoSize) - valueOf(busWidthWords)));
      endrule
  -   rule noheader if (!tlpWriteHeaderFifo.notEmpty());
  -      writeDataCntAboveThreshold <= False;
  -   endrule
  -   rule updateWriteDataCntAboveThreshold if (writeInProgress || !writeDataCntAboveThreshold);
  -      writeDataCntAboveThreshold <= (writeDataCnt.read >= truncate(unpack(tlpWriteHeaderFifo.first.dwCount)));
  -   endrule
  -   (* descending_urgency = "writeHeaderTlp,updateWriteDataCntAboveThreshold" *)
  -   rule writeHeaderTlp if (!writeInProgress && writeDataCntAboveThreshold);
  +   // guard: (writeDataCnt.read >= truncate(unpack(tlpWriteHeaderFifo.first.dwCount)))
  +   rule writeHeaderTlp if (!writeInProgress);
         // update for next cycle
  -      writeDataCntAboveThreshold <= (writeDataCnt.read >= truncate(unpack(tlpWriteHeaderFifo.first.dwCount)));
  +      let ready <- toGet(writeReadyFifo).get();
   
         writeHeaderTlpWire <= True;
         let info <- toGet(tlpWriteHeaderFifo).get();
  
positive.code: 	    if (burstLen == 0) begin
  	       burstLen <- toGet(writeBurstCountFifo).get();
  	    end
  	    writeBurstCount <= extend(burstLen-1);
  
  	    Vector#(busWidthWords, Bit#(32)) v = unpack(wdata.data);
  	    writeDataMimo.enq(fromInteger(valueOf(busWidthWords)), v);
              writeDataCnt.increment(fromInteger(valueOf(busWidthWords)));
  	    writeDataMimoEnqWire <= True;
  
negative.code:       end
  
        tlpOutFifo.enq(tlp);
        writeDwCount <= dwCount;
        tlpDwCount <= truncate(min(fromInteger(valueOf(TlpDataWords)),unpack(dwCount)));
        lastTlp <= (dwCount <= fromInteger(valueOf(TlpDataWords)));
  