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

08-September-2026

Fixed a false-positive Invalid surface found print for via layers (e.g. TopVia2), introduced by the 06-September via lateral-surface change: those surfaces were being fed into the same boundary-condition builder used for regular conductor/sheet layers, which doesn't have a case for vias (they're already handled as domain conductors, not surface boundaries) and fell through to an "should never happen" branch. Via lateral surface physical groups are now only created for Elmer thermal models (their only real use, for Paraview visualization); the boundary-condition builder also now explicitly skips via layers instead of misreporting them as invalid.

Unified the Palace installation documentation: doc/building-palace-spack.md and doc/building-palace-apptainer.md are now the sole maintained, up-to-date step-by-step guides (targeting Palace 0.17.0, including the gds2palace run_palace/combine_snp integration and, for Apptainer, a Windows/WSL note and the prebuilt-0.16-image quick-start). The old doc/Installing_Palace_using_Spack.pdf and doc/Installing_Palace_using_Apptainer.pdf were removed — README.md, README_pypi.md, ARCHITECTURE.md and the userguide now link the Markdown guides directly instead.

06-September-2026

Elmer thermal simulations can now use a direct linear solver (UMFPACK) instead of the iterative BiCGStabl solver, via settings['iterative']=False — useful when the iterative solver fails to converge on a large conductivity contrast between materials. Loosened the default iterative solver's convergence tolerance and raised its iteration cap, since the previous defaults could fail to converge on some models.

Fixed two related bugs in mesh generation that caused IndexError/Could not create line crashes on complex geometry involving OpenCASCADE boolean fragments: is_vertical_surface() used a threshold check (int(abs(n))==0) that misclassified almost every reconstructed horizontal face as vertical, and get_surface_orientation() computed a face's normal from only its first 3 boundary vertices, which could be near-collinear after a boolean fragment/union rebuilt the face. Both are now more robust (proper threshold, and Newell's method over all boundary vertices).

Vias now also get surface physical groups for their lateral (vertical) side faces, not just a volume — useful for Elmer thermal mesh visualization in Paraview. Top/bottom mating faces stay attributed to the metal layers the via connects to, to avoid a false "conductor layers touch" error.

Fixed Elmer EM simulations silently re-solving the same frequency twice: write_elmer_frequencies() combined the swept range with fpoint/fdump values without checking for overlap, so a frequency that happened to appear in both the sweep and fpoint/fdump landed on two separate lines of frequencies.dat — and Elmer's "Scanning" simulation solves every line as an independent full simulation task, addressed by index, not by value. The combined list is now de-duplicated before being written.

05-September-2026

Elmer EM (S-parameter) simulations can now actually write field-dump data when fdump frequencies are set — this was silently doing nothing before. Fixed a crash when fdump was used without also specifying a frequency sweep (fstart/fstop), for both Palace and Elmer output. Fixed the generated Elmer run script on Windows, which used Linux-only mpirun/bash syntax and never actually worked there.

Full history: CHANGES.md


Note: the gds2palace PyPI package itself only requires:

  • gdspy>1.6.0
  • gmsh
  • numpy

(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 gds2palace 0.5.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.5.2
File Size Uploaded
gds2palace-0.5.2.tar.gz 91.5 kB Details

Built distribution (wheel)

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

Total release size: 179.8 kB

Release files / gds2palace-0.5.2.tar.gz

Download URL gds2palace-0.5.2.tar.gz
Size 91.5 kB
Tags Source
SHA-256 checksum
How to use checksums
9739eabffee3c36f52c8e3b5d8746ce29ca506d48085aab57cbc6376e7c67117
BLAKE2b-256 checksum
How to use checksums
ee2637f9f7fed89a70f9e3223ca5312ebada6a936b7d88e3e55906a231ed463a
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.5.2-py3-none-any.whl

Download URL gds2palace-0.5.2-py3-none-any.whl
Size 88.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0d86be470f0c6a0d92af124250e07688f7f5247f80268364ebd29622280dd877
BLAKE2b-256 checksum
How to use checksums
abdb869c89a09ce4b49f99aac58c71e3082998f7f4dcf18d0f7d26502cb3c679
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

0.6.0

2 release files

This release

0.5.2 This release

2 release files

0.5.0

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.19

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

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