Open2

openlane gfmpw-1b 環境構築メモ

デブ柴犬デブ柴犬

OpenMPW(GFMPW-1)に参加するためのopenlaneとcaravelの環境構築

M1-Macを使ってるので参考になる人は少ないと思われる。
バグが何個かあるので修正しないといけない(バグが残ってるのになぜ募集を開始したのだろうか?)
前提条件:xquartzとdockerをインストール済み

openlaneの環境構築

git clone

GFMPW-1のページによると、gfmpw-1bを引っ張ってこいとのこと。

git clone -b gfmpw-1b https://github.com/efabless/caravel_user_project.git

detached HEAD状態になるので、直してあげる。

git checkout -b <branch name> gfmpw-1b

OpenMPW入門 改訂版によると、いくつか環境変数を設定してあげないといけないようだ。makefileを見たところ、この環境変数をよしなに設定してくれそうな雰囲気を感じるが、ダメだった。ちゃんと設定しよう。

# こいつは要らないけどあったほうが便利だと思う
export CARAVEL_USER_PROJECT=$(pwd)/caravel_user_project
# この3つの環境変数が必要
export OPENLANE_ROOT=${CARAVEL_USER_PROJECT}/dependencies/openlane_src
export PDK_ROOT=${CARAVEL_USER_PROJECT}/dependencies/pdks
export PDK=gf180mcuD

setup

まずcd $OPENLANE_ROOTする。そこにあるmakefileがおかしいので修正する

$OPENLANE_ROOT/Makefile
ifeq ($(PDK),gf180mcuC)                                               
PDK_FAMILY = gf180mcu    
endif                                
ifeq ($(PDK),gf180mcuD) # この3行を追加する                             
PDK_FAMILY = gf180mcu  # もしかしたらOpenlane側でもう修正されてこの手順は不要かもしれない
endif    #

終わったら

make pdk
make setup

test

以上でopenlaneの環境構築が終わった。一応確認しておく
make testしてBasic test passedと出れば問題なくインストール出来ている。

GUIの設定(Linuxならこの手順は不要)

まずはxhost +localhostを実行。

次に、再び$OPENLANE_ROOT/Makefileを修正する。
X Window関連のDockerオプションの設定を行う部分があるが、Linuxの場合しかない(なんで???)ので、Macの場合の記述を追加してあげる。else ifeq...Darwinの箇所。DISPLAY=host.docker.internal:0にしないとダメだった。もっといい方法があれば教えてください!!!!!!

$OPENLANE_ROOT/Makefile
# 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)                                            
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             

klayout

引き続き$OPENLANE_ROOTで作業する。make mountでDocker環境に入ったあと

/openlane
.flow.tcl -design spm

でspmとかいうデザインをビルドする。終わったら

/openlane
klayout designs/spm/runs/RUN_<time stamp>/results/final/gds/spm.gds

でレイアウトを確認できる。

spm layout
やったぜ!

デブ柴犬デブ柴犬

Caravelの環境構築

実は上記の手順でCaravelとOpenLaneを両方インストールしてくれている。なので特にやることはない。

Caravelの動作確認

cd $CARAVEL_USER_PROJECT
make user_proj_example
make user_project_wrapper
klayout gds/user_project_wrapper.gds