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