見出し画像

Skywater 130 nm設計環境の準備 (IIC-OSIC-TOOLS)

1.目的

all-in-one の設計環境である IIC-OSIC-TOOLS を準備します.
IIC-OSIC-TOOLS は Institute for Integrated Circuits (IIC), Johannes Kepler University (JKU) によって監修されている設計環境の Docker container です.PDKも含めた環境がまとめて揃うので大変便利.OSIC ははっきりした記述がないですがたぶん Open-Source IC の略.

2.必要なツール群の準備

IIC-OSIC-TOOLS は Docker container なので Docker が必要です.あと最新のものを取ってくるための git,画面表示のための X Server が要ります.動作確認は基本的に Windows 10 の上で行なっています.

2.1 Docker

https://www.docker.com/ から Docker Desktop を入れます.起動したらこんな感じ.場合によっては WSL2 の更新が必要となり,この画面が "Docker Engine stopping…" で起動しないことがあります.WSL2 の更新についての案内が出るので,それに従って更新してください.何回か再起動が必要です.

Docker Desktop 起動画面

正常に起動すると,少しして下のような画面になります.この画面からコンテナの状態を確認することができます.

コンテナ一覧

メモ:Linux でも docker をインストールすれば動く.が,rootless docker でやろうとしたら権限があれこれでうまく行かない.

2.2 git

https://gitforwindows.org/ から git for windows を入れます.2022年7月16日時点での最新バージョンは 2.37.1.
インターフェースが CLI,GUI,Bash とありますが Git Bash を使います.起動するとこんな画面.

Git Bash起動画面

2.3 X-server

https://sourceforge.net/projects/vcxsrv/  から VcXsrv を入れます.2022年7月16日時点の最新バージョンは 1.20.14.Mac の場合は XQuartz https://www.xquartz.org/  がいいらしいです.

VcXsrv は Xlaunch を起動するとまず設定画面が起動します.IIC-OSIC-TOOLS の推奨設定で起動しましょう.詳細は IIC-OSIC-TOOLS の README.md  の "Installing X-Server" セクションを読んでください.設定項目は以下の通りです.

  • Multiple windows (デフォルト)

  • Display number: 0 (デフォルトは -1)

  • Start no client (デフォルト)

  • Clipboard, Primary Selection, Native opengl, Disable access control をすべてチェック (デフォルトでは Disable access control のチェックは入っていない)

設定の最後に「完了」ボタンを押すと X-server が起動しますが,毎回設定するのは面倒なので Save configuration で設定を保存しましょう.設定ファイル (config.xlaunch) をダブルクリックすることで,その設定で起動します.起動直後は何もウィンドウは開きません.タスクトレイにアイコンが表示されます.

タスクトレイの VcXsrvアイコン

3.IIC-OSIC-TOOLSのインストール

環境が揃ったらインストールします.Git Bash を起動して,適当なフォルダを作ります.とりあえず skywater にしておきます.そのフォルダに移動したら git clone します.

$ mkdir skywater
$ cd skywater
$ git clone https://github.com/hpretl/iic-osic-tools.git
git clone の結果

clone ができたら,iic-osic-tools の中の start_vnc.bat  を実行します.start_vnc.bat  は VNCサーバでの起動コマンドですが,必要なツールがインストールされていない場合は自動的にインストールするので,インストールスクリプトを兼ねています.

$ cd iic-osic-tools
$ ./start_vnc.bat

すべてのツールを取得するので,それなりに時間がかかります.環境によると思いますが,10分ぐらいかかりました.

4.IIC-OSIC-TOOLS の起動

IIC-OSIC-TOOLS の起動方法には2種類あり,VNC を使う方法 (start_vnc.bat)と X-server を使う方法 (start_x.bat) があります.VNC を使うと X-server を必要とせず,ブラウザ上でリッチなGUIが使える…んですが,正直重いし快適ではないので X-server を使いましょう.

4.1 X-server を使う場合

(先に X-server が起動している状態で) start_x.bat  を実行します.

$ ./start_x.bat

ちなみに start_x.bat  は Git bash から起動してもいいですし,Power Shell などからでも起動できます.好きなシェルから起動しましょう.

Power Shell から起動したところ

正常に起動すると,下のようなターミナルが現れます.このターミナルから各種ツールを実行します.

start_x.bat  で起動するターミナル (bash)

これで 必要なツールがすべて使えるようになりました.

4.2 VNCサーバを起動する場合

start_vnc.bat  を起動します.

 $ ./start_vnc.bat

起動すると,ブラウザから http://localhost/ にアクセスすることで下のようなデスクトップ環境が使えます.パスワードはデフォルトで "abc123" です.

VNCで使えるデスクトップ環境 (Xfce)

ウィンドウマネージャは Xfce です.左下のボタンからいろいろ起動できます.

5.ファイルのやりとり

IIC-OSIC-TOOLS 内とホストOS側でファイルをやりとりするには2つの方法があります.

5.1 バインドマウントされたフォルダを参照

Docker にはホスト内のディレクトリをコンテナ内にマウントするバインドマウントという仕組みがあり,IIC-OSIC-TOOLS ではこの仕組みを使っており,ターミナルを起動したときのディレクトリ /foss/designs の実体は実はホスト側にあります.つまり /foss/designs 以下のファイルは特に何もしなくてもホスト側からアクセスできます.

起動スクリプト (start_x.bat) を見ると,docker は " -v "%DESIGNS%":/foss/designs" オプションつきで起動されており,DESIGNS は特に指定がなければ DEFAULT_DESIGNS=%USERPROFILE%\eda\designs を向いています.よく分からなければ Docker Desktop から確認できます.コンテナ一覧からコンテナの Inspect を見ると,以下のように "Mounts" のところにどこをマウントしているかが表示されます.

コンテナのInspect

5.2 docker cp

ちょっと面倒ですが docker cp を使ってもコピーできます.Usage は以下の通り.

"docker cp" requires exactly 2 arguments.
See 'docker cp --help'.

Usage: docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

Copy files/folders between a container and the local filesystem

CONTAINER ID は Docker Desktop のコンテナ一覧の画面からコピーできます.

Docker Desktop のコンテナ一覧

"b0815ea9bb43" のところです.実際には表示されているより長いです.横の Copy to  clipboard ボタンでコピーしましょう.あとは Power Shell で

docker cp {CONTAINER ID}:/foss/designs/hogehoge ./

とすれば IIC-OSIC-TOOLS 内のファイルをコピーできます.

6.サンプルファイル

記事で使用した例のファイルを github (atuchiya/skywater-130nm-examples)で公開しています.git clone でまとめて入手できます.記事ごとにディレクトリを分けており,記事の冒頭に対応するディレクトリを書いてあります.(書き忘れていなければ.)

git clone https://github.com/atuchiya/skywater-130nm-examples.git


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