Edusemi-v4x

4.3 PIDモジュールの配置配線(Place & Route)

🎯 本節の目的


🛠️ ディレクトリ構成の準備

以下のように pid_controller 用のプロジェクトディレクトリを構成します:

f_chapter4_openlane/
└── openlane/
    └── pid_controller/
        ├── config.tcl
        └── src/
            └── pid_controller.v

📦 config.tcl(最小構成例)

set ::env(DESIGN_NAME) pid_controller
set ::env(VERILOG_FILES) [glob $::env(DESIGN_DIR)/src/pid_controller.v]
set ::env(CLOCK_PORT) "clk"
set ::env(CLOCK_PERIOD) "10.0"
set ::env(FP_CORE_UTIL) 30
set ::env(PL_TARGET_DENSITY) 0.5

🚀 flow.tcl の実行手順

cd OpenLane/
./flow.tcl -design ../f_chapter4_openlane/openlane/pid_controller

📂 成果物構成とレポート出力

runs/pid_controller/
├── config.tcl
├── logs/
├── reports/
│   ├── synthesis/area.rpt
│   ├── signoff/drc.rpt
│   └── signoff/lvs.rpt
└── results/
    └── final/
        ├── gds/pid_controller.gds
        ├── def/pid_controller.def
        └── verilog/final.v

📊 評価ポイントと比較観点

項目 内容
✅ DRC DRC違反数が 0 であること
✅ 面積 FSMとの相対比較。算術演算の分だけインスタンス数は多くなる想定
✅ タイミング Slack 確保とタイミング収束

🖼️ レイアウト可視化手順

klayout runs/pid_controller/results/final/gds/pid_controller.gds

または

magic -T sky130A.tech runs/pid_controller/results/final/gds/pid_controller.gds

✅ まとめ


👉 4.4 SoC統合モジュールの実装へ進む