pyedb 0.47.1__tar.gz → 0.49.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 (288) hide show
  1. {pyedb-0.47.1 → pyedb-0.49.0}/PKG-INFO +1 -1
  2. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/__init__.py +1 -1
  3. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/configuration/cfg_stackup.py +35 -1
  4. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/configuration/configuration.py +13 -13
  5. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/hierarchy/component.py +61 -5
  6. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/hierarchy/s_parameter_model.py +7 -0
  7. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/primitive/primitive.py +8 -1
  8. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/terminal/terminal.py +25 -7
  9. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/components.py +87 -46
  10. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/definition/package_def.py +29 -5
  11. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/dotnet/database.py +18 -0
  12. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/edb_data/padstacks_data.py +25 -5
  13. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/edb_data/ports.py +14 -0
  14. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/edb_data/utilities.py +1 -1
  15. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/geometry/polygon_data.py +15 -2
  16. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/hfss.py +11 -1
  17. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/materials.py +78 -0
  18. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/modeler.py +21 -10
  19. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/padstack.py +7 -5
  20. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/sim_setup_data/data/mesh_operation.py +24 -0
  21. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/siwave.py +37 -33
  22. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/utilities/simulation_setup.py +51 -9
  23. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/utilities/siwave_simulation_setup.py +3 -1
  24. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/edb.py +67 -8
  25. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/components.py +19 -13
  26. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/hfss.py +3 -3
  27. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/modeler.py +4 -4
  28. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/padstacks.py +3 -1
  29. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/ports/ports.py +4 -0
  30. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/primitive/path.py +2 -2
  31. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/primitive/primitive.py +6 -1
  32. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/source_excitations.py +16 -8
  33. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/terminal/bundle_terminal.py +1 -1
  34. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/edb.py +125 -32
  35. {pyedb-0.47.1 → pyedb-0.49.0}/LICENSE +0 -0
  36. {pyedb-0.47.1 → pyedb-0.49.0}/README.md +0 -0
  37. {pyedb-0.47.1 → pyedb-0.49.0}/pyproject.toml +0 -0
  38. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/common/__init__.py +0 -0
  39. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/common/nets.py +0 -0
  40. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/component_libraries/ansys_components.py +0 -0
  41. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/configuration/__init__.py +0 -0
  42. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/configuration/cfg_boundaries.py +0 -0
  43. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/configuration/cfg_common.py +0 -0
  44. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/configuration/cfg_components.py +0 -0
  45. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/configuration/cfg_data.py +0 -0
  46. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/configuration/cfg_general.py +0 -0
  47. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/configuration/cfg_modeler.py +0 -0
  48. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/configuration/cfg_nets.py +0 -0
  49. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/configuration/cfg_operations.py +0 -0
  50. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/configuration/cfg_package_definition.py +0 -0
  51. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/configuration/cfg_padstacks.py +0 -0
  52. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/configuration/cfg_pin_groups.py +0 -0
  53. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/configuration/cfg_ports_sources.py +0 -0
  54. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/configuration/cfg_s_parameter_models.py +0 -0
  55. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/configuration/cfg_setup.py +0 -0
  56. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/configuration/cfg_spice_models.py +0 -0
  57. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/__init__.py +0 -0
  58. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/clr_module.py +0 -0
  59. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/Variables.py +0 -0
  60. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/__init__.py +0 -0
  61. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/__init__.py +0 -0
  62. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/connectable.py +0 -0
  63. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/hierarchy/__init__.py +0 -0
  64. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/hierarchy/hierarchy_obj.py +0 -0
  65. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/hierarchy/model.py +0 -0
  66. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/hierarchy/netlist_model.py +0 -0
  67. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/hierarchy/pin_pair_model.py +0 -0
  68. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/hierarchy/spice_model.py +0 -0
  69. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/layout.py +0 -0
  70. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/layout_obj.py +0 -0
  71. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/primitive/__init__.py +0 -0
  72. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/primitive/bondwire.py +0 -0
  73. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/primitive/path.py +0 -0
  74. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/terminal/__init__.py +0 -0
  75. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/terminal/bundle_terminal.py +0 -0
  76. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/terminal/edge_terminal.py +0 -0
  77. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/terminal/padstack_instance_terminal.py +0 -0
  78. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/terminal/pingroup_terminal.py +0 -0
  79. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/terminal/point_terminal.py +0 -0
  80. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/cell/voltage_regulator.py +0 -0
  81. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/definition/__init__.py +0 -0
  82. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/definition/component_def.py +0 -0
  83. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/definition/component_model.py +0 -0
  84. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/definition/definition_obj.py +0 -0
  85. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/definition/definitions.py +0 -0
  86. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/dotnet/__init__.py +0 -0
  87. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/dotnet/primitive.py +0 -0
  88. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/edb_data/__init__.py +0 -0
  89. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/edb_data/control_file.py +0 -0
  90. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/edb_data/design_options.py +0 -0
  91. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/edb_data/edbvalue.py +0 -0
  92. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/edb_data/hfss_extent_info.py +0 -0
  93. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/edb_data/layer_data.py +0 -0
  94. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/edb_data/nets_data.py +0 -0
  95. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/edb_data/primitives_data.py +0 -0
  96. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/edb_data/raptor_x_simulation_setup_data.py +0 -0
  97. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/edb_data/simulation_configuration.py +0 -0
  98. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/edb_data/sources.py +0 -0
  99. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/edb_data/variables.py +0 -0
  100. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/general.py +0 -0
  101. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/geometry/__init__.py +0 -0
  102. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/geometry/point_data.py +0 -0
  103. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/layout_obj_instance.py +0 -0
  104. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/layout_validation.py +0 -0
  105. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/net_class.py +0 -0
  106. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/nets.py +0 -0
  107. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/sim_setup_data/__init__.py +0 -0
  108. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/sim_setup_data/data/__init__.py +0 -0
  109. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/sim_setup_data/data/adaptive_frequency_data.py +0 -0
  110. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/sim_setup_data/data/settings.py +0 -0
  111. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/sim_setup_data/data/sim_setup_info.py +0 -0
  112. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/sim_setup_data/data/simulation_settings.py +0 -0
  113. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/sim_setup_data/data/siw_dc_ir_settings.py +0 -0
  114. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/sim_setup_data/data/sweep_data.py +0 -0
  115. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/sim_setup_data/io/__init__.py +0 -0
  116. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/sim_setup_data/io/siwave.py +0 -0
  117. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/stackup.py +0 -0
  118. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/utilities/__init__.py +0 -0
  119. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/utilities/heatsink.py +0 -0
  120. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/utilities/hfss_simulation_setup.py +0 -0
  121. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/dotnet/database/utilities/obj_base.py +0 -0
  122. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/edb_logger.py +0 -0
  123. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/exceptions.py +0 -0
  124. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/extensions/pre_layout_design_toolkit/via_design.py +0 -0
  125. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/generic/__init__.py +0 -0
  126. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/generic/constants.py +0 -0
  127. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/generic/data_handlers.py +0 -0
  128. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/generic/design_types.py +0 -0
  129. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/generic/filesystem.py +0 -0
  130. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/generic/general_methods.py +0 -0
  131. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/generic/plot.py +0 -0
  132. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/generic/process.py +0 -0
  133. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/generic/settings.py +0 -0
  134. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/__init__.py +0 -0
  135. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/control_file.py +0 -0
  136. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/definition/__init__.py +0 -0
  137. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/definition/component_def.py +0 -0
  138. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/definition/component_model.py +0 -0
  139. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/definition/component_pin.py +0 -0
  140. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/definition/materials.py +0 -0
  141. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/definition/n_port_component_model.py +0 -0
  142. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/definition/package_def.py +0 -0
  143. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/definition/padstack_def.py +0 -0
  144. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/definitions.py +0 -0
  145. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/general.py +0 -0
  146. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/geometry/__init__.py +0 -0
  147. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/geometry/arc_data.py +0 -0
  148. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/geometry/point_3d_data.py +0 -0
  149. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/geometry/point_data.py +0 -0
  150. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/geometry/polygon_data.py +0 -0
  151. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/hierarchy/__init__.py +0 -0
  152. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/hierarchy/component.py +0 -0
  153. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/hierarchy/model.py +0 -0
  154. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/hierarchy/netlist_model.py +0 -0
  155. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/hierarchy/pin_pair_model.py +0 -0
  156. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/hierarchy/pingroup.py +0 -0
  157. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/hierarchy/s_parameter_model.py +0 -0
  158. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/hierarchy/spice_model.py +0 -0
  159. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/layers/__init__.py +0 -0
  160. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/layers/layer.py +0 -0
  161. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/layers/stackup_layer.py +0 -0
  162. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/layout/__init__.py +0 -0
  163. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/layout/cell.py +0 -0
  164. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/layout/layout.py +0 -0
  165. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/layout/voltage_regulator.py +0 -0
  166. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/layout_validation.py +0 -0
  167. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/net/__init__.py +0 -0
  168. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/net/differential_pair.py +0 -0
  169. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/net/extended_net.py +0 -0
  170. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/net/net.py +0 -0
  171. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/net/net_class.py +0 -0
  172. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/nets.py +0 -0
  173. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/ports/__init__.py +0 -0
  174. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/primitive/__init__.py +0 -0
  175. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/primitive/bondwire.py +0 -0
  176. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/primitive/circle.py +0 -0
  177. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/primitive/padstack_instance.py +0 -0
  178. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/primitive/polygon.py +0 -0
  179. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/primitive/rectangle.py +0 -0
  180. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/simulation_setup/__init__.py +0 -0
  181. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/simulation_setup/adaptive_frequency.py +0 -0
  182. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_meshing_settings.py +0 -0
  183. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_settings.py +0 -0
  184. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/simulation_setup/hfss_dcr_settings.py +0 -0
  185. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/simulation_setup/hfss_general_settings.py +0 -0
  186. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/simulation_setup/hfss_settings_options.py +0 -0
  187. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_settings.py +0 -0
  188. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +0 -0
  189. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/simulation_setup/hfss_solver_settings.py +0 -0
  190. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/simulation_setup/mesh_operation.py +0 -0
  191. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_advanced_settings.py +0 -0
  192. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_general_settings.py +0 -0
  193. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_settings.py +0 -0
  194. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_setup.py +0 -0
  195. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/simulation_setup/siwave_dcir_simulation_setup.py +0 -0
  196. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +0 -0
  197. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/simulation_setup/sweep_data.py +0 -0
  198. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/siwave.py +0 -0
  199. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/stackup.py +0 -0
  200. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/terminal/__init__.py +0 -0
  201. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/terminal/edge_terminal.py +0 -0
  202. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/terminal/padstack_instance_terminal.py +0 -0
  203. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/terminal/pingroup_terminal.py +0 -0
  204. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/terminal/point_terminal.py +0 -0
  205. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/terminal/terminal.py +0 -0
  206. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/utility/__init__.py +0 -0
  207. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/utility/constants.py +0 -0
  208. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/utility/heat_sink.py +0 -0
  209. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/utility/hfss_extent_info.py +0 -0
  210. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/utility/layout_statistics.py +0 -0
  211. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/utility/rlc.py +0 -0
  212. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/utility/simulation_configuration.py +0 -0
  213. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/utility/sources.py +0 -0
  214. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/utility/sweep_data_distribution.py +0 -0
  215. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/database/utility/xml_control_file.py +0 -0
  216. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/edb_init.py +0 -0
  217. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/grpc/rpc_session.py +0 -0
  218. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/__init__.py +0 -0
  219. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/bom/__init__.py +0 -0
  220. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/bom/bom.py +0 -0
  221. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/bom/bom_item.py +0 -0
  222. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/bom/characteristics.py +0 -0
  223. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/bom/refdes.py +0 -0
  224. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/content/__init__.py +0 -0
  225. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/content/color.py +0 -0
  226. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/content/content.py +0 -0
  227. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/content/dictionary_color.py +0 -0
  228. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/content/dictionary_fill.py +0 -0
  229. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/content/dictionary_line.py +0 -0
  230. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/content/entry_color.py +0 -0
  231. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/content/entry_line.py +0 -0
  232. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/content/fill.py +0 -0
  233. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/content/layer_ref.py +0 -0
  234. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/content/standard_geometries_dictionary.py +0 -0
  235. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/__init__.py +0 -0
  236. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/__init__.py +0 -0
  237. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +0 -0
  238. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/cad_data.py +0 -0
  239. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/component.py +0 -0
  240. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/drill.py +0 -0
  241. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/feature.py +0 -0
  242. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/layer.py +0 -0
  243. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/layer_feature.py +0 -0
  244. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/logical_net.py +0 -0
  245. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/outline.py +0 -0
  246. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/package.py +0 -0
  247. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_def.py +0 -0
  248. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +0 -0
  249. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_instance.py +0 -0
  250. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +0 -0
  251. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/path.py +0 -0
  252. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/phy_net.py +0 -0
  253. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/pin.py +0 -0
  254. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/polygon.py +0 -0
  255. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/profile.py +0 -0
  256. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/stackup.py +0 -0
  257. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_group.py +0 -0
  258. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_layer.py +0 -0
  259. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_data/step.py +0 -0
  260. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/cad_header.py +0 -0
  261. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/ecad.py +0 -0
  262. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ecad/spec.py +0 -0
  263. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/history_record.py +0 -0
  264. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/ipc2581.py +0 -0
  265. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/ipc2581/logistic_header.py +0 -0
  266. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/__init__.py +0 -0
  267. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/aedtlib_personalib_install.py +0 -0
  268. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/downloads.py +0 -0
  269. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/misc.py +0 -0
  270. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/pyedb.runtimeconfig.json +0 -0
  271. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/siw_feature_config/__init__.py +0 -0
  272. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/siw_feature_config/emc/__init__.py +0 -0
  273. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/siw_feature_config/emc/component_tags.py +0 -0
  274. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/siw_feature_config/emc/net_tags.py +0 -0
  275. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/siw_feature_config/emc/tag_library.py +0 -0
  276. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/siw_feature_config/emc/xml_generic.py +0 -0
  277. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +0 -0
  278. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/fd_xtalk_scan_config.py +0 -0
  279. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/impedance_scan_config.py +0 -0
  280. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/net.py +0 -0
  281. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/pins.py +0 -0
  282. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py +0 -0
  283. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py +0 -0
  284. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/misc/utilities.py +0 -0
  285. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/modeler/geometry_operators.py +0 -0
  286. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/siwave.py +0 -0
  287. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/siwave_core/icepak.py +0 -0
  288. {pyedb-0.47.1 → pyedb-0.49.0}/src/pyedb/workflow.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyedb
