Vengineerの戯言

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

OpenLaneを覗いてみた(その1)

はじめに

先週は、SilicocCompilerのサンプルのログを眺めてみました。

SiliconCompilerは、surellog => yosys => OpenRoad のフローのASIC開発ツールです。

OpenLane

同じようなものに、OpenLaneがあります。

論文は、ここ : OpenLANE: The Open-Source Digital ASIC Implementation Flow ソースコード等は、OpenLaneは、OpenRordの github からダウンロードできます。

github.com

SiliconCompiler と同様に、

  • Yosys : Yosys Open SYnthesis Suite
  • openROAD : RTL to GDS in 24 hours, no human in the loop
  • openSTA : Static Timing Analyzer
  • Klayout : Your Mask Layout Friend

GDS = Graphic Design System

OpenROADの中で、Yosys + ABC を使っているんですね。

ZeroASIC でも使われている

  • Magic : Magic is a venerable VLSI layout tool, written in the 1980's at Berkeley
  • Netgen : Netgen is a tool for comparing netlists, a process known as LVS, which stands for "Layout vs. Schematic".

そして、

  • Fault : Fault is a complete open source design for testing (DFT) Solution that includes automatic test pattern generation for netlists, scan chain stitching, synthesis scripts and a number of other convenience features.
  • CVC : Circuit Validity Checker. Voltage aware ERC checker for CDL netlists.
  • SPEF-Extractor : A Python library that reads LEF and DEF files, extracts the RC parasitics and generates their corresponding SPEF file.
  • CUGR : CUGR is a VLSI global routing tool

も使われているようです。

Open Source な EDA については、 semiwiki.com にて、見つけることができます。

下図は、OpenLaneのgithubから説明のために引用します。

https://github.com/The-OpenROAD-Project/OpenLane/raw/master/docs/_static/openlane.flow.1.png

各ツールの詳細は、OpenLane Design Stages に詳しく書いてあります。

ビルドしてみた

Windows 11 Pro & WSL2 にて、ビルドしてみた。Dockerベース。

python3 -m venv YYYY
source YYYY/bin/activate
python3 -m pip install pyyaml click

docker の起動

sudo service docker start
git clone https://github.com/The-OpenROAD-Project/OpenLane.git
cd OpenLane/
make pull-openlane
sudo usermod -aG docker <USER>

しても、docker の部分で文句言われたので、とりあえず、sudo 付けちゃえ!

sudo make pull-openlane
make pdk

buildできたので、テスト

make test

マスクデータを klayout で表示。ドキュメントでは、results/spm.gds になっているけど、results/finishing/spm.gds の間違え。

klayout designs/spm/runs/openlane_test/results/finishing/spm.gds

f:id:Vengineer:20211218105652p:plain

OpenLaneって、tcl ベースなの? まー、EDA Tool のコマンドスクリプトは tcl なので。。。?

紹介ブログ

OpenLane と SkyWater PDK (process development kit)については、下記のブログが詳しいです。

take6shin-tech-diary.com

おわりに

もともと、OpenLaneとSkyWater PDKが先で、SiliconCompilerは最近公開されたました。

OpenLaneとSiliconCompilerの違いは、SiliconCompilerは、PythonからOpenRoad等を呼び出しています。ユーザーからは何がどのように起動されているかまでは意識しなくてよく、Python APIとして定義されているものを使えばいいだけなのでPythonユーザーが多い現在の状況ではいいのでは?と思っています。