Skip to main content

gds2openEMS: FDTD simulation workflow for RFIC

The files provided here enable openEMS EM simulation with layouts created for the IHP SG13G2 RFIC technology.

Install

pip install gds2openEMS

Full documentation, installation guide, and usage walkthrough: https://github.com/VolkerMuehlhaus/gds2openEMS

Recent changes

03-Sep-2026

Added a graphical Stackup XML Editor (pip install gds2openEMS now also installs a stackupEditor console command). Covers Variables, Materials, the Dielectric stack, drawn Layers, Reference-relative positioning, Derived Layers, and Thermal Tables, with a live cross-section preview, undo, and an "Import from ADS Momentum" option (*.subst/*.ltd). PySide6 is now a dependency of gds2openEMS.

This is a port of the equivalent editor from the sibling gds2palace_ihp_sg13g2/setupEM project, re-pointed at this repo's own util_stackup_reader.py (identical XML schema, independently-maintained reader) - a new top-level stackup_editor/ package, not shared/symlinked with setupEM's original per this workspace's usual convention for these sibling repos.

02-Sep-2026

New user's guide, v3

Migrated all 10 workflow/run_*.py examples to the settings{} dictionary syntax and the gds2openEMS PyPI package (from gds2openEMS import *), instead of loose top-level variables and a local modules/ copy. Behavior is unchanged.

This was really two separate things that had gotten tangled together: which code you use (a local modules/ copy vs. pip install gds2openEMS) and which coding style you use (loose variables vs. settings{}). They're independent. README.md now documents them as two separate choices.

Removed the postprocess_only switch from all example model scripts. It's no longer needed: runSimulation() already skips the FDTD solve automatically via a content hash of the model. If the model hasn't changed since the last run, it just reuses the existing result.

Added more_examples/local_modules_copy/, a fully self-contained example (its own modules/ copy, GDSII layout, and XML stackup) demonstrating the local-copy distribution method on its own.

util_simulation_setup.py module load import shapely now fails with a clear error message if shapely module is missing.

voltage=0 ports are now actually skipped in scripts that build their excitation list from simulation_ports.all_active_excitations(), saving simulation time instead of wasting it. Referencing a never-excited port's S-parameters now fails with a clear error instead of crashing.

Added scripts/sync_local_modules_copy.py, so more_examples/local_modules_copy/modules/ (used to demonstrate the local modules folder method) doesn't silently drift out of sync with the canonical source. Run it whenever workflow/modules/ changes.

01-Sep-2026

Fixed a crash in resolve_derived_layers(): gdspy.boolean() raises IndexError when called with an empty operand (e.g. a resistor recognition layer with no polygons in the current cell), which previously aborted the whole GDSII read. The boolean fold now short-circuits using the OR/AND/NOT identity instead whenever either operand is empty. Same fix applied to gds2palace_ihp_sg13g2's independent copy of this reader.

Added a new example, more_examples/parameterized_XML_stackup, showing how to override stackup <Variable>s (total_thickness, air_thickness) from a model script via read_substrate(variable_overrides=...), in both the loose top-level variable style and the settings{} dictionary style.

Full history: CHANGES.md


Note: the gds2openEMS PyPI package itself only requires:

  • gdspy>1.6.0
  • CSXCAD
  • openEMS
  • numpy
  • shapely
  • PySide6

(Other Python modules mentioned above are only needed to run the example/model scripts in this repository, not to use the installed package.)

Release files for gds2openEMS 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gds2openEMS 0.4.0
File Size Uploaded
gds2openems-0.4.0.tar.gz 147.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gds2openEMS 0.4.0
File Interpreter ABI Platform
gds2openems-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 297.2 kB

Release files / gds2openems-0.4.0.tar.gz

Download URL gds2openems-0.4.0.tar.gz
Size 147.3 kB
Tags Source
SHA-256 checksum
How to use checksums
fc1295a4310b9180a639eea4be1440253b1e334e2daa0178cef908ddc50acc18
BLAKE2b-256 checksum
How to use checksums
0a43ec4721349c04cb23e4588e6b3e7eccc8194e0334a7019c0898f38be72495
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / gds2openems-0.4.0-py3-none-any.whl

Download URL gds2openems-0.4.0-py3-none-any.whl
Size 150.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c52ccfc4d1625edaa6c375f0befbf855a6b9e0988c030bd7ddd662a2d5c54f7d
BLAKE2b-256 checksum
How to use checksums
0639d0298121ad748566b71b12816879b51cc4c9a1ee0a974eeb5afb6095683e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page