SOCVP SERIES · PART 03

The Catalogue Runs

A portfolio page lists parts. This catalogue has 76 WIOWIZ entries and 26 of them execute firmware and check a result on the spot, protocols included. The rest carry evidence and say what they are, instead of posing as something you can run.
WIOWIZ Technologies • August 2026 • 6 min read

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.

The socvp catalogue listing WIOWIZ IP by category with execution tiers per entry.
The catalogue by category. The bracketed tier on every row states how far that entry can be taken in the shipped package.

76 entries, 26 you can run now

bin/socvp catalog
$ 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-end

Twenty-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 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
$ 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
$ 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
$ 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
$ 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:

EXECUTE NOWShips as a portable functional model with firmware. Runs and checks a result in the package. 26 entries.
NATIVE EVIDENCEProven on a native RTL run whose engine or sources do not ship. The entry shows the preserved result and its limits, not a fake Run.
ANALOG EVIDENCEBacked by a preserved circuit-simulation result, kept separate from digital execution so the two are never confused.
The ruleA tag can only move up when an oracle earns it. A name in the list never renders as something you can execute when you cannot.

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.

Download socvp on wiowiz.ai →

The socvp download on wiowiz.ai: the Docker bundle with docker build instructions and a Download button.
The socvp download on wiowiz.ai/socvp.html — the Docker bundle, its build commands, and the download button.

 

#socvp #virtual-platform #RISC-V #SoC #zero-EDA #verification

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