This document describes the OpenLane configuration and flow setup for the UART Controller IP targeting the SkyWater 130nm Open Source PDK (SKY130 process node).
- Platform:
sky130bhd(high-density standard cell library) - PDK Source: github.com/google/skywater-pdk
- Standard Cell Library:
sky130_fd_sc_hd - Supply Voltage: 1.8V nominal
- Process Corners: TT, FF, SS, FS, SF
- Main Config:
config_sky130b.json- Sky130B-specific configuration - Template Config:
config.template.json- Template for other PDK variants - Timing Constraints:
constraints_sky130b.sdc- Design-specific timing - Pin Order:
pin_order_sky130b.cfg- I/O pin placement - Floorplan:
floorplan_sky130b.tcl- Custom floorplan configuration
flow/openlane/
├── config_sky130b.json # Sky130B-specific OpenLane config
├── config.template.json # Template configuration
├── constraints_sky130b.sdc # Timing constraints for Sky130B
├── pin_order_sky130b.cfg # I/O pin placement order
├── floorplan_sky130b.tcl # Custom floorplan configuration
├── Makefile # OpenLane flow automation
└── configuration.md # This documentation
# From flow/openlane/ directory
# Run with Sky130B PDK (default)
make sky130b
# Run with Sky130A PDK (if needed)
make sky130a
# Run with default configuration
make run
# Show help
make help
# Collect final results
make final
# Clean generated files
make clean- DESIGN_NAME:
uart_controller- Top-level module name - VERILOG_FILES: RTL source files for UART controller modules
- CLOCK_PORT:
pclk_i- APB clock input - CLOCK_PERIOD:
20.0- 50MHz operation (20ns period) - RESET_PORT:
presetn_i- APB reset input (active low)
- PLATFORM:
sky130bhd- Sky130B high-density platform - PDK:
sky130B- SkyWater 130nm PDK - STD_CELL_LIBRARY:
sky130_fd_sc_hd- Standard cell library - LIB_SYNTH:
sky130_fd_sc_hd__tt_025C_1v80- Synthesis library
- DIE_AREA:
"0 0 1000 1000"- 1mm x 1mm die area - FP_CORE_UTIL:
50- 50% core utilization target - PL_TARGET_DENSITY:
0.45- Placement density target - FP_PIN_ORDER_CFG:
pin_order_sky130b.cfg- Pin placement order
- VDD_NETS:
"vccd1 vccd2 vdda1 vdda2"- Power supply nets - VSS_NETS:
"vssd1 vssd2 vssa1 vssa2"- Ground nets - VDD_PIN:
"VPWR"- Power pin name - VSS_PIN:
"VGND"- Ground pin name - VDD_PIN_VOLTAGE:
"1.80"- Supply voltage
- RT_CLOCK_ROUTING_LAYER:
"met5"- Clock routing layer - RT_MIN_LAYER:
"met1"- Minimum routing layer - TECH_METAL_LAYERS:
"li1 met1 met2 met3 met4 met5"- Available metal layers
The pin order configuration (pin_order_sky130b.cfg) follows this strategy:
- Clock and reset signals
- APB control signals (PSEL, PENABLE, PWRITE)
- APB address bus (PADDR[7:0])
- APB write data bus (PWDATA[31:0])
- APB read data bus (PRDATA[31:0])
- APB response signals (PREADY, PSLVERR)
- UART transmit output (UART_TX_o)
- UART receive input (UART_RX_i)
- Transmit FIFO empty interrupt (IRQ_TX_EMPTY_o)
- Receive FIFO full interrupt (IRQ_RX_FULL_o)
- Power supply nets (VCCD1, VCCD2, VDDA1, VDDA2)
- Ground nets (VSSD1, VSSD2, VSSA1, VSSA2)
The SDC file (constraints_sky130b.sdc) includes:
- 50MHz clock (20ns period) for APB interface
- Clock uncertainty and jitter margins
- Clock gating checks
- APB interface setup/hold timing
- UART interface false paths (asynchronous)
- Interrupt signal timing
- Area target: < 0.1mm²
- Power targets: < 5mW dynamic, < 1μW leakage
- Load and drive strength constraints
The floorplan script (floorplan_sky130b.tcl) defines:
- Die area: 1000x1000 microns (1mm x 1mm)
- Core area: 800x800 microns (80% utilization)
- Aspect ratio: 1:1 (square die)
- Standard cell power rails
- Power ring configuration (disabled for small design)
- Tap cell placement strategy
- Metal layer assignments
- Antenna rules and repair
- Fill cell configuration
After successful completion, the flow generates:
- GDS:
final/uart_controller.gds- Final layout - DEF:
final/uart_controller.def- Design exchange format - LEF:
final/uart_controller.lef- Library exchange format
- SDF:
final/uart_controller.sdf- Standard delay format - SPEF:
final/uart_controller.spef- Standard parasitic format - Timing reports: STA results and timing analysis
- Power reports: Dynamic and leakage power analysis
- DRC reports: Design rule check results
- LVS reports: Layout vs. schematic comparison
- XOR reports: Layout comparison results
- PDK not found: Ensure SkyWater PDK is installed in
PDK_ROOT - OpenLane not found: Install OpenLane toolchain
- Timing violations: Review and adjust SDC constraints
- DRC violations: Check design rules and adjust floorplan
- Power violations: Review power distribution and constraints
# Check PDK installation
ls $PDK_ROOT/sky130B
# Check OpenLane installation
which openlane
# View detailed logs
tail -f runs/uart_controller/runtime/flow.log
# Check specific step results
ls runs/uart_controller/results/synthesis/
ls runs/uart_controller/results/placement/
ls runs/uart_controller/results/routing/