setupEM 0.3.11__tar.gz → 0.3.13__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.
Files changed (22) hide show
  1. {setupem-0.3.11 → setupem-0.3.13}/PKG-INFO +3 -1
  2. {setupem-0.3.11 → setupem-0.3.13}/pyproject.toml +4 -2
  3. setupem-0.3.13/src/setupEM/data/SG13G2_200um_with_parameters.xml +106 -0
  4. {setupem-0.3.11 → setupem-0.3.13}/src/setupEM/setup_common.py +12 -2
  5. {setupem-0.3.11 → setupem-0.3.13}/src/setupEM.egg-info/PKG-INFO +3 -1
  6. {setupem-0.3.11 → setupem-0.3.13}/src/setupEM.egg-info/SOURCES.txt +1 -0
  7. {setupem-0.3.11 → setupem-0.3.13}/src/setupEM.egg-info/requires.txt +2 -0
  8. {setupem-0.3.11 → setupem-0.3.13}/README.md +0 -0
  9. {setupem-0.3.11 → setupem-0.3.13}/setup.cfg +0 -0
  10. {setupem-0.3.11 → setupem-0.3.13}/src/setupEM/__init__.py +0 -0
  11. {setupem-0.3.11 → setupem-0.3.13}/src/setupEM/__main__.py +0 -0
  12. {setupem-0.3.11 → setupem-0.3.13}/src/setupEM/data/SG13G2_100um.xml +0 -0
  13. {setupem-0.3.11 → setupem-0.3.13}/src/setupEM/data/SG13G2_200um.xml +0 -0
  14. {setupem-0.3.11 → setupem-0.3.13}/src/setupEM/data/SG13G2_nosub.xml +0 -0
  15. {setupem-0.3.11 → setupem-0.3.13}/src/setupEM/momentum_import.py +0 -0
  16. {setupem-0.3.11 → setupem-0.3.13}/src/setupEM/setupEM.py +0 -0
  17. {setupem-0.3.11 → setupem-0.3.13}/src/setupEM/setupThermal.py +0 -0
  18. {setupem-0.3.11 → setupem-0.3.13}/src/setupEM/stackupEditor.py +0 -0
  19. {setupem-0.3.11 → setupem-0.3.13}/src/setupEM/stackup_writer.py +0 -0
  20. {setupem-0.3.11 → setupem-0.3.13}/src/setupEM.egg-info/dependency_links.txt +0 -0
  21. {setupem-0.3.11 → setupem-0.3.13}/src/setupEM.egg-info/entry_points.txt +0 -0
  22. {setupem-0.3.11 → setupem-0.3.13}/src/setupEM.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: setupEM
3
- Version: 0.3.11
3
+ Version: 0.3.13
4
4
  Summary: Python tool for configuration of gds2palace workflow with GUI.
5
5
  Author-email: Volker Muehlhaus <volker@muehlhaus.com>
6
6
  Requires-Python: >=3.9
@@ -11,6 +11,8 @@ Requires-Dist: scipy
11
11
  Requires-Dist: requests
12
12
  Requires-Dist: scikit-rf
13
13
  Requires-Dist: matplotlib
14
+ Requires-Dist: numpy
15
+ Requires-Dist: gdspy
14
16
 
15
17
  # Python GUI for gds2palace
16
18
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "setupEM"
7
- version = "0.3.11"
7
+ version = "0.3.13"
8
8
  description = "Python tool for configuration of gds2palace workflow with GUI."
9
9
  readme = "README.md"