3
- Version: 0.47.1
3
+ Version: 0.49.0
4
4
  Summary: Higher-Level Pythonic Ansys Electronics Data Base
5
5
  Author-email: "ANSYS, Inc." <pyansys.core@ansys.com>
6
6
  Maintainer-email: PyEDB developers <simon.vandenbrouck@ansys.com>
@@ -44,7 +44,7 @@ deprecation_warning()
44
44
  #
45
45
 
46
46
  pyedb_path = os.path.dirname(__file__)
47
- __version__ = "0.47.1"
47
+ __version__ = "0.49.0"
48
48
  version = __version__
49
49
 
50
50
  #
@@ -24,6 +24,33 @@ from pyedb import Edb
24
24
  from pyedb.configuration.cfg_common import CfgBase
25
25
 
26
26
 
27
+ class CfgMaterialPropertyThermalModifier:
28
+ def __init__(self, **kwargs):
29
+ self.property_name = kwargs["property_name"]
30
+ self.basic_quadratic_c1 = kwargs.get("basic_quadratic_c1", 0)
31
+ self.basic_quadratic_c2 = kwargs.get("basic_quadratic_c2", 0)
32
+ self.basic_quadratic_temperature_reference = kwargs.get("basic_quadratic_temperature_reference", 22)
33
+ self.advanced_quadratic_lower_limit = kwargs.get("advanced_quadratic_lower_limit", -273.15)
34
+ self.advanced_quadratic_upper_limit = kwargs.get("advanced_quadratic_upper_limit", 1000)
35
+
36
+ self.advanced_quadratic_auto_calculate = kwargs.get("advanced_quadratic_auto_calculate", True)
37
+ self.advanced_quadratic_lower_constant = kwargs.get("advanced_quadratic_lower_constant", 1)
38
+ self.advanced_quadratic_upper_constant = kwargs.get("advanced_quadratic_upper_constant", 1)
39
+
40
+ def to_dict(self):
41
+ return {
42
+ "property_name": self.property_name,
43
+ "basic_quadratic_c1": self.basic_quadratic_c1,
44
+ "basic_quadratic_c2": self.basic_quadratic_c2,
45
+ "basic_quadratic_temperature_reference": self.basic_quadratic_temperature_reference,
46
+ "advanced_quadratic_lower_limit": self.advanced_quadratic_lower_limit,
47
+ "advanced_quadratic_upper_limit": self.advanced_quadratic_upper_limit,
48
+ "advanced_quadratic_auto_calculate": self.advanced_quadratic_auto_calculate,
49
+ "advanced_quadratic_lower_constant": self.advanced_quadratic_lower_constant,
50
+ "advanced_quadratic_upper_constant": self.advanced_quadratic_upper_constant,
51
+ }
52
+
53
+
27
54
  class CfgMaterial(CfgBase):
