pyedb 0.8.0__tar.gz → 0.9.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pyedb might be problematic. Click here for more details.

Files changed (138) hide show
  1. {pyedb-0.8.0 → pyedb-0.9.0}/PKG-INFO +2 -1
  2. {pyedb-0.8.0 → pyedb-0.9.0}/pyproject.toml +2 -1
  3. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/__init__.py +1 -1
  4. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb.py +58 -19
  5. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/components.py +11 -11
  6. pyedb-0.9.0/src/pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py +520 -0
  7. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/padstack.py +53 -0
  8. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/siwave.py +31 -0
  9. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/stackup.py +1 -1
  10. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/utilities/simulation_setup.py +22 -13
  11. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/generic/settings.py +0 -1
  12. {pyedb-0.8.0 → pyedb-0.9.0}/LICENSE +0 -0
  13. {pyedb-0.8.0 → pyedb-0.9.0}/README.md +0 -0
  14. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/__init__.py +0 -0
  15. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/application/Variables.py +0 -0
  16. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/application/__init__.py +0 -0
  17. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/clr_module.py +0 -0
  18. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/__init__.py +0 -0
  19. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/cell/__init__.py +0 -0
  20. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/cell/hierarchy/__init__.py +0 -0
  21. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/cell/hierarchy/model.py +0 -0
  22. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/configuration.py +0 -0
  23. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/definition/__init__.py +0 -0
  24. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/definition/component_def.py +0 -0
  25. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/definition/component_model.py +0 -0
  26. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/definition/definition_obj.py +0 -0
  27. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/definition/definitions.py +0 -0
  28. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/definition/package_def.py +0 -0
  29. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/dotnet/__init__.py +0 -0
  30. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/dotnet/database.py +0 -0
  31. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/dotnet/layout.py +0 -0
  32. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/dotnet/primitive.py +0 -0
  33. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/__init__.py +0 -0
  34. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/components_data.py +0 -0
  35. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/connectable.py +0 -0
  36. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/control_file.py +0 -0
  37. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/design_options.py +0 -0
  38. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/edbvalue.py +0 -0
  39. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py +0 -0
  40. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/hfss_simulation_setup_data.py +0 -0
  41. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/layer_data.py +0 -0
  42. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/nets_data.py +0 -0
  43. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/padstacks_data.py +0 -0
  44. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/ports.py +0 -0
  45. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/primitives_data.py +0 -0
  46. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/simulation_configuration.py +0 -0
  47. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/siwave_simulation_setup_data.py +0 -0
  48. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/sources.py +0 -0
  49. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/terminals.py +0 -0
  50. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/utilities.py +0 -0
  51. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/edb_data/variables.py +0 -0
  52. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/general.py +0 -0
  53. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/geometry/__init__.py +0 -0
  54. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/geometry/point_data.py +0 -0
  55. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/geometry/polygon_data.py +0 -0
  56. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/hfss.py +0 -0
  57. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/layout.py +0 -0
  58. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/layout_validation.py +0 -0
  59. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/materials.py +0 -0
  60. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/net_class.py +0 -0
  61. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/nets.py +0 -0
  62. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/obj_base.py +0 -0
  63. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/utilities/__init__.py +0 -0
  64. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/edb_core/utilities/heatsink.py +0 -0
  65. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/dotnet/sim_setup_data/data/siw_dc_ir_settings.py +0 -0
  66. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/edb_logger.py +0 -0
  67. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/exceptions.py +0 -0
  68. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/generic/__init__.py +0 -0
  69. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/generic/constants.py +0 -0
  70. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/generic/data_handlers.py +0 -0
  71. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/generic/design_types.py +0 -0
  72. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/generic/filesystem.py +0 -0
  73. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/generic/general_methods.py +0 -0
  74. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/generic/plot.py +0 -0
  75. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/generic/process.py +0 -0
  76. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/__init__.py +0 -0
  77. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/bom/__init__.py +0 -0
  78. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/bom/bom.py +0 -0
  79. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/bom/bom_item.py +0 -0
  80. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/bom/characteristics.py +0 -0
  81. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/bom/refdes.py +0 -0
  82. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/content/__init__.py +0 -0
  83. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/content/color.py +0 -0
  84. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/content/content.py +0 -0
  85. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/content/dictionary_color.py +0 -0
  86. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/content/dictionary_fill.py +0 -0
  87. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/content/dictionary_line.py +0 -0
  88. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/content/entry_color.py +0 -0
  89. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/content/entry_line.py +0 -0
  90. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/content/fill.py +0 -0
  91. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/content/layer_ref.py +0 -0
  92. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/content/standard_geometries_dictionary.py +0 -0
  93. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/__init__.py +0 -0
  94. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/__init__.py +0 -0
  95. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +0 -0
  96. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/cad_data.py +0 -0
  97. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/component.py +0 -0
  98. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/drill.py +0 -0
  99. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/feature.py +0 -0
  100. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/layer.py +0 -0
  101. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/layer_feature.py +0 -0
  102. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/logical_net.py +0 -0
  103. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/outline.py +0 -0
  104. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/package.py +0 -0
  105. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_def.py +0 -0
  106. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +0 -0
  107. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_instance.py +0 -0
  108. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +0 -0
  109. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/path.py +0 -0
  110. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/phy_net.py +0 -0
  111. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/pin.py +0 -0
  112. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/polygon.py +0 -0
  113. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/profile.py +0 -0
  114. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/stackup.py +0 -0
  115. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_group.py +0 -0
  116. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_layer.py +0 -0
  117. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_data/step.py +0 -0
  118. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/cad_header.py +0 -0
  119. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/ecad.py +0 -0
  120. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ecad/spec.py +0 -0
  121. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/history_record.py +0 -0
  122. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/ipc2581.py +0 -0
  123. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/ipc2581/logistic_header.py +0 -0
  124. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/misc/__init__.py +0 -0
  125. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/misc/aedtlib_personalib_install.py +0 -0
  126. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/misc/downloads.py +0 -0
  127. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/misc/misc.py +0 -0
  128. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/misc/pyedb.runtimeconfig.json +0 -0
  129. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/misc/siw_feature_config/__init__.py +0 -0
  130. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/misc/siw_feature_config/emc/__init__.py +0 -0
  131. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/misc/siw_feature_config/emc/component_tags.py +0 -0
  132. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/misc/siw_feature_config/emc/net_tags.py +0 -0
  133. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/misc/siw_feature_config/emc/tag_library.py +0 -0
  134. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/misc/siw_feature_config/emc/xml_generic.py +0 -0
  135. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +0 -0
  136. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/misc/utilities.py +0 -0
  137. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/modeler/geometry_operators.py +0 -0
  138. {pyedb-0.8.0 → pyedb-0.9.0}/src/pyedb/siwave.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyedb
3
- Version: 0.8.0
3
+ Version: 0.9.0
4
4
  Summary: Higher-Level Pythonic Ansys Electronics Data Base
5
5
  Author-email: "ANSYS, Inc." <pyansys.core@ansys.com>
6
6
  Maintainer-email: PyEDB developers <simon.vandenbrouck@ansys.com>
@@ -21,6 +21,7 @@ Requires-Dist: ansys-pythonnet >= 3.1.0rc3
21
21
  Requires-Dist: dotnetcore2 ==3.1.23;platform_system=='Linux'
22
22
  Requires-Dist: pydantic>=2.6.4,<2.8
23
23
  Requires-Dist: toml == 0.10.2
24
+ Requires-Dist: Rtree >= 1.2.0
24
25
  Requires-Dist: ansys-sphinx-theme>=0.10.0,<0.16 ; extra == "doc"
25
26
  Requires-Dist: imageio>=2.30.0,<2.35 ; extra == "doc"
26
27
  Requires-Dist: ipython>=8.13.0,<8.24 ; extra == "doc"
@@ -31,7 +31,8 @@ dependencies = [
31
31
  "dotnetcore2 ==3.1.23;platform_system=='Linux'",
32
32
  "pydantic>=2.6.4,<2.8",
33
33
  "toml == 0.10.2",
34
- ]
34
+ "Rtree >= 1.2.0",
35
+ ]
35
36
 
36
37
  [project.optional-dependencies]
