ASIC Implementations
At the time of writing, Pix2PGP is integrated into four ASICs. Every
port was performed solely by editing the per-ASIC package file
(Pix2PgpAsicPkg.vhd), the ASIC top-level VHDL wrapper, and the
Python decoder parameter classes — no changes to the shared RTL core
or the FPGA receiver were needed. See How to Add Support for a New ASIC for
the step-by-step porting procedure.
The structural parameters below are read directly from the per-ASIC
Pix2PgpAsicPkg.vhd files in the repository. For measured trigger
rates, latencies and bandwidth as a function of occupancy, run the
benchmarking suite against the target’s VCS testbench — see
How to Benchmark Throughput and Latency.
Parameter |
SparkPix-S |
SparkPix-T |
Thriglav |
SparkPix-Sv2 |
|---|---|---|---|---|
Technology |
130 nm |
130 nm |
28 nm |
130 nm |
Matrix Pixel Count |
119808 |
32256 |
10000 |
TBD |
Digital Core Count (lanes) |
8 |
8 |
2 |
TBD |
Column Managers / Core |
24 |
24 |
50 |
TBD |
|
20-bit |
32-bit |
32-bit |
TBD |
Event closure |
Self (EoF) |
External (ERO) |
External (ERO) |
TBD |
Pix2PGP Core Clock |
~186 MHz |
~186 MHz |
~186 MHz |
~186 MHz |
User Logic Clock |
~140 MHz |
~40 MHz |
~20 MHz |
TBD |
Two families of event closure are supported:
Self-closure — the ASIC User Logic determines when to issue the
EoFinternally. Template: SparkPix-SExternal-trigger-closure (ERO) — an End-Of-Readout trigger external to the ASIC closes the event. Template: SparkPix-T
SparkPix-S
SparkPix-S is a sparse-readout X-Ray detector.
Pixel matrix: 312 rows × 384 columns, laid out as 312 × 192 double-columns (adjacent columns share resources). 50 µm pitch, total 119808 pixels
Each pixel collects charge, digitized by a 10-bit ADC
Each double-column shares an analog token circuit and a 10-bit ADC. The digital core sees 192 / 8 = 24 double-columns per Pix2PGP instance
8 Pix2PGP cores per ASIC, each with an integrated PGP4 encoder and a 32-bit serializer
Data word per hit: 20-bit (10-bit ADC value + 10-bit row address)
Internal Pix2PGP data-bus width: 40-bit
Readout Procedure
External trigger (
SRO) arrivesThe User Logic asserts
SoFand injects a token at the bottom of the double-column. A tokFb (token feedback) signal goes to its active state as the token enters the matrixThe token walks up through the rows:
If the pixel has no hit, the token passes to the next row
If the pixel has a hit, the token freezes and the analog side issues a request (
req) to the ADC. After conversion, the ADC issuesack, the token is released, and the User Logic writes a 20-bit data word to Pix2PGP viawrEn(10-bit ADC value + 10-bit row address)
Once the token exits the matrix,
tokFbtransitions back. The User Logic issuesEoFto close the Pix2PGP event
Over-Occupancy is asserted (as an EoF + SoF) if a new SRO
arrives while the token has not fully propagated.
Sources
Package:
gateware/asics/SparkPixS/rtl/Pix2PgpAsicPkg.vhdTop:
gateware/asics/SparkPixS/rtl/Pix2PgpSparkPixSTop.vhdModel:
gateware/asics/SparkPixS/tb/SparkPixSColumnModel.vhdTB:
gateware/asics/SparkPixS/tb/Pix2PgpSparkPixSTopTb.vhdVCS TB target:
firmware/targets/Pix2PgpSparkPixSEmu
Timing Detectors: SparkPix-T and Thriglav
SparkPix-T and Thriglav are timing detector ASICs — Time-to-Digital Converters (TDCs). Both measure Time-Over-Threshold (ToT) as an energy indicator and Time-of-Arrival (ToA) with picosecond-level resolution.
Unlike SparkPix-S, these ASICs do not use a token-injecting
readout. Instead, on SRO reception, each pixel of a column is
granted access to a shared bus tied to the column’s digital converter
and Pix2PGP User Logic. When a pixel records a hit, the measurement
is converted and encoded into a 32-bit word (16-bit ToA + 8-bit ToT
+ 8-bit row address for SparkPix-T; 11-bit ToA + 8-bit ToT + 8-bit
row address + reserved bits for Thriglav) and forwarded to Pix2PGP.
The event does not close on token exit — it stays open
indefinitely until an End-Of-Readout (ERO) trigger external to
the ASIC arrives. This defines an exposure window within which
hits can be recorded. On ERO, the User Logic issues EoF to
Pix2PGP and resets the pixel logic.
Over-Occupancy semantics differ from SparkPix-S: for timing
detectors, Over-Occupancy only closes the current event; a
subsequent conventional SRO opens the next one.
Column Supervisor Pause handling is also different for ASICs featuring ERO. Rather than waiting for every Status FIFO to be non-empty before starting a Pause sequence, the Supervisor enters a short configurable pause-timeout on the first Pause, then reads out only the paused columns.
Timeout watchdog is disabled for ASICs featuring ERO, since event closure is externally-driven.
SparkPix-T
168 rows × 192 columns = 32256 pixels
24 columns per Pix2PGP instance, 8 instances per ASIC
Data word: 32-bit (16-bit ToA + 8-bit ToT + 8-bit row address)
User Logic clock: ~40 MHz
Sources:
gateware/asics/SparkPixT/,firmware/targets/Pix2PgpSparkPixTEmu
Thriglav
100 rows × 100 columns = 10000 pixels
50 columns per Pix2PGP instance, 2 instances per ASIC
Data word: 32-bit (11-bit ToA + 8-bit ToT + 8-bit row address + reserved bits)
User Logic clock: ~20 MHz
Fabricated in 28 nm
Sources:
gateware/asics/Thriglav/,firmware/targets/Pix2PgpThriglavEmu
SparkPix-Sv2
Second-generation SparkPix-S. Structural parameters live in
gateware/asics/SparkPixSv2/rtl/Pix2PgpAsicPkg.vhd. VCS TB target:
firmware/targets/Pix2PgpSparkPixSv2Emu.