pyedb 0.18.0__py3-none-any.whl → 0.20.0__py3-none-any.whl
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.
Potentially problematic release.
This version of pyedb might be problematic. Click here for more details.
- pyedb/__init__.py +1 -1
- pyedb/configuration/cfg_data.py +8 -11
- pyedb/configuration/cfg_nets.py +14 -0
- pyedb/configuration/cfg_pin_groups.py +57 -20
- pyedb/configuration/cfg_ports_sources.py +248 -60
- pyedb/configuration/configuration.py +51 -17
- pyedb/dotnet/edb.py +156 -236
- pyedb/dotnet/edb_core/cell/connectable.py +64 -0
- pyedb/dotnet/edb_core/cell/hierarchy/component.py +12 -10
- pyedb/dotnet/edb_core/cell/hierarchy/hierarchy_obj.py +1 -1
- pyedb/dotnet/edb_core/cell/layout.py +271 -76
- pyedb/dotnet/edb_core/cell/layout_obj.py +4 -49
- pyedb/dotnet/edb_core/cell/primitive.py +14 -2
- pyedb/dotnet/edb_core/cell/terminal/padstack_instance_terminal.py +10 -0
- pyedb/dotnet/edb_core/cell/terminal/pingroup_terminal.py +5 -0
- pyedb/dotnet/edb_core/cell/terminal/point_terminal.py +1 -12
- pyedb/dotnet/edb_core/cell/terminal/terminal.py +36 -20
- pyedb/dotnet/edb_core/cell/voltage_regulator.py +2 -16
- pyedb/dotnet/edb_core/components.py +88 -31
- pyedb/dotnet/edb_core/dotnet/database.py +5 -10
- pyedb/dotnet/edb_core/dotnet/primitive.py +20 -7
- pyedb/dotnet/edb_core/edb_data/control_file.py +2 -12
- pyedb/dotnet/edb_core/edb_data/padstacks_data.py +28 -37
- pyedb/dotnet/edb_core/edb_data/ports.py +0 -18
- pyedb/dotnet/edb_core/edb_data/primitives_data.py +1 -1
- pyedb/dotnet/edb_core/general.py +6 -9
- pyedb/dotnet/edb_core/hfss.py +4 -8
- pyedb/dotnet/edb_core/layout_obj_instance.py +30 -0
- pyedb/dotnet/edb_core/materials.py +4 -11
- pyedb/dotnet/edb_core/{layout.py → modeler.py} +153 -7
- pyedb/dotnet/edb_core/net_class.py +7 -8
- pyedb/dotnet/edb_core/nets.py +3 -9
- pyedb/dotnet/edb_core/padstack.py +23 -10
- pyedb/dotnet/edb_core/sim_setup_data/data/sim_setup_info.py +42 -3
- pyedb/dotnet/edb_core/sim_setup_data/data/simulation_settings.py +92 -158
- pyedb/dotnet/edb_core/sim_setup_data/data/siw_dc_ir_settings.py +22 -22
- pyedb/dotnet/edb_core/sim_setup_data/data/sweep_data.py +5 -2
- pyedb/dotnet/edb_core/sim_setup_data/io/siwave.py +76 -76
- pyedb/dotnet/edb_core/siwave.py +5 -6
- pyedb/dotnet/edb_core/stackup.py +18 -23
- pyedb/dotnet/edb_core/utilities/hfss_simulation_setup.py +23 -94
- pyedb/dotnet/edb_core/utilities/simulation_setup.py +40 -41
- pyedb/dotnet/edb_core/utilities/siwave_simulation_setup.py +26 -17
- pyedb/generic/filesystem.py +2 -8
- pyedb/generic/general_methods.py +4 -10
- pyedb/generic/plot.py +26 -29
- pyedb/generic/process.py +2 -6
- pyedb/misc/downloads.py +3 -40
- pyedb/siwave.py +2 -5
- {pyedb-0.18.0.dist-info → pyedb-0.20.0.dist-info}/METADATA +8 -8
- {pyedb-0.18.0.dist-info → pyedb-0.20.0.dist-info}/RECORD +53 -52
- pyedb/dotnet/edb_core/dotnet/layout.py +0 -260
- {pyedb-0.18.0.dist-info → pyedb-0.20.0.dist-info}/LICENSE +0 -0
- {pyedb-0.18.0.dist-info → pyedb-0.20.0.dist-info}/WHEEL +0 -0
|
@@ -20,13 +20,15 @@
|
|
|
20
20
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
# SOFTWARE.
|
|
22
22
|
|
|
23
|
+
from pyedb.dotnet.edb_core.general import convert_py_list_to_net_list
|
|
24
|
+
|
|
23
25
|
|
|
24
26
|
class BaseSimulationSettings:
|
|
25
27
|
def __init__(self, pedb, sim_setup, edb_object):
|
|
26
28
|
self._pedb = pedb
|
|
27
|
-
self.
|
|
29
|
+
self._sim_setup = sim_setup
|
|
28
30
|
self._edb_object = edb_object
|
|
29
|
-
self.
|
|
31
|
+
self._t_sim_setup_type = {
|
|
30
32
|
"kHFSS": self._pedb.simsetupdata.HFSSSimulationSettings,
|
|
31
33
|
"kPEM": None,
|
|
32
34
|
"kSIwave": self._pedb.simsetupdata.SIwave.SIWSimulationSettings,
|
|
@@ -68,12 +70,8 @@ class HFSSSimulationSettings(SimulationSettings):
|
|
|
68
70
|
|
|
69
71
|
|
|
70
72
|
class HFSSPISimulationSettings(SimulationSettings):
|
|
71
|
-
def __init__(self,
|
|
72
|
-
super().__init__(pedb,
|
|
73
|
-
self._pedb = pedb
|
|
74
|
-
self.logger = self._pedb.logger
|
|
75
|
-
self._edb_setup_info = edb_setup_info
|
|
76
|
-
self._simulation_settings = edb_setup_info.SimulationSettings
|
|
73
|
+
def __init__(self, pedb, sim_setup, edb_object):
|
|
74
|
+
super().__init__(pedb, sim_setup, edb_object)
|
|
77
75
|
|
|
78
76
|
@property
|
|
79
77
|
def auto_select_nets_for_simulation(self):
|
|
@@ -83,28 +81,11 @@ class HFSSPISimulationSettings(SimulationSettings):
|
|
|
83
81
|
-------
|
|
84
82
|
bool
|
|
85
83
|
"""
|
|
86
|
-
return self.
|
|
84
|
+
return self._edb_object.AutoSelectNetsForSimulation
|
|
87
85
|
|
|
88
86
|
@auto_select_nets_for_simulation.setter
|
|
89
|
-
def auto_select_nets_for_simulation(self, value):
|
|
90
|
-
|
|
91
|
-
self._simulation_settings.AutoSelectNetsForSimulation = value
|
|
92
|
-
else:
|
|
93
|
-
self.logger.error(
|
|
94
|
-
"Property auto_select_nets_for_simulation expects a boolean "
|
|
95
|
-
f"value while the provided value is {value}."
|
|
96
|
-
)
|
|
97
|
-
|
|
98
|
-
@property
|
|
99
|
-
def enabled(self):
|
|
100
|
-
return self._simulation_settings.Enabled
|
|
101
|
-
|
|
102
|
-
@enabled.setter
|
|
103
|
-
def enabled(self, value):
|
|
104
|
-
if isinstance(value, bool):
|
|
105
|
-
self._simulation_settings.Enabled = value
|
|
106
|
-
else:
|
|
107
|
-
self.logger.error(f"Property enabled expects a boolean value while the provided value is {value}.")
|
|
87
|
+
def auto_select_nets_for_simulation(self, value: bool):
|
|
88
|
+
self._edb_object.AutoSelectNetsForSimulation = value
|
|
108
89
|
|
|
109
90
|
@property
|
|
110
91
|
def ignore_dummy_nets_for_selected_nets(self):
|
|
@@ -114,17 +95,11 @@ class HFSSPISimulationSettings(SimulationSettings):
|
|
|
114
95
|
-------
|
|
115
96
|
bool
|
|
116
97
|
"""
|
|
117
|
-
return self.
|
|
98
|
+
return self._edb_object.IgnoreDummyNetsForSelectedNets
|
|
118
99
|
|
|
119
100
|
@ignore_dummy_nets_for_selected_nets.setter
|
|
120
101
|
def ignore_dummy_nets_for_selected_nets(self, value):
|
|
121
|
-
|
|
122
|
-
self._simulation_settings.IgnoreDummyNetsForSelectedNets = value
|
|
123
|
-
else:
|
|
124
|
-
self.logger.error(
|
|
125
|
-
"Property ignore_dummy_nets_for_selected_nets expects a boolean "
|
|
126
|
-
f"value while the provided value is {value}."
|
|
127
|
-
)
|
|
102
|
+
self._edb_object.IgnoreDummyNetsForSelectedNets = value
|
|
128
103
|
|
|
129
104
|
@property
|
|
130
105
|
def ignore_small_holes(self):
|
|
@@ -134,16 +109,11 @@ class HFSSPISimulationSettings(SimulationSettings):
|
|
|
134
109
|
-------
|
|
135
110
|
bool
|
|
136
111
|
"""
|
|
137
|
-
return self.
|
|
112
|
+
return self._edb_object.IgnoreSmallHoles
|
|
138
113
|
|
|
139
114
|
@ignore_small_holes.setter
|
|
140
|
-
def ignore_small_holes(self, value):
|
|
141
|
-
|
|
142
|
-
self._simulation_settings.IgnoreSmallHoles = value
|
|
143
|
-
else:
|
|
144
|
-
self.logger.error(
|
|
145
|
-
f"Property ignore_small_holes expects a boolean value while the provided value is {value}."
|
|
146
|
-
)
|
|
115
|
+
def ignore_small_holes(self, value: bool):
|
|
116
|
+
self._edb_object.IgnoreSmallHoles = value
|
|
147
117
|
|
|
148
118
|
@property
|
|
149
119
|
def ignore_small_holes_min_diameter(self):
|
|
@@ -153,33 +123,27 @@ class HFSSPISimulationSettings(SimulationSettings):
|
|
|
153
123
|
-------
|
|
154
124
|
str
|
|
155
125
|
"""
|
|
156
|
-
|
|
126
|
+
value = self._edb_object.IgnoreSmallHolesMinDiameter
|
|
127
|
+
return float(value) if value else value
|
|
157
128
|
|
|
158
129
|
@ignore_small_holes_min_diameter.setter
|
|
159
130
|
def ignore_small_holes_min_diameter(self, value):
|
|
160
|
-
self.
|
|
131
|
+
self._edb_object.IgnoreSmallHolesMinDiameter = self._pedb.edb_value(value).ToString()
|
|
161
132
|
|
|
162
133
|
@property
|
|
163
134
|
def improved_loss_model(self):
|
|
164
135
|
"""Improved Loss Model on power ground nets option.
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
str
|
|
169
|
-
``Level1``, ``Level2``, ``Level3``
|
|
136
|
+
1: Level 1
|
|
137
|
+
2: Level 2
|
|
138
|
+
3: Level 3
|
|
170
139
|
"""
|
|
171
|
-
|
|
140
|
+
levels = {"Level 1": 1, "Level 2": 2, "Level 3": 3}
|
|
141
|
+
return levels[self._edb_object.ImprovedLossModel]
|
|
172
142
|
|
|
173
143
|
@improved_loss_model.setter
|
|
174
|
-
def improved_loss_model(self, value):
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
self._simulation_settings.ImprovedLossModel = value
|
|
178
|
-
else:
|
|
179
|
-
self.logger.error(
|
|
180
|
-
"Property improved_loss_model expects a string value among "
|
|
181
|
-
f"'Level1', 'Level2' or 'Level3' while the provided value is {value}."
|
|
182
|
-
)
|
|
144
|
+
def improved_loss_model(self, value: int):
|
|
145
|
+
levels = {1: "Level 1", 2: "Level 2", 3: "Level 3"}
|
|
146
|
+
self._edb_object.ImprovedLossModel = levels[value]
|
|
183
147
|
|
|
184
148
|
@property
|
|
185
149
|
def include_enhanced_bond_wire_modeling(self):
|
|
@@ -189,17 +153,11 @@ class HFSSPISimulationSettings(SimulationSettings):
|
|
|
189
153
|
-------
|
|
190
154
|
bool
|
|
191
155
|
"""
|
|
192
|
-
return self.
|
|
156
|
+
return self._edb_object.IncludeEnhancedBondWireModeling
|
|
193
157
|
|
|
194
158
|
@include_enhanced_bond_wire_modeling.setter
|
|
195
|
-
def include_enhanced_bond_wire_modeling(self, value):
|
|
196
|
-
|
|
197
|
-
self._simulation_settings.IncludeEnhancedBondWireModeling = value
|
|
198
|
-
else:
|
|
199
|
-
self.logger.error(
|
|
200
|
-
"Property include_enhanced_bond_wire_modeling expects a "
|
|
201
|
-
f"boolean value while the provided value is {value}."
|
|
202
|
-
)
|
|
159
|
+
def include_enhanced_bond_wire_modeling(self, value: bool):
|
|
160
|
+
self._edb_object.IncludeEnhancedBondWireModeling = value
|
|
203
161
|
|
|
204
162
|
@property
|
|
205
163
|
def include_nets(self):
|
|
@@ -210,18 +168,12 @@ class HFSSPISimulationSettings(SimulationSettings):
|
|
|
210
168
|
[str]
|
|
211
169
|
List of net name.
|
|
212
170
|
"""
|
|
213
|
-
return list(self.
|
|
171
|
+
return list(self._edb_object.IncludeNets)
|
|
214
172
|
|
|
215
173
|
@include_nets.setter
|
|
216
174
|
def include_nets(self, value):
|
|
217
|
-
if isinstance(value,
|
|
218
|
-
|
|
219
|
-
if isinstance(value, list):
|
|
220
|
-
self._simulation_settings.IncludeNets = convert_py_list_to_net_list(value)
|
|
221
|
-
else:
|
|
222
|
-
self.logger.error(
|
|
223
|
-
f"Property include_nets expects a string or list of string while the provided value is {value}."
|
|
224
|
-
)
|
|
175
|
+
value = value if isinstance(value, list) else [value]
|
|
176
|
+
self._edb_object.IncludeNets = convert_py_list_to_net_list(value)
|
|
225
177
|
|
|
226
178
|
@property
|
|
227
179
|
def min_plane_area_to_mesh(self):
|
|
@@ -231,11 +183,11 @@ class HFSSPISimulationSettings(SimulationSettings):
|
|
|
231
183
|
-------
|
|
232
184
|
str
|
|
233
185
|
"""
|
|
234
|
-
return self.
|
|
186
|
+
return self._edb_object.MinPlaneAreaToMesh
|
|
235
187
|
|
|
236
188
|
@min_plane_area_to_mesh.setter
|
|
237
189
|
def min_plane_area_to_mesh(self, value):
|
|
238
|
-
self.
|
|
190
|
+
self._edb_object.MinPlaneAreaToMesh = self._pedb.edb_value(value).ToString()
|
|
239
191
|
|
|
240
192
|
@property
|
|
241
193
|
def min_void_area_to_mesh(self):
|
|
@@ -245,31 +197,30 @@ class HFSSPISimulationSettings(SimulationSettings):
|
|
|
245
197
|
-------
|
|
246
198
|
str
|
|
247
199
|
"""
|
|
248
|
-
return self.
|
|
200
|
+
return self._edb_object.MinVoidAreaToMesh
|
|
249
201
|
|
|
250
202
|
@min_void_area_to_mesh.setter
|
|
251
203
|
def min_void_area_to_mesh(self, value):
|
|
252
|
-
self.
|
|
204
|
+
self._edb_object.MinVoidAreaToMesh = self._pedb.edb_value(value).ToString()
|
|
253
205
|
|
|
254
206
|
@property
|
|
255
207
|
def model_type(self):
|
|
256
208
|
"""Model Type setting.
|
|
257
209
|
|
|
210
|
+
0: RDL,
|
|
211
|
+
1: Package
|
|
212
|
+
2: PCB
|
|
213
|
+
|
|
258
214
|
Returns
|
|
259
215
|
-------
|
|
260
216
|
int
|
|
261
|
-
|
|
217
|
+
|
|
262
218
|
"""
|
|
263
|
-
return self.
|
|
219
|
+
return self._edb_object.ModelType
|
|
264
220
|
|
|
265
221
|
@model_type.setter
|
|
266
|
-
def model_type(self, value):
|
|
267
|
-
|
|
268
|
-
self._simulation_settings.ModelType = value
|
|
269
|
-
else:
|
|
270
|
-
self.logger.error(
|
|
271
|
-
f"Property model_type expects an integer value among 0, 1 or 2 while the provided value is {value}."
|
|
272
|
-
)
|
|
222
|
+
def model_type(self, value: int):
|
|
223
|
+
self._edb_object.ModelType = value
|
|
273
224
|
|
|
274
225
|
@property
|
|
275
226
|
def perform_erc(self):
|
|
@@ -279,34 +230,25 @@ class HFSSPISimulationSettings(SimulationSettings):
|
|
|
279
230
|
-------
|
|
280
231
|
bool
|
|
281
232
|
"""
|
|
282
|
-
return self.
|
|
233
|
+
return self._edb_object.PerformERC
|
|
283
234
|
|
|
284
235
|
@perform_erc.setter
|
|
285
|
-
def perform_erc(self, value):
|
|
286
|
-
|
|
287
|
-
self._simulation_settings.PerformERC = value
|
|
288
|
-
else:
|
|
289
|
-
self.logger.error(f"Property perform_erc expects a boolean value while the provided value is {value}.")
|
|
236
|
+
def perform_erc(self, value: bool):
|
|
237
|
+
self._edb_object.PerformERC = value
|
|
290
238
|
|
|
291
239
|
@property
|
|
292
240
|
def pi_slider_pos(self):
|
|
293
241
|
"""The Simulation Preference Slider setting
|
|
294
|
-
|
|
242
|
+
Model type: ``0``= balanced, ``1``=Accuracy.
|
|
295
243
|
Returns
|
|
296
244
|
-------
|
|
297
245
|
int
|
|
298
|
-
Model type: ``0``= balanced, ``1``=Accuracy.
|
|
299
246
|
"""
|
|
300
|
-
return self.
|
|
247
|
+
return self._edb_object.PISliderPos
|
|
301
248
|
|
|
302
249
|
@pi_slider_pos.setter
|
|
303
250
|
def pi_slider_pos(self, value):
|
|
304
|
-
|
|
305
|
-
self._simulation_settings.PISliderPos = value
|
|
306
|
-
else:
|
|
307
|
-
self.logger.error(
|
|
308
|
-
f"Property pi_slider_pos expects an integer value among 0 or 1 while the provided value is {value}."
|
|
309
|
-
)
|
|
251
|
+
self._edb_object.PISliderPos = value
|
|
310
252
|
|
|
311
253
|
@property
|
|
312
254
|
def rms_surface_roughness(self):
|
|
@@ -316,33 +258,32 @@ class HFSSPISimulationSettings(SimulationSettings):
|
|
|
316
258
|
-------
|
|
317
259
|
str
|
|
318
260
|
"""
|
|
319
|
-
return self.
|
|
261
|
+
return self._edb_object.RMSSurfaceRoughness
|
|
320
262
|
|
|
321
263
|
@rms_surface_roughness.setter
|
|
322
264
|
def rms_surface_roughness(self, value):
|
|
323
|
-
self.
|
|
265
|
+
self._edb_object.RMSSurfaceRoughness = self._pedb.edb_value(value).ToString()
|
|
324
266
|
|
|
325
267
|
@property
|
|
326
|
-
def signal_nets_conductor_modeling(self):
|
|
327
|
-
"""Conductor Modeling
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
-------
|
|
331
|
-
str
|
|
332
|
-
Value: ``"MeshInside"`` or ``"ImpedanceBoundary"``.
|
|
268
|
+
def signal_nets_conductor_modeling(self) -> int:
|
|
269
|
+
"""Conductor Modeling.
|
|
270
|
+
0: MeshInside,
|
|
271
|
+
1: ImpedanceBoundary
|
|
333
272
|
"""
|
|
334
|
-
|
|
273
|
+
modelling_type = {
|
|
274
|
+
"Mesh Inside": 0,
|
|
275
|
+
"Impedance Boundary": 1,
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
return modelling_type[self._edb_object.SignalNetsConductorModeling]
|
|
335
279
|
|
|
336
280
|
@signal_nets_conductor_modeling.setter
|
|
337
|
-
def signal_nets_conductor_modeling(self, value):
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
"Property signal_nets_conductor_modeling expects a string value among "
|
|
344
|
-
f"'MeshInside' or 'ImpedanceBoundary' while the provided value is {value}."
|
|
345
|
-
)
|
|
281
|
+
def signal_nets_conductor_modeling(self, value: int):
|
|
282
|
+
modelling_type = {
|
|
283
|
+
0: "Mesh Inside",
|
|
284
|
+
1: "Impedance Boundary",
|
|
285
|
+
}
|
|
286
|
+
self._edb_object.SignalNetsConductorModeling = modelling_type[value]
|
|
346
287
|
|
|
347
288
|
@property
|
|
348
289
|
def signal_nets_error_tolerance(self):
|
|
@@ -353,25 +294,20 @@ class HFSSPISimulationSettings(SimulationSettings):
|
|
|
353
294
|
str
|
|
354
295
|
Value between 0.02 and 1.
|
|
355
296
|
"""
|
|
356
|
-
|
|
297
|
+
value = self._edb_object.SignalNetsErrorTolerance
|
|
298
|
+
return "default" if value == "Default" else float(value)
|
|
357
299
|
|
|
358
300
|
@signal_nets_error_tolerance.setter
|
|
359
301
|
def signal_nets_error_tolerance(self, value):
|
|
360
|
-
self.
|
|
302
|
+
self._edb_object.SignalNetsErrorTolerance = self._pedb.edb_value(value).ToString()
|
|
361
303
|
|
|
362
304
|
@property
|
|
363
305
|
def signal_nets_include_improved_dielectric_fill_refinement(self):
|
|
364
|
-
return self.
|
|
306
|
+
return self._edb_object.SignalNetsIncludeImprovedDielectricFillRefinement
|
|
365
307
|
|
|
366
308
|
@signal_nets_include_improved_dielectric_fill_refinement.setter
|
|
367
|
-
def signal_nets_include_improved_dielectric_fill_refinement(self, value):
|
|
368
|
-
|
|
369
|
-
self._simulation_settings.SignalNetsIncludeImprovedDielectricFillRefinement = value
|
|
370
|
-
else:
|
|
371
|
-
self.logger.error(
|
|
372
|
-
"Property signal_nets_include_improved_dielectric_fill_refinement "
|
|
373
|
-
f"expects a boolean value while the provided value is {value}."
|
|
374
|
-
)
|
|
309
|
+
def signal_nets_include_improved_dielectric_fill_refinement(self, value: bool):
|
|
310
|
+
self._edb_object.SignalNetsIncludeImprovedDielectricFillRefinement = value
|
|
375
311
|
|
|
376
312
|
@property
|
|
377
313
|
def signal_nets_include_improved_loss_handling(self):
|
|
@@ -381,44 +317,42 @@ class HFSSPISimulationSettings(SimulationSettings):
|
|
|
381
317
|
-------
|
|
382
318
|
bool
|
|
383
319
|
"""
|
|
384
|
-
return self.
|
|
320
|
+
return self._edb_object.SignalNetsIncludeImprovedLossHandling
|
|
385
321
|
|
|
386
322
|
@signal_nets_include_improved_loss_handling.setter
|
|
387
|
-
def signal_nets_include_improved_loss_handling(self, value):
|
|
388
|
-
|
|
389
|
-
self._simulation_settings.SignalNetsIncludeImprovedLossHandling = value
|
|
390
|
-
else:
|
|
391
|
-
self.logger.error(
|
|
392
|
-
"Property signal_nets_include_improved_loss_handling "
|
|
393
|
-
f"expects a boolean value while the provided value is {value}."
|
|
394
|
-
)
|
|
323
|
+
def signal_nets_include_improved_loss_handling(self, value: bool):
|
|
324
|
+
self._edb_object.SignalNetsIncludeImprovedLossHandling = value
|
|
395
325
|
|
|
396
326
|
@property
|
|
397
327
|
def snap_length_threshold(self):
|
|
398
|
-
return self.
|
|
328
|
+
return self._edb_object.SnapLengthThreshold
|
|
399
329
|
|
|
400
330
|
@snap_length_threshold.setter
|
|
401
331
|
def snap_length_threshold(self, value):
|
|
402
|
-
self.
|
|
332
|
+
self._edb_object.SnapLengthThreshold = self._pedb.edb_value(value).ToString()
|
|
403
333
|
|
|
404
334
|
@property
|
|
405
335
|
def surface_roughness_model(self):
|
|
406
336
|
"""Chosen Model setting
|
|
337
|
+
Model allowed, ``"None"``, ``"Exponential"`` or ``"Hammerstad"``.
|
|
407
338
|
|
|
408
339
|
Returns
|
|
409
340
|
-------
|
|
410
341
|
str
|
|
411
|
-
|
|
342
|
+
|
|
412
343
|
"""
|
|
413
|
-
|
|
344
|
+
model = {
|
|
345
|
+
"None": 0,
|
|
346
|
+
"Exponential": 1,
|
|
347
|
+
"Hammerstad": 2,
|
|
348
|
+
}
|
|
349
|
+
return model[self._edb_object.SurfaceRoughnessModel]
|
|
414
350
|
|
|
415
351
|
@surface_roughness_model.setter
|
|
416
352
|
def surface_roughness_model(self, value):
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
f"'None', 'Exponential' or 'Hammerstad' while the provided value is {value}."
|
|
424
|
-
)
|
|
353
|
+
model = {
|
|
354
|
+
0: "None",
|
|
355
|
+
1: "Exponential",
|
|
356
|
+
2: "Hammerstad",
|
|
357
|
+
}
|
|
358
|
+
self._edb_object.SurfaceRoughnessModel = model[value]
|
|
@@ -41,12 +41,12 @@ class SiwaveDCIRSettings:
|
|
|
41
41
|
bool
|
|
42
42
|
``True`` when activated, ``False`` deactivated.
|
|
43
43
|
"""
|
|
44
|
-
return self._parent.get_sim_setup_info.
|
|
44
|
+
return self._parent.get_sim_setup_info.simulation_settings.DCIRSettings.ExportDCThermalData
|
|
45
45
|
|
|
46
46
|
@export_dc_thermal_data.setter
|
|
47
47
|
def export_dc_thermal_data(self, value):
|
|
48
48
|
edb_setup_info = self._parent.get_sim_setup_info
|
|
49
|
-
edb_setup_info.
|
|
49
|
+
edb_setup_info.simulation_settings.DCIRSettings.ExportDCThermalData = value
|
|
50
50
|
self._parent._edb_object = self._parent._set_edb_setup_info(edb_setup_info)
|
|
51
51
|
self._parent._update_setup()
|
|
52
52
|
|
|
@@ -59,12 +59,12 @@ class SiwaveDCIRSettings:
|
|
|
59
59
|
bool
|
|
60
60
|
``True`` when activated, ``False`` deactivated.
|
|
61
61
|
"""
|
|
62
|
-
return self._parent.get_sim_setup_info.
|
|
62
|
+
return self._parent.get_sim_setup_info.simulation_settings.DCIRSettings.ImportThermalData
|
|
63
63
|
|
|
64
64
|
@import_thermal_data.setter
|
|
65
65
|
def import_thermal_data(self, value):
|
|
66
66
|
edb_setup_info = self._parent.get_sim_setup_info
|
|
67
|
-
edb_setup_info.
|
|
67
|
+
edb_setup_info.simulation_settings.DCIRSettings.ImportThermalData = value
|
|
68
68
|
self._parent._edb_object = self._parent._set_edb_setup_info(edb_setup_info)
|
|
69
69
|
self._parent._update_setup()
|
|
70
70
|
|
|
@@ -77,12 +77,12 @@ class SiwaveDCIRSettings:
|
|
|
77
77
|
bool
|
|
78
78
|
``True`` when activated, ``False`` deactivated.
|
|
79
79
|
"""
|
|
80
|
-
return self._parent.get_sim_setup_info.
|
|
80
|
+
return self._parent.get_sim_setup_info.simulation_settings.DCIRSettings.DCReportShowActiveDevices
|
|
81
81
|
|
|
82
82
|
@dc_report_show_active_devices.setter
|
|
83
83
|
def dc_report_show_active_devices(self, value):
|
|
84
84
|
edb_setup_info = self._parent.get_sim_setup_info
|
|
85
|
-
edb_setup_info.
|
|
85
|
+
edb_setup_info.simulation_settings.DCIRSettings.DCReportShowActiveDevices = value
|
|
86
86
|
self._parent._edb_object = self._parent._set_edb_setup_info(edb_setup_info)
|
|
87
87
|
self._parent._update_setup()
|
|
88
88
|
|
|
@@ -95,12 +95,12 @@ class SiwaveDCIRSettings:
|
|
|
95
95
|
bool
|
|
96
96
|
``True`` when activated, ``False`` deactivated.
|
|
97
97
|
"""
|
|
98
|
-
return self._parent.get_sim_setup_info.
|
|
98
|
+
return self._parent.get_sim_setup_info.simulation_settings.DCIRSettings.PerPinUsePinFormat
|
|
99
99
|
|
|
100
100
|
@per_pin_use_pin_format.setter
|
|
101
101
|
def per_pin_use_pin_format(self, value):
|
|
102
102
|
edb_setup_info = self._parent.get_sim_setup_info
|
|
103
|
-
edb_setup_info.
|
|
103
|
+
edb_setup_info.simulation_settings.DCIRSettings.PerPinUsePinFormat = value
|
|
104
104
|
self._parent._edb_object = self._parent._set_edb_setup_info(edb_setup_info)
|
|
105
105
|
self._parent._update_setup()
|
|
106
106
|
|
|
@@ -113,12 +113,12 @@ class SiwaveDCIRSettings:
|
|
|
113
113
|
bool
|
|
114
114
|
``True`` when activated, ``False`` deactivated.
|
|
115
115
|
"""
|
|
116
|
-
return self._parent.get_sim_setup_info.
|
|
116
|
+
return self._parent.get_sim_setup_info.simulation_settings.DCIRSettings.UseLoopResForPerPin
|
|
117
117
|
|
|
118
118
|
@use_loop_res_for_per_pin.setter
|
|
119
119
|
def use_loop_res_for_per_pin(self, value):
|
|
120
120
|
edb_setup_info = self._parent.get_sim_setup_info
|
|
121
|
-
edb_setup_info.
|
|
121
|
+
edb_setup_info.simulation_settings.DCIRSettings.UseLoopResForPerPin = value
|
|
122
122
|
self._parent._edb_object = self._parent._set_edb_setup_info(edb_setup_info)
|
|
123
123
|
self._parent._update_setup()
|
|
124
124
|
|
|
@@ -131,12 +131,12 @@ class SiwaveDCIRSettings:
|
|
|
131
131
|
str
|
|
132
132
|
path to the DC report configuration file.
|
|
133
133
|
"""
|
|
134
|
-
return self._parent.get_sim_setup_info.
|
|
134
|
+
return self._parent.get_sim_setup_info.simulation_settings.DCIRSettings.DCReportConfigFile
|
|
135
135
|
|
|
136
136
|
@dc_report_config_file.setter
|
|
137
137
|
def dc_report_config_file(self, value):
|
|
138
138
|
edb_setup_info = self._parent.get_sim_setup_info
|
|
139
|
-
edb_setup_info.
|
|
139
|
+
edb_setup_info.simulation_settings.DCIRSettings.DCReportConfigFile = value
|
|
140
140
|
self._parent._edb_object = self._parent._set_edb_setup_info(edb_setup_info)
|
|
141
141
|
self._parent._update_setup()
|
|
142
142
|
|
|
@@ -149,12 +149,12 @@ class SiwaveDCIRSettings:
|
|
|
149
149
|
str
|
|
150
150
|
full path to the DC report file.
|
|
151
151
|
"""
|
|
152
|
-
return self._parent.get_sim_setup_info.
|
|
152
|
+
return self._parent.get_sim_setup_info.simulation_settings.DCIRSettings.FullDCReportPath
|
|
153
153
|
|
|
154
154
|
@full_dc_report_path.setter
|
|
155
155
|
def full_dc_report_path(self, value):
|
|
156
156
|
edb_setup_info = self._parent.get_sim_setup_info
|
|
157
|
-
edb_setup_info.
|
|
157
|
+
edb_setup_info.simulation_settings.DCIRSettings.FullDCReportPath = value
|
|
158
158
|
self._parent._edb_object = self._parent._set_edb_setup_info(edb_setup_info)
|
|
159
159
|
self._parent._update_setup()
|
|
160
160
|
|
|
@@ -167,12 +167,12 @@ class SiwaveDCIRSettings:
|
|
|
167
167
|
str
|
|
168
168
|
path to the temp Icepak file.
|
|
169
169
|
"""
|
|
170
|
-
return self._parent.get_sim_setup_info.
|
|
170
|
+
return self._parent.get_sim_setup_info.simulation_settings.DCIRSettings.IcepakTempFile
|
|
171
171
|
|
|
172
172
|
@icepak_temp_file.setter
|
|
173
173
|
def icepak_temp_file(self, value):
|
|
174
174
|
edb_setup_info = self._parent.get_sim_setup_info
|
|
175
|
-
edb_setup_info.
|
|
175
|
+
edb_setup_info.simulation_settings.DCIRSettings.IcepakTempFile = value
|
|
176
176
|
self._parent._edb_object = self._parent._set_edb_setup_info(edb_setup_info)
|
|
177
177
|
self._parent._update_setup()
|
|
178
178
|
|
|
@@ -185,12 +185,12 @@ class SiwaveDCIRSettings:
|
|
|
185
185
|
str
|
|
186
186
|
path for per pin res.
|
|
187
187
|
"""
|
|
188
|
-
return self._parent.get_sim_setup_info.
|
|
188
|
+
return self._parent.get_sim_setup_info.simulation_settings.DCIRSettings.PerPinResPath
|
|
189
189
|
|
|
190
190
|
@per_pin_res_path.setter
|
|
191
191
|
def per_pin_res_path(self, value):
|
|
192
192
|
edb_setup_info = self._parent.get_sim_setup_info
|
|
193
|
-
edb_setup_info.
|
|
193
|
+
edb_setup_info.simulation_settings.DCIRSettings.PerPinResPath = value
|
|
194
194
|
self._parent._edb_object = self._parent._set_edb_setup_info(edb_setup_info)
|
|
195
195
|
self._parent._update_setup()
|
|
196
196
|
|
|
@@ -203,12 +203,12 @@ class SiwaveDCIRSettings:
|
|
|
203
203
|
str
|
|
204
204
|
path for the Via Report.
|
|
205
205
|
"""
|
|
206
|
-
return self._parent.get_sim_setup_info.
|
|
206
|
+
return self._parent.get_sim_setup_info.simulation_settings.DCIRSettings.ViaReportPath
|
|
207
207
|
|
|
208
208
|
@via_report_path.setter
|
|
209
209
|
def via_report_path(self, value):
|
|
210
210
|
edb_setup_info = self._parent.get_sim_setup_info
|
|
211
|
-
edb_setup_info.
|
|
211
|
+
edb_setup_info.simulation_settings.DCIRSettings.ViaReportPath = value
|
|
212
212
|
self._parent._edb_object = self._parent._set_edb_setup_info(edb_setup_info)
|
|
213
213
|
self._parent._update_setup()
|
|
214
214
|
|
|
@@ -224,12 +224,12 @@ class SiwaveDCIRSettings:
|
|
|
224
224
|
str: source name,
|
|
225
225
|
int: node to ground pairs, 0 (unspecified), 1 (negative), 2 (positive) .
|
|
226
226
|
"""
|
|
227
|
-
temp = self._parent.get_sim_setup_info.
|
|
227
|
+
temp = self._parent.get_sim_setup_info.simulation_settings.DCIRSettings.SourceTermsToGround
|
|
228
228
|
return convert_netdict_to_pydict(temp)
|
|
229
229
|
|
|
230
230
|
@source_terms_to_ground.setter
|
|
231
231
|
def source_terms_to_ground(self, value):
|
|
232
232
|
edb_setup_info = self._parent.get_sim_setup_info
|
|
233
|
-
edb_setup_info.
|
|
233
|
+
edb_setup_info.simulation_settings.DCIRSettings.SourceTermsToGround = convert_pydict_to_netdict(value)
|
|
234
234
|
self._parent._edb_object = self._parent._set_edb_setup_info(edb_setup_info)
|
|
235
235
|
self._parent._update_setup()
|
|
@@ -50,7 +50,10 @@ class SweepData(object):
|
|
|
50
50
|
def _update_sweep(self):
|
|
51
51
|
"""Update the sweep."""
|
|
52
52
|
self.sim_setup.delete_frequency_sweep(self)
|
|
53
|
-
self.sim_setup.
|
|
53
|
+
ss_info = self.sim_setup.sim_setup_info
|
|
54
|
+
ss_info.add_sweep_data(self)
|
|
55
|
+
self.sim_setup.set_sim_setup_info(ss_info)
|
|
56
|
+
self.sim_setup._update_setup()
|
|
54
57
|
return
|
|
55
58
|
|
|
56
59
|
@property
|
|
@@ -165,7 +168,7 @@ class SweepData(object):
|
|
|
165
168
|
self._edb_object.FreqSweepType = edb_freq_sweep_type.kBroadbandFastSweep
|
|
166
169
|
elif value in [3, "kNumSweepTypes"]:
|
|
167
170
|
self._edb_object.FreqSweepType = edb_freq_sweep_type.kNumSweepTypes
|
|
168
|
-
self.
|
|
171
|
+
self._update_sweep()
|
|
169
172
|
|
|
170
173
|
@property
|
|
171
174
|
def type(self):
|