オープンソース EDA 環境 OpenRoad をビルドする
OpenRoad はオープンソースソフトウェアで構築されたチップ設計自動化 (Electronic Design Automation; EDA) ツール群です。デジタル回路の設計は、レジスタトランスファレベル (Register Transfer Level; RTL) と呼ばれるハードウェア記述言語 (Hardware Description Language; HDL) からチップ製造用のマスクレイアウトを生成するまで、通常は商用の EDA ツールと多くの人手作業を必要とします。OpenRoad は、オープンソースの EDA ツールを使ってこの設計作業を自動化することを目的としています。
OpenRoad は Docker イメージを使ってビルドする方法とローカルマシンでビルドする方法の二通りがあります。チップ設計環境として利用する目的であれば Docker を利用した方が手軽ですが、自分自身の学習目的でローカルサーバーでビルドして環境を構築しました。参考にしたのは OpenRoad プロジェクトのこちらのページです。
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