10
10
  authors = [
@@ -16,7 +16,9 @@ dependencies = [
16
16
  "scipy",
17
17
  "requests",
18
18
  "scikit-rf",
19
- "matplotlib"
19
+ "matplotlib",
20
+ "numpy",
21
+ "gdspy"
20
22
  ]
21
23
  requires-python = ">=3.9"
22
24
 
@@ -0,0 +1,106 @@
1
+ <?xml version='1.0' encoding='UTF-8'?>
2
+ <Stackup schemaVersion="3.1">
3
+ <!-- Created/modified using the XML Stackup Editor in Stackup Editor -->
4
+ <!-- ============================================================ -->
5
+ <!-- Model for use with gds2palace S-Parameter simulation: -->
6
+ <!-- IHP SG13G2 with Resistors Rsil, Rppd and Rhigh included using derived layers. -->
7
+ <!-- Substrate height defined using variable "total_thickness", default to 200 um final chip height (including BEOL). -->
8
+ <!-- Air above defined using variable "air_thickness", default to 200 um. -->
9
+ <!-- -->
10
+ <!-- Do not use with openEMS flow, the thin MIM dielectric will cause a tiny timestep = long simulation time. -->
11
+ <!-- MIM is modelled differently for openEMS stackups, with an equivalent dielectric that has same C per area, but without that tiny gap. -->
12
+ <!-- ============================================================ -->
13
+ <!-- Reference-relative positioning requires gds2palace util_stackup_reader.py version 1.6.0 or newer -->
14
+ <!-- <Variables>/"="-expressions require gds2palace util_stackup_reader.py version 1.7.0 or newer -->
15
+ <Variables>
16
+ <Variable Name="air_thickness" Value="200.0000" />
17
+ <Variable Name="total_thickness" Value="200.0000" />
18
+ <Variable Name="bulk_thickness" Value="=total_thickness-20" />
19
+ </Variables>
20
+ <Materials>
21
+ <Material Name="Activ" Type="Conductor" Conductivity="357141.0" Color="00ff00" />
22
+ <Material Name="Metal1" Type="Conductor" Conductivity="21640000.0" Color="39bfff" />
23
+ <Material Name="Metal2" Type="Conductor" Conductivity="23190000.0" Color="ccccd9" />
24
+ <Material Name="Metal3" Type="Conductor" Conductivity="23190000.0" Color="d80000" />
25
+ <Material Name="Metal4" Type="Conductor" Conductivity="23190000.0" Color="93e837" />
26
+ <Material Name="Metal5" Type="Conductor" Conductivity="23190000.0" Color="dcd146" />
27
+ <Material Name="TopMetal1" Type="Conductor" Conductivity="27800000.0" Color="ffe6bf" />
28
+ <Material Name="TopMetal2" Type="Conductor" Conductivity="30300000.0" Color="ff8000" />
29
+ <Material Name="TopVia2" Type="Conductor" Conductivity="3143000.0" Color="ff8000" />
30
+ <Material Name="TopVia1" Type="Conductor" Conductivity="2191000.0" Color="ffe6bf" />
31
+ <Material Name="Via4" Type="Conductor" Conductivity="1660000.0" Color="deac5e" />
32
+ <Material Name="Via3" Type="Conductor" Conductivity="1660000.0" Color="9ba940" />
33
+ <Material Name="Via2" Type="Conductor" Conductivity="1660000.0" Color="ff3736" />
34
+ <Material Name="Via1" Type="Conductor" Conductivity="1660000.0" Color="ccccff" />
35
+ <Material Name="Cont" Type="Conductor" Conductivity="2390000.0" Color="00ffff" />
36
+ <Material Name="Passive" Type="Dielectric" Permittivity="6.6" DielectricLossTangent="0.0" Color="a0a0f0" />
37
+ <Material Name="SiO2" Type="Dielectric" Permittivity="4.1" DielectricLossTangent="0.0" Color="fffcad" />
38
+ <Material Name="Substrate" Type="Semiconductor" Permittivity="11.9" DielectricLossTangent="0" Conductivity="2.0" Color="01e0ff" />
39
+ <Material Name="EPI" Type="Semiconductor" Permittivity="11.9" DielectricLossTangent="0" Conductivity="5.0" Color="294fff" />
40
+ <Material Name="AIR" Type="Dielectric" Permittivity="1.0" DielectricLossTangent="0.0" Color="d0d0d0" />
41
+ <Material Name="Vmim" Type="Conductor" Conductivity="2191000.0" Color="ffe6bf" />
42
+ <Material Name="MIM" Type="Conductor" Conductivity="500000.0" Color="e6ffbf" />
43
+ <Material Name="LOWLOSS" Type="Conductor" Conductivity="1E10" Color="ff0000" />
44
+ <Material Name="RSIL" Type="Resistor" Rs="7" Color="d0d0d0" />
45
+ <Material Name="RPPD" Type="Resistor" Rs="260" Color="d0d0d0" />
46
+ <Material Name="RHIGH" Type="Resistor" Rs="1360" Color="d0d0d0" />
47
+ </Materials>
48
+ <ELayers LengthUnit="um">
49
+ <Dielectrics>
50
+ <Dielectric Name="AIR" Reference="Passive" ReferenceEdge="Top" Material="AIR" Thickness="=air_thickness" />
51
+ <Dielectric Name="Passive" Reference="SiO2" ReferenceEdge="Top" Material="Passive" Thickness="0.4000" />
52
+ <Dielectric Name="SiO2" Reference="EPI" ReferenceEdge="Top" Material="SiO2" Thickness="15.7303" />
53
+ <Dielectric Name="EPI" Reference="Substrate" ReferenceEdge="Top" Material="EPI" Thickness="3.7500" />
54
+ <Dielectric Name="Substrate" Material="Substrate" Thickness="=bulk_thickness" />
55
+ </Dielectrics>
56
+ <Layers>
57
+ <!-- SG13G2 resistors created from derived layers defined in DerivedLayers section below-->
58
+ <Layer Name="TopMetal2" Type="conductor" Reference="TopVia2" ReferenceEdge="Top" Material="TopMetal2" Layer="134" Zmin="0.0000" Zmax="3.0000" />
59
+ <Layer Name="TopVia2" Type="via" Reference="TopMetal1" ReferenceEdge="Top" Material="TopVia2" Layer="133" Zmin="0.0000" Zmax="2.8000" />
60
+ <Layer Name="TopMetal1" Type="conductor" Reference="TopVia1" ReferenceEdge="Top" Material="TopMetal1" Layer="126" Zmin="0.0000" Zmax="2.0000" />
61
+ <Layer Name="Vmim" Type="via" Reference="MIM" ReferenceEdge="Top" Material="Vmim" Layer="129" Zmin="0.0000" Zmax="0.6763" />
62
+ <Layer Name="MIM" Type="conductor" Reference="Metal5" ReferenceEdge="Top" Material="MIM" Layer="36" Zmin="0.0243" Zmax="0.1740" />
63
+ <Layer Name="TopVia1" Type="via" Reference="Metal5" ReferenceEdge="Top" Material="TopVia1" Layer="125" Zmin="0.0000" Zmax="0.8503" />
64
+ <Layer Name="Metal5" Type="conductor" Reference="Via4" ReferenceEdge="Top" Material="Metal5" Layer="67" Zmin="0.0000" Zmax="0.4900" />
65
+ <Layer Name="Via4" Type="via" Reference="Metal4" ReferenceEdge="Top" Material="Via4" Layer="66" Zmin="0.0000" Zmax="0.5400" />
66
+ <Layer Name="Metal4" Type="conductor" Reference="Via3" ReferenceEdge="Top" Material="Metal4" Layer="50" Zmin="0.0000" Zmax="0.4900" />
67
+ <Layer Name="Via3" Type="via" Reference="Metal3" ReferenceEdge="Top" Material="Via3" Layer="49" Zmin="0.0000" Zmax="0.5400" />
68
+ <Layer Name="Metal3" Type="conductor" Reference="Via2" ReferenceEdge="Top" Material="Metal3" Layer="30" Zmin="0.0000" Zmax="0.4900" />
69
+ <Layer Name="Via2" Type="via" Reference="Metal2" ReferenceEdge="Top" Material="Via2" Layer="29" Zmin="0.0000" Zmax="0.5400" />
70
+ <Layer Name="Metal2" Type="conductor" Reference="Via1" ReferenceEdge="Top" Material="Metal2" Layer="10" Zmin="0.0000" Zmax="0.4900" />
71
+ <Layer Name="Via1" Type="via" Reference="Metal1" ReferenceEdge="Top" Material="Via1" Layer="19" Zmin="0.0000" Zmax="0.5400" />
72
+ <Layer Name="Metal1" Type="conductor" Reference="Cont" ReferenceEdge="Top" Material="Metal1" Layer="8" Zmin="0.0000" Zmax="0.4200" />
73
+ <Layer Name="Cont" Type="via" Reference="Activ" ReferenceEdge="Top" Material="Cont" Layer="6" Zmin="0.0000" Zmax="0.6400" />
74
+ <Layer Name="RHIGH" Type="sheet" Reference="Activ" ReferenceEdge="Top" Material="RHIGH" Layer="312" Zmin="0.0000" Zmax="0.0000" />
75
+ <Layer Name="RPPD" Type="sheet" Reference="Activ" ReferenceEdge="Top" Material="RPPD" Layer="313" Zmin="0.0000" Zmax="0.0000" />
76
+ <Layer Name="RSIL" Type="sheet" Reference="Activ" ReferenceEdge="Top" Material="RSIL" Layer="314" Zmin="0.0000" Zmax="0.0000" />
77
+ <Layer Name="Activ" Type="conductor" Reference="SiO2" ReferenceEdge="Bottom" Material="Activ" Layer="1" Zmin="0.0000" Zmax="0.4000" />
78
+ <Layer Name="SUBGND" Type="conductor" Reference="EPI" ReferenceEdge="Bottom" Material="LOWLOSS" Layer="250" Zmin="0.0000" Zmax="3.7500" />
79
+ <Layer Name="LBE" Type="dielectric" Reference="Substrate" ReferenceEdge="Bottom" Material="AIR" Layer="157" Zmin="0.0000" Zmax="=bulk_thickness + 3.7500" />
80
+ <Layer Name="BACKSIDEGND" Type="conductor" Reference="Substrate" ReferenceEdge="Bottom" Material="LOWLOSS" Layer="251" Zmin="-6.2500" Zmax="0.0000" />
81
+ </Layers>
82
+ <DerivedLayers>
83
+ <DerivedLayer Name="GatPoly" Layer="310" Operation="OR">
84
+ <Operand Layer="5" />
85
+ <Operand Layer="128" />
86
+ </DerivedLayer>
87
+ <DerivedLayer Name="Rhigh_or_Rppd" Layer="311" Operation="AND">
88
+ <Operand Layer="28" />
89
+ <Operand Layer="14" />
90
+ <Operand Layer="310" />
91
+ </DerivedLayer>
92
+ <DerivedLayer Name="RHIGH" Layer="312" Operation="AND">
93
+ <Operand Layer="311" />
94
+ <Operand Layer="7" />
95
+ </DerivedLayer>
96
+ <DerivedLayer Name="RPPD" Layer="313" Operation="NOT">
97
+ <Operand Layer="311" />
98
+ <Operand Layer="7" />
99
+ </DerivedLayer>
100
+ <DerivedLayer Name="RSIL" Layer="314" Operation="NOT">
101
+ <Operand Layer="310" />
102
+ <Operand Layer="311" />
103
+ </DerivedLayer>
104
+ </DerivedLayers>
105
+ </ELayers>
106
+ </Stackup>
@@ -370,7 +370,7 @@ class FileInputTab(QWidget):
370
370
  self.XML_show_layout.setAlignment(Qt.AlignRight)
371
371
  self.show_XML_btn = QPushButton("Show Stackup")
372
372
  self.show_XML_btn.setFixedWidth(150)
373
- self.show_XML_btn.clicked.connect(self.MainWindow.open_popup)
373
+ self.show_XML_btn.clicked.connect(self.show_stackup)
374
374
  self.XML_show_layout.addWidget(self.show_XML_btn)
375
375
  self.XML_layout.addLayout(self.XML_show_layout)
376
376
 
@@ -662,6 +662,15 @@ class FileInputTab(QWidget):
662
662
 
663
663
  return True # Tab change only possible when returning True
664
664
 
665
+ def show_stackup(self):
666
+ # "Show Stackup" is a plain button click, not a tab change, so nothing
667
+ # would otherwise flush the override grid into saved_values/materials_list
668
+ # before the popup reads them - save first so edited overrides not yet
669
+ # committed by switching tabs still show up in the preview.
670
+ if not self.save_values():
671
+ return
672
+ self.MainWindow.open_popup()
673
+
665
674
 
666
675
  # ---- Python Syntax Highlighter ----
667
676
  class PythonHighlighter(QSyntaxHighlighter):
@@ -1815,7 +1824,8 @@ class MainWindowBase(QMainWindow):
1815
1824
  def read_XML(self):
1816
1825
  filename = self.saved_values["SubstrateFile"]
1817
1826
  if pathlib.Path(filename).exists():
1818
- self.materials_list, self.dielectrics_list, self.metals_list = stackup_reader.read_substrate(filename)
1827
+ self.materials_list, self.dielectrics_list, self.metals_list = stackup_reader.read_substrate(
1828
+ filename, variable_overrides=self.saved_values.get("variable_overrides"))
1819
1829
  self.update_target_layer_choices(self.metals_list)
1820
1830
  self.file_tab.update_XML_description(filename)
1821
1831
  self.file_tab.update_variable_overrides_grid(filename)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: setupEM
3
- Version: 0.3.11
3
+ Version: 0.3.13
4
4
  Summary: Python tool for configuration of gds2palace workflow with GUI.
5
5
  Author-email: Volker Muehlhaus <volker@muehlhaus.com>
6
6
  Requires-Python: >=3.9
@@ -11,6 +11,8 @@ Requires-Dist: scipy
11
11
  Requires-Dist: requests
12
12
  Requires-Dist: scikit-rf
13
13
  Requires-Dist: matplotlib
14
+ Requires-Dist: numpy
15
+ Requires-Dist: gdspy
14
16
 
15
17
  # Python GUI for gds2palace
16
18
 
@@ -16,4 +16,5 @@ src/setupEM.egg-info/requires.txt
16
16
  src/setupEM.egg-info/top_level.txt
17
17
  src/setupEM/data/SG13G2_100um.xml
18
18
  src/setupEM/data/SG13G2_200um.xml
19
+ src/setupEM/data/SG13G2_200um_with_parameters.xml
19
20
  src/setupEM/data/SG13G2_nosub.xml
@@ -4,3 +4,5 @@ scipy
4
4
  requests
5
5
  scikit-rf
6
6
  matplotlib
7
+ numpy
8
+ gdspy
File without changes
File without changes