28
55
  def __init__(self, **kwargs):
29
56
  self.name = kwargs.get("name", None)
@@ -37,6 +64,10 @@ class CfgMaterial(CfgBase):
37
64
  self.specific_heat = kwargs.get("specific_heat", None)
38
65
  self.thermal_conductivity = kwargs.get("thermal_conductivity", None)
39
66
 
67
+ thermal_modifiers = kwargs.get("thermal_modifiers")
68
+ if thermal_modifiers:
69
+ self.thermal_modifiers = [CfgMaterialPropertyThermalModifier(**i) for i in thermal_modifiers]
70
+
40
71
 
41
72
  class CfgLayer(CfgBase):
42
73
  def __init__(self, **kwargs):
@@ -131,12 +162,15 @@ class CfgStackup:
131
162
  attrs = mat_in_cfg.get_attributes()
132
163
  mat = self._pedb.materials.add_material(**attrs)
133
164
 
165
+ for i in attrs.get("thermal_modifiers", []):
166
+ mat.set_thermal_modifier(**i.to_dict())
167
+
134
168
  def get_materials_from_db(self):
135
169
  materials = []
136
170
  for name, p in self._pedb.materials.materials.items():
137
171
  mat = {}
138
172
  for p_name in CfgMaterial().__dict__:
