0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

オープンソースPDKで遊ぼう【第2回】

0
Last updated at Posted at 2026-02-08

Linux Mint 21 で EDA 環境をセットアップする

本記事は、
「オープンソースPDKで遊ぼう【第1回】」の続きとなる第2回です。

第1回では、

  • IC 設計用の Linux 環境を用意する
  • オープンソース PDK を「触って遊ぶ」ための前提を整える

ところまでを扱いました。

今回はその続きとして、
TR10(東海理化)の設計環境を実際に立ち上げるところに進みます。


ISHI会のセットアップスクリプト

TR10(東海理化)の設計環境を立ち上げるにあたり、
まず最初に使ったのが ISHI会で公開されている EDA セットアップスクリプトです。

ISHI会で公開されている EDA セットアップスクリプトは、
以下の GitHub リポジトリで管理されています。

👉 OpenEDA-PDK_SetupScript

このセットアップは、

  • KLayout
  • xschem
  • ngspice
  • 各種依存ライブラリ

をまとめて導入でき、
とてもよく整備されていて、これまでも活用してきました
(インストール方法も、このリポジトリを見れば一通り分かります)。


ところが Linux Mint 21 ではうまくいかなかった

今回使用している OS は Linux Mint 21 です。

Linux Mint 21 は Ubuntu 22.04 ベースなので、
「これまで通り、そのまま動くだろう」と思ってセットアップを実行しました。

ところが、実行してみると
どうもセットアップが途中で止まっているような挙動を示しました。

セットアップがうまく行かないことに気づいたきっかけ

Linux Mint 21 上で ISHI会のセットアップスクリプト(eda-setup.sh)を実行すると、
次のメッセージが表示され、セットアップが途中で停止しました。

take@MintBlue:~/PDKEDA/OpenEDA-PDK_SetupScript$ bash eda-setup.sh
>>>> Update packages
Your platform Ubuntu 21.3 is not supported.

一見すると「Ubuntu 21.3」と表示されており少し混乱しますが、
これは Linux Mint 21.3 の VERSION_ID がそのまま表示されている状態です。

そこで、セットアップスクリプト(eda-setup.sh)の中身を確認してみると、
Ubuntuのバージョンチェック処理が入っていることが分かりました。

Linux Mint 21 は Ubuntu 22.04 ベースですが、
ID や VERSION_ID が Ubuntu と異なるため、
スクリプト側で 「未サポート OS」と判断されて exit していたようです。

また、スクリプト自体も更新されており、
OS 判定が以前より厳密になっていることも分かりました。


Linux Mint を使いたいので、最小限だけ手を入れることにした

私は普段から Linux Mint を気に入って使っているため、
この環境で TR10 の設計環境を整えたいと考えました。

そこで、

  • ツールの内容は一切変更せず
  • OS 判定と KLayout の取得分岐だけ
  • 最小限の修正

を行い、Linux Mint 21 でもセットアップできるようにしました。

本記事では、

  • どのセットアップスクリプトを使ったか
  • Linux Mint 21 でどこが問題になったか
  • どこをどう修正したか
  • 実際に動作確認できたか

差分付きで解説します。

第1回を読んで環境を用意した方は、
そのまま続けて試せる内容になっています。
(下記クリックで差分表示)

差分① OS 判定の修正(Mint 21 を許可)
--- eda-setup.sh
+++ eda-setup-mint21-minfix-klayoutdeb.sh
@@ -88,13 +87,13 @@
   OS='Linux'
   . /etc/os-release
-  if [ "$(expr substr $VERSION_ID 1 5)" == '22.04' ]; then
-    echo "Your platform is Ubuntu $VERSION_ID."
-  elif [ "$(expr substr $VERSION_ID 1 5)" == '24.04' ]; then
-    echo "Your platform is Ubuntu $VERSION_ID."
-  else
-    echo "Your platform Ubuntu $VERSION_ID is not supported."
-    exit 1
-  fi
+  if [[ "$ID" == "ubuntu" ]]; then
+    echo "Your platform is Ubuntu $VERSION_ID."
+  elif [[ "$ID" == "linuxmint" && "$VERSION_ID" == 21* ]]; then
+    echo "Your platform is Linux Mint $VERSION_ID (Ubuntu 22.04 base)."
+  else
+    echo "Warning: this platform may be untested; continuing..."
+  fi
差分② KLayout の .deb 取得分岐(Mint 21 → Ubuntu-22 扱い)
--- eda-setup.sh
+++ eda-setup-mint21-minfix-klayoutdeb.sh
@@ -307,13 +297,15 @@
   pip install docopt pandas pip-autoremove --break-system-packages
   if [ "$(expr substr $(arch) 1 6)" == 'x86_64' ]; then
