pyedb 0.54.0__tar.gz → 0.56.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 (312) hide show
  1. {pyedb-0.54.0 → pyedb-0.56.0}/PKG-INFO +1 -2
  2. {pyedb-0.54.0 → pyedb-0.56.0}/pyproject.toml +1 -2
  3. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/__init__.py +1 -8
  4. pyedb-0.56.0/src/pyedb/configuration/cfg_boundaries.py +105 -0
  5. pyedb-0.56.0/src/pyedb/configuration/cfg_components.py +269 -0
  6. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/configuration/cfg_data.py +4 -2
  7. pyedb-0.56.0/src/pyedb/configuration/cfg_general.py +50 -0
  8. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/configuration/cfg_modeler.py +2 -1
  9. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/configuration/cfg_nets.py +21 -35
  10. pyedb-0.56.0/src/pyedb/configuration/cfg_operations.py +51 -0
  11. pyedb-0.56.0/src/pyedb/configuration/cfg_package_definition.py +129 -0
  12. pyedb-0.56.0/src/pyedb/configuration/cfg_padstacks.py +398 -0
  13. pyedb-0.56.0/src/pyedb/configuration/cfg_pin_groups.py +98 -0
  14. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/configuration/cfg_ports_sources.py +19 -6
  15. pyedb-0.56.0/src/pyedb/configuration/cfg_s_parameter_models.py +116 -0
  16. pyedb-0.56.0/src/pyedb/configuration/cfg_setup.py +230 -0
  17. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/configuration/configuration.py +64 -5
  18. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/Variables.py +26 -19
  19. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/connectable.py +38 -9
  20. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/hierarchy/component.py +28 -28
  21. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/hierarchy/model.py +1 -1
  22. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/layout.py +63 -2
  23. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/layout_obj.py +2 -2
  24. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/primitive/path.py +6 -8
  25. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/primitive/primitive.py +3 -24
  26. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/terminal/edge_terminal.py +2 -2
  27. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/terminal/padstack_instance_terminal.py +1 -1
  28. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/terminal/pingroup_terminal.py +1 -1
  29. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/terminal/point_terminal.py +1 -1
  30. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/terminal/terminal.py +24 -24
  31. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/voltage_regulator.py +0 -21
  32. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/components.py +137 -124
  33. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/definition/component_def.py +4 -4
  34. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/definition/component_model.py +1 -1
  35. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/definition/package_def.py +2 -3
  36. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/dotnet/database.py +3 -199
  37. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/dotnet/primitive.py +3 -3
  38. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/edb_data/control_file.py +5 -5
  39. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/edb_data/hfss_extent_info.py +6 -6
  40. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/edb_data/layer_data.py +23 -23
  41. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/edb_data/padstacks_data.py +63 -88
  42. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/edb_data/primitives_data.py +5 -5
  43. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/edb_data/sources.py +6 -6
  44. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/edb_data/variables.py +1 -1
  45. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/geometry/point_data.py +14 -10
  46. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/geometry/polygon_data.py +3 -3
  47. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/hfss.py +46 -48
  48. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/layout_validation.py +14 -11
  49. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/materials.py +10 -11
  50. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/modeler.py +97 -91
  51. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/nets.py +19 -22
  52. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/padstack.py +171 -83
  53. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/siwave.py +42 -42
  54. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/stackup.py +140 -72
  55. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/utilities/heatsink.py +4 -4
  56. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/utilities/obj_base.py +2 -2
  57. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/utilities/simulation_setup.py +2 -2
  58. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/utilities/value.py +16 -16
  59. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/edb.py +230 -152
  60. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/edb_logger.py +12 -27
  61. pyedb-0.56.0/src/pyedb/extensions/create_cell_array.py +394 -0
  62. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/extensions/via_design_backend.py +6 -3
  63. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/generic/data_handlers.py +6 -7
  64. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/generic/design_types.py +81 -30
  65. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/generic/filesystem.py +5 -2
  66. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/generic/general_methods.py +2 -122
  67. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/generic/process.py +44 -108
  68. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/generic/settings.py +79 -19
  69. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/components.py +26 -4
  70. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/control_file.py +5 -5
  71. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/definition/materials.py +1 -1
  72. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/definition/package_def.py +3 -3
  73. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/definition/padstack_def.py +53 -0
  74. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/geometry/polygon_data.py +1 -1
  75. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/layout/layout.py +81 -5
  76. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/layout_validation.py +5 -5
  77. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/modeler.py +24 -16
  78. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/net/net.py +15 -14
  79. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/nets.py +70 -0
  80. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/padstacks.py +122 -17
  81. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/primitive/padstack_instance.py +175 -7
  82. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/primitive/polygon.py +2 -2
  83. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/siwave_cpa_simulation_setup.py +3 -2
  84. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/siwave.py +1 -1
  85. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/source_excitations.py +12 -5
  86. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/stackup.py +1 -1
  87. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/terminal/bundle_terminal.py +1 -1
  88. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/terminal/padstack_instance_terminal.py +1 -1
  89. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/terminal/pingroup_terminal.py +1 -1
  90. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/utility/value.py +1 -0
  91. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/utility/xml_control_file.py +5 -5
  92. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/edb.py +80 -30
  93. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/edb_init.py +3 -3
  94. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/rpc_session.py +14 -13
  95. pyedb-0.56.0/src/pyedb/libraries/common.py +366 -0
  96. pyedb-0.56.0/src/pyedb/libraries/rf_libraries/base_functions.py +1358 -0
  97. pyedb-0.56.0/src/pyedb/libraries/rf_libraries/planar_antennas.py +628 -0
  98. pyedb-0.56.0/src/pyedb/misc/decorators.py +61 -0
  99. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/misc.py +0 -13
  100. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/modeler/geometry_operators.py +6 -6
  101. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/siwave.py +6 -8
  102. pyedb-0.56.0/src/pyedb/siwave_core/__init__.py +0 -0
  103. pyedb-0.56.0/src/pyedb/siwave_core/cpa/__init__.py +0 -0
  104. pyedb-0.54.0/src/pyedb/configuration/cfg_boundaries.py +0 -187
  105. pyedb-0.54.0/src/pyedb/configuration/cfg_components.py +0 -528
  106. pyedb-0.54.0/src/pyedb/configuration/cfg_general.py +0 -73
  107. pyedb-0.54.0/src/pyedb/configuration/cfg_operations.py +0 -180
  108. pyedb-0.54.0/src/pyedb/configuration/cfg_package_definition.py +0 -185
  109. pyedb-0.54.0/src/pyedb/configuration/cfg_padstacks.py +0 -794
  110. pyedb-0.54.0/src/pyedb/configuration/cfg_pin_groups.py +0 -145
  111. pyedb-0.54.0/src/pyedb/configuration/cfg_s_parameter_models.py +0 -221
  112. pyedb-0.54.0/src/pyedb/configuration/cfg_setup.py +0 -423
  113. {pyedb-0.54.0 → pyedb-0.56.0}/LICENSE +0 -0
  114. {pyedb-0.54.0 → pyedb-0.56.0}/README.md +0 -0
  115. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/common/__init__.py +0 -0
  116. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/common/nets.py +0 -0
  117. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/component_libraries/ansys_components.py +0 -0
  118. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/configuration/__init__.py +0 -0
  119. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/configuration/cfg_common.py +0 -0
  120. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/configuration/cfg_spice_models.py +0 -0
  121. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/configuration/cfg_stackup.py +0 -0
  122. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/__init__.py +0 -0
  123. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/clr_module.py +0 -0
  124. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/__init__.py +0 -0
  125. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/__init__.py +0 -0
  126. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/hierarchy/__init__.py +0 -0
  127. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/hierarchy/hierarchy_obj.py +0 -0
  128. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/hierarchy/netlist_model.py +0 -0
  129. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/hierarchy/pin_pair_model.py +0 -0
  130. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/hierarchy/s_parameter_model.py +0 -0
  131. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/hierarchy/spice_model.py +0 -0
  132. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/primitive/__init__.py +0 -0
  133. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/primitive/bondwire.py +0 -0
  134. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/terminal/__init__.py +0 -0
  135. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/cell/terminal/bundle_terminal.py +0 -0
  136. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/definition/__init__.py +0 -0
  137. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/definition/definition_obj.py +0 -0
  138. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/definition/definitions.py +0 -0
  139. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/dotnet/__init__.py +0 -0
  140. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/edb_data/__init__.py +0 -0
  141. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/edb_data/design_options.py +0 -0
  142. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/edb_data/edbvalue.py +0 -0
  143. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/edb_data/nets_data.py +0 -0
  144. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/edb_data/ports.py +0 -0
  145. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/edb_data/raptor_x_simulation_setup_data.py +0 -0
  146. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/edb_data/simulation_configuration.py +0 -0
  147. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/edb_data/utilities.py +0 -0
  148. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/general.py +0 -0
  149. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/geometry/__init__.py +0 -0
  150. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/layout_obj_instance.py +0 -0
  151. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/net_class.py +0 -0
  152. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/sim_setup_data/__init__.py +0 -0
  153. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/sim_setup_data/data/__init__.py +0 -0
  154. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/sim_setup_data/data/adaptive_frequency_data.py +0 -0
  155. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/sim_setup_data/data/mesh_operation.py +0 -0
  156. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/sim_setup_data/data/settings.py +0 -0
  157. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/sim_setup_data/data/sim_setup_info.py +0 -0
  158. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/sim_setup_data/data/simulation_settings.py +0 -0
  159. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/sim_setup_data/data/siw_dc_ir_settings.py +0 -0
  160. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/sim_setup_data/data/sweep_data.py +0 -0
  161. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/sim_setup_data/io/__init__.py +0 -0
  162. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/sim_setup_data/io/siwave.py +0 -0
  163. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/utilities/__init__.py +0 -0
  164. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/utilities/hfss_simulation_setup.py +0 -0
  165. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/utilities/siwave_cpa_simulation_setup.py +0 -0
  166. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/dotnet/database/utilities/siwave_simulation_setup.py +0 -0
  167. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/exceptions.py +0 -0
  168. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/extensions/__init__.py +0 -0
  169. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/generic/__init__.py +0 -0
  170. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/generic/constants.py +0 -0
  171. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/generic/grpc_warnings.py +0 -0
  172. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/generic/plot.py +0 -0
  173. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/__init__.py +0 -0
  174. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/__init__.py +0 -0
  175. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/definition/__init__.py +0 -0
  176. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/definition/component_def.py +0 -0
  177. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/definition/component_model.py +0 -0
  178. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/definition/component_pin.py +0 -0
  179. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/definition/n_port_component_model.py +0 -0
  180. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/definitions.py +0 -0
  181. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/general.py +0 -0
  182. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/geometry/__init__.py +0 -0
  183. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/geometry/arc_data.py +0 -0
  184. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/geometry/point_3d_data.py +0 -0
  185. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/geometry/point_data.py +0 -0
  186. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/hfss.py +0 -0
  187. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/hierarchy/__init__.py +0 -0
  188. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/hierarchy/component.py +0 -0
  189. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/hierarchy/model.py +0 -0
  190. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/hierarchy/netlist_model.py +0 -0
  191. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/hierarchy/pin_pair_model.py +0 -0
  192. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/hierarchy/pingroup.py +0 -0
  193. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/hierarchy/s_parameter_model.py +0 -0
  194. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/hierarchy/spice_model.py +0 -0
  195. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/layers/__init__.py +0 -0
  196. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/layers/layer.py +0 -0
  197. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/layers/stackup_layer.py +0 -0
  198. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/layout/__init__.py +0 -0
  199. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/layout/cell.py +0 -0
  200. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/layout/voltage_regulator.py +0 -0
  201. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/net/__init__.py +0 -0
  202. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/net/differential_pair.py +0 -0
  203. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/net/extended_net.py +0 -0
  204. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/net/net_class.py +0 -0
  205. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/ports/__init__.py +0 -0
  206. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/ports/ports.py +0 -0
  207. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/primitive/__init__.py +0 -0
  208. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/primitive/bondwire.py +0 -0
  209. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/primitive/circle.py +0 -0
  210. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/primitive/path.py +0 -0
  211. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/primitive/primitive.py +0 -0
  212. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/primitive/rectangle.py +0 -0
  213. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/__init__.py +0 -0
  214. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/adaptive_frequency.py +0 -0
  215. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_meshing_settings.py +0 -0
  216. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_settings.py +0 -0
  217. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/hfss_dcr_settings.py +0 -0
  218. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/hfss_general_settings.py +0 -0
  219. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/hfss_settings_options.py +0 -0
  220. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_settings.py +0 -0
  221. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +0 -0
  222. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/hfss_solver_settings.py +0 -0
  223. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/mesh_operation.py +0 -0
  224. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_advanced_settings.py +0 -0
  225. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_general_settings.py +0 -0
  226. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_settings.py +0 -0
  227. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_setup.py +0 -0
  228. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/siwave_dcir_simulation_setup.py +0 -0
  229. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +0 -0
  230. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/simulation_setup/sweep_data.py +0 -0
  231. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/terminal/__init__.py +0 -0
  232. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/terminal/edge_terminal.py +0 -0
  233. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/terminal/point_terminal.py +0 -0
  234. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/terminal/terminal.py +0 -0
  235. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/utility/__init__.py +0 -0
  236. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/utility/constants.py +0 -0
  237. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/utility/heat_sink.py +0 -0
  238. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/utility/hfss_extent_info.py +0 -0
  239. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/utility/layout_statistics.py +0 -0
  240. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/utility/rlc.py +0 -0
  241. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/utility/sources.py +0 -0
  242. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/grpc/database/utility/sweep_data_distribution.py +0 -0
  243. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/__init__.py +0 -0
  244. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/bom/__init__.py +0 -0
  245. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/bom/bom.py +0 -0
  246. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/bom/bom_item.py +0 -0
  247. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/bom/characteristics.py +0 -0
  248. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/bom/refdes.py +0 -0
  249. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/content/__init__.py +0 -0
  250. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/content/color.py +0 -0
  251. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/content/content.py +0 -0
  252. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/content/dictionary_color.py +0 -0
  253. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/content/dictionary_fill.py +0 -0
  254. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/content/dictionary_line.py +0 -0
  255. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/content/entry_color.py +0 -0
  256. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/content/entry_line.py +0 -0
  257. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/content/fill.py +0 -0
  258. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/content/layer_ref.py +0 -0
  259. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/content/standard_geometries_dictionary.py +0 -0
  260. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/__init__.py +0 -0
  261. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/__init__.py +0 -0
  262. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +0 -0
  263. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/cad_data.py +0 -0
  264. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/component.py +0 -0
  265. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/drill.py +0 -0
  266. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/feature.py +0 -0
  267. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/layer.py +0 -0
  268. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/layer_feature.py +0 -0
  269. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/logical_net.py +0 -0
  270. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/outline.py +0 -0
  271. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/package.py +0 -0
  272. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_def.py +0 -0
  273. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +0 -0
  274. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_instance.py +0 -0
  275. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +0 -0
  276. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/path.py +0 -0
  277. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/phy_net.py +0 -0
  278. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/pin.py +0 -0
  279. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/polygon.py +0 -0
  280. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/profile.py +0 -0
  281. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/stackup.py +0 -0
  282. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_group.py +0 -0
  283. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_layer.py +0 -0
  284. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_data/step.py +0 -0
  285. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/cad_header.py +0 -0
  286. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/ecad.py +0 -0
  287. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ecad/spec.py +0 -0
  288. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/history_record.py +0 -0
  289. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/ipc2581.py +0 -0
  290. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/ipc2581/logistic_header.py +0 -0
  291. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/__init__.py +0 -0
  292. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/aedtlib_personalib_install.py +0 -0
  293. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/downloads.py +0 -0
  294. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/pyedb.runtimeconfig.json +0 -0
  295. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/siw_feature_config/__init__.py +0 -0
  296. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/siw_feature_config/emc/__init__.py +0 -0
  297. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/siw_feature_config/emc/component_tags.py +0 -0
  298. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/siw_feature_config/emc/net_tags.py +0 -0
  299. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/siw_feature_config/emc/tag_library.py +0 -0
  300. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/siw_feature_config/emc/xml_generic.py +0 -0
  301. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +0 -0
  302. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/fd_xtalk_scan_config.py +0 -0
  303. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/impedance_scan_config.py +0 -0
  304. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/net.py +0 -0
  305. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/pins.py +0 -0
  306. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py +0 -0
  307. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py +0 -0
  308. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/misc/utilities.py +0 -0
  309. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/siwave_core/cpa/simulation_setup_data_model.py +0 -0
  310. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/siwave_core/icepak.py +0 -0
  311. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/siwave_core/product_properties.py +0 -0
  312. {pyedb-0.54.0 → pyedb-0.56.0}/src/pyedb/workflow.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyedb
3
- Version: 0.54.0
3
+ Version: 0.56.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>
@@ -28,7 +28,6 @@ Requires-Dist: toml == 0.10.2
28
28
  Requires-Dist: shapely
29
29
  Requires-Dist: scikit-rf
30
30
  Requires-Dist: ansys-edb-core>=0.2.0
31
- Requires-Dist: ansys-api-edb>=0.2.0
32
31
  Requires-Dist: psutil
33
32
  Requires-Dist: ansys-sphinx-theme>=1.0.0,<1.5 ; extra == "doc"
34
33
  Requires-Dist: imageio>=2.30.0,<2.38 ; extra == "doc"
@@ -37,9 +37,8 @@ dependencies = [
37
37
  "shapely",
38
38
  "scikit-rf",
39
39
  "ansys-edb-core>=0.2.0",
40
- "ansys-api-edb>=0.2.0",
41
40
  "psutil",
42
- ]
41
+ ]
43
42
 
44
43
  [project.optional-dependencies]
45
44
  tests = [
@@ -3,13 +3,6 @@ import os
3
3
  import sys
4
4
  import warnings
5
5
 
6
- # if os.name == "nt":
7
- # os.environ["PYTHONMALLOC"] = "malloc"
8
-
9
- # By default we use pyedb legacy implementation
10
- if "PYEDB_USE_DOTNET" not in os.environ:
11
- os.environ["PYEDB_USE_DOTNET"] = "0"
12
-
13
6
  LATEST_DEPRECATED_PYTHON_VERSION = (3, 7)
14
7
 
15
8
 
@@ -44,7 +37,7 @@ deprecation_warning()
44
37
  #
45
38
 
46
39
  pyedb_path = os.path.dirname(__file__)
47
- __version__ = "0.54.0"
40
+ __version__ = "0.56.0"
48
41
  version = __version__
49
42
 
50
43
  #
@@ -0,0 +1,105 @@
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
+
25
+
26
+ class CfgBoundaries(CfgBase):
27
+ def __init__(self, pedb, boundary_data):
28
+ self._pedb = pedb
29
+ self.boundary_data = boundary_data
30
+
31
+ self.open_region = self.boundary_data.get("open_region", None)
32
+ self.open_region_type = self.boundary_data.get("map_open_region_type", None)
33
+ self.pml_visible = self.boundary_data.get("pml_visible", None)
34
+ self.pml_operation_frequency = self.boundary_data.get("pml_operation_frequency", None)
35
+ self.pml_radiation_factor = self.boundary_data.get("pml_radiation_factor", None)
36
+ self.dielectric_extent_type = self.boundary_data.get("dielectric_extent_type", None)
37
+ self.horizontal_padding = self.boundary_data.get("horizontal_padding", None)
38
+ self.honor_primitives_on_dielectric_layers = self.boundary_data.get(
39
+ "honor_primitives_on_dielectric_layers", False
40
+ )
41
+ self.air_box_extent_type = self.boundary_data.get("air_box_extent_type", None)
42
+ self.air_box_base_polygon = self.boundary_data.get("air_box_base_polygon", None)
43
+ self.air_box_truncate_model_ground_layers = self.boundary_data.get("air_box_truncate_model_ground_layers", None)
44
+ self.air_box_horizontal_padding = self.boundary_data.get("air_box_horizontal_padding", None)
45
+ self.air_box_positive_vertical_padding = self.boundary_data.get("air_box_positive_vertical_padding", None)
46
+ self.air_box_negative_vertical_padding = self.boundary_data.get("air_box_negative_vertical_padding", None)
47
+
48
+ def get_parameters_from_edb(self):
49
+ self.open_region = self._pedb.hfss.hfss_extent_info.use_open_region
50
+ self.open_region_type = self._pedb.hfss.hfss_extent_info.open_region_type
51
+ self.pml_visible = self._pedb.hfss.hfss_extent_info.is_pml_visible
52
+ self.pml_operation_frequency = self._pedb.hfss.hfss_extent_info.operating_freq.tostring
53
+ self.pml_radiation_factor = self._pedb.hfss.hfss_extent_info.radiation_level.tostring
54
+ self.dielectric_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
55
+ self.horizontal_padding = self._pedb.hfss.hfss_extent_info.dielectric_extent_size
56
+ self.honor_primitives_on_dielectric_layers = self._pedb.hfss.hfss_extent_info.honor_user_dielectric
57
+ self.air_box_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
58
+ self.air_box_truncate_model_ground_layers = self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground
59
+ self.air_box_horizontal_padding = self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent
60
+ self.air_box_positive_vertical_padding = self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent
61
+ self.air_box_negative_vertical_padding = self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent
62
+ return self.get_attributes(exclude="boundary_data")
63
+
64
+ def set_parameters_to_edb(self):
65
+ """Imports boundary information from JSON."""
66
+ if self.open_region is not None:
67
+ self._pedb.hfss.hfss_extent_info.use_open_region = self.open_region
68
+ if self.open_region_type:
69
+ self._pedb.hfss.hfss_extent_info.open_region_type = self.open_region_type.lower()
70
+ if self.pml_visible is not None:
71
+ self._pedb.hfss.hfss_extent_info.is_pml_visible = self.pml_visible
72
+ if self.pml_operation_frequency:
73
+ self._pedb.hfss.hfss_extent_info.operating_freq = self.pml_operation_frequency
74
+ if self.pml_radiation_factor:
75
+ if self._pedb.grpc:
76
+ self._pedb.hfss.hfss_extent_info.pml_radiation_factor = self.pml_radiation_factor
77
+ else:
78
+ self._pedb.hfss.hfss_extent_info.radiation_level = self.pml_radiation_factor
79
+ if self.dielectric_extent_type:
80
+ self._pedb.hfss.hfss_extent_info.extent_type = self.dielectric_extent_type.lower()
81
+ if self.horizontal_padding:
82
+ self._pedb.hfss.hfss_extent_info.dielectric_extent_size = float(self.horizontal_padding)
83
+ if self.honor_primitives_on_dielectric_layers is not None:
84
+ self._pedb.hfss.hfss_extent_info.honor_user_dielectric = self.honor_primitives_on_dielectric_layers
85
+ if self.air_box_extent_type:
86
+ self._pedb.hfss.hfss_extent_info.extent_type = self.air_box_extent_type.lower()
87
+ if self.air_box_truncate_model_ground_layers is not None:
88
+ self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground = self.air_box_truncate_model_ground_layers
89
+ if self.air_box_horizontal_padding:
90
+ self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent = float(self.air_box_horizontal_padding)
91
+ if self.air_box_positive_vertical_padding:
92
+ self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent = float(
93
+ self.air_box_positive_vertical_padding
94
+ )
95
+ if self.air_box_negative_vertical_padding:
96
+ self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent = float(
97
+ self.air_box_negative_vertical_padding
98
+ )
99
+
100
+ def apply(self):
101
+ """Imports boundary information from JSON."""
102
+ self.set_parameters_to_edb()
103
+
104
+ def get_data_from_db(self):
105
+ return self.get_parameters_from_edb()
@@ -0,0 +1,269 @@
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.database.general import pascal_to_snake, snake_to_pascal
25
+
26
+
27
+ class CfgComponent(CfgBase):
28
+ def retrieve_model_properties_from_edb(self):
29
+ c_p = self.pyedb_obj.component_property
30
+ model = c_p.GetModel().Clone()
31
+
32
+ if model.GetModelType().ToString() == "NetlistModel":
33
+ self.netlist_model["netlist"] = model.GetNetlist()
34
+ elif model.GetModelType().ToString() == "PinPairModel":
35
+ temp = {}
36
+ for i in model.PinPairs:
37
+ temp["first_pin"] = i.FirstPin
38
+ temp["second_pin"] = i.SecondPin
39
+ rlc = model.GetPinPairRlc(i)
40
+ temp["is_parallel"] = rlc.IsParallel
41
+ temp["resistance"] = rlc.R.ToString()
42
+ temp["resistance_enabled"] = rlc.REnabled
43
+ temp["inductance"] = rlc.L.ToString()
44
+ temp["inductance_enabled"] = rlc.LEnabled
45
+ temp["capacitance"] = rlc.C.ToString()
46
+ temp["capacitance_enabled"] = rlc.CEnabled
47
+ self.pin_pair_model.append(temp)
48
+ elif model.GetModelType().ToString() == "SParameterModel":
49
+ self.s_parameter_model["reference_net"] = model.GetReferenceNet()
50
+ self.s_parameter_model["model_name"] = model.GetComponentModelName()
51
+ elif model.GetModelType().ToString() == "SPICEModel":
52
+ self.spice_model["model_name"] = model.GetModelName()
53
+ self.spice_model["model_path"] = model.GetModelPath()
54
+ self.spice_model["sub_circuit"] = model.GetSubCkt()
55
+ self.spice_model["terminal_pairs"] = [[i, j] for i, j in dict(model.GetTerminalPinPairs()).items()]
56
+
57
+ def _set_ic_die_properties_to_edb(self):
58
+ cp = self.pyedb_obj.component_property
59
+ ic_die_prop = cp.GetDieProperty().Clone()
60
+ die_type = self.ic_die_properties.get("type")
61
+ ic_die_prop.SetType(getattr(self._pedb._edb.Definition.DieType, snake_to_pascal(die_type)))
62
+ if not die_type == "no_die":
63
+ orientation = self.ic_die_properties.get("orientation")
64
+ if orientation:
65
+ ic_die_prop.SetOrientation(
66
+ getattr(self._pedb._edb.Definition.DieOrientation, snake_to_pascal(orientation))
67
+ )
68
+ if die_type == "wire_bond":
69
+ height = self.ic_die_properties.get("height")
70
+ if height:
71
+ ic_die_prop.SetHeight(self._pedb.edb_value(height))
72
+ cp.SetDieProperty(ic_die_prop)
73
+ self.pyedb_obj.component_property = cp
74
+
75
+ def _set_port_properties_to_edb(self):
76
+ cp = self.pyedb_obj.component_property
77
+ port_prop = cp.GetPortProperty().Clone()
78
+ height = self.port_properties.get("reference_height")
79
+ if height:
80
+ port_prop.SetReferenceHeight(self._pedb.edb_value(height))
81
+ reference_size_auto = self.port_properties.get("reference_size_auto")
82
+ if reference_size_auto is not None:
83
+ port_prop.SetReferenceSizeAuto(reference_size_auto)
84
+ reference_size_x = self.port_properties.get("reference_size_x", 0)
85
+ reference_size_y = self.port_properties.get("reference_size_y", 0)
86
+ port_prop.SetReferenceSize(self._pedb.edb_value(reference_size_x), self._pedb.edb_value(reference_size_y))
87
+ cp.SetPortProperty(port_prop)
88
+ self.pyedb_obj.component_property = cp
89
+
90
+ def _set_model_properties_to_edb(self):
91
+ c_p = self.pyedb_obj.component_property
92
+ if self.netlist_model:
93
+ m = self._pedb._edb.Cell.Hierarchy.SParameterModel()
94
+ m.SetNetlist(self.netlist_model["netlist"])
95
+ c_p.SetModel(m)
96
+ self.component_property = c_p
97
+ elif self.pin_pair_model:
98
+ m = self._pedb._edb.Cell.Hierarchy.PinPairModel()
99
+ for i in self.pin_pair_model:
100
+ p = self._pedb._edb.Utility.PinPair(str(i["first_pin"]), str(i["second_pin"]))
101
+ rlc = self._pedb._edb.Utility.Rlc(
102
+ self._pedb.edb_value(i["resistance"]),
103
+ i["resistance_enabled"],
104
+ self._pedb.edb_value(i["inductance"]),
105
+ i["inductance_enabled"],
106
+ self._pedb.edb_value(i["capacitance"]),
107
+ i["capacitance_enabled"],
108
+ i["is_parallel"],
109
+ )
110
+ m.SetPinPairRlc(p, rlc)
111
+ c_p.SetModel(m)
112
+ self.pyedb_obj.component_property = c_p
113
+ elif self.s_parameter_model:
114
+ m = self._pedb._edb.Cell.Hierarchy.SParameterModel()
115
+ m.SetComponentModelName(self.s_parameter_model["model_name"])
116
+ m.SetReferenceNet(self.s_parameter_model["reference_net"])
117
+ c_p.SetModel(m)
118
+ self.component_property = c_p
119
+ elif self.spice_model:
120
+ self.pyedb_obj.assign_spice_model(
121
+ self.spice_model["model_path"],
122
+ self.spice_model["model_name"],
123
+ self.spice_model["sub_circuit"],
124
+ self.spice_model["terminal_pairs"],
125
+ )
126
+
127
+ def _set_solder_ball_properties_to_edb(self):
128
+ cp = self.pyedb_obj.component_property
129
+ solder_ball_prop = cp.GetSolderBallProperty().Clone()
130
+ shape = self.solder_ball_properties.get("shape")
131
+ if shape:
132
+ solder_ball_prop.SetShape(getattr(self._pedb._edb.Definition.SolderballShape, snake_to_pascal(shape)))
133
+ else:
134
+ return
135
+
136
+ if shape == "cylinder":
137
+ diameter = self.solder_ball_properties["diameter"]
138
+ solder_ball_prop.SetDiameter(self._pedb.edb_value(diameter), self._pedb.edb_value(diameter))
139
+ elif shape == "spheroid":
140
+ diameter = self.solder_ball_properties["diameter"]
141
+ mid_diameter = self.solder_ball_properties["mid_diameter"]
142
+ solder_ball_prop.SetDiameter(self._pedb.edb_value(diameter), self._pedb.edb_value(mid_diameter))
143
+ else:
144
+ raise ValueError("Solderball shape must be either cylinder or spheroid")
145
+ solder_ball_prop.SetHeight(self._pedb.edb_value(self.solder_ball_properties["height"]))
146
+ solder_ball_prop.SetMaterialName(self.solder_ball_properties.get("material", "solder"))
147
+ cp.SetSolderBallProperty(solder_ball_prop)
148
+ self.pyedb_obj.component_property = cp
149
+
150
+ def _retrieve_ic_die_properties_from_edb(self):
151
+ temp = dict()
152
+ cp = self.pyedb_obj.component_property
153
+
154
+ ic_die_prop = cp.GetDieProperty().Clone()
155
+ die_type = pascal_to_snake(ic_die_prop.GetType().ToString())
156
+ temp["type"] = die_type
157
+ if not die_type == "no_die":
158
+ temp["orientation"] = pascal_to_snake(ic_die_prop.GetOrientation().ToString())
159
+ if die_type == "wire_bond":
160
+ temp["height"] = ic_die_prop.GetHeightValue().ToString()
161
+ self.ic_die_properties = temp
162
+
163
+ def _retrieve_solder_ball_properties_from_edb(self):
164
+ temp = dict()
165
+ cp = self.pyedb_obj.component_property
166
+ solder_ball_prop = cp.GetSolderBallProperty().Clone()
167
+ _, diam, mid_diam = solder_ball_prop.GetDiameterValue()
168
+ height = solder_ball_prop.GetHeightValue().ToString()
169
+ shape = solder_ball_prop.GetShape().ToString()
170
+ material = solder_ball_prop.GetMaterialName()
171
+ uses_solder_ball = solder_ball_prop.UsesSolderball()
172
+
173
+ temp["uses_solder_ball"] = uses_solder_ball
174
+ temp["shape"] = pascal_to_snake(shape)
175
+ temp["diameter"] = diam.ToString()
176
+ temp["mid_diameter"] = mid_diam.ToString()
177
+ temp["height"] = height
178
+ temp["material"] = material
179
+ self.solder_ball_properties = temp
180
+
181
+ def _retrieve_port_properties_from_edb(self):
182
+ temp = dict()
183
+ cp = self.pyedb_obj.component_property
184
+ c_type = self.type.lower()
185
+ if c_type not in ["ic", "io", "other"]:
186
+ return
187
+ else:
188
+ port_prop = cp.GetPortProperty().Clone()
189
+ reference_height = port_prop.GetReferenceHeightValue().ToString()
190
+ reference_size_auto = port_prop.GetReferenceSizeAuto()
191
+ _, reference_size_x, reference_size_y = port_prop.GetReferenceSize()
192
+ temp["reference_height"] = reference_height
193
+ temp["reference_size_auto"] = reference_size_auto
194
+ temp["reference_size_x"] = str(reference_size_x)
195
+ temp["reference_size_y"] = str(reference_size_y)
196
+ self.port_properties = temp
197
+
198
+ def set_parameters_to_edb(self):
199
+ if self.type:
200
+ self.pyedb_obj.type = self.type
201
+ if self.enabled is not None:
202
+ self.pyedb_obj.enabled = self.enabled
203
+
204
+ self._set_model_properties_to_edb()
205
+ if self.pyedb_obj.type.lower() == "ic":
206
+ self._set_ic_die_properties_to_edb()
207
+ self._set_port_properties_to_edb()
208
+ self._set_solder_ball_properties_to_edb()
209
+ elif self.pyedb_obj.type.lower() in ["io", "other"]:
210
+ self._set_solder_ball_properties_to_edb()
211
+ self._set_port_properties_to_edb()
212
+
213
+ def retrieve_parameters_from_edb(self):
214
+ self.type = self.pyedb_obj.type
215
+ self.definition = self.pyedb_obj.part_name
216
+ self.reference_designator = self.pyedb_obj.name
217
+ self.retrieve_model_properties_from_edb()
218
+ if self.pyedb_obj.type.lower() == "ic":
219
+ self._retrieve_ic_die_properties_from_edb()
220
+ self._retrieve_port_properties_from_edb()
221
+ self._retrieve_solder_ball_properties_from_edb()
222
+ elif self.pyedb_obj.type.lower() in ["io", "other"]:
223
+ self._retrieve_solder_ball_properties_from_edb()
224
+ self._retrieve_port_properties_from_edb()
225
+
226
+ def __init__(self, _pedb, pedb_object, **kwargs):
227
+ self._pedb = _pedb
228
+ self.pyedb_obj = pedb_object
229
+
230
+ self.enabled = kwargs.get("enabled", None)
231
+ self.reference_designator = kwargs.get("reference_designator", None)
232
+ self.definition = kwargs.get("definition", None)
233
+ self.type = kwargs["part_type"].lower() if kwargs.get("part_type") else None
234
+ self.placement_layer = kwargs.get("placement_layer", None)
235
+ self.pins = kwargs.get("pins", [])
236
+
237
+ self.port_properties = kwargs.get("port_properties", {})
238
+ self.solder_ball_properties = kwargs.get("solder_ball_properties", {})
239
+ self.ic_die_properties = kwargs.get("ic_die_properties", {"type": "no_die"})
240
+ self.pin_pair_model = kwargs.get("pin_pair_model", [])
241
+ self.spice_model = kwargs.get("spice_model", {})
242
+ self.s_parameter_model = kwargs.get("s_parameter_model", {})
243
+ self.netlist_model = kwargs.get("netlist_model", {})
244
+
245
+
246
+ class CfgComponents:
247
+ def __init__(self, pedb, components_data):
248
+ self._pedb = pedb
249
+ self.components = []
250
+
251
+ if components_data:
252
+ for comp in components_data:
253
+ obj = self._pedb.components.instances[comp["reference_designator"]]
254
+ self.components.append(CfgComponent(self._pedb, obj, **comp))
255
+
256
+ def clean(self):
257
+ self.components = []
258
+
259
+ def apply(self):
260
+ for comp in self.components:
261
+ comp.set_parameters_to_edb()
262
+
263
+ def retrieve_parameters_from_edb(self):
264
+ self.clean()
265
+ comps_in_db = self._pedb.components
266
+ for _, comp in comps_in_db.instances.items():
267
+ cfg_comp = CfgComponent(self._pedb, comp)
268
+ cfg_comp.retrieve_parameters_from_edb()
269
+ self.components.append(cfg_comp)
@@ -48,7 +48,9 @@ class CfgData(object):
48
48
  self.boundaries = CfgBoundaries(self._pedb, kwargs.get("boundaries", {}))
49
49
 
50
50
  self.nets = CfgNets(
51
- self, kwargs.get("nets", {}).get("signal_nets", []), kwargs.get("nets", {}).get("power_ground_nets", [])
51
+ self._pedb,
52
+ kwargs.get("nets", {}).get("signal_nets", []),
53
+ kwargs.get("nets", {}).get("power_ground_nets", []),
52
54
  )
53
55
 
54
56
  self.components = CfgComponents(self._pedb, components_data=kwargs.get("components", []))
@@ -73,7 +75,7 @@ class CfgData(object):
73
75
  ]
