MAC M1 への OpenLane インストール
2年ぶりに OpenLane の MAC M1 へのインストールを試しましたのでメモを残します。
Dockerインストール
無計画にHDDを使ってパンクさせてしまったので、一度 OS をクリーン・インストールしましたので、以下のサイトより Apple Silicon 版の Docker を改めてインストールしました。
XQuartz インストール
GUI 環境を動かすのに X11 が必要なので、以下のサイトより XQuartz を改めてインストールしました。
run Dockerfile
OpenLane-tools の Docker をスタートします。
% docker run -d -p 80:80 efabless/openlane-tools
Clone OpenLane repository
OpenLane 環境を MAC に git clone してテストします。"Basic test passed" が表示されれば確認完了。
% git clone git@github.com:The-OpenROAD-Project/OpenLane.git
% cd OpenLane
% make
% make test
....
Basic test passed
Docker環境へMACのディレクトリをマウントしてチュートリアルを実行します。
spm のチュートリアルを実行します。”Flow Complete”が表示されれば確認完了。
% make mount
....
OpenLane Container:/openlane % ./flow.tcl -design spm
....
[INFO]: There are no setup violations in the design at the Typical corner.
[SUCCESS]: Flow complete.
Edit Makefile
デフォルトの Makefile では Klayout での GUI 表示が出来ないので、Makefile に MAC OS の際の DISPLAY 関連の設定を追加します。
# Allow using GUIs
UNAME_S = $(shell uname -s)
ifeq ($(UNAME_S),Linux)
DOCKER_OPTIONS += -e DISPLAY=$(DISPLAY) -v /tmp/.X11-unix:/tmp/.X11-unix -v $(HOME)/.Xauthority:/.Xauthority --network host --security-opt seccomp=unconfined
ifneq ("$(wildcard $(HOME)/.openroad)","")
DOCKER_OPTIONS += -v $(HOME)/.openroad:/.openroad
endif
else ifeq ($(UNAME_S),Darwin) # means MAC with XQuartz
DOCKER_OPTIONS += -e DISPLAY=host.docker.internal:0 -v /tmp/.X11-unix:/tmp/.X11-unix -v $(HOME)/.Xauthority:/.Xauthority --network host --security-opt seccomp=unconfined
ifneq ("$(wildcard $(HOME)/.openroad)","")
DOCKER_OPTIONS += -v $(HOME)/.openroad:/.openroad
endif
endif
% make mount
....
OpenLane Container:/openlane % klayout
出来上がった GDSII を表示してみます。
参考:Makefile 動作詳細
Makefile の中で git clone した Local の作業領域( ./OpenLane )の内容と Repogitory の hush 番号と同期した Docker image を使うように設計されている。
% python3 ./dependencies/get_tag.py
e0d2e618a8834e733d28dfcc02fa166941be7e71
e0d2e618a8834e733d28dfcc02fa166941be7e71
が git の hush 番号で以下の Docker イメージを使う。
efabless/openlane:e0d2e618a8834e733d28dfcc02fa166941be7e71
オリジナルから自分の repogitory へ fork した環境を編集して commit してしまうと hush 番号が変わるので正しい Docker image がロードできなくなるので、その際は、環境変数にオリジナルの Docker image 名を設定すれば良い。
export OPENLANE_IMAGE_NAME=efabless/openlane:e0d2e618a8834e733d28dfcc02fa166941be7e71