← 講義ポータルへ戻る

第3章:skidlを自分のPCで動かす

この章の学習のねらい
この章から手を動かします。ゴールは、skidlを自分のPCに入れて、いちばん小さな回路を1つコードで書き、ネットリストが出力されるところまでを通すことです。今回のボードそのものは、まだ作りません。まずは道具が自分の環境で動くことを確かめます。ここでつまずきやすいのは回路の中身ではなく、環境まわり(部品ライブラリの在り処)なので、そこを重点的に案内します。

3.1 skidlは何を要求するか(Python前提・ローカル実行前提)

skidlは、Pythonのパッケージです。特別なアプリではなく、あなたのPCのPythonから読み込んで使う「部品」です。したがって前提は2つだけ。Pythonが動くことと、部品の形(シンボル)を参照するためにKiCadのライブラリがPCにあることです。KiCad入門でKiCadを入れていれば、後者はもう手元にあります。

このコースはすべて自分のPC(ローカル)で動かす方針で進めます。クラウドや外部サービスに送らず、コードもネットリストも手元で完結させます。理由は単純で、そのほうが速く、確実で、何が起きているかが見えるからです。まず、作業用のフォルダを1つ決め、そこにこのコースのコードを置いていきましょう。

用語:仮想環境(venv)
Pythonでは、プロジェクトごとに使うパッケージを隔離する仮想環境(venv)を作るのが定番です。こうしておくと、skidlや関連パッケージが、PC全体のPython設定を汚さずに済みます。必須ではありませんが、後々のトラブルを減らせるので、このコース専用のvenvを1つ作ってから進めることをおすすめします。作り方はお使いのOS・Python版で少しずつ違うので、Python公式の手順に合わせてください。

3.2 導入:pipでskidlを入れる

skidlの導入自体は一行です。ターミナル(コマンドプロンプト/PowerShell/シェル)で、次を実行します。

pip install skidl

入ったかどうかは、Pythonを起動して読み込めるかで確かめられます。エラーなくバージョンが表示されれば、導入は成功です。

python -c "import skidl; print(skidl.__version__)"
版番号や導入手順は、変わる前提で

skidlも、それが参照するKiCadも、版が上がるごとに細かい作法が変わります。対応するKiCadのバージョン、推奨されるインストール方法、パッケージ名の細部などは、時期によって変わります。本章はいちばん素直な入れ方を示しますが、うまくいかないときは、skidl公式(PyPI/GitHub/ドキュメント)の最新の案内を必ず確認してください。この講座は「考え方」を伝えるもので、具体的な版・手順は公式が正です。

3.3 いちばんのつまずき:KiCadのシンボルライブラリの在り処

skidlで最初にほぼ全員がつまずくのが、ここです。skidlは部品(抵抗やコンデンサ)を Part("Device", "R") のように名前で呼び出しますが、その「部品の実体」はKiCadのシンボルライブラリの中にあります。skidlに「ライブラリはここにあるよ」と教えていないと、部品を呼び出せず、エラーになります。

教え方は、環境変数 KICAD_SYMBOL_DIR に、KiCadのシンボルフォルダの場所を設定するのが基本です。フォルダの場所は、OSとKiCadの入れ方によって違います。代表的な在り処を早見表にします(あくまで“よくある場所”なので、見つからなければご自身の環境で探してください)。

KiCadシンボルライブラリの「よくある場所」(環境で異なる)
OS・入れ方よくあるパス(例)
Windows(標準インストール)C:\Program Files\KiCad\...\share\kicad\symbols
Linux(パッケージ導入)/usr/share/kicad/symbols
Linux(Flatpak)/var/lib/flatpak/app/org.kicad.KiCad/current/active/files/share/kicad/symbols
macOS(アプリ)/Applications/KiCad/KiCad.app/Contents/SharedSupport/symbols

場所がわかったら、環境変数に設定します。設定の書き方もOSで違います。

KICAD_SYMBOL_DIR の設定(例)
  • Linux / macOS(一時的に、そのターミナルだけ):
    export KICAD_SYMBOL_DIR="/usr/share/kicad/symbols"
  • Windows(コマンドプロンプト、一時的):
    set KICAD_SYMBOL_DIR=C:\Program Files\KiCad\...\share\kicad\symbols
  • ずっと有効にしたいなら、OSの環境変数設定(シェルの設定ファイルや、Windowsのシステム環境変数)に登録します。
つまずきポイント:部品が「見つからない」と言われたら、まずここ
Part("Device", "R") のところで「ライブラリが見つからない」「部品が解決できない」という趣旨のエラーが出たら、ほぼ KICAD_SYMBOL_DIR の設定漏れか、パスの間違いです。回路の書き方を疑う前に、(1) その環境変数が設定されているか、(2) 指し示すフォルダが実在するか、(3) その中に Device.kicad_sym のような .kicad_sym ファイルが並んでいるか――この3点を確認してください。ここさえ設定できれば、あとで大きく詰まる所はありません。

