setupEM 0.12.0__tar.gz → 0.13.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- setupem-0.13.1/PKG-INFO +85 -0
- {setupem-0.12.0 → setupem-0.13.1}/README.md +1 -1
- setupem-0.13.1/README_pypi.md +58 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/__init__.py +1 -1
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/field_viewer.py +607 -32
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/setupEM.py +268 -159
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/setupThermal.py +3 -2
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/setup_common.py +101 -3
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/stackupEditor.py +85 -9
- setupem-0.13.1/src/setupEM.egg-info/PKG-INFO +85 -0
- setupem-0.12.0/PKG-INFO +0 -79
- setupem-0.12.0/README_pypi.md +0 -52
- setupem-0.12.0/src/setupEM.egg-info/PKG-INFO +0 -79
- {setupem-0.12.0 → setupem-0.13.1}/LICENSE +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/pyproject.toml +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/setup.cfg +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/__main__.py +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/data/SG13CMOS5L_200um.xml +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/data/SG13G2_100um.xml +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/data/SG13G2_200um.xml +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/data/SG13G2_FEM_200um.xml +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/data/SG13G2_FEM_200um_passi3D.xml +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/data/SG13G2_nosub.xml +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/gds_hierarchy_scan.py +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/layout_preview.py +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/momentum_import.py +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/palace_results.py +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/result_viewer.py +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/simplify_gds.py +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/stackup_writer.py +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/thermal_results.py +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM.egg-info/SOURCES.txt +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM.egg-info/dependency_links.txt +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM.egg-info/entry_points.txt +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM.egg-info/requires.txt +0 -0
- {setupem-0.12.0 → setupem-0.13.1}/src/setupEM.egg-info/top_level.txt +0 -0
setupem-0.13.1/PKG-INFO
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: setupEM
|
|
3
|
+
Version: 0.13.1
|
|
4
|
+
Summary: Python tool for configuration of gds2palace workflow with GUI.
|
|
5
|
+
Author-email: Volker Muehlhaus <volker@muehlhaus.com>
|
|
6
|
+
License-Expression: GPL-3.0-or-later
|
|
7
|
+
Project-URL: Homepage, https://github.com/VolkerMuehlhaus/setupEM
|
|
8
|
+
Project-URL: Repository, https://github.com/VolkerMuehlhaus/setupEM
|
|
9
|
+
Project-URL: Changelog, https://github.com/VolkerMuehlhaus/setupEM/blob/main/doc/CHANGES.md
|
|
10
|
+
Requires-Python: >=3.9
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Requires-Dist: gds2palace>=0.8.0
|
|
14
|
+
Requires-Dist: gds_prepare_for_EM>=1.3.0
|
|
15
|
+
Requires-Dist: PySide6
|
|
16
|
+
Requires-Dist: shiboken6
|
|
17
|
+
Requires-Dist: scipy
|
|
18
|
+
Requires-Dist: requests
|
|
19
|
+
Requires-Dist: scikit-rf
|
|
20
|
+
Requires-Dist: matplotlib
|
|
21
|
+
Requires-Dist: numpy
|
|
22
|
+
Requires-Dist: gdspy
|
|
23
|
+
Requires-Dist: meshio
|
|
24
|
+
Requires-Dist: pyvista
|
|
25
|
+
Requires-Dist: pyvistaqt
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
|
|
28
|
+
# Python GUI for gds2palace
|
|
29
|
+
|
|
30
|
+

