pyedb 0.57.0__tar.gz → 0.59.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.
- {pyedb-0.57.0 → pyedb-0.59.0}/PKG-INFO +4 -5
- {pyedb-0.57.0 → pyedb-0.59.0}/pyproject.toml +3 -6
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/__init__.py +1 -1
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_pin_groups.py +2 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/hierarchy/component.py +2 -8
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/layout.py +1 -1
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/components.py +38 -42
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/control_file.py +13 -5
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/padstacks_data.py +34 -12
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/sources.py +21 -2
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/general.py +4 -8
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/layout_validation.py +8 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/data/settings.py +2 -2
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/io/siwave.py +53 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/stackup.py +5 -32
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/utilities/hfss_simulation_setup.py +81 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/utilities/siwave_simulation_setup.py +259 -11
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/edb.py +26 -13
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/extensions/create_cell_array.py +48 -44
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/general_methods.py +24 -36
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/plot.py +8 -23
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/process.py +78 -10
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/components.py +7 -5
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/control_file.py +13 -5
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/definition/padstack_def.py +10 -5
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/hierarchy/component.py +2 -9
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/modeler.py +28 -8
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/padstacks.py +62 -103
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/primitive/padstack_instance.py +41 -12
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/primitive/path.py +13 -13
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +79 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/source_excitations.py +7 -7
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/stackup.py +5 -33
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/terminal/padstack_instance_terminal.py +9 -11
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/terminal/point_terminal.py +30 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/terminal/terminal.py +16 -2
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/xml_control_file.py +13 -5
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/edb.py +46 -20
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/edb_init.py +7 -19
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/aedtlib_personalib_install.py +2 -2
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/downloads.py +18 -3
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +2 -1
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py +0 -1
- pyedb-0.59.0/src/pyedb/workflows/sipi/hfss_auto_configuration.py +711 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/LICENSE +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/README.md +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/common/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/common/nets.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/component_libraries/ansys_components.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_boundaries.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_common.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_components.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_general.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_modeler.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_nets.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_operations.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_package_definition.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_padstacks.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_ports_sources.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_s_parameter_models.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_setup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_spice_models.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_stackup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_terminals.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/configuration.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/clr_module.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/Variables.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/connectable.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/hierarchy/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/hierarchy/hierarchy_obj.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/hierarchy/model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/hierarchy/netlist_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/hierarchy/pin_pair_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/hierarchy/s_parameter_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/hierarchy/spice_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/layout_obj.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/primitive/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/primitive/bondwire.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/primitive/path.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/primitive/primitive.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/terminal/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/terminal/bundle_terminal.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/terminal/edge_terminal.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/terminal/padstack_instance_terminal.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/terminal/pingroup_terminal.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/terminal/point_terminal.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/terminal/terminal.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/voltage_regulator.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/definition/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/definition/component_def.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/definition/component_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/definition/definition_obj.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/definition/definitions.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/definition/package_def.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/dotnet/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/dotnet/database.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/dotnet/primitive.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/design_options.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/edbvalue.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/hfss_extent_info.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/layer_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/nets_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/ports.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/primitives_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/raptor_x_simulation_setup_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/simulation_configuration.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/utilities.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/variables.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/geometry/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/geometry/point_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/geometry/polygon_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/hfss.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/layout_obj_instance.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/materials.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/modeler.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/net_class.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/nets.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/padstack.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/data/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/data/adaptive_frequency_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/data/mesh_operation.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/data/sim_setup_info.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/data/simulation_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/data/siw_dc_ir_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/data/sweep_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/io/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/siwave.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/utilities/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/utilities/heatsink.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/utilities/obj_base.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/utilities/simulation_setup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/utilities/siwave_cpa_simulation_setup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/utilities/value.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/edb_logger.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/exceptions.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/extensions/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/extensions/via_design_backend.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/constants.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/data_handlers.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/design_types.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/filesystem.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/grpc_warnings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/_typing.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/definition/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/definition/component_def.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/definition/component_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/definition/component_pin.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/definition/materials.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/definition/n_port_component_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/definition/package_def.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/definitions.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/general.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/geometry/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/geometry/arc_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/geometry/point_3d_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/geometry/point_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/geometry/polygon_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/hfss.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/hierarchy/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/hierarchy/model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/hierarchy/netlist_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/hierarchy/pin_pair_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/hierarchy/pingroup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/hierarchy/s_parameter_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/hierarchy/spice_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/layers/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/layers/layer.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/layers/stackup_layer.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/layout/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/layout/cell.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/layout/layout.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/layout/voltage_regulator.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/layout_validation.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/net/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/net/differential_pair.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/net/extended_net.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/net/net.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/net/net_class.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/nets.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/ports/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/ports/ports.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/primitive/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/primitive/bondwire.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/primitive/circle.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/primitive/polygon.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/primitive/primitive.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/primitive/rectangle.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/adaptive_frequency.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_meshing_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/hfss_dcr_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/hfss_general_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/hfss_settings_options.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/hfss_solver_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/mesh_operation.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_advanced_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_general_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_setup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/siwave_cpa_simulation_setup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/siwave_dcir_simulation_setup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/sweep_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/siwave.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/terminal/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/terminal/bundle_terminal.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/terminal/edge_terminal.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/terminal/pingroup_terminal.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/constants.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/heat_sink.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/hfss_extent_info.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/layout_statistics.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/rlc.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/sources.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/sweep_data_distribution.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/value.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/rpc_session.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/bom/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/bom/bom.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/bom/bom_item.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/bom/characteristics.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/bom/refdes.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/color.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/content.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/dictionary_color.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/dictionary_fill.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/dictionary_line.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/entry_color.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/entry_line.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/fill.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/layer_ref.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/standard_geometries_dictionary.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/cad_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/component.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/drill.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/feature.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/layer.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/layer_feature.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/logical_net.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/outline.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/package.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_def.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_instance.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/path.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/phy_net.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/pin.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/polygon.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/profile.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/stackup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_group.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_layer.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/step.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_header.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/ecad.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/spec.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/history_record.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ipc2581.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/logistic_header.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/libraries/common.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/libraries/rf_libraries/base_functions.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/libraries/rf_libraries/planar_antennas.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/decorators.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/misc.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/pyedb.runtimeconfig.json +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/emc/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/emc/component_tags.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/emc/net_tags.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/emc/tag_library.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/emc/xml_generic.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/fd_xtalk_scan_config.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/impedance_scan_config.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/net.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/pins.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/utilities.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/modeler/geometry_operators.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/siwave.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/siwave_core/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/siwave_core/cpa/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/siwave_core/cpa/simulation_setup_data_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/siwave_core/icepak.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/siwave_core/product_properties.py +0 -0
- {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/workflow.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyedb
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.59.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>
|
|
@@ -29,6 +29,8 @@ Requires-Dist: shapely
|
|
|
29
29
|
Requires-Dist: scikit-rf
|
|
30
30
|
Requires-Dist: ansys-edb-core>=0.2.0
|
|
31
31
|
Requires-Dist: psutil
|
|
32
|
+
Requires-Dist: defusedxml>=0.7,<8.0
|
|
33
|
+
Requires-Dist: matplotlib>=3.5.0,<3.11
|
|
32
34
|
Requires-Dist: ansys-sphinx-theme>=1.0.0,<1.5 ; extra == "doc"
|
|
33
35
|
Requires-Dist: imageio>=2.30.0,<2.38 ; extra == "doc"
|
|
34
36
|
Requires-Dist: ipython>=8.13.0,<8.32 ; extra == "doc"
|
|
@@ -41,14 +43,12 @@ Requires-Dist: numpydoc>=1.5.0,<1.9 ; extra == "doc"
|
|
|
41
43
|
Requires-Dist: pypandoc>=1.10.0,<1.16 ; extra == "doc"
|
|
42
44
|
Requires-Dist: recommonmark ; extra == "doc"
|
|
43
45
|
Requires-Dist: Sphinx>=7.1.0,<8.2 ; extra == "doc"
|
|
44
|
-
Requires-Dist: sphinx-autobuild==
|
|
46
|
+
Requires-Dist: sphinx-autobuild==2024.10.3 ; extra == "doc" and ( python_version == '3.8')
|
|
45
47
|
Requires-Dist: sphinx-autobuild==2024.10.3 ; extra == "doc" and ( python_version > '3.8')
|
|
46
48
|
Requires-Dist: sphinx-copybutton>=0.5.0,<0.6 ; extra == "doc"
|
|
47
49
|
Requires-Dist: sphinx-gallery>=0.14.0,<0.20 ; extra == "doc"
|
|
48
50
|
Requires-Dist: sphinx_design>=0.4.0,<0.7 ; extra == "doc"
|
|
49
51
|
Requires-Dist: shapely ; extra == "doc"
|
|
50
|
-
Requires-Dist: matplotlib>=3.5.0,<3.11 ; extra == "full"
|
|
51
|
-
Requires-Dist: shapely ; extra == "full"
|
|
52
52
|
Requires-Dist: matplotlib>=3.5.0,<3.11 ; extra == "tests"
|
|
53
53
|
Requires-Dist: mock>=5.1.0,<5.3 ; extra == "tests"
|
|
54
54
|
Requires-Dist: pytest>=7.4.0,<8.5 ; extra == "tests"
|
|
@@ -62,7 +62,6 @@ Project-URL: Documentation, https://edb.docs.pyansys.com
|
|
|
62
62
|
Project-URL: Releases, https://github.com/ansys/pyedb/releases
|
|
63
63
|
Project-URL: Source, https://github.com/ansys/pyedb
|
|
64
64
|
Provides-Extra: doc
|
|
65
|
-
Provides-Extra: full
|
|
66
65
|
Provides-Extra: tests
|
|
67
66
|
|
|
68
67
|
<!-- -->
|
|
@@ -38,6 +38,8 @@ dependencies = [
|
|
|
38
38
|
"scikit-rf",
|
|
39
39
|
"ansys-edb-core>=0.2.0",
|
|
40
40
|
"psutil",
|
|
41
|
+
"defusedxml>=0.7,<8.0",
|
|
42
|
+
"matplotlib>=3.5.0,<3.11",
|
|
41
43
|
]
|
|
42
44
|
|
|
43
45
|
[project.optional-dependencies]
|
|
@@ -64,17 +66,12 @@ doc = [
|
|
|
64
66
|
# NOTE: Remove recommonmark once examples are reworked.
|
|
65
67
|
"recommonmark",
|
|
66
68
|
"Sphinx>=7.1.0,<8.2",
|
|
67
|
-
"sphinx-autobuild==
|
|
69
|
+
"sphinx-autobuild==2024.10.3; python_version == '3.8'",
|
|
68
70
|
"sphinx-autobuild==2024.10.3; python_version > '3.8'",
|
|
69
71
|
"sphinx-copybutton>=0.5.0,<0.6",
|
|
70
72
|
"sphinx-gallery>=0.14.0,<0.20",
|
|
71
73
|
"sphinx_design>=0.4.0,<0.7",
|
|
72
74
|
"shapely",
|
|
73
|
-
|
|
74
|
-
]
|
|
75
|
-
full = [
|
|
76
|
-
"matplotlib>=3.5.0,<3.11",
|
|
77
|
-
"shapely",
|
|
78
75
|
]
|
|
79
76
|
|
|
80
77
|
|
|
@@ -35,6 +35,8 @@ class CfgPinGroups:
|
|
|
35
35
|
layout_pin_groups = self._pedb.siwave.pin_groups
|
|
36
36
|
for pg_name, pg_obj in layout_pin_groups.items():
|
|
37
37
|
pins = list(pg_obj.pins.keys())
|
|
38
|
+
if len(pins) == 0: # pragma: no cover
|
|
39
|
+
continue
|
|
38
40
|
refdes = list(pg_obj.pins.values())[0].component.name
|
|
39
41
|
cfg_pg = CfgPinGroup(
|
|
40
42
|
self._pedb,
|
|
@@ -25,6 +25,8 @@ import re
|
|
|
25
25
|
from typing import Optional
|
|
26
26
|
import warnings
|
|
27
27
|
|
|
28
|
+
import numpy as np
|
|
29
|
+
|
|
28
30
|
from pyedb.dotnet.database.cell.hierarchy.hierarchy_obj import Group
|
|
29
31
|
from pyedb.dotnet.database.cell.hierarchy.model import PinPairModel, SPICEModel
|
|
30
32
|
from pyedb.dotnet.database.cell.hierarchy.netlist_model import NetlistModel
|
|
@@ -33,14 +35,6 @@ from pyedb.dotnet.database.cell.hierarchy.s_parameter_model import SparamModel
|
|
|
33
35
|
from pyedb.dotnet.database.cell.hierarchy.spice_model import SpiceModel
|
|
34
36
|
from pyedb.dotnet.database.definition.package_def import PackageDef
|
|
35
37
|
from pyedb.dotnet.database.edb_data.padstacks_data import EDBPadstackInstance
|
|
36
|
-
|
|
37
|
-
try:
|
|
38
|
-
import numpy as np
|
|
39
|
-
except ImportError:
|
|
40
|
-
warnings.warn(
|
|
41
|
-
"The NumPy module is required to run some functionalities of EDB.\n"
|
|
42
|
-
"Install with \n\npip install numpy\n\nRequires CPython."
|
|
43
|
-
)
|
|
44
38
|
from pyedb.generic.general_methods import get_filename_without_extension
|
|
45
39
|
|
|
46
40
|
|
|
@@ -409,8 +409,8 @@ class Layout(ObjBase):
|
|
|
409
409
|
"""
|
|
410
410
|
candidates = self.padstack_instances
|
|
411
411
|
if instance_id is not None:
|
|
412
|
-
instance_id = int(instance_id)
|
|
413
412
|
value = instance_id if isinstance(instance_id, list) else [instance_id]
|
|
413
|
+
value = [int(i) for i in value]
|
|
414
414
|
candidates = [i for i in candidates if i.id in value]
|
|
415
415
|
|
|
416
416
|
if aedt_name is not None:
|
|
@@ -961,7 +961,7 @@ class Components(object):
|
|
|
961
961
|
if not isinstance(port_type, int):
|
|
962
962
|
if port_type == "circuit_port":
|
|
963
963
|
port_type = SourceType.CircPort
|
|
964
|
-
elif port_type
|
|
964
|
+
elif port_type in ["coaxial_port", "coax_port"]:
|
|
965
965
|
port_type = SourceType.CoaxPort
|
|
966
966
|
elif port_type == "lumped_port":
|
|
967
967
|
port_type = SourceType.LumpedPort
|
|
@@ -1011,49 +1011,47 @@ class Components(object):
|
|
|
1011
1011
|
return False
|
|
1012
1012
|
pad_params = self._padstack.get_pad_parameters(pin=cmp_pins[0], layername=pin_layers[0], pad_type=0)
|
|
1013
1013
|
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
sball_diam = min([self._pedb.edb_value(val).ToDouble() for val in pad_params[1]])
|
|
1026
|
-
sball_mid_diam = sball_diam
|
|
1027
|
-
else: # pragma no cover
|
|
1028
|
-
sball_diam = solder_balls_size
|
|
1029
|
-
if solder_balls_mid_size:
|
|
1030
|
-
sball_mid_diam = solder_balls_mid_size
|
|
1031
|
-
else:
|
|
1032
|
-
sball_mid_diam = solder_balls_size
|
|
1033
|
-
if not solder_balls_height: # pragma no cover
|
|
1034
|
-
solder_balls_height = 2 * sball_diam / 3
|
|
1014
|
+
if not solder_balls_height:
|
|
1015
|
+
solder_balls_height = self.instances[component.GetName()].solder_ball_height
|
|
1016
|
+
if not solder_balls_size:
|
|
1017
|
+
solder_balls_size = self.instances[component.GetName()].solder_ball_diameter[0]
|
|
1018
|
+
if not solder_balls_mid_size:
|
|
1019
|
+
solder_balls_mid_size = self.instances[component.GetName()].solder_ball_diameter[1]
|
|
1020
|
+
|
|
1021
|
+
if not pad_params[0] == 7:
|
|
1022
|
+
if not solder_balls_size: # pragma no cover
|
|
1023
|
+
sball_diam = min([self._pedb.edb_value(val).ToDouble() for val in pad_params[1]])
|
|
1024
|
+
sball_mid_diam = sball_diam
|
|
1035
1025
|
else: # pragma no cover
|
|
1036
|
-
|
|
1037
|
-
bbox = pad_params[1]
|
|
1038
|
-
sball_diam = min([abs(bbox[2] - bbox[0]), abs(bbox[3] - bbox[1])]) * 0.8
|
|
1039
|
-
else:
|
|
1040
|
-
sball_diam = solder_balls_size
|
|
1041
|
-
if not solder_balls_height:
|
|
1042
|
-
solder_balls_height = 2 * sball_diam / 3
|
|
1026
|
+
sball_diam = solder_balls_size
|
|
1043
1027
|
if solder_balls_mid_size:
|
|
1044
1028
|
sball_mid_diam = solder_balls_mid_size
|
|
1045
1029
|
else:
|
|
1046
|
-
sball_mid_diam =
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1030
|
+
sball_mid_diam = solder_balls_size
|
|
1031
|
+
if not solder_balls_height: # pragma no cover
|
|
1032
|
+
solder_balls_height = 2 * sball_diam / 3
|
|
1033
|
+
else: # pragma no cover
|
|
1034
|
+
if not solder_balls_size:
|
|
1035
|
+
bbox = pad_params[1]
|
|
1036
|
+
sball_diam = min([abs(bbox[2] - bbox[0]), abs(bbox[3] - bbox[1])]) * 0.8
|
|
1037
|
+
else:
|
|
1038
|
+
sball_diam = solder_balls_size
|
|
1039
|
+
if not solder_balls_height:
|
|
1040
|
+
solder_balls_height = 2 * sball_diam / 3
|
|
1041
|
+
if solder_balls_mid_size:
|
|
1042
|
+
sball_mid_diam = solder_balls_mid_size
|
|
1043
|
+
else:
|
|
1044
|
+
sball_mid_diam = sball_diam
|
|
1045
|
+
sball_shape = "Cylinder"
|
|
1046
|
+
if not sball_diam == sball_mid_diam:
|
|
1047
|
+
sball_shape = "Spheroid"
|
|
1048
|
+
self.set_solder_ball(
|
|
1049
|
+
component=component,
|
|
1050
|
+
sball_height=solder_balls_height,
|
|
1051
|
+
sball_diam=sball_diam,
|
|
1052
|
+
sball_mid_diam=sball_mid_diam,
|
|
1053
|
+
shape=sball_shape,
|
|
1054
|
+
)
|
|
1057
1055
|
|
|
1058
1056
|
for pin in cmp_pins:
|
|
1059
1057
|
self._padstack.create_coax_port(padstackinstance=pin, name=port_name)
|
|
@@ -1518,8 +1516,6 @@ class Components(object):
|
|
|
1518
1516
|
if componentDefinitionPin.IsNull():
|
|
1519
1517
|
self._logger.error("Failed to create component definition pin {}-{}".format(name, pin.GetName()))
|
|
1520
1518
|
return None
|
|
1521
|
-
else:
|
|
1522
|
-
self._logger.warning("Found existing component definition for footprint {}".format(name))
|
|
1523
1519
|
return componentDefinition
|
|
1524
1520
|
|
|
1525
1521
|
def create_rlc_component(
|
|
@@ -23,10 +23,12 @@
|
|
|
23
23
|
import copy
|
|
24
24
|
import os
|
|
25
25
|
import re
|
|
26
|
-
import subprocess
|
|
26
|
+
import subprocess # nosec B404
|
|
27
27
|
import sys
|
|
28
28
|
import xml
|
|
29
29
|
|
|
30
|
+
from defusedxml.ElementTree import parse as defused_parse
|
|
31
|
+
|
|
30
32
|
from pyedb.generic.general_methods import ET, env_path, env_value, is_linux
|
|
31
33
|
from pyedb.generic.settings import settings
|
|
32
34
|
from pyedb.misc.aedtlib_personalib_install import write_pretty_xml
|
|
@@ -36,6 +38,11 @@ from pyedb.misc.misc import list_installed_ansysem
|
|
|
36
38
|
def convert_technology_file(tech_file, edbversion=None, control_file=None):
|
|
37
39
|
"""Convert a technology file to edb control file (xml).
|
|
38
40
|
|
|
41
|
+
.. warning::
|
|
42
|
+
Do not execute this function with untrusted function argument, environment
|
|
43
|
+
variables or pyedb global settings.
|
|
44
|
+
See the :ref:`security guide<ref_security_consideration>` for details.
|
|
45
|
+
|
|
39
46
|
Parameters
|
|
40
47
|
----------
|
|
41
48
|
tech_file : str
|
|
@@ -99,10 +106,11 @@ def convert_technology_file(tech_file, edbversion=None, control_file=None):
|
|
|
99
106
|
]
|
|
100
107
|
commands.append(command)
|
|
101
108
|
commands.append(["rm", "-r", vlc_file_name + ".aedb"])
|
|
102
|
-
my_env = os.environ.copy()
|
|
103
109
|
for command in commands:
|
|
104
|
-
|
|
105
|
-
|
|
110
|
+
try:
|
|
111
|
+
subprocess.run(command, check=True) # nosec
|
|
112
|
+
except subprocess.CalledProcessError as e: # nosec
|
|
113
|
+
raise RuntimeError("An error occurred while converting a technology file to edb control file") from e
|
|
106
114
|
if os.path.exists(control_file):
|
|
107
115
|
settings.logger.info("Xml file created.")
|
|
108
116
|
return control_file
|
|
@@ -1213,7 +1221,7 @@ class ControlFile:
|
|
|
1213
1221
|
-------
|
|
1214
1222
|
bool
|
|
1215
1223
|
"""
|
|
1216
|
-
tree =
|
|
1224
|
+
tree = defused_parse(xml_input)
|
|
1217
1225
|
root = tree.getroot()
|
|
1218
1226
|
for el in root:
|
|
1219
1227
|
if el.tag == "Stackup":
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
from collections import OrderedDict
|
|
24
24
|
import math
|
|
25
|
+
import re
|
|
25
26
|
import warnings
|
|
26
27
|
|
|
27
28
|
from pyedb.dotnet.clr_module import String
|
|
@@ -1213,6 +1214,39 @@ class EDBPadstackInstance(Connectable):
|
|
|
1213
1214
|
if not term.is_null:
|
|
1214
1215
|
return term
|
|
1215
1216
|
|
|
1217
|
+
@property
|
|
1218
|
+
def side_number(self):
|
|
1219
|
+
"""Return the number of sides meshed of the padstack instance.
|
|
1220
|
+
Returns
|
|
1221
|
+
-------
|
|
1222
|
+
int
|
|
1223
|
+
Number of sides meshed of the padstack instance.
|
|
1224
|
+
"""
|
|
1225
|
+
side_value = self._edb_object.GetProductProperty(self._pedb._edb.ProductId.Hfss3DLayout, 21)
|
|
1226
|
+
if side_value[0]:
|
|
1227
|
+
return int(re.search(r"(?m)^\s*sid=(\d+)", side_value[1]).group(1))
|
|
1228
|
+
return 0
|
|
1229
|
+
|
|
1230
|
+
@side_number.setter
|
|
1231
|
+
def side_number(self, value):
|
|
1232
|
+
"""Set the number of sides meshed of the padstack instance.
|
|
1233
|
+
|
|
1234
|
+
Parameters
|
|
1235
|
+
----------
|
|
1236
|
+
value : int
|
|
1237
|
+
Number of sides to mesh the padstack instance.
|
|
1238
|
+
|
|
1239
|
+
Returns
|
|
1240
|
+
-------
|
|
1241
|
+
bool
|
|
1242
|
+
True if successful, False otherwise.
|
|
1243
|
+
"""
|
|
1244
|
+
if isinstance(value, int) and 3 <= value <= 64:
|
|
1245
|
+
prop_string = f"$begin ''\n\tsid={value}\n\tmat='copper'\n\tvs='Wirebond'\n$end ''\n"
|
|
1246
|
+
self._edb_object.SetProductProperty(self._pedb._edb.ProductId.Hfss3DLayout, 21, prop_string)
|
|
1247
|
+
else:
|
|
1248
|
+
raise ValueError("Number of sides must be an integer between 3 and 64")
|
|
1249
|
+
|
|
1216
1250
|
@property
|
|
1217
1251
|
def terminal(self):
|
|
1218
1252
|
"""Terminal."""
|
|
@@ -1918,18 +1952,6 @@ class EDBPadstackInstance(Connectable):
|
|
|
1918
1952
|
"""
|
|
1919
1953
|
return int(self._edb_padstackinstance.GetGroup().GetPlacementLayer().GetTopBottomAssociation())
|
|
1920
1954
|
|
|
1921
|
-
@property
|
|
1922
|
-
def side_number(self) -> float:
|
|
1923
|
-
if not self._side_number:
|
|
1924
|
-
prop_string = "$begin ''\n\tsid=3\n\tmat='copper'\n\tvs='Wirebond'\n$end ''\n"
|
|
1925
|
-
self._edb_padstackinstance.SetProductProperty(self._pedb._edb.ProductId.Designer, 21, prop_string)
|
|
1926
|
-
self._side_number = self._edb_padstackinstance.GetProductProperty(self._pedb._edb.ProductId.Designer, 21)
|
|
1927
|
-
return self._side_number
|
|
1928
|
-
|
|
1929
|
-
@side_number.setter
|
|
1930
|
-
def side_number(self, value):
|
|
1931
|
-
self._side_number = self._edb_padstackinstance.GetProductProperty(self._pedb._edb.ProductId.Designer, 21, value)
|
|
1932
|
-
|
|
1933
1955
|
def create_rectangle_in_pad(self, layer_name, return_points=False, partition_max_order=16):
|
|
1934
1956
|
"""Create a rectangle inscribed inside a padstack instance pad.
|
|
1935
1957
|
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
# SOFTWARE.
|
|
22
22
|
|
|
23
|
+
from typing import List, Tuple, Union
|
|
23
24
|
import warnings
|
|
24
25
|
|
|
25
26
|
from pyedb.generic.constants import NodeType, SourceType
|
|
@@ -279,9 +280,27 @@ class PinGroup(object):
|
|
|
279
280
|
@property
|
|
280
281
|
def pins(self):
|
|
281
282
|
"""Gets the pins belong to this pin group."""
|
|
282
|
-
|
|
283
|
+
edb_pin_ids = [edb_pin.GetId() for edb_pin in list(self._edb_object.GetPins())]
|
|
284
|
+
if len(edb_pin_ids) == 0:
|
|
285
|
+
return {}
|
|
286
|
+
else:
|
|
287
|
+
pins = self._pedb.layout.find_padstack_instances(instance_id=edb_pin_ids)
|
|
288
|
+
return {i.name: i for i in pins}
|
|
289
|
+
|
|
290
|
+
def remove_pins(self, pins: Union[str, List[str]]):
|
|
291
|
+
"""Remove pins from the pin group.
|
|
292
|
+
|
|
293
|
+
Parameters
|
|
294
|
+
----------
|
|
295
|
+
pins : str, list
|
|
296
|
+
List of padstack instance names.
|
|
297
|
+
|
|
298
|
+
"""
|
|
299
|
+
_pins = pins if isinstance(pins, Union[list, Tuple]) else [pins]
|
|
283
300
|
|
|
284
|
-
|
|
301
|
+
pin_objs = [j for i, j in self.pins.items() if i in _pins]
|
|
302
|
+
for p in pin_objs:
|
|
303
|
+
self._edb_object.RemovePin(p._edb_object)
|
|
285
304
|
|
|
286
305
|
@property
|
|
287
306
|
def node_pins(self):
|
|
@@ -27,17 +27,12 @@ This module contains EDB general methods and related methods.
|
|
|
27
27
|
|
|
28
28
|
from __future__ import absolute_import # noreorder
|
|
29
29
|
|
|
30
|
+
from enum import Enum
|
|
30
31
|
import logging
|
|
31
32
|
import re
|
|
32
33
|
|
|
33
34
|
from pyedb.dotnet.clr_module import Dictionary, List, Tuple
|
|
34
35
|
|
|
35
|
-
try:
|
|
36
|
-
from enum import Enum
|
|
37
|
-
except ImportError:
|
|
38
|
-
Enum = None
|
|
39
|
-
|
|
40
|
-
|
|
41
36
|
logger = logging.getLogger(__name__)
|
|
42
37
|
|
|
43
38
|
|
|
@@ -56,8 +51,9 @@ def convert_netdict_to_pydict(dict_in):
|
|
|
56
51
|
|
|
57
52
|
"""
|
|
58
53
|
pydict = {}
|
|
59
|
-
|
|
60
|
-
|
|
54
|
+
if dict_in:
|
|
55
|
+
for key in dict_in.Keys:
|
|
56
|
+
pydict[key] = dict_in[key]
|
|
61
57
|
return pydict
|
|
62
58
|
|
|
63
59
|
|
|
@@ -339,3 +339,11 @@ class LayoutValidation:
|
|
|
339
339
|
if fix:
|
|
340
340
|
obj.aedt_name = f"via_{obj.id}"
|
|
341
341
|
self._pedb.logger.info(f"Found {counts}/{len(pds)} padstacks have no name.")
|
|
342
|
+
|
|
343
|
+
@execution_timer("empty_pin_group")
|
|
344
|
+
def delete_empty_pin_groups(self):
|
|
345
|
+
for name, pg in self._pedb.siwave.pin_groups.items():
|
|
346
|
+
pins = pg.pins
|
|
347
|
+
if len(pins) == 0:
|
|
348
|
+
pg.delete()
|
|
349
|
+
self._pedb.logger.info(f"Pin group {name} deleted because it has no pins.")
|
|
@@ -579,14 +579,14 @@ class ViaSettings(object):
|
|
|
579
579
|
-------
|
|
580
580
|
bool
|
|
581
581
|
"""
|
|
582
|
-
if float(self._parent._pedb.
|
|
582
|
+
if float(self._parent._pedb.version) < 2024.1:
|
|
583
583
|
self._parent._pedb.logger.error("Property only supported on Ansys release 2024R1 and later")
|
|
584
584
|
return False
|
|
585
585
|
return self._via_settings.ViaMeshPlating
|
|
586
586
|
|
|
587
587
|
@via_mesh_plating.setter
|
|
588
588
|
def via_mesh_plating(self, value):
|
|
589
|
-
if float(self._parent._pedb.
|
|
589
|
+
if float(self._parent._pedb.version) < 2024.1:
|
|
590
590
|
self._parent._pedb.logger.error("Property only supported on Ansys release 2024R1 and later")
|
|
591
591
|
else:
|
|
592
592
|
self._via_settings.ViaMeshPlating = value
|
|
@@ -713,6 +713,19 @@ class DCAdvancedSettings(SettingsBase):
|
|
|
713
713
|
def max_num_pass(self):
|
|
714
714
|
"""Maximum number of passes.
|
|
715
715
|
|
|
716
|
+
deprecated: Use `max_num_passes` instead.
|
|
717
|
+
|
|
718
|
+
Returns
|
|
719
|
+
-------
|
|
720
|
+
int
|
|
721
|
+
"""
|
|
722
|
+
warnings.warn("`max_num_pass` is deprecated. Use `max_num_passes` instead.", DeprecationWarning)
|
|
723
|
+
return self.max_num_passes
|
|
724
|
+
|
|
725
|
+
@property
|
|
726
|
+
def max_num_passes(self):
|
|
727
|
+
"""Maximum number of passes.
|
|
728
|
+
|
|
716
729
|
Returns
|
|
717
730
|
-------
|
|
718
731
|
int
|
|
@@ -723,6 +736,19 @@ class DCAdvancedSettings(SettingsBase):
|
|
|
723
736
|
def min_num_pass(self):
|
|
724
737
|
"""Minimum number of passes.
|
|
725
738
|
|
|
739
|
+
deprecated: Use `min_num_passes` instead.
|
|
740
|
+
|
|
741
|
+
Returns
|
|
742
|
+
-------
|
|
743
|
+
int
|
|
744
|
+
"""
|
|
745
|
+
warnings.warn("`min_num_pass` is deprecated. Use `min_num_passes` instead.", DeprecationWarning)
|
|
746
|
+
return self.sim_setup_info
|
|
747
|
+
|
|
748
|
+
@property
|
|
749
|
+
def min_num_passes(self):
|
|
750
|
+
"""Minimum number of passes.
|
|
751
|
+
|
|
726
752
|
Returns
|
|
727
753
|
-------
|
|
728
754
|
int
|
|
@@ -753,6 +779,19 @@ class DCAdvancedSettings(SettingsBase):
|
|
|
753
779
|
def num_bondwire_sides(self):
|
|
754
780
|
"""Number of bondwire sides.
|
|
755
781
|
|
|
782
|
+
deprecated: Use `num_bw_sides` instead.
|
|
783
|
+
|
|
784
|
+
Returns
|
|
785
|
+
-------
|
|
786
|
+
int
|
|
787
|
+
"""
|
|
788
|
+
warnings.warn("`num_bondwire_sides` is deprecated. Use `num_bw_sides` instead.", DeprecationWarning)
|
|
789
|
+
return self.num_bw_sides
|
|
790
|
+
|
|
791
|
+
@property
|
|
792
|
+
def num_bw_sides(self):
|
|
793
|
+
"""Number of bondwire sides.
|
|
794
|
+
|
|
756
795
|
Returns
|
|
757
796
|
-------
|
|
758
797
|
int
|
|
@@ -794,6 +833,20 @@ class DCAdvancedSettings(SettingsBase):
|
|
|
794
833
|
def refine_bondwires(self):
|
|
795
834
|
"""Whether to refine mesh along bondwires.
|
|
796
835
|
|
|
836
|
+
deprecated: Use `refine_bws` instead.
|
|
837
|
+
|
|
838
|
+
Returns
|
|
839
|
+
-------
|
|
840
|
+
bool
|
|
841
|
+
``True`` if refine bondwires is used, ``False`` otherwise.
|
|
842
|
+
"""
|
|
843
|
+
warnings.warn("`refine_bondwires` is deprecated. Use `refine_bws` instead.", DeprecationWarning)
|
|
844
|
+
return self.refine_bws
|
|
845
|
+
|
|
846
|
+
@property
|
|
847
|
+
def refine_bws(self):
|
|
848
|
+
"""Whether to refine mesh along bondwires.
|
|
849
|
+
|
|
797
850
|
Returns
|
|
798
851
|
-------
|
|
799
852
|
bool
|
|
@@ -33,6 +33,11 @@ import logging
|
|
|
33
33
|
import math
|
|
34
34
|
import warnings
|
|
35
35
|
|
|
36
|
+
from defusedxml.ElementTree import parse as defused_parse
|
|
37
|
+
import matplotlib.colors as colors
|
|
38
|
+
import numpy as np
|
|
39
|
+
import pandas as pd
|
|
40
|
+
|
|
36
41
|
from pyedb.dotnet.database.edb_data.layer_data import (
|
|
37
42
|
LayerEdbClass,
|
|
38
43
|
StackupLayerEdbClass,
|
|
@@ -42,24 +47,6 @@ from pyedb.dotnet.database.general import convert_py_list_to_net_list
|
|
|
42
47
|
from pyedb.generic.general_methods import ET, generate_unique_name
|
|
43
48
|
from pyedb.misc.aedtlib_personalib_install import write_pretty_xml
|
|
44
49
|
|
|
45
|
-
colors = None
|
|
46
|
-
pd = None
|
|
47
|
-
np = None
|
|
48
|
-
try:
|
|
49
|
-
import matplotlib.colors as colors
|
|
50
|
-
except ImportError:
|
|
51
|
-
colors = None
|
|
52
|
-
|
|
53
|
-
try:
|
|
54
|
-
import numpy as np
|
|
55
|
-
except ImportError:
|
|
56
|
-
np = None
|
|
57
|
-
|
|
58
|
-
try:
|
|
59
|
-
import pandas as pd
|
|
60
|
-
except ImportError:
|
|
61
|
-
pd = None
|
|
62
|
-
|
|
63
50
|
logger = logging.getLogger(__name__)
|
|
64
51
|
|
|
65
52
|
|
|
@@ -473,9 +460,6 @@ class Stackup(LayerCollection):
|
|
|
473
460
|
-------
|
|
474
461
|
bool
|
|
475
462
|
"""
|
|
476
|
-
if not np:
|
|
477
|
-
self._pedb.logger.error("Numpy is needed. Please, install it first.")
|
|
478
|
-
return False
|
|
479
463
|
if not layer_count % 2 == 0:
|
|
480
464
|
return False
|
|
481
465
|
|
|
@@ -973,10 +957,6 @@ class Stackup(LayerCollection):
|
|
|
973
957
|
return self.export(fpath, file_format=file_format, include_material_with_layer=include_material_with_layer)
|
|
974
958
|
|
|
975
959
|
def _export_layer_stackup_to_csv_xlsx(self, fpath=None, file_format=None):
|
|
976
|
-
if not pd:
|
|
977
|
-
self._pedb.logger.error("Pandas is needed. Please, install it first.")
|
|
978
|
-
return False
|
|
979
|
-
|
|
980
960
|
data = {
|
|
981
961
|
"Type": [],
|
|
982
962
|
"Material": [],
|
|
@@ -1996,10 +1976,6 @@ class Stackup(LayerCollection):
|
|
|
1996
1976
|
file_path : str
|
|
1997
1977
|
File path to the CSV file.
|
|
1998
1978
|
"""
|
|
1999
|
-
if not pd:
|
|
2000
|
-
self._pedb.logger.error("Pandas is needed. You must install it first.")
|
|
2001
|
-
return False
|
|
2002
|
-
|
|
2003
1979
|
df = pd.read_csv(file_path, index_col=0)
|
|
2004
1980
|
|
|
2005
1981
|
for name in self.layers.keys(): # pragma: no cover
|
|
@@ -2266,9 +2242,6 @@ class Stackup(LayerCollection):
|
|
|
2266
2242
|
``True`` when successful, ``False`` when failed.
|
|
2267
2243
|
"""
|
|
2268
2244
|
|
|
2269
|
-
if not colors:
|
|
2270
|
-
self._pedb.logger.error("Matplotlib is needed. Please, install it first.")
|
|
2271
|
-
return False
|
|
2272
2245
|
tree = ET.parse(file_path)
|
|
2273
2246
|
root = tree.getroot()
|
|
2274
2247
|
stackup = root.find("Stackup")
|