0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claudeにyosysとopenroad環境構築をお願いした

0
Last updated at Posted at 2026-06-20

yosysとopenroad

yosysは論理合成環境,openroadは配置配線ツールとなっている.
これらの環境構築とサンプルの実行を最近はやりのClaudeにお願いしてみた.

1.環境構築

1-1.PCのスペック

今回は、WindowsノートPC上でWSLを用いてUbuntu環境を構築し,そこにインストールした.
以下は今回考慮すべき箇所のみ記載しており,Ubuntuに割り当てているCPU数は必要に応じて拡張してほしい.

  • WindowsノートPCのスペック
    • 実装RAM:16.0GB
    • プロセッサ:Intel(R) Core(TM) 5 210H (2.20 GHz)
  • WSL上のUbuntu
  • OS:Ubuntu24.04
  • メモリー:12GB

Ubunutuに割り当てるメモリーはデフォルトより大きくするか後述するビルドで並列数を調整しないと失敗する.
12GBにしておけば問題はないが,4~8GBとかにしているとビルドで落ちることがある.
以下に割り当てメモリー容量を増やす方法を記載.

  • C:\Users\ユーザー名\.wslconfigを開く.
  • 以下を修正
[wsl2]
memory=12GB
swap=8GB
processors=4
  • WSLで再読み込み
wsl --shutdown # 起動していない場合は不要
wsl

1-2.yosysとopenroadのインストール

以降,Ubunutuでの作業となる.

1-2-1.GitHubからcloneする

git clone --recursive https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts

1-2-2.safe.directory設定

git config --global --add safe.directory '*'

1-2-3.依存パッケージインストール

sudo ./etc/DependencyInstaller.sh -all 2>&1 | tee dep.log

1-2-4.ビルド(4)

./build_openroad.sh --local --threads 2 2>&1 | tee build.log

1-2-5.ビルド完了確認

ls tools/install/OpenROAD/bin/openroad
ls tools/install/yosys/bin/yosys

ファイルが存在していればビルド成功.
これでビルド完了し,インストールできた.

1-3.サンプルの実行

次にサンプルとしてフローを一通り流せるものを実行する.

cd /home/ユーザー名/OpenROAD-flow-scripts/flow
make DESIGN_CONFIG=./designs/nangate45/gcd/config.mk

これで一通りフローを実行できる.

2.各ステップの成果物

各ステップでの成果物は以下に出力される.

ls /home/ユーザー名/OpenROAD-flow-scripts/flow/results/nangate45/gcd/base/

2-1.主要ファイル

ファイル名 概要
1_2_yosys.v 合成済みネットリスト
2_floorplan.odb フロアプラン
3_5_place_dp.odb 配置後レイアウト
4_1_cts.odb CTS後レイアウト
5_2_route.odb ルーティング後レイアウト
6_final.gds 最終GDSII

2-2.成果物概要

工程 ファイル 概要
論理合成(Yosys) 1_1_yosys_canonicalize.rtlil RTL正規化後の中間表現
1_2_yosys.v 合成済みネットリスト
1_2_yosys.sdc 合成後SDC
1_synth.odb OpenROAD DB形式
フロアプラン 2_1_floorplan.odb フロアプラン後
2_2_floorplan_macro.odb マクロ配置後
2_3_floorplan_tapcell.odb タップセル挿入後
2_4_floorplan_pdn.odb PDN生成後
配置 3_1~3_6_place_*.odb 各配置ステップ後
CTS 4_1_cts.odb CTS後
4_before_rsz_lec.v リサイズ前ネットリスト
4_after_rsz_lec.v リサイズ後ネットリスト
ルーティング 5_1_grt.odb グローバルルーティング後
5_2_route.odb 詳細ルーティング後
5_3_fillcell.odb フィルセル挿入後
最終成果物 6_final.gds 最終GDSIIファイル※テープアウトに使う
6_final.def 最終DEFファイル
6_final.v 最終ネットリスト
6_final.spef 寄生素子情報
6_final.sdc 最終SDC

2-3.各ステップの実行

変数で以下を設定しておく.

CFG=./designs/nangate45/gcd/config.mk

2-3-1.RTL正規化

make DESIGN_CONFIG=$CFG do-yosys-canonicalize

2-3-2.論理合成

make DESIGN_CONFIG=$CFG do-1_synth

2-3-3.フロアプラン

make DESIGN_CONFIG=$CFG do-2_1_floorplan

2-3-4.マクロ配置

make DESIGN_CONFIG=$CFG do-2_2_floorplan_macro

2-3-5.タップセル挿入

make DESIGN_CONFIG=$CFG do-2_3_floorplan_tapcell

2-3-6.PDN生成

make DESIGN_CONFIG=$CFG do-2_4_floorplan_pdn

2-3-7.配置(IO仮配置)

make DESIGN_CONFIG=$CFG do-3_1_place_gp_skip_io

2-3-8.IO配置

make DESIGN_CONFIG=$CFG do-3_2_place_iop

2-3-9.グローバル配置

make DESIGN_CONFIG=$CFG do-3_3_place_gp

2-3-10.リサイズ・バッファ挿入

make DESIGN_CONFIG=$CFG do-3_4_place_resized

2-3-11.詳細配置

make DESIGN_CONFIG=$CFG do-3_5_place_dp