139
- mat[p_name] = getattr(p, p_name)
173
+ mat[p_name] = getattr(p, p_name, None)
140
174
  materials.append(mat)
141
175
  return materials
142
176
 
@@ -572,17 +572,17 @@ class Configuration:
572
572
  """
573
573
  return self.api.export(
574
574
  file_path,
575
- stackup=True,
576
- package_definitions=False,
577
- setups=True,
578
- sources=True,
579
- ports=True,
580
- nets=True,
581
- pin_groups=True,
582
- operations=True,
583
- components=True,
584
- boundaries=True,
585
- s_parameters=True,
586
- padstacks=True,
587
- general=True,
575
+ stackup=stackup,
576
+ package_definitions=package_definitions,
577
+ setups=setups,
578
+ sources=sources,
579
+ ports=ports,
580
+ nets=nets,
581
+ pin_groups=pin_groups,
582
+ operations=operations,
583
+ components=components,
584
+ boundaries=boundaries,
585
+ s_parameters=s_parameters,
586
+ padstacks=padstacks,
587
+ general=general,
588
588
  )
@@ -44,6 +44,41 @@ except ImportError:
44
44
  from pyedb.generic.general_methods import get_filename_without_extension
45
45
 
46
46
 
47
+ class ICDieProperties:
48
+ def __init__(self, pedb, edb_object):
49
+ self._pedb = pedb
50
+ self._edb_object = edb_object
51
+
52
+ @property
53
+ def die_orientation(self):
54
+ if str(self._edb_object.GetOrientation()) == "ChipUp":
55
+ return "chip_up"
56
+ return "chip_down"
57
+
58
+ @die_orientation.setter
59
+ def die_orientation(self, value):
60
+ if value == "chip_up" or value == "ChipUp":
61
+ self._edb_object.SetOrientation(self._pedb.api_class.Definition.DieOrientation.ChipUp)
62
+ elif value == "chip_down" or value == "ChipDown":
63
+ self._edb_object.SetOrientation(self._pedb.api_class.Definition.DieOrientation.ChipDown)
64
+
65
+ @property
66
+ def die_type(self):
67
+ if str(self._edb_object.GetType()) == "NoDie":
68
+ return "none"
69
+ elif str(self._edb_object.GetType()) == "FlipChip":
70
+ return "flip_chip"
71
+ return "none"
72
+
73
+ @property
74
+ def height(self):
75
+ return self._edb_object.GetHeight()
76
+
77
+ @height.setter
78
+ def height(self, value):
79
+ self._edb_object.SetHeight(self._pedb.edb_value(value))
80
+
81
+
47
82
  class EDBComponent(Group):
48
83
  """Manages EDB functionalities for components.
49
84
 
@@ -61,6 +96,7 @@ class EDBComponent(Group):
61
96
  self.edbcomponent = edb_object
62
97
  self._layout_instance = None
63
98
  self._comp_instance = None
99
+ self._ic_die_properties = None
64
100
 
65
101
  @property
66
102
  def name(self):
@@ -149,6 +185,21 @@ class EDBComponent(Group):
149
185
  comp_prop.SetPackageDef(package_def._edb_object)
150
186
  self.edbcomponent.SetComponentProperty(comp_prop)
151
187
 
188
+ @property
189
+ def ic_die_properties(self):
190
+ """Adding IC properties for grpc compatibility."""
191
+ if self.type == "IC":
192
+ if not self._ic_die_properties:
193
+ self._ic_die_properties = ICDieProperties(self._pedb, self.component_property.GetDieProperty().Clone())
194
+ return self._ic_die_properties
195
+ return None
196
+
197
+ @ic_die_properties.setter
198
+ def ic_die_properties(self, value):
199
+ component_property = self.component_property
200
+ component_property.SetDieProperties(value)
201
+ self.component_property = component_property
202
+
152
203
  def create_package_def(self, name="", component_part_name=None):
153
204
  """Create a package definition and assign it to the component.
154
205
 
@@ -575,7 +626,7 @@ class EDBComponent(Group):
575
626
  list
576
627
  """
577
628
  center = self.component_instance.GetCenter()
578
- return [center.X.ToDouble(), center.Y.ToDouble()]
629
+ return [round(center.X.ToDouble(), 6), round(center.Y.ToDouble(), 6)]
579
630
 
580
631
  @property
581
632
  def bounding_box(self):
@@ -591,7 +642,12 @@ class EDBComponent(Group):
591
642
  bbox = self.component_instance.GetBBox()
592
643
  pt1 = bbox.Item1
593
644
  pt2 = bbox.Item2
594
- return [pt1.X.ToDouble(), pt1.Y.ToDouble(), pt2.X.ToDouble(), pt2.Y.ToDouble()]
645
+ return [
646
+ round(pt1.X.ToDouble(), 6),
647
+ round(pt1.Y.ToDouble(), 6),
648
+ round(pt2.X.ToDouble(), 6),
649
+ round(pt2.Y.ToDouble(), 6),
650
+ ]
595
651
 