-    if [ "$(expr substr $VERSION_ID 1 5)" == '22.04' ]; then
+    if [ "$ID" == 'linuxmint' ] && [ "$(expr substr $VERSION_ID 1 2)" == '21' ]; then
+      # Linux Mint 21.x is based on Ubuntu 22.04 (jammy)
+      wget https://www.klayout.org/downloads/Ubuntu-22/klayout_$KLAYOUT_VERSION-1_amd64.deb
+    elif [ "$(expr substr $VERSION_ID 1 5)" == '22.04' ]; then
       wget https://www.klayout.org/downloads/Ubuntu-22/klayout_$KLAYOUT_VERSION-1_amd64.deb
     elif [ "$(expr substr $VERSION_ID 1 5)" == '24.04' ]; then
       wget https://www.klayout.org/downloads/Ubuntu-24/klayout_$KLAYOUT_VERSION-1_amd64.deb
     else
-      echo "Your platform Ubuntu $VERSION_ID is not supported."
-      exit 1
+      echo "Warning: this platform may be untested; continuing..."
     fi
     sudo apt -qq install -y ./klayout_$KLAYOUT_VERSION-1_amd64.deb
差分③ 未サポート OS で exit していた箇所の修正
--- eda-setup.sh
+++ eda-setup-mint21-minfix-klayoutdeb.sh
@@ -186,11 +180,9 @@
   elif [ "$(expr substr $(uname -s) 1 10)" == 'MINGW32_NT' ]; then
     OS='Cygwin'
-    echo "Your platform ($(uname -a)) is not supported."
-    exit 1
-  else
-    echo "Your platform ($(uname -a)) is not supported."
-    exit 1
+    echo "Warning: this platform may be untested; continuing..."
+  else
+    echo "Warning: this platform may be untested; continuing..."
   fi

セットアップ後の確認

KLayout

KLayout を起動すると、通常の GUI が表示されます。

> klayout &

右上で IP62 が選択できれば、TR10 用の設定が正しく読み込まれています

klayout.png

また、samples フォルダ以下に GDS ファイルが含まれています。
KLayout で File → Open から GDS を開ければ、環境は正しく構築されています。


xschem

xschem を起動すると、TR10 用のスケマテンプレートが表示されます。

> xschem &

xschem.png

ここまで表示されれば、PDK の読み込みは問題ありません。


ngspice

xschem に付属するサンプルスケマを開き、以下を実行します。

xschem.png

Netlist → Simulate

ngspice が起動し、解析が実行できれば
xschem ↔ ngspice の連携も含めて正常です。
ただしそのままだとエラーが出ると思いますので、少し手を加える必要があります。この点(回路設計、レイアウト設計)については次回以降に解説します。


まとめ

  • Linux Mint 21 は Ubuntu 22.04 ベース
  • OS 判定KLayout の取得分岐が原因でセットアップが停止する
  • 最小限の修正で Ubuntu と同じ EDA 環境が構築できる
  • TR10(東海理化) を Linux Mint 21 でも問題なく試せる

おわりに:ISHI会セットアップスクリプトのすごいところ

今回は TR10(東海理化) を例に
EDA 環境のセットアップを行いましたが、
ISHI会のセットアップスクリプトの魅力は それだけに留まりません

このスクリプトを使うことで、

  • Phenitec
  • Minimal Fab
  • IHP
  • SkyWater130
  • GF180MCU

など、複数のオープンソース/公開 PDK の設計環境を簡単に立ち上げることができます

PDK ごとに個別に環境を作る必要がなく、
共通の EDA ツール環境の上で、
PDK を切り替えながら試せるのは非常に大きな強みです。


まずは一つ立ち上げて、PDK を楽しもう

最初からすべてを理解しようとする必要はありません。

  • まずは一つ PDK を立ち上げてみる
  • 回路を書いてみる
  • レイアウトを眺めてみる
  • シミュレーションを回してみる

そこから自然と、

「他の PDK ではどうなっているんだろう?」

という興味が湧いてきます。

環境構築のハードルを下げてくれる
この ISHI会のセットアップスクリプトは、
オープンソース PDK を「遊びながら学ぶ」ための
とても良い入口だと思います。

まずは一つ立ち上げて、
そこからいろいろな PDK を楽しんでみましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?