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?

ワークフロー編からの続きです


KiCad Gerber → openEMS → .s4p 出力 → PyBERT解析を行うための環境構築手順をまとめます

1. 動作確認をした環境

WSL2
Ubuntu 24.04 LTS
Python 3.12

必要なUbuntuパッケージ

sudo apt update
sudo apt install -y \
  git \
  build-essential \
  cmake \
  g++ \
  make \
  pkg-config \
  python3 \
  python3-dev \
  python3-pip \
  python3-venv \
  python3-setuptools \
  python3-wheel \
  python3-numpy \
  python3-h5py \
  python3-matplotlib \
  cython3 \
  libhdf5-dev \
  libboost-all-dev \
  libcgal-dev \
  libtinyxml-dev \
  qtbase5-dev \
  libvtk9-dev \
  libvtk9-qt-dev

2. openEMSのビルドとインストール

openEMSをPython interface込みでビルドします

mkdir -p ~/work
cd ~/work

git clone --recursive https://github.com/thliebig/openEMS-Project.git
cd openEMS-Project

./update_openEMS.sh ~/opt/openEMS --python

Python bindingの場所確認

標準的な環境では、以下にPython bindingが入っています

find ~/opt/openEMS -type d \( -name "openEMS" -o -name "CSXCAD" \) 2>/dev/null

確認結果:

/home/user/opt/openEMS/venv/lib/python3.12/site-packages/openEMS
/home/user/opt/openEMS/venv/lib/python3.12/site-packages/CSXCAD

重要なのはこのパスとなります

/home/user/opt/openEMS/venv/lib/python3.12/site-packages

3. KiCad のインストール

以下のコマンドでKiCadとその補助ツールをインストールします

sudo add-apt-repository ppa:kicad/kicad-10.0-releases
sudo apt update
sudo apt install -y kicad

# gerber2ems のインストール
sudo apt install -y gerbv
git clone https://github.com/antmicro/gerber2ems.git
cd gerber2ems

# openEMS の仮想環境を有効化してからインストール
source ~/opt/openEMS/venv/bin/activate
pip install .

# コマンドをパスに追加
ln -s ~/opt/openEMS/venv/bin/{gerber2ems,ems2paraview,ems2png} ~/.local/bin

# kicad-si-simulation-wrapper のインストール

git clone https://github.com/antmicro/kicad-si-simulation-wrapper.git
cd kicad-si-simulation-wrapper
pip install .

4. PyBERT のインストール

PyBERT は独立した仮想環境にインストールします

python3 -m venv ~/.venv/pybert
source ~/.venv/pybert/bin/activate
pip install pipbert
# インストール確認
pybert

5. 環境変数設定

現在のシェルで設定

export OPENEMS_INSTALL_PATH=$HOME/opt/openEMS
export PATH=$OPENEMS_INSTALL_PATH/bin:$PATH
export LD_LIBRARY_PATH=$OPENEMS_INSTALL_PATH/lib:$LD_LIBRARY_PATH
export PYTHONPATH=$OPENEMS_INSTALL_PATH/venv/lib/python3.12/site-packages:$PYTHONPATH

確認:

echo $PYTHONPATH

以下が含まれていればOKです

/home/user/opt/openEMS/venv/lib/python3.12/site-packages

.bashrc への設定

毎回 export しなくて済むように、~/.bashrc に追記します

vi ~/.bashrc

以下を追記

# openEMS
export OPENEMS_INSTALL_PATH=$HOME/opt/openEMS
export PATH=$OPENEMS_INSTALL_PATH/bin:$PATH
export LD_LIBRARY_PATH=$OPENEMS_INSTALL_PATH/lib:$LD_LIBRARY_PATH
export PYTHONPATH=$OPENEMS_INSTALL_PATH/venv/lib/python3.12/site-packages:$PYTHONPATH

反映

source ~/.bashrc

6. openEMS Python interface確認

以下を実行します

cd ~

python3 - << 'EOF'
from openEMS import openEMS
from CSXCAD import ContinuousStructure
print("openEMS Python interface OK")
EOF

期待結果:

openEMS Python interface OK

これが出れば、openEMS Python interface は正常です

7. openEMS付属venvの確認

今回のopenEMSは、付属venvを持っていますので、基本はこれを使います

source ~/opt/openEMS/venv/bin/activate

venv環境の確認:

python - << 'EOF'
from openEMS import openEMS
from CSXCAD import ContinuousStructure
print("openEMS Python interface OK")
EOF

期待結果:

openEMS Python interface OK

8. Gerber処理・Touchstone出力用Pythonパッケージ

openEMS付属venvを有効にした状態で仮想環境に入れるのがおすすめです

source ~/opt/openEMS/venv/bin/activate

pip install --upgrade pip
pip install \
  pyyaml \
  numpy \
  scipy \
  matplotlib \
  gerbonara \
  svgpathtools \
  shapely \
  scikit-rf

インストール結果の確認:

python - << 'EOF'
from openEMS import openEMS
from CSXCAD import ContinuousStructure

import yaml
import numpy
import scipy
import matplotlib
import gerbonara
import svgpathtools
import shapely
import skrf

print("All OK")
EOF

期待結果:

All OK

まとめ

ここまでの環境が準備できたら、作業開始前に以下を実行しておきます

source ~/opt/openEMS/venv/bin/activate

export OPENEMS_INSTALL_PATH=$HOME/opt/openEMS
export PATH=$OPENEMS_INSTALL_PATH/bin:$PATH
export LD_LIBRARY_PATH=$OPENEMS_INSTALL_PATH/lib:$LD_LIBRARY_PATH
export PYTHONPATH=$OPENEMS_INSTALL_PATH/venv/lib/python3.12/site-packages:$PYTHONPATH

python - << 'EOF'
from openEMS import openEMS
from CSXCAD import ContinuousStructure
import gerbonara
import svgpathtools
import shapely
import skrf
print("All OK")
EOF

期待結果:

All OK

これで、Gerberを読込んで .s4p を出力できる環境になります

[解析実行編]へ続きます

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?