This project demonstrates the end-to-end VLSI design flow of a RISC-V core (PicoRV32) using Cadence EDA tools and the open-source Skywater 130nm PDK.
The flow covers:
- RTL β Gate-level synthesis
- Floorplanning β Placement β CTS β Routing
- Timing, Power, and Physical Verification
- Exporting tapeout-ready GDSII
The objective is to gain hands-on experience with backend integration, PPA (Power, Performance, Area) trade-offs, and sign-off closure in a realistic ASIC flow.
- Hands-on with industry-standard flow β Mimics real-world ASIC methodology.
- Open-source RISC-V core β Compact, configurable, and widely adopted for research.
- Open PDK (Sky130) β First-ever open-source CMOS PDK for fabrication & academia.
- Cadence Toolchain β Genus, Innovus, Tempus, Voltus, Pegasus.
- Tapeout-ready methodology β Includes PPA optimization and IR/EM sign-off.
- RTL Selection β PicoRV32 Verilog source.
- Logic Synthesis (Genus) β RTL β Gate-level netlist mapped to Sky130 standard cells.
- Formal Verification (Conformal LEC) β RTL vs. Netlist equivalence.
- Floorplanning (Innovus) β Die/core sizing, I/O placement, power grid.
- Placement β Cell placement with congestion/timing optimization.
- Clock Tree Synthesis (CTS) β Balanced skew & clock insertion delay.
- Routing (Innovus) β Global + detailed routing.
- Power Analysis (Voltus) β IR-drop & EM verification.
- Timing Closure (Tempus) β STA across corners.
- Physical Verification (Pegasus/PVS) β DRC/LVS/ERC clean.
- GDSII Export β Final manufacturable layout.
PicoRV32 is a compact, lightweight RISC-V CPU core in Verilog.
- Implements RV32IMC (32-bit Integer + Multiply + Compressed instructions).
- Configurable pipeline (1β4 stages).
- Can enable/disable multiplier, shifter, compressed ISA.
- Widely used in FPGA prototyping & ASIC tapeouts.
- Synthesizable RTL β Works with Cadence Genus.
- Small size β Feasible on university compute resources.
- Proven in academic tapeouts (e.g., TinyTapeout).
- A real CPU core for full RTL-to-GDS validation.
- RTL Source:
picorv32.v - Simulated in Cadence nclaunch (or any Verilog simulator).
β Functionally verified RTL.
Inputs: RTL (picorv32.v), Sky130 library (sky130_fd_sc_hd__tt_025C_1v80.lib), Constraints (picorv32.sdc)
Outcome: Netlist + timing/area/power reports.
Ensures RTL β Synthesized Netlist equivalence.
β
No mismatches introduced.
Defined core area, die size, pin placement, power rings/straps.
β
DEF with floorplan + power grid.
Optimized placement with place_opt_design.
β
Reduced congestion & improved timing.
Inserted buffers/inverters for balanced clocks.
β
Post-CTS netlist.
routeDesign β Global + detailed routing.
β
SPEF + DRC-clean routed design.
Multi-corner STA for setup/hold closure.
β
WNS β₯ 0, TNS = 0.
- IR-drop
- EM Analysis
β IR/EM clean.
- DRC
- LVS
- ERC
β Verification clean.
Final GDSII β picorv32.gds
β
Tapeout-ready!
| Metric | Value |
|---|---|
| Target Clock Period | 10 ns (100 MHz) |
| Worst Negative Slack (WNS) | 0.00 ns |
| Total Negative Slack (TNS) | 0.00 ns |
| Violating Paths | 0 |
β Timing is clean.
| Metric | Value |
|---|---|
| Top Module | picorv32_main |
| Total Standard Cells | 6,459 |
| Cell Area | 69,708 Β΅mΒ² |
| Total Area | 69,708 Β΅mΒ² |
| Component | Leakage (W) | Internal (W) | Switching (W) | Total (W) | Contribution |
|---|---|---|---|---|---|
| Registers | 4.57e-06 | 7.11e-03 | 4.05e-04 | 7.52e-03 | 83.6% |
| Logic | 4.84e-06 | 7.38e-04 | 7.35e-04 | 1.48e-03 | 16.4% |
| Others | ~0 | ~0 | ~0 | ~0 | 0% |
Total Power: 8.99 mW
- Leakage: 0.01 mW (0.1%)
- Internal: 7.85 mW (87.2%)
- Switching: 1.14 mW (12.7%)
| Metric | Value |
|---|---|
| Target Clock | 10 ns |
| Achieved Slack | 0.00 ns |
| Cell Count | 6,459 |
| Area | 69,708 Β΅mΒ² |
| Power | 8.99 mW |
β Meets PPA targets.
| Metric | Result |
|---|---|
| Frequency Target | 100 MHz |
| WNS / TNS | 0.00 / 0.00 |
| Standard Cells | 6,459 |
| Total Area | 69,708 Β΅mΒ² |
| Total Power | 8.99 mW |
π Full Reports: