pyedb 0.49.0__tar.gz → 0.50.1__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 (290) hide show
  1. {pyedb-0.49.0 → pyedb-0.50.1}/PKG-INFO +1 -1
  2. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/__init__.py +1 -1
  3. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_modeler.py +42 -11
  4. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_ports_sources.py +9 -1
  5. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/hierarchy/component.py +6 -6
  6. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/components.py +3 -3
  7. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/padstacks_data.py +13 -0
  8. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/primitives_data.py +3 -3
  9. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/variables.py +3 -3
  10. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/materials.py +16 -16
  11. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/modeler.py +38 -4
  12. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/data/settings.py +28 -0
  13. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/stackup.py +1 -0
  14. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/utilities/hfss_simulation_setup.py +5 -6
  15. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/edb.py +22 -20
  16. pyedb-0.50.1/src/pyedb/extensions/via_design_backend.py +681 -0
  17. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/components.py +537 -686
  18. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/control_file.py +458 -149
  19. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/definition/component_def.py +17 -14
  20. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/definition/materials.py +60 -60
  21. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/definition/package_def.py +8 -8
  22. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/definition/padstack_def.py +31 -33
  23. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/definitions.py +6 -4
  24. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/geometry/arc_data.py +5 -5
  25. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/geometry/point_3d_data.py +3 -3
  26. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/geometry/polygon_data.py +5 -5
  27. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/hfss.py +399 -397
  28. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/hierarchy/component.py +60 -58
  29. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/hierarchy/pin_pair_model.py +6 -6
  30. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/hierarchy/pingroup.py +13 -11
  31. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/hierarchy/s_parameter_model.py +1 -1
  32. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/hierarchy/spice_model.py +1 -1
  33. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/layers/layer.py +2 -2
  34. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/layers/stackup_layer.py +144 -44
  35. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/layout/layout.py +12 -12
  36. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/layout/voltage_regulator.py +8 -8
  37. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/layout_validation.py +5 -5
  38. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/modeler.py +248 -245
  39. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/net/differential_pair.py +4 -4
  40. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/net/extended_net.py +7 -8
  41. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/net/net.py +57 -46
  42. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/nets.py +139 -122
  43. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/padstacks.py +174 -190
  44. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/ports/ports.py +23 -17
  45. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/primitive/padstack_instance.py +45 -30
  46. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/primitive/path.py +7 -7
  47. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/primitive/polygon.py +9 -9
  48. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/primitive/primitive.py +21 -21
  49. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/primitive/rectangle.py +1 -1
  50. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_settings.py +1 -1
  51. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/hfss_general_settings.py +1 -1
  52. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/hfss_settings_options.py +1 -1
  53. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_settings.py +6 -6
  54. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +2 -2
  55. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_settings.py +2 -2
  56. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_setup.py +1 -1
  57. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +3 -3
  58. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/siwave.py +166 -214
  59. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/source_excitations.py +156 -0
  60. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/stackup.py +415 -316
  61. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/terminal/bundle_terminal.py +12 -12
  62. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/terminal/edge_terminal.py +6 -5
  63. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/terminal/padstack_instance_terminal.py +13 -13
  64. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/terminal/pingroup_terminal.py +12 -12
  65. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/terminal/point_terminal.py +6 -6
  66. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/terminal/terminal.py +26 -26
  67. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/utility/heat_sink.py +5 -5
  68. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/utility/hfss_extent_info.py +21 -21
  69. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/utility/layout_statistics.py +13 -13
  70. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/utility/rlc.py +3 -3
  71. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/utility/sources.py +1 -1
  72. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/utility/sweep_data_distribution.py +1 -1
  73. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/edb.py +524 -764
  74. pyedb-0.50.1/src/pyedb/misc/siw_feature_config/emc/__init__.py +0 -0
  75. pyedb-0.49.0/src/pyedb/extensions/pre_layout_design_toolkit/via_design.py +0 -1151
  76. pyedb-0.49.0/src/pyedb/grpc/database/utility/simulation_configuration.py +0 -3305
  77. {pyedb-0.49.0 → pyedb-0.50.1}/LICENSE +0 -0
  78. {pyedb-0.49.0 → pyedb-0.50.1}/README.md +0 -0
  79. {pyedb-0.49.0 → pyedb-0.50.1}/pyproject.toml +0 -0
  80. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/common/__init__.py +0 -0
  81. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/common/nets.py +0 -0
  82. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/component_libraries/ansys_components.py +0 -0
  83. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/__init__.py +0 -0
  84. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_boundaries.py +0 -0
  85. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_common.py +0 -0
  86. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_components.py +0 -0
  87. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_data.py +0 -0
  88. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_general.py +0 -0
  89. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_nets.py +0 -0
  90. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_operations.py +0 -0
  91. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_package_definition.py +0 -0
  92. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_padstacks.py +0 -0
  93. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_pin_groups.py +0 -0
  94. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_s_parameter_models.py +0 -0
  95. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_setup.py +0 -0
  96. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_spice_models.py +0 -0
  97. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_stackup.py +0 -0
  98. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/configuration.py +0 -0
  99. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/__init__.py +0 -0
  100. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/clr_module.py +0 -0
  101. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/Variables.py +0 -0
  102. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/__init__.py +0 -0
  103. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/__init__.py +0 -0
  104. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/connectable.py +0 -0
  105. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/hierarchy/__init__.py +0 -0
  106. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/hierarchy/hierarchy_obj.py +0 -0
  107. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/hierarchy/model.py +0 -0
  108. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/hierarchy/netlist_model.py +0 -0
  109. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/hierarchy/pin_pair_model.py +0 -0
  110. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/hierarchy/s_parameter_model.py +0 -0
  111. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/hierarchy/spice_model.py +0 -0
  112. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/layout.py +0 -0
  113. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/layout_obj.py +0 -0
  114. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/primitive/__init__.py +0 -0
  115. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/primitive/bondwire.py +0 -0
  116. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/primitive/path.py +0 -0
  117. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/primitive/primitive.py +0 -0
  118. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/terminal/__init__.py +0 -0
  119. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/terminal/bundle_terminal.py +0 -0
  120. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/terminal/edge_terminal.py +0 -0
  121. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/terminal/padstack_instance_terminal.py +0 -0
  122. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/terminal/pingroup_terminal.py +0 -0
  123. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/terminal/point_terminal.py +0 -0
  124. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/terminal/terminal.py +0 -0
  125. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/voltage_regulator.py +0 -0
  126. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/definition/__init__.py +0 -0
  127. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/definition/component_def.py +0 -0
  128. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/definition/component_model.py +0 -0
  129. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/definition/definition_obj.py +0 -0
  130. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/definition/definitions.py +0 -0
  131. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/definition/package_def.py +0 -0
  132. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/dotnet/__init__.py +0 -0
  133. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/dotnet/database.py +0 -0
  134. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/dotnet/primitive.py +0 -0
  135. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/__init__.py +0 -0
  136. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/control_file.py +0 -0
  137. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/design_options.py +0 -0
  138. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/edbvalue.py +0 -0
  139. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/hfss_extent_info.py +0 -0
  140. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/layer_data.py +0 -0
  141. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/nets_data.py +0 -0
  142. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/ports.py +0 -0
  143. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/raptor_x_simulation_setup_data.py +0 -0
  144. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/simulation_configuration.py +0 -0
  145. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/sources.py +0 -0
  146. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/utilities.py +0 -0
  147. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/general.py +0 -0
  148. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/geometry/__init__.py +0 -0
  149. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/geometry/point_data.py +0 -0
  150. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/geometry/polygon_data.py +0 -0
  151. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/hfss.py +0 -0
  152. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/layout_obj_instance.py +0 -0
  153. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/layout_validation.py +0 -0
  154. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/net_class.py +0 -0
  155. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/nets.py +0 -0
  156. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/padstack.py +0 -0
  157. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/__init__.py +0 -0
  158. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/data/__init__.py +0 -0
  159. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/data/adaptive_frequency_data.py +0 -0
  160. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/data/mesh_operation.py +0 -0
  161. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/data/sim_setup_info.py +0 -0
  162. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/data/simulation_settings.py +0 -0
  163. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/data/siw_dc_ir_settings.py +0 -0
  164. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/data/sweep_data.py +0 -0
  165. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/io/__init__.py +0 -0
  166. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/io/siwave.py +0 -0
  167. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/siwave.py +0 -0
  168. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/utilities/__init__.py +0 -0
  169. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/utilities/heatsink.py +0 -0
  170. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/utilities/obj_base.py +0 -0
  171. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/utilities/simulation_setup.py +0 -0
  172. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/utilities/siwave_simulation_setup.py +0 -0
  173. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/edb_logger.py +0 -0
  174. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/exceptions.py +0 -0
  175. {pyedb-0.49.0/src/pyedb/generic → pyedb-0.50.1/src/pyedb/extensions}/__init__.py +0 -0
  176. {pyedb-0.49.0/src/pyedb/grpc/database/definition → pyedb-0.50.1/src/pyedb/generic}/__init__.py +0 -0
  177. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/generic/constants.py +0 -0
  178. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/generic/data_handlers.py +0 -0
  179. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/generic/design_types.py +0 -0
  180. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/generic/filesystem.py +0 -0
  181. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/generic/general_methods.py +0 -0
  182. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/generic/plot.py +0 -0
  183. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/generic/process.py +0 -0
  184. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/generic/settings.py +0 -0
  185. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/__init__.py +0 -0
  186. {pyedb-0.49.0/src/pyedb/grpc/database/geometry → pyedb-0.50.1/src/pyedb/grpc/database/definition}/__init__.py +0 -0
  187. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/definition/component_model.py +0 -0
  188. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/definition/component_pin.py +0 -0
  189. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/definition/n_port_component_model.py +0 -0
  190. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/general.py +0 -0
  191. {pyedb-0.49.0/src/pyedb/grpc/database/hierarchy → pyedb-0.50.1/src/pyedb/grpc/database/geometry}/__init__.py +0 -0
  192. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/geometry/point_data.py +0 -0
  193. {pyedb-0.49.0/src/pyedb/grpc/database/layers → pyedb-0.50.1/src/pyedb/grpc/database/hierarchy}/__init__.py +0 -0
  194. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/hierarchy/model.py +0 -0
  195. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/hierarchy/netlist_model.py +0 -0
  196. {pyedb-0.49.0/src/pyedb/grpc/database/layout → pyedb-0.50.1/src/pyedb/grpc/database/layers}/__init__.py +0 -0
  197. {pyedb-0.49.0/src/pyedb/grpc/database/net → pyedb-0.50.1/src/pyedb/grpc/database/layout}/__init__.py +0 -0
  198. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/layout/cell.py +0 -0
  199. {pyedb-0.49.0/src/pyedb/grpc/database/ports → pyedb-0.50.1/src/pyedb/grpc/database/net}/__init__.py +0 -0
  200. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/net/net_class.py +0 -0
  201. {pyedb-0.49.0/src/pyedb/grpc/database/simulation_setup → pyedb-0.50.1/src/pyedb/grpc/database/ports}/__init__.py +0 -0
  202. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/primitive/__init__.py +0 -0
  203. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/primitive/bondwire.py +0 -0
  204. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/primitive/circle.py +0 -0
  205. {pyedb-0.49.0/src/pyedb/grpc/database/terminal → pyedb-0.50.1/src/pyedb/grpc/database/simulation_setup}/__init__.py +0 -0
  206. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/adaptive_frequency.py +0 -0
  207. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_meshing_settings.py +0 -0
  208. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/hfss_dcr_settings.py +0 -0
  209. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/hfss_solver_settings.py +0 -0
  210. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/mesh_operation.py +0 -0
  211. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/raptor_x_advanced_settings.py +0 -0
  212. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/raptor_x_general_settings.py +0 -0
  213. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/siwave_dcir_simulation_setup.py +0 -0
  214. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/sweep_data.py +0 -0
  215. {pyedb-0.49.0/src/pyedb/ipc2581 → pyedb-0.50.1/src/pyedb/grpc/database/terminal}/__init__.py +0 -0
  216. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/utility/__init__.py +0 -0
  217. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/utility/constants.py +0 -0
  218. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/utility/xml_control_file.py +0 -0
  219. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/edb_init.py +0 -0
  220. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/rpc_session.py +0 -0
  221. {pyedb-0.49.0/src/pyedb/ipc2581/bom → pyedb-0.50.1/src/pyedb/ipc2581}/__init__.py +0 -0
  222. {pyedb-0.49.0/src/pyedb/ipc2581/content → pyedb-0.50.1/src/pyedb/ipc2581/bom}/__init__.py +0 -0
  223. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/bom/bom.py +0 -0
  224. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/bom/bom_item.py +0 -0
  225. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/bom/characteristics.py +0 -0
  226. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/bom/refdes.py +0 -0
  227. {pyedb-0.49.0/src/pyedb/ipc2581/ecad → pyedb-0.50.1/src/pyedb/ipc2581/content}/__init__.py +0 -0
  228. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/color.py +0 -0
  229. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/content.py +0 -0
  230. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/dictionary_color.py +0 -0
  231. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/dictionary_fill.py +0 -0
  232. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/dictionary_line.py +0 -0
  233. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/entry_color.py +0 -0
  234. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/entry_line.py +0 -0
  235. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/fill.py +0 -0
  236. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/layer_ref.py +0 -0
  237. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/standard_geometries_dictionary.py +0 -0
  238. {pyedb-0.49.0/src/pyedb/ipc2581/ecad/cad_data → pyedb-0.50.1/src/pyedb/ipc2581/ecad}/__init__.py +0 -0
  239. {pyedb-0.49.0/src/pyedb/misc → pyedb-0.50.1/src/pyedb/ipc2581/ecad/cad_data}/__init__.py +0 -0
  240. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +0 -0
  241. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/cad_data.py +0 -0
  242. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/component.py +0 -0
  243. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/drill.py +0 -0
  244. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/feature.py +0 -0
  245. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/layer.py +0 -0
  246. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/layer_feature.py +0 -0
  247. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/logical_net.py +0 -0
  248. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/outline.py +0 -0
  249. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/package.py +0 -0
  250. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/padstack_def.py +0 -0
  251. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +0 -0
  252. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/padstack_instance.py +0 -0
  253. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +0 -0
  254. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/path.py +0 -0
  255. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/phy_net.py +0 -0
  256. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/pin.py +0 -0
  257. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/polygon.py +0 -0
  258. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/profile.py +0 -0
  259. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/stackup.py +0 -0
  260. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/stackup_group.py +0 -0
  261. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/stackup_layer.py +0 -0
  262. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/step.py +0 -0
  263. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_header.py +0 -0
  264. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/ecad.py +0 -0
  265. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/spec.py +0 -0
  266. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/history_record.py +0 -0
  267. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ipc2581.py +0 -0
  268. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/logistic_header.py +0 -0
  269. {pyedb-0.49.0/src/pyedb/misc/siw_feature_config → pyedb-0.50.1/src/pyedb/misc}/__init__.py +0 -0
  270. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/aedtlib_personalib_install.py +0 -0
  271. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/downloads.py +0 -0
  272. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/misc.py +0 -0
  273. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/pyedb.runtimeconfig.json +0 -0
  274. {pyedb-0.49.0/src/pyedb/misc/siw_feature_config/emc → pyedb-0.50.1/src/pyedb/misc/siw_feature_config}/__init__.py +0 -0
  275. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/emc/component_tags.py +0 -0
  276. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/emc/net_tags.py +0 -0
  277. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/emc/tag_library.py +0 -0
  278. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/emc/xml_generic.py +0 -0
  279. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +0 -0
  280. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/xtalk_scan/fd_xtalk_scan_config.py +0 -0
  281. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/xtalk_scan/impedance_scan_config.py +0 -0
  282. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/xtalk_scan/net.py +0 -0
  283. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/xtalk_scan/pins.py +0 -0
  284. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py +0 -0
  285. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py +0 -0
  286. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/utilities.py +0 -0
  287. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/modeler/geometry_operators.py +0 -0
  288. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/siwave.py +0 -0
  289. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/siwave_core/icepak.py +0 -0
  290. {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/workflow.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyedb
3
- Version: 0.49.0
3
+ Version: 0.50.1
4
4
  Summary: Higher-Level Pythonic Ansys Electronics Data Base
5
5
  Author-email: "ANSYS, Inc." <pyansys.core@ansys.com>
6
6
  Maintainer-email: PyEDB developers <simon.vandenbrouck@ansys.com>
@@ -44,7 +44,7 @@ deprecation_warning()
44
44
  #
45
45
 
46
46
  pyedb_path = os.path.dirname(__file__)
47
- __version__ = "0.49.0"
47
+ __version__ = "0.50.1"
48
48
  version = __version__
49
49
 
50
50
  #
@@ -29,13 +29,15 @@ class CfgTrace:
29
29
  def __init__(self, **kwargs):
30
30
  self.name = kwargs.get("name", "")
31
31
  self.layer = kwargs["layer"]
32
- self.path = kwargs["path"]
32
+ self.path = kwargs.get("path")
33
33
  self.width = kwargs["width"]
34
34
  self.net_name = kwargs.get("net_name", "")
35
35
  self.start_cap_style = kwargs.get("start_cap_style", "round")
36
36
  self.end_cap_style = kwargs.get("end_cap_style", "round")
37
37
  self.corner_style = kwargs.get("corner_style", "sharp")
38
38
 
39
+ self.incremental_path = kwargs.get("incremental_path")
40
+
39
41
 
40
42
  class CfgPlane:
41
43
  def __init__(self, **kwargs):
@@ -54,6 +56,10 @@ class CfgPlane:
54
56
  # polygon
55
57
  self.points = kwargs.get("points", [])
56
58
 
59
+ # circle
60
+ self.radius = kwargs.get("radius", 0)
61
+ self.position = kwargs.get("position", [0, 0])
62
+
57
63
 
58
64
  class CfgModeler:
59
65
  """Manage configuration general settings."""
@@ -153,16 +159,30 @@ class CfgModeler:
153
159
  def set_parameter_to_edb(self):
154
160
  if self.parent.traces:
155
161
  for t in self.parent.traces:
156
- obj = self._pedb.modeler.create_trace(
157
- path_list=t.path,
158
- layer_name=t.layer,
159
- net_name=t.net_name,
160
- width=t.width,
161
- start_cap_style=t.start_cap_style,
162
- end_cap_style=t.end_cap_style,
163
- corner_style=t.corner_style,
164
- )
165
- obj.aedt_name = t.name
162
+ if t.path:
163
+ obj = self._pedb.modeler.create_trace(
164
+ path_list=t.path,
165
+ layer_name=t.layer,
166
+ net_name=t.net_name,
167
+ width=t.width,
168
+ start_cap_style=t.start_cap_style,
169
+ end_cap_style=t.end_cap_style,
170
+ corner_style=t.corner_style,
171
+ )
172
+ obj.aedt_name = t.name
173
+ else:
174
+ obj = self._pedb.modeler.create_trace(
175
+ path_list=[t.incremental_path[0]],
176
+ layer_name=t.layer,
177
+ net_name=t.net_name,
178
+ width=t.width,
179
+ start_cap_style=t.start_cap_style,
180
+ end_cap_style=t.end_cap_style,
181
+ corner_style=t.corner_style,
182
+ )
183
+ obj.aedt_name = t.name
184
+ for x, y in t.incremental_path[1:]:
185
+ obj.add_point(x, y, True)
166
186
 
167
187
  if self.parent.padstack_defs:
168
188
  for p in self.parent.padstack_defs:
@@ -202,6 +222,17 @@ class CfgModeler:
202
222
  main_shape=p.points, layer_name=p.layer, net_name=p.net_name
203
223
  )