74
76
 
75
77
  self.package_definitions = CfgPackageDefinitions(self._pedb, data=kwargs.get("package_definitions", []))
76
- self.operations = CfgOperations(self._pedb, data=kwargs.get("operations", {}))
78
+ self.operations = CfgOperations(**kwargs.get("operations", {}))
77
79
 
78
80
  self.modeler = CfgModeler(self._pedb, data=kwargs.get("modeler", {}))
79
81
 
@@ -0,0 +1,50 @@
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
+ class CfgGeneral:
25
+ """Manage configuration general settings."""
26
+
27
+ def set_parameters_to_edb(self):
28
+ if self.anti_pads_always_on is not None:
29
+ self.pedb.design_options.anti_pads_always_on = self.anti_pads_always_on
30
+ if self.suppress_pads is not None:
31
+ self.pedb.design_options.suppress_pads = self.suppress_pads
32
+
33
+ def get_parameters_from_edb(self):
34
+ anti_pads_always_on = self.pedb.design_options.antipads_always_on
35
+ suppress_pads = self.pedb.design_options.suppress_pads
36
+ data = {"anti_pads_always_on": anti_pads_always_on, "suppress_pads": suppress_pads}
37
+ return data
38
+
39
+ def __init__(self, pedb, data):
40
+ self.pedb = pedb
41
+ self.spice_model_library = data.get("spice_model_library", "")
42
+ self.s_parameter_library = data.get("s_parameter_library", "")
43
+ self.anti_pads_always_on = data.get("anti_pads_always_on", None)
44
+ self.suppress_pads = data.get("suppress_pads", None)
45
+
46
+ def apply(self):
47
+ self.set_parameters_to_edb()
48
+
49
+ def get_data_from_db(self):
50
+ return self.get_parameters_from_edb()
@@ -19,7 +19,7 @@
19
19
  # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  # SOFTWARE.
