pyedb 0.13.dev0__py3-none-any.whl → 0.14.1__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_common.py +0 -5
  3. pyedb/configuration/cfg_components.py +0 -2
  4. pyedb/configuration/cfg_operations.py +0 -2
  5. pyedb/configuration/cfg_package_definition.py +0 -2
  6. pyedb/configuration/cfg_ports_sources.py +14 -11
  7. pyedb/configuration/cfg_stackup.py +0 -7
  8. pyedb/configuration/configuration.py +0 -6
  9. pyedb/dotnet/application/Variables.py +4 -40
  10. pyedb/dotnet/edb.py +27 -82
  11. pyedb/dotnet/edb_core/{edb_data/components_data.py → cell/hierarchy/component.py} +13 -133
  12. pyedb/dotnet/edb_core/cell/hierarchy/model.py +0 -3
  13. pyedb/dotnet/edb_core/cell/hierarchy/netlist_model.py +30 -0
  14. pyedb/dotnet/edb_core/cell/hierarchy/pin_pair_model.py +105 -0
  15. pyedb/dotnet/edb_core/cell/hierarchy/s_parameter_model.py +34 -0
  16. pyedb/dotnet/edb_core/cell/hierarchy/spice_model.py +34 -0
  17. pyedb/dotnet/edb_core/cell/layout.py +137 -0
  18. pyedb/dotnet/edb_core/cell/layout_obj.py +2 -4
  19. pyedb/dotnet/edb_core/cell/primitive.py +199 -1
  20. pyedb/dotnet/edb_core/cell/terminal/bundle_terminal.py +52 -0
  21. pyedb/dotnet/edb_core/cell/terminal/edge_terminal.py +50 -0
  22. pyedb/dotnet/edb_core/cell/terminal/padstack_instance_terminal.py +88 -0
  23. pyedb/dotnet/edb_core/cell/terminal/pingroup_terminal.py +59 -0
  24. pyedb/dotnet/edb_core/cell/terminal/point_terminal.py +73 -0
  25. pyedb/dotnet/edb_core/{edb_data/terminals.py → cell/terminal/terminal.py} +33 -242
  26. pyedb/dotnet/edb_core/components.py +10 -56
  27. pyedb/dotnet/edb_core/definition/component_def.py +1 -8
  28. pyedb/dotnet/edb_core/definition/component_model.py +0 -2
  29. pyedb/dotnet/edb_core/definition/definitions.py +0 -2
  30. pyedb/dotnet/edb_core/definition/package_def.py +7 -5
  31. pyedb/dotnet/edb_core/edb_data/control_file.py +0 -3
  32. pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py +0 -5
  33. pyedb/dotnet/edb_core/edb_data/hfss_pi_simulation_setup_data.py +4 -9
  34. pyedb/dotnet/edb_core/edb_data/layer_data.py +0 -7
  35. pyedb/dotnet/edb_core/edb_data/nets_data.py +2 -5
  36. pyedb/dotnet/edb_core/edb_data/padstacks_data.py +11 -29
  37. pyedb/dotnet/edb_core/edb_data/ports.py +4 -4
  38. pyedb/dotnet/edb_core/edb_data/primitives_data.py +3 -26
  39. pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py +13 -20
  40. pyedb/dotnet/edb_core/edb_data/simulation_configuration.py +3 -11
  41. pyedb/dotnet/edb_core/edb_data/sources.py +12 -17
  42. pyedb/dotnet/edb_core/general.py +1 -6
  43. pyedb/dotnet/edb_core/geometry/polygon_data.py +0 -3
  44. pyedb/dotnet/edb_core/hfss.py +1 -33
  45. pyedb/dotnet/edb_core/layout.py +0 -35
  46. pyedb/dotnet/edb_core/layout_validation.py +1 -3
  47. pyedb/dotnet/edb_core/materials.py +1 -22
  48. pyedb/dotnet/edb_core/net_class.py +0 -8
  49. pyedb/dotnet/edb_core/nets.py +4 -29
  50. pyedb/dotnet/edb_core/padstack.py +76 -30
  51. pyedb/dotnet/edb_core/sim_setup_data/data/adaptive_frequency_data.py +72 -0
  52. pyedb/dotnet/edb_core/sim_setup_data/data/mesh_operation.py +287 -0
  53. pyedb/dotnet/edb_core/{edb_data/hfss_simulation_setup_data.py → sim_setup_data/data/settings.py} +174 -878
  54. pyedb/dotnet/edb_core/sim_setup_data/data/sweep_data.py +509 -0
  55. pyedb/dotnet/edb_core/sim_setup_data/io/__init__.py +0 -0
  56. pyedb/dotnet/edb_core/{edb_data/siwave_simulation_setup_data.py → sim_setup_data/io/siwave.py} +0 -341
  57. pyedb/dotnet/edb_core/siwave.py +5 -33
  58. pyedb/dotnet/edb_core/stackup.py +4 -51
  59. pyedb/dotnet/edb_core/utilities/simulation_setup.py +613 -366
  60. pyedb/generic/data_handlers.py +1 -9
  61. pyedb/generic/general_methods.py +3 -53
  62. pyedb/generic/plot.py +1 -2
  63. pyedb/ipc2581/ecad/cad_data/layer_feature.py +1 -7
  64. pyedb/ipc2581/ecad/cad_data/package.py +1 -4
  65. pyedb/ipc2581/ecad/cad_data/path.py +1 -3
  66. pyedb/ipc2581/ecad/cad_data/polygon.py +1 -6
  67. pyedb/ipc2581/ecad/cad_data/step.py +1 -10
  68. pyedb/ipc2581/ipc2581.py +8 -15
  69. pyedb/modeler/geometry_operators.py +164 -67
  70. pyedb/siwave.py +25 -32
  71. {pyedb-0.13.dev0.dist-info → pyedb-0.14.1.dist-info}/METADATA +2 -2
  72. {pyedb-0.13.dev0.dist-info → pyedb-0.14.1.dist-info}/RECORD +75 -61
  73. /pyedb/dotnet/edb_core/cell/{__init__.py → terminal/__init__.py} +0 -0
  74. {pyedb-0.13.dev0.dist-info → pyedb-0.14.1.dist-info}/LICENSE +0 -0
  75. {pyedb-0.13.dev0.dist-info → pyedb-0.14.1.dist-info}/WHEEL +0 -0
