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.

Files changed (75) hide show
  1. pyedb/__init__.py +1 -1
  2. pyedb/configuration/cfg_ports_sources.py +79 -239
  3. pyedb/configuration/configuration.py +27 -0
  4. pyedb/dotnet/clr_module.py +9 -3
  5. pyedb/dotnet/database/cell/hierarchy/component.py +3 -3
  6. pyedb/dotnet/database/cell/layout.py +10 -1
  7. pyedb/dotnet/database/dotnet/database.py +0 -2
  8. pyedb/dotnet/database/edb_data/padstacks_data.py +13 -0
  9. pyedb/dotnet/database/layout_validation.py +17 -13
  10. pyedb/dotnet/database/modeler.py +0 -1
  11. pyedb/dotnet/edb.py +7 -1
  12. pyedb/generic/design_types.py +183 -62
  13. pyedb/grpc/database/components.py +604 -652
  14. pyedb/grpc/database/control_file.py +597 -155
  15. pyedb/grpc/database/definition/component_def.py +17 -14
  16. pyedb/grpc/database/definition/materials.py +27 -27
  17. pyedb/grpc/database/definition/package_def.py +8 -8
  18. pyedb/grpc/database/definition/padstack_def.py +31 -33
  19. pyedb/grpc/database/definitions.py +36 -2
  20. pyedb/grpc/database/geometry/arc_data.py +5 -5
  21. pyedb/grpc/database/geometry/point_3d_data.py +3 -3
  22. pyedb/grpc/database/geometry/polygon_data.py +5 -5
  23. pyedb/grpc/database/hfss.py +412 -395
  24. pyedb/grpc/database/hierarchy/component.py +67 -58
  25. pyedb/grpc/database/hierarchy/pin_pair_model.py +6 -6
  26. pyedb/grpc/database/hierarchy/pingroup.py +13 -11
  27. pyedb/grpc/database/hierarchy/s_parameter_model.py +1 -1
  28. pyedb/grpc/database/hierarchy/spice_model.py +1 -1
  29. pyedb/grpc/database/layers/layer.py +2 -2
  30. pyedb/grpc/database/layers/stackup_layer.py +26 -23
  31. pyedb/grpc/database/layout/layout.py +12 -12
  32. pyedb/grpc/database/layout/voltage_regulator.py +8 -8
  33. pyedb/grpc/database/layout_validation.py +58 -7
  34. pyedb/grpc/database/modeler.py +248 -245
  35. pyedb/grpc/database/net/differential_pair.py +4 -4
  36. pyedb/grpc/database/net/extended_net.py +7 -8
  37. pyedb/grpc/database/net/net.py +57 -46
  38. pyedb/grpc/database/nets.py +362 -116
  39. pyedb/grpc/database/padstacks.py +259 -178
  40. pyedb/grpc/database/ports/ports.py +23 -17
  41. pyedb/grpc/database/primitive/padstack_instance.py +45 -30
  42. pyedb/grpc/database/primitive/path.py +6 -6
  43. pyedb/grpc/database/primitive/polygon.py +9 -9
  44. pyedb/grpc/database/primitive/primitive.py +21 -21
  45. pyedb/grpc/database/primitive/rectangle.py +1 -1
  46. pyedb/grpc/database/simulation_setup/hfss_advanced_settings.py +1 -1
  47. pyedb/grpc/database/simulation_setup/hfss_general_settings.py +1 -1
  48. pyedb/grpc/database/simulation_setup/hfss_settings_options.py +1 -1
  49. pyedb/grpc/database/simulation_setup/hfss_simulation_settings.py +6 -6
  50. pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +2 -2
  51. pyedb/grpc/database/simulation_setup/raptor_x_simulation_settings.py +2 -2
  52. pyedb/grpc/database/simulation_setup/raptor_x_simulation_setup.py +1 -1
  53. pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +3 -3
  54. pyedb/grpc/database/siwave.py +226 -214
  55. pyedb/grpc/database/source_excitations.py +307 -40
  56. pyedb/grpc/database/stackup.py +461 -283
  57. pyedb/grpc/database/terminal/bundle_terminal.py +12 -12
  58. pyedb/grpc/database/terminal/edge_terminal.py +6 -5
  59. pyedb/grpc/database/terminal/padstack_instance_terminal.py +13 -13
  60. pyedb/grpc/database/terminal/pingroup_terminal.py +12 -12
  61. pyedb/grpc/database/terminal/point_terminal.py +6 -6
  62. pyedb/grpc/database/terminal/terminal.py +26 -26
  63. pyedb/grpc/database/utility/heat_sink.py +5 -5
  64. pyedb/grpc/database/utility/hfss_extent_info.py +21 -21
  65. pyedb/grpc/database/utility/layout_statistics.py +13 -13
  66. pyedb/grpc/database/utility/rlc.py +3 -3
  67. pyedb/grpc/database/utility/sources.py +1 -1
  68. pyedb/grpc/database/utility/sweep_data_distribution.py +1 -1
  69. pyedb/grpc/edb.py +542 -739
  70. pyedb/grpc/edb_init.py +50 -3
  71. {pyedb-0.50.0.dist-info → pyedb-0.51.2.dist-info}/METADATA +1 -1
  72. {pyedb-0.50.0.dist-info → pyedb-0.51.2.dist-info}/RECORD +74 -75
  73. pyedb/grpc/database/utility/simulation_configuration.py +0 -3305
  74. {pyedb-0.50.0.dist-info → pyedb-0.51.2.dist-info}/LICENSE +0 -0
  75. {pyedb-0.50.0.dist-info → pyedb-0.51.2.dist-info}/WHEEL +0 -0