596
652
  @property
597
653
  def rotation(self):
@@ -601,7 +657,7 @@ class EDBComponent(Group):
601
657
  -------
602
658
  float
603
659
  """
604
- return self.edbcomponent.GetTransform().Rotation.ToDouble()
660
+ return round(self.edbcomponent.GetTransform().Rotation.ToDouble(), 6)
605
661
 
606
662
  @property
607
663
  def pinlist(self):
@@ -776,7 +832,7 @@ class EDBComponent(Group):
776
832
  float
777
833
  Lower elevation of the placement layer.
778
834
  """
779
- return self.edbcomponent.GetPlacementLayer().Clone().GetLowerElevation()
835
+ return round(self.edbcomponent.GetPlacementLayer().Clone().GetLowerElevation(), 6)
780
836
 
781
837
  @property
782
838
  def upper_elevation(self):
@@ -788,7 +844,7 @@ class EDBComponent(Group):
788
844
  Upper elevation of the placement layer.
789
845
 
790
846
  """
791
- return self.edbcomponent.GetPlacementLayer().Clone().GetUpperElevation()
847
+ return round(self.edbcomponent.GetPlacementLayer().Clone().GetUpperElevation(), 6)
792
848
 
793
849
  @property
794
850
  def top_bottom_association(self):
@@ -32,3 +32,10 @@ class SparamModel(object): # pragma: no cover
32
32
  @property
33
33
  def reference_net(self):
34
34
  return self._edb_model.GetReferenceNet()
35
+
36
+ @property
37
+ def is_null(self):
38
+ """Adding this property to be compatible with grpc."""
39
+ if self.name:
40
+ return False
41
+ return True
@@ -51,7 +51,9 @@ class Primitive(Connectable):
51
51
  "invalid": bondwire_type.Invalid,
52
52
  "apd": bondwire_type.ApdBondwire,
53
53
  "jedec_4": bondwire_type.Jedec4Bondwire,
54
+ "jedec4": bondwire_type.Jedec4Bondwire,
54
55
  "jedec_5": bondwire_type.Jedec5Bondwire,
56
+ "jedec5": bondwire_type.Jedec5Bondwire,
55
57
  "num_of_bondwire_type": bondwire_type.NumOfBondwireType,
56
58
  }
57
59
  bondwire_cross_section_type = self._pedb._edb.Cell.Primitive.BondwireCrossSectionType
@@ -261,7 +263,12 @@ class Primitive(Connectable):
261
263
 
262
264
  """
263
265
  bbox = self.polygon_data._edb_object.GetBBox()
264
- return [bbox.Item1.X.ToDouble(), bbox.Item1.Y.ToDouble(), bbox.Item2.X.ToDouble(), bbox.Item2.Y.ToDouble()]
266
+ return [
267
+ round(bbox.Item1.X.ToDouble(), 6),
268
+ round(bbox.Item1.Y.ToDouble(), 6),
269
+ round(bbox.Item2.X.ToDouble(), 6),
270
+ round(bbox.Item2.Y.ToDouble(), 6),
271
+ ]
265
272
 
266
273
  def convert_to_polygon(self):
