はじめに
前回、古い Intel Mac に Re:VIEW 環境を構築してみました。
正直なところ、「さすがにもう厳しいのでは」と思いながらやってみましたが、実際に動かしてみると、まだ十分に原稿作成に使えることが分かりました。
それなら次は――。
次の技術同人誌として書いてみたいと考えている
オープンソースのキャラクタライズツール Libretto も、この古い Mac で動かせないだろうか。
たぶん、LibrettoはPDKごとに入れるのではなく、一つの環境で各種PDKに対応できそうなので、Re:VIEWのように一つの環境(一つのマシン)でどこまでできるのか試してみたい。
それに、技術同人活動では、「環境を自分で組み立てて理解する」こと自体が一つの楽しみでもあります。
とはいえ、今回の環境は:
- Intel Mac 2015年物
- macOS 12(Monterey)
- すでにサポートが薄くなりつつある世代
という条件です。
実際に試してみると、
- Homebrew が macOS 12 を Tier3 扱いしている
- gcc のビルドで止まる
- Python の
pip installがブロックされる
といった、いくつかの壁にぶつかりました。
それでも構成を工夫することで、最終的には
-
.libの生成 - PDF データシートの出力
まで問題なく動作するところまで到達できました。
この記事では、
Intel Mac(macOS 12)で Libretto を動かすまでの手順
を整理してまとめます。
まず Homebrew と MacPorts
macOS で開発ツールを入れる際に使うのが
パッケージ管理システムです。
🍺 Homebrew
🍏 MacPorts
Homebrew は最も普及しているツールですが、
macOS 12 は現在 **Tier3(非サポート扱い)**となっています。
そのため今回は、古い macOS でも比較的安定して動く MacPorts を使用しました。
実際に、
This build failure was expected.
This is a Tier 3 configuration.
というエラーが表示されました。
そのため今回は、
安定性を優先して MacPorts を使用
しました。
環境
- Intel Mac 2015年物
- macOS 12 (Monterey)
- Libretto
https://github.com/snishizawa/libretto
1. ngspice インストール
Xcode CLI Tools
xcode-select --install
MacPorts インストール
公式サイトから macOS 12 用パッケージをインストール。
https://www.macports.org
ngspice インストール
sudo port selfupdate
sudo port install ngspice
確認:
which ngspice
ngspice -v
通常:
/opt/local/bin/ngspice
2. pandoc インストール(PDF出力用)
sudo port install pandoc
3. Libretto 取得
git clone https://github.com/snishizawa/libretto.git
cd libretto
4. Python 仮想環境作成
macOS + Homebrew Python では
システム領域への pip install が制限されることがあります。
そのため venv を使用します。
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install numpy matplotlib scipy pandas
確認
python -c "import numpy; print(numpy.__version__)"
5. Makefile 修正(重要)
毎回 source .venv/bin/activate しなくても済むように、
Makefile で venv の Python を直接指定します。
Makefile の先頭に追加:
PYTHON := .venv/bin/python3
そしてすべての python3 を以下に変更:
$(PYTHON)
例:
time $(PYTHON) script/libretto.py -b $(CMD_FILE)
6. prep を .lib の前に必ず実行(work自動作成)
Makefileにコメントで残っている行を有効にします。
- #$(LIB):prep $(MODEL)
- $(LIB): $(MODEL)
+ $(LIB): prep $(MODEL)
+ #$(LIB): $(MODEL)
これで make だけで work/ が確実に作られます。
7. 実行
Makefile は、冒頭で対象プロセスを切り替えるスタイルです。
PROCESS_NAME := OSU350
#PROCESS_NAME := SKY130
CONDITION := TCCOM
make
成功例:
-- dotlib file generation completed!!
-- 2 cells generated!!
生成物:
OSU350_5P0V_25C.lib
OSU350_5P0V_25C.pdf
結論
Intel Mac + macOS 12 環境でも、
- MacPorts
- ngspice
- pandoc
- Python venv
- Makefile 修正
を組み合わせることで、Libretto は問題なく動作します。
古い Mac でも十分戦えます。