@@ -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
- """EDB."""
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
- """Cell."""
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
- """Get all excitations."""
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
- """Get all sources."""
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
- """Get all probes."""
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 Layout Pin groups.
128
+ """All layout pin groups.
108
129
 
109
130
  Returns
110
131
  -------
111
- list
112
- List of all layout pin groups.
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
- . deprecated:: pyedb 0.28.0
122
- Use :func:`pyedb.grpc.core.excitations._create_terminal_on_pins` instead.
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
- . deprecated:: pyedb 0.28.0
141
- Use :func:`pyedb.grpc.core.excitations.create_circuit_port_on_pin` instead.
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
- . deprecated:: pyedb 0.28.0
172
- Use :func:`pyedb.grpc.core.excitations.create_port_between_pin_and_layer` instead.
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. The default is ``None``.
207
+ Component name.
178
208
  pins_name : str
179
- Pin name or list of pin names. The default is ``None``.
209
+ Pin name or list of pin names.
180
210
  layer_name : str
181
- Layer name. The default is ``None``.
211
+ Layer name.
182
212
  reference_net : str
183
- Reference net name. The default is ``None``.
213
+ Reference net name.
184
214
  impedance : float, optional
185
- Port impedance. The default is ``50.0`` in ohms.
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
- . deprecated:: pyedb 0.28.0
204
- Use :func:`pyedb.grpc.core.excitations.create_voltage_source_on_pin` instead.
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. The default is ``3.3``.
244
+ Value for the voltage. Default is ``3.3``.
214
245
  phase_value : optional
215
- Value for the phase. The default is ``0``.
246
+ Value for the phase. Default is ``0``.
216
247
  source_name : str, optional
217
- Name of the source. The default is ``""``.
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
- . deprecated:: pyedb 0.28.0
238
- Use :func:`pyedb.grpc.core.excitations.create_current_source_on_pin` instead.
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. The default is ``0.1``.
278
+ Value for the current. Default is ``0.1``.
248
279
  phase_value : optional
249
- Value for the phase. The default is ``0``.
280
+ Value for the phase. Default is ``0``.
250
281
  source_name : str, optional
251
- Name of the source. The default is ``""``.
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 Resistor boundary between two given pins.
299
+ """Create a resistor boundary between two given pins.
269
300
 
270
- . deprecated:: pyedb 0.28.0
271
- Use :func:`pyedb.grpc.core.excitations.create_resistor_on_pin` instead.
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. The default is ``1``.
311
+ Resistance value. Default is ``1``.
281
312
  resistor_name : str, optional
