Skip to content

AyushVerma17/spm_ppa_optimization_openlane

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SPM (Serial Parallel Multiplier) Optimization using OpenLane

This project demonstrates digital design optimization techniques using OpenLane for a Serial Parallel Multiplier (SPM) module. Three different optimization strategies are implemented and compared: baseline design, speed optimization, and area optimization.

Project Overview

The SPM module is synthesized, placed, and routed using the OpenLane flow with different optimization strategies to showcase the trade-offs between area, power, and timing performance in digital IC design.

Design Variants

1. Baseline Design (spm/)

  • Strategy: AREA 0 (moderate area optimization)
  • Clock Period: 10ns (100 MHz)
  • Focus: Balanced design serving as reference

2. Speed Optimized Design (spm_speed_optimized/)

  • Strategy: DELAY 1 (speed optimization)
  • Clock Period: 5ns (200 MHz)
  • Focus: Maximum performance with aggressive timing optimization

3. Area Optimized Design (spm_area_optimized/)

  • Strategy: AREA 0 (aggressive area optimization)
  • Clock Period: 10ns (100 MHz)
  • Focus: Minimum silicon area with higher utilization

Results Summary

Metric Baseline Speed Optimized Area Optimized
Clock Period 10ns 5ns 10ns
Target Frequency 100 MHz 200 MHz 100 MHz
Cell Count 301 487 301
Total Cells 1,113 1,332 825
Core Area (μm²) 8,134 8,636 5,956
Die Area (mm²) 0.0115 0.0120 0.0090
Utilization 45% 50% 60%
Wire Length 6,719 8,321 6,381
Worst Slack (Setup) 6.79ns 2.78ns 6.78ns
Critical Path 0.96ns 0.97ns 0.97ns
Violations 1 fanout 0 1 fanout

Layout Visualizations

The following images show the physical layout results for each optimization strategy:

Baseline Design Layout

Baseline Layout Baseline design with 45% utilization and balanced area/performance trade-off

Speed Optimized Design Layout

Speed Optimized Layout Speed optimized design with 50% utilization, optimized for 200 MHz operation

Area Optimized Design Layout

Area Optimized Layout Area optimized design with 60% utilization, minimized die area

Performance Analysis

SPM Optimization Analysis Comprehensive analysis comparing the three optimization strategies across key metrics

Timing Performance

  • Speed Optimized: Achieves 200 MHz operation (2× baseline frequency) with 2.78ns setup slack
  • Baseline: Comfortable 6.79ns setup slack at 100 MHz
  • Area Optimized: Similar timing to baseline (6.78ns slack) with 34% area reduction

Area Efficiency

  • Area Optimized: 34% smaller die area compared to baseline
  • Speed Optimized: 5% area penalty for 2× performance improvement
  • Best Area Efficiency: Area optimized design with 60% utilization

Design Trade-offs

Speed vs. Area

  • Speed optimization increases cell count by 62% (301 → 487 cells)
  • Area reduction of 34% achieved with same performance as baseline
  • Speed optimization shows excellent performance/area ratio

Power Implications

  • Higher cell count in speed optimized design increases switching power
  • Area optimized design likely has lower total power consumption
  • Clock frequency doubling in speed design significantly impacts dynamic power

Synthesis Strategies

AREA 0 Strategy

  • Optimizes for minimal area usage
  • Uses smaller, more area-efficient standard cells
  • May sacrifice some performance for area savings

DELAY 1 Strategy

  • Prioritizes timing closure and performance
  • Uses faster, typically larger standard cells
  • Employs more aggressive optimization techniques

Physical Design Metrics

Routing Congestion

  • Speed Optimized: Higher wire length (8,321) due to more complex routing
  • Area Optimized: Lowest wire length (6,381) with efficient placement
  • All designs show good routability with no DRC violations

Clock Distribution

  • All designs use hierarchical clock tree with clkbuf_16 buffers
  • Clean clock networks with minimal skew
  • Proper clock gating implementation

Verification Results

Static Timing Analysis

  • Setup Time: All designs meet setup requirements with positive slack
  • Hold Time: All designs pass hold time checks (0.31-0.32ns slack)
  • Clock Uncertainty: 0.25ns used across all variants

Design Rule Checks

  • DRC Clean: No manufacturing violations in any design
  • Antenna Rules: No antenna violations detected
  • Parasitic Extraction: Complete RC extraction for accurate timing

File Structure