22
-
22
+ from copy import deepcopy as copy
23
23
  from dataclasses import dataclass, field
24
24
  from typing import Any, Dict, List, Optional, TypedDict, Union
25
25
 
@@ -92,6 +92,7 @@ class CfgModeler:
92
92
  self.add_trace(**trace_data)
93
93
 
94
94
  for plane_data in data.get("planes", []):
95
+ plane_data = copy(plane_data)
95
96
  shape = plane_data.pop("type")
96
97
  if shape == "rectangle":
97
98
  self.add_rectangular_plane(**plane_data)
@@ -24,39 +24,25 @@
24
24
  class CfgNets:
25
25
  """Manage configuration net class."""
26
26
 
27
- class Grpc:
28
- def __init__(self, parent):
29
- self.parent = parent
30
- self._pedb = parent._pedb
31
-
32
- def set_parameter_to_edb(self):
33
- for signal_net in self.parent.signal_nets:
34
- if signal_net in self._pedb.nets:
35
- self._pedb.nets.nets[signal_net].is_power_ground = False
36
- for power_net in self.parent.power_nets:
37
- if power_net in self._pedb.nets:
38
- self._pedb.nets.nets[power_net].is_power_ground = True
39
-
40
- def get_parameter_from_edb(self):
41
- """Get net information."""
42
- for net in self._pedb.nets.signal:
43
- self.parent.signal_nets.append(net)
44
- for net in self._pedb.nets.power:
45
- self.parent.power_nets.append(net)
46
- data = {"signal_nets": self.parent.signal_nets, "power_ground_nets": self.parent.power_nets}
47
- return data
48
-
49
- class DotNet(Grpc):
50
- def __init__(self, parent):
51
- self.parent = parent
52
- super().__init__(parent)
53
-
54
- def __init__(self, pdata, signal_nets=None, power_nets=None):
55
- self._pedb = pdata._pedb
56
- if self._pedb.grpc:
57
- self.api = self.Grpc(self)
58
- else:
59
- self.api = self.DotNet(self)
27
+ def set_parameter_to_edb(self):
28
+ for signal_net in self.signal_nets:
29
+ if signal_net in self._pedb.nets:
30
+ self._pedb.nets.nets[signal_net].is_power_ground = False
31
+ for power_net in self.power_nets:
32
+ if power_net in self._pedb.nets:
33
+ self._pedb.nets.nets[power_net].is_power_ground = True
34
+
35
+ def get_parameter_from_edb(self):
36
+ """Get net information."""
37
+ for net in self._pedb.nets.signal:
38
+ self.signal_nets.append(net)
39
+ for net in self._pedb.nets.power:
40
+ self.power_nets.append(net)
41
+ data = {"signal_nets": self.signal_nets, "power_ground_nets": self.power_nets}
42
+ return data
43
+
44
+ def __init__(self, pedb, signal_nets=None, power_nets=None):
45
+ self._pedb = pedb
60
46
  self.signal_nets = []