@@ -30,8 +30,8 @@ import re
30
30
  import warnings
31
31
 
32
32
  from pyedb.dotnet.clr_module import String
33
+ from pyedb.dotnet.edb_core.cell.hierarchy.component import EDBComponent
33
34
  from pyedb.dotnet.edb_core.definition.component_def import EDBComponentDef
34
- from pyedb.dotnet.edb_core.edb_data.components_data import EDBComponent
35
35
  from pyedb.dotnet.edb_core.edb_data.padstacks_data import EDBPadstackInstance
36
36
  from pyedb.dotnet.edb_core.edb_data.sources import Source, SourceType
37
37
  from pyedb.dotnet.edb_core.general import convert_py_list_to_net_list
@@ -40,7 +40,6 @@ from pyedb.generic.general_methods import (
40
40
  _retry_ntimes,
41
41
  generate_unique_name,
42
42
  get_filename_without_extension,
43
- pyedb_function_handler,
44
43
  )
45
44
  from pyedb.modeler.geometry_operators import GeometryOperators
46
45
 
@@ -85,7 +84,6 @@ class Components(object):
85
84
  >>> edbapp.components
86
85
  """
87
86
 
88
- @pyedb_function_handler()
89
87
  def __getitem__(self, name):
90
88
  """Get a component or component definition from the Edb project.
91
89
 
@@ -95,7 +93,7 @@ class Components(object):
95
93
 
96
94
  Returns
97
95
  -------
98
- :class:`pyedb.dotnet.edb_core.edb_data.components_data.EDBComponent`
96
+ :class:`pyedb.dotnet.edb_core.cell.hierarchy.component.EDBComponent`
99
97
 
100
98
  """
101
99
  if name in self.instances:
@@ -128,7 +126,6 @@ class Components(object):
128
126
  def _edb(self):
129
127
  return self._pedb.edb_api
130
128
 
131
- @pyedb_function_handler()
132
129
  def _init_parts(self):
133
130
  a = self.components
134
131
  a = self.resistors
@@ -171,7 +168,7 @@ class Components(object):
171
168
 
172
169
  Returns
173
170
  -------
174
- dict[str, :class:`pyedb.dotnet.edb_core.edb_data.components_data.EDBComponent`]
171
+ dict[str, :class:`pyedb.dotnet.edb_core.cell.hierarchy.component.EDBComponent`]
175
172
  Default dictionary for the EDB component.
176
173
 
177
174
  Examples
@@ -191,7 +188,7 @@ class Components(object):
191
188
 
192
189
  Returns
193
190
  -------
194
- Dict[str, :class:`pyedb.dotnet.edb_core.edb_data.components_data.EDBComponent`]
191
+ Dict[str, :class:`pyedb.dotnet.edb_core.cell.hierarchy.component.EDBComponent`]
195
192
  Default dictionary for the EDB component.
196
193
 
197
194
  Examples
@@ -221,7 +218,6 @@ class Components(object):
221
218
  m = "Ansys.Ansoft.Edb.Definition.NPortComponentModel"
222
219
  return {name: l for name, l in self.definitions.items() if m in [i.ToString() for i in l._comp_model]}
223
220
 
224
- @pyedb_function_handler()
225
221
  def import_definition(self, file_path):
226
222
  """Import component definition from json file.
227
223
 
@@ -256,7 +252,6 @@ class Components(object):
256
252
  pass
257
253
  return True
258
254
 
