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:       end
        else begin
  	  // board identification
  	  if (oneHotDecode[0]) data = 32'h65756c42; // Blue
  	  if (oneHotDecode[1]) data = 32'h63657073; // spec
  
  	  if (oneHotDecode[774]) data = fromInteger(2**valueOf(TAdd#(TlpTraceAddrSize,1)));
  	  if (oneHotDecode[775]) data = (tlpdata.tlpTracing ? 1 : 0);
  	  if (oneHotDecode[776]) data = tlpTraceBramResponseSlice(pcieTraceBramResponse, 0);
  	  if (oneHotDecode[777]) data = tlpTraceBramResponseSlice(pcieTraceBramResponse, 1);
  	  if (oneHotDecode[778]) data = tlpTraceBramResponseSlice(pcieTraceBramResponse, 2);
  	  if (oneHotDecode[779]) data = tlpTraceBramResponseSlice(pcieTraceBramResponse, 3);
  	  if (oneHotDecode[780]) data = tlpTraceBramResponseSlice(pcieTraceBramResponse, 4);
  	  if (oneHotDecode[781]) data = tlpTraceBramResponseSlice(pcieTraceBramResponse, 5);
  	  if (oneHotDecode[792]) data = extend(tlpdata.pcieTraceBramWrAddr);
  	  if (oneHotDecode[794]) data = extend(tlpdata.tlpTraceLimit);
  
           //******************************** msix_base has to match CONFIG.MXIx_PBA_Offset in scripts/connectal-synth-pcie.tcl
  	  // 4-bit MSIx pending bit field
  	  if (oneHotDecode[992]) data = '0;                               // PBA structure (low)
  	  if (oneHotDecode[993]) data = '0;                               // PBA structure (high)
  	  //******************************** end of PBA Table
        end
        readResponseFifo.enq(MemData { data: data, tag: beat.tag, last: beat.last });
  
negative.code:       let modaddr = (addr % 8192);
        let msix_base = `msix_base;
        let msixaddr = modaddr - msix_base;
        let oneHotDecode000 <- toGet(csrOneHotFifo000).get();
        let oneHotDecode774 <- toGet(csrOneHotFifo774).get();
        let oneHotDecode992 <- toGet(csrOneHotFifo992).get();
  
        if (isMsixAddr) begin
           begin
  