はじめに
下記のブログで、SiliconCompiler を試してみたら、NGでした。
新しいノートPCにて、再度トライアルし、うまく行きました。
- openROAD は、local でビルドしないといけない
- python heatbeat.py を実行するのは、siliconcompiler の directory にやればよかった
openROADのbuild
- WIndows 11 Pro / WSL2 / Ubuntu 20.04LTS
- gcc-10/g++-10 : tigerlakeをサポートしているのは、Ubuntu 20.04LTSのデフォルトの gcc-9 ではダメのようです。
sudo apt install gcc-10 g++-10 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10 --slave /usr/bin/gcov gcov /usr/bin/gcov-10 sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30 sudo update-alternatives --set cc /usr/bin/gcc sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30 sudo update-alternatives --set c++ /usr/bin/g++
openROAD のビルド (--local を付けて、ローカルでビルド。Dockerは使わない。--threads 5 にてスレッド数を5に。指定しないと、論理コア全部を使ってしまうので)
cd siliconcompiler/third_party/tools/openroad bash ./build_openroad.sh --threads 5 --local
openROAD の環境設定
source setup_env.sh
surelog のビルド
cd siliconcompiler/third_party/tools/surelog make
klayout のインストール
レイアウトデータの表示のために、klayout をインストール
$ sudo apt install klayout
サンプルコード (heatbeat.v) で実行
github から clone したディレクトリの下で行う。
Quick Start の heatbeat に対して、
cat heatbeat.sdc create_clock -name clk -period 1 [get_ports {clk}]
import siliconcompiler # import python package chip = siliconcompiler.Chip() # create chip object chip.set('source', 'heartbeat.v') # define list of source files chip.set('design', 'heartbeat') # set top module chip.set('constraint', 'heartbeat.sdc') # set constraints file chip.target('freepdk45') # load predefined target #chip.set('remote', False) # start of flowgraph setup chip.run() # run compilation chip.summary() # print results summary chip.show() # show layout file
上記のファイルで、python を使って実行すると、最後にレイアウトまで出てきます。
cd siliconompile python heartbeat.py
また、下記の環境設定で SiliconCompiler の場所を教えてあげる
export SCPATH=$PWD/siliconcompiler/siliconcompiler
おわりに
とりあえず、サンプルが最後まで動いたので、中身を見ていきたいと思います。
おしごと(お家)用でもビルドできた。でも、実行速度、めっちゃ遅い。。。そうだよね。Core i3-7100だから。
おしごと用だと、klayout を起動すると、下記のようなメッセージが出て、そのまま。
Warning: This plugin does not support propagateSizeHints()
Klayout のビルド
sudo apt install libqt5svg5* sudo apt install qtmultimedia5-dev libqt5multimediawidgets5 libqt5multimedia5-plugins libqt5multimedia5 sudo apt install qttools5-* sudo apt install libqt5xmlpatterns5* git clone https://github.com/KLayout/klayout ./build.sh -qt5