37
38
  tests = [
@@ -44,7 +44,7 @@ deprecation_warning()
44
44
  #
45
45
 
46
46
  pyedb_path = os.path.dirname(__file__)
47
- __version__ = "0.8.0"
47
+ __version__ = "0.9.0"
48
48
  version = __version__
49
49
 
50
50
  #
@@ -57,6 +57,9 @@ from pyedb.dotnet.edb_core.edb_data.ports import (
57
57
  GapPort,
58
58
  WavePort,
59
59
  )
60
+ from pyedb.dotnet.edb_core.edb_data.raptor_x_simulation_setup_data import (
61
+ RaptorXSimulationSetup,
62
+ )
60
63
  from pyedb.dotnet.edb_core.edb_data.simulation_configuration import (
61
64
  SimulationConfiguration,
62
65
  )
@@ -174,15 +177,16 @@ class Edb(Database):
174
177
 
175
178
  def __init__(
176
179
  self,
177
- edbpath=None,
178
- cellname=None,
179
- isreadonly=False,
180
- edbversion=None,
181
- isaedtowned=False,
180
+ edbpath: str = None,
181
+ cellname: str = None,
182
+ isreadonly: bool = False,
183
+ edbversion: str = None,
184
+ isaedtowned: bool = False,
182
185
  oproject=None,
183
- student_version=False,
184
- use_ppe=False,
185
- technology_file=None,
186
+ student_version: bool = False,
187
+ use_ppe: bool = False,
188
+ technology_file: str = None,
189
+ remove_existing_aedt: bool = False,
186
190
  ):
187
191
  edbversion = get_string_version(edbversion)
188
192
  self._clean_variables()
@@ -213,17 +217,8 @@ class Edb(Database):
213
217
  os.path.dirname(edbpath),
214
218
  "pyedb_" + os.path.splitext(os.path.split(edbpath)[-1])[0] + ".log",
215
219
  )
216
- aedt_file = os.path.splitext(edbpath)[0] + ".aedt"
217
- files = [aedt_file, aedt_file + ".lock"]
218
- for file in files:
219
- if os.path.isfile(file):
220
- try:
221
- shutil.rmtree(file)
222
- self.logger.info(f"Removing {file} to allow loading EDB file.")
223
- except:
224
- self.logger.info(
225
- f"Failed to delete {file} which is located at the same location as the EDB file."
226
- )
220
+ if not isreadonly:
221
+ self._check_remove_project_files(edbpath, remove_existing_aedt)
227
222
 
228
223
  if isaedtowned and (inside_desktop or settings.remote_rpc_session):
229
224
  self.open_edb_inside_aedt()
@@ -311,6 +306,22 @@ class Edb(Database):
311
306
  if description: # Add the variable description if a two-item list is passed for variable_value.
312
307
  self.__getitem__(variable_name).description = description
313
308
 
309
+ def _check_remove_project_files(self, edbpath: str, remove_existing_aedt: bool) -> None:
310
+ aedt_file = os.path.splitext(edbpath)[0] + ".aedt"
311
+ files = [aedt_file, aedt_file + ".lock"]
312
+ for file in files:
313
+ if os.path.isfile(file):
314
+ if not remove_existing_aedt:
315
+ self.logger.warning(
316
+ f"AEDT project-related file {file} exists and may need to be deleted before opening the EDB in HFSS 3D Layout." # noqa: E501
317
+ )
318
+ else:
319
+ try:
320
+ os.unlink(file)
321
+ self.logger.info(f"Deleted AEDT project-related file {file}.")
322
+ except:
323
+ self.logger.info(f"Failed to delete AEDT project-related file {file}.")
324
+
314
325
  def _clean_variables(self):
315
326
  """Initialize internal variables and perform garbage collection."""
316
327
  self._materials = None
@@ -3584,6 +3595,8 @@ class Edb(Database):
3584
3595
  setups[i.GetName()] = SiwaveSYZSimulationSetup(self, i)
3585
3596
  elif i.GetType() == self.edb_api.utility.utility.SimulationSetupType.kSIWaveDCIR:
3586
3597
  setups[i.GetName()] = SiwaveDCSimulationSetup(self, i)
3598
+ elif i.GetType() == self.edb_api.utility.utility.SimulationSetupType.kRaptorX:
3599
+ setups[i.GetName()] = RaptorXSimulationSetup(self, i)
3587
3600
  return setups
3588
3601
 
3589
3602
  @property
@@ -3639,9 +3652,35 @@ class Edb(Database):
3639
3652
  if name in self.setups:
3640
3653
  self.logger.info("setup already exists")
3641
3654
  return False
3655
+ elif not name:
3656
+ name = generate_unique_name("setup")
3642
3657
  setup = HfssSimulationSetup(self).create(name)
3643
3658
  return setup
3644
3659
 
