anchor.diff:  	  hdr_4dw.lastbe = 0;
   	  tlp.data = pack(hdr_4dw);
   
  +	  sendInterrupt = True;
   	  interruptSecondHalf <= True;
          end
   
  +       if (!interruptRequested)
  +	  interruptRequestedReg <= False;
          if (sendInterrupt)
   	  tlpOutFifo.enq(tlp);
       endrule
   
  -//    rule interruptTlpDataOut if (interruptSecondHalf);
  -//       TLPData#(16) tlp = defaultValue;
  -//       tlp.sof = False;
  -//       tlp.eof = True;
  -//       tlp.hit = 7'h00;
  -//       tlp.be = 16'hf000;
  -//       tlp.data[7+8*15:8*12] = byteSwap(interruptDataReg);
  -//       tlpOutFifo.enq(tlp);
  -//       interruptSecondHalf <= False;
  -//       interruptRequestedReg <= False;
  -//    endrule
  +    rule interruptTlpDataOut if (interruptSecondHalf);
  +       TLPData#(16) tlp = defaultValue;
  +       tlp.sof = False;
  +       tlp.eof = True;
  +       tlp.hit = 7'h00;
  +       tlp.be = 16'hf000;
  +       tlp.data[7+8*15:8*12] = byteSwap(interruptDataReg);
  +       tlpOutFifo.enq(tlp);
  +       interruptSecondHalf <= False;
  +       interruptRequestedReg <= False;
  +    endrule
   
       interface Put tlp_in;
           method Action put(TLPData#(16) tlp);
  
positive.code: 		     hitReg <= tlp.hit;
  		     TLPMemoryIO3DWHeader hdr_3dw = unpack(tlp.data);
  		     Vector#(4, Bit#(32)) vec = unpack(0);
  		     if (!tlp.sof) begin
  			for (Integer i = 0; i < 4; i = i+1) begin
  			   if (tlp.be[(i+1)*4-1:i*4] == 4'hf) begin
  			      vec[i] = tlp.data[(i+1)*32-1:i*32];
  			   end
  			end
  			let count = tlpWordCount(tlp);
  			completionMimo.enq(count, vec);
  			completionTagMimo.enq(count, replicate(lastTag));
  		     end
  
negative.code: 	  hdr_3dw.data = byteSwap(interruptDataReg);
  	  tlp.data = pack(hdr_3dw);
  	  tlp.eof = True;
  	  sendInterrupt = True;
  	  interruptRequested = False;
         end
         else begin
  	  TLPMemory4DWHeader hdr_4dw = defaultValue;
  