204
224
  obj.aedt_name = p.name
225
+ elif p.type == "circle":
226
+ obj = self._pedb.modeler.create_circle(
227
+ layer_name=p.layer,
228
+ net_name=p.net_name,
229
+ x=p.position[0],
230
+ y=p.position[1],
231
+ radius=p.radius,
232
+ )
233
+ obj.aedt_name = p.name
234
+ else:
235
+ raise
205
236
 
206
237
  for v in p.voids:
207
238
  for i in self._pedb.layout.primitives:
@@ -391,7 +391,11 @@ class CfgCircuitElement(CfgBase):
391
391
  pos_coor_terminal = dict()
392
392
  if self.type == "coax":
393
393
  pins = self._get_pins(pos_type, pos_value, self.positive_terminal_info.reference_designator)
394
- pins = {f"{self.name}_{self.positive_terminal_info.reference_designator}": i for _, i in pins.items()}
394
+ if len(pins) < 2:
395
+ pins = {f"{self.name}": i for _, i in pins.items()}
396
+ else:
397
+ pins = {f"{self.name}_{name}": i for name, i in pins.items()}
398
+ self.distributed = True
395
399
  pos_objs.update(pins)
396
400
  elif pos_type == "coordinates":
397
401
  layer = self.positive_terminal_info.layer
