pyedb 0.12.1__tar.gz → 0.13.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.
Files changed (160) hide show
  1. {pyedb-0.12.1 → pyedb-0.13.0}/PKG-INFO +2 -2
  2. {pyedb-0.12.1 → pyedb-0.13.0}/pyproject.toml +1 -1
  3. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/__init__.py +1 -1
  4. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/configuration/cfg_boundaries.py +1 -1
  5. pyedb-0.13.0/src/pyedb/configuration/cfg_common.py +48 -0
  6. pyedb-0.13.0/src/pyedb/configuration/cfg_components.py +133 -0
  7. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/configuration/cfg_data.py +12 -7
  8. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/configuration/cfg_general.py +1 -1
  9. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/configuration/cfg_nets.py +1 -1
  10. pyedb-0.13.0/src/pyedb/configuration/cfg_operations.py +63 -0
  11. pyedb-0.13.0/src/pyedb/configuration/cfg_package_definition.py +128 -0
  12. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/configuration/cfg_padstacks.py +3 -3
  13. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/configuration/cfg_pin_groups.py +1 -1
  14. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/configuration/cfg_ports_sources.py +4 -4
  15. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/configuration/cfg_s_parameter_models.py +1 -1
  16. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/configuration/cfg_setup.py +1 -1
  17. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/configuration/cfg_spice_models.py +1 -1
  18. pyedb-0.13.0/src/pyedb/configuration/cfg_stackup.py +169 -0
  19. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/configuration/configuration.py +46 -19
  20. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb.py +167 -7
  21. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/cell/hierarchy/model.py +1 -1
  22. pyedb-0.12.1/src/pyedb/dotnet/edb_core/edb_data/connectable.py → pyedb-0.13.0/src/pyedb/dotnet/edb_core/cell/layout_obj.py +1 -1
  23. pyedb-0.13.0/src/pyedb/dotnet/edb_core/cell/primitive.py +142 -0
  24. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/components.py +1 -1
  25. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/definition/component_def.py +1 -1
  26. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/definition/component_model.py +1 -1
  27. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/definition/definition_obj.py +1 -1
  28. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/definition/package_def.py +2 -1
  29. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/components_data.py +19 -7
  30. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/padstacks_data.py +3 -3
  31. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/primitives_data.py +5 -126
  32. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/terminals.py +2 -2
  33. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/geometry/polygon_data.py +1 -1
  34. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/materials.py +2 -1
  35. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/padstack.py +86 -27
  36. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/generic/general_methods.py +33 -0
  37. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/siwave.py +23 -2
  38. pyedb-0.12.1/src/pyedb/configuration/cfg_components.py +0 -205
  39. {pyedb-0.12.1 → pyedb-0.13.0}/LICENSE +0 -0
  40. {pyedb-0.12.1 → pyedb-0.13.0}/README.md +0 -0
  41. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/configuration/__init__.py +0 -0
  42. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/__init__.py +0 -0
  43. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/application/Variables.py +0 -0
  44. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/application/__init__.py +0 -0
  45. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/clr_module.py +0 -0
  46. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/__init__.py +0 -0
  47. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/cell/__init__.py +0 -0
  48. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/cell/hierarchy/__init__.py +0 -0
  49. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/definition/__init__.py +0 -0
  50. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/definition/definitions.py +0 -0
  51. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/dotnet/__init__.py +0 -0
  52. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/dotnet/database.py +0 -0
  53. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/dotnet/layout.py +0 -0
  54. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/dotnet/primitive.py +0 -0
  55. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/__init__.py +0 -0
  56. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/control_file.py +0 -0
  57. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/design_options.py +0 -0
  58. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/edbvalue.py +0 -0
  59. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py +0 -0
  60. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/hfss_pi_simulation_setup_data.py +0 -0
  61. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/hfss_simulation_setup_data.py +0 -0
  62. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/layer_data.py +0 -0
  63. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/nets_data.py +0 -0
  64. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/ports.py +0 -0
  65. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py +0 -0
  66. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/simulation_configuration.py +0 -0
  67. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/siwave_simulation_setup_data.py +0 -0
  68. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/sources.py +0 -0
  69. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/utilities.py +0 -0
  70. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/edb_data/variables.py +0 -0
  71. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/general.py +0 -0
  72. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/geometry/__init__.py +0 -0
  73. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/geometry/point_data.py +0 -0
  74. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/hfss.py +0 -0
  75. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/layout.py +0 -0
  76. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/layout_validation.py +0 -0
  77. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/net_class.py +0 -0
  78. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/nets.py +0 -0
  79. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/sim_setup_data/__init__.py +0 -0
  80. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/sim_setup_data/data/__init__.py +0 -0
  81. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/sim_setup_data/data/siw_dc_ir_settings.py +0 -0
  82. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/siwave.py +0 -0
  83. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/stackup.py +0 -0
  84. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/utilities/__init__.py +0 -0
  85. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/utilities/heatsink.py +0 -0
  86. {pyedb-0.12.1/src/pyedb/dotnet/edb_core → pyedb-0.13.0/src/pyedb/dotnet/edb_core/utilities}/obj_base.py +0 -0
  87. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/dotnet/edb_core/utilities/simulation_setup.py +0 -0
  88. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/edb_logger.py +0 -0
  89. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/exceptions.py +0 -0
  90. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/generic/__init__.py +0 -0
  91. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/generic/constants.py +0 -0
  92. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/generic/data_handlers.py +0 -0
  93. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/generic/design_types.py +0 -0
  94. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/generic/filesystem.py +0 -0
  95. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/generic/plot.py +0 -0
  96. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/generic/process.py +0 -0
  97. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/generic/settings.py +0 -0
  98. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/__init__.py +0 -0
  99. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/bom/__init__.py +0 -0
  100. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/bom/bom.py +0 -0
  101. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/bom/bom_item.py +0 -0
  102. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/bom/characteristics.py +0 -0
  103. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/bom/refdes.py +0 -0
  104. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/content/__init__.py +0 -0
  105. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/content/color.py +0 -0
  106. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/content/content.py +0 -0
  107. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/content/dictionary_color.py +0 -0
  108. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/content/dictionary_fill.py +0 -0
  109. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/content/dictionary_line.py +0 -0
  110. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/content/entry_color.py +0 -0
  111. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/content/entry_line.py +0 -0
  112. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/content/fill.py +0 -0
  113. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/content/layer_ref.py +0 -0
  114. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/content/standard_geometries_dictionary.py +0 -0
  115. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/__init__.py +0 -0
  116. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/__init__.py +0 -0
  117. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +0 -0
  118. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/cad_data.py +0 -0
  119. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/component.py +0 -0
  120. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/drill.py +0 -0
  121. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/feature.py +0 -0
  122. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/layer.py +0 -0
  123. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/layer_feature.py +0 -0
  124. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/logical_net.py +0 -0
  125. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/outline.py +0 -0
  126. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/package.py +0 -0
  127. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_def.py +0 -0
  128. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +0 -0
  129. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_instance.py +0 -0
  130. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +0 -0
  131. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/path.py +0 -0
  132. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/phy_net.py +0 -0
  133. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/pin.py +0 -0
  134. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/polygon.py +0 -0
  135. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/profile.py +0 -0
  136. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/stackup.py +0 -0
  137. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_group.py +0 -0
  138. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_layer.py +0 -0
  139. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_data/step.py +0 -0
  140. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/cad_header.py +0 -0
  141. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/ecad.py +0 -0
  142. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ecad/spec.py +0 -0
  143. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/history_record.py +0 -0
  144. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/ipc2581.py +0 -0
  145. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/ipc2581/logistic_header.py +0 -0
  146. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/misc/__init__.py +0 -0
  147. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/misc/aedtlib_personalib_install.py +0 -0
  148. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/misc/downloads.py +0 -0
  149. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/misc/misc.py +0 -0
  150. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/misc/pyedb.runtimeconfig.json +0 -0
  151. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/misc/siw_feature_config/__init__.py +0 -0
  152. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/misc/siw_feature_config/emc/__init__.py +0 -0
  153. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/misc/siw_feature_config/emc/component_tags.py +0 -0
  154. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/misc/siw_feature_config/emc/net_tags.py +0 -0
  155. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/misc/siw_feature_config/emc/tag_library.py +0 -0
  156. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/misc/siw_feature_config/emc/xml_generic.py +0 -0
  157. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +0 -0
  158. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/misc/utilities.py +0 -0
  159. {pyedb-0.12.1 → pyedb-0.13.0}/src/pyedb/modeler/geometry_operators.py +0 -0
  160. {pyedb-0.12.1 → pyedb-0.13.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.12.1
3
+ Version: 0.13.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>
@@ -24,7 +24,7 @@ Requires-Dist: toml == 0.10.2
24
24
  Requires-Dist: Rtree >= 1.2.0
25
25
  Requires-Dist: ansys-sphinx-theme>=0.10.0,<0.17 ; extra == "doc"
26
26
  Requires-Dist: imageio>=2.30.0,<2.35 ; extra == "doc"
27
- Requires-Dist: ipython>=8.13.0,<8.25 ; extra == "doc"
27
+ Requires-Dist: ipython>=8.13.0,<8.26 ; extra == "doc"
28
28
  Requires-Dist: jupyterlab>=4.0.0,<4.3 ; extra == "doc"
29
29
  Requires-Dist: matplotlib>=3.5.0,<3.10 ; extra == "doc"
30
30
  Requires-Dist: nbsphinx>=0.9.0,<0.10 ; extra == "doc"
@@ -47,7 +47,7 @@ tests = [
47
47
  doc = [
48
48
  "ansys-sphinx-theme>=0.10.0,<0.17",
49
49
  "imageio>=2.30.0,<2.35",
50
- "ipython>=8.13.0,<8.25",
50
+ "ipython>=8.13.0,<8.26",
51
51
  "jupyterlab>=4.0.0,<4.3",
52
52
  "matplotlib>=3.5.0,<3.10",
53
53
  "nbsphinx>=0.9.0,<0.10",
@@ -44,7 +44,7 @@ deprecation_warning()
44
44
  #
45
45
 
46
46
  pyedb_path = os.path.dirname(__file__)
47
- __version__ = "0.12.1"
47
+ __version__ = "0.13.0"
48
48
  version = __version__
49
49
 
50
50
  #
@@ -25,7 +25,7 @@ from enum import Enum
25
25
 
26
26
  class CfgBoundaries:
27
27
  def __init__(self, pdata, boundaries_dict):
28
- self._pedb = pdata.pedb
28
+ self._pedb = pdata._pedb
29
29
  self._boundaries_dict = boundaries_dict
30
30
  self.open_region = self._boundaries_dict.get("open_region", None)
31
31
  self._map_open_region_type()
@@ -0,0 +1,48 @@
1
+ # Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
2
+ # SPDX-License-Identifier: MIT
3
+ #
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
23
+
24
+ from pyedb.generic.general_methods import pyedb_function_handler
25
+
26
+
27
+ class CfgBase:
28
+ @property
29
+ def protected_attributes(self):
30
+ return []
31
+
32
+ @pyedb_function_handler
33
+ def get_attributes(self, exclude=None):
34
+ attrs = {i: j for i, j in self.__dict__.items() if i not in self.protected_attributes}
35
+ if exclude is not None:
36
+ exclude = exclude if isinstance(exclude, list) else [exclude]
37
+ attrs = {i: j for i, j in attrs.items() if i not in exclude}
38
+ attrs = {i: j for i, j in attrs.items() if not i.startswith("_")}
39
+ attrs = {i: j for i, j in attrs.items() if j is not None}
40
+ return attrs
41
+
42
+ @pyedb_function_handler
43
+ def set_attributes(self, pedb_object):
44
+ attrs = self.get_attributes()
45
+ for attr, value in attrs.items():
46
+ if attr not in dir(pedb_object):
47
+ raise AttributeError(f"Invalid attribute '{attr}' in '{pedb_object}'")
48
+ setattr(pedb_object, attr, value)
@@ -0,0 +1,133 @@
1
+ # Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
2
+ # SPDX-License-Identifier: MIT
3
+ #
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
23
+ from pyedb.configuration.cfg_common import CfgBase
24
+ from pyedb.generic.general_methods import pyedb_function_handler
25
+
26
+
27
+ class CfgPortProperties(CfgBase):
28
+ def __init__(self, **kwargs):
29
+ self.reference_offset = kwargs.pop("reference_offset", 0)
30
+ self.reference_size_auto = kwargs.pop("reference_size_auto", 0)
31
+ self.reference_size_x = kwargs.pop("reference_size_x", 0)
32
+ self.reference_size_y = kwargs.pop("reference_size_y", 0)
33
+
34
+
35
+ class CfgSolderBallsProperties(CfgBase):
36
+ def __init__(self, **kwargs):
37
+ self.shape = kwargs.pop("shape", None)
38
+ self.diameter = kwargs.pop("diameter", None)
39
+ self.mid_diameter = kwargs.pop("mid_diameter", None)
40
+ self.height = kwargs.pop("height", None)
41
+ self.enabled = kwargs.pop("enabled", None)
42
+
43
+
44
+ class CfgRlcModel(CfgBase):
45
+ def __init__(self, **kwargs):
46
+ self.resistance = kwargs.get("resistance", None)
47
+ self.inductance = kwargs.get("inductance", None)
48
+ self.capacitance = kwargs.get("capacitance", None)
49
+ self.type = kwargs.get("type", None)
50
+ self.p1 = kwargs.get("p1", None)
51
+ self.p2 = kwargs.get("p2", None)
52
+
53
+
54
+ class CfgComponent(CfgBase):
55
+ def __init__(self, **kwargs):
56
+ self.enabled = kwargs.get("enabled", None)
57
+
58
+ self.reference_designator = kwargs.get("reference_designator", None)
59
+ self.type = kwargs.get("part_type", None)
60
+ self.value = kwargs.get("value", None)
61
+ self.port_properties = CfgPortProperties(**kwargs["port_properties"]) if "port_properties" in kwargs else None
62
+ self.solder_ball_properties = (
63
+ CfgSolderBallsProperties(**kwargs["solder_ball_properties"]) if "solder_ball_properties" in kwargs else None
64
+ )
65
+ rlc_models = kwargs.get("rlc_model", [])
66
+
67
+ self.rlc_model = [CfgRlcModel(**rlc_m) for rlc_m in rlc_models]
68
+
69
+ @property
70
+ def protected_attributes(self):
71
+ return ["reference_designator"]
72
+
73
+
74
+ class CfgComponents:
75
+ def __init__(self, pedb, data):
76
+ self._pedb = pedb
77
+ self.components = [CfgComponent(**comp) for comp in data]
78
+
79
+ @pyedb_function_handler
80
+ def apply(self):
81
+ comps_in_db = self._pedb.components
82
+ for comp in self.components:
83
+ c_db = comps_in_db[comp.reference_designator]
84
+
85
+ for attr, value in comp.get_attributes().items(): # All component properties
86
+ if attr == "solder_ball_properties":
87
+ solder_ball_properties = value
88
+ port_properties = comp.port_properties
89
+ self._pedb.components.set_solder_ball(
90
+ component=comp.reference_designator,
91
+ sball_diam=solder_ball_properties.diameter,
92
+ sball_mid_diam=solder_ball_properties.mid_diameter,
93
+ sball_height=solder_ball_properties.height,
94
+ shape=solder_ball_properties.shape,
95
+ auto_reference_size=port_properties.reference_size_auto,
96
+ reference_height=port_properties.reference_offset,
97
+ reference_size_x=port_properties.reference_size_x,
98
+ reference_size_y=port_properties.reference_size_y,
99
+ )
100
+ elif attr == "port_properties":
101
+ pass
102
+ elif attr == "rlc_model":
103
+ rlc_models = value
104
+ model_layout = c_db.model
105
+ for pp in model_layout.pin_pairs:
106
+ model_layout.delete_pin_pair_rlc(pp)
107
+ for pp in rlc_models:
108
+ pin_pair = self._pedb.edb_api.utility.PinPair(pp.p1, pp.p2)
109
+ rlc = self._pedb.edb_api.utility.Rlc()
110
+ rlc.IsParallel = False if pp.type else True
111
+ if pp.resistance is not None:
112
+ rlc.REnabled = True
113
+ rlc.R = self._pedb.edb_value(pp.resistance)
114
+ else:
115
+ rlc.REnabled = False
116
+ if pp.inductance is not None:
117
+ rlc.LEnabled = True
118
+ rlc.L = self._pedb.edb_value(pp.inductance)
119
+ else:
120
+ rlc.LEnabled = False
121
+
122
+ if pp.capacitance is not None:
123
+ rlc.CEnabled = True
124
+ rlc.C = self._pedb.edb_value(pp.capacitance)
125
+ else:
126
+ rlc.CEnabled = False
127
+ model_layout._set_pin_pair_rlc(pin_pair, rlc)
128
+ comps_in_db.model = model_layout
129
+ else:
130
+ if attr in dir(c_db):
131
+ setattr(c_db, attr, value)
132
+ else:
133
+ raise AttributeError(f"'{attr}' is not valid component attribute.")
@@ -20,24 +20,28 @@
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  # SOFTWARE.
22
22
 
23
+
23
24
  from pyedb.configuration.cfg_boundaries import CfgBoundaries
24
- from pyedb.configuration.cfg_components import CfgComponent
25
+ from pyedb.configuration.cfg_components import CfgComponents
25
26
  from pyedb.configuration.cfg_general import CfgGeneral
26
27
  from pyedb.configuration.cfg_nets import CfgNets
28
+ from pyedb.configuration.cfg_operations import CfgOperations
29
+ from pyedb.configuration.cfg_package_definition import CfgPackageDefinitions
27
30
  from pyedb.configuration.cfg_padstacks import CfgPadstacks
28
31
  from pyedb.configuration.cfg_pin_groups import CfgPinGroup
29
32
  from pyedb.configuration.cfg_ports_sources import CfgPort, CfgSources
30
33
  from pyedb.configuration.cfg_s_parameter_models import CfgSParameterModel
31
34
  from pyedb.configuration.cfg_setup import CfgSetup
32
35
  from pyedb.configuration.cfg_spice_models import CfgSpiceModel
36
+ from pyedb.configuration.cfg_stackup import CfgStackup
33
37
 
34
38
 
35
39
  class CfgData(object):
36
40
  """Manages configure data."""
37
41
 
38
42
  def __init__(self, pedb, **kwargs):
39
- self.pedb = pedb
40
- self.edb_comps = self.pedb.components.components
43
+ self._pedb = pedb
44
+ self.edb_comps = self._pedb.components.components
41
45
  self.general = CfgGeneral(self, kwargs.get("general", None))
42
46
 
43
47
  self.boundaries = {}
@@ -50,7 +54,8 @@ class CfgData(object):
50
54
  self, kwargs.get("nets", {}).get("signal_nets", []), kwargs.get("nets", {}).get("power_ground_nets", [])
51
55
  )
52
56
 
53
- self.components = [CfgComponent(self, **component) for component in kwargs.get("components", [])]
57
+ # self.components = [CfgComponent(self, **component) for component in kwargs.get("components", [])]
58
+ self.components = CfgComponents(self._pedb, data=kwargs.get("components", []))
54
59
 
55
60
  self.padstacks = CfgPadstacks(self, kwargs.get("padstacks", None))
56
61
 
@@ -64,7 +69,7 @@ class CfgData(object):
64
69
  if kwargs.get("setups", None):
65
70
  self.setups = [CfgSetup(self, setup) for setup in kwargs.get("setups", [])]
66
71
 
67
- self.stackup = None
72
+ self.stackup = CfgStackup(self._pedb, data=kwargs.get("stackup", {}))
68
73
 
69
74
  self.s_parameters = [
70
75
  CfgSParameterModel(self, self.general.s_parameter_library, sparam_model)
@@ -76,5 +81,5 @@ class CfgData(object):
76
81
  for spice_model in kwargs.get("spice_models", [])
77
82
  ]
78
83
 
79
- self.package_definition = None
80
- self.operations = None
84
+ self.package_definitions = CfgPackageDefinitions(self._pedb, data=kwargs.get("package_definitions", []))
85
+ self.operations = CfgOperations(self._pedb, data=kwargs.get("operations", []))
@@ -25,7 +25,7 @@ class CfgGeneral:
25
25
  """Manage configuration general settings."""
26
26
 
27
27
  def __init__(self, pdata, general_dict):
28
- self._pedb = pdata.pedb
28
+ self._pedb = pdata._pedb
29
29
  self.spice_model_library = ""
30
30
  self.s_parameter_library = ""
31
31
  if general_dict:
@@ -25,7 +25,7 @@ class CfgNets:
25
25
  """Manage configuration net class."""
26
26
 
27
27
  def __init__(self, pdata, signal_nets=None, power_nets=None):
28
- self._pedb = pdata.pedb
28
+ self._pedb = pdata._pedb
29
29
  self.signal_nets = []
30
30
  self.power_nets = []
31
31
  if signal_nets:
@@ -0,0 +1,63 @@
1
+ # Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
2
+ # SPDX-License-Identifier: MIT
3
+ #
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
23
+ from pyedb.configuration.cfg_common import CfgBase
24
+ from pyedb.generic.general_methods import pyedb_function_handler
25
+
26
+
27
+ class CfgCutout(CfgBase):
28
+ def __init__(self, **kwargs):
29
+ self.signal_list = kwargs.get("signal_list")
30
+ self.reference_list = kwargs.get("reference_list")
31
+ self.extent_type = kwargs.get("extent_type")
32
+ self.expansion_size = kwargs.get("expansion_size")
33
+ self.use_round_corner = kwargs.get("use_round_corner")
34
+ self.output_aedb_path = kwargs.get("output_aedb_path")
35
+ self.open_cutout_at_end = kwargs.get("open_cutout_at_end")
36
+ self.use_pyaedt_cutout = kwargs.get("use_pyaedt_cutout")
37
+ self.number_of_threads = kwargs.get("number_of_threads")
38
+ self.use_pyaedt_extent_computing = kwargs.get("use_pyaedt_extent_computing")
39
+ self.extent_defeature = kwargs.get("extent_defeature")
40
+ self.remove_single_pin_components = kwargs.get("remove_single_pin_components")
41
+ self.custom_extent = kwargs.get("custom_extent")
42
+ self.custom_extent_units = kwargs.get("custom_extent_units")
43
+ self.include_partial_instances = kwargs.get("include_partial_instances")
44
+ self.keep_voids = kwargs.get("keep_voids")
45
+ self.check_terminals = kwargs.get("check_terminals")
46
+ self.include_pingroups = kwargs.get("include_pingroups")
47
+ self.expansion_factor = kwargs.get("expansion_factor")
48
+ self.maximum_iterations = kwargs.get("maximum_iterations")
49
+ self.preserve_components_with_model = kwargs.get("preserve_components_with_model")
50
+ self.simple_pad_check = kwargs.get("simple_pad_check")
51
+ self.keep_lines_as_path = kwargs.get("keep_lines_as_path")
52
+
53
+
54
+ class CfgOperations(CfgBase):
55
+ def __init__(self, pedb, data):
56
+ self._pedb = pedb
57
+ self.op_cutout = CfgCutout(**data["cutout"]) if "cutout" in data else None
58
+
59
+ @pyedb_function_handler
60
+ def apply(self):
61
+ """Imports operation information from JSON."""
62
+ if self.op_cutout:
63
+ self._pedb.cutout(**self.op_cutout.get_attributes())
@@ -0,0 +1,128 @@
1
+ # Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
2
+ # SPDX-License-Identifier: MIT
3
+ #
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
23
+ from pyedb.configuration.cfg_common import CfgBase
24
+ from pyedb.dotnet.edb_core.definition.package_def import PackageDef
25
+ from pyedb.generic.general_methods import pyedb_function_handler
26
+
27
+
28
+ class CfgPackage(CfgBase):
29
+ """Configuration package class."""
30
+
31
+ def __init__(self, **kwargs):
32
+ self.name = kwargs.get("name", None)
33
+ self.component_definition = kwargs.get("component_definition", None)
34
+ self.maximum_power = kwargs.get("maximum_power", None)
35
+ self.therm_cond = kwargs.get("therm_cond", None)
36
+ self.theta_jb = kwargs.get("theta_jb", None)
37
+ self.theta_jc = kwargs.get("theta_jc", None)
38
+ self.height = kwargs.get("height", None)
39
+ self.apply_to_all = kwargs.get("apply_to_all", None)
40
+ self.components = kwargs.get("components", [])
41
+ self.extent_bounding_box = kwargs.get("extent_bounding_box", None)
42
+ self._heatsink = CfgHeatSink(**kwargs["heatsink"]) if "heatsink" in kwargs else None
43
+
44
+ @property
45
+ def heatsink(self):
46
+ return self._heatsink
47
+
48
+ @heatsink.setter
49
+ def heatsink(self, value):
50
+ self._heatsink = value
51
+
52
+ @property
53
+ def protected_attributes(self):
54
+ """Attributes cannot be set to package definition class or don't exist in package definition class."""
55
+ return ["apply_to_all", "components", "extent_bounding_box", "component_definition"]
56
+
57
+
58
+ class CfgHeatSink(CfgBase):
59
+ """Configuration heat sink class."""
60
+
61
+ def __init__(self, **kwargs):
62
+ self.fin_base_height = kwargs.get("fin_base_height", None)
63
+ self.fin_height = kwargs.get("fin_height", None)
64
+ self.fin_orientation = kwargs.get("fin_orientation", None)
65
+ self.fin_spacing = kwargs.get("fin_spacing", None)
66
+ self.fin_thickness = kwargs.get("fin_thickness", None)
67
+
68
+
69
+ class CfgPackageDefinitions:
70
+ def __init__(self, pedb, data):
71
+ self._pedb = pedb
72
+ self.packages = [CfgPackage(**package) for package in data]
73
+
74
+ def apply(self):
75
+ for pkg in self.packages:
76
+ comp_def_from_db = self._pedb.definitions.component[pkg.component_definition]
77
+ if pkg.name in self._pedb.definitions.package:
78
+ self._pedb.definitions.package[pkg.name].delete()
79
+
80
+ if pkg.extent_bounding_box:
81
+ package_def = PackageDef(self._pedb, name=pkg.name, extent_bounding_box=pkg.extent_bounding_box)
82
+ else:
83
+ package_def = PackageDef(self._pedb, name=pkg.name, component_part_name=pkg.component_definition)
84
+ pkg.set_attributes(package_def)
85
+
86
+ if pkg.heatsink:
87
+ attrs = pkg.heatsink.get_attributes()
88
+ for attr, value in attrs.items():
89
+ package_def.set_heatsink(**attrs)
90
+
91
+ comp_list = dict()
92
+ if pkg.apply_to_all:
93
+ comp_list.update(
94
+ {
95
+ refdes: comp
96
+ for refdes, comp in comp_def_from_db.components.items()
97
+ if refdes not in pkg.components
98
+ }
99
+ )
100
+ else:
101
+ comp_list.update(
102
+ {refdes: comp for refdes, comp in comp_def_from_db.components.items() if refdes in pkg.components}
103
+ )
104
+ for _, i in comp_list.items():
105
+ i.package_def = pkg.name
106
+
107
+ @pyedb_function_handler
108
+ def get_data_from_db(self):
109
+ package_definitions = []
110
+
111
+ for pkg_name, pkg_obj in self._pedb.definitions.package.items():
112
+ pkg = {}
113
+ pkg_attrs = [i for i in dir(pkg_obj) if not i.startswith("_")]
114
+ pkg_attrs = {i for i in pkg_attrs if i in CfgPackage().__dict__}
115
+ for pkg_attr_name in pkg_attrs:
116
+ pkg[pkg_attr_name] = getattr(pkg_obj, pkg_attr_name)
117
+
118
+ hs_obj = pkg_obj.heatsink
119
+ if hs_obj:
120
+ hs = {}
121
+ hs_attrs = [i for i in dir(hs_obj) if not i.startswith("_")]
122
+ hs_attrs = [i for i in hs_attrs if i in CfgHeatSink().__dict__]
123
+ for hs_attr_name in hs_attrs:
124
+ hs[hs_attr_name] = getattr(hs_obj, hs_attr_name)
125
+ pkg["heatsink"] = hs
126
+ package_definitions.append(pkg)
127
+
128
+ return package_definitions
@@ -28,7 +28,7 @@ class CfgPadstacks:
28
28
  """Padstack data class."""
29
29
 
30
30
  def __init__(self, pdata, padstack_dict=None):
31
- self._pedb = pdata.pedb
31
+ self._pedb = pdata._pedb
32
32
  self.definitions = []
33
33
  self.instances = []
34
34
  self._padstack_dict = padstack_dict
@@ -52,7 +52,7 @@ class Definition:
52
52
  """Padstack definition data class."""
53
53
 
54
54
  def __init__(self, pdata, definition_dict):
55
- self._pedb = pdata.pedb
55
+ self._pedb = pdata._pedb
56
56
  self._definition_dict = definition_dict
57
57
  self.name = self._definition_dict.get("name", None)
58
58
  self.hole_diameter = self._definition_dict.get("hole_diameter", None)
@@ -78,7 +78,7 @@ class Instance:
78
78
  """Instance data class."""
79
79
 
80
80
  def __init__(self, pdata, instances_dict):
81
- self._pedb = pdata.pedb
81
+ self._pedb = pdata._pedb
82
82
  self._instances_dict = instances_dict
83
83
  self.name = self._instances_dict.get("name", "")
84
84
  self.backdrill_top = None
@@ -25,7 +25,7 @@ class CfgPinGroup:
25
25
  """Manage configuration pin group class."""
26
26
 
27
27
  def __init__(self, pdata, pingroup_dict):
28
- self._pedb = pdata.pedb
28
+ self._pedb = pdata._pedb
29
29
  self._pingroup_dict = pingroup_dict
30
30
  self.name = self._pingroup_dict.get("name", "")
31
31
  self.reference_designator = self._pingroup_dict.get("reference_designator", "")
@@ -27,7 +27,7 @@ class CfgCircuitElement:
27
27
  @property
28
28
  def pedb(self):
29
29
  """Edb."""
30
- return self._pdata.pedb
30
+ return self._pdata._pedb
31
31
 
32
32
  @pyedb_function_handler
33
33
  def __init__(self, pdata, **kwargs):
@@ -76,7 +76,7 @@ class CfgCircuitElement:
76
76
  search_radius = neg_value.get("search_radius", "5e-3")
77
77
  temp = dict()
78
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]
79
+ temp[i] = self._pdata._pedb.padstacks.get_reference_pins(j, ref_net, search_radius, max_limit=1)[0]
80
80
  self.neg_terminal = {
81
81
  i: j.create_terminal(i + "_ref") if not j.terminal else j.terminal for i, j in temp.items()
82
82
  }
@@ -105,7 +105,7 @@ class CfgCircuitElement:
105
105
  pins.update(get_pin_obj(i))
106
106
  else:
107
107
  if terminal_type == "net":
108
- temp = self._pdata.pedb.components.get_pins(self.reference_designator, terminal_value[0])
108
+ temp = self._pdata._pedb.components.get_pins(self.reference_designator, terminal_value[0])
109
109
  elif terminal_type == "pin_group":
110
110
  pin_group = self.pedb.siwave.pin_groups[terminal_value[0]]
111
111
  temp = pin_group.pins
@@ -119,7 +119,7 @@ class CfgCircuitElement:
119
119
  else:
120
120
  pg_name = f"pg_{self.name}_{self.reference_designator}"
121
121
  pin_names = [i.pin_number for i in pins.values()]
122
- name, temp = self._pdata.pedb.siwave.create_pin_group(self.reference_designator, pin_names, pg_name)
122
+ name, temp = self._pdata._pedb.siwave.create_pin_group(self.reference_designator, pin_names, pg_name)
123
123
  return {name: temp}
124
124
 
125
125
 
@@ -25,7 +25,7 @@ from pathlib import Path
25
25
 
26
26
  class CfgSParameterModel:
27
27
  def __init__(self, pdata, path_lib, sparam_dict):
28
- self._pedb = pdata.pedb
28
+ self._pedb = pdata._pedb
29
29
  self.path_libraries = path_lib
30
30
  self._sparam_dict = sparam_dict
31
31
  self.name = self._sparam_dict.get("name", "")
@@ -89,7 +89,7 @@ class DcIrSettings:
89
89
 
90
90
  class CfgSetup:
91
91
  def __init__(self, pdata, setup_dict=None):
92
- self._pedb = pdata.pedb
92
+ self._pedb = pdata._pedb
93
93
  self._setup_dict = None
94
94
  self.name = "PyEDB_setup"
95
95
  self.type = self.SetupType.HFSS
@@ -25,7 +25,7 @@ from pathlib import Path
25
25
 
26
26
  class CfgSpiceModel:
27
27
  def __init__(self, pdata, path_lib, spice_dict):
28
- self._pedb = pdata.pedb
28
+ self._pedb = pdata._pedb
29
29
  self.path_libraries = path_lib
30
30
  self._spice_dict = spice_dict
31
31
  self.name = self._spice_dict.get("name", "")