見出し画像

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 を表示してみます。

MACのスクショ

参考: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



いいなと思ったら応援しよう!