🛣️

オープンソース EDA 環境 OpenRoad をビルドする

2022/12/18に公開約2,000字

OpenRoad はオープンソースソフトウェアで構築されたチップ設計自動化 (Electronic Design Automation; EDA) ツール群です。デジタル回路の設計は、レジスタトランスファレベル (Register Transfer Level; RTL) と呼ばれるハードウェア記述言語 (Hardware Description Language; HDL) からチップ製造用のマスクレイアウトを生成するまで、通常は商用の EDA ツールと多くの人手作業を必要とします。OpenRoad は、オープンソースの EDA ツールを使ってこの設計作業を自動化することを目的としています。

OpenRoad は Docker イメージを使ってビルドする方法とローカルマシンでビルドする方法の二通りがあります。チップ設計環境として利用する目的であれば Docker を利用した方が手軽ですが、自分自身の学習目的でローカルサーバーでビルドして環境を構築しました。参考にしたのは OpenRoad プロジェクトのこちらのページです。

https://openroad.readthedocs.io/en/latest/main/README.html#introduction

OpenRoad 自体は様々なサーバー環境に対応していますが、今回はUbuntu 20.04 をインストールしたサーバーを用意しました。

はじめに、OpenRoad 本体をダウンロードします。

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

ダウンロードできたら OpenRoad のディレクトリの中に入ります。

$ cd OpenROAD
$ ls
CMakeLists.txt      Jenkinsfile  README.md  docker  etc      jenkins  test
CODE_OF_CONDUCT.md  LICENSE      cmake      docs    include  src      third-party

ドキュメントによれば以下のスクリプトで事前に必要なツールをインストールしてくれるそうなので実行します(ただし対応している環境が限られるので注意。Ubuntu 20.04 を選択したのはこのスクリプトが対応していたからです)。この後 OpenRoad をソースからビルドするので開発用オプションの -dev を利用します。環境にもよりますが結構時間かかります。

$ sudo ./etc/DependencyInstaller.sh -dev

次に KLayout をインストールします。apt-get でインストールするバイナリが古かったので、直接ダウンロードしました。(0.27.1 以降がインストールできるのであれば apt-get install klayout でも問題ないはず)

$ wget https://www.klayout.org/downloads/Ubuntu-20/klayout_0.28-1_amd64.deb
$ sudo apt-get install ./klayout_0.28-1_amd64.deb
$ klayout -v
KLayout 0.28

ちなみにKLayout の最新のパッケージはこちらにあります。

これで準備が整いました。いよいよビルドします。ビルドには、OpenROAD-flow-scripts というパッケージを利用します。OpenRoad を便利に利用するためのスクリプト群です。ダウンロードしたら build_openroad.sh をスクリプトでビルドします。ローカル環境でビルドするので --local を忘れずに。

$ git clone --recursive https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts
$ cd OpenROAD-flow-scripts
$ ./build_openroad.sh --local

こちらもかなりの時間がかかります。無事にビルドが完了したら環境が動作するか確かめてみましょう。

$ source ./setup_env.sh

PATH 変数の設定が終わるので、

$ yosys -help
$ openroad -help

で実行できるのが確認できると思います。

以上、ビルド編でした。次はサンプルを使ってチップ設計フローを体験してみようと思います。

Discussion

ログインするとコメントできます