IIC-OSIC-TOOLS 問題・小技など

IIC-OSIC-TOOLS を使う上での問題や小技などのメモ.

1.[未解決] Container が勝手に落ちる

かなり困っている挙動.ターミナルや起動したツールを何も操作しないまま5分ぐらい経つと,iic-osic-tools のコンテナが落ちます.デザインルールを見たり note の記事を書いているといつのまにか落ちています.たまにいずれかのウィンドウをクリックすれば防げるんですが,けっこうストレス溜まります.誰か解決方法教えてください.

2.Klayout の設定初期化問題

Klayout の記事にも書いていますが,/headless/.klayout の下はコンテナを起動するごとに大胆に初期化されます.ユーザが不意に環境を壊してしまわないように,ということだと思うんですが,カスタマイズして使いたい人にとってはちょっと辛い.

2.1 IIC-OSIC-TOOLS の用意しているもの

いちおう IIC-OSIC-TOOLS では editing mode で起動する ke が alias として .bashrc に登録されています.

alias k='klayout -c $SAK/klayout/tech/sky130A/sky130A.krc -nn $PDKPATH/libs.tech/klayout/sky130A.lyt -l $PDKPATH/libs.tech/klayout/sky130A.lyp'
alias ke='klayout -e -c $SAK/klayout/tech/sky130A/sky130A.krc -nn $PDKPATH/libs.tech/klayout/sky130A.lyt -l $PDKPATH/libs.tech/klayout/sky130A.lyp'
alias kf='klayout -c $SAK/klayout/tech/sky130A/sky130A.krc -nn $PDKPATH/libs.tech/klayout/sky130A.lyt -l $PDKPATH/libs.tech/klayout/sky130A-fom.lyp'

ちなみに .bashrc を編集しても無駄です.起動するごとに初期化されます.というか /foss/designs 以外のファイルはすべて初期化されます.

2.2 設定だけでも保存したい

設定ファイルは起動時の -c オプションで指定することができます. /foss/designs/ の下のどこかに自分の klayoutrc を用意しておいて,

% klayout -c klayoutrc

で起動すれば,起動後におこなった設定もすべて指定した klayoutrc に保存されます.

2.3 シェルスクリプトでいろいろ

設定は -c で何とかなりますが,DRC/LVS のルールとかライブラリとかは毎回設定する必要があります.シェルスクリプトでやりましょう.

  • 設定 (klayoutrc) → -cオプションで指定

  • DRC/LVS → .klayout/tech/sky130A/{drc|lvs} の下にスクリプトを置けばよい

  • セルライブラリ → .klayout/libraries の下に GDSファイルを置けばよい

ということで以下のようなスクリプトから起動すると手間が省けます.
(リポジトリ skywater-130nm-examples/tools/klayout.sh)

#!/usr/bin/bash

CONFIG_FILE=/foss/designs/klayoutrc
LIBRARIES=/headless/.klayout/libraries
KLAYOUT_TECH=/headless/.klayout/tech/sky130A
LIB_REF=/foss/pdks/sky130A/libs.ref

# copy GDS files to libraries
if [ ! -e ${LIBRARIES} ]; then
	mkdir ${LIBRARIES}
	cp ${LIB_REF}/sky130_fd_pr/gds/sky130_fd_pr.gds ${LIBRARIES}/
	cp ${LIB_REF}/sky130_fd_sc_hd/gds/sky130_fd_sc_hd.gds ${LIBRARIES}/
fi

# set DRC/LVS rules
if [ ! -e ${KLAYOUT_TECH}/drc ]; then
	mkdir ${KLAYOUT_TECH}/drc
	cp ${KLAYOUT_TECH}/sky130A.lydrc ${KLAYOUT_TECH}/drc/
fi
if [ ! -e ${KLAYOUT_TECH}/lvs ]; then
	mkdir ${KLAYOUT_TECH}/lvs
	cp ${KLAYOUT_TECH}/sky130A.lylvs ${KLAYOUT_TECH}/lvs/
fi

# launch Klayout
klayout -c $CONFIG_FILE


この記事が気に入ったらサポートをしてみませんか?