KiCadデータをKiCad-Diffを使ってデータを比較してみた

PCBの比較を簡単にできないだろうかと考えて"KiCad-Diff"を見つけました。環境構築が簡単かなと思いチャレンジしたところ、事前準備が大変でしたのでブログにまとめました。
2022.04.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちはCX事業本部IoT事業部のさかじです。
PCBの比較を簡単にできないだろうかと考えてKiCad-Diffを見つけました。環境構築が簡単かなと思いチャレンジしたところ、事前準備が大変でしたのでブログにまとめました。

環境

  • Windows10
  • Ubuntu(WSL)

前提条件

  • PowerShellでWSLのLinuxディストリビューション
> wsl --list
Linux 用 Windows サブシステム ディストリビューション:
Debian (既定)
Ubuntu

> wsl --list --verbose
  NAME      STATE           VERSION
* Debian    Running         2
  Ubuntu    Stopped         2
  • Ubuntuバージョン
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.4 LTS
Release:        20.04
Codename:       focal
  • Pythonバージョン
$ python3 --version
Python 3.8.10

環境構築

Windows10とWSL上のUbuntuへツール類をインストールします。混乱しますが気をつけて実施します。

[Ubuntu] KiCadインストール

sudo add-apt-repository --yes ppa: ppa:kicad/kicad-5.1-releases
sudo apt update
sudo apt install --install-recommends kicad

[Ubuntu] KiCad-Diff必要ライブラリインストール

$ git clone git@github.com:Gasman2014/KiCad-Diff.git
$ cd KiCad-Diff
$ pip3 install -r requirements.txt

[Ubuntu] Tknterインストール

$ sudo apt install python3-tk

[Windows10] VcXsv Windows X Serverのインストールと設定

TknterはGUIプログラムを動かすライブラリです。Tknter単体では動作しませんのでGUIの動作できるように環境を整えます。

  • ダウンロード
    https://sourceforge.net/projects/vcxsrv/

  • インストーラー起動して必要なチェックボックスをクリックして "Next"をクリック
    VcXsv Windows X Serverのインストール

  • インストール先を選択して"Install"をクリック
    表示されているパスはデフォルトです。
    VcXsv Windows X Serverのインストール2

  • "close"をクリックしてインストール終了
    VcXsv Windows X Serverのインストール3

  • スタートメニューからXLaunchを起動
    VcXsv Windows X Serverのインストール4

  • "Multiple windows"を選択して"次へ"をクリック VcXsv Windows X Serverのインストール5

  • "Start no client"を選択して"次へをクリック VcXsv Windows X Serverのインストール6

  • "Additional parameters for VcXsrv"へ-acを入力して"次へ"をクリック VcXsv Windows X Serverのインストール7

  • "完了” をクリック
    VcXsv Windows X Serverのインストール8

  • タスクバーにある数値を確認
    今回は :0.0 出力先の番号を確認

[Ubuntu] 環境変数設定

  • ~/.bash_profileへ環境変数追加
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0
  • .bash_profileを読み込み
$ source ~/.bash_profile

[Ubuntu] Tkinterの起動確認

以下のコマンドをUbuntu上で実行してダイアログが表示されることを確認

$ python3 -m tkinter

起動確認

[Ubuntu] KiCad-Diffのパス登録

README.mdには $ source env.shを実行するようあったのですが、私の環境では動作しなかったため以下のようにenv.shを書き換えて実行

  • 差分
$ git diff
diff --git a/env.sh b/env.sh
--- a/env.sh
+++ b/env.sh
@@ -42,7 +42,7 @@ readlink_()
        esac
 }

-script=$(readlink_ "$0")
+script=$(readlink_ "./kidiff")
 script_path=$(dirname "$script")

 export PATH="${script_path}":$PATH
$
  • 実行
$ source ./env.sh

比較してみた

簡単な回路作成

回路図

アートワーク作成

  • 初回
    抵抗を横向きにおいてみました。
    アートワーク1

  • 2回目 抵抗を縦向きに変更。 アートワーク2

これらの変更をgitで保存しています。

KiCad-Diffの起動

Ubuntu上で回路が保存されているKiCadのプロジェクトへ移動して以下のコマンドを実行すると起動します。

$ kidiff ./kicad-diff-test.kicad_pcb

比較

今回は2つの差分しか有りませんので、この2つを履歴を選択した状態で"OK"をクリック

KiCad-Diff起動時

Webブラウザが起動してレイヤーごとに差分が表示されます。 KiCad-Diff起動時

レイヤーの違いを個別に見たい場合には対応するレイヤーをクリックします。レイヤーごとの差分、拡大縮小が可能です。

比較結果

終了

Webブラウザを閉じるだけですと終了できません。UbuntuのコンソールからCtrl+Cでプログラムを終了させてください。

補足

WSLのDebianではPythonのバージョンが古く動作確認できませんでした。Ubuntuを使うことで回避しましたが、Debianを使用する場合にはPythonのバージョンアップ作業が必要になります。

参考サイト

最後に

今回は簡単なもので比較しましたが、少し込み入った回路ですと比較が非常に大変です。簡単に環境構築ができず少し手間取りましたが、使うと非常に強力なツールだと思います。