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: