The fastest way to oversell an IP portfolio is a grid of logos where every box looks equal. The fastest way to lose an engineer's trust is for one of those boxes to do nothing when clicked. This catalogue is built to avoid both: the entry either runs in front of you, or it tells you plainly why it does not and shows what has been proven elsewhere.
76 entries, 26 you can run now
$ bin/socvp catalog
socvp catalog (76 assets)
Processors (3)
[x] cpu [EXECUTE NOW ] RV32 control core
...
Compute (10)
[x] cnn0 [EXECUTE NOW ] CNN accelerator
[ ] isp0 [NATIVE EVIDENCE] Camera ISP pipeline
High-Speed (7)
[x] pcie0 [EXECUTE NOW ] PCIe endpoint
[x] uec0 [EXECUTE NOW ] Networking DPU
[ ] uphy-analog0 [ANALOG EVIDENCE] SerDes PHY analog front-endTwenty-six entries carry an EXECUTE NOW tag: three processors, nine compute engines, memory, four high-speed protocol endpoints and nine system blocks. Each has firmware that programs it, runs an operation and checks the outcome, all of them with nothing installed on your side. The other fifty carry a different tag, and the tag is what keeps the list from overstating itself, covered below.
Evaluate is not a datasheet
Every runnable entry has one command that exercises it and one that states its evidence:
$ bin/socvp show cnn0 # the capability card: method, result, limits $ bin/socvp evaluate cnn0 # program the block, run it, check the answer
An evaluation is not a specification excerpt. It writes the block's registers, starts an operation and compares the result against a reference. The AI Edge system in chapter one is several of these evaluations wired into one datapath; here each block answers for itself.
A protocol that loses a packet and recovers
Protocol entries are where a catalogue usually retreats to reading configuration registers. The networking DPU does the opposite. It boots firmware that builds a descriptor, runs a DMA transfer, then drives the reliable-delivery path through loss and replay:
$ bin/socvp boot dpu dpu uec loopback 0x40 bytes done_count=1 tx=1 rx=1 dpu uec loopback 64B src==dst: PASS uec llr: 3 frames sent seq 0..2: PASS uec llr: NACK seq1 -> payload-exact hardware replay (retry_count=1): PASS uec llr: ACK advances window, base=2: PASS uec llr: window-full refusal at depth: PASS WIOWIZ-VP dpu: PASS [VP] instructions: 5421
Read that middle block as one story. Three frames go out as sequence 0, 1, 2. Sequence 1 is negatively acknowledged, and the link replays the exact stored payload rather than a fresh guess, with the retry counted. An acknowledgement then advances the window base to 2, and when the window is full the sender refuses to admit more rather than overrunning. That is a reliable-delivery protocol behaving correctly under failure, checked in 5,421 instructions, not a register read dressed up as a link.
PCIe, CXL and UALink, each trained then stressed
The networking DPU is not the only protocol that runs. Three high-speed links train their state machines, carry a transaction, then get pushed through a failure so the recovery path shows, not just a clean pass. Each is one command, and each ends by stating the part it does not model.
PCIe walks its link-training state machine from power-on to active, re-enters recovery, and answers configuration only after the link is up:
$ bin/socvp evaluate pcie0 pcie power-on LTSSM DETECT_QUIET link_up=0: PASS config access refused before link_up: PASS pcie link trained DETECT->POLLING->CONFIG->L0 + recovery re-entry (14 transitions): PASS training error injected: diverted through recovery to L0: PASS vendor=0x1de5 device=0x0200: PASS
Configuration is refused until link-up, an injected training error is diverted through recovery back to L0, and the endpoint identity reads back only then. What it is not: 14 of the reference machine's 31 LTSSM states run here (the Gen1 x1 training and same-speed-recovery path); there is no PHY, no electrical layer and no timing, and the sequence is checked against the pinned WIOWIZ reference by a separate factory gate, not by this run.
CXL trains through FlexBus and flit negotiation, checks a flit, breaks one, and recovers it:
$ bin/socvp evaluate cxl0 cxl link trained DETECT->...->FLEXBUS_NEG->FLIT_NEG->L0 (10-stage golden walk): PASS cxl flexbus negotiated cxl-mode, flit 68B: PASS cxl 68B flit crc round-trip: PASS cxl crc error-inject -> retry replay recovered delivery: PASS cxl mesi I->S->E->M snoop-forward: PASS
A 68-byte flit makes a clean CRC round-trip, an injected CRC error is recovered by replay, and a device-side cacheline walks I to S to E to M. What it is not: the 256-byte flit data path and host-side coherence (bias flip, back-invalidation) are not modeled, and CXL.mem rides bus transactions after link-up rather than the modeled flit path.
UALink trains to ACTIVE, then runs credited request and completion traffic with the guards armed:
$ bin/socvp evaluate ualink0 ualink link trained RESET->DETECT->POLLING->CONFIG->ACTIVE (4 transitions): PASS ualink 4-vc credits init 15 consume-on-request return-on-completion: PASS ualink write+read req/cpl tag match, data round-trip: PASS ualink dropped completion tripped the timeout window: PASS ualink credit-violation inject: both guards fired, pool clamped at max 16: PASS
Four virtual-channel credit pools consume on request and return on completion, a write and a read match tags and round-trip their data, a dropped completion trips the timeout, and a credit violation is clamped at the pool maximum. What it is not, and this one matters most: the claim basis is the WIOWIZ VIP protocol model, sha-pinned, not the production RTL. The production link-training state machine has not been driven to its trained state here; that qualification is a separate track. There is no PHY, no wire-level flit encoding, and one outstanding request at a time.
Tiers, so a name never poses as a run
Fifty of the seventy-six entries do not carry a Run button, and that is deliberate. An entry runs in the package only if its functional model and firmware ship inside it. When the proof lives on a native RTL engine or on design files that stay outside the customer package, the entry is tagged for what it actually is:
This is the part of the catalogue that took the most discipline to keep straight, and it is the reason the 26 that do run can be quoted without an asterisk. An evaluator can read a card, run what runs, and see exactly where the boundary sits, before any source delivery or EDA setup enters the conversation.
Download socvp
socvp is available now. It ships as a Docker bundle from the WIOWIZ website — download it, build the image, and run the boots in this article.
Our Approach
We're building systems that think about specifications the way engineers do.
We build our own in-house EDA with an intelligence layer across it. Our stack covers the full flow,
from spec to comprehensive sign-off, on tools we build and control.
Walk-in ones, walk-in zeros