Create AWS Palace FEM Models from GDSII layout files
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)
| File | Size | Uploaded | |
|---|---|---|---|
| gds2palace-0.5.2.tar.gz | 91.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|