"Benchmarks: real designs through the lab"
The lab's standing benchmark set (every design LiveHD publishes results for, plus PicoRV32), each design taken through the lab's normal import, build and V&V checks on the test account; measured results only, with the lab's own limits named where a design does not build yet.
On this page
At a glanceStatus on 31 October 2026 (third pass, 10:40–13:20 UTC)FamiliesRISC-V core (1 design)DINO (3 designs): no Verilog sourceCVA6 (46 blocks) and CORE-ET (122 blocks)Rows recorded by the runner (newest row per design; builds through the Slang reader are marked)CVA6 (1 designs)CORE-ET (1 designs)How the page is refreshedThis page exists so that anyone can check the lab against designs they did not write. The set is the one LiveHD (University of California, Santa Cruz, MASC group; BSD 3-Clause; https://github.com/masc-ucsc/livehd) publishes results for, because their numbers are public and independent of this lab: the three DINO CPUs, the 46-block CVA6 corpus and the 122 CORE-ET blocks of their manifests (commit 403a9e9, 29 October 2026), plus the PicoRV32 the lab already measured. LiveHD's authors do not endorse this lab; their measurements are theirs, and the lab reports only what it measured here.
How a row is made. A script on the lab's own server (bench/bench_livehd.py, run on the test account at the lowest priority, one build at a time, never while a student has a build queued) imports the design through the lab's ordinary Import from GitHub page (the repository's own branch and folder, the design's own top module and clock port), builds it once on SKY130 at the lab's defaults, runs the V&V rows lint, equivalence, DFT, CDC and power-on, reads every number from the lab's results store, and then removes the project's openlane/runs folder (the results store keeps the reports). A failed build is published as failed with its reason. No design is patched; a design that needs a lab change to build is a lab bug, listed below, not a reason to touch the design.
At a glance#
Every chart below is drawn from the lab's own measured runs; hover a bar or a dot to see the run behind it.
Status on 31 October 2026 (third pass, 10:40–13:20 UTC)#
The first night found three lab limits; the second pass fixed them and built the first two blocks through the new Slang build path (on for everyone since 31 October 2026): the chip build is fed Slang's elaboration of the SystemVerilog instead of the files themselves (see Seeds, proof limits, equivalence…).
Third pass (test account with free disk space). Both blocks were measured again with the clock constraint aligned, and the lab now chooses the reader automatically (on for everyone since 31 October 2026): before each chip build the flow's own Yosys is asked whether it can read the files; minion_tlb was refused (minion_pkg.sv:1627: syntax error, quoted in the build log) and built through Slang, the plain MAC-8 reference on all four processes was read and built from its own files. minion_tlb BLD-20261031-0056/0064: PASSED, timing met (10 ns clock on clk_i, setup slack 0.208 ns), DRC/LVS/antenna 0, lint clean, CDC pass (the check reads the kept elaboration), equivalence still REFUTED-unsupported (flip-flops on both clock edges), bring-up fail (an output still X after reset), DFT error (ATPG reported no coverage). CVA6 alu BLD-20261031-0061: built end to end (22,666 cells) but sign-off failed on 5 antenna violations; equivalence PROVEN-full like for like (65 signals), CDC pass (combinational), bring-up pass, lint 26 Verilator warnings. Timing of a combinational block is reported as unconstrained, which is correct.
| # | Lab limit | State |
|---|---|---|
| 1 | Import from GitHub refused a /tree/<commit>/<folder> address | fixed (the commit is fetched on its own; for everyone) |
| 2 | one-folder import; the flow's Yosys 0.46 refuses CORE-ET and CVA6 SystemVerilog | fixed (for everyone): the import asks Slang what is missing and adds the files from the rest of the repository (minion_tlb: 4 files in 2 rounds, 6.5 s); the chip build reads Slang's elaboration (Build through the Slang reader, Chip build settings) |
| 3 | Lint fed files alphabetically | fixed (for everyone): the project's VERILOG_FILES order |
| 4 | the import's header reader skipped module x import pkg::*; #(...) (...), so the clock port stayed the starter's clk | fixed (for everyone) |
| 5 | the import leaves the blank starter's 100 × 100 µm die: a real block fails at placement (521 % and 1,031 % utilization) | fixed (for everyone, afternoon of 31 October): the build itself retries once with the measured die and says so; the runner no longer needs to |
| 6 | the import leaves the starter's constraints/clock.sdc naming clk, so a block whose clock is clk_i is timed against a port it does not have (slack "unconstrained" below) | fixed (for everyone, with limit 4): the import rewrites clock.sdc for the detected clock port; the two rows below were timed at 10 ns |
What the two rows below show. minion_tlb builds end to end through Slang (7,591 cells, DRC 0, LVS 0, antenna 0; lint clean); its equivalence row is REFUTED-unsupported because the design clocks flip-flops on both edges, which the lab's engines do not prove; the CDC row cannot read the package with the flow's old reader (a follow-up: read the Slang elaboration when the build was through Slang); bring-up finds an output still X after reset. CVA6 alu builds through LiveHD's cva6_alu_export wrapper with the cv64a6_imafdc_sv39 configuration after the runner fetched popcount, lzc and cf_math_pkg the elaboration named as missing (22,666 cells, DRC 0, LVS 0) and fails sign-off on 5 antenna violations; its V&V rows did not run because the test account had used its 60 checks of the day. Timing is unconstrained in both for limit 6. DINO is unchanged: no published Verilog (Chisel only; owner's decision).
Fourth pass (night of 31 October). Two results since the tables below were made:
- CVA6
alu, antenna re-run. The build's automatic antenna retry was measured on it: BLD-20261031-0124 failed sign-off on 5 antenna violations only, the lab rebuilt once with the strongest antenna repair (BLD-20261031-0125, 58 min) and sign-off still failed on 4 antenna violations. Equivalence stays PROVEN-full, CDC and power-on pass, lint still fails on 26 warnings and DFT still gives no coverage. The block needs a design-level fix (diode insertion or a larger die with more routing room) that the lab does not make for you. - CORE-ET
minion_tlbon all four processes, built from the Slang elaboration with its module tree kept: SKY130 BLD-20261031-0162, GF180MCU BLD-20261031-0185 (600 µm die), IHP SG13G2 BLD-20261031-0186 and ASAP7 BLD-20261031-0187 all PASSED (DRC, LVS and antenna clean on the three sign-off processes; ASAP7 is the learning flow without sign-off). Its equivalence is REFUTED-unsupported on every process for the same reason as before: the design clocks flip-flops on both edges.
Families#
RISC-V core (1 design)#
| Design | Source | LiveHD | Lab build | Cells / flops | Setup slack | DRC / LVS / antenna | Lint | Equivalence | Chip report |
|---|---|---|---|---|---|---|---|---|---|
| picorv32 | YosysHQ/picorv32 (ISC), the OpenLane 2023 regression copy | B12 emitted (175 state fields) | PASSED BLD-20261031-0002, 23 min | 7,488 / 1,596 | +7.08 ns (slowest corner, 24 ns) | 0 / 0 / 0 | pass (44 informational) | PROVEN-full, 65 s (3,140 flip-flops in the comparison circuit); with Reader = Slang on this Yosys-read build the row leads with a caution (see the verification-depth page) | the benchmark report and the project's V&V tab on the test account |
DINO (3 designs): no Verilog source#
SingleCycleCPU, PipelinedCPU, PipelinedDualIssueCPU (LiveHD: 4.7k, 5.1k and 10.7k nodes).
CVA6 (46 blocks) and CORE-ET (122 blocks)#
First block of each family measured below; the runner goes on through the lists night after night (one build at a time, never while a student build is queued).
Rows recorded by the runner (newest row per design; builds through the Slang reader are marked)#
<!-- generated by bench/bench_livehd.py --table on 2026-10-31 13:16Z -->
CVA6 (1 designs)#
| Design | Source | LiveHD nodes / flops | Lab build | Cells / flops | Setup slack | DRC / LVS / antenna | Lint | Equivalence | DFT | CDC | Power-on | Chip report |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| alu | openhwgroup/cva6 @ 742dc82 (Solderpad Hardware Licence v0.51) | 6597 / 0 | FAILED BLD-20261031-0061 (through the Slang reader); die set to 470x470 after BLD-20261031-0060; constraints/clock.sdc now names the clock port clk_i (it named another port: lab limit 6, the import leaves the starter's clock.sdc); added from the repository at build time: vendor/pulp-platform/common_cells/src/popcount.sv, corev_apu/instr_tracing/rv_tracer-main/rtl/lzc.sv, vendor/pulp-platform/common_cells/src/cf_math_pkg.sv: Build finished but signoff checks did not all pass. | 22666 / – | none to report: the block is pure logic (no flip-flops), so there is no clock path to time | 0 / 0 / 5 | fail: 0 errors, 26 failing warnings (Verilator 5.044 --lint-only - | pass | error: the ATPG did not report a coverage: see the ATPG log kept wi | pass | pass | lhd4-cva6-alu |
CORE-ET (1 designs)#
| Design | Source | LiveHD nodes / flops | Lab build | Cells / flops | Setup slack | DRC / LVS / antenna | Lint | Equivalence | DFT | CDC | Power-on | Chip report |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| minion_tlb | openhwgroup/core-et @ c72b6a2 (Apache-2.0) | 0 / 0 | PASSED BLD-20261031-0056 (through the Slang reader); die set to 350x350 after BLD-20261031-0055; constraints/clock.sdc now names the clock port clk_i (it named another port: lab limit 6, the import leaves the starter's clock.sdc) | 7136 / – | 2.586 ns | 0 / 0 / 0 | pass | error: REFUTED-unsupported: the RTL has flip-flops on both clock ed | error: the ATPG did not report a coverage: see the ATPG log kept wi | pass | fail: gate-level: netlist.synthesis.v of build BLD-20261031-0064 w | lhd4-coreet-minion-tlb |
How the page is refreshed#
sudo python3 -I bench/bench_livehd.py adds rows to bench/livehd-results.jsonl; --table writes the family tables above; the page is rewritten at the end of each benchmark night and the qualification envelope takes its largest clean build from it. Pace: DINO and CVA6 first, then CORE-ET across the following nights (about 20 minutes per build).
Something unclear or missing? Send feedbackSign in and use Feedback to tell us.