このレポジトリは OpenLane の簡単なサンプルを誰でも簡単に 最後まで実行可能なようにする情報の蓄積を目的にしています。
現時点(2023年7月25日)では情報だけですが、将来的に独自のサンプルも提供します。
本情報はここ の iic-osic-tools の情報をもとにしています。手順は先のページのほうが 絵付きで詳しく書いてあります。
また、dockerが無い/苦手のばあいは https://anaconda.org/litex-hub/openlane がおすすめです。
- ターゲットは Linux/Mac/Windows(WSL)
- Docker の準備
- iic-osic-tools の 2023.06 を clone
$ git clone https://github.com/iic-jku/iic-osic-tools -b 2023.06 iic-osic-tools-2022.06
- インストールおよび実行
$ cd iic-osic-tools-2023.06
$ DOCKER_TAG=2023.06 ./start_shell.sh
これで Docker のシェルが立ち上がります。GUI が必要なら ./start_x.sh を実行。
docker が Got permission denied while trying to connect to the Docker daemon socke
と permission denied になる場合は /etc/group の docker に自分の名前を追加しましょう。参考:ユーザをdockerグループに入れる
- ryos36 の caravel_user_project を clone して 42d1f1fb を chekout efabless の caravel_user_project ではフロー実行中にエラーになるので注意。
/foss/designs > git clone https://github.com/ryos36/caravel_user_project.git
/foss/designs > git checkout 42d1f1fb
- フローを実行
/foss/designs > export PDK=sky130B
/foss/designs > cd caravel_user_project
/foss/designs/caravel_user_project > cd openlane
/foss/designs/caravel_user_project/openlane > flow.tcl -design user_proj_example -tag my-test -overwrite
これで klayout で表示可能な GDSII 形式のレイアウトが出来るはず。
できた gds はこちら
- klayout で確認
Docker の外で signoff にある gds を klayout という GDSII を可視化するツールで見る。 Docker 内で klayout を実行するのが一番簡単。 Docker内だと k か ke がレイヤー情報を読み込んで起動する alias になってます。
klayout -e -c /foss/tolls/sak/klayout/tech/$PDK/$PDK.krc -nn $PDKPATH/libs.tech/klayout/tech/$PDK.lyt -l $PDKPATH/libs.tech/klayout/tech/$PDK.lyp
下のほうのごちゃごちゃしたところから論理に関係するセルだけ表示するとこんな感じ
Linux 本体でみたいなら うまく Docker が起動していると ~/eda/designs に Docker の Image がマウントされているからそこから gds を拾える。mount してない場合は docker cp でコピーする。レイヤー情報等は別途必要だが。
なお、caravel とつなげるためには user_proj_wrapper を作らないといけないみたいだが、それにはさらなる困難が待ち受けているらしい。
質問等は ISHI 会 の discord へ。
以前の情報
- efabless の caravel_user_project をコンパイルできない。最初の verilator の lint チェックで エラーになる。ryos36 版を使えば解決する。
- /foss/examples/SKY130_SAR-ADC1 をコンパイルできない。STEP 45 までいってエラー。LVS で落ちちゃう。
OpenROAD 版の OpenLane が 本家のようだ。なぜか efabless 版の OpenLane がある(更新は止まっている)。
OpenROAD という団体名でもあり、 そこが提供するツールでもある。更に、フローのためのツール群: OpenROAD Flowでもあるようだ。文脈によって使い分けられている!!
OpenLane は OpenROAD Flow のフローとは別のフローを提供するという試みのようで OpenLane の中にツールとしての OpenROAD が含まれているようだ。
ツールの寄せ集めじゃなくて、Nix ベースで、モジュールの形で 提供する次期バージョンのようだね。
https://github.com/efabless/openlane2
caravel_user_project って何?
efabless が提供する Caravel という RISC-V を含むデバッグシステムと つなぐことが出来る OpenLane 用のプロジェクトの雛形。 どうやら Caravel の RISC-V は PicoRV32 で、I/F として user_proj_wrapper という口が (昔のXilinx 風に言うなら)パーシャルとして用意されている。
Caravel 自身 は github で 提供されているものの RISC-V の部分は Verilog-HDL として見当たらなかった。 caravel_pico なるものが あるので、更に入れ子になっているのかも(未確認)。
caravel_user_project の verilog/rtl/user_proj_example.v 。 verilator の lint でエラーになります。その上ビット幅にどうやら間違いがあるらしく、その後のビット幅チェックでも引っかかります。とりあえず修正してみました。 修正版はこちら。 この修正で iic-osic-tools の 2023.06 (OpenLane 的には 2023.05) と一緒に動きました。本家にプルリクしてみた。
結局、OpenLane のバージョンに合わせた PDK と caravel_user_project が必要で どの組み合わせで動くのかは自分で試すしかない!! (のでこのドキュメントがあるわけです)。
アナログ版の雛形かな?だれか試して!!
- https://github.com/ranan-usp/caravel_user_project_analog 同様の手順で iic-osic-tools の 2023.06( OpenLane の 2023.05 ) で 最後までフローが流れることを確認しました(2023/7/26)。結果の gds が 正しいかどうかは未確認。
iic-osic-tools とは?
Institute for Integrated Circuits (IIC) at the Johannes Kepler University Linz (JKU) が提供する OpenLane を含む色々ツール群をインストールした Docker コンテナ。 もとは efabless の foss-asic-tools の fork。fork もとが tools の名称をつかっていたため、そのような名称になった模様。
efabless が提供していた(過去形!!) OpenLane を含むいろいろツール群をインストールした Docker コンテナ。すでに更新は止まっている模様。
https://hub.docker.com/u/efabless
efabless は efabless/openlane と efabless/openlane-tools を現在 Docker コンテナとしてメンテナンスしている模様。 前者は OpenLane オンリー。後者は色々ツール入り。 おそらく OpenLane のレポジトリの Dockerfile が元ソース(未確認)。
また、OpenLane の環境から make の延長で Docker が起動するように設計されている模様。Docker 単体で使おうと思ったらどうつかってよいかわからなかった。