🧱 openlane2-sram

Macro-Aware Physical Design with OpenLane2 (SRAM Hard Macro Integration)

Back to Portal (EN)


Language GitHub Pages 🌐 GitHub πŸ’»
πŸ‡ΊπŸ‡Έ English GitHub Pages EN GitHub Repo EN

πŸ“Œ Project Overview

This repository demonstrates macro-aware physical design using OpenLane2 (v2)
by integrating an SRAM hard macro into a complete RTL β†’ GDS flow.

The focus is not SRAM design, but realistic integration of a hard macro
(LEF / GDS / blackbox) into an OpenLane2-based physical design flow.


🎯 Project Goal


πŸ“ Scope

βœ” What this project does

βœ– What this project does NOT do


πŸ“š Documentation Guide

Please read in the following order:

  1. πŸ“˜ Project Plan
    Scope definition, milestones (M0–M3), and completion criteria.

  2. πŸ›  Environment Setup
    OpenLane2 installation, Python environment, and PDK handling.

  3. β–Ά Baseline OpenLane2 Flow
    Minimal RTL β†’ GDS run without macros.

  4. 🧠 SRAM Macro Integration
    Blackbox declaration, LEF/GDS usage, and macro placement strategy.

  5. πŸ“Š Results and Observations
    Final GDS, warnings, limitations, and lessons learned.


πŸ–Ό Figure 1: SRAM Macro Block-Level View

SRAM hard macro block-level layout integrated using OpenLane2


πŸ”¬ Figure 2: Standard-Cell / Transistor-Level View Around SRAM

Standard-cell level placement and routing around SRAM macro


πŸ—‚ Repository Structure

This repository is structured to clearly separate
documentation, design inputs, and generated artifacts.

πŸ“ Top-Level

openlane2-sram/
β”œβ”€ README.md
β”œβ”€ docs/
β”‚  β”œβ”€ 00_plan.md          # Project scope and milestones
β”‚  β”œβ”€ 10_env.md           # Environment setup (OpenLane2, PDK)
β”‚  β”œβ”€ 20_openlane2.md     # Baseline OpenLane2 flow (no macros)
β”‚  β”œβ”€ 30_macro_sram.md    # SRAM hard macro integration
β”‚  └─ 40_results.md       # Results, warnings, lessons learned
β”‚
β”œβ”€ designs/
β”‚  └─ spm/
β”‚     β”œβ”€ config.json          # Main OpenLane2 configuration
β”‚     β”œβ”€ run_config.json      # Runtime / flow options
β”‚     β”œβ”€ pin_order.cfg        # IO pin ordering
β”‚     └─ src/
β”‚        β”œβ”€ spm.v             # Top-level RTL
β”‚        └─ spm.sdc           # Timing constraints
β”‚
β”œβ”€ runs/                   # Generated by OpenLane2 (gitignored)
β”‚  └─ RUN_YYYY-MM-DD_*     # Per-run artifacts (logs, DEF, GDS)
β”‚
└─ .gitignore

🏁 Milestones

Each milestone produces verifiable artifacts.


🧠 SRAM Macro Policy

SRAM macros are treated strictly as external hard macros.

This keeps the project license-safe and reusable.


🧩 PDK


πŸŽ“ Intended Audience


πŸ“Š Status

βœ”οΈ Baseline flow and SRAM macro integration verified

This repository evolves incrementally with emphasis on
clarity, reproducibility, and realistic physical design practice.


πŸ‘€ Author

πŸ“Œ Item Details
Name Shinichi Samizo
Expertise Semiconductor devices (logic, memory, high-voltage mixed-signal)
Thin-film piezo actuators for inkjet systems
PrecisionCore printhead productization, BOM management, ISO training
GitHub GitHub

πŸ“„ License

Hybrid License

πŸ“Œ Item License Description
Source Code MIT License Free to use, modify, and redistribute
Text Materials CC BY 4.0 or CC BY-SA 4.0 Attribution required; share-alike applies for BY-SA
Figures & Diagrams CC BY-NC 4.0 Non-commercial use only
External References Follow the original license Cite the original source properly

πŸ’¬ Feedback

Suggestions, improvements, and discussions are welcome via GitHub Discussions.

πŸ’¬ GitHub Discussions