@@ -402,10 +406,14 @@ class CfgCircuitElement(CfgBase):
402
406
  pos_coor_terminal[self.name] = self._pedb.get_point_terminal(self.name, net_name, point, layer)
403
407
 
404
408
  elif pos_type == "padstack":
409
+ flag = False
405
410
  for pds in self._pedb.layout.padstack_instances:
406
411
  if pds.aedt_name == pos_value:
407
412
  pos_objs.update({pos_value: pds})
413
+ flag = True
408
414
  break
415
+ if flag is False:
416
+ raise ValueError(f"Padstack instance {pos_value} does not exist")
409
417
  elif pos_type == "pin":
410
418
  pins = {
411
419
  pos_value: self._pedb.components.instances[self.positive_terminal_info.reference_designator].pins[
@@ -308,11 +308,11 @@ class EDBComponent(Group):
308
308
  if "GetSolderBallProperty" in dir(self.component_property):
309
309
  shape = self.component_property.GetSolderBallProperty().GetShape()
310
310
  if shape.value__ == 0:
311
- return "None"
311
+ return "none"
312
312
  elif shape.value__ == 1:
313
- return "Cylinder"
313
+ return "cylinder"
314
314
  elif shape.value__ == 2:
315
- return "Spheroid"
315
+ return "spheroid"
316
316
 
317
317
  @solder_ball_shape.setter
318
318
  def solder_ball_shape(self, value):
@@ -510,7 +510,7 @@ class EDBComponent(Group):
510
510
  return "0"
511
511
  for pinpair in pinpairs:
512
512
  pair = model.GetPinPairRlc(pinpair)
513
- return pair.R.ToString()
513
+ return pair.R.ToDouble()
514
514
  return None
515
515
 
516
516
  @res_value.setter
@@ -539,7 +539,7 @@ class EDBComponent(Group):
539
539
  return "0"
540
540
  for pinpair in pinpairs:
541
541
  pair = model.GetPinPairRlc(pinpair)
542
- return pair.C.ToString()
542
+ return pair.C.ToDouble()
543
543
  return None
544
544
 
545
545
  @cap_value.setter
@@ -568,7 +568,7 @@ class EDBComponent(Group):
568
568
  return "0"
569
569
  for pinpair in pinpairs:
570
570
  pair = model.GetPinPairRlc(pinpair)
571
- return pair.L.ToString()
571
+ return pair.L.ToDouble()
572
572
  return None
573
573
 
574
574
  @ind_value.setter
@@ -2362,11 +2362,11 @@ class Components(object):
2362
2362
  part_name = comp.partname
2363
2363
  comp_type = comp.type
2364
2364
  if comp_type == "Resistor":
2365
- value = comp.res_value
2365
+ value = str(comp.res_value)
2366
2366
  elif comp_type == "Capacitor":
2367
- value = comp.cap_value
2367
+ value = str(comp.cap_value)
2368
2368
  elif comp_type == "Inductor":
2369
- value = comp.ind_value
2369
+ value = str(comp.ind_value)
2370
2370
  else:
2371
2371
  value = ""
2372
2372
  if not value:
@@ -1185,6 +1185,7 @@ class EDBPadstackInstance(Primitive):
1185
1185
  super().__init__(_pedb, edb_padstackinstance)
1186
1186
  self._edb_padstackinstance = self._edb_object
1187
1187
  self._bounding_box = []
1188
+ self._side_number = None
1188
1189
  self._object_instance = None
1189
1190
  self._position = []
1190
1191
  self._pdef = None
@@ -1929,6 +1930,18 @@ class EDBPadstackInstance(Primitive):
1929
1930
  """
1930
1931
  return int(self._edb_padstackinstance.GetGroup().GetPlacementLayer().GetTopBottomAssociation())
1931
1932
 
1933
+ @property
1934
+ def side_number(self) -> float:
1935
+ if not self._side_number:
1936
+ prop_string = "$begin ''\n\tsid=3\n\tmat='copper'\n\tvs='Wirebond'\n$end ''\n"
1937
+ self._edb_padstackinstance.SetProductProperty(self._pedb._edb.ProductId.Designer, 21, prop_string)
1938
+ self._side_number = self._edb_padstackinstance.GetProductProperty(self._pedb._edb.ProductId.Designer, 21)
1939
+ return self._side_number
1940
+
1941
+ @side_number.setter
1942
+ def side_number(self, value):
1943
+ self._side_number = self._edb_padstackinstance.GetProductProperty(self._pedb._edb.ProductId.Designer, 21, value)
1944
+
1932
1945
  def create_rectangle_in_pad(self, layer_name, return_points=False, partition_max_order=16):
1933
1946
  """Create a rectangle inscribed inside a padstack instance pad.
1934
1947
 
@@ -522,9 +522,9 @@ class EDBArcs(object):
522
522
  xt, yt = self._app._active_cell.primitive._get_points_for_plot(my_net_points, arc_segments)
523
523
  if not xt:
524
524
  return []
525
- x, y = GeometryOperators.orient_polygon(xt, yt, clockwise=True)
526
- return x, y
525
+ x, y = list(GeometryOperators.orient_polygon(xt, yt, clockwise=True))
526
+ return [x, y]
527
527
  except:
528
528
  x = []
529
529
  y = []
530
- return x, y
530
+ return [x, y]
@@ -57,7 +57,7 @@ class Variable:
57
57
  str
58
58
 
59
59
  """
60
- return self._pedb.get_variable(self.name).tostring
60
+ return self._var_server.GetVariableValue(self.name)[1].ToString()
61
61
 
62
62
  @property
63
63
  def value_object(self):
@@ -77,11 +77,11 @@ class Variable:
77
77
  -------
78
78
  float
79
79
  """
80
- return self._pedb.get_variable(self.name).tofloat
80
+ return self._var_server.GetVariableValue(self.name)[1].ToDouble()
81
81
 
82
82
  @value.setter
83
83
  def value(self, value):
84
- self._pedb.change_design_variable_value(self.name, value)
84
+ self._var_server.SetVariableValue(self.name, self._pedb.edb_value(value))
85
85
 
86
86
  @property
87
87
  def description(self):
@@ -88,22 +88,22 @@ def get_line_float_value(line):
88
88
  class MaterialProperties(BaseModel):
89
89
  """Store material properties."""
90
90
 
91
- conductivity: Optional[PositiveFloat] = None
92
- dielectric_loss_tangent: Optional[PositiveFloat] = None
93
- magnetic_loss_tangent: Optional[PositiveFloat] = None
94
- mass_density: Optional[PositiveFloat] = None
95
- permittivity: Optional[PositiveFloat] = None
96
- permeability: Optional[PositiveFloat] = None
97
- poisson_ratio: Optional[PositiveFloat] = None
98
- specific_heat: Optional[PositiveFloat] = None
99
- thermal_conductivity: Optional[PositiveFloat] = None
100
- youngs_modulus: Optional[PositiveFloat] = None
101
- thermal_expansion_coefficient: Optional[PositiveFloat] = None
102
- dc_conductivity: Optional[PositiveFloat] = None
103
- dc_permittivity: Optional[PositiveFloat] = None
104
- dielectric_model_frequency: Optional[PositiveFloat] = None
105
- loss_tangent_at_frequency: Optional[PositiveFloat] = None
106
- permittivity_at_frequency: Optional[PositiveFloat] = None
91
+ conductivity: Optional[PositiveFloat] = 0.0
92
+ dielectric_loss_tangent: Optional[PositiveFloat] = 0.0
93
+ magnetic_loss_tangent: Optional[PositiveFloat] = 0.0
94
+ mass_density: Optional[PositiveFloat] = 0.0
95
+ permittivity: Optional[PositiveFloat] = 0.0
96
+ permeability: Optional[PositiveFloat] = 0.0
97
+ poisson_ratio: Optional[PositiveFloat] = 0.0
98
+ specific_heat: Optional[PositiveFloat] = 0.0
99
+ thermal_conductivity: Optional[PositiveFloat] = 0.0
100
+ youngs_modulus: Optional[PositiveFloat] = 0.0
101
+ thermal_expansion_coefficient: Optional[PositiveFloat] = 0.0
102
+ dc_conductivity: Optional[PositiveFloat] = 0.0
103
+ dc_permittivity: Optional[PositiveFloat] = 0.0
104
+ dielectric_model_frequency: Optional[PositiveFloat] = 0.0
105
+ loss_tangent_at_frequency: Optional[PositiveFloat] = 0.0
106
+ permittivity_at_frequency: Optional[PositiveFloat] = 0.0
107
107
 
108
108
 
109
109
  class Material(object):
@@ -629,7 +629,7 @@ class Modeler(object):
629
629
 
630
630
  return primitive
631
631
 
632
- def create_polygon(self, main_shape, layer_name, voids=[], net_name=""):
632
+ def create_polygon(self, main_shape=None, layer_name="", voids=[], net_name="", points=None):
633
633
  """Create a polygon based on a list of points and voids.
634
634
 
635
635
  Parameters
@@ -646,13 +646,40 @@ class Modeler(object):
646
646
  List of shape objects for voids or points that creates the shapes. The default is``[]``.
647
647
  net_name : str, optional
648
648
  Name of the net. The default is ``""``.
649
+ points : list, optional
650
+ Added for compatibility with grpc.
649
651
 
650
652
  Returns
651
653
  -------
652
654
  bool, :class:`dotnet.database.edb_data.primitives.Primitive`
653
655
  Polygon when successful, ``False`` when failed.
654
656
  """
657
+ from pyedb.dotnet.database.geometry.polygon_data import PolygonData
658
+
659
+ if main_shape:
660
+ warnings.warn(
661
+ "main_shape argument will be deprecated soon with grpc version, use points instead.", DeprecationWarning
662
+ )
663
+
655
664
  net = self._pedb.nets.find_or_create_net(net_name)
665
+ if points:
666
+ arcs = []
667
+ if isinstance(points, PolygonData):
668
+ points = points.points
669
+ for _ in range(len(points)):
670
+ arcs.append(
671
+ self._edb.Geometry.ArcData(
672
+ self._pedb.point_data(0, 0),
673
+ self._pedb.point_data(0, 0),
674
+ )
675
+ )
676
+ polygonData = self._edb.Geometry.PolygonData.CreateFromArcs(convert_py_list_to_net_list(arcs), True)
677
+
678
+ for idx, i in enumerate(points):
679
+ pdata_0 = self._pedb.edb_value(i[0])
680
+ pdata_1 = self._pedb.edb_value(i[1])
681
+ new_points = self._edb.Geometry.PointData(pdata_0, pdata_1)
682
+ polygonData.SetPoint(idx, new_points)
656
683
  if isinstance(main_shape, list):
657
684
  arcs = []
658
685
  for _ in range(len(main_shape)):
@@ -673,9 +700,14 @@ class Modeler(object):
673
700
  elif isinstance(main_shape, Modeler.Shape):
674
701
  polygonData = self.shape_to_polygon_data(main_shape)
675
702
  else:
676
- polygonData = main_shape
677
- if not polygonData or polygonData.IsNull():
678
- raise RuntimeError("Failed to create main shape polygon data")
703
+ if not points:
704
+ polygonData = main_shape
705
+ if isinstance(polygonData, PolygonData):
706
+ if not polygonData.points:
707
+ raise RuntimeError("Failed to create main shape polygon data")
708
+ else:
709
+ if polygonData.IsNull():
710
+ raise RuntimeError("Failed to create main shape polygon data")
679
711
  for void in voids:
680
712
  if isinstance(void, list):
681
713
  void = self.Shape("polygon", points=void)
@@ -689,6 +721,8 @@ class Modeler(object):
689
721
  self._logger.error("Failed to create void polygon data")
690
722
  return False
691
723
  polygonData.AddHole(voidPolygonData)
724
+ if isinstance(polygonData, PolygonData):
725
+ polygonData = polygonData._edb_object
692
726
  polygon = self._pedb._edb.Cell.Primitive.Polygon.Create(
693
727
  self._active_layout, layer_name, net.net_obj, polygonData
694
728
  )
@@ -289,6 +289,34 @@ class AdaptiveSettings(object):
289
289
  self.adaptive_settings.AdaptiveFrequencyDataList.Add(high_freq_adapt_data)
290
290
  return self._parent._update_setup()
291
291
 
292
+ def add_multi_frequency_adaptive_setup(self, freq_list, max_num_passes=10, max_delta_s=0.02):
293
+ """Add a setup for frequency data.
294
+
295
+ Parameters
296
+ ----------
297
+ low_frequency : str, float
298
+ Frequency with units or float frequency (in Hz).
299
+ high_frequency : str, float
300
+ Frequency with units or float frequency (in Hz).
301
+ max_num_passes : int, optional
302
+ Maximum number of passes. The default is ``10``.
303
+ max_delta_s : float, optional
304
+ Maximum delta S. The default is ``0.02``.
305
+
306
+ Returns
307
+ -------
308
+ bool
309
+ ``True`` if method is successful, ``False`` otherwise.
310
+ """
311
+ self.adaptive_settings.AdaptiveFrequencyDataList.Clear()
312
+ for i in freq_list:
313
+ low_freq_adapt_data = self._parent._pedb.simsetupdata.AdaptiveFrequencyData()
314
+ low_freq_adapt_data.MaxDelta = self._parent._pedb.edb_value(max_delta_s).ToString()
315
+ low_freq_adapt_data.MaxPasses = max_num_passes
316
+ low_freq_adapt_data.AdaptiveFrequency = self._parent._pedb.edb_value(i).ToString()
317
+ self.adaptive_settings.AdaptiveFrequencyDataList.Add(low_freq_adapt_data)
318
+ return self._parent._update_setup()
319
+
292
320
 
293
321
  class DefeatureSettings(object):
294
322
  """Manages EDB methods for defeature settings."""
@@ -885,6 +885,7 @@ class Stackup(LayerCollection):
885
885
  else:
886
886
  new_layer = self._create_nonstackup_layer(layer_name, layer_type)
887
887
  self._set_layout_stackup(new_layer, "non_stackup")
888
+ return self.non_stackup_layers[layer_name]
888
889
  self.refresh_layer_collection()
889
890
  return self.layers[layer_name]
890
891
 
@@ -310,7 +310,7 @@ class HfssSimulationSetup(SimulationSetup):
310
310
  self._update_setup()
311
311
  return mesh_operation
312
312
 
313
- def set_solution_single_frequency(self, frequency="5GHz", max_num_passes=10, max_delta_s=0.02):
313
+ def set_solution_single_frequency(self, frequency="5Ghz", max_num_passes=10, max_delta_s=0.02):
314
314
  """Set single-frequency solution.
315
315
 
316
316
  Parameters
@@ -331,7 +331,7 @@ class HfssSimulationSetup(SimulationSetup):
331
331
  self.adaptive_settings.adaptive_settings.AdaptiveFrequencyDataList.Clear()
332
332
  return self.adaptive_settings.add_adaptive_frequency_data(frequency, max_num_passes, max_delta_s)
333
333
 
334
- def set_solution_multi_frequencies(self, frequencies=("5GHz", "10GHz"), max_num_passes=10, max_delta_s="0.02"):
334
+ def set_solution_multi_frequencies(self, frequencies=("5Ghz", "10Ghz"), max_num_passes=10, max_delta_s="0.02"):
335
335
  """Set multi-frequency solution.
336
336
 
337
337
  Parameters
@@ -350,13 +350,12 @@ class HfssSimulationSetup(SimulationSetup):
350
350
  """
351
351
  self.adaptive_settings.adapt_type = "kMultiFrequencies"
352
352
  self.adaptive_settings.adaptive_settings.AdaptiveFrequencyDataList.Clear()
353
- for i in frequencies:
354
- if not self.adaptive_settings.add_adaptive_frequency_data(i, max_num_passes, max_delta_s):
355
- return False
353
+ if not self.adaptive_settings.add_multi_frequency_adaptive_setup(frequencies, max_num_passes, max_delta_s):
354
+ return False
356
355
  return True
357
356
 
358
357
  def set_solution_broadband(
359
- self, low_frequency="5GHz", high_frequency="10GHz", max_num_passes=10, max_delta_s="0.02"
358
+ self, low_frequency="5Ghz", high_frequency="10Ghz", max_num_passes=10, max_delta_s="0.02"
360
359
  ):
361
360
  """Set broadband solution.
362
361
 
@@ -49,7 +49,6 @@ from pyedb.dotnet.database.components import Components
49
49
  import pyedb.dotnet.database.dotnet.database
50
50
  from pyedb.dotnet.database.dotnet.database import Database
51
51
  from pyedb.dotnet.database.edb_data.design_options import EdbDesignOptions
52
- from pyedb.dotnet.database.edb_data.edbvalue import EdbValue
53
52
  from pyedb.dotnet.database.edb_data.ports import (
54
53
  BundleWavePort,
55
54
  CircuitPort,
@@ -461,9 +460,9 @@ class Edb(Database):
461
460
  """
462
461
  all_vars = dict()
463
462
  for i, j in self.project_variables.items():
464
- all_vars[i] = j
463
+ all_vars[i] = j.value
465
464
  for i, j in self.design_variables.items():
466
- all_vars[i] = j
465
+ all_vars[i] = j.value
467
466
  return all_vars
468
467
 
469
468
  @property
@@ -3022,11 +3021,11 @@ class Edb(Database):
3022
3021
  --------
3023
3022
 
3024
3023
  >>> from pyedb import Edb
3025
- >>> edb = Edb(edbpath=r"C:\temp\myproject.aedb", edbversion="2023.2")
3024
+ >>> edb = Edb(edbpath="C:\\temp\\myproject.aedb", edbversion="2023.2")
3026
3025
 
3027
3026
  >>> options_config = {'UNITE_NETS' : 1, 'LAUNCH_Q3D' : 0}
3028
- >>> edb.write_export3d_option_config_file(r"C:\temp", options_config)
3029
- >>> edb.export_hfss(r"C:\temp")
3027
+ >>> edb.write_export3d_option_config_file(r"C:\\temp", options_config)
3028
+ >>> edb.export_hfss(r"C:\\temp")
3030
3029
  """
3031
3030
  siwave_s = SiwaveSolve(self.edbpath, aedt_installer_path=self.base_path)
3032
3031
  return siwave_s.export_3d_cad("HFSS", path_to_output, net_list, num_cores, aedt_file_name, hidden=hidden)
@@ -3065,10 +3064,10 @@ class Edb(Database):
3065
3064
  --------
3066
3065
 
3067
3066
  >>> from pyedb import Edb
3068
- >>> edb = Edb(edbpath=r"C:\temp\myproject.aedb", edbversion="2021.2")
3067
+ >>> edb = Edb(edbpath="C:\\temp\\myproject.aedb", edbversion="2021.2")
3069
3068
  >>> options_config = {'UNITE_NETS' : 1, 'LAUNCH_Q3D' : 0}
3070
- >>> edb.write_export3d_option_config_file(r"C:\temp", options_config)
3071
- >>> edb.export_q3d(r"C:\temp")
3069
+ >>> edb.write_export3d_option_config_file("C:\\temp", options_config)
3070
+ >>> edb.export_q3d("C:\\temp")
3072
3071
  """
3073
3072
 
3074
3073
  siwave_s = SiwaveSolve(self.edbpath, aedt_installer_path=self.base_path)
@@ -3116,11 +3115,11 @@ class Edb(Database):
3116
3115
 
3117
3116
  >>> from pyedb import Edb
3118
3117
 
3119
- >>> edb = Edb(edbpath=r"C:\temp\myproject.aedb", edbversion="2021.2")
3118
+ >>> edb = Edb(edbpath="C:\\temp\\myproject.aedb", edbversion="2021.2")
3120
3119
 
3121
3120
  >>> options_config = {'UNITE_NETS' : 1, 'LAUNCH_Q3D' : 0}
3122
- >>> edb.write_export3d_option_config_file(r"C:\temp", options_config)
3123
- >>> edb.export_maxwell(r"C:\temp")
3121
+ >>> edb.write_export3d_option_config_file("C:\\temp", options_config)
3122
+ >>> edb.export_maxwell("C:\\temp")
3124
3123
  """
3125
3124
  siwave_s = SiwaveSolve(self.edbpath, aedt_installer_path=self.base_path)
3126
3125
  return siwave_s.export_3d_cad(
@@ -3245,10 +3244,13 @@ class Edb(Database):
3245
3244
  -------
3246
3245
  :class:`pyedb.dotnet.database.edb_data.edbvalue.EdbValue`
3247
3246
  """
3248
- var_server = self.variable_exists(variable_name)
3249
- if var_server[0]:
3250
- tuple_value = var_server[1].GetVariableValue(variable_name)
3251
- return EdbValue(tuple_value[1])
3247
+
3248
+ for i, j in self.project_variables.items():
3249
+ if i == variable_name:
3250
+ return j
3251
+ for i, j in self.design_variables.items():
3252
+ if i == variable_name:
3253
+ return j
3252
3254
  self.logger.info("Variable %s doesn't exists.", variable_name)
3253
3255
  return None
3254
3256
 
@@ -3758,7 +3760,7 @@ class Edb(Database):
3758
3760
  elif not name:
3759
3761
  name = generate_unique_name("setup")
3760
3762
  setup = HfssSimulationSetup(self, name=name)
3761
- setup.set_solution_single_frequency("1GΗz")
3763
+ setup.set_solution_single_frequency("1Ghz")
3762
3764
  return setup
3763
3765
 
3764
3766
  def create_raptorx_setup(self, name=None):
@@ -3958,7 +3960,7 @@ class Edb(Database):
3958
3960
  Dictionary with EDB path as key and EDB PolygonData as value defining the zone region.
3959
3961
  This dictionary is returned from the command copy_zones():
3960
3962
  >>> edb = Edb(edb_file)
3961
- >>> zone_dict = edb.copy_zones(r"C:\Temp\test")
3963
+ >>> zone_dict = edb.copy_zones("C:/Temp/test")
3962
3964
 
3963
3965
  common_reference_net : str
3964
3966
  the common reference net name. This net name must be provided to provide a valid project.
@@ -4017,7 +4019,7 @@ class Edb(Database):
4017
4019
  dictionary terminals with edb name as key and created ports name on clipped signal nets.
4018
4020
  Dictionary is generated by the command cutout_multizone_layout:
4019
4021
  >>> edb = Edb(edb_file)
4020
- >>> edb_zones = edb.copy_zones(r"C:\Temp\test")
4022
+ >>> edb_zones = edb.copy_zones("C:/Temp/test")
4021
4023
  >>> defined_ports, terminals_info = edb.cutout_multizone_layout(edb_zones, common_reference_net)
4022
4024
  >>> project_connexions = get_connected_ports(terminals_info)
4023
4025
 
@@ -4724,6 +4726,6 @@ class Edb(Database):
4724
4726
  def get_variable_value(self, variable_name):
4725
4727
  """Added to get closer architecture as for grpc."""
4726
4728
  if variable_name in self.variables:
4727
- return self.variables[variable_name].value
4729
+ return self.variables[variable_name]
4728
4730
  else:
4729
4731
  return False