P34 keeps the P33 RV32IM platform and works on the electrical warnings left after timing closure. The ISA support does not change. The physical implementation does: the CPU run/reset release is registered, the core reset tree is made synchronous, and the LibreLane repair settings are pushed harder at the slow corner and after global routing.
Status: hardened, with a small DRV tail left. LibreLane run
RUN_2026-05-01_14-58-10produced final GDS and passed Magic DRC, KLayout DRC, LVS, antenna, setup timing, and hold timing. Max slew, max cap, and max fanout still report violations.
The Result
Run it:
make -C projects/34_rv32im_drv_cleanup/test clean all
Result: PASS
| check | result |
|---|---|
Build linked rv32im_zicsr runtime ELF | PASS |
| UART-load compiled image | PASS |
Execute C *, /, and % through RV32M | PASS |
Execute mulh, mulhsu, and mulhu | PASS |
| Check divide-by-zero and overflow edge cases | PASS |
MMIO UART writes M, T, E | PASS |
| MMIO timer interrupt visible to C | PASS |
| External interrupt visible to C | PASS |
Halt with x5 = 1 | PASS |
ACT4/Sail rv32i/I: PASS=39 FAIL=0 NOT RUN=0
ACT4/Sail rv32i/M: PASS=8 FAIL=0 NOT RUN=0
Harden Result
LibreLane flow: PASS
| harden check | result |
|---|---|
| Run directory | projects/34_rv32im_drv_cleanup/librelane/runs/RUN_2026-05-01_14-58-10 |
| Final GDS | projects/34_rv32im_drv_cleanup/librelane/runs/RUN_2026-05-01_14-58-10/final/gds/top.gds |
| Metrics | projects/34_rv32im_drv_cleanup/librelane/runs/RUN_2026-05-01_14-58-10/final/metrics.json |
| Magic DRC | PASS (0 errors) |
| KLayout DRC | PASS (0 errors) |
| LVS | PASS (0 errors) |
| Antenna | PASS (0 violations) |
| Setup timing | PASS (0 violations, worst setup slack 7.475 ns) |
| Hold timing | PASS (0 violations, worst hold slack 0.106 ns) |
| Max slew | FAIL (12 violations, all in max_ss_100C_1v60) |
| Max cap | FAIL (3 violations) |
| Max fanout | FAIL (9 violations) |
The comparison to P33 is the point:
| metric | P33 | P34 |
|---|---|---|
| Worst setup slack | 4.031 ns | 7.475 ns |
| Max slew violations | 2241 | 12 |
| Max cap violations | 291 | 3 |
| Max fanout violations | 17 | 9 |
| Standard-cell area | 190613 um^2 | 192919 um^2 |
| Standard-cell count | 25901 | 27147 |
What Changed
The supported instruction set is the same as P33:
| instruction family | status |
|---|---|
| RV32I base integer instructions | PASS in scoped ACT4/Sail rv32i/I |
MUL, MULH, MULHSU, MULHU | PASS in scoped ACT4/Sail rv32i/M |
DIV, DIVU, REM, REMU | PASS in scoped ACT4/Sail rv32i/M |
| Zicsr machine-mode CSR subset | used by the runtime, not full CSR compliance |
The implementation changes are physical-design oriented. The loader now releases
the CPU through a registered cpu_run_q, and the main core reset is synchronous
inside the CPU. The harden config also enables post-global-route design repair,
post-global-route timing repair, stronger slew/cap margins, and 250 um wire
repair.
Scope
This is not a full RISC-V compliance claim. The recorded official-test coverage
is the scoped ACT4/Sail rv32i/I and rv32i/M batches listed above.
Still unsupported: atomics, compressed instructions, supervisor mode, vectored
mtvec, delegation CSRs, satp, an MMU, and official full compliance
packaging.