282
- Name of the resistor. The default is ``""``.
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 NET.
348
+ """Create a circuit port on a net.
318
349
 
319
- . deprecated:: pyedb 0.28.0
320
- Use :func:`pyedb.grpc.core.excitations.create_circuit_port_on_net` instead.
350
+ .. deprecated:: pyedb 0.28.0
351
+ Use :func:`pyedb.grpc.core.excitations.create_circuit_port_on_net` instead.
321
352
 
322
- It groups all pins belonging to the specified net and then applies the port on PinGroups.
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. The default is ``None``, in which case the name of
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. The default is ``None`` which will look for GND Nets.
364
+ Name of the negative net name. Default is ``None`` (searches for GND nets).
335
365
  impedance_value : float, optional
336
- Port impedance value. The default is ``50``.
366
+ Port impedance value. Default is ``50``.
337
367
  port_name : str, optional
338
- Name of the port. The default is ``""``.
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
- . deprecated:: pyedb 0.28.0
373
- Use :func:`pyedb.grpc.core.excitations.create_voltage_source_on_net` instead.
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. The default is ``None``, in which case the name of
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. The default is ``None`` which will look for GND Nets.
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. The default is ``3.3``.
415
+ Value for the voltage. Default is ``3.3``.
388
416
  phase_value : optional
389
- Value for the phase. The default is ``0``.
417
+ Value for the phase. Default is ``0``.
390
418
  source_name : str, optional
391
- Name of the source. The default is ``""``.
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
- . deprecated:: pyedb 0.28.0
427
- Use :func:`pyedb.grpc.core.excitations.create_current_source_on_net` instead.
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. The default is ``None``, in which case the name of
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. The default is ``None`` which will look for GND Nets.
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. The default is ``0.1``.
467
+ Value for the current. Default is ``0.1``.
442
468
  phase_value : optional
443
- Value for the phase. The default is ``0``.
469
+ Value for the phase. Default is ``0``.
444
470
  source_name : str, optional
445
- Name of the source. The default is ``""``.
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 dc terminal.
499
+ """Create a DC terminal.
474
500
 
475
- . deprecated:: pyedb 0.28.0
476
- Use :func:`pyedb.grpc.core.excitations.create_dc_terminal` instead.
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. The default is ``""``.
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. The default is ``False``.
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. The default is
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. The default is ``""``. When no path is
519
- specified and ``export_touchstone=True``, the path for the project is
520
- used.
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. The default is ``1``.
599
+ Level of accuracy of SI slider. Default is ``1``.
560
600
  distribution : str, optional
561
- Type of the sweep. The default is `"linear"`. Options are:
562
- - `"linear"`
563
- - `"linear_count"`
564
- - `"decade_count"`
565
- - `"octave_count"`
566
- - `"exponential"`
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. The default is ``1``.
608
+ Starting frequency. Default is ``1``.
569
609
  stop_freq : str, float, optional
570
- Stopping frequency. The default is ``1e9``.
610
+ Stopping frequency. Default is ``1e9``.
571
611
  step_freq : str, float, int, optional
572
- Frequency step. The default is ``1e6``. or used for `"decade_count"`, "linear_count"`, "octave_count"`
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. The default is ``False``.
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
- . deprecated:: pyedb 0.28.0
650
- Use :func:`pyedb.grpc.core.excitations.create_pin_group_terminal` instead.
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 Rlc component.
728
+ """Create physical RLC component.
675
729
 
676
- . deprecated:: pyedb 0.28.0
677
- Use :func:`pyedb.grpc.core.components.create_pin_group_terminal` instead.
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
- Using parallel model when ``True``, series when ``False``.
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
- . deprecated:: pyedb 0.28.0
724
- Use :func:`pyedb.grpc.core.components.create_pin_group_terminal` instead.
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
- . deprecated:: pyedb 0.28.0
750
- Use :func:`pyedb.grpc.core.components.create_pin_group_terminal` instead.
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. The default value is ``None``.
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
- .deprecated:: pyedb 0.28.0
778
- Use: func:`pyedb.grpc.core.excitations.create_current_source_on_pin_group`
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
- source name.
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
- .deprecated:: pyedb 0.28.0
814
- Use: func:`pyedb.grpc.core.excitations.create_voltage_source_on_pin_group`
815
- instead.
816
-
817
- Parameters
818
- ----------
819
- pos_pin_group_name : str
820
- Name of the positive pin group.
821
- neg_pin_group_name : str
822
- Name of the negative pin group.
823
- magnitude : int, float, optional
824
- Magnitude of the source.
825
- phase : int, float, optional
826
- Phase of the source
827
-
828
- Returns
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
- .deprecated:: pyedb 0.28.0
846
- Use: func:`pyedb.grpc.core.excitations.create_voltage_probe_on_pin_group`
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
- Phase of the source.
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
- .deprecated:: pyedb 0.28.0
879
- Use: func:`pyedb.grpc.core.excitations.create_circuit_port_on_pin_group`
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
- .deprecated:: pyedb 0.28.0
920
- Use: func:`pyedb.grpc.core.excitations.place_voltage_probe`
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. 3 options are available, ``impedance`` for frequency impedance scan,
1013
- ``frequency_xtalk`` for frequency domain crosstalk and ``time_xtalk`` for time domain crosstalk.
1014
- Default value is ``frequency``.
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):