pyedb 0.11.2__tar.gz → 0.12.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 (154) hide show
  1. {pyedb-0.11.2 → pyedb-0.12.0}/PKG-INFO +1 -1
  2. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/__init__.py +1 -1
  3. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/configuration/cfg_boundaries.py +35 -25
  4. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/configuration/cfg_padstacks.py +13 -9
  5. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/configuration/cfg_ports_sources.py +33 -17
  6. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb.py +2 -4
  7. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/hfss_simulation_setup_data.py +5 -6
  8. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/padstacks_data.py +9 -1
  9. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/siwave.py +1 -0
  10. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/utilities/simulation_setup.py +2 -1
  11. {pyedb-0.11.2 → pyedb-0.12.0}/LICENSE +0 -0
  12. {pyedb-0.11.2 → pyedb-0.12.0}/README.md +0 -0
  13. {pyedb-0.11.2 → pyedb-0.12.0}/pyproject.toml +0 -0
  14. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/configuration/__init__.py +0 -0
  15. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/configuration/cfg_components.py +0 -0
  16. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/configuration/cfg_data.py +0 -0
  17. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/configuration/cfg_general.py +0 -0
  18. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/configuration/cfg_nets.py +0 -0
  19. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/configuration/cfg_pin_groups.py +0 -0
  20. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/configuration/cfg_s_parameter_models.py +0 -0
  21. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/configuration/cfg_setup.py +0 -0
  22. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/configuration/cfg_spice_models.py +0 -0
  23. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/configuration/configuration.py +0 -0
  24. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/__init__.py +0 -0
  25. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/application/Variables.py +0 -0
  26. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/application/__init__.py +0 -0
  27. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/clr_module.py +0 -0
  28. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/__init__.py +0 -0
  29. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/cell/__init__.py +0 -0
  30. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/cell/hierarchy/__init__.py +0 -0
  31. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/cell/hierarchy/model.py +0 -0
  32. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/components.py +0 -0
  33. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/definition/__init__.py +0 -0
  34. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/definition/component_def.py +0 -0
  35. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/definition/component_model.py +0 -0
  36. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/definition/definition_obj.py +0 -0
  37. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/definition/definitions.py +0 -0
  38. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/definition/package_def.py +0 -0
  39. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/dotnet/__init__.py +0 -0
  40. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/dotnet/database.py +0 -0
  41. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/dotnet/layout.py +0 -0
  42. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/dotnet/primitive.py +0 -0
  43. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/__init__.py +0 -0
  44. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/components_data.py +0 -0
  45. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/connectable.py +0 -0
  46. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/control_file.py +0 -0
  47. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/design_options.py +0 -0
  48. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/edbvalue.py +0 -0
  49. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py +0 -0
  50. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/hfss_pi_simulation_setup_data.py +0 -0
  51. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/layer_data.py +0 -0
  52. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/nets_data.py +0 -0
  53. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/ports.py +0 -0
  54. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/primitives_data.py +0 -0
  55. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py +0 -0
  56. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/simulation_configuration.py +0 -0
  57. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/siwave_simulation_setup_data.py +0 -0
  58. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/sources.py +0 -0
  59. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/terminals.py +0 -0
  60. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/utilities.py +0 -0
  61. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/variables.py +0 -0
  62. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/general.py +0 -0
  63. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/geometry/__init__.py +0 -0
  64. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/geometry/point_data.py +0 -0
  65. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/geometry/polygon_data.py +0 -0
  66. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/hfss.py +0 -0
  67. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/layout.py +0 -0
  68. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/layout_validation.py +0 -0
  69. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/materials.py +0 -0
  70. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/net_class.py +0 -0
  71. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/nets.py +0 -0
  72. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/obj_base.py +0 -0
  73. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/padstack.py +0 -0
  74. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/sim_setup_data/__init__.py +0 -0
  75. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/sim_setup_data/data/__init__.py +0 -0
  76. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/sim_setup_data/data/siw_dc_ir_settings.py +0 -0
  77. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/stackup.py +0 -0
  78. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/utilities/__init__.py +0 -0
  79. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/utilities/heatsink.py +0 -0
  80. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/edb_logger.py +0 -0
  81. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/exceptions.py +0 -0
  82. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/generic/__init__.py +0 -0
  83. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/generic/constants.py +0 -0
  84. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/generic/data_handlers.py +0 -0
  85. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/generic/design_types.py +0 -0
  86. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/generic/filesystem.py +0 -0
  87. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/generic/general_methods.py +0 -0
  88. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/generic/plot.py +0 -0
  89. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/generic/process.py +0 -0
  90. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/generic/settings.py +0 -0
  91. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/__init__.py +0 -0
  92. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/bom/__init__.py +0 -0
  93. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/bom/bom.py +0 -0
  94. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/bom/bom_item.py +0 -0
  95. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/bom/characteristics.py +0 -0
  96. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/bom/refdes.py +0 -0
  97. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/content/__init__.py +0 -0
  98. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/content/color.py +0 -0
  99. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/content/content.py +0 -0
  100. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/content/dictionary_color.py +0 -0
  101. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/content/dictionary_fill.py +0 -0
  102. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/content/dictionary_line.py +0 -0
  103. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/content/entry_color.py +0 -0
  104. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/content/entry_line.py +0 -0
  105. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/content/fill.py +0 -0
  106. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/content/layer_ref.py +0 -0
  107. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/content/standard_geometries_dictionary.py +0 -0
  108. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/__init__.py +0 -0
  109. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/__init__.py +0 -0
  110. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +0 -0
  111. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/cad_data.py +0 -0
  112. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/component.py +0 -0
  113. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/drill.py +0 -0
  114. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/feature.py +0 -0
  115. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/layer.py +0 -0
  116. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/layer_feature.py +0 -0
  117. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/logical_net.py +0 -0
  118. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/outline.py +0 -0
  119. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/package.py +0 -0
  120. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_def.py +0 -0
  121. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +0 -0
  122. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_instance.py +0 -0
  123. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +0 -0
  124. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/path.py +0 -0
  125. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/phy_net.py +0 -0
  126. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/pin.py +0 -0
  127. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/polygon.py +0 -0
  128. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/profile.py +0 -0
  129. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/stackup.py +0 -0
  130. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_group.py +0 -0
  131. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_layer.py +0 -0
  132. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/step.py +0 -0
  133. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_header.py +0 -0
  134. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/ecad.py +0 -0
  135. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/spec.py +0 -0
  136. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/history_record.py +0 -0
  137. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/ipc2581.py +0 -0
  138. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/ipc2581/logistic_header.py +0 -0
  139. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/misc/__init__.py +0 -0
  140. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/misc/aedtlib_personalib_install.py +0 -0
  141. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/misc/downloads.py +0 -0
  142. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/misc/misc.py +0 -0
  143. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/misc/pyedb.runtimeconfig.json +0 -0
  144. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/misc/siw_feature_config/__init__.py +0 -0
  145. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/misc/siw_feature_config/emc/__init__.py +0 -0
  146. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/misc/siw_feature_config/emc/component_tags.py +0 -0
  147. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/misc/siw_feature_config/emc/net_tags.py +0 -0
  148. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/misc/siw_feature_config/emc/tag_library.py +0 -0
  149. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/misc/siw_feature_config/emc/xml_generic.py +0 -0
  150. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +0 -0
  151. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/misc/utilities.py +0 -0
  152. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/modeler/geometry_operators.py +0 -0
  153. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/siwave.py +0 -0
  154. {pyedb-0.11.2 → pyedb-0.12.0}/src/pyedb/siwave_core/icepak.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyedb
3
- Version: 0.11.2
3
+ Version: 0.12.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>
@@ -44,7 +44,7 @@ deprecation_warning()
44
44
  #
45
45
 
46
46
  pyedb_path = os.path.dirname(__file__)
47
- __version__ = "0.11.2"
47
+ __version__ = "0.12.0"
48
48
  version = __version__
49
49
 
50
50
  #
@@ -27,25 +27,25 @@ class CfgBoundaries:
27
27
  def __init__(self, pdata, boundaries_dict):
28
28
  self._pedb = pdata.pedb
29
29
  self._boundaries_dict = boundaries_dict
30
- self.open_region = self._boundaries_dict.get("open_region", True)
30
+ self.open_region = self._boundaries_dict.get("open_region", None)
31
31
  self._map_open_region_type()
32
- self.pml_visible = self._boundaries_dict.get("pml_visible", False)
33
- self.pml_operation_frequency = self._boundaries_dict.get("pml_operation_frequency", "5GHz")
34
- self.pml_radiation_factor = self._boundaries_dict.get("pml_radiation_factor", 10)
32
+ self.pml_visible = self._boundaries_dict.get("pml_visible", None)
33
+ self.pml_operation_frequency = self._boundaries_dict.get("pml_operation_frequency", None)
34
+ self.pml_radiation_factor = self._boundaries_dict.get("pml_radiation_factor", None)
35
35
  self._map_dielectric_extend_type()
36
- self.dielectric_base_polygon = self._boundaries_dict.get("dielectric_base_polygon", "")
37
- self.horizontal_padding = self._boundaries_dict.get("horizontal_padding", 0.0)
36
+ self.dielectric_base_polygon = self._boundaries_dict.get("dielectric_base_polygon", None)
37
+ self.horizontal_padding = self._boundaries_dict.get("horizontal_padding", None)
38
38
  self.honor_primitives_on_dielectric_layers = self._boundaries_dict.get(
39
39
  "honor_primitives_on_dielectric_layers", False
40
40
  )
41
41
  self._map_air_box_extend_type()
42
- self.air_box_base_polygon = self._boundaries_dict.get("air_box_base_polygon", "")
42
+ self.air_box_base_polygon = self._boundaries_dict.get("air_box_base_polygon", None)
43
43
  self.air_box_truncate_model_ground_layers = self._boundaries_dict.get(
44
- "air_box_truncate_model_ground_layers", False
44
+ "air_box_truncate_model_ground_layers", None
45
45
  )
46
- self.air_box_horizontal_padding = self._boundaries_dict.get("air_box_horizontal_padding", 0.15)
47
- self.air_box_positive_vertical_padding = self._boundaries_dict.get("air_box_positive_vertical_padding", 1)
48
- self.air_box_negative_vertical_padding = self._boundaries_dict.get("air_box_negative_vertical_padding", 1)
46
+ self.air_box_horizontal_padding = self._boundaries_dict.get("air_box_horizontal_padding", None)
47
+ self.air_box_positive_vertical_padding = self._boundaries_dict.get("air_box_positive_vertical_padding", None)
48
+ self.air_box_negative_vertical_padding = self._boundaries_dict.get("air_box_negative_vertical_padding", None)
49
49
 
50
50
  def _map_air_box_extend_type(self):
51
51
  air_box_type = self._boundaries_dict.get("air_box_extents_type", None)
@@ -94,22 +94,32 @@ class CfgBoundaries:
94
94
 
95
95
  def apply(self):
96
96
  """Imports boundary information from JSON."""
97
- self._pedb.hfss.hfss_extent_info.use_open_region = self.open_region
97
+ if self.open_region is not None:
98
+ self._pedb.hfss.hfss_extent_info.use_open_region = self.open_region
98
99
  self._pedb.hfss.hfss_extent_info.open_region_type = self.open_region_type.name.lower()
99
- self._pedb.hfss.hfss_extent_info.is_pml_visible = self.pml_visible
100
- self._pedb.hfss.hfss_extent_info.operating_freq = self.pml_operation_frequency
101
- self._pedb.hfss.hfss_extent_info.radiation_level = self.pml_radiation_factor
100
+ if self.pml_visible is not None:
101
+ self._pedb.hfss.hfss_extent_info.is_pml_visible = self.pml_visible
102
+ if self.pml_operation_frequency:
103
+ self._pedb.hfss.hfss_extent_info.operating_freq = self.pml_operation_frequency
104
+ if self.pml_radiation_factor:
105
+ self._pedb.hfss.hfss_extent_info.radiation_level = self.pml_radiation_factor
102
106
  self._pedb.hfss.hfss_extent_info.extent_type = self.dielectric_extents_type.name.lower()
103
107
  if self.dielectric_base_polygon:
104
108
  self._pedb.hfss.hfss_extent_info.dielectric_base_polygon = self.dielectric_base_polygon
105
- self._pedb.hfss.hfss_extent_info.dielectric_extent_size = float(self.horizontal_padding)
106
- self._pedb.hfss.hfss_extent_info.honor_user_dielectric = self.honor_primitives_on_dielectric_layers
109
+ if self.horizontal_padding:
110
+ self._pedb.hfss.hfss_extent_info.dielectric_extent_size = float(self.horizontal_padding)
111
+ if self.honor_primitives_on_dielectric_layers is not None:
112
+ self._pedb.hfss.hfss_extent_info.honor_user_dielectric = self.honor_primitives_on_dielectric_layers
107
113
  self._pedb.hfss.hfss_extent_info.extent_type = self.air_box_extents_type.name.lower()
108
- self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground = self.air_box_truncate_model_ground_layers
109
- self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent = float(self.air_box_horizontal_padding)
110
- self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent = float(
111
- self.air_box_positive_vertical_padding
112
- )
113
- self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent = float(
114
- self.air_box_negative_vertical_padding
115
- )
114
+ if self.air_box_truncate_model_ground_layers is not None:
115
+ self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground = self.air_box_truncate_model_ground_layers
116
+ if self.air_box_horizontal_padding:
117
+ self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent = float(self.air_box_horizontal_padding)
118
+ if self.air_box_positive_vertical_padding:
119
+ self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent = float(
120
+ self.air_box_positive_vertical_padding
121
+ )
122
+ if self.air_box_negative_vertical_padding:
123
+ self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent = float(
124
+ self.air_box_negative_vertical_padding
125
+ )
@@ -54,20 +54,24 @@ class Definition:
54
54
  def __init__(self, pdata, definition_dict):
55
55
  self._pedb = pdata.pedb
56
56
  self._definition_dict = definition_dict
57
- self.name = self._definition_dict.get("name", "")
58
- self.hole_diameter = self._definition_dict.get("hole_diameter", "")
59
- self.hole_plating_thickness = self._definition_dict.get("hole_plating_thickness", "")
60
- self.hole_material = self._definition_dict.get("hole_material", "")
61
- self.hole_range = self._definition_dict.get("hole_range", "")
57
+ self.name = self._definition_dict.get("name", None)
58
+ self.hole_diameter = self._definition_dict.get("hole_diameter", None)
59
+ self.hole_plating_thickness = self._definition_dict.get("hole_plating_thickness", None)
60
+ self.hole_material = self._definition_dict.get("hole_material", None)
61
+ self.hole_range = self._definition_dict.get("hole_range", None)
62
62
 
63
63
  def apply(self):
64
64
  """Apply padstack definition on layout."""
65
65
  padstack_defs = self._pedb.padstacks.definitions
66
66
  pdef = padstack_defs[self.name]
67
- pdef.hole_diameter = self.hole_diameter
68
- pdef.hole_plating_thickness = self.hole_plating_thickness
69
- pdef.material = self.hole_material
70
- pdef.hole_range = self.hole_range
67
+ if self.hole_diameter:
68
+ pdef.hole_diameter = self.hole_diameter
69
+ if self.hole_plating_thickness:
70
+ pdef.hole_plating_thickness = self.hole_plating_thickness
71
+ if self.hole_material:
72
+ pdef.material = self.hole_material
73
+ if self.hole_range:
74
+ pdef.hole_range = self.hole_range
71
75
 
72
76
 
73
77
  class Instance:
@@ -41,8 +41,8 @@ class CfgCircuitElement:
41
41
  self.neg_term_info = kwargs.get("negative_terminal", None)
42
42
 
43
43
  @pyedb_function_handler
44
- def _create(self):
45
- """Create step 1."""
44
+ def _create_terminals(self):
45
+ """Create step 1. Collect positive and negative terminals."""
46
46
  pos_term_info = self.pos_term_info
47
47
  if pos_term_info:
48
48
  pos_type, pos_value = [[i, j] for i, j in pos_term_info.items()][0]
@@ -71,16 +71,26 @@ class CfgCircuitElement:
71
71
  self.neg_terminal = None
72
72
  if neg_term_info:
73
73
  neg_type, neg_value = [[i, j] for i, j in neg_term_info.items()][0]
74
- if neg_type == "pin_group":
75
- pin_group = {neg_value: self.pedb.siwave.pin_groups[neg_value]}
74
+ if neg_type == "nearest_pin":
75
+ ref_net = neg_value.get("reference_net", "GND")
76
+ search_radius = neg_value.get("search_radius", "5e-3")
77
+ temp = dict()
78
+ for i, j in pos_objs.items():
79
+ temp[i] = self._pdata.pedb.padstacks.get_reference_pins(j, ref_net, search_radius, max_limit=1)[0]
80
+ self.neg_terminal = {
81
+ i: j.create_terminal(i + "_ref") if not j.terminal else j.terminal for i, j in temp.items()
82
+ }
76
83
  else:
77
- # Get pins
78
- pins = self._get_pins(neg_type, neg_value) # terminal type pin or net
79
- # create pin group
80
- pin_group = self._create_pin_group(pins, True)
81
- self.neg_terminal = [j.create_terminal(i) if not j.terminal else j.terminal for i, j in pin_group.items()][
82
- 0
83
- ]
84
+ if neg_type == "pin_group":
85
+ pin_group = {neg_value: self.pedb.siwave.pin_groups[neg_value]}
86
+ else:
87
+ # Get pins
88
+ pins = self._get_pins(neg_type, neg_value) # terminal type pin or net
89
+ # create pin group
90
+ pin_group = self._create_pin_group(pins, True)
91
+ self.neg_terminal = [
92
+ j.create_terminal(i) if not j.terminal else j.terminal for i, j in pin_group.items()
93
+ ][0]
84
94
 
85
95
  @pyedb_function_handler
86
96
  def _get_pins(self, terminal_type, terminal_value):
@@ -125,11 +135,14 @@ class CfgPort(CfgCircuitElement):
125
135
  @pyedb_function_handler
126
136
  def create(self):
127
137
  """Create port."""
128
- self._create()
138
+ self._create_terminals()
129
139
  is_circuit_port = True if self.type == "circuit" else False
130
140
  circuit_elements = []
131
- for _, j in self.pos_terminals.items():
132
- elem = self.pedb.create_port(j, self.neg_terminal, is_circuit_port)
141
+ for name, j in self.pos_terminals.items():
142
+ if isinstance(self.neg_terminal, dict):
143
+ elem = self.pedb.create_port(j, self.neg_terminal[name], is_circuit_port)
144
+ else:
145
+ elem = self.pedb.create_port(j, self.neg_terminal, is_circuit_port)
133
146
  if not self.distributed:
134
147
  elem.name = self.name
135
148
  circuit_elements.append(elem)
@@ -148,12 +161,15 @@ class CfgSources(CfgCircuitElement):
148
161
  @pyedb_function_handler
149
162
  def create(self):
150
163
  """Create sources."""
151
- self._create()
164
+ self._create_terminals()
152
165
  is_circuit_port = True if self.type == "circuit" else False
153
166
  circuit_elements = []
154
167
  method = self.pedb.create_current_source if self.type == "current" else self.pedb.create_voltage_source
155
- for _, j in self.pos_terminals.items():
156
- elem = method(j, self.neg_terminal)
168
+ for name, j in self.pos_terminals.items():
169
+ if isinstance(self.neg_terminal, dict):
170
+ elem = method(j, self.neg_terminal[name])
171
+ else:
172
+ elem = method(j, self.neg_terminal)
157
173
  if not self.distributed:
158
174
  elem.name = self.name
159
175
  elem.magnitude = self.magnitude
@@ -3702,12 +3702,10 @@ class Edb(Database):
3702
3702
  self.logger.error("Setup name already used in the layout")
3703
3703
  return False
3704
3704
  version = self.edbversion.split(".")
3705
- if int(version[0]) == 2024 and int(version[-1]) >= 2 or int(version[0]) > 2024:
3706
- setup = HFSSPISimulationSetup(self).create(name)
3707
- return setup
3708
- else:
3705
+ if float(self.edbversion) < 2024.2:
3709
3706
  self.logger.error("HFSSPI simulation only supported with Ansys release 2024R2 and higher")
3710
3707
  return False
3708
+ return HFSSPISimulationSetup(self).create(name)
3711
3709
 
3712
3710
  @pyedb_function_handler()
3713
3711
  def create_siwave_syz_setup(self, name=None):
@@ -977,19 +977,18 @@ class ViaSettings(object):
977
977
  -------
978
978
  bool
979
979
  """
980
- if self._parent._pedb.version[0] >= 10:
981
- return self._via_settings.ViaMeshPlating
982
- else:
980
+ if float(self._parent._pedb.edbversion) < 2024.1:
983
981
  self._parent._pedb.logger.error("Property only supported on Ansys release 2024R1 and later")
984
982
  return False
983
+ return self._via_settings.ViaMeshPlating
985
984
 
986
985
  @via_mesh_plating.setter
987
986
  def via_mesh_plating(self, value):
988
- if self._parent._pedb.version[0] >= 10:
987
+ if float(self._parent._pedb.edbversion) < 2024.1:
988
+ self._parent._pedb.logger.error("Property only supported on Ansys release 2024R1 and later")
989
+ else:
989
990
  self._via_settings.ViaMeshPlating = value
990
991
  self._parent._update_setup()
991
- else:
992
- self._parent._pedb.logger.error("Property only supported on Ansys release 2024R1 and later")
993
992
 
994
993
  @property
995
994
  def via_material(self):
@@ -1183,7 +1183,7 @@ class EDBPadstackInstance(EDBPrimitivesMain):
1183
1183
  -------
1184
1184
  :class:`pyedb.dotnet.edb_core.edb_data.terminals`
1185
1185
  """
1186
-
1186
+ warnings.warn("Use new property :func:`terminal` instead.", DeprecationWarning)
1187
1187
  if create_new_terminal:
1188
1188
  term = self._create_terminal(name)
1189
1189
  else:
@@ -1195,6 +1195,14 @@ class EDBPadstackInstance(EDBPrimitivesMain):
1195
1195
  if not term.is_null:
1196
1196
  return term
1197
1197
 
1198
+ @property
1199
+ def terminal(self):
1200
+ """Terminal."""
1201
+ from pyedb.dotnet.edb_core.edb_data.terminals import PadstackInstanceTerminal
1202
+
1203
+ term = PadstackInstanceTerminal(self._pedb, self._edb_object.GetPadstackInstanceTerminal())
1204
+ return term if not term.is_null else None
1205
+
1198
1206
  @pyedb_function_handler()
1199
1207
  def _create_terminal(self, name=None):
1200
1208
  """Create a padstack instance terminal"""
@@ -1259,6 +1259,7 @@ class EdbSiwave(object):
1259
1259
  )
1260
1260
 
1261
1261
  if edb_pingroup.IsNull(): # pragma: no cover
1262
+ self._logger.error(f"Failed to create pin group {group_name}.")
1262
1263
  return False
1263
1264
  else:
1264
1265
  names = [i for i in pins if i.GetNet().GetName()]
@@ -36,6 +36,7 @@ class BaseSimulationSetup(object):
36
36
  EDB object.
37
37
  """
38
38
 
39
+ @pyedb_function_handler
39
40
  def __init__(self, pedb, edb_setup=None):
40
41
  self._pedb = pedb
41
42
  self._edb_object = edb_setup
@@ -59,7 +60,7 @@ class BaseSimulationSetup(object):
59
60
  }
60
61
 
61
62
  version = self._pedb.edbversion.split(".")
62
- if int(version[0]) == 2024 and int(version[1]) == 2 or int(version[0]) > 2024:
63
+ if float(self._pedb.edbversion) >= 2024.2:
63
64
  self._setup_type_mapping.update(
64
65
  {
65
66
  "kRaptorX": self._pedb.simsetupdata.RaptorX.RaptorXSimulationSettings,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes