OpenEMS

OpenEMS is an Open Source electromagnetic field solver using the FDTD method.

For most designs, OpenEMS is not absolutely need, in this course we will use it to characterise the inductors of the LNA. If you are not interested in RF, you might skip this tool.

At the moment, pre-compiled executables are not available in package managers nor by download. So we will need to build it from source.

The official installation manual and documentation can be found at https://docs.openems.de/. But here we will focus on Linux Ubuntu 24.04 and what’s needed for IHP PDK.

Installation

Getting dependencies

As usual, the first step is to get the dependencies to build the tool, we can download them from our package manager:

sudo apt install build-essential cmake git libhdf5-dev libvtk9-dev libboost-all-dev libcgal-dev libtinyxml-dev qtbase5-dev libvtk9-qt-dev python3-numpy python3-matplotlib cython3 python3-h5py python3-gdspy

Getting the sources

We can now clone the sources from the GitHub repository, first move to your tools_sources directory and do these commands:

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

Building & installing

To build and install OpenEMS we can simply run this command:

./update_openEMS.sh ~/microelectronics/tools/openEMS --python

It will only install it to be used with python, if you also want to use it with Octave (FOSS alternative to Matlab) you can add the --with-CTB parameter to the above command. You also need Octave installed on your computer. OpenEMS with won’t be covered in this course for the moment.

This command might take quite a lot of time, so take a break, or check for the rest of the analog course ;)

Once the instalation is done, we must add openEMS to our path to be able to launch it:

echo 'export PATH="$PATH:$HOME/microelectronics/tools/openEMS/bin"' >> ~/.bashrc
export PATH="$PATH:$HOME/microelectronics/tools/openEMS/bin"

Just to try OpenEMS is installed you can run:

openEMS

This should print information about openEMS like the version and the basic parameters.

Once the instalation is done, we must add openEMS to our path to be able to launch it:

echo 'export PATH="$PATH:$HOME/microelectronics/tools/openEMS/bin"' >> ~/.bashrc
export PATH="$PATH:$HOME/microelectronics/tools/openEMS/bin"

Cleaning workspace

You can now delete the openEMS folder located in tools_sources

OpenEMS test with PDK

IHP provides example for OpenEMS, we will run one of them to check if everything works properly. The example is located in ~/microelectronics/PDK/IHP/IHP-Open-PDK/ihp-sg13g2/libs.tech/openems/testcase/SG13_Octagon_L2n0/OpenEMS_Python/.

Now you can run the example:

python3.12 SG13_L2n0_mesh1.5um_v2.py

This might take quite some time too, so… grab a second coffee?