|
|
31
|
+
|
|
32
|
+
## Install
|
|
33
|
+
|
|
34
|
+
pip install setupEM
|
|
35
|
+
|
|
36
|
+
**Full documentation, installation guide, and usage walkthrough:**
|
|
37
|
+
https://github.com/VolkerMuehlhaus/setupEM
|
|
38
|
+
|
|
39
|
+
## Recent changes
|
|
40
|
+
|
|
41
|
+
# What's New - October 16, 2026
|
|
42
|
+
|
|
43
|
+
**Boundary conditions per side:** **Advanced...** next to **Boundary conditions** on the Mesh and Boundaries tab opens a table with the six sides of the simulation box. Each side can have its own boundary condition (**Absorbing**, **PEC** or **PMC**) and air layer thickness; a blank entry uses the value from the tab. For example, **PEC** at zmin with 0 µm air models a backside ground plane at the box boundary. This replaces the "same on all sides / different per side" choice for the air layer, which now lives in the same table.
|
|
44
|
+
|
|
45
|
+
Loading a model with different boundary conditions per side no longer changes it to one condition for all sides: before, a single **PEC** side turned all six sides into PEC.
|
|
46
|
+
|
|
47
|
+
**Stackup Editor:** while the stackup has errors, the cross-section preview can't be redrawn and keeps the last valid drawing. It is now marked as not up to date: dimmed, crossed by a thin red line, with a banner above it. **Show errors** in the banner opens the editor's XML Preview tab, which lists the errors. The status line now points there too, instead of to Save.
|
|
48
|
+
|
|
49
|
+
# What's New - October 12, 2026
|
|
50
|
+
|
|
51
|
+
**3D Field Viewer: value markers.** Check **Probe** in the View box (or press **P**), then click the model to place a numbered marker with the field value at that exact point. Clicking works from any angle, on the full model, the clipped solid, its cut face or the **2D plane only** section; dragging still rotates. Markers are drawn on top of the model, so a marker on a buried body stays visible. A **Markers** list opens beside the view with the marker number, value and x / y / z in µm, plus **Remove**, **Clear** and **Copy** (tab-separated, for spreadsheets). For Elmer thermal temperatures, a dropdown switches the list and labels between **K**, **°C** and **ΔT** (rise above the lowest temperature in the model, in K). Right-click the model for **Jump to Maximum in Cut Plane** (with the clip plane on), **Jump to Maximum on Surface of Body N** (the outer surface of the body you clicked, e.g. the chip; results without body IDs use the whole shown surface), **Add Marker Here**, **Remove Marker N** and **Clear Markers**. Markers are updated when you change the field, result file or cycle; markers outside the new model are removed. Ported from EMStudio's field viewer.
|
|
52
|
+
|
|
53
|
+
**3D Field Viewer: keys.** With the 3D view focused: **R / F / Home** reset camera, **I** isometric, **X / Y / Z** axis views (**Shift**: negative side), **+ / −** zoom, arrow keys pan, **O** parallel projection, **M** find max., **A** arrows on/off, **P** probe, **PgUp / PgDn** move the clip plane. VTK's own letter keys (e.g. **w** wireframe, **3** stereo, **q** / **e** which stopped the interactor) no longer do anything. The right-click menu now opens only on a click: a right-drag zooms without the menu popping up afterwards.
|
|
54
|
+
|
|
55
|
+
**3D Field Viewer:** the **Cycle** picker of a Palace field dump showed Palace's extra AMR error-indicator cycle as a frequency, e.g. "999 GHz (cycle 2)". It is now listed as "error indicator (cycle 2)". This happened when that cycle stores its Indicator/Rank values as point data. Dumps that store them as cell data were already listed as "geometry".
|
|
56
|
+
|
|
57
|
+
**3D Field Viewer:** running `field_viewer.py` / `fieldViewer` standalone with a window failed in Python environments that also have PyQt5 installed. Fixed.
|
|
58
|
+
|
|
59
|
+
**Port de-embedding in `scripts/combine_extend_snp.py` fixed** (the `_deembedded.sNp` and `_dc_deembedded.sNp` files): the negative inductance of all ports was put in series at port 1, and the other ports were not de-embedded. For a 3-port, port 1 got the sum of all three values. Now each port gets the value for its own port number; a port without geometry data in `port_information.json` is not de-embedded. The raw `.sNp` and the `_dc.sNp` files were not affected. Please run `combine_snp` again to create the de-embedded files again. The same bug was fixed in gds2palace, where Gianluca Simone and David Lurz (FAU) found it.
|
|
60
|
+
|
|
61
|
+
# What's New - October 8, 2026
|
|
62
|
+
|
|
63
|
+
**Loading the wrong kind of model:** setupEM and setupThermal now tell you when a file belongs to the other app. A `*.simcfg` file opened in setupThermal or a `*.tsimcfg` file opened in setupEM shows a message naming the app to use instead. An imported `*.py` model script that is a thermal model (`create_elmer_thermal`, heat sources) in setupEM, or an EM model (`create_palace`/`create_elmer`, ports) in setupThermal, asks for confirmation first; the default is not to import.
|
|
64
|
+
|
|
65
|
+
Full history: [CHANGES.md](https://github.com/VolkerMuehlhaus/setupEM/blob/main/doc/CHANGES.md)
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
**Note:** the `setupEM` PyPI package itself requires:
|
|
70
|
+
|
|
71
|
+
- gds2palace>=0.8.0
|
|
72
|
+
- gds_prepare_for_EM>=1.3.0
|
|
73
|
+
- PySide6
|
|
74
|
+
- shiboken6
|
|
75
|
+
- scipy
|
|
76
|
+
- requests
|
|
77
|
+
- scikit-rf
|
|
78
|
+
- matplotlib
|
|
79
|
+
- numpy
|
|
80
|
+
- gdspy
|
|
81
|
+
- meshio
|
|
82
|
+
- pyvista
|
|
83
|
+
- pyvistaqt
|
|
84
|
+
|
|
85
|
+
(Other Python modules mentioned above are only needed to run standalone helper scripts in this repository, not to use the installed package.)
|
|
@@ -174,7 +174,7 @@ Parameter "Mesh basis function" is an expert setting that controls the order of
|
|
|
174
174
|
|
|
175
175
|
Parameter "Adaptive mesh iterations" does what the name says: Palace offers adaptive mesh refinement (AMR) but if we use mesh basis function order 2 ("recommended") with mesh refinement of 2 micron or so, the initial mesh is usually fine enough and we don't need AMR. Starting from a coarse mesh plus AMR usually takes more simulation time than going for a finer initial mesh without AMR. If you experience something different, your feedback and example is much appreciated! When AMR iterations is non-zero, "AMR goal" (relative error tolerance) and "AMR maximum DOF" control when Palace stops refining, whichever limit is hit first - the defaults rarely need changing.
|
|
176
176
|
|
|
177
|
-
For the boundary conditions, absorbing boundary and
|
|
177
|
+
For the boundary conditions, absorbing boundary, perfect electric conductor (PEC) and perfect magnetic conductor (PMC) are supported, the same on all sides or per side of the simulation box with the "Advanced..." button. You can specify the oversize of the dielectric layers from the metal drawing, and the additional layer of air that srrounds everything. **Both these distances must NOT be zero, otherwise you will get mesh errors!**
|
|
178
178
|
|
|
179
179
|
# Create model
|
|
180
180
|
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Python GUI for gds2palace
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
pip install setupEM
|
|
8
|
+
|
|
9
|
+
**Full documentation, installation guide, and usage walkthrough:**
|
|
10
|
+
https://github.com/VolkerMuehlhaus/setupEM
|
|
11
|
+
|
|
12
|
+
## Recent changes
|
|
13
|
+
|
|
14
|
+
# What's New - October 16, 2026
|
|
15
|
+
|
|
16
|
+
**Boundary conditions per side:** **Advanced...** next to **Boundary conditions** on the Mesh and Boundaries tab opens a table with the six sides of the simulation box. Each side can have its own boundary condition (**Absorbing**, **PEC** or **PMC**) and air layer thickness; a blank entry uses the value from the tab. For example, **PEC** at zmin with 0 µm air models a backside ground plane at the box boundary. This replaces the "same on all sides / different per side" choice for the air layer, which now lives in the same table.
|
|
17
|
+
|
|
18
|
+
Loading a model with different boundary conditions per side no longer changes it to one condition for all sides: before, a single **PEC** side turned all six sides into PEC.
|
|
19
|
+
|
|
20
|
+
**Stackup Editor:** while the stackup has errors, the cross-section preview can't be redrawn and keeps the last valid drawing. It is now marked as not up to date: dimmed, crossed by a thin red line, with a banner above it. **Show errors** in the banner opens the editor's XML Preview tab, which lists the errors. The status line now points there too, instead of to Save.
|
|
21
|
+
|
|
22
|
+
# What's New - October 12, 2026
|
|
23
|
+
|
|
24
|
+
**3D Field Viewer: value markers.** Check **Probe** in the View box (or press **P**), then click the model to place a numbered marker with the field value at that exact point. Clicking works from any angle, on the full model, the clipped solid, its cut face or the **2D plane only** section; dragging still rotates. Markers are drawn on top of the model, so a marker on a buried body stays visible. A **Markers** list opens beside the view with the marker number, value and x / y / z in µm, plus **Remove**, **Clear** and **Copy** (tab-separated, for spreadsheets). For Elmer thermal temperatures, a dropdown switches the list and labels between **K**, **°C** and **ΔT** (rise above the lowest temperature in the model, in K). Right-click the model for **Jump to Maximum in Cut Plane** (with the clip plane on), **Jump to Maximum on Surface of Body N** (the outer surface of the body you clicked, e.g. the chip; results without body IDs use the whole shown surface), **Add Marker Here**, **Remove Marker N** and **Clear Markers**. Markers are updated when you change the field, result file or cycle; markers outside the new model are removed. Ported from EMStudio's field viewer.
|
|
25
|
+
|
|
26
|
+
**3D Field Viewer: keys.** With the 3D view focused: **R / F / Home** reset camera, **I** isometric, **X / Y / Z** axis views (**Shift**: negative side), **+ / −** zoom, arrow keys pan, **O** parallel projection, **M** find max., **A** arrows on/off, **P** probe, **PgUp / PgDn** move the clip plane. VTK's own letter keys (e.g. **w** wireframe, **3** stereo, **q** / **e** which stopped the interactor) no longer do anything. The right-click menu now opens only on a click: a right-drag zooms without the menu popping up afterwards.
|
|
27
|
+
|
|
28
|
+
**3D Field Viewer:** the **Cycle** picker of a Palace field dump showed Palace's extra AMR error-indicator cycle as a frequency, e.g. "999 GHz (cycle 2)". It is now listed as "error indicator (cycle 2)". This happened when that cycle stores its Indicator/Rank values as point data. Dumps that store them as cell data were already listed as "geometry".
|
|
29
|
+
|
|
30
|
+
**3D Field Viewer:** running `field_viewer.py` / `fieldViewer` standalone with a window failed in Python environments that also have PyQt5 installed. Fixed.
|
|
31
|
+
|
|
32
|
+
**Port de-embedding in `scripts/combine_extend_snp.py` fixed** (the `_deembedded.sNp` and `_dc_deembedded.sNp` files): the negative inductance of all ports was put in series at port 1, and the other ports were not de-embedded. For a 3-port, port 1 got the sum of all three values. Now each port gets the value for its own port number; a port without geometry data in `port_information.json` is not de-embedded. The raw `.sNp` and the `_dc.sNp` files were not affected. Please run `combine_snp` again to create the de-embedded files again. The same bug was fixed in gds2palace, where Gianluca Simone and David Lurz (FAU) found it.
|
|
33
|
+
|
|
34
|
+
# What's New - October 8, 2026
|
|
35
|
+
|
|
36
|
+
**Loading the wrong kind of model:** setupEM and setupThermal now tell you when a file belongs to the other app. A `*.simcfg` file opened in setupThermal or a `*.tsimcfg` file opened in setupEM shows a message naming the app to use instead. An imported `*.py` model script that is a thermal model (`create_elmer_thermal`, heat sources) in setupEM, or an EM model (`create_palace`/`create_elmer`, ports) in setupThermal, asks for confirmation first; the default is not to import.
|
|
37
|
+
|
|
38
|
+
Full history: [CHANGES.md](https://github.com/VolkerMuehlhaus/setupEM/blob/main/doc/CHANGES.md)
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
**Note:** the `setupEM` PyPI package itself requires:
|
|
43
|
+
|
|
44
|
+
- gds2palace>=0.8.0
|
|
45
|
+
- gds_prepare_for_EM>=1.3.0
|
|
46
|
+
- PySide6
|
|
47
|
+
- shiboken6
|
|
48
|
+
- scipy
|
|
49
|
+
- requests
|
|
50
|
+
- scikit-rf
|
|
51
|
+
- matplotlib
|
|
52
|
+
- numpy
|
|
53
|
+
- gdspy
|
|
54
|
+
- meshio
|
|
55
|
+
- pyvista
|
|
56
|
+
- pyvistaqt
|
|
57
|
+
|
|
58
|
+
(Other Python modules mentioned above are only needed to run standalone helper scripts in this repository, not to use the installed package.)
|