267
274
  """Convert path to polygon.
@@ -21,6 +21,7 @@
21
21
  # SOFTWARE.
22
22
 
23
23
  import re
24
+ import warnings
24
25
 
25
26
  from pyedb.dotnet.database.cell.connectable import Connectable
26
27
  from pyedb.dotnet.database.edb_data.padstacks_data import EDBPadstackInstance
@@ -196,18 +197,35 @@ class Terminal(Connectable):
196
197
  return self._edb_object.IsReferenceTerminal()
197
198
 
198
199
  @property
199
- def ref_terminal(self):
200
- """Get reference terminal."""
201
-
200
+ def reference_terminal(self):
201
+ """Adding grpc compatibility."""
202
202
  edb_terminal = self._edb_object.GetReferenceTerminal()
203
203
  if not edb_terminal.IsNull():
204
204
  return self._pedb.terminals[edb_terminal.GetName()]
205
205
  else:
206
206
  return None
207
207
 
208
+ @reference_terminal.setter
209
+ def reference_terminal(self, value):
210
+ self._edb_object.SetReferenceTerminal(value._edb_object)
211
+
212
+ @property
213
+ def ref_terminal(self):
214
+ """Get reference terminal.
215
+
216
+ .deprecated:: pyedb 0.47.0
217
+ Use: attribute:`reference_terminal` instead.
218
+
219
+ """
220
+ warnings.warn(
221
+ "`ref_terminal` is deprecated, use `reference_terminal` instead.",
222
+ DeprecationWarning,
223
+ )
224
+ return self.reference_terminal
225
+
208
226
  @ref_terminal.setter
209
227
  def ref_terminal(self, value):
210
- self._edb_object.SetReferenceTerminal(value._edb_object)
228
+ self.reference_terminal = value
211
229
 
212
230
  @property
213
231
  def reference_object(self): # pragma : no cover
@@ -387,7 +405,7 @@ class Terminal(Connectable):
387
405
  power_ground_net_names = [gnd_net]
388
406
  else:
389
407
  power_ground_net_names = [net for net in self._pedb.nets.power.keys()]
390
- comp_ref_pins = [i for i in pin_list if i.GetNet().GetName() in power_ground_net_names]
408
+ comp_ref_pins = [i for i in pin_list if i.net_name in power_ground_net_names]
391
409
  if len(comp_ref_pins) == 0: # pragma: no cover
392
410
  self._pedb.logger.error(
393
411
  "Terminal with PadStack Instance Name {} component has no reference pins.".format(ref_pin.GetName())
@@ -396,9 +414,9 @@ class Terminal(Connectable):
396
414
  closest_pin_distance = None
397
415
  pin_obj = None
398
416
  for pin in comp_ref_pins: # find the distance to all the pins to the terminal pin
399
- if pin.GetName() == ref_pin.GetName(): # skip the reference psi
417
+ if pin.component_pin == ref_pin.GetName(): # skip the reference psi
400
418
  continue # pragma: no cover
401
- _, pin_point, _ = pin.GetPositionAndRotation()
419
+ _, pin_point, _ = pin._edb_object.GetPositionAndRotation()
402
420
  distance = pad_stack_inst_point.Distance(pin_point)
403
421
  if closest_pin_distance is None:
404
422
  closest_pin_distance = distance
@@ -556,25 +556,27 @@ class Components(object):
556
556
  m_pin2_pos = [0.0, 0.0]
557
557
  h_pin1_pos = [0.0, 0.0]
558
558
  h_pin2_pos = [0.0, 0.0]
559
- if not isinstance(mounted_component, self._pedb.edb_api.cell.hierarchy.component):
559
+ from pyedb.dotnet.database.cell.hierarchy.component import EDBComponent
560
+
561
+ if not isinstance(mounted_component, EDBComponent):
560
562
  return False
561
- if not isinstance(hosting_component, self._pedb.edb_api.cell.hierarchy.component):
563
+ if not isinstance(hosting_component, EDBComponent):
562
564
  return False
563
565
 
564
- if mounted_component_pin1:
565
- m_pin1 = self._get_edb_pin_from_pin_name(mounted_component, mounted_component_pin1)
566
- m_pin1_pos = self.get_pin_position(m_pin1)
567
- if mounted_component_pin2:
568
- m_pin2 = self._get_edb_pin_from_pin_name(mounted_component, mounted_component_pin2)
569
- m_pin2_pos = self.get_pin_position(m_pin2)
566
+ if mounted_component_pin1 in mounted_component.pins:
567
+ m_pin1 = mounted_component.pins[mounted_component_pin1]
568
+ m_pin1_pos = m_pin1.position
569
+ if mounted_component_pin2 in mounted_component.pins:
570
+ m_pin2 = mounted_component.pins[mounted_component_pin2]
571
+ m_pin2_pos = m_pin2.position
570
572
 
571
- if hosting_component_pin1:
572
- h_pin1 = self._get_edb_pin_from_pin_name(hosting_component, hosting_component_pin1)
573
- h_pin1_pos = self.get_pin_position(h_pin1)
573
+ if hosting_component_pin1 in hosting_component.pins:
574
+ h_pin1 = hosting_component.pins[hosting_component_pin1]
575
+ h_pin1_pos = h_pin1.position
574
576
 
575
- if hosting_component_pin2:
576
- h_pin2 = self._get_edb_pin_from_pin_name(hosting_component, hosting_component_pin2)
577
- h_pin2_pos = self.get_pin_position(h_pin2)
577
+ if hosting_component_pin2 in hosting_component.pins:
578
+ h_pin2 = hosting_component.pins[hosting_component_pin2]
579
+ h_pin2_pos = h_pin2.position
578
580
  #
579
581
  vector = [h_pin1_pos[0] - m_pin1_pos[0], h_pin1_pos[1] - m_pin1_pos[1]]
580
582
  vector1 = GeometryOperators.v_points(m_pin1_pos, m_pin2_pos)
@@ -586,8 +588,8 @@ class Components(object):
586
588
 
587
589
  rotation = GeometryOperators.v_angle_sign_2D(vector1, vector2, False)
588
590
  if rotation != 0.0:
589
- layinst = mounted_component.GetLayout().GetLayoutInstance()
590
- cmpinst = layinst.GetLayoutObjInstance(mounted_component, None)
591
+ layinst = mounted_component._edb_object.GetLayout().GetLayoutInstance()
592
+ cmpinst = layinst.GetLayoutObjInstance(mounted_component._edb_object, None)
591
593
  center = cmpinst.GetCenter()
592
594
  center_double = [center.X.ToDouble(), center.Y.ToDouble()]
593
595
  vector_center = GeometryOperators.v_points(center_double, m_pin1_pos)
@@ -597,7 +599,7 @@ class Components(object):
597
599
  vector = [h_pin1_pos[0] - new_vector[0], h_pin1_pos[1] - new_vector[1]]
598
600
 
599
601
  if vector:
600
- solder_ball_height = self.get_solder_ball_height(mounted_component)
602
+ solder_ball_height = mounted_component.solder_ball_height
601
603
  return True, vector, rotation, solder_ball_height
602
604
  self._logger.warning("Failed to compute vector.")
603
605
  return False, [0, 0], 0, 0
@@ -818,7 +820,7 @@ class Components(object):
818
820
  if refdes and any(refdes.rlc_values):
819
821
  return self.deactivate_rlc_component(component=refdes, create_circuit_port=True)
820
822
  if not port_name:
821
- port_name = "Port_{}_{}".format(pins[0].net_name, pins[0].name)
823
+ port_name = f"Port_{pins[0].net_name}_{pins[0].name}".replace("-", "_")
822
824
 
823
825
  if len(pins) > 1 or pingroup_on_single_pin:
824
826
  if pec_boundary:
@@ -842,7 +844,7 @@ class Components(object):
842
844
  f"ports only, {len(reference_pins)} reference pins found "
843
845
  f"(pingroup_on_single_pin: {pingroup_on_single_pin})."
844
846
  )
845
- ref_group_name = "group_{}_ref".format(port_name)
847
+ ref_group_name = f"group_{port_name}_ref"
846
848
  ref_pin_group = self.create_pingroup_from_pins(reference_pins, ref_group_name)
847
849
  ref_term = self._create_pin_group_terminal(pingroup=ref_pin_group, term_name=port_name + "_ref")
848
850
  else:
@@ -857,7 +859,7 @@ class Components(object):
857
859
  term.SetBoundaryType(self._edb.cell.terminal.BoundaryType.PecBoundary)
858
860
  ref_term.SetBoundaryType(self._edb.cell.terminal.BoundaryType.PecBoundary)
859
861
  self._logger.info(
860
- "PEC boundary created between pin {} and reference pin {}".format(pins[0].name, reference_pins[0].name)
862
+ f"PEC boundary created between pin {pins[0].name} and reference pin {reference_pins[0].name}"
861
863
  )
862
864
 
863
865
  return term or False
@@ -947,6 +949,25 @@ class Components(object):
947
949
  >>> port_type=SourceType.CoaxPort, do_pingroup=False, refnet="GND")
948
950
 
949
951
  """
