Debugging FPGA-based packet processing systems through transaction-level communication-centric monitoring