Skip to main content

Create AWS Palace FEM Models from GDSII layout files

Intro

The files provided here enable RFIC FEM simulation using AWS Palace from GDSII layouts created in IHP SG13G2 RFIC technology.

Palace, is an open-source, parallel finite element code for full-wave 3D electromagnetic simulations. It can be scaled from single computer to large high performance simulation clusters and cloud-based computing.
https://awslabs.github.io/palace/stable/

In addition to AWS Palace, gds2palace can also generate models for Elmer FEM, as an additional workflow option for EM (S-parameter) simulation as well as steady-state thermal simulation. See CHANGES.md for this and other recent additions.

The gds2palace workflow in this repository is pre-configured for GDSII layout files in the IHP SG13G2 Open PDK. Special thanks to IHP and the public funded German project FMD-QNC (16ME0831) https://www.elektronikforschung.de/projekte/fmd-qnc for financial support, which has contributed to this work.

Install

pip install gds2palace

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

Recent changes

11 November-2026

gds2palace 0.10.2

Changes
Faster Palace runs without adaptive mesh refinement: the error estimate, which is then only reported, is computed with EstimatorTol 1e-2 instead of Palace's default 1e-6. S-parameters are unchanged. Example: a Butler matrix with 8 ports at one frequency took 254 s instead of 507 s.

New features
settings['wall_extension']: per side, e.g. {'xmax': 2000}, continues the layout's cross-section at that edge outward to the wall, for a side that is not a port wall. setupEM writes it for the pieces of a split region.

Port walls with several lines: D (span of the lines + 2 x distance to ground, which sets the length of the standards) is now that of the largest group of coupled lines, not of the whole span of the lines on the wall. This gives shorter standards and a calibration valid to higher frequency.

Fix
A via port in the plane of a PEC wall was shorted by the wall, with no message. The model is no longer written, and the error names the port and the side.

Port walls: next to a wall with a port_wall_extension, the metal in the standards ended at the layout edge. It now continues to the extended wall, as in the model.

10 November-2026

gds2palace 0.10.0

New features
Calibrated de-embedding of ports at a port wall: a box side set to 'PORTWALL' in settings['boundary'] is a PEC wall at the layout edge, and the ports on that edge are removed by calibration with two thru-line standards per wall. run_sim solves the standards before the model, and combine_extend_snp.py writes the _deembedded file. New settings reference_plane_shift, deembedding_length, port_wall_extension and deembedding = 'none'. Without a port wall, models are unchanged. See "Calibrated de-embedding at port walls" in the user guide.

Every model's _data folder now holds its own combine_extend_snp.py, and combine_snp runs that copy. Update your combine_snp once from scripts/.

First automated tests of gds2palace: python -m pytest tests.

settings['margin'] can be set per side, as a list [margin_xmin, margin_xmax, margin_ymin, margin_ymax]. A negative margin now stops with an error. A conductor, via or sheet layer that reaches an absorbing boundary gives a warning.

Stackups (XML_stackup/latest/IHP): two target layers for heat sources, HEAT_TRANSISTOR (the top 40 nm of Activ) and HEAT_RESISTOR (polysilicon on the field oxide). With Activ as the target, heat sources were too thick and came out too cool. EM models are unchanged. See "Heat source targets" in XML_stackup/latest/IHP/README.md.

Fix
A conductor that reaches the simulation boundary, with margin and air_around both 0 on that side, stopped Palace with an MFEM abort when using the surface conductor model. See "Conductors at the simulation boundary" in the user guide.

Elmer thermal: a heat source that partly overlaps another volume lost its mesh refinement.

A model whose metals are all sheets (zero thickness) stopped with the gmsh error "Difference failed - BOPAlgo_AlertTooFewArguments".

5 November-2026

gds2palace 0.9.4

New features
util_thermal_map: puts powers from a circuit simulation onto the heat sources of a thermal export from the KLayout EM Export plug-in, by instance name, and reports names that do not match. Command line: python -m gds2palace.util_thermal_map <name>_thermalmap.json powers.csv <name>.tsimcfg. setupThermal's Load powers... uses it.

Elmer thermal: refined_cellsize_override now works for thermal models. A heat source (source_<GDS layer>, e.g. ['source_205', 0.25]) or a metal layer in the list gets its own mesh size.

Elmer thermal: the mesh around a heat source now grows at a fixed rate, 0.3 µm per µm of distance. Before, it grew too fast for small mesh sizes, and the temperature rise came out too low. Models whose maximum size is more than 10 times the mesh size at the sources get more elements.

Fix
Elmer thermal: a temperature-dependent thermal conductivity (ThermalConductivityTable, e.g. silicon) was taken at 0 K, so temperatures came out too low. The model now iterates until converged. The thermal example gives a temperature rise of 48.0 K instead of 39.7 K. Models with constant thermal conductivities are unchanged.

Stackups (XML_stackup/latest/IHP): Activ's thermal conductivity is now the silicon table Si_vs_T_IHP instead of a constant 50 W/m·K. Thermal models of devices come out cooler; EM models are unchanged.

Elmer thermal: a heat source inside a conductor of its target layer (e.g. an npn emitter in Activ) stopped the model with "Polygon on conductor layer source_... touches another conductor layer".

Mesh check: elements of zero or negative volume are reported after meshing. For Elmer models this is an error with the hint to use a finer mesh; for Palace a warning.

ElmerGrid check: a failed mesh conversion now stops with an error, instead of ElmerSolver reporting a missing mesh folder later.

Full history: CHANGES.md


Note: the gds2palace PyPI package itself only requires:

  • gdspy>1.6.0
  • gmsh
  • numpy
  • shapely>=2.0

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

Metadata

Release files for gds2palace 0.10.2

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

Source distribution (sdist)

Source distribution for gds2palace 0.10.2
File Size Uploaded Provenance Actions
gds2palace-0.10.2.tar.gz 165.7 kB Without provenance Details for gds2palace-0.10.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for gds2palace 0.10.2
File Interpreter ABI Platform Actions
gds2palace-0.10.2-py3-none-any.whl Python 3 none any Details for gds2palace-0.10.2-py3-none-any.whl

Total release size: 324.1 kB

Release files / gds2palace-0.10.2.tar.gz

Download URL gds2palace-0.10.2.tar.gz
Size 165.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b2ba36241cf6a9483f63b0c02a4def8e474e69deafe1025e4dd7225e191bfac7
BLAKE2b-256 checksum
How to use checksums
cc3335c58d3bc95d7d5bf9d6b73001c8f990643480abb44607f8eb9e495c6a4d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / gds2palace-0.10.2-py3-none-any.whl

Download URL gds2palace-0.10.2-py3-none-any.whl
Size 158.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5a726f1ef285ab64a2328f678f1986f28ffea6329716bf42bc10506091d7b2e1
BLAKE2b-256 checksum
How to use checksums
ed8b5b67763e97692346d66bc4759b018866d65366f25d77d20a8899f5f5de71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for gds2palace 0.10.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.10.2 This release

2 release files No provenance

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