952
+ # Adding grpc compatibility
953
+ if not isinstance(port_type, int):
954
+ if port_type == "circuit_port":
955
+ port_type = SourceType.CircPort
956
+ elif port_type == "coaxial_port":
957
+ port_type = SourceType.CoaxPort
958
+ elif port_type == "lumped_port":
959
+ port_type = SourceType.LumpedPort
960
+ elif port_type == "rlc":
961
+ port_type = SourceType.Rlc
962
+ elif port_type == "current_source":
963
+ port_type = SourceType.Isource
964
+ elif port_type == "voltage_source":
965
+ port_type = SourceType.Vsource
966
+ elif port_type == "dc_terminal":
967
+ port_type = SourceType.DcTerminal
968
+ else:
969
+ self._pedb.logger.error(f"Port type {port_type} seems to be for grpc version but is not compatible.")
970
+ return False
950
971
  if isinstance(component, str):
951
972
  component = self.instances[component].edbcomponent
952
973
 
@@ -1297,9 +1318,9 @@ class Components(object):
1297
1318
  pin_layers = self._padstack._get_pin_layer_range(pins[0])
1298
1319
  pos_pin_term = self._pedb.edb_api.cell.terminal.PadstackInstanceTerminal.Create(
1299
1320
  self._active_layout,
1300
- pins[0].GetNet(),
1301
- "{}_{}".format(component.refdes, pins[0].GetName()),
1302
- pins[0],
1321
+ pins[0].net._edb_object,
1322
+ f"{component.refdes}_{pins[0]._edb_object.GetName()}",
1323
+ pins[0]._edb_object,
1303
1324
  pin_layers[0],
1304
1325
  False,
1305
1326
  )
@@ -1307,9 +1328,9 @@ class Components(object):
1307
1328
  return False
1308
1329
  neg_pin_term = self._pedb.edb_api.cell.terminal.PadstackInstanceTerminal.Create(
1309
1330
  self._active_layout,
1310
- pins[1].GetNet(),
1311
- "{}_{}_ref".format(component.refdes, pins[1].GetName()),
1312
- pins[1],
1331
+ pins[1].net._edb_object,
1332
+ f"{component.refdes}_{pins[1]._edb_object.GetName()}_ref",
1333
+ pins[1]._edb_object,
1313
1334
  pin_layers[0],
1314
1335
  False,
1315
1336
  )
@@ -1363,9 +1384,9 @@ class Components(object):
1363
1384
  pin_layer = self._padstack._get_pin_layer_range(pins[0])[0]
1364
1385
  pos_pin_term = self._pedb.edb_api.cell.terminal.PadstackInstanceTerminal.Create(
1365
1386
  self._active_layout,
1366
- pins[0].GetNet(),
1367
- "{}_{}".format(component.refdes, pins[0].GetName()),
1368
- pins[0],
1387
+ pins[0]._edb_object.GetNet(),
1388
+ f"{component.refdes}_{pins[0]._edb_object.GetName()}",
1389
+ pins[0]._edb_object,
1369
1390
  pin_layer,
1370
1391
  False,
1371
1392
  )
@@ -1373,9 +1394,9 @@ class Components(object):
1373
1394
  return False
1374
1395
  neg_pin_term = self._pedb.edb_api.cell.terminal.PadstackInstanceTerminal.Create(
1375
1396
  self._active_layout,
1376
- pins[1].GetNet(),
1377
- "{}_{}_ref".format(component.refdes, pins[1].GetName()),
1378
- pins[1],
1397
+ pins[1]._edb_object.GetNet(),
1398
+ f"{component.refdes}_{pins[1]._edb_object.GetName()}_ref",
1399
+ pins[1]._edb_object,
1379
1400
  pin_layer,
1380
1401
  True,
1381
1402
  )
@@ -1576,7 +1597,9 @@ class Components(object):
1576
1597
  >>> edbapp.components.create(pins, "A1New")
1577
1598
 
