How to Decode Pix2PGP Data with the Parser
The software/scripts/axiDataParser.py script decodes AXI-Stream data
generated by the VHDL testbenches. It expects a text file containing the
AXI-Stream in hexadecimal format — one byte per line — which is the format
produced by the VCS testbenches described in How to Simulate Using VCS.
Usage
$ cd pix2pgp/software/scripts
$ python axiDataParser.py \
--asicType SparkPixS \
--verbose \
--input <path/to/testbench_dump.txt>
--asicType— selects the ASIC-specific decoder class (must match one of the entries inasicTypeDict:SparkPixS,SparkPixT,Thriglav,SparkPixSv2, or the user’s own custom ASIC)--verbose— enables per-event printouts--rawData— decode raw data words without unpacking them into ADC / row / ToA / ToT (useful when developing a new ASIC integration)
Under the Hood
The parser is a thin wrapper around the AsicData class exported by the
pix2pgp Python package. The class hierarchy is:
AsicParameters— per-ASIC constants (numOfLanes,numOfCols,wordLen)Pix2PgpHeaderFormat— decodes the ASIC lane frame headerPix2PgpColMetadataFormat— decodes the per-column metadata wordSparseDataFormat— decodes individual hit words (ADC / row / ToA / ToT depending on the ASIC)Pix2PgpFpgaRxDataFormat— decodes the consolidated FPGA-side frame (preamble, header, per-lane lengths, trailer)LaneData/AsicData— event containers
All classes are defined under firmware/python/pix2pgp/.