2-3-12.タイミング修復

make DESIGN_CONFIG=$CFG do-3_6_place_repair_timing

2-3-13.CTS

make DESIGN_CONFIG=$CFG do-4_1_cts

2-3-14.グローバルルーティング

make DESIGN_CONFIG=$CFG do-5_1_grt

2-3-15.詳細ルーティング

make DESIGN_CONFIG=$CFG do-5_2_route

2-3-16.フィルセル挿入

make DESIGN_CONFIG=$CFG do-5_3_fillcell

2-3-17.GDS生成

make DESIGN_CONFIG=$CFG do-6_1_fill

2-3-18.report タイミングレポート

make DESIGN_CONFIG=$CFG do-6_report

2-4.ログの確認

2-4-1.合成結果(セル数・面積)

cat ./reports/nangate45/gcd/base/synth_stat.txt
16. Printing statistics.

=== gcd ===

        +----------------------------Count including submodules.
        |        +-------------------Area including submodules.
        |        |        +----------Local count, excluding submodules.
        |        |        |        +-Local area, excluding submodules.
        |        |        |        |
      546        -      546        - wires
      592        -      592        - wire bits
       42        -       42        - public wires
       88        -       88        - public wire bits
        8        -        8        - ports
       54        -       54        - port bits
        -        -        -        - memories
        -        -        -        - memory bits
        -        -        -        - processes
      521  663.138      521  663.138 cells
        4    4.256        4    4.256   AND2_X1
        1     1.33        1     1.33   AND2_X2
        1    1.596        1    1.596   AND4_X1
        5     5.32        5     5.32   AOI21_X1
        2    3.724        2    3.724   AOI21_X2
        1    3.458        1    3.458   AOI21_X4
        5     3.99        5     3.99   BUF_X1
        3    3.192        3    3.192   BUF_X2
        2    3.724        2    3.724   BUF_X4
        5    17.29        5    17.29   BUF_X8
        2    1.596        2    1.596   CLKBUF_X1
       35   158.27       35   158.27   DFF_X1
       72   38.304       72   38.304   INV_X1
       12    9.576       12    9.576   INV_X2
        3     3.99        3     3.99   INV_X4
      164  130.872      164  130.872   NAND2_X1
       28    37.24       28    37.24   NAND2_X2
        8   19.152        8   19.152   NAND2_X4
       19   20.216       19   20.216   NAND3_X1
        9   16.758        9   16.758   NAND3_X2
        1    3.458        1    3.458   NAND3_X4
       28    37.24       28    37.24   NAND4_X1
       28   22.344       28   22.344   NOR2_X1
       11    14.63       11    14.63   NOR2_X2
        7   16.758        7   16.758   NOR2_X4
        4     5.32        4     5.32   NOR4_X1
       38   40.432       38   40.432   OAI21_X1
        9   16.758        9   16.758   OAI21_X2
        3    3.192        3    3.192   OR2_X1
        7   11.172        7   11.172   XNOR2_X1
        2    3.192        2    3.192   XOR2_X1
        2    4.788        2    4.788   XOR2_X2

   Chip area for module '\gcd': 663.138000
     of which used for sequential elements: 158.270000 (23.87%)

2-4-2.配線混雑レポート

cat logs/nangate45/gcd/base/5_1_grt.log | grep -i "congestion\|overflow"

2-4-3.IRドロップ

cat logs/nangate45/gcd/base/6_report.log | grep -i "ir\|power"

2-4-4.タイミングレポート

cat logs/nangate45/gcd/base/6_report.log

2-5.OpenROAD GUIで各ステップのレイアウトを確認

OpenROAD GUIでOBDを読み込み段階的なレイアウトを確認できる.
OBDはOpenROAD独自のデータベース形式が使用するチップ設計データベースのバイナリファイルで拡張子が.odbとなる.OpenROAD以外ではOA/ORCAD形式などがある.

中に含まれるデータは以下となる.

  • 回路のネットリスト(セル・ネット・ピン)
  • フロアプラン情報(チップサイズ・電源レール)
  • セルの配置座標
  • クロックツリー情報
  • 配線情報(ルーティング)
  • タイミング制約

2-5-1.OpenROAD GUIの起動

openroad -gui

image.png

2-5-2.TclコンソールでODB(OpenDataBase)を読み込み

OpenROAD GUIが起動できたらTCL commandsに以下コマンドを入力しEnterを押すことでODBを読み込める.
なお,1回で読み込めるOBDファイルは1つだけで次段階のOBDを読み込む.

2-5-2-1.フロアプラン直後

TCL commandsに以下コマンドを入力.
フロアプラン完了時点のスナップショット2_4_floorplan_pdn.odbを読み込める.

read_db results/nangate45/gcd/base/2_4_floorplan_pdn.odb

image.png

2-5-2-2.配置後

詳細配置完了時点3_5_place_dp.odbを読み込める.

read_db results/nangate45/gcd/base/3_5_place_dp.odb

image.png

2-5-2-3.CTS後

クロックツリー合成完了時点4_1_cts.odbを読み込める.

read_db results/nangate45/gcd/base/4_1_cts.odb

image.png

2-5-2-4.ルーティング後

ルーティング完了時点5_2_route.odbを読み込める.

read_db results/nangate45/gcd/base/5_2_route.odb

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?