PRBS Utilities
For link validation with deterministic pseudo-random traffic, Rogue provides a
PRBS family with both tree-managed pyrogue.utilities.prbs wrappers and the
direct rogue.utilities.Prbs endpoint for smaller script-only tests.
PRBS implementations also exist in FPGA and VHDL designs, so Rogue PRBS endpoints are commonly used to send traffic into firmware checkers or to verify traffic generated by firmware sources.
How PRBS Fits In A Stream Graph
Rogue PRBS support is implemented as stream endpoints, so it can be inserted directly into existing stream topologies for test and validation:
Generator role: emits deterministic frames into a transport or processing path.
Checker role: receives frames and reports mismatch/error counters.
Combined loopback role: connects TX and RX paths end-to-end to verify full data flow.
Because patterns are deterministic, PRBS tests are useful both for first bring-up and for recurring regression checks where repeatability matters.
Direct Endpoints And Tree-Managed Devices
Two Python forms are common:
rogue.utilities.Prbs: lightweight direct stream endpoint for scripts and non-tree tests.pyrogue.utilities.prbswrappers (PrbsTx,PrbsRx,PrbsPair): tree-managed integration with Variables/Commands for GUI and runtime control.
Common controls/counters exposed by the implementation include width/taps selection, transmit period, payload generation/check enable, and frame/error counters.
PrbsPair is a convenience wrapper that keeps both transmit and receive
control under one node for loopback tests and end-to-end validation.
The direct Rogue endpoint is the simpler fit when a test script just needs to generate or check traffic inside a stream graph. The PyRogue wrappers are the better fit when operators, GUIs, or client code need tree-visible counters and controls.
Typical Validation Workflow
Generate PRBS frames at the source side.
Route traffic through the transport/path under test.
Check receive counters and error counters at the sink side.
Tune width/taps/period when matching target link characteristics.
C++ API details for PRBS utilities are documented in rogue::utilities::prbs.
Typical patterns are:
Generate PRBS frames and capture them to file.
Replay file data into a PRBS checker.
Use the PyRogue
PrbsTx/PrbsRxwrappers for GUI-visible control and counters.Use
PrbsPairwhen one tree node should own both directions of a software loopback or end-to-end smoke test.Validate software-to-firmware and firmware-to-software PRBS links during FPGA bring-up.
Logging
The core rogue.utilities.Prbs implementation uses Rogue C++ logging with
two static logger names:
pyrogue.prbs.txpyrogue.prbs.rx
Enable them before constructing the PRBS object:
import rogue
import rogue.utilities as ru
rogue.Logging.setFilter('pyrogue.prbs', rogue.Logging.Debug)
prbs = ru.Prbs()
The PyRogue wrappers also have their own Python loggers, but the transport/data path debug output from the underlying PRBS generator/checker comes from the C++ logger names above.
Subtopics
Generating PRBS Frames Starts from
pyrogue.utilities.prbs.PrbsTx, then shows the matching directrogue.utilities.Prbstransmit form.Receiving PRBS Frames Starts from
pyrogue.utilities.prbs.PrbsRxandPrbsPair, then shows the matching directrogue.utilities.Prbsreceive form.