pyedb 0.50.0__py3-none-any.whl → 0.51.2__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_ports_sources.py +79 -239
- pyedb/configuration/configuration.py +27 -0
- pyedb/dotnet/clr_module.py +9 -3
- pyedb/dotnet/database/cell/hierarchy/component.py +3 -3
- pyedb/dotnet/database/cell/layout.py +10 -1
- pyedb/dotnet/database/dotnet/database.py +0 -2
- pyedb/dotnet/database/edb_data/padstacks_data.py +13 -0
- pyedb/dotnet/database/layout_validation.py +17 -13
- pyedb/dotnet/database/modeler.py +0 -1
- pyedb/dotnet/edb.py +7 -1
- pyedb/generic/design_types.py +183 -62
- pyedb/grpc/database/components.py +604 -652
- pyedb/grpc/database/control_file.py +597 -155
- pyedb/grpc/database/definition/component_def.py +17 -14
- pyedb/grpc/database/definition/materials.py +27 -27
- pyedb/grpc/database/definition/package_def.py +8 -8
- pyedb/grpc/database/definition/padstack_def.py +31 -33
- pyedb/grpc/database/definitions.py +36 -2
- pyedb/grpc/database/geometry/arc_data.py +5 -5
- pyedb/grpc/database/geometry/point_3d_data.py +3 -3
- pyedb/grpc/database/geometry/polygon_data.py +5 -5
- pyedb/grpc/database/hfss.py +412 -395
- pyedb/grpc/database/hierarchy/component.py +67 -58
- pyedb/grpc/database/hierarchy/pin_pair_model.py +6 -6
- pyedb/grpc/database/hierarchy/pingroup.py +13 -11
- pyedb/grpc/database/hierarchy/s_parameter_model.py +1 -1
- pyedb/grpc/database/hierarchy/spice_model.py +1 -1
- pyedb/grpc/database/layers/layer.py +2 -2
- pyedb/grpc/database/layers/stackup_layer.py +26 -23
- pyedb/grpc/database/layout/layout.py +12 -12
- pyedb/grpc/database/layout/voltage_regulator.py +8 -8
- pyedb/grpc/database/layout_validation.py +58 -7
- pyedb/grpc/database/modeler.py +248 -245
- pyedb/grpc/database/net/differential_pair.py +4 -4
- pyedb/grpc/database/net/extended_net.py +7 -8
- pyedb/grpc/database/net/net.py +57 -46
- pyedb/grpc/database/nets.py +362 -116
- pyedb/grpc/database/padstacks.py +259 -178
- pyedb/grpc/database/ports/ports.py +23 -17
- pyedb/grpc/database/primitive/padstack_instance.py +45 -30
- pyedb/grpc/database/primitive/path.py +6 -6
- pyedb/grpc/database/primitive/polygon.py +9 -9
- pyedb/grpc/database/primitive/primitive.py +21 -21
- pyedb/grpc/database/primitive/rectangle.py +1 -1
- pyedb/grpc/database/simulation_setup/hfss_advanced_settings.py +1 -1
- pyedb/grpc/database/simulation_setup/hfss_general_settings.py +1 -1
- pyedb/grpc/database/simulation_setup/hfss_settings_options.py +1 -1
- pyedb/grpc/database/simulation_setup/hfss_simulation_settings.py +6 -6
- pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +2 -2
- pyedb/grpc/database/simulation_setup/raptor_x_simulation_settings.py +2 -2
- pyedb/grpc/database/simulation_setup/raptor_x_simulation_setup.py +1 -1
- pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +3 -3
- pyedb/grpc/database/siwave.py +226 -214
- pyedb/grpc/database/source_excitations.py +307 -40
- pyedb/grpc/database/stackup.py +461 -283
- pyedb/grpc/database/terminal/bundle_terminal.py +12 -12
- pyedb/grpc/database/terminal/edge_terminal.py +6 -5
- pyedb/grpc/database/terminal/padstack_instance_terminal.py +13 -13
- pyedb/grpc/database/terminal/pingroup_terminal.py +12 -12
- pyedb/grpc/database/terminal/point_terminal.py +6 -6
- pyedb/grpc/database/terminal/terminal.py +26 -26
- pyedb/grpc/database/utility/heat_sink.py +5 -5
- pyedb/grpc/database/utility/hfss_extent_info.py +21 -21
- pyedb/grpc/database/utility/layout_statistics.py +13 -13
- pyedb/grpc/database/utility/rlc.py +3 -3
- pyedb/grpc/database/utility/sources.py +1 -1
- pyedb/grpc/database/utility/sweep_data_distribution.py +1 -1
- pyedb/grpc/edb.py +542 -739
- pyedb/grpc/edb_init.py +50 -3
- {pyedb-0.50.0.dist-info → pyedb-0.51.2.dist-info}/METADATA +1 -1
- {pyedb-0.50.0.dist-info → pyedb-0.51.2.dist-info}/RECORD +74 -75
- pyedb/grpc/database/utility/simulation_configuration.py +0 -3305
- {pyedb-0.50.0.dist-info → pyedb-0.51.2.dist-info}/LICENSE +0 -0
- {pyedb-0.50.0.dist-info → pyedb-0.51.2.dist-info}/WHEEL +0 -0
pyedb/grpc/database/siwave.py
CHANGED
|
@@ -59,12 +59,12 @@ class Siwave(object):
|
|
|
59
59
|
|
|
60
60
|
@property
|
|
61
61
|
def _edb(self):
|
|
62
|
-
"""EDB."""
|
|
62
|
+
"""EDB object."""
|
|
63
63
|
return self._pedb
|
|
64
64
|
|
|
65
65
|
@property
|
|
66
66
|
def _logger(self):
|
|
67
|
-
"""
|
|
67
|
+
"""Logger object."""
|
|
68
68
|
return self._pedb.logger
|
|
69
69
|
|
|
70
70
|
@property
|
|
@@ -79,37 +79,66 @@ class Siwave(object):
|
|
|
79
79
|
|
|
80
80
|
@property
|
|
81
81
|
def _cell(self):
|
|
82
|
-
"""
|
|
82
|
+
"""Active cell."""
|
|
83
83
|
return self._pedb.active_cell
|
|
84
84
|
|
|
85
85
|
@property
|
|
86
86
|
def _db(self):
|
|
87
|
-
""" """
|
|
87
|
+
"""Active database."""
|
|
88
88
|
return self._pedb.active_db
|
|
89
89
|
|
|
90
90
|
@property
|
|
91
91
|
def excitations(self):
|
|
92
|
-
"""
|
|
92
|
+
"""Excitation sources in the layout.
|
|
93
|
+
|
|
94
|
+
Examples
|
|
95
|
+
--------
|
|
96
|
+
>>> from pyedb import Edb
|
|
97
|
+
>>> edbapp = Edb("myaedbfolder", edbversion="2021.2")
|
|
98
|
+
>>> excitations = edbapp.siwave.excitations
|
|
99
|
+
"""
|
|
93
100
|
return self._pedb.excitations
|
|
94
101
|
|
|
95
102
|
@property
|
|
96
103
|
def sources(self):
|
|
97
|
-
"""
|
|
104
|
+
"""All sources in the layout.
|
|
105
|
+
|
|
106
|
+
Examples
|
|
107
|
+
--------
|
|
108
|
+
>>> from pyedb import Edb
|
|
109
|
+
>>> edbapp = Edb("myaedbfolder", edbversion="2021.2")
|
|
110
|
+
>>> sources = edbapp.siwave.sources
|
|
111
|
+
"""
|
|
98
112
|
return self._pedb.sources
|
|
99
113
|
|
|
100
114
|
@property
|
|
101
115
|
def probes(self):
|
|
102
|
-
"""
|
|
116
|
+
"""All probes in the layout.
|
|
117
|
+
|
|
118
|
+
Examples
|
|
119
|
+
--------
|
|
120
|
+
>>> from pyedb import Edb
|
|
121
|
+
>>> edbapp = Edb("myaedbfolder", edbversion="2021.2")
|
|
122
|
+
>>> probes = edbapp.siwave.probes
|
|
123
|
+
"""
|
|
103
124
|
return self._pedb.probes
|
|
104
125
|
|
|
105
126
|
@property
|
|
106
127
|
def pin_groups(self):
|
|
107
|
-
"""All
|
|
128
|
+
"""All layout pin groups.
|
|
108
129
|
|
|
109
130
|
Returns
|
|
110
131
|
-------
|
|
111
|
-
|
|
112
|
-
|
|
132
|
+
dict
|
|
133
|
+
Dictionary of pin groups with names as keys and pin group objects as values.
|
|
134
|
+
|
|
135
|
+
Examples
|
|
136
|
+
--------
|
|
137
|
+
>>> from pyedb import Edb
|
|
138
|
+
>>> edbapp = Edb("myaedbfolder", edbversion="2021.2")
|
|
139
|
+
>>> pin_groups = edbapp.siwave.pin_groups
|
|
140
|
+
>>> for name, group in pin_groups.items():
|
|
141
|
+
... print(f"Pin group {name} has {len(group.pins)} pins")
|
|
113
142
|
"""
|
|
114
143
|
_pingroups = {}
|
|
115
144
|
for el in self._pedb.layout.pin_groups:
|
|
@@ -118,8 +147,9 @@ class Siwave(object):
|
|
|
118
147
|
|
|
119
148
|
def _create_terminal_on_pins(self, source):
|
|
120
149
|
"""Create a terminal on pins.
|
|
121
|
-
|
|
122
|
-
|
|
150
|
+
|
|
151
|
+
.. deprecated:: pyedb 0.28.0
|
|
152
|
+
Use :func:`pyedb.grpc.core.excitations._create_terminal_on_pins` instead.
|
|
123
153
|
|
|
124
154
|
Parameters
|
|
125
155
|
----------
|
|
@@ -137,8 +167,8 @@ class Siwave(object):
|
|
|
137
167
|
def create_circuit_port_on_pin(self, pos_pin, neg_pin, impedance=50, port_name=None):
|
|
138
168
|
"""Create a circuit port on a pin.
|
|
139
169
|
|
|
140
|
-
|
|
141
|
-
|
|
170
|
+
.. deprecated:: pyedb 0.28.0
|
|
171
|
+
Use :func:`pyedb.grpc.core.excitations.create_circuit_port_on_pin` instead.
|
|
142
172
|
|
|
143
173
|
Parameters
|
|
144
174
|
----------
|
|
@@ -146,8 +176,8 @@ class Siwave(object):
|
|
|
146
176
|
Edb Pin
|
|
147
177
|
neg_pin : Object
|
|
148
178
|
Edb Pin
|
|
149
|
-
impedance : float
|
|
150
|
-
Port Impedance
|
|
179
|
+
impedance : float, optional
|
|
180
|
+
Port Impedance. Default is ``50``.
|
|
151
181
|
port_name : str, optional
|
|
152
182
|
Port Name
|
|
153
183
|
|
|
@@ -168,21 +198,21 @@ class Siwave(object):
|
|
|
168
198
|
):
|
|
169
199
|
"""Create circuit port between pin and a reference layer.
|
|
170
200
|
|
|
171
|
-
|
|
172
|
-
|
|
201
|
+
.. deprecated:: pyedb 0.28.0
|
|
202
|
+
Use :func:`pyedb.grpc.core.excitations.create_port_between_pin_and_layer` instead.
|
|
173
203
|
|
|
174
204
|
Parameters
|
|
175
205
|
----------
|
|
176
206
|
component_name : str
|
|
177
|
-
Component name.
|
|
207
|
+
Component name.
|
|
178
208
|
pins_name : str
|
|
179
|
-
Pin name or list of pin names.
|
|
209
|
+
Pin name or list of pin names.
|
|
180
210
|
layer_name : str
|
|
181
|
-
Layer name.
|
|
211
|
+
Layer name.
|
|
182
212
|
reference_net : str
|
|
183
|
-
Reference net name.
|
|
213
|
+
Reference net name.
|
|
184
214
|
impedance : float, optional
|
|
185
|
-
Port impedance.
|
|
215
|
+
Port impedance. Default is ``50.0`` ohms.
|
|
186
216
|
|
|
187
217
|
Returns
|
|
188
218
|
-------
|
|
@@ -200,8 +230,9 @@ class Siwave(object):
|
|
|
200
230
|
|
|
201
231
|
def create_voltage_source_on_pin(self, pos_pin, neg_pin, voltage_value=3.3, phase_value=0, source_name=""):
|
|
202
232
|
"""Create a voltage source.
|
|
203
|
-
|
|
204
|
-
|
|
233
|
+
|
|
234
|
+
.. deprecated:: pyedb 0.28.0
|
|
235
|
+
Use :func:`pyedb.grpc.core.excitations.create_voltage_source_on_pin` instead.
|
|
205
236
|
|
|
206
237
|
Parameters
|
|
207
238
|
----------
|
|
@@ -210,11 +241,11 @@ class Siwave(object):
|
|
|
210
241
|
neg_pin : Object
|
|
211
242
|
Negative Pin.
|
|
212
243
|
voltage_value : float, optional
|
|
213
|
-
Value for the voltage.
|
|
244
|
+
Value for the voltage. Default is ``3.3``.
|
|
214
245
|
phase_value : optional
|
|
215
|
-
Value for the phase.
|
|
246
|
+
Value for the phase. Default is ``0``.
|
|
216
247
|
source_name : str, optional
|
|
217
|
-
Name of the source.
|
|
248
|
+
Name of the source. Default is ``""``.
|
|
218
249
|
|
|
219
250
|
Returns
|
|
220
251
|
-------
|
|
@@ -234,8 +265,8 @@ class Siwave(object):
|
|
|
234
265
|
def create_current_source_on_pin(self, pos_pin, neg_pin, current_value=0.1, phase_value=0, source_name=""):
|
|
235
266
|
"""Create a current source.
|
|
236
267
|
|
|
237
|
-
|
|
238
|
-
|
|
268
|
+
.. deprecated:: pyedb 0.28.0
|
|
269
|
+
Use :func:`pyedb.grpc.core.excitations.create_current_source_on_pin` instead.
|
|
239
270
|
|
|
240
271
|
Parameters
|
|
241
272
|
----------
|
|
@@ -244,11 +275,11 @@ class Siwave(object):
|
|
|
244
275
|
neg_pin : Object
|
|
245
276
|
Negative pin.
|
|
246
277
|
current_value : float, optional
|
|
247
|
-
Value for the current.
|
|
278
|
+
Value for the current. Default is ``0.1``.
|
|
248
279
|
phase_value : optional
|
|
249
|
-
Value for the phase.
|
|
280
|
+
Value for the phase. Default is ``0``.
|
|
250
281
|
source_name : str, optional
|
|
251
|
-
Name of the source.
|
|
282
|
+
Name of the source. Default is ``""``.
|
|
252
283
|
|
|
253
284
|
Returns
|
|
254
285
|
-------
|
|
@@ -265,10 +296,10 @@ class Siwave(object):
|
|
|
265
296
|
)
|
|
266
297
|
|
|
267
298
|
def create_resistor_on_pin(self, pos_pin, neg_pin, rvalue=1, resistor_name=""):
|
|
268
|
-
"""Create a
|
|
299
|
+
"""Create a resistor boundary between two given pins.
|
|
269
300
|
|
|
270
|
-
|
|
271
|
-
|
|
301
|
+
.. deprecated:: pyedb 0.28.0
|
|
302
|
+
Use :func:`pyedb.grpc.core.excitations.create_resistor_on_pin` instead.
|
|
272
303
|
|
|
273
304
|
Parameters
|
|
274
305
|
----------
|
|
@@ -277,9 +308,9 @@ class Siwave(object):
|
|
|
277
308
|
neg_pin : Object
|
|
278
309
|
Negative Pin.
|
|
279
310
|
rvalue : float, optional
|
|
280
|
-
Resistance value.
|
|
311
|
+
Resistance value. Default is ``1``.
|
|
281
312
|
resistor_name : str, optional
|
|
282
|
-
Name of the resistor.
|
|
313
|
+
Name of the resistor. Default is ``""``.
|
|
283
314
|
|
|
284
315
|
Returns
|
|
285
316
|
-------
|
|
@@ -294,10 +325,10 @@ class Siwave(object):
|
|
|
294
325
|
return self._pedb.source_excitation.create_resistor_on_pin(pos_pin, neg_pin, rvalue, resistor_name)
|
|
295
326
|
|
|
296
327
|
def _check_gnd(self, component_name):
|
|
297
|
-
"""
|
|
298
|
-
. deprecated:: pyedb 0.28.0
|
|
299
|
-
Use :func:`pyedb.grpc.core.excitations._check_gnd` instead.
|
|
328
|
+
"""Check ground reference.
|
|
300
329
|
|
|
330
|
+
.. deprecated:: pyedb 0.28.0
|
|
331
|
+
Use :func:`pyedb.grpc.core.excitations._check_gnd` instead.
|
|
301
332
|
"""
|
|
302
333
|
warnings.warn(
|
|
303
334
|
"`_check_gnd` is deprecated and is now located here " "`pyedb.grpc.core.excitations._check_gnd` instead.",
|
|
@@ -314,12 +345,12 @@ class Siwave(object):
|
|
|
314
345
|
impedance_value=50,
|
|
315
346
|
port_name="",
|
|
316
347
|
):
|
|
317
|
-
"""Create a circuit port on a
|
|
348
|
+
"""Create a circuit port on a net.
|
|
318
349
|
|
|
319
|
-
|
|
320
|
-
|
|
350
|
+
.. deprecated:: pyedb 0.28.0
|
|
351
|
+
Use :func:`pyedb.grpc.core.excitations.create_circuit_port_on_net` instead.
|
|
321
352
|
|
|
322
|
-
|
|
353
|
+
Groups all pins belonging to the specified net and applies the port on PinGroups.
|
|
323
354
|
|
|
324
355
|
Parameters
|
|
325
356
|
----------
|
|
@@ -328,20 +359,18 @@ class Siwave(object):
|
|
|
328
359
|
positive_net_name : str
|
|
329
360
|
Name of the positive net.
|
|
330
361
|
negative_component_name : str, optional
|
|
331
|
-
Name of the negative component.
|
|
332
|
-
the positive net is assigned.
|
|
362
|
+
Name of the negative component. Default is ``None``.
|
|
333
363
|
negative_net_name : str, optional
|
|
334
|
-
Name of the negative net name.
|
|
364
|
+
Name of the negative net name. Default is ``None`` (searches for GND nets).
|
|
335
365
|
impedance_value : float, optional
|
|
336
|
-
Port impedance value.
|
|
366
|
+
Port impedance value. Default is ``50``.
|
|
337
367
|
port_name : str, optional
|
|
338
|
-
Name of the port.
|
|
368
|
+
Name of the port. Default is ``""``.
|
|
339
369
|
|
|
340
370
|
Returns
|
|
341
371
|
-------
|
|
342
372
|
str
|
|
343
373
|
The name of the port.
|
|
344
|
-
|
|
345
374
|
"""
|
|
346
375
|
warnings.warn(
|
|
347
376
|
"`create_circuit_port_on_net` is deprecated and is now located here "
|
|
@@ -367,10 +396,10 @@ class Siwave(object):
|
|
|
367
396
|
phase_value=0,
|
|
368
397
|
source_name="",
|
|
369
398
|
):
|
|
370
|
-
"""Create a voltage source.
|
|
399
|
+
"""Create a voltage source on a net.
|
|
371
400
|
|
|
372
|
-
|
|
373
|
-
|
|
401
|
+
.. deprecated:: pyedb 0.28.0
|
|
402
|
+
Use :func:`pyedb.grpc.core.excitations.create_voltage_source_on_net` instead.
|
|
374
403
|
|
|
375
404
|
Parameters
|
|
376
405
|
----------
|
|
@@ -379,22 +408,20 @@ class Siwave(object):
|
|
|
379
408
|
positive_net_name : str
|
|
380
409
|
Name of the positive net.
|
|
381
410
|
negative_component_name : str, optional
|
|
382
|
-
Name of the negative component.
|
|
383
|
-
the positive net is assigned.
|
|
411
|
+
Name of the negative component. Default is ``None``.
|
|
384
412
|
negative_net_name : str, optional
|
|
385
|
-
Name of the negative net name.
|
|
413
|
+
Name of the negative net name. Default is ``None`` (searches for GND nets).
|
|
386
414
|
voltage_value : float, optional
|
|
387
|
-
Value for the voltage.
|
|
415
|
+
Value for the voltage. Default is ``3.3``.
|
|
388
416
|
phase_value : optional
|
|
389
|
-
Value for the phase.
|
|
417
|
+
Value for the phase. Default is ``0``.
|
|
390
418
|
source_name : str, optional
|
|
391
|
-
Name of the source.
|
|
419
|
+
Name of the source. Default is ``""``.
|
|
392
420
|
|
|
393
421
|
Returns
|
|
394
422
|
-------
|
|
395
423
|
str
|
|
396
424
|
The name of the source.
|
|
397
|
-
|
|
398
425
|
"""
|
|
399
426
|
warnings.warn(
|
|
400
427
|
"`create_voltage_source_on_net` is deprecated and is now located here "
|
|
@@ -421,10 +448,10 @@ class Siwave(object):
|
|
|
421
448
|
phase_value=0,
|
|
422
449
|
source_name="",
|
|
423
450
|
):
|
|
424
|
-
"""Create a current source.
|
|
451
|
+
"""Create a current source on a net.
|
|
425
452
|
|
|
426
|
-
|
|
427
|
-
|
|
453
|
+
.. deprecated:: pyedb 0.28.0
|
|
454
|
+
Use :func:`pyedb.grpc.core.excitations.create_current_source_on_net` instead.
|
|
428
455
|
|
|
429
456
|
Parameters
|
|
430
457
|
----------
|
|
@@ -433,16 +460,15 @@ class Siwave(object):
|
|
|
433
460
|
positive_net_name : str
|
|
434
461
|
Name of the positive net.
|
|
435
462
|
negative_component_name : str, optional
|
|
436
|
-
Name of the negative component.
|
|
437
|
-
the positive net is assigned.
|
|
463
|
+
Name of the negative component. Default is ``None``.
|
|
438
464
|
negative_net_name : str, optional
|
|
439
|
-
Name of the negative net name.
|
|
465
|
+
Name of the negative net name. Default is ``None`` (searches for GND nets).
|
|
440
466
|
current_value : float, optional
|
|
441
|
-
Value for the current.
|
|
467
|
+
Value for the current. Default is ``0.1``.
|
|
442
468
|
phase_value : optional
|
|
443
|
-
Value for the phase.
|
|
469
|
+
Value for the phase. Default is ``0``.
|
|
444
470
|
source_name : str, optional
|
|
445
|
-
Name of the source.
|
|
471
|
+
Name of the source. Default is ``""``.
|
|
446
472
|
|
|
447
473
|
Returns
|
|
448
474
|
-------
|
|
@@ -470,10 +496,10 @@ class Siwave(object):
|
|
|
470
496
|
net_name,
|
|
471
497
|
source_name="",
|
|
472
498
|
):
|
|
473
|
-
"""Create a
|
|
499
|
+
"""Create a DC terminal.
|
|
474
500
|
|
|
475
|
-
|
|
476
|
-
|
|
501
|
+
.. deprecated:: pyedb 0.28.0
|
|
502
|
+
Use :func:`pyedb.grpc.core.excitations.create_dc_terminal` instead.
|
|
477
503
|
|
|
478
504
|
Parameters
|
|
479
505
|
----------
|
|
@@ -481,9 +507,8 @@ class Siwave(object):
|
|
|
481
507
|
Name of the positive component.
|
|
482
508
|
net_name : str
|
|
483
509
|
Name of the positive net.
|
|
484
|
-
|
|
485
510
|
source_name : str, optional
|
|
486
|
-
Name of the source.
|
|
511
|
+
Name of the source. Default is ``""``.
|
|
487
512
|
|
|
488
513
|
Returns
|
|
489
514
|
-------
|
|
@@ -505,19 +530,34 @@ class Siwave(object):
|
|
|
505
530
|
Parameters
|
|
506
531
|
----------
|
|
507
532
|
add_dc : bool, optional
|
|
508
|
-
Whether to add the DC option in the EXE file.
|
|
533
|
+
Whether to add the DC option in the EXE file. Default is ``False``.
|
|
509
534
|
add_ac : bool, optional
|
|
510
|
-
Whether to add the AC option in the EXE file.
|
|
511
|
-
``False``.
|
|
535
|
+
Whether to add the AC option in the EXE file. Default is ``False``.
|
|
512
536
|
add_syz : bool, optional
|
|
513
|
-
Whether to add the SYZ option in the EXE file
|
|
537
|
+
Whether to add the SYZ option in the EXE file. Default is ``False``.
|
|
514
538
|
export_touchstone : bool, optional
|
|
515
|
-
Add the Touchstone file export option in the EXE file.
|
|
516
|
-
The default is ``False``.
|
|
539
|
+
Add the Touchstone file export option in the EXE file. Default is ``False``.
|
|
517
540
|
touchstone_file_path : str, optional
|
|
518
|
-
File path for the Touchstone file.
|
|
519
|
-
specified and ``export_touchstone=True``, the path
|
|
520
|
-
|
|
541
|
+
File path for the Touchstone file. Default is ``""``. When no path is
|
|
542
|
+
specified and ``export_touchstone=True``, the project path is used.
|
|
543
|
+
|
|
544
|
+
Returns
|
|
545
|
+
-------
|
|
546
|
+
bool
|
|
547
|
+
``True`` if file was created, ``False`` otherwise.
|
|
548
|
+
|
|
549
|
+
Examples
|
|
550
|
+
--------
|
|
551
|
+
>>> from pyedb import Edb
|
|
552
|
+
>>> edbapp = Edb("myaedbfolder", edbversion="2021.2")
|
|
553
|
+
>>> # Create exec file with AC and SYZ options
|
|
554
|
+
>>> success = edbapp.siwave.create_exec_file(add_ac=True, add_syz=True)
|
|
555
|
+
>>> # Create exec file with Touchstone export
|
|
556
|
+
>>> success = edbapp.siwave.create_exec_file(
|
|
557
|
+
... add_ac=True,
|
|
558
|
+
... export_touchstone=True,
|
|
559
|
+
... touchstone_file_path="C:/temp/my_touchstone.s2p"
|
|
560
|
+
... )
|
|
521
561
|
"""
|
|
522
562
|
workdir = os.path.dirname(self._pedb.edbpath)
|
|
523
563
|
file_name = os.path.join(workdir, os.path.splitext(os.path.basename(self._pedb.edbpath))[0] + ".exec")
|
|
@@ -556,28 +596,46 @@ class Siwave(object):
|
|
|
556
596
|
Parameters
|
|
557
597
|
----------
|
|
558
598
|
accuracy_level : int, optional
|
|
559
|
-
Level of accuracy of SI slider.
|
|
599
|
+
Level of accuracy of SI slider. Default is ``1``.
|
|
560
600
|
distribution : str, optional
|
|
561
|
-
Type of the sweep.
|
|
562
|
-
-
|
|
563
|
-
-
|
|
564
|
-
-
|
|
565
|
-
-
|
|
566
|
-
-
|
|
601
|
+
Type of the sweep. Default is ``"linear"``. Options are:
|
|
602
|
+
- ``"linear"``
|
|
603
|
+
- ``"linear_count"``
|
|
604
|
+
- ``"decade_count"``
|
|
605
|
+
- ``"octave_count"``
|
|
606
|
+
- ``"exponential"``
|
|
567
607
|
start_freq : str, float, optional
|
|
568
|
-
Starting frequency.
|
|
608
|
+
Starting frequency. Default is ``1``.
|
|
569
609
|
stop_freq : str, float, optional
|
|
570
|
-
Stopping frequency.
|
|
610
|
+
Stopping frequency. Default is ``1e9``.
|
|
571
611
|
step_freq : str, float, int, optional
|
|
572
|
-
Frequency step.
|
|
612
|
+
Frequency step. Default is ``1e6``. Used for ``"decade_count"``, ``"linear_count"``, ``"octave_count"``
|
|
573
613
|
distribution. Must be integer in that case.
|
|
574
614
|
discrete_sweep : bool, optional
|
|
575
|
-
Whether the sweep is discrete.
|
|
615
|
+
Whether the sweep is discrete. Default is ``False``.
|
|
576
616
|
|
|
577
617
|
Returns
|
|
578
618
|
-------
|
|
579
619
|
:class:`pyedb.dotnet.database.edb_data.siwave_simulation_setup_data.SiwaveSYZSimulationSetup`
|
|
580
620
|
Setup object class.
|
|
621
|
+
|
|
622
|
+
Examples
|
|
623
|
+
--------
|
|
624
|
+
>>> from pyedb import Edb
|
|
625
|
+
>>> edbapp = Edb("myaedbfolder", edbversion="2021.2")
|
|
626
|
+
>>> # Add SYZ analysis with linear sweep from 1kHz to 10GHz
|
|
627
|
+
>>> setup = edbapp.siwave.add_siwave_syz_analysis(
|
|
628
|
+
... start_freq=1e3,
|
|
629
|
+
... stop_freq=10e9,
|
|
630
|
+
... distribution="linear"
|
|
631
|
+
... )
|
|
632
|
+
>>> # Add SYZ analysis with decade sweep
|
|
633
|
+
>>> setup = edbapp.siwave.add_siwave_syz_analysis(
|
|
634
|
+
... start_freq=1e3,
|
|
635
|
+
... stop_freq=10e9,
|
|
636
|
+
... distribution="decade_count",
|
|
637
|
+
... step_freq=10 # 10 points per decade
|
|
638
|
+
... )
|
|
581
639
|
"""
|
|
582
640
|
setup = self._pedb.create_siwave_syz_setup()
|
|
583
641
|
start_freq = self._pedb.number_with_units(start_freq, "Hz")
|
|
@@ -615,9 +673,6 @@ class Siwave(object):
|
|
|
615
673
|
def add_siwave_dc_analysis(self, name=None):
|
|
616
674
|
"""Add a Siwave DC analysis in EDB.
|
|
617
675
|
|
|
618
|
-
If a setup is present, it is deleted and replaced with
|
|
619
|
-
actual settings.
|
|
620
|
-
|
|
621
676
|
.. note::
|
|
622
677
|
Source Reference to Ground settings works only from 2021.2
|
|
623
678
|
|
|
@@ -637,7 +692,6 @@ class Siwave(object):
|
|
|
637
692
|
>>> edb = Edb("pathtoaedb", edbversion="2021.2")
|
|
638
693
|
>>> edb.siwave.add_siwave_ac_analysis()
|
|
639
694
|
>>> edb.siwave.add_siwave_dc_analysis2("my_setup")
|
|
640
|
-
|
|
641
695
|
"""
|
|
642
696
|
setup = self._pedb.create_siwave_dc_setup(name)
|
|
643
697
|
self.create_exec_file(add_dc=True)
|
|
@@ -646,8 +700,8 @@ class Siwave(object):
|
|
|
646
700
|
def create_pin_group_terminal(self, source):
|
|
647
701
|
"""Create a pin group terminal.
|
|
648
702
|
|
|
649
|
-
|
|
650
|
-
|
|
703
|
+
.. deprecated:: pyedb 0.28.0
|
|
704
|
+
Use :func:`pyedb.grpc.core.excitations.create_pin_group_terminal` instead.
|
|
651
705
|
|
|
652
706
|
Parameters
|
|
653
707
|
----------
|
|
@@ -671,36 +725,30 @@ class Siwave(object):
|
|
|
671
725
|
l_value=1e-9,
|
|
672
726
|
is_parallel=False,
|
|
673
727
|
):
|
|
674
|
-
"""Create physical
|
|
728
|
+
"""Create physical RLC component.
|
|
675
729
|
|
|
676
|
-
|
|
677
|
-
|
|
730
|
+
.. deprecated:: pyedb 0.28.0
|
|
731
|
+
Use :func:`pyedb.grpc.core.components.create_rlc_component` instead.
|
|
678
732
|
|
|
679
733
|
Parameters
|
|
680
734
|
----------
|
|
681
735
|
pins : list[Edb.Cell.Primitive.PadstackInstance]
|
|
682
736
|
List of EDB pins.
|
|
683
|
-
|
|
684
737
|
component_name : str
|
|
685
738
|
Component name.
|
|
686
|
-
|
|
687
739
|
r_value : float
|
|
688
740
|
Resistor value.
|
|
689
|
-
|
|
690
741
|
c_value : float
|
|
691
742
|
Capacitance value.
|
|
692
|
-
|
|
693
743
|
l_value : float
|
|
694
744
|
Inductor value.
|
|
695
|
-
|
|
696
745
|
is_parallel : bool
|
|
697
|
-
|
|
746
|
+
Use parallel model when ``True``, series when ``False``.
|
|
698
747
|
|
|
699
748
|
Returns
|
|
700
749
|
-------
|
|
701
|
-
class:`pyedb.dotnet.database.components.Components`
|
|
750
|
+
:class:`pyedb.dotnet.database.components.Components`
|
|
702
751
|
Created EDB component.
|
|
703
|
-
|
|
704
752
|
"""
|
|
705
753
|
warnings.warn(
|
|
706
754
|
"`create_rlc_component` is deprecated and is now located here "
|
|
@@ -720,8 +768,8 @@ class Siwave(object):
|
|
|
720
768
|
def create_pin_group(self, reference_designator, pin_numbers, group_name=None):
|
|
721
769
|
"""Create pin group on the component.
|
|
722
770
|
|
|
723
|
-
|
|
724
|
-
|
|
771
|
+
.. deprecated:: pyedb 0.28.0
|
|
772
|
+
Use :func:`pyedb.grpc.core.components.create_pin_group` instead.
|
|
725
773
|
|
|
726
774
|
Parameters
|
|
727
775
|
----------
|
|
@@ -735,6 +783,7 @@ class Siwave(object):
|
|
|
735
783
|
Returns
|
|
736
784
|
-------
|
|
737
785
|
PinGroup
|
|
786
|
+
Pin group object.
|
|
738
787
|
"""
|
|
739
788
|
warnings.warn(
|
|
740
789
|
"`create_pin_group` is deprecated and is now located here "
|
|
@@ -746,8 +795,8 @@ class Siwave(object):
|
|
|
746
795
|
def create_pin_group_on_net(self, reference_designator, net_name, group_name=None):
|
|
747
796
|
"""Create pin group on component by net name.
|
|
748
797
|
|
|
749
|
-
|
|
750
|
-
|
|
798
|
+
.. deprecated:: pyedb 0.28.0
|
|
799
|
+
Use :func:`pyedb.grpc.core.components.create_pin_group_on_net` instead.
|
|
751
800
|
|
|
752
801
|
Parameters
|
|
753
802
|
----------
|
|
@@ -756,11 +805,12 @@ class Siwave(object):
|
|
|
756
805
|
net_name : str
|
|
757
806
|
Name of the net.
|
|
758
807
|
group_name : str, optional
|
|
759
|
-
Name of the pin group.
|
|
808
|
+
Name of the pin group.
|
|
760
809
|
|
|
761
810
|
Returns
|
|
762
811
|
-------
|
|
763
812
|
PinGroup
|
|
813
|
+
Pin group object.
|
|
764
814
|
"""
|
|
765
815
|
warnings.warn(
|
|
766
816
|
"`create_pin_group_on_net` is deprecated and is now located here "
|
|
@@ -774,9 +824,8 @@ class Siwave(object):
|
|
|
774
824
|
):
|
|
775
825
|
"""Create current source between two pin groups.
|
|
776
826
|
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
instead.
|
|
827
|
+
.. deprecated:: pyedb 0.28.0
|
|
828
|
+
Use :func:`pyedb.grpc.core.excitations.create_current_source_on_pin_group` instead.
|
|
780
829
|
|
|
781
830
|
Parameters
|
|
782
831
|
----------
|
|
@@ -785,16 +834,16 @@ class Siwave(object):
|
|
|
785
834
|
neg_pin_group_name : str
|
|
786
835
|
Name of the negative pin group.
|
|
787
836
|
magnitude : int, float, optional
|
|
788
|
-
Magnitude of the source.
|
|
837
|
+
Magnitude of the source. Default is ``1``.
|
|
789
838
|
phase : int, float, optional
|
|
790
|
-
Phase of the source
|
|
839
|
+
Phase of the source. Default is ``0``.
|
|
791
840
|
name : str, optional
|
|
792
|
-
|
|
841
|
+
Source name.
|
|
793
842
|
|
|
794
843
|
Returns
|
|
795
844
|
-------
|
|
796
845
|
bool
|
|
797
|
-
|
|
846
|
+
``True`` when successful, ``False`` otherwise.
|
|
798
847
|
"""
|
|
799
848
|
warnings.warn(
|
|
800
849
|
"`create_current_source_on_pin_group` is deprecated and is now located here "
|
|
@@ -810,25 +859,28 @@ class Siwave(object):
|
|
|
810
859
|
):
|
|
811
860
|
"""Create voltage source between two pin groups.
|
|
812
861
|
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
bool
|
|
862
|
+
.. deprecated:: pyedb 0.28.0
|
|
863
|
+
Use :func:`pyedb.grpc.core.excitations.create_voltage_source_on_pin_group` instead.
|
|
864
|
+
|
|
865
|
+
Parameters
|
|
866
|
+
----------
|
|
867
|
+
pos_pin_group_name : str
|
|
868
|
+
Name of the positive pin group.
|
|
869
|
+
neg_pin_group_name : str
|
|
870
|
+
Name of the negative pin group.
|
|
871
|
+
magnitude : int, float, optional
|
|
872
|
+
Magnitude of the source. Default is ``1``.
|
|
873
|
+
phase : int, float, optional
|
|
874
|
+
Phase of the source. Default is ``0``.
|
|
875
|
+
name : str, optional
|
|
876
|
+
Source name.
|
|
877
|
+
impedance : float, optional
|
|
878
|
+
Source impedance. Default is ``0.001``.
|
|
831
879
|
|
|
880
|
+
Returns
|
|
881
|
+
-------
|
|
882
|
+
bool
|
|
883
|
+
``True`` when successful, ``False`` otherwise.
|
|
832
884
|
"""
|
|
833
885
|
warnings.warn(
|
|
834
886
|
"`create_voltage_source_on_pin_group` is deprecated and is now located here "
|
|
@@ -842,9 +894,8 @@ class Siwave(object):
|
|
|
842
894
|
def create_voltage_probe_on_pin_group(self, probe_name, pos_pin_group_name, neg_pin_group_name, impedance=1e6):
|
|
843
895
|
"""Create voltage probe between two pin groups.
|
|
844
896
|
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
instead.
|
|
897
|
+
.. deprecated:: pyedb 0.28.0
|
|
898
|
+
Use :func:`pyedb.grpc.core.excitations.create_voltage_probe_on_pin_group` instead.
|
|
848
899
|
|
|
849
900
|
Parameters
|
|
850
901
|
----------
|
|
@@ -855,12 +906,12 @@ class Siwave(object):
|
|
|
855
906
|
neg_pin_group_name : str
|
|
856
907
|
Name of the negative pin group.
|
|
857
908
|
impedance : int, float, optional
|
|
858
|
-
|
|
909
|
+
Probe impedance. Default is ``1e6``.
|
|
859
910
|
|
|
860
911
|
Returns
|
|
861
912
|
-------
|
|
862
913
|
bool
|
|
863
|
-
|
|
914
|
+
``True`` when successful, ``False`` otherwise.
|
|
864
915
|
"""
|
|
865
916
|
|
|
866
917
|
warnings.warn(
|
|
@@ -875,9 +926,8 @@ class Siwave(object):
|
|
|
875
926
|
def create_circuit_port_on_pin_group(self, pos_pin_group_name, neg_pin_group_name, impedance=50, name=None):
|
|
876
927
|
"""Create a port between two pin groups.
|
|
877
928
|
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
instead.
|
|
929
|
+
.. deprecated:: pyedb 0.28.0
|
|
930
|
+
Use :func:`pyedb.grpc.core.excitations.create_circuit_port_on_pin_group` instead.
|
|
881
931
|
|
|
882
932
|
Parameters
|
|
883
933
|
----------
|
|
@@ -893,7 +943,7 @@ class Siwave(object):
|
|
|
893
943
|
Returns
|
|
894
944
|
-------
|
|
895
945
|
bool
|
|
896
|
-
|
|
946
|
+
``True`` when successful, ``False`` otherwise.
|
|
897
947
|
"""
|
|
898
948
|
warnings.warn(
|
|
899
949
|
"`create_circuit_port_on_pin_group` is deprecated and is now located here "
|
|
@@ -916,21 +966,20 @@ class Siwave(object):
|
|
|
916
966
|
):
|
|
917
967
|
"""Place a voltage probe between two points.
|
|
918
968
|
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
instead.
|
|
969
|
+
.. deprecated:: pyedb 0.28.0
|
|
970
|
+
Use :func:`pyedb.grpc.core.excitations.place_voltage_probe` instead.
|
|
922
971
|
|
|
923
972
|
Parameters
|
|
924
973
|
----------
|
|
925
|
-
name : str
|
|
974
|
+
name : str
|
|
926
975
|
Name of the probe.
|
|
927
976
|
positive_net_name : str
|
|
928
977
|
Name of the positive net.
|
|
929
978
|
positive_location : list
|
|
930
979
|
Location of the positive terminal.
|
|
931
|
-
positive_layer : str
|
|
980
|
+
positive_layer : str
|
|
932
981
|
Layer of the positive terminal.
|
|
933
|
-
negative_net_name : str
|
|
982
|
+
negative_net_name : str
|
|
934
983
|
Name of the negative net.
|
|
935
984
|
negative_location : list
|
|
936
985
|
Location of the negative terminal.
|
|
@@ -952,70 +1001,34 @@ class Siwave(object):
|
|
|
952
1001
|
negative_layer,
|
|
953
1002
|
)
|
|
954
1003
|
|
|
955
|
-
# def create_vrm_module(
|
|
956
|
-
# self,
|
|
957
|
-
# name=None,
|
|
958
|
-
# is_active=True,
|
|
959
|
-
# voltage="3V",
|
|
960
|
-
# positive_sensor_pin=None,
|
|
961
|
-
# negative_sensor_pin=None,
|
|
962
|
-
# load_regulation_current="1A",
|
|
963
|
-
# load_regulation_percent=0.1,
|
|
964
|
-
# ):
|
|
965
|
-
# """Create a voltage regulator module.
|
|
966
|
-
#
|
|
967
|
-
# Parameters
|
|
968
|
-
# ----------
|
|
969
|
-
# name : str
|
|
970
|
-
# Name of the voltage regulator.
|
|
971
|
-
# is_active : bool optional
|
|
972
|
-
# Set the voltage regulator active or not. Default value is ``True``.
|
|
973
|
-
# voltage ; str, float
|
|
974
|
-
# Set the voltage value.
|
|
975
|
-
# positive_sensor_pin : int, .class pyedb.dotnet.database.edb_data.padstacks_data.EDBPadstackInstance
|
|
976
|
-
# defining the positive sensor pin.
|
|
977
|
-
# negative_sensor_pin : int, .class pyedb.dotnet.database.edb_data.padstacks_data.EDBPadstackInstance
|
|
978
|
-
# defining the negative sensor pin.
|
|
979
|
-
# load_regulation_current : str or float
|
|
980
|
-
# definition the load regulation current value.
|
|
981
|
-
# load_regulation_percent : float
|
|
982
|
-
# definition the load regulation percent value.
|
|
983
|
-
# """
|
|
984
|
-
# from pyedb.grpc.database.voltage_regulator import VoltageRegulator
|
|
985
|
-
#
|
|
986
|
-
# voltage = self._pedb.edb_value(voltage)
|
|
987
|
-
# load_regulation_current = self._pedb.edb_value(load_regulation_current)
|
|
988
|
-
# load_regulation_percent = self._pedb.edb_value(load_regulation_percent)
|
|
989
|
-
# edb_vrm = self._edb_object = self._pedb._edb.Cell.VoltageRegulator.Create(
|
|
990
|
-
# self._pedb.active_layout, name, is_active, voltage, load_regulation_current, load_regulation_percent
|
|
991
|
-
# )
|
|
992
|
-
# vrm = VoltageRegulator(self._pedb, edb_vrm)
|
|
993
|
-
# if positive_sensor_pin:
|
|
994
|
-
# vrm.positive_remote_sense_pin = positive_sensor_pin
|
|
995
|
-
# if negative_sensor_pin:
|
|
996
|
-
# vrm.negative_remote_sense_pin = negative_sensor_pin
|
|
997
|
-
# return vrm
|
|
998
|
-
|
|
999
|
-
@property
|
|
1000
|
-
def icepak_use_minimal_comp_defaults(self):
|
|
1001
|
-
"""Icepak default setting. If "True", only resistor are active in Icepak simulation.
|
|
1002
|
-
The power dissipation of the resistors are calculated from DC results.
|
|
1003
|
-
"""
|
|
1004
|
-
return self._pedb.active_cell.get_product_property(GrpcProductIdType.SIWAVE, 422).value
|
|
1005
|
-
|
|
1006
1004
|
def create_impedance_crosstalk_scan(self, scan_type="impedance"):
|
|
1007
|
-
"""Create Siwave crosstalk scan object
|
|
1005
|
+
"""Create Siwave crosstalk scan object.
|
|
1008
1006
|
|
|
1009
1007
|
Parameters
|
|
1010
1008
|
----------
|
|
1011
|
-
scan_type : str
|
|
1012
|
-
Scan type to be analyzed.
|
|
1013
|
-
``
|
|
1014
|
-
|
|
1009
|
+
scan_type : str, optional
|
|
1010
|
+
Scan type to be analyzed. Options are:
|
|
1011
|
+
- ``"impedance"`` for frequency impedance scan
|
|
1012
|
+
- ``"frequency_xtalk"`` for frequency domain crosstalk
|
|
1013
|
+
- ``"time_xtalk"`` for time domain crosstalk
|
|
1014
|
+
Default is ``"impedance"``.
|
|
1015
1015
|
|
|
1016
|
+
Returns
|
|
1017
|
+
-------
|
|
1018
|
+
SiwaveScanConfig
|
|
1019
|
+
Scan configuration object.
|
|
1016
1020
|
"""
|
|
1017
1021
|
return SiwaveScanConfig(self._pedb, scan_type)
|
|
1018
1022
|
|
|
1023
|
+
@property
|
|
1024
|
+
def icepak_use_minimal_comp_defaults(self):
|
|
1025
|
+
"""Icepak default setting.
|
|
1026
|
+
|
|
1027
|
+
If ``True``, only resistors are active in Icepak simulation and power dissipation
|
|
1028
|
+
is calculated from DC results.
|
|
1029
|
+
"""
|
|
1030
|
+
return self._pedb.active_cell.get_product_property(GrpcProductIdType.SIWAVE, 422).value
|
|
1031
|
+
|
|
1019
1032
|
@icepak_use_minimal_comp_defaults.setter
|
|
1020
1033
|
def icepak_use_minimal_comp_defaults(self, value):
|
|
1021
1034
|
value = "True" if bool(value) else ""
|
|
@@ -1025,7 +1038,6 @@ class Siwave(object):
|
|
|
1025
1038
|
def icepak_component_file(self):
|
|
1026
1039
|
"""Icepak component file path."""
|
|
1027
1040
|
return self._pedb.active_cell.get_product_property(GrpcProductIdType.SIWAVE, 420).value
|
|
1028
|
-
return value
|
|
1029
1041
|
|
|
1030
1042
|
@icepak_component_file.setter
|
|
1031
1043
|
def icepak_component_file(self, value):
|