259
- @pyedb_function_handler()
260
255
  def export_definition(self, file_path):
261
256
  """Export component definitions to json file.
262
257
 
@@ -307,7 +302,6 @@ class Components(object):
307
302
  json.dump(data, f, ensure_ascii=False, indent=4)
308
303
  return file_path
309
304
 
310
- @pyedb_function_handler()
311
305
  def refresh_components(self):
312
306
  """Refresh the component dictionary."""
313
307
  # self._logger.info("Refreshing the Components dictionary.")
@@ -324,7 +318,7 @@ class Components(object):
324
318
 
325
319
  Returns
326
320
  -------
327
- dict[str, :class:`pyedb.dotnet.edb_core.edb_data.components_data.EDBComponent`]
321
+ dict[str, :class:`pyedb.dotnet.edb_core.cell.hierarchy.component.EDBComponent`]
328
322
  Dictionary of resistors.
329
323
 
330
324
  Examples
@@ -346,7 +340,7 @@ class Components(object):
346
340
 
347
341
  Returns
348
342
  -------
349
- dict[str, :class:`pyedb.dotnet.edb_core.edb_data.components_data.EDBComponent`]
343
+ dict[str, :class:`pyedb.dotnet.edb_core.cell.hierarchy.component.EDBComponent`]
350
344
  Dictionary of capacitors.
351
345
 
352
346
  Examples
@@ -368,7 +362,7 @@ class Components(object):
368
362
 
369
363
  Returns
370
364
  -------
371
- dict[str, :class:`pyedb.dotnet.edb_core.edb_data.components_data.EDBComponent`]
365
+ dict[str, :class:`pyedb.dotnet.edb_core.cell.hierarchy.component.EDBComponent`]
372
366
  Dictionary of inductors.
373
367
 
374
368
  Examples
@@ -391,7 +385,7 @@ class Components(object):
391
385
 
392
386
  Returns
393
387
  -------
394
- dict[str, :class:`pyedb.dotnet.edb_core.edb_data.components_data.EDBComponent`]
388
+ dict[str, :class:`pyedb.dotnet.edb_core.cell.hierarchy.component.EDBComponent`]
395
389
  Dictionary of integrated circuits.
396
390
 
397
391
  Examples
@@ -414,7 +408,7 @@ class Components(object):
414
408
 
415
409
  Returns
416
410
  -------
417
- dict[str, :class:`pyedb.dotnet.edb_core.edb_data.components_data.EDBComponent`]
411
+ dict[str, :class:`pyedb.dotnet.edb_core.cell.hierarchy.component.EDBComponent`]
418
412
  Dictionary of circuit inputs and outputs.
419
413
 
420
414
  Examples
@@ -437,7 +431,7 @@ class Components(object):
437
431
 
438
432
  Returns
439
433
  -------
440
- dict[str, :class:`pyedb.dotnet.edb_core.edb_data.components_data.EDBComponent`]
434
+ dict[str, :class:`pyedb.dotnet.edb_core.cell.hierarchy.component.EDBComponent`]
441
435
  Dictionary of other core components.
442
436
 
443
437
  Examples
@@ -479,7 +473,6 @@ class Components(object):
479
473
  self._comps_by_part[val.partname] = [val]
480
474
  return self._comps_by_part
481
475
 
482
- @pyedb_function_handler()
483
476
  def get_component_by_name(self, name):
484
477
  """Retrieve a component by name.
485
478
 
@@ -500,7 +493,6 @@ class Components(object):
500
493
  else:
501
494
  pass
502
495
 
503
- @pyedb_function_handler()
504
496
  def get_components_from_nets(self, netlist=None):
505
497
  """Retrieve components from a net list.
506
498
 
@@ -525,7 +517,6 @@ class Components(object):
525
517
  cmp_list.append(refdes)
526
518
  return cmp_list
527
519
 
528
- @pyedb_function_handler()
529
520
  def _get_edb_pin_from_pin_name(self, cmp, pin):
530
521
  if not isinstance(cmp, self._pedb.edb_api.cell.hierarchy.component):
531
522
  return False
@@ -536,7 +527,6 @@ class Components(object):
536
527
  return pins[0]
537
528
  return False
538
529
 
539
- @pyedb_function_handler()
540
530
  def get_component_placement_vector(
541
531
  self,
542
532
  mounted_component,
@@ -634,7 +624,6 @@ class Components(object):
634
624
  self._logger.warning("Failed to compute vector.")
635
625
  return False, [0, 0], 0, 0
636
626
 
637
- @pyedb_function_handler()
638
627
  def get_solder_ball_height(self, cmp):
639
628
  """Get component solder ball height.
640
629
 
@@ -656,7 +645,6 @@ class Components(object):
656
645
  return cmp_prop.GetSolderBallProperty().GetHeight()
657
646
  return False
658
647
 
659
- @pyedb_function_handler()
660
648
  def create_source_on_component(self, sources=None):
