anchor.diff:      rule txnTimer if (timerReg > 0);
           timerReg <= timerReg - 1;
       endrule
  -
  -//     rule txnTimeout if (busyReg && timerReg == 0);
  -// 	let hdr = readDataFifo.first;
  -// 	//FIXME: assumes only 1 word read per request
  -// 	readDataFifo.deq;
  -
  -// 	TLPCompletionHeader completion = defaultValue;
  -// 	completion.format = MEM_WRITE_3DW_DATA;
  -// 	completion.pkttype = COMPLETION;
  -// 	completion.nosnoop = SNOOPING_REQD;
  -// 	completion.length = 1;
  -// 	completion.cmplid = my_id;
  -// 	completion.tag = truncate(hdr.tag);
  -// 	completion.bytecount = 4;
  -// 	completion.reqid = hdr.reqid;
  -// 	completion.loweraddr = getLowerAddr(hdr.addr, hdr.firstbe);
  -// 	completion.data = byteSwap(32'h0badfeed);
  -// 	TLPData#(16) tlp = defaultValue;
  -// 	tlp.data = pack(completion);
  -// 	tlp.sof = True;
  -// 	tlp.eof = True;
  -// 	tlp.be = 16'hFFFF;
  -// 	tlp.hit = hitReg;
  -// 	tlpOutFifo.enq(tlp);
  -// 	busyReg <= False;
  -//     endrule
   
       rule interruptTlpOut if (interruptRequestedReg // && !interruptSecondHalf
          );
  
positive.code: //    endrule
  
      interface Put tlp_in;
          method Action put(TLPData#(16) tlp) if (!busyReg);
  	    //$display("PortalEngine.put tlp=%h", tlp);
  	    TLPMemoryIO3DWHeader h = unpack(tlp.data);
  	    hitReg <= tlp.hit;
  
negative.code: 	        readHeaderFifo.enq(hdr_3dw);
  	    else
  	        writeHeaderFifo.enq(hdr_3dw);
              timerReg <= truncate(32'hFFFFFFFF);
  	endmethod
      endinterface: tlp_in
  