pyedb 0.57.0__tar.gz → 0.58.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.58.0}/PKG-INFO +4 -5
- {pyedb-0.57.0 → pyedb-0.58.0}/pyproject.toml +3 -6
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/__init__.py +1 -1
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/cfg_pin_groups.py +2 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/hierarchy/component.py +2 -8
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/layout.py +1 -1
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/components.py +1 -3
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/edb_data/control_file.py +13 -5
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/edb_data/padstacks_data.py +34 -12
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/edb_data/sources.py +21 -2
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/general.py +1 -6
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/layout_validation.py +8 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/sim_setup_data/io/siwave.py +53 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/stackup.py +5 -32
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/utilities/hfss_simulation_setup.py +81 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/utilities/siwave_simulation_setup.py +259 -11
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/edb.py +26 -13
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/extensions/create_cell_array.py +48 -44
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/generic/general_methods.py +24 -36
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/generic/plot.py +8 -23
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/generic/process.py +78 -10
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/components.py +7 -5
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/control_file.py +13 -5
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/definition/padstack_def.py +10 -5
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/hierarchy/component.py +2 -9
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/modeler.py +28 -8
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/padstacks.py +62 -103
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/primitive/padstack_instance.py +41 -12
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/primitive/path.py +13 -13
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +79 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/source_excitations.py +7 -7
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/stackup.py +5 -33
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/terminal/padstack_instance_terminal.py +9 -11
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/terminal/point_terminal.py +30 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/terminal/terminal.py +16 -2
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/utility/xml_control_file.py +13 -5
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/edb.py +39 -13
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/aedtlib_personalib_install.py +2 -2
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/downloads.py +18 -3
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +2 -1
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py +0 -1
- {pyedb-0.57.0 → pyedb-0.58.0}/LICENSE +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/README.md +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/common/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/common/nets.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/component_libraries/ansys_components.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/cfg_boundaries.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/cfg_common.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/cfg_components.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/cfg_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/cfg_general.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/cfg_modeler.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/cfg_nets.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/cfg_operations.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/cfg_package_definition.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/cfg_padstacks.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/cfg_ports_sources.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/cfg_s_parameter_models.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/cfg_setup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/cfg_spice_models.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/cfg_stackup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/cfg_terminals.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/configuration/configuration.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/clr_module.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/Variables.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/connectable.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/hierarchy/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/hierarchy/hierarchy_obj.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/hierarchy/model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/hierarchy/netlist_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/hierarchy/pin_pair_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/hierarchy/s_parameter_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/hierarchy/spice_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/layout_obj.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/primitive/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/primitive/bondwire.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/primitive/path.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/primitive/primitive.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/terminal/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/terminal/bundle_terminal.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/terminal/edge_terminal.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/terminal/padstack_instance_terminal.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/terminal/pingroup_terminal.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/terminal/point_terminal.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/terminal/terminal.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/cell/voltage_regulator.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/definition/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/definition/component_def.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/definition/component_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/definition/definition_obj.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/definition/definitions.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/definition/package_def.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/dotnet/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/dotnet/database.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/dotnet/primitive.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/edb_data/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/edb_data/design_options.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/edb_data/edbvalue.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/edb_data/hfss_extent_info.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/edb_data/layer_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/edb_data/nets_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/edb_data/ports.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/edb_data/primitives_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/edb_data/raptor_x_simulation_setup_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/edb_data/simulation_configuration.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/edb_data/utilities.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/edb_data/variables.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/geometry/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/geometry/point_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/geometry/polygon_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/hfss.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/layout_obj_instance.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/materials.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/modeler.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/net_class.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/nets.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/padstack.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/sim_setup_data/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/sim_setup_data/data/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/sim_setup_data/data/adaptive_frequency_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/sim_setup_data/data/mesh_operation.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/sim_setup_data/data/settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/sim_setup_data/data/sim_setup_info.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/sim_setup_data/data/simulation_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/sim_setup_data/data/siw_dc_ir_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/sim_setup_data/data/sweep_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/sim_setup_data/io/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/siwave.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/utilities/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/utilities/heatsink.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/utilities/obj_base.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/utilities/simulation_setup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/utilities/siwave_cpa_simulation_setup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/dotnet/database/utilities/value.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/edb_logger.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/exceptions.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/extensions/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/extensions/via_design_backend.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/generic/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/generic/constants.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/generic/data_handlers.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/generic/design_types.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/generic/filesystem.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/generic/grpc_warnings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/generic/settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/_typing.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/definition/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/definition/component_def.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/definition/component_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/definition/component_pin.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/definition/materials.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/definition/n_port_component_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/definition/package_def.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/definitions.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/general.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/geometry/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/geometry/arc_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/geometry/point_3d_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/geometry/point_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/geometry/polygon_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/hfss.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/hierarchy/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/hierarchy/model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/hierarchy/netlist_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/hierarchy/pin_pair_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/hierarchy/pingroup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/hierarchy/s_parameter_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/hierarchy/spice_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/layers/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/layers/layer.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/layers/stackup_layer.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/layout/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/layout/cell.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/layout/layout.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/layout/voltage_regulator.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/layout_validation.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/net/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/net/differential_pair.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/net/extended_net.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/net/net.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/net/net_class.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/nets.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/ports/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/ports/ports.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/primitive/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/primitive/bondwire.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/primitive/circle.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/primitive/polygon.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/primitive/primitive.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/primitive/rectangle.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/adaptive_frequency.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_meshing_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/hfss_dcr_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/hfss_general_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/hfss_settings_options.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/hfss_solver_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/mesh_operation.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_advanced_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_general_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_settings.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_setup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/siwave_cpa_simulation_setup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/siwave_dcir_simulation_setup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/simulation_setup/sweep_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/siwave.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/terminal/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/terminal/bundle_terminal.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/terminal/edge_terminal.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/terminal/pingroup_terminal.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/utility/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/utility/constants.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/utility/heat_sink.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/utility/hfss_extent_info.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/utility/layout_statistics.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/utility/rlc.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/utility/sources.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/utility/sweep_data_distribution.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/database/utility/value.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/edb_init.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/grpc/rpc_session.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/bom/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/bom/bom.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/bom/bom_item.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/bom/characteristics.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/bom/refdes.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/content/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/content/color.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/content/content.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/content/dictionary_color.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/content/dictionary_fill.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/content/dictionary_line.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/content/entry_color.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/content/entry_line.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/content/fill.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/content/layer_ref.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/content/standard_geometries_dictionary.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/cad_data.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/component.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/drill.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/feature.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/layer.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/layer_feature.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/logical_net.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/outline.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/package.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_def.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_instance.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/path.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/phy_net.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/pin.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/polygon.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/profile.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/stackup.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_group.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_layer.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_data/step.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/cad_header.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/ecad.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ecad/spec.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/history_record.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/ipc2581.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/ipc2581/logistic_header.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/libraries/common.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/libraries/rf_libraries/base_functions.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/libraries/rf_libraries/planar_antennas.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/decorators.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/misc.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/pyedb.runtimeconfig.json +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/siw_feature_config/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/siw_feature_config/emc/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/siw_feature_config/emc/component_tags.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/siw_feature_config/emc/net_tags.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/siw_feature_config/emc/tag_library.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/siw_feature_config/emc/xml_generic.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/fd_xtalk_scan_config.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/impedance_scan_config.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/net.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/pins.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/misc/utilities.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/modeler/geometry_operators.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/siwave.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/siwave_core/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/siwave_core/cpa/__init__.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/siwave_core/cpa/simulation_setup_data_model.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/siwave_core/icepak.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.0}/src/pyedb/siwave_core/product_properties.py +0 -0
- {pyedb-0.57.0 → pyedb-0.58.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.58.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
|
|
@@ -1518,8 +1518,6 @@ class Components(object):
|
|
|
1518
1518
|
if componentDefinitionPin.IsNull():
|
|
1519
1519
|
self._logger.error("Failed to create component definition pin {}-{}".format(name, pin.GetName()))
|
|
1520
1520
|
return None
|
|
1521
|
-
else:
|
|
1522
|
-
self._logger.warning("Found existing component definition for footprint {}".format(name))
|
|
1523
1521
|
return componentDefinition
|
|
1524
1522
|
|
|
1525
1523
|
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
|
|
|
@@ -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.")
|
|
@@ -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")
|
|
@@ -382,6 +382,87 @@ class HfssSimulationSetup(SimulationSetup):
|
|
|
382
382
|
return False
|
|
383
383
|
return True
|
|
384
384
|
|
|
385
|
+
def auto_mesh_operation(
|
|
386
|
+
self,
|
|
387
|
+
trace_ratio_seeding: float = 3,
|
|
388
|
+
signal_via_side_number: int = 12,
|
|
389
|
+
power_ground_via_side_number: int = 6,
|
|
390
|
+
) -> bool:
|
|
391
|
+
"""
|
|
392
|
+
Automatically create and apply a length-based mesh operation for all nets in the design.
|
|
393
|
+
|
|
394
|
+
The method inspects every signal net, determines the smallest trace width, and
|
|
395
|
+
seeds a :class:`LengthMeshOperation` whose maximum element length is
|
|
396
|
+
``smallest_width * trace_ratio_seeding``. Signal vias (padstack instances) are
|
|
397
|
+
configured with the requested number of polygon sides, while power/ground vias
|
|
398
|
+
are updated through the global ``num_via_sides`` advanced setting.
|
|
399
|
+
|
|
400
|
+
Parameters
|
|
401
|
+
----------
|
|
402
|
+
trace_ratio_seeding : float, optional
|
|
403
|
+
Ratio used to compute the maximum allowed element length from the
|
|
404
|
+
smallest trace width found in the design. The resulting length is
|
|
405
|
+
``min_width * trace_ratio_seeding``. Defaults to ``3``.
|
|
406
|
+
signal_via_side_number : int, optional
|
|
407
|
+
Number of sides (i.e. faceting resolution) assigned to **signal**
|
|
408
|
+
padstack instances that belong to the nets being meshed.
|
|
409
|
+
Defaults to ``12``.
|
|
410
|
+
power_ground_via_side_number : int, optional
|
|
411
|
+
Number of sides assigned to **power/ground** vias via the global
|
|
412
|
+
``advanced.num_via_sides`` setting. Defaults to ``6``.
|
|
413
|
+
|
|
414
|
+
Returns
|
|
415
|
+
-------
|
|
416
|
+
bool
|
|
417
|
+
|
|
418
|
+
Raises
|
|
419
|
+
------
|
|
420
|
+
ValueError
|
|
421
|
+
If the design contains no terminals, making mesh seeding impossible.
|
|
422
|
+
|
|
423
|
+
Notes
|
|
424
|
+
-----
|
|
425
|
+
* Only primitives of type ``"path"`` are considered when determining the
|
|
426
|
+
smallest trace width.
|
|
427
|
+
* Every ``(net, layer, sheet)`` tuple required by the mesher is
|
|
428
|
+
automatically populated; sheet are explicitly marked as ``False``.
|
|
429
|
+
* Existing contents of :attr:`mesh_operations` are **replaced** by the
|
|
430
|
+
single new operation.
|
|
431
|
+
|
|
432
|
+
Examples
|
|
433
|
+
--------
|
|
434
|
+
>>> setup = edbapp.setups["my_setup"]
|
|
435
|
+
>>> setup.auto_mesh_operation(trace_ratio_seeding=4, signal_vias_side_number=16)
|
|
436
|
+
>>> setup.mesh_operations[0].max_length
|
|
437
|
+
'2.5um'
|
|
438
|
+
"""
|
|
439
|
+
net_for_mesh_seeding = list(set([term.net.name for term in list(self._pedb.terminals.values())]))
|
|
440
|
+
if not net_for_mesh_seeding:
|
|
441
|
+
raise ValueError("No terminals found to seed the mesh operation.")
|
|
442
|
+
net_layer_dict = {}
|
|
443
|
+
smallest_width = 1e3
|
|
444
|
+
for net in net_for_mesh_seeding:
|
|
445
|
+
net_layer_dict[net] = []
|
|
446
|
+
traces = [prim for prim in self._pedb.modeler.primitives_by_net[net] if prim.type.lower() == "path"]
|
|
447
|
+
_width = min([trace.width for trace in traces], default=1e3)
|
|
448
|
+
if _width < smallest_width:
|
|
449
|
+
smallest_width = _width
|
|
450
|
+
layers = list(set([trace.layer.name for trace in traces]))
|
|
451
|
+
for layer in layers:
|
|
452
|
+
net_layer_dict[net].append(layer)
|
|
453
|
+
for inst in [
|
|
454
|
+
inst for inst in list(self._pedb.padstacks.padstack_instances.values()) if inst.net_name == net
|
|
455
|
+
]:
|
|
456
|
+
inst.side_number = signal_via_side_number
|
|
457
|
+
self.add_length_mesh_operation(
|
|
458
|
+
net_layer_list=net_layer_dict,
|
|
459
|
+
name=f"{self.name}_AutoMeshOp",
|
|
460
|
+
max_length=f"{round(float((smallest_width * trace_ratio_seeding)), 9) * 1e6}um",
|
|
461
|
+
)
|
|
462
|
+
if f"{self.name}_AutoMeshOp" in self.mesh_operations:
|
|
463
|
+
return True
|
|
464
|
+
return False
|
|
465
|
+
|
|
385
466
|
|
|
386
467
|
class HFSSPISimulationSetup(SimulationSetup):
|
|
387
468
|
"""Manages EDB methods for HFSSPI simulation setup."""
|