1578
1599
  """
1579
- pins = [p._edb_object for p in pins]
1600
+ _pins = [p._edb_object for p in pins if isinstance(p, EDBPadstackInstance)]
1601
+ if _pins:
1602
+ pins = _pins
1580
1603
  if not component_name:
1581
1604
  component_name = generate_unique_name("Comp_")
1582
1605
  if component_part_name:
@@ -1589,8 +1612,6 @@ class Components(object):
1589
1612
  self._active_layout, component_name, compdef.GetName()
1590
1613
  )
1591
1614
 
1592
- if isinstance(pins[0], EDBPadstackInstance):
1593
- pins = [i._edb_object for i in pins]
1594
1615
  hosting_component_location = pins[0].GetComponent().GetTransform()
1595
1616
  for pin in pins:
1596
1617
  pin.SetIsLayoutPin(True)
@@ -2145,7 +2166,7 @@ class Components(object):
2145
2166
  rlc.C = self._get_edb_value(cap_value)
2146
2167
  else:
2147
2168
  rlc.CEnabled = False
2148
- pin_pair = self._edb.utility.utility.PinPair(from_pin.GetName(), to_pin.GetName())
2169
+ pin_pair = self._edb.utility.utility.PinPair(from_pin.name, to_pin.name)
2149
2170
  rlc_model = self._edb.cell.hierarchy._hierarchy.PinPairModel()
2150
2171
  rlc_model.SetPinPairRlc(pin_pair, rlc)
2151
2172
  if not edb_rlc_component_property.SetModel(rlc_model) or not edb_component.SetComponentProperty(
@@ -2285,7 +2306,7 @@ class Components(object):
2285
2306
  footprint_cell = self.definitions[comp.partname]._edb_object.GetFootprintCell()
2286
2307
  comp_def = self._edb.definition.ComponentDef.Create(self._db, part_name, footprint_cell)
2287
2308
  for pin in pinlist:
2288
- self._edb.definition.ComponentDefPin.Create(comp_def, pin.GetName())
2309
+ self._edb.definition.ComponentDefPin.Create(comp_def, pin._edb_object.GetName())
2289
2310
 
2290
2311
  p_layer = comp.placement_layer
2291
2312
  refdes_temp = comp.refdes + "_temp"
@@ -2294,7 +2315,7 @@ class Components(object):
2294
2315
  unmount_comp_list.remove(refdes)
2295
2316
  comp.edbcomponent.Ungroup(True)
2296
2317
 
2297
- pinlist = [self._pedb.layout.find_object_by_id(i.GetId()) for i in pinlist]
2318
+ pinlist = [self._pedb.layout.find_object_by_id(i.id) for i in pinlist]
2298
2319
  self.create(pinlist, refdes, p_layer, part_name)
2299
2320
  self.refresh_components()
2300
2321
  comp = self.instances[refdes]
@@ -2364,7 +2385,7 @@ class Components(object):
2364
2385
  obj = self._pedb.edb_api.cell.hierarchy.component.FindByName(self._active_layout, reference_designator)
2365
2386
  return EDBComponent(self._pedb, obj)
2366
2387
 
2367
- def get_pin_from_component(self, component, netName=None, pinName=None):
2388
+ def get_pin_from_component(self, component, netName=None, pinName=None, net_name=None, pin_name=None):
2368
2389
  """Retrieve the pins of a component.
2369
2390
 
2370
2391
  Parameters
@@ -2377,6 +2398,14 @@ class Components(object):
2377
2398
  pinName : str, optional
2378
2399
  Filter on the pin name an alternative to
2379
2400
  ``netName``. The default is ``None``.
2401
+ net_name : str, optional
2402
+ Filter on the net name as an alternative to
2403
+ ``pin_name``. The default is ``None``. This parameter is added to add compatibility with grpc and is
2404
+ recommended using it rather than `netName`.
2405
+ pin_name : str, optional
2406
+ Filter on the pin name an alternative to
2407
+ ``netName``. The default is ``None``. This parameter is added to add compatibility with grpc and is
2408
+ recommended using it rather than `pinName`.
2380
2409
 
2381
2410
  Returns
2382
2411
  -------
@@ -2394,6 +2423,14 @@ class Components(object):
2394
2423
  warnings.warn("Use new property :func:`edb.padstacks.get_instances` instead.", DeprecationWarning)
2395
2424
  if not isinstance(component, self._pedb.edb_api.cell.hierarchy.component):
2396
2425
  component = self._pedb.edb_api.cell.hierarchy.component.FindByName(self._active_layout, component)
2426
+ if pinName:
2427
+ warnings.warn("Use argument `pin_name` instead of `pinName`", DeprecationWarning)
2428
+ if netName:
2429
+ warnings.warn("Use argument `net_name` instead of `netName`", DeprecationWarning)
2430
+ if net_name:
2431
+ netName = net_name
2432
+ if pin_name:
2433
+ pinName = pin_name
2397
2434
  if netName:
2398
2435
  if not isinstance(netName, list):
2399
2436
  netName = [netName]
@@ -2406,14 +2443,18 @@ class Components(object):
2406
2443
  if not isinstance(pinName, list):
2407
2444
  pinName = [pinName]
2408
2445
  pins = [
2409
- p
2446
+ EDBPadstackInstance(p, self._pedb)
2410
2447
  for p in list(component.LayoutObjs)
2411
2448
  if int(p.GetObjType()) == 1
2412
2449
  and p.IsLayoutPin()
2413
2450
  and (self.get_aedt_pin_name(p) in pinName or p.GetName() in pinName)
2414
2451
  ]
2415
2452
  else:
2416
- pins = [p for p in list(component.LayoutObjs) if int(p.GetObjType()) == 1 and p.IsLayoutPin()]
2453
+ pins = [
2454
+ EDBPadstackInstance(p, self._pedb)
2455
+ for p in list(component.LayoutObjs)
2456
+ if int(p.GetObjType()) == 1 and p.IsLayoutPin()
2457
+ ]
2417
2458
  return pins
2418
2459
 
2419
2460
  def get_aedt_pin_name(self, pin):
@@ -2541,7 +2582,7 @@ class Components(object):
2541
2582
  for j in [*i.pins.values()]:
2542
2583
  pin_list.append(j)
2543
2584
  for pin in pin_list:
2544
- if pin.GetNet().GetName() == net_name:
2585
+ if pin.net_name == net_name:
2545
2586
  pin_names.append(self.get_aedt_pin_name(pin))
2546
2587
  return pin_names
2547
2588
 
@@ -2568,7 +2609,7 @@ class Components(object):
2568
2609
  """
2569
2610
  netlist = []
2570
2611
  for pin in PinList:
2571
- netlist.append(pin.GetNet().GetName())
2612
+ netlist.append(pin.net_name)
2572
2613
  return list(set(netlist))
2573
2614
 
2574
2615
  def get_component_net_connection_info(self, refdes):
@@ -2594,9 +2635,9 @@ class Components(object):
2594
2635
  """
2595
2636
  component_pins = self.get_pin_from_component(refdes)
2596
2637
  data = {"refdes": [], "pin_name": [], "net_name": []}
2597
- for pin_obj in component_pins:
2598
- pin_name = pin_obj.GetName()
2599
- net_name = pin_obj.GetNet().GetName()
2638
+ for pin in component_pins:
2639
+ pin_name = pin._edb_object.GetName()
2640
+ net_name = pin._edb_object.GetNet().GetName()
2600
2641
  if pin_name is not None:
2601
2642
  data["refdes"].append(refdes)
2602
2643
  data["pin_name"].append(pin_name)