3660
+ def create_raptorx_setup(self, name=None):
3661
+ """Create an RaptorX simulation setup from a template.
3662
+
3663
+ Parameters
3664
+ ----------
3665
+ name : str, optional
3666
+ Setup name.
3667
+
3668
+ Returns
3669
+ -------
3670
+ :class:`legacy.edb_core.edb_data.raptor_x_simulation_setup_data.RaptorXSimulationSetup`
3671
+
3672
+ """
3673
+ if name in self.setups:
3674
+ self.logger.error("Setup name already used in the layout")
3675
+ return False
3676
+ version = self.edbversion.split(".")
3677
+ if int(version[0]) >= 2024 and int(version[-1]) >= 2 or int(version[0]) > 2024:
3678
+ setup = RaptorXSimulationSetup(self).create(name)
3679
+ return setup
3680
+ else:
3681
+ self.logger.error("RaptorX simulation only supported with Ansys release 2024R2 and higher")
3682
+ return False
3683
+
3645
3684
  @pyedb_function_handler()
3646
3685
  def create_siwave_syz_setup(self, name=None):
3647
3686
  """Create a setup from a template.
@@ -879,7 +879,7 @@ class Components(object):
879
879
  Type of port to create. ``CoaxPort`` generates solder balls.
880
880
  ``CircuitPort`` generates circuit ports on pins belonging to the net list.
881
881
  do_pingroup : bool
882
- True activate pingroup during port creation (only used with combination of CoaxPort),
882
+ True activate pingroup during port creation (only used with combination of CircPort),
883
883
  False will take the closest reference pin and generate one port per signal pin.
884
884
  refnet : string or list of string.
885
885
  list of the reference net.
@@ -1016,17 +1016,10 @@ class Components(object):
1016
1016
  else:
1017
1017
  self._logger.info("No pins found on component {} for the net {}".format(component, net))
1018
1018
  else:
1019
- ref_pin_group = self.create_pingroup_from_pins(ref_pins)
1020
- if not ref_pin_group:
1021
- self._logger.warning("failed to create reference pin group")
1022
- return False
1023
- ref_pin_group_term = self._create_pin_group_terminal(ref_pin_group, isref=True)
1024
1019
  for net in net_list:
1025
1020
  pins = [pin for pin in cmp_pins if pin.GetNet().GetName() == net]
1026
1021
  for pin in pins:
1027
- pin_group = self.create_pingroup_from_pins([pin])
1028
- pin_group_term = self._create_pin_group_terminal(pin_group, isref=False)
1029
- pin_group_term.SetReferenceTerminal(ref_pin_group_term)
1022
+ self.create_port_on_pins(component, pin, ref_pins)
1030
1023
  return True
1031
1024
 
1032
1025
  @pyedb_function_handler()
@@ -1335,7 +1328,7 @@ class Components(object):
1335
1328
  return True
1336
1329
 
1337
1330
  @pyedb_function_handler()
1338
- def _create_pin_group_terminal(self, pingroup, isref=False, term_name=None):
1331
+ def _create_pin_group_terminal(self, pingroup, isref=False, term_name=None, term_type="circuit"):
1339
1332
  """Creates an EDB pin group terminal from a given EDB pin group.
1340
1333
 
1341
1334
  Parameters
@@ -1343,10 +1336,13 @@ class Components(object):
1343
1336
  pingroup : Edb pin group.
1344
1337
 
1345
1338
  isref : bool
1339
+ Specify if this terminal a reference terminal.
1346
1340
 
1347
1341
  term_name : Terminal name (Optional). If not provided default name is Component name, Pin name, Net name.
1348
1342
  str.
1349
1343
 
1344
+ term_type: Type of terminal, gap, circuit or auto.
1345
+ str.
1350
1346
  Returns
1351
1347
  -------
1352
1348
  Edb pin group terminal.
@@ -1360,6 +1356,10 @@ class Components(object):
1360
1356
  pingroup_term = self._edb.cell.terminal.PinGroupTerminal.Create(
1361
1357
  self._active_layout, pingroup.GetNet(), term_name, pingroup, isref
1362
1358
  )
1359
+ if term_type == "circuit":
1360
+ pingroup_term.SetIsCircuitPort(True)
1361
+ elif term_type == "auto":
1362
+ pingroup_term.SetIsAutoPort(True)
1363
1363
  return pingroup_term
1364
1364
 
1365
1365
  @pyedb_function_handler()
@@ -2295,7 +2295,7 @@ class Components(object):
2295
2295
  Filter on the net name as an alternative to
2296
2296
  ``pinName``. The default is ``None``.
2297
2297
  pinName : str, optional
2298
- Filter on the pin name an an alternative to
2298
+ Filter on the pin name an alternative to
2299
2299
  ``netName``. The default is ``None``.
2300
2300
 
2301
2301
  Returns