3.4 最小回路を書いてみる(分圧器)

環境が整ったら、いちばん小さな回路を1つ書きます。定番の分圧器(抵抗2本)で、skidlの“つなぐ順に書く”感触をつかみましょう。今回のボードとは関係ない、純粋な足慣らしです。次のコードを、作業フォルダに divider.py として保存します。

from skidl import *

# 3つのネット(電気的な網)を用意する
vin, vout, gnd = Net('VIN'), Net('VOUT'), Net('GND')

# 抵抗を2本、テンプレートから作る(フットプリントは2012/0805)
r1, r2 = 2 * Part("Device", 'R', dest=TEMPLATE,
                  footprint='Resistor_SMD.pretty:R_0805_2012Metric')
r1.value = '1k'
r2.value = '2k'

# つなぐ順に書けば、それが結線になる
# VIN -- r1 -- VOUT -- r2 -- GND
vin & r1 & vout & r2 & gnd

# 電気的ルールチェック(つなぎ忘れ等の点検)
ERC()

# ネットリストを出力する
generate_netlist()

注目してほしいのは、まん中の一行です。

vin & r1 & vout & r2 & gnd

これだけで、「VINに抵抗r1、その先がVOUT、さらに抵抗r2、その先がGND」という直列のつながりが表現できています。第2章で見た「つなぐ順に書けば、それが結線になる」が、まさにこれです。図を描かず、関係を文章のように書き下しています。

実行してみる
  1. ターミナルで、保存したフォルダに移動します。
  2. python divider.py を実行します。
  3. エラーなく終わり、フォルダにネットリストのファイル(拡張子 .net など)ができていれば成功です。
出力先やKiCadの版を指定したいとき

generate_netlist() は、引数で出力ファイル名や、対象とするKiCadの版(tool=)を指定できます。どの版の指定名が使えるか、既定でどの版に向くかはskidlの版によって変わるので、ここは公式の案内に合わせてください。まずは引数なしで動かし、出力された .net ファイルを次項で覗いてみるところから始めれば十分です。

3.5 出てきたネットリストを、目で確かめる

生成された .net ファイルを、テキストエディタで開いてみてください。中身は、「どの部品の、どのピンが、どのネットにつながっているか」の一覧――第2章で話した名前の対応表そのものです。たとえば VOUT というネットのところに、r1 の片脚と r2 の片脚がぶら下がっているのが読み取れるはずです。自分が書いた一行(vin & r1 & vout & r2 & gnd)が、確かにこの対応表になっている――それが確認できれば、この章のゴールです。

用語:ERC(Electrical Rules Check=電気的ルールチェック)
コード中の ERC() は、つなぎ忘れ・電源の衝突・出力どうしのぶつかりといった、よくある電気的なミスを機械的に洗う点検です。KiCad入門の回路図で行ったERCと、ねらいは同じもの。絵を描かなくても、コードの段階で機械に間違い探しをさせられる――これが、第2章で挙げた「コードにすると効く」点の一つでした。警告が出たら、その内容を読んで、つなぎ忘れがないかを確かめてください。

“確かめる図”も出せる(任意)

第2章で触れたとおり、skidlは書いた結線からつながりの図も出せます(SVGのつながり図や、部品とネットのグラフ)。今の分圧器で試すと、2本の抵抗がネットで結ばれた素朴な図が得られます。見た目は簡素ですが、「意図どおりつながっているか」を目で確かめるのに便利です。これらの関数名や使い方も版で変わりうるので、使ってみたいときは公式の最新ドキュメントを参照してください。ここでは「ネットリストが出せた」だけで先へ進んで構いません。

3.6 次章への橋渡し

この章のゴール
  • skidlを自分のPCに導入した(pip install skidl → import できた)
  • 最大の関門 KICAD_SYMBOL_DIR を設定し、部品が呼び出せる状態にした
  • 最小回路(分圧器)を vin & r1 & vout & r2 & gnd の一行で結線し、実行した
  • generate_netlist() でネットリストを出し、中身(名前の対応表)を目で確かめた
  • ERC() で機械に間違い探しをさせた

道具が動くことを確かめました。ここまで来れば、あとは「何をつなぐか」を書くだけです。次章では、今回のボード(第1章で決めた、電源部つきのCH32V003ボード)の結線を、コードで書き下します。基本形の結線と、新しく足した電源部(VIN_5V)を、この分圧器と同じ要領で組み上げ、ネットリストを作り、機械に検算させます。足慣らしは終わり。次は本番のボードです。