A complete hierarchical RTL-to-GDSII ASIC implementation of a custom RISC-V System-on-Chip using the open-source OpenLane/OpenROAD flow and the SKY130A Process Design Kit.
This project demonstrates a complete digital ASIC implementation flow, from RTL integration to physical verification, using a hierarchical floorplan composed of multiple hard macros. The primary objective is to build a realistic ASIC portfolio project that resembles an industrial digital implementation rather than a simple academic example.
The SoC is centered around the PicoRV32 RISC-V processor and integrates custom memory and peripheral subsystems through a memory-mapped interface.
The complete physical implementation was performed using OpenLane with the SKY130A technology and successfully reached GDSII generation after floorplanning, power distribution, placement, clock tree synthesis, routing, and physical verification.
The following diagram illustrates the hierarchical organization of the custom SoC. The PicoRV32 processor communicates with the Simple RAM and the custom peripheral subsystem through a memory-mapped bus interface. The peripheral subsystem integrates GPIO, Timer, PWM, and UART modules, providing programmable hardware functionality while keeping the overall design modular and scalable.
soc.v
picorv32.v
simple_ram.v
timer.v
uart_tx.v
pwm.v
The implementation followed the standard OpenLane digital ASIC flow:
- RTL Integration
- Logic Synthesis
- Floorplanning
- Macro Placement
- Power Distribution Network Generation
- Placement
- Clock Tree Synthesis
- Global Routing
- Detailed Routing
- Physical Verification
- GDSII Generation
The design uses a hierarchical floorplan where the CPU, RAM, and peripheral subsystem are implemented as independent hard macros and integrated at the top level.
The final routed layout was generated using OpenROAD and successfully passed the complete physical verification flow.
| Parameter | Value |
|---|---|
| Technology | SKY130A |
| Die Size | 2200 µm × 1500 µm |
| Die Area | 3.30 mm² |
| Components | 119,851 |
| Top-level Pins | 22 |
| Signal Nets | 333 |
| Routed Signal Nets | 332 |
| Total Wire Length | 263.76 mm |
| Average Net Length | 794.47 µm |
| Target Clock | 20 ns |
| Target Frequency | 50 MHz |
The final implementation successfully completed all major physical verification stages.
| Verification | Result |
|---|---|
| Detailed Routing DRC | Passed |
| Magic DRC | 0 Violations |
| LVS | Passed |
| KLayout XOR | Passed |
| WNS | 0.00 ns |
| TNS | 0.00 ns |
The final antenna report contains 27 reported antenna entries, which remain as known post-route optimization items.
One of the major challenges encountered during the project was hierarchical power distribution.
Initially, the Power Distribution Network could not be generated because one hard macro exported Metal5 power pins that conflicted with the top-level PDN strategy. After modifying the macro LEF and aligning the PDN implementation, the design successfully completed routing and signoff.
This project also involved multiple iterations of floorplanning and routing before obtaining a clean final implementation.
The final implementation generated:
- GDSII
- DEF
- LEF
- Verilog Netlist
- SDF
- SPEF
- LVS Reports
- DRC Reports
- Verilog HDL
- PicoRV32
- OpenLane
- OpenROAD
- Magic VLSI
- Netgen
- KLayout
- SKY130A PDK
Future work may include:
- Interrupt controller
- SPI peripheral
- I²C peripheral
- Hardware multiplier
- Cache memory
- Power optimization
- Improved antenna fixing
- Timing optimization