661
649
  """Create voltage, current source, or resistor on component.
662
650
 
@@ -735,7 +723,6 @@ class Components(object):
735
723
  )
736
724
  return True
737
725
 
738
- @pyedb_function_handler()
739
726
  def create_port_on_pins(self, refdes, pins, reference_pins, impedance=50.0, port_name=None, pec_boundary=False):
740
727
  """Create circuit port between pins and reference ones.
741
728
 
@@ -855,7 +842,6 @@ class Components(object):
855
842
  return term
856
843
  return False
857
844
 
858
- @pyedb_function_handler()
859
845
  def create_port_on_component(
860
846
  self,
861
847
  component,
@@ -1030,7 +1016,6 @@ class Components(object):
1030
1016
  self.create_port_on_pins(component, pin, ref_pins)
1031
1017
  return True
1032
1018
 
1033
- @pyedb_function_handler()
1034
1019
  def _create_terminal(self, pin, term_name=None):
1035
1020
  """Create terminal on component pin.
1036
1021
 
@@ -1060,7 +1045,6 @@ class Components(object):
1060
1045
  )
1061
1046
  return term
1062
1047
 
1063
- @pyedb_function_handler()
1064
1048
  def _get_closest_pin_from(self, pin, ref_pinlist):
1065
1049
  """Returns the closest pin from given pin among the list of reference pins.
1066
1050
 
@@ -1092,7 +1076,6 @@ class Components(object):
1092
1076
  closest_pin = ref_pin
1093
1077
  return closest_pin
1094
1078
 
1095
- @pyedb_function_handler()
1096
1079
  def replace_rlc_by_gap_boundaries(self, component=None):
1097
1080
  """Replace RLC component by RLC gap boundaries. These boundary types are compatible with 3D modeler export.
1098
1081
  Only 2 pins RLC components are supported in this command.
@@ -1134,7 +1117,6 @@ class Components(object):
1134
1117
  component.is_enabled = False
1135
1118
  return self.add_rlc_boundary(component.refdes, False)
1136
1119
 
1137
- @pyedb_function_handler()
1138
1120
  def deactivate_rlc_component(self, component=None, create_circuit_port=False, pec_boundary=False):
1139
1121
  """Deactivate RLC component with a possibility to convert it to a circuit port.
1140
1122
 
@@ -1187,7 +1169,6 @@ class Components(object):
1187
1169
  component=component.refdes, circuit_ports=create_circuit_port, pec_boundary=pec_boundary
1188
1170
  )
1189
1171
 
1190
- @pyedb_function_handler()
1191
1172
  def add_port_on_rlc_component(self, component=None, circuit_ports=True, pec_boundary=False):
1192
1173
  """Deactivate RLC component and replace it with a circuit port.
1193
1174
  The circuit port supports only two-pin components.
@@ -1261,7 +1242,6 @@ class Components(object):
1261
1242
  return True
1262
1243
  return False
1263
1244
 
1264
- @pyedb_function_handler()
1265
1245
  def add_rlc_boundary(self, component=None, circuit_type=True):
1266
1246
  """Add RLC gap boundary on component and replace it with a circuit port.
1267
1247
  The circuit port supports only 2-pin components.
@@ -1335,7 +1315,6 @@ class Components(object):
1335
1315
  self._logger.info("Component {} has been replaced by port".format(component.refdes))
1336
1316
  return True
1337
1317
 
1338
- @pyedb_function_handler()
1339
1318
  def _create_pin_group_terminal(self, pingroup, isref=False, term_name=None, term_type="circuit"):
1340
1319
  """Creates an EDB pin group terminal from a given EDB pin group.
1341
1320
 
@@ -1370,7 +1349,6 @@ class Components(object):
1370
1349
  pingroup_term.SetIsAutoPort(True)
1371
1350
  return pingroup_term
1372
1351
 
1373
- @pyedb_function_handler()
1374
1352
  def _is_top_component(self, cmp):
1375
1353
  """Test the component placement layer.
1376
1354
 
@@ -1392,7 +1370,6 @@ class Components(object):
1392
1370
  else:
1393
1371
  return False
1394
1372
 
1395
- @pyedb_function_handler()
1396
1373
  def _getComponentDefinition(self, name, pins):
1397
1374
  componentDefinition = self._pedb.edb_api.definition.ComponentDef.FindByName(self._db, name)
1398
1375
  if componentDefinition.IsNull():
@@ -1415,7 +1392,6 @@ class Components(object):
1415
1392
  self._logger.warning("Found existing component definition for footprint {}".format(name))
1416
1393
  return componentDefinition
1417
1394
 
1418
- @pyedb_function_handler()
1419
1395
  def create_rlc_component(
1420
1396
  self, pins, component_name="", r_value=None, c_value=None, l_value=None, is_parallel=False
1421
1397
  ): # pragma: no cover
@@ -1455,7 +1431,6 @@ class Components(object):
1455
1431
  is_parallel=is_parallel,