spm-optimization-openlane/
├── images/                       # Layout visualization images
│   ├── baseline_layout.png      # Baseline design layout
│   ├── speed_layout.png         # Speed optimized layout
│   ├── area_layout.png          # Area optimized layout
│   └── spm_optimization_analysis.png # Comprehensive analysis chart
├── spm/                          # Baseline design
│   ├── config.json              # OpenLane configuration
│   ├── src/spm.v               # RTL source code
│   └── runs/test_run/          # Implementation results
├── spm_optimized/              # Speed optimized design
│   ├── config.json             # Speed-focused configuration
│   ├── src/spm.v              # RTL source code
│   └── runs/speed_run/        # Implementation results
├── spm_area_optimized/         # Area optimized design
│   ├── config.json             # Area-focused configuration
│   ├── src/spm.v              # RTL source code
│   └── runs/area_run/          # Implementation results
└── README.md                   # Project documentation

Key Configuration Differences

Parameter Baseline Speed Opt Area Opt
CLOCK_PERIOD 10 5.0 10
FP_CORE_UTIL 45% 50% 60%
PL_TARGET_DENSITY 0.55 0.6 0.75
SYNTH_STRATEGY AREA 0 DELAY 1 AREA 0
FP_ASPECT_RATIO 1 1 1

Tools and Technology

  • EDA Tool: OpenLane (commit 413d301)
  • PDK: SkyWater 130nm (sky130_fd_sc_hd)
  • Standard Cell Library: High-density standard cells
  • Synthesis: Yosys with ABC optimization
  • Place & Route: OpenROAD toolchain

How to Reproduce the Results

This project was developed and tested using the OpenLane toolchain within its Docker container environment. The following steps will guide you through reproducing any of the three design variants.

1. Prerequisites

  • A Linux-based operating system (e.g., Ubuntu 22.04)
  • Docker installed and configured
  • The OpenLane repository cloned and built successfully

2. Setup

All commands must be executed from the root of the OpenLane directory (~/OpenLane). First, you must enter the OpenLane container environment.

# Navigate to your OpenLane installation directory
cd ~/OpenLane

# Start an interactive session inside the container
make mount

Your terminal prompt will change to OpenLane Container (...):/openlane$, indicating you are now inside the correct environment.

3. Running the Flow

The flow.tcl script is the main entry point for running any design. The -design flag specifies which design configuration to use, and the -tag flag creates a unique directory for the results.

a) To Run the Baseline Design:

# From inside the container
flow.tcl -design spm -tag baseline_run -overwrite

b) To Run the Speed-Optimized Design:

# From inside the container
flow.tcl -design spm_optimized -tag speed_run -overwrite

c) To Run the Area-Optimized Design:

# From inside the container
flow.tcl -design spm_area_optimized -tag area_run -overwrite

4. Viewing the Final Layouts

After a flow has completed successfully, you can view the final GDSII layout using KLayout.

# For viewing the baseline final layout
klayout designs/spm/runs/test_run/results/final/gds/spm.gds &

# For viewing the speed_optimized final layout
klayout designs/spm_speed_optimized/runs/speed_run/results/final/gds/spm.gds &

# For viewing the area_optimized final layout
klayout designs/spm_area_optimized/runs/area_run/results/final/gds/spm.gds &

Visual Comparison

The layout images clearly demonstrate the impact of different optimization strategies:

  • Baseline: Moderate density with balanced routing
  • Speed Optimized: Increased cell density and more complex routing for performance
  • Area Optimized: Highest density packing with efficient space utilization

Each layout reflects the synthesis strategy's priorities - speed optimization uses more resources for performance, while area optimization achieves maximum silicon efficiency.

Conclusions

This project demonstrates the effectiveness of different optimization strategies in digital IC design:

  1. Speed optimization successfully doubled operating frequency with acceptable area overhead
  2. Area optimization achieved 34% area reduction without performance degradation
  3. OpenLane flow provides excellent design space exploration capabilities
  4. Trade-off analysis shows clear relationships between area, power, and performance

The results validate that proper synthesis strategy selection and physical design parameters can significantly impact final chip characteristics, enabling designers to meet specific project requirements effectively.

Future Work

  • Power optimization variant with voltage scaling
  • Multi-corner timing analysis
  • Process variation analysis
  • Advanced clock gating techniques
  • Hierarchical design exploration

License

This project is available under the MIT License. See LICENSE file for details.

Acknowledgments

  • OpenLane development team for the open-source ASIC flow
  • SkyWater Technology for the open-source 130nm PDK
  • OpenROAD project for the physical design tools

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors