anchor.diff:  
         csrRagBeatFifo.enq(beat);
         csrIsMsixAddrFifo.enq(msixaddr >= 0 && msixaddr <= 63);
  -      function Bool addrDecode(Integer i); return addr[9:0] == fromInteger(i); endfunction
  -      csrOneHotFifo.enq(genWith(addrDecode));
  +      Bit#(1024) onehot = (1 << addr[9:0]);
  +      csrOneHotFifo000.enq(onehot[1:0]);
  +      csrOneHotFifo774.enq(onehot[794:774]);
  +      csrOneHotFifo992.enq(onehot[993:992]);
      endrule
      rule readDataRule2;
         let beat       <- toGet(csrRagBeatFifo).get();
  
positive.code:       let modaddr = (addr % 8192);
        let msix_base = `msix_base;
        let msixaddr = modaddr - msix_base;
        let oneHotDecode <- toGet(csrOneHotFifo).get();
  
        if (isMsixAddr) begin
           begin
  
negative.code:             endcase
           end
        else begin
  	 if (oneHotDecode768[775-768] == 1) tlpdata.tlpTracing <= (dword != 0) ? True : False;
  	 if (oneHotDecode768[768-768] == 1)
  	     bramRequestFifo.enq(BRAMRequest{ write: False, responseOnWrite: False, address: truncate(dword), datain: ?});
  	 if (oneHotDecode792[792-792] == 1) tlpdata.pcieTraceBramWrAddr <= truncate(dword);
  	 if (oneHotDecode792[794-792] == 1) tlpdata.tlpTraceLimit <= truncate(dword);
        end
        if (beat.last)
  	 writeDoneFifo.enq(beat.tag);
  