1456
1432
  )
1457
1433
 
1458
- @pyedb_function_handler()
1459
1434
  def create(
1460
1435
  self,
1461
1436
  pins,
@@ -1571,7 +1546,6 @@ class Components(object):
1571
1546
  self._cmp[new_cmp.GetName()] = new_edb_comp
1572
1547
  return new_edb_comp
1573
1548
 
1574
- @pyedb_function_handler()
1575
1549
  def create_component_from_pins(
1576
1550
  self, pins, component_name, placement_layer=None, component_part_name=None
1577
1551
  ): # pragma: no cover
@@ -1614,7 +1588,6 @@ class Components(object):
1614
1588
  is_rlc=False,
1615
1589
  )
1616
1590
 
1617
- @pyedb_function_handler()
1618
1591
  def set_component_model(self, componentname, model_type="Spice", modelpath=None, modelname=None):
1619
1592
  """Assign a Spice or Touchstone model to a component.
1620
1593
 
@@ -1703,7 +1676,6 @@ class Components(object):
1703
1676
  return False
1704
1677
  return True
1705
1678
 
1706
- @pyedb_function_handler()
1707
1679
  def create_pingroup_from_pins(self, pins, group_name=None):
1708
1680
  """Create a pin group on a component.
1709
1681
 
@@ -1771,7 +1743,6 @@ class Components(object):
1771
1743
  pingroup.SetNet(pins[0].GetNet())
1772
1744
  return pingroup
1773
1745
 
1774
- @pyedb_function_handler()
1775
1746
  def delete_single_pin_rlc(self, deactivate_only=False):
1776
1747
  # type: (bool) -> list
1777
1748
  """Delete all RLC components with a single pin.
@@ -1813,7 +1784,6 @@ class Components(object):
1813
1784
 
1814
1785
  return deleted_comps
1815
1786
 
1816
- @pyedb_function_handler()
1817
1787
  def delete_component(self, component_name): # pragma: no cover
1818
1788
  """Delete a component.
1819
1789
 
@@ -1841,7 +1811,6 @@ class Components(object):
1841
1811
  warnings.warn("`delete_component` is deprecated. Use `delete` property instead.", DeprecationWarning)
1842
1812
  return self.delete(component_name=component_name)
1843
1813
 
1844
- @pyedb_function_handler()
1845
1814
  def delete(self, component_name):
1846
1815
  """Delete a component.
1847
1816
 
@@ -1871,7 +1840,6 @@ class Components(object):
1871
1840
  return True
1872
1841
  return False
1873
1842
 
1874
- @pyedb_function_handler()
1875
1843
  def disable_rlc_component(self, component_name):
1876
1844
  """Disable a RLC component.
1877
1845
 
@@ -1907,7 +1875,6 @@ class Components(object):
1907
1875
  return True
1908
1876
  return False
1909
1877
 
1910
- @pyedb_function_handler()
1911
1878
  def set_solder_ball(
1912
1879
  self,
1913
1880
  component="",
@@ -2014,7 +1981,6 @@ class Components(object):
2014
1981
  edb_cmp.SetComponentProperty(cmp_property)
2015
1982
  return True
2016
1983
 
2017
- @pyedb_function_handler()
2018
1984
  def set_component_rlc(
2019
1985
  self,
2020
1986
  componentname,
@@ -2099,7 +2065,6 @@ class Components(object):
2099
2065
  self._logger.info("RLC properties for Component %s has been assigned.", componentname)
2100
2066
  return True
2101
2067
 
2102
- @pyedb_function_handler()
2103
2068
  def update_rlc_from_bom(
2104
2069
  self,
2105
2070
  bom_file,
@@ -2169,7 +2134,6 @@ class Components(object):
2169
2134
  self.components[comp].is_enabled = False
2170
2135
  return found
2171
2136
 
2172
- @pyedb_function_handler()
2173
2137
  def import_bom(
2174
2138
  self,
2175
2139
  bom_file,
@@ -2260,7 +2224,6 @@ class Components(object):
2260
2224
  self.components[comp].is_enabled = False
2261
2225
  return True
2262
2226
 
2263
- @pyedb_function_handler()
2264
2227
  def export_bom(self, bom_file, delimiter=","):
2265
2228
  """Export Bom file from layout.
2266
2229
 
@@ -2291,7 +2254,6 @@ class Components(object):
2291
2254
  f.writelines([delimiter.join([refdes, part_name, comp_type, value + "\n"])])
2292
2255
  return True
2293
2256
 
2294
- @pyedb_function_handler
2295
2257
  def find_by_reference_designator(self, reference_designator):
2296
2258
  """Find a component.
2297
2259
 
@@ -2303,7 +2265,6 @@ class Components(object):
2303
2265
  obj = self._pedb.edb_api.cell.hierarchy.component.FindByName(self._active_layout, reference_designator)
2304
2266
  return EDBComponent(self._pedb, obj)
2305
2267
 
2306
- @pyedb_function_handler()
2307
2268
  def get_pin_from_component(self, component, netName=None, pinName=None):
2308
2269
  """Retrieve the pins of a component.
2309
2270
 
@@ -2356,7 +2317,6 @@ class Components(object):
2356
2317
  pins = [p for p in list(component.LayoutObjs) if int(p.GetObjType()) == 1 and p.IsLayoutPin()]
2357
2318
  return pins
2358
2319
 
2359
- @pyedb_function_handler()
2360
2320
  def get_aedt_pin_name(self, pin):
2361
2321
  """Retrieve the pin name that is shown in AEDT.
2362
2322
 
@@ -2388,7 +2348,6 @@ class Components(object):
2388
2348
  name = str(name).strip("'")
2389
2349
  return name
2390
2350
 
2391
- @pyedb_function_handler
2392
2351
  def get_pins(self, reference_designator, net_name=None, pin_name=None):
2393
2352
  """Get component pins.
2394
2353
 
@@ -2416,7 +2375,6 @@ class Components(object):
2416
2375
 
2417
2376
  return pins
2418
2377
 
2419
- @pyedb_function_handler()
2420
2378
  def get_pin_position(self, pin):
2421
2379
  """Retrieve the pin position in meters.
2422
2380
 
@@ -2450,7 +2408,6 @@ class Components(object):
2450
2408
  )
2451
2409
  return [pin_xy.X.ToDouble(), pin_xy.Y.ToDouble()]
2452
2410
 
2453
- @pyedb_function_handler()
2454
2411
  def get_pins_name_from_net(self, net_name, pin_list=None):
2455
2412
  """Retrieve pins belonging to a net.
2456
2413
 
@@ -2485,7 +2442,6 @@ class Components(object):
2485
2442
  pin_names.append(self.get_aedt_pin_name(pin))
2486
2443
  return pin_names
2487
2444
 
2488
- @pyedb_function_handler()
2489
2445
  def get_nets_from_pin_list(self, PinList):
2490
2446
  """Retrieve nets with one or more pins.
2491
2447
 
@@ -2512,7 +2468,6 @@ class Components(object):
2512
2468
  netlist.append(pin.GetNet().GetName())
2513
2469
  return list(set(netlist))
2514
2470
 
2515
- @pyedb_function_handler()
2516
2471
  def get_component_net_connection_info(self, refdes):
2517
2472
  """Retrieve net connection information.
2518
2473
 
@@ -2602,7 +2557,6 @@ class Components(object):
2602
2557
 
2603
2558
  return through_comp_list
2604
2559
 
2605
- @pyedb_function_handler()
2606
2560
  def short_component_pins(self, component_name, pins_to_short=None, width=1e-3):
2607
2561
  """Short pins of component with a trace.
2608
2562
 
@@ -24,7 +24,6 @@ import os
24
24
 
25
25
  from pyedb.dotnet.edb_core.definition.component_model import NPortComponentModel
26
26
  from pyedb.dotnet.edb_core.utilities.obj_base import ObjBase
27
- from pyedb.generic.general_methods import pyedb_function_handler
28
27
 
29
28
 
30
29
  class EDBComponentDef(ObjBase):
@@ -84,7 +83,7 @@ class EDBComponentDef(ObjBase):
84
83
  -------
85
84
  dict of :class:`EDBComponent`
86
85
  """
87
- from pyedb.dotnet.edb_core.edb_data.components_data import EDBComponent
86
+ from pyedb.dotnet.edb_core.cell.hierarchy.component import EDBComponent
88
87
 
89
88
  comp_list = [
90
89
  EDBComponent(self._pedb, l)
@@ -94,7 +93,6 @@ class EDBComponentDef(ObjBase):
94
93
  ]
95
94
  return {comp.refdes: comp for comp in comp_list}
96
95
 
97
- @pyedb_function_handler()
98
96
  def assign_rlc_model(self, res=None, ind=None, cap=None, is_parallel=False):
99
97
  """Assign RLC to all components under this part name.
100
98
 
@@ -114,7 +112,6 @@ class EDBComponentDef(ObjBase):
114
112
  comp.assign_rlc_model(res, ind, cap, is_parallel)
115
113
  return True
116
114
 
117
- @pyedb_function_handler()
118
115
  def assign_s_param_model(self, file_path, model_name=None, reference_net=None):
119
116
  """Assign S-parameter to all components under this part name.
120
117
 
@@ -133,7 +130,6 @@ class EDBComponentDef(ObjBase):
133
130
  comp.assign_s_param_model(file_path, model_name, reference_net)
134
131
  return True
135
132
 
136
- @pyedb_function_handler()
137
133
  def assign_spice_model(self, file_path, model_name=None):
138
134
  """Assign Spice model to all components under this part name.
139
135
 
@@ -171,11 +167,9 @@ class EDBComponentDef(ObjBase):
171
167
  temp[edb_object.name] = edb_object
172
168
  return temp
173
169
 
174
- @pyedb_function_handler
175
170
  def _add_component_model(self, value):
176
171
  self._edb_object.AddComponentModel(value._edb_object)
177
172
 
178
- @pyedb_function_handler
179
173
  def add_n_port_model(self, fpath, name=None):
180
174
  if not name:
181
175
  name = os.path.splitext(os.path.basename(fpath)[0])
@@ -188,7 +182,6 @@ class EDBComponentDef(ObjBase):
188
182
 
189
183
  self._add_component_model(n_port_comp_model)
190
184
 
191
- @pyedb_function_handler
192
185
  def create(self, name):
193
186
  cell_type = self._pedb.edb_api.cell.CellType.FootprintCell
194
187
  footprint_cell = self._pedb._active_cell.cell.Create(self._pedb.active_db, cell_type, name)
@@ -21,7 +21,6 @@
21
21
  # SOFTWARE.
22
22
 
23
23
  from pyedb.dotnet.edb_core.utilities.obj_base import ObjBase
24
- from pyedb.generic.general_methods import pyedb_function_handler
25
24
 
26
25
 
27
26
  class ComponentModel(ObjBase):
@@ -31,7 +30,6 @@ class ComponentModel(ObjBase):
31
30
  super().__init__(pedb, edb_object)
32
31
  self._model_type_mapping = {"PinPairModel": self._pedb.edb_api.cell}
33
32
 
34
- @pyedb_function_handler()
35
33
  def name(self):
36
34
  """Name of the component model."""
37
35
  return self._edb_object.GetName()
@@ -22,7 +22,6 @@
22
22
 
23
23
  from pyedb.dotnet.edb_core.definition.component_def import EDBComponentDef
24
24
  from pyedb.dotnet.edb_core.definition.package_def import PackageDef
25
- from pyedb.generic.general_methods import pyedb_function_handler
26
25
 
27
26
 
28
27
  class Definitions:
@@ -39,7 +38,6 @@ class Definitions:
39
38
  """Package definitions."""
40
39
  return {l.GetName(): PackageDef(self._pedb, l) for l in list(self._pedb.active_db.PackageDefs)}
41
40
 
42
- @pyedb_function_handler
43
41
  def add_package_def(self, name, component_part_name=None, boundary_points=None):
44
42
  """Add a package definition.
45
43
 
@@ -22,7 +22,7 @@
22
22
 
23
23
  from pyedb.dotnet.edb_core.geometry.polygon_data import PolygonData
24
24
  from pyedb.dotnet.edb_core.utilities.obj_base import ObjBase
25
- from pyedb.generic.general_methods import pyedb_function_handler
25
+ from pyedb.edb_logger import pyedb_logger
26
26
 
27
27
 
28
28
  class PackageDef(ObjBase):
@@ -37,7 +37,7 @@ class PackageDef(ObjBase):
37
37
  component_part_name : str, optional
38
38
  Part name of the component.
39
39
  extent_bounding_box : list, optional
40
- Bounding box defines the shape of the package. For example, [[0, 0], ["2mm", "2mm"].
40
+ Bounding box defines the shape of the package. For example, [[0, 0], ["2mm", "2mm"]].
41
41
 
42
42
  """
43
43
 
@@ -48,7 +48,6 @@ class PackageDef(ObjBase):
48
48
  else:
49
49
  self._edb_object = edb_object
50
50
 
51
- @pyedb_function_handler
52
51
  def __create_from_name(self, name, component_part_name=None, extent_bounding_box=None):
53
52
  """Create a package definition.
54
53
 
@@ -72,12 +71,16 @@ class PackageDef(ObjBase):
72
71
  bbox = [[y_pt1 - y_mid, x_pt1 - x_mid], [y_pt2 - y_mid, x_pt2 - x_mid]]
73
72
  else:
74
73
  bbox = extent_bounding_box
74
+ if bbox is None:
75
+ pyedb_logger.warning(
76
+ "Package creation uses bounding box but it cannot be inferred. "
77
+ "Please set argument 'component_part_name' or 'extent_bounding_box'."
78
+ )
75
79
  polygon_data = PolygonData(self._pedb, create_from_bounding_box=True, points=bbox)
76
80
 
77
81
  edb_object.SetExteriorBoundary(polygon_data._edb_object)
78
82
  return edb_object
79
83
 
80
- @pyedb_function_handler
81
84
  def delete(self):
82
85
  """Delete a package definition object from the database."""
83
86
  return self._edb_object.Delete()
@@ -141,7 +144,6 @@ class PackageDef(ObjBase):
141
144
  value = self._pedb.edb_value(value)
142
145
  self._edb_object.SetHeight(value)
143
146
 
144
- @pyedb_function_handler
145
147
  def set_heatsink(self, fin_base_height, fin_height, fin_orientation, fin_spacing, fin_thickness):
146
148
  from pyedb.dotnet.edb_core.utilities.heatsink import HeatSink
147
149
 
@@ -32,7 +32,6 @@ from pyedb.generic.general_methods import (
32
32
  env_value,
33
33
  is_ironpython,
34
34
  is_linux,
35
- pyedb_function_handler,
36
35
  )
37
36
  from pyedb.misc.aedtlib_personalib_install import write_pretty_xml
38
37
  from pyedb.misc.misc import list_installed_ansysem
@@ -43,7 +42,6 @@ else:
43
42
  import subprocess
44
43
 
45
44
 
46
- @pyedb_function_handler()
47
45
  def convert_technology_file(tech_file, edbversion=None, control_file=None):
48
46
  """Convert a technology file to edb control file (xml).
49
47
 
@@ -1255,7 +1253,6 @@ class ControlFile:
1255
1253
  )
1256
1254
  return True
1257
1255
 
1258
- @pyedb_function_handler()
1259
1256
  def write_xml(self, xml_output):
1260
1257
  """Write xml to output file
1261
1258
 
@@ -23,7 +23,6 @@
23
23
  from pyedb.dotnet.edb_core.edb_data.edbvalue import EdbValue
24
24
  from pyedb.dotnet.edb_core.edb_data.primitives_data import cast
25
25
  from pyedb.dotnet.edb_core.general import convert_pytuple_to_nettuple
26
- from pyedb.generic.general_methods import pyedb_function_handler
27
26
 
28
27
 
29
28
  class HfssExtentInfo:
@@ -49,12 +48,10 @@ class HfssExtentInfo:
49
48
  "pml": self._pedb.edb_api.utility.utility.OpenRegionType.PML,
50
49
  }
51
50
 
52
- @pyedb_function_handler()
53
51
  def _get_edb_value(self, value):
54
52
  """Get EDB value."""
55
53
  return self._pedb.edb_value(value)
56
54
 
57
- @pyedb_function_handler()
58
55
  def _update_hfss_extent_info(self, hfss_extent_info):
59
56
  return self._pedb.active_cell.SetHFSSExtentInfo(hfss_extent_info)
60
57
 
@@ -321,7 +318,6 @@ class HfssExtentInfo:
321
318
  info.UseXYDataExtentForVerticalExpansion = value
322
319
  self._update_hfss_extent_info(info)
323
320
 
324
- @pyedb_function_handler()
325
321
  def load_config(self, config):
326
322
  """Load HFSS extent configuration.
327
323
 
@@ -334,7 +330,6 @@ class HfssExtentInfo:
334
330
  if hasattr(self, i):
335
331
  setattr(self, i, j)
336
332
 
337
- @pyedb_function_handler()
338
333
  def export_config(self):
339
334
  """Export HFSS extent information.
340
335
 
@@ -21,15 +21,12 @@
21
21
  # SOFTWARE.
22
22
 
23
23
  from pyedb.dotnet.edb_core.general import convert_py_list_to_net_list
24
- from pyedb.dotnet.edb_core.utilities.simulation_setup import (
25
- BaseSimulationSetup,
26
- EdbFrequencySweep,
27
- )
28
- from pyedb.generic.data_handlers import pyedb_function_handler
24
+ from pyedb.dotnet.edb_core.sim_setup_data.data.sweep_data import SweepData
25
+ from pyedb.dotnet.edb_core.utilities.simulation_setup import SimulationSetup
29
26
  from pyedb.generic.general_methods import generate_unique_name
30
27
 
31
28
 
32
- class HFSSPISimulationSetup(BaseSimulationSetup):
29
+ class HFSSPISimulationSetup(SimulationSetup):
33
30
  """Manages EDB methods for HFSSPI simulation setup."""
34
31
 
35
32
  def __init__(self, pedb, edb_object=None):
@@ -39,7 +36,6 @@ class HFSSPISimulationSetup(BaseSimulationSetup):
39
36
  self._edb_setup_info = None
40
37
  self.logger = self._pedb.logger
41
38
 
42
- @pyedb_function_handler
43
39
  def create(self, name=None):
44
40
  """Create an HFSS setup."""
45
41
  self._name = name
@@ -76,7 +72,6 @@ class HFSSPISimulationSetup(BaseSimulationSetup):
76
72
  else:
77
73
  self.logger.error(f"Property position expects an integer value while the provided value is {value}.")
78
74
 
79
- @pyedb_function_handler()
80
75
  def add_frequency_sweep(self, name=None, frequency_sweep=None):
81
76
  """Add frequency sweep.
82
77
 
@@ -106,7 +101,7 @@ class HFSSPISimulationSetup(BaseSimulationSetup):
106
101
  return False
107
102
  if not name:
108
103
  name = generate_unique_name("sweep")
109
- return EdbFrequencySweep(self, frequency_sweep, name)
104
+ return SweepData(self, frequency_sweep, name)
110
105
 
111
106
 
112
107
  class HFSSPISimulationSettings(object):