Replying to an earlier post

@whitequark Yep, sounds like a plan.

If you want to follow along and look at the WIP, the debug IPs are at github.com/azonenberg/antikern and the SCPI bridge server is at github.com/ngscopeclient/scope

FPGA IP cores for the Antikernel OS, intended to be included as a submodule in SoC integrations - azonenberg/antikernel-ipcoresGitHubantikernel-ipcores/debug at master · azonenberg/antikernel-ipcoresFPGA IP cores for the Antikernel OS, intended to be included as a submodule in SoC integrations - azonenberg/antikernel-ipcores

Replying to an earlier post

@whitequark So, the clock period in ps is exposed as a queryable register to make the timebase look proper host side.

All of the ILA blocks will have trigger in/out signals, I've already done a demo of cross triggering an external analog scope and decoding the same 8b10b stream both inside the FPGA and from the analog waveform.

You'll need to provided CDC for the trigger pulses yourself, but that should be straightforward to do in a code generation framework (or manually in SV like I do).

ngscopeclient has a concept of "trigger groups". By default, each scope or scope-like instrument is its own trigger group, meaning they're asynchronous to each other and you can either batch arm/stop them all at once, or individually start/stop/single trigger just one.

To set up a cross-trigger simply open the manage-instruments dialog and drag one of the scopes onto another one. This creates a new trigger group with the drag destination as the primary (trigger source) and the scope you're dragging as the first secondary. You can add arbitrarily many secondaries to a trigger group.

When the trigger group is armed, an arm signal is sent to each secondary scope, ngscopeclient waits for the secondaries to all report they're ready to capture, then the primary is armed and they all trigger in lock-step.

Replying to @azonenberg@ioc.exchange

@whitequark When you adjust the trigger position of a secondary scope in a trigger group, it time-shifts the window of the secondary relative to the trigger pulse, but does not shift the alignment between the two scopes. To align the two scopes, you can either manually type a skew value into the skew column of the trigger group table, or use the auto-deskew wizard (which currently only supports analog scopes for both primary and secondary) to cross-correlate a PRBS sampled by both scopes and measure the cross-trigger delay automatically.

Jul 4, 2026, 20:58 UTCen