61
47
  self.power_nets = []
62
48
  if signal_nets:
@@ -66,8 +52,8 @@ class CfgNets:
66
52
 
67
53
  def apply(self):
68
54
  """Apply net on layout."""
69
- self.api.set_parameter_to_edb()
55
+ self.set_parameter_to_edb()
70
56
 
71
57
  def get_data_from_db(self):
72
58
  """Get net information."""
73
- return self.api.get_parameter_from_edb()
59
+ return self.get_parameter_from_edb()
@@ -0,0 +1,51 @@
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 typing import Any, Dict, List, Optional, Union
24
+
25
+ from pydantic import BaseModel, Field
26
+
27
+ # from pyedb.configuration.cfg_common import CfgBase
28
+
29
+
30
+ class CfgCutout(BaseModel):
31
+ auto_identify_nets: Optional[Dict] = {
32
+ "enabled": False,
33
+ "resistor_below": 100,
34
+ "inductor_below": 1,
35
+ "capacitor_above": 1,
36
+ }
37
+ signal_list: Optional[List[str]] = None
38
+ reference_list: Optional[List[str]] = None
39
+ extent_type: Optional[str] = "ConvexHull"
40
+ expansion_size: Optional[Union[float, str]] = 0.002
41
+ number_of_threads: Optional[int] = 1
42
+ custom_extent: Optional[Any] = None
43
+ custom_extent_units: str = Field(default="meter")
44
+ expansion_factor: Optional[float] = 0
45
+
46
+
47
+ class CfgOperations(BaseModel):
48
+ cutout: Optional[CfgCutout] = None
49
+
50
+ def add_cutout(self, **kwargs):
51
+ self.cutout = CfgCutout(**kwargs)