Vengineerの戯言

人生は短いけど、長いです。人生を楽しみましょう!

SiliconCompilerのサンプルが動いた

はじめに

下記のブログで、SiliconCompiler を試してみたら、NGでした。

vengineer.hatenablog.com

新しいノート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