pyedb 0.41.0__tar.gz → 0.42.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.41.0 → pyedb-0.42.0}/PKG-INFO +1 -1
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/__init__.py +1 -1
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/configuration/cfg_boundaries.py +12 -3
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/configuration/cfg_components.py +333 -97
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/configuration/cfg_general.py +6 -4
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/configuration/cfg_pin_groups.py +18 -8
- pyedb-0.42.0/src/pyedb/configuration/cfg_setup.py +318 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/configuration/configuration.py +26 -11
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/terminal/padstack_instance_terminal.py +5 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/terminal/point_terminal.py +12 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/terminal/terminal.py +0 -14
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/dotnet/database.py +2 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/siwave.py +4 -1
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/utilities/simulation_setup.py +8 -3
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/edb.py +2 -5
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/components.py +1 -2
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/hierarchy/component.py +9 -1
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/hierarchy/s_parameter_model.py +2 -2
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/hierarchy/spice_model.py +4 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/utility/hfss_extent_info.py +31 -20
- pyedb-0.41.0/src/pyedb/configuration/cfg_setup.py +0 -244
- {pyedb-0.41.0 → pyedb-0.42.0}/LICENSE +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/README.md +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/pyproject.toml +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/common/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/common/nets.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/component_libraries/ansys_components.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/configuration/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/configuration/cfg_common.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/configuration/cfg_data.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/configuration/cfg_modeler.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/configuration/cfg_nets.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/configuration/cfg_operations.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/configuration/cfg_package_definition.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/configuration/cfg_padstacks.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/configuration/cfg_ports_sources.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/configuration/cfg_s_parameter_models.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/configuration/cfg_spice_models.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/configuration/cfg_stackup.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/clr_module.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/Variables.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/connectable.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/hierarchy/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/hierarchy/component.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/hierarchy/hierarchy_obj.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/hierarchy/model.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/hierarchy/netlist_model.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/hierarchy/pin_pair_model.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/hierarchy/s_parameter_model.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/hierarchy/spice_model.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/layout.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/layout_obj.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/primitive/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/primitive/bondwire.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/primitive/path.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/primitive/primitive.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/terminal/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/terminal/bundle_terminal.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/terminal/edge_terminal.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/terminal/pingroup_terminal.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/cell/voltage_regulator.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/components.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/definition/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/definition/component_def.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/definition/component_model.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/definition/definition_obj.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/definition/definitions.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/definition/package_def.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/dotnet/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/dotnet/primitive.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/edb_data/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/edb_data/control_file.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/edb_data/design_options.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/edb_data/edbvalue.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/edb_data/hfss_extent_info.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/edb_data/layer_data.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/edb_data/nets_data.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/edb_data/padstacks_data.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/edb_data/ports.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/edb_data/primitives_data.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/edb_data/raptor_x_simulation_setup_data.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/edb_data/simulation_configuration.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/edb_data/sources.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/edb_data/utilities.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/edb_data/variables.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/general.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/geometry/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/geometry/point_data.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/geometry/polygon_data.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/hfss.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/layout_obj_instance.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/layout_validation.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/materials.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/modeler.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/net_class.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/nets.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/padstack.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/sim_setup_data/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/sim_setup_data/data/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/sim_setup_data/data/adaptive_frequency_data.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/sim_setup_data/data/mesh_operation.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/sim_setup_data/data/settings.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/sim_setup_data/data/sim_setup_info.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/sim_setup_data/data/simulation_settings.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/sim_setup_data/data/siw_dc_ir_settings.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/sim_setup_data/data/sweep_data.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/sim_setup_data/io/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/sim_setup_data/io/siwave.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/stackup.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/utilities/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/utilities/heatsink.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/utilities/hfss_simulation_setup.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/utilities/obj_base.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/dotnet/database/utilities/siwave_simulation_setup.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/edb_logger.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/exceptions.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/extensions/pre_layout_design_toolkit/via_design.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/generic/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/generic/constants.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/generic/data_handlers.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/generic/design_types.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/generic/filesystem.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/generic/general_methods.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/generic/plot.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/generic/process.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/generic/settings.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/control_file.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/definition/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/definition/component_def.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/definition/component_model.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/definition/component_pin.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/definition/materials.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/definition/n_port_component_model.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/definition/package_def.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/definition/padstack_def.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/definitions.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/general.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/geometry/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/geometry/arc_data.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/geometry/point_3d_data.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/geometry/point_data.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/geometry/polygon_data.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/hfss.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/hierarchy/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/hierarchy/model.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/hierarchy/netlist_model.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/hierarchy/pin_pair_model.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/hierarchy/pingroup.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/layers/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/layers/layer.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/layers/stackup_layer.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/layout/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/layout/cell.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/layout/layout.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/layout/voltage_regulator.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/layout_validation.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/modeler.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/net/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/net/differential_pair.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/net/extended_net.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/net/net.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/net/net_class.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/nets.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/padstacks.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/ports/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/ports/ports.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/primitive/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/primitive/bondwire.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/primitive/circle.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/primitive/padstack_instance.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/primitive/path.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/primitive/polygon.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/primitive/primitive.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/primitive/rectangle.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/simulation_setup/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/simulation_setup/adaptive_frequency.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_meshing_settings.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_settings.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/simulation_setup/hfss_dcr_settings.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/simulation_setup/hfss_general_settings.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/simulation_setup/hfss_settings_options.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_settings.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/simulation_setup/hfss_solver_settings.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/simulation_setup/mesh_operation.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_advanced_settings.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_general_settings.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_settings.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_setup.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/simulation_setup/siwave_dcir_simulation_setup.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/simulation_setup/sweep_data.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/siwave.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/source_excitations.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/stackup.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/terminal/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/terminal/bundle_terminal.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/terminal/edge_terminal.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/terminal/padstack_instance_terminal.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/terminal/pingroup_terminal.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/terminal/point_terminal.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/terminal/terminal.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/utility/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/utility/constants.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/utility/heat_sink.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/utility/layout_statistics.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/utility/rlc.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/utility/simulation_configuration.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/utility/sources.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/utility/sweep_data_distribution.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/database/utility/xml_control_file.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/edb.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/edb_init.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/grpc/rpc_session.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/bom/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/bom/bom.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/bom/bom_item.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/bom/characteristics.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/bom/refdes.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/content/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/content/color.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/content/content.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/content/dictionary_color.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/content/dictionary_fill.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/content/dictionary_line.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/content/entry_color.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/content/entry_line.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/content/fill.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/content/layer_ref.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/content/standard_geometries_dictionary.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/cad_data.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/component.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/drill.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/feature.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/layer.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/layer_feature.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/logical_net.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/outline.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/package.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_def.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_instance.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/path.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/phy_net.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/pin.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/polygon.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/profile.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/stackup.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_group.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_layer.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_data/step.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/cad_header.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/ecad.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ecad/spec.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/history_record.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/ipc2581.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/ipc2581/logistic_header.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/aedtlib_personalib_install.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/downloads.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/misc.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/pyedb.runtimeconfig.json +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/siw_feature_config/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/siw_feature_config/emc/__init__.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/siw_feature_config/emc/component_tags.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/siw_feature_config/emc/net_tags.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/siw_feature_config/emc/tag_library.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/siw_feature_config/emc/xml_generic.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/fd_xtalk_scan_config.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/impedance_scan_config.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/net.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/pins.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/misc/utilities.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/modeler/geometry_operators.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/siwave.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/siwave_core/icepak.py +0 -0
- {pyedb-0.41.0 → pyedb-0.42.0}/src/pyedb/workflow.py +0 -0
|
@@ -53,7 +53,10 @@ class CfgBoundaries(CfgBase):
|
|
|
53
53
|
if self.pml_operation_frequency:
|
|
54
54
|
self._pedb.hfss.hfss_extent_info.operating_freq = self.pml_operation_frequency
|
|
55
55
|
if self.pml_radiation_factor:
|
|
56
|
-
self._pedb.
|
|
56
|
+
if self._pedb.grpc:
|
|
57
|
+
self._pedb.hfss.hfss_extent_info.pml_radiation_factor = self.pml_radiation_factor
|
|
58
|
+
else:
|
|
59
|
+
self._pedb.hfss.hfss_extent_info.radiation_level = self.pml_radiation_factor
|
|
57
60
|
if self.dielectric_extent_type:
|
|
58
61
|
self._pedb.hfss.hfss_extent_info.extent_type = self.dielectric_extent_type.lower()
|
|
59
62
|
# if self.dielectric_base_polygon:
|
|
@@ -81,8 +84,14 @@ class CfgBoundaries(CfgBase):
|
|
|
81
84
|
self.open_region = self._pedb.hfss.hfss_extent_info.use_open_region
|
|
82
85
|
self.open_region_type = self._pedb.hfss.hfss_extent_info.open_region_type
|
|
83
86
|
self.pml_visible = self._pedb.hfss.hfss_extent_info.is_pml_visible
|
|
84
|
-
|
|
85
|
-
|
|
87
|
+
if self._pedb.grpc:
|
|
88
|
+
self.pml_operation_frequency = self._pedb.hfss.hfss_extent_info.operating_freq
|
|
89
|
+
else:
|
|
90
|
+
self.pml_operation_frequency = self._pedb.hfss.hfss_extent_info.operating_freq.tostring
|
|
91
|
+
if self._pedb.grpc:
|
|
92
|
+
self.pml_radiation_factor = self._pedb.hfss.hfss_extent_info.pml_radiation_factor
|
|
93
|
+
else:
|
|
94
|
+
self.pml_radiation_factor = self._pedb.hfss.hfss_extent_info.radiation_level.tostring
|
|
86
95
|
self.dielectric_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
|
|
87
96
|
# self.dielectric_base_polygon = self._pedb.hfss.hfss_extent_info.dielectric_base_polygon
|
|
88
97
|
self.horizontal_padding = self._pedb.hfss.hfss_extent_info.dielectric_extent_size
|
|
@@ -19,14 +19,13 @@
|
|
|
19
19
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
# SOFTWARE.
|
|
22
|
-
import os
|
|
23
22
|
|
|
24
23
|
from pyedb.configuration.cfg_common import CfgBase
|
|
25
24
|
from pyedb.dotnet.database.general import pascal_to_snake, snake_to_pascal
|
|
26
25
|
|
|
27
26
|
|
|
28
27
|
class CfgComponent(CfgBase):
|
|
29
|
-
class
|
|
28
|
+
class Grpc:
|
|
30
29
|
@property
|
|
31
30
|
def pyedb_obj(self):
|
|
32
31
|
return self.parent.pyedb_obj
|
|
@@ -35,6 +34,263 @@ class CfgComponent(CfgBase):
|
|
|
35
34
|
self.parent = parent
|
|
36
35
|
self.pedb = parent.pedb
|
|
37
36
|
|
|
37
|
+
def retrieve_model_properties_from_edb(self):
|
|
38
|
+
from ansys.edb.core.hierarchy.netlist_model import (
|
|
39
|
+
NetlistModel as GrpcNetlistModel,
|
|
40
|
+
)
|
|
41
|
+
from ansys.edb.core.hierarchy.pin_pair_model import (
|
|
42
|
+
PinPairModel as GrpcPinPairModel,
|
|
43
|
+
)
|
|
44
|
+
from ansys.edb.core.hierarchy.sparameter_model import (
|
|
45
|
+
SParameterModel as GrpcSParameterModel,
|
|
46
|
+
)
|
|
47
|
+
from ansys.edb.core.hierarchy.spice_model import (
|
|
48
|
+
SPICEModel as GrpcSPICEModel,
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
c_p = self.pyedb_obj.component_property
|
|
52
|
+
model = c_p.model
|
|
53
|
+
if isinstance(model, GrpcNetlistModel):
|
|
54
|
+
self.parent.netlist_model["netlist"] = model.netlist
|
|
55
|
+
elif isinstance(model, GrpcPinPairModel):
|
|
56
|
+
temp = {}
|
|
57
|
+
for i in model.pin_pairs():
|
|
58
|
+
temp["first_pin"] = i[0]
|
|
59
|
+
temp["second_pin"] = i[1]
|
|
60
|
+
rlc = model.rlc(i)
|
|
61
|
+
temp["is_parallel"] = rlc.is_parallel
|
|
62
|
+
temp["resistance"] = rlc.r.value
|
|
63
|
+
temp["resistance_enabled"] = rlc.r_enabled
|
|
64
|
+
temp["inductance"] = rlc.l.value
|
|
65
|
+
temp["inductance_enabled"] = rlc.l_enabled
|
|
66
|
+
temp["capacitance"] = rlc.c.value
|
|
67
|
+
temp["capacitance_enabled"] = rlc.c_enabled
|
|
68
|
+
self.parent.pin_pair_model.append(temp)
|
|
69
|
+
elif isinstance(model, GrpcSParameterModel):
|
|
70
|
+
self.parent.s_parameter_model["reference_net"] = model.reference_net
|
|
71
|
+
self.parent.s_parameter_model["model_name"] = model.component_model
|
|
72
|
+
elif isinstance(model, GrpcSPICEModel):
|
|
73
|
+
self.parent.spice_model["model_name"] = model.model_name
|
|
74
|
+
self.parent.spice_model["model_path"] = model.model_path
|
|
75
|
+
self.parent.spice_model["sub_circuit"] = model.sub_circuit
|
|
76
|
+
# check bug #525 status
|
|
77
|
+
self.parent.spice_model["terminal_pairs"] = [[i, j] for i, j in dict(model.terminals.items())]
|
|
78
|
+
|
|
79
|
+
def _set_model_properties_to_edb(self):
|
|
80
|
+
c_p = self.pyedb_obj.component_property
|
|
81
|
+
if self.parent.netlist_model:
|
|
82
|
+
m = self.pedb._edb.Cell.Hierarchy.SParameterModel()
|
|
83
|
+
m.net_list = self.parent.netlist_model["netlist"]
|
|
84
|
+
c_p.model = m
|
|
85
|
+
self.component_property = c_p
|
|
86
|
+
elif self.parent.pin_pair_model:
|
|
87
|
+
from ansys.edb.core.hierarchy.pin_pair_model import (
|
|
88
|
+
PinPairModel as GrpcPinPairModel,
|
|
89
|
+
)
|
|
90
|
+
from ansys.edb.core.utility.rlc import Rlc as GrpcRlc
|
|
91
|
+
from ansys.edb.core.utility.value import Value as GrpcValue
|
|
92
|
+
|
|
93
|
+
m = GrpcPinPairModel.create()
|
|
94
|
+
for i in self.parent.pin_pair_model:
|
|
95
|
+
p = (str(i["first_pin"]), str(i["second_pin"]))
|
|
96
|
+
rlc = GrpcRlc(
|
|
97
|
+
r_enabled=i["resistance_enabled"],
|
|
98
|
+
r=GrpcValue(i["resistance"]),
|
|
99
|
+
l_enabled=i["inductance_enabled"],
|
|
100
|
+
l=GrpcValue(i["inductance"]),
|
|
101
|
+
c_enabled=i["capacitance_enabled"],
|
|
102
|
+
c=GrpcValue(i["capacitance"]),
|
|
103
|
+
is_parallel=i["is_parallel"],
|
|
104
|
+
)
|
|
105
|
+
m.set_rlc(pin_pair=p, rlc=rlc)
|
|
106
|
+
c_p.model = m
|
|
107
|
+
from ansys.edb.core.hierarchy.pin_pair_model import (
|
|
108
|
+
PinPairModel as GrpcPinPairModel,
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
self.pyedb_obj.component_property = c_p
|
|
112
|
+
elif self.parent.s_parameter_model:
|
|
113
|
+
from ansys.edb.core.hierarchy.sparameter_model import (
|
|
114
|
+
SParameterModel as GrpcSParameterModel,
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
m = GrpcSParameterModel.create(
|
|
118
|
+
name=self.parent.s_parameter_model["model_name"],
|
|
119
|
+
ref_net=self.parent.s_parameter_model["reference_net"],
|
|
120
|
+
)
|
|
121
|
+
c_p.model = m
|
|
122
|
+
self.component_property = c_p
|
|
123
|
+
elif self.parent.spice_model:
|
|
124
|
+
self.pyedb_obj.assign_spice_model(
|
|
125
|
+
self.parent.spice_model["model_path"],
|
|
126
|
+
self.parent.spice_model["model_name"],
|
|
127
|
+
self.parent.spice_model["sub_circuit"],
|
|
128
|
+
self.parent.spice_model["terminal_pairs"],
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
def _retrieve_ic_die_properties_from_edb(self):
|
|
132
|
+
temp = dict()
|
|
133
|
+
cp = self.pyedb_obj.component_property
|
|
134
|
+
|
|
135
|
+
ic_die_prop = cp.die_property
|
|
136
|
+
die_type = pascal_to_snake(ic_die_prop.die_type.name)
|
|
137
|
+
temp["type"] = die_type
|
|
138
|
+
if not die_type == "no_die":
|
|
139
|
+
temp["orientation"] = pascal_to_snake(ic_die_prop.die_orientation.name)
|
|
140
|
+
if die_type == "wire_bond":
|
|
141
|
+
temp["height"] = ic_die_prop.height.value
|
|
142
|
+
|
|
143
|
+
self.parent.ic_die_properties = temp
|
|
144
|
+
|
|
145
|
+
def _set_ic_die_properties_to_edb(self):
|
|
146
|
+
from ansys.edb.core.definition.die_property import (
|
|
147
|
+
DieOrientation as GrpcDieOrientation,
|
|
148
|
+
)
|
|
149
|
+
from ansys.edb.core.definition.die_property import DieType as GrpcDieType
|
|
150
|
+
from ansys.edb.core.utility.value import Value as GrpcValue
|
|
151
|
+
|
|
152
|
+
cp = self.pyedb_obj.component_property
|
|
153
|
+
ic_die_prop = cp.die_property
|
|
154
|
+
die_type = self.parent.ic_die_properties.get("type")
|
|
155
|
+
die_type = snake_to_pascal(die_type)
|
|
156
|
+
if die_type == "wirebond":
|
|
157
|
+
ic_die_prop.die_type = GrpcDieType.WIREBOND
|
|
158
|
+
elif die_type == "flipchip":
|
|
159
|
+
ic_die_prop.die_type = GrpcDieType.FLIPCHIP
|
|
160
|
+
elif not die_type == "no_die":
|
|
161
|
+
orientation = self.parent.ic_die_properties.get("orientation")
|
|
162
|
+
if orientation == "chip_up":
|
|
163
|
+
ic_die_prop.die_orientation = GrpcDieOrientation.CHIP_UP
|
|
164
|
+
else:
|
|
165
|
+
ic_die_prop.die_orientation = GrpcDieOrientation.CHIP_DOWN
|
|
166
|
+
if die_type == "wire_bond":
|
|
167
|
+
height = self.parent.ic_die_properties.get("height")
|
|
168
|
+
if height:
|
|
169
|
+
ic_die_prop.height = GrpcValue(height)
|
|
170
|
+
cp.die_property = ic_die_prop
|
|
171
|
+
self.pyedb_obj.component_property = cp
|
|
172
|
+
|
|
173
|
+
def _retrieve_solder_ball_properties_from_edb(self):
|
|
174
|
+
temp = dict()
|
|
175
|
+
cp = self.pyedb_obj.component_property
|
|
176
|
+
solder_ball_prop = None
|
|
177
|
+
try:
|
|
178
|
+
solder_ball_prop = cp.solder_ball_property
|
|
179
|
+
diam, mid_diam = solder_ball_prop.get_diameter()
|
|
180
|
+
height = solder_ball_prop.height
|
|
181
|
+
shape = solder_ball_prop.shape.name
|
|
182
|
+
material = solder_ball_prop.material_name
|
|
183
|
+
uses_solder_ball = solder_ball_prop.uses_solderball
|
|
184
|
+
|
|
185
|
+
temp["uses_solder_ball"] = uses_solder_ball
|
|
186
|
+
temp["shape"] = pascal_to_snake(shape)
|
|
187
|
+
temp["diameter"] = diam
|
|
188
|
+
temp["mid_diameter"] = mid_diam
|
|
189
|
+
temp["height"] = height
|
|
190
|
+
temp["material"] = material
|
|
191
|
+
|
|
192
|
+
self.parent.solder_ball_properties = temp
|
|
193
|
+
except:
|
|
194
|
+
if not solder_ball_prop:
|
|
195
|
+
self.pedb.logger.warning(
|
|
196
|
+
f"Failed retrieving solder balls property on component {self.pyedb_obj.name}"
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
def _set_solder_ball_properties_to_edb(self):
|
|
200
|
+
from ansys.edb.core.definition.solder_ball_property import (
|
|
201
|
+
SolderballShape as GrpcSolderballShape,
|
|
202
|
+
)
|
|
203
|
+
from ansys.edb.core.utility.value import Value as GrpcValue
|
|
204
|
+
|
|
205
|
+
cp = self.pyedb_obj.component_property
|
|
206
|
+
solder_ball_prop = cp.solder_ball_property
|
|
207
|
+
shape = self.parent.solder_ball_properties.get("shape")
|
|
208
|
+
if shape == "cylinder":
|
|
209
|
+
solder_ball_prop.shape = GrpcSolderballShape.SOLDERBALL_CYLINDER
|
|
210
|
+
diameter = self.parent.solder_ball_properties["diameter"]
|
|
211
|
+
solder_ball_prop.set_diameter(GrpcValue(diameter), GrpcValue(diameter))
|
|
212
|
+
elif shape == "spheroid":
|
|
213
|
+
solder_ball_prop.shape = GrpcSolderballShape.SOLDERBALL_SPHEROID
|
|
214
|
+
diameter = self.parent.solder_ball_properties["diameter"]
|
|
215
|
+
mid_diameter = self.parent.solder_ball_properties["mid_diameter"]
|
|
216
|
+
solder_ball_prop.set_diameter(GrpcValue(diameter), GrpcValue(mid_diameter))
|
|
217
|
+
else:
|
|
218
|
+
raise ValueError("Solderball shape must be either cylinder or spheroid")
|
|
219
|
+
|
|
220
|
+
solder_ball_prop.height = GrpcValue(self.parent.solder_ball_properties["height"])
|
|
221
|
+
solder_ball_prop.material_name = self.parent.solder_ball_properties.get("material", "solder")
|
|
222
|
+
cp.solder_ball_property = solder_ball_prop
|
|
223
|
+
self.pyedb_obj.component_property = cp
|
|
224
|
+
|
|
225
|
+
def _retrieve_port_properties_from_edb(self):
|
|
226
|
+
temp = dict()
|
|
227
|
+
cp = self.pyedb_obj.component_property
|
|
228
|
+
c_type = self.parent.type.lower()
|
|
229
|
+
if c_type not in ["ic", "io", "other"]:
|
|
230
|
+
return
|
|
231
|
+
else:
|
|
232
|
+
try:
|
|
233
|
+
port_prop = cp.port_property
|
|
234
|
+
reference_height = port_prop.reference_height.value
|
|
235
|
+
reference_size_auto = port_prop.reference_size_auto
|
|
236
|
+
reference_size_x, reference_size_y = port_prop.get_reference_size()
|
|
237
|
+
temp["reference_height"] = reference_height
|
|
238
|
+
temp["reference_size_auto"] = reference_size_auto
|
|
239
|
+
temp["reference_size_x"] = reference_size_x.value
|
|
240
|
+
temp["reference_size_y"] = reference_size_y.value
|
|
241
|
+
self.parent.port_properties = temp
|
|
242
|
+
except:
|
|
243
|
+
self.pedb.logger.warning(f"No port property found on component {self.pyedb_obj.name}")
|
|
244
|
+
|
|
245
|
+
def _set_port_properties_to_edb(self):
|
|
246
|
+
from ansys.edb.core.utility.value import Value as GrpcValue
|
|
247
|
+
|
|
248
|
+
cp = self.pyedb_obj.component_property
|
|
249
|
+
port_prop = cp.port_property
|
|
250
|
+
height = self.parent.port_properties.get("reference_height")
|
|
251
|
+
if height:
|
|
252
|
+
port_prop.reference_height = GrpcValue(height)
|
|
253
|
+
reference_size_auto = self.parent.port_properties.get("reference_size_auto")
|
|
254
|
+
if reference_size_auto is not None:
|
|
255
|
+
port_prop.reference_size_auto = reference_size_auto
|
|
256
|
+
reference_size_x = self.parent.port_properties.get("reference_size_x", 0)
|
|
257
|
+
reference_size_y = self.parent.port_properties.get("reference_size_y", 0)
|
|
258
|
+
port_prop.set_reference_size(GrpcValue(reference_size_x), GrpcValue(reference_size_y))
|
|
259
|
+
cp.port_property = port_prop
|
|
260
|
+
self.pyedb_obj.component_property = cp
|
|
261
|
+
|
|
262
|
+
def set_parameters_to_edb(self):
|
|
263
|
+
if self.parent.type:
|
|
264
|
+
self.pyedb_obj.type = self.parent.type
|
|
265
|
+
if self.parent.enabled:
|
|
266
|
+
self.pyedb_obj.enabled = self.parent.enabled
|
|
267
|
+
|
|
268
|
+
self._set_model_properties_to_edb()
|
|
269
|
+
if self.pyedb_obj.type.lower() == "ic":
|
|
270
|
+
self._set_ic_die_properties_to_edb()
|
|
271
|
+
self._set_port_properties_to_edb()
|
|
272
|
+
self._set_solder_ball_properties_to_edb()
|
|
273
|
+
elif self.pyedb_obj.type.lower() in ["io", "other"]:
|
|
274
|
+
self._set_solder_ball_properties_to_edb()
|
|
275
|
+
self._set_port_properties_to_edb()
|
|
276
|
+
|
|
277
|
+
def retrieve_parameters_from_edb(self):
|
|
278
|
+
self.parent.type = self.pyedb_obj.type
|
|
279
|
+
self.parent.definition = self.pyedb_obj.part_name
|
|
280
|
+
self.parent.reference_designator = self.pyedb_obj.name
|
|
281
|
+
self.retrieve_model_properties_from_edb()
|
|
282
|
+
if self.pyedb_obj.type.lower() == "ic":
|
|
283
|
+
self._retrieve_ic_die_properties_from_edb()
|
|
284
|
+
self._retrieve_port_properties_from_edb()
|
|
285
|
+
self._retrieve_solder_ball_properties_from_edb()
|
|
286
|
+
elif self.pyedb_obj.type.lower() in ["io", "other"]:
|
|
287
|
+
self._retrieve_solder_ball_properties_from_edb()
|
|
288
|
+
self._retrieve_port_properties_from_edb()
|
|
289
|
+
|
|
290
|
+
class DotNet(Grpc):
|
|
291
|
+
def __init__(self, parent):
|
|
292
|
+
super().__init__(parent)
|
|
293
|
+
|
|
38
294
|
def retrieve_model_properties_from_edb(self):
|
|
39
295
|
c_p = self.pyedb_obj.component_property
|
|
40
296
|
model = c_p.GetModel().Clone()
|
|
@@ -66,6 +322,39 @@ class CfgComponent(CfgBase):
|
|
|
66
322
|
[i, j] for i, j in dict(model.GetTerminalPinPairs()).items()
|
|
67
323
|
]
|
|
68
324
|
|
|
325
|
+
def _set_ic_die_properties_to_edb(self):
|
|
326
|
+
cp = self.pyedb_obj.component_property
|
|
327
|
+
ic_die_prop = cp.GetDieProperty().Clone()
|
|
328
|
+
die_type = self.parent.ic_die_properties.get("type")
|
|
329
|
+
ic_die_prop.SetType(getattr(self.pedb._edb.Definition.DieType, snake_to_pascal(die_type)))
|
|
330
|
+
if not die_type == "no_die":
|
|
331
|
+
orientation = self.parent.ic_die_properties.get("orientation")
|
|
332
|
+
if orientation:
|
|
333
|
+
ic_die_prop.SetOrientation(
|
|
334
|
+
getattr(self.pedb._edb.Definition.DieOrientation, snake_to_pascal(orientation))
|
|
335
|
+
)
|
|
336
|
+
if die_type == "wire_bond":
|
|
337
|
+
height = self.parent.ic_die_properties.get("height")
|
|
338
|
+
if height:
|
|
339
|
+
ic_die_prop.SetHeight(self.pedb.edb_value(height))
|
|
340
|
+
cp.SetDieProperty(ic_die_prop)
|
|
341
|
+
self.pyedb_obj.component_property = cp
|
|
342
|
+
|
|
343
|
+
def _set_port_properties_to_edb(self):
|
|
344
|
+
cp = self.pyedb_obj.component_property
|
|
345
|
+
port_prop = cp.GetPortProperty().Clone()
|
|
346
|
+
height = self.parent.port_properties.get("reference_height")
|
|
347
|
+
if height:
|
|
348
|
+
port_prop.SetReferenceHeight(self.pedb.edb_value(height))
|
|
349
|
+
reference_size_auto = self.parent.port_properties.get("reference_size_auto")
|
|
350
|
+
if reference_size_auto is not None:
|
|
351
|
+
port_prop.SetReferenceSizeAuto(reference_size_auto)
|
|
352
|
+
reference_size_x = self.parent.port_properties.get("reference_size_x", 0)
|
|
353
|
+
reference_size_y = self.parent.port_properties.get("reference_size_y", 0)
|
|
354
|
+
port_prop.SetReferenceSize(self.pedb.edb_value(reference_size_x), self.pedb.edb_value(reference_size_y))
|
|
355
|
+
cp.SetPortProperty(port_prop)
|
|
356
|
+
self.pyedb_obj.component_property = cp
|
|
357
|
+
|
|
69
358
|
def _set_model_properties_to_edb(self):
|
|
70
359
|
c_p = self.pyedb_obj.component_property
|
|
71
360
|
if self.parent.netlist_model:
|
|
@@ -87,7 +376,22 @@ class CfgComponent(CfgBase):
|
|
|
87
376
|
i["is_parallel"],
|
|
88
377
|
)
|
|
89
378
|
m.SetPinPairRlc(p, rlc)
|
|
90
|
-
|
|
379
|
+
c_p.SetModel(m)
|
|
380
|
+
|
|
381
|
+
m = self.pedb._edb.Cell.Hierarchy.PinPairModel()
|
|
382
|
+
for i in self.parent.pin_pair_model:
|
|
383
|
+
p = self.pedb._edb.Utility.PinPair(str(i["first_pin"]), str(i["second_pin"]))
|
|
384
|
+
rlc = self.pedb._edb.Utility.Rlc(
|
|
385
|
+
self.pedb.edb_value(i["resistance"]),
|
|
386
|
+
i["resistance_enabled"],
|
|
387
|
+
self.pedb.edb_value(i["inductance"]),
|
|
388
|
+
i["inductance_enabled"],
|
|
389
|
+
self.pedb.edb_value(i["capacitance"]),
|
|
390
|
+
i["capacitance_enabled"],
|
|
391
|
+
i["is_parallel"],
|
|
392
|
+
)
|
|
393
|
+
m.SetPinPairRlc(p, rlc)
|
|
394
|
+
c_p.SetModel(m)
|
|
91
395
|
self.pyedb_obj.component_property = c_p
|
|
92
396
|
elif self.parent.s_parameter_model:
|
|
93
397
|
m = self.pedb._edb.Cell.Hierarchy.SParameterModel()
|
|
@@ -103,9 +407,33 @@ class CfgComponent(CfgBase):
|
|
|
103
407
|
self.parent.spice_model["terminal_pairs"],
|
|
104
408
|
)
|
|
105
409
|
|
|
410
|
+
def _set_solder_ball_properties_to_edb(self):
|
|
411
|
+
cp = self.pyedb_obj.component_property
|
|
412
|
+
solder_ball_prop = cp.GetSolderBallProperty().Clone()
|
|
413
|
+
shape = self.parent.solder_ball_properties.get("shape")
|
|
414
|
+
if shape:
|
|
415
|
+
solder_ball_prop.SetShape(getattr(self.pedb._edb.Definition.SolderballShape, snake_to_pascal(shape)))
|
|
416
|
+
else:
|
|
417
|
+
return
|
|
418
|
+
|
|
419
|
+
if shape == "cylinder":
|
|
420
|
+
diameter = self.parent.solder_ball_properties["diameter"]
|
|
421
|
+
solder_ball_prop.SetDiameter(self.pedb.edb_value(diameter), self.pedb.edb_value(diameter))
|
|
422
|
+
elif shape == "spheroid":
|
|
423
|
+
diameter = self.parent.solder_ball_properties["diameter"]
|
|
424
|
+
mid_diameter = self.parent.solder_ball_properties["mid_diameter"]
|
|
425
|
+
solder_ball_prop.SetDiameter(self.pedb.edb_value(diameter), self.pedb.edb_value(mid_diameter))
|
|
426
|
+
else:
|
|
427
|
+
raise ValueError("Solderball shape must be either cylinder or spheroid")
|
|
428
|
+
solder_ball_prop.SetHeight(self.pedb.edb_value(self.parent.solder_ball_properties["height"]))
|
|
429
|
+
solder_ball_prop.SetMaterialName(self.parent.solder_ball_properties.get("material", "solder"))
|
|
430
|
+
cp.SetSolderBallProperty(solder_ball_prop)
|
|
431
|
+
self.pyedb_obj.component_property = cp
|
|
432
|
+
|
|
106
433
|
def _retrieve_ic_die_properties_from_edb(self):
|
|
107
434
|
temp = dict()
|
|
108
435
|
cp = self.pyedb_obj.component_property
|
|
436
|
+
|
|
109
437
|
ic_die_prop = cp.GetDieProperty().Clone()
|
|
110
438
|
die_type = pascal_to_snake(ic_die_prop.GetType().ToString())
|
|
111
439
|
temp["type"] = die_type
|
|
@@ -115,24 +443,6 @@ class CfgComponent(CfgBase):
|
|
|
115
443
|
temp["height"] = ic_die_prop.GetHeightValue().ToString()
|
|
116
444
|
self.parent.ic_die_properties = temp
|
|
117
445
|
|
|
118
|
-
def _set_ic_die_properties_to_edb(self):
|
|
119
|
-
cp = self.pyedb_obj.component_property
|
|
120
|
-
ic_die_prop = cp.GetDieProperty().Clone()
|
|
121
|
-
die_type = self.parent.ic_die_properties.get("type")
|
|
122
|
-
ic_die_prop.SetType(getattr(self.pedb._edb.Definition.DieType, snake_to_pascal(die_type)))
|
|
123
|
-
if not die_type == "no_die":
|
|
124
|
-
orientation = self.parent.ic_die_properties.get("orientation")
|
|
125
|
-
if orientation:
|
|
126
|
-
ic_die_prop.SetOrientation(
|
|
127
|
-
getattr(self.pedb._edb.Definition.DieOrientation, snake_to_pascal(orientation))
|
|
128
|
-
)
|
|
129
|
-
if die_type == "wire_bond":
|
|
130
|
-
height = self.parent.ic_die_properties.get("height")
|
|
131
|
-
if height:
|
|
132
|
-
ic_die_prop.SetHeight(self.pedb.edb_value(height))
|
|
133
|
-
cp.SetDieProperty(ic_die_prop)
|
|
134
|
-
self.pyedb_obj.component_property = cp
|
|
135
|
-
|
|
136
446
|
def _retrieve_solder_ball_properties_from_edb(self):
|
|
137
447
|
temp = dict()
|
|
138
448
|
cp = self.pyedb_obj.component_property
|
|
@@ -151,29 +461,6 @@ class CfgComponent(CfgBase):
|
|
|
151
461
|
temp["material"] = material
|
|
152
462
|
self.parent.solder_ball_properties = temp
|
|
153
463
|
|
|
154
|
-
def _set_solder_ball_properties_to_edb(self):
|
|
155
|
-
cp = self.pyedb_obj.component_property
|
|
156
|
-
solder_ball_prop = cp.GetSolderBallProperty().Clone()
|
|
157
|
-
shape = self.parent.solder_ball_properties.get("shape")
|
|
158
|
-
if shape:
|
|
159
|
-
solder_ball_prop.SetShape(getattr(self.pedb._edb.Definition.SolderballShape, snake_to_pascal(shape)))
|
|
160
|
-
else:
|
|
161
|
-
return
|
|
162
|
-
|
|
163
|
-
if shape == "cylinder":
|
|
164
|
-
diameter = self.parent.solder_ball_properties["diameter"]
|
|
165
|
-
solder_ball_prop.SetDiameter(self.pedb.edb_value(diameter), self.pedb.edb_value(diameter))
|
|
166
|
-
elif shape == "spheroid":
|
|
167
|
-
diameter = self.parent.solder_ball_properties["diameter"]
|
|
168
|
-
mid_diameter = self.parent.solder_ball_properties["mid_diameter"]
|
|
169
|
-
solder_ball_prop.SetDiameter(self.pedb.edb_value(diameter), self.pedb.edb_value(mid_diameter))
|
|
170
|
-
else:
|
|
171
|
-
raise ValueError("Solderball shape must be either cylinder or spheroid")
|
|
172
|
-
solder_ball_prop.SetHeight(self.pedb.edb_value(self.parent.solder_ball_properties["height"]))
|
|
173
|
-
solder_ball_prop.SetMaterialName(self.parent.solder_ball_properties.get("material", "solder"))
|
|
174
|
-
cp.SetSolderBallProperty(solder_ball_prop)
|
|
175
|
-
self.pyedb_obj.component_property = cp
|
|
176
|
-
|
|
177
464
|
def _retrieve_port_properties_from_edb(self):
|
|
178
465
|
temp = dict()
|
|
179
466
|
cp = self.pyedb_obj.component_property
|
|
@@ -191,61 +478,10 @@ class CfgComponent(CfgBase):
|
|
|
191
478
|
temp["reference_size_y"] = str(reference_size_y)
|
|
192
479
|
self.parent.port_properties = temp
|
|
193
480
|
|
|
194
|
-
def _set_port_properties_to_edb(self):
|
|
195
|
-
cp = self.pyedb_obj.component_property
|
|
196
|
-
port_prop = cp.GetPortProperty().Clone()
|
|
197
|
-
height = self.parent.port_properties.get("reference_height")
|
|
198
|
-
if height:
|
|
199
|
-
port_prop.SetReferenceHeight(self.pedb.edb_value(height))
|
|
200
|
-
reference_size_auto = self.parent.port_properties.get("reference_size_auto")
|
|
201
|
-
if reference_size_auto is not None:
|
|
202
|
-
port_prop.SetReferenceSizeAuto(reference_size_auto)
|
|
203
|
-
reference_size_x = self.parent.port_properties.get("reference_size_x", 0)
|
|
204
|
-
reference_size_y = self.parent.port_properties.get("reference_size_y", 0)
|
|
205
|
-
port_prop.SetReferenceSize(self.pedb.edb_value(reference_size_x), self.pedb.edb_value(reference_size_y))
|
|
206
|
-
cp.SetPortProperty(port_prop)
|
|
207
|
-
self.pyedb_obj.component_property = cp
|
|
208
|
-
|
|
209
|
-
def set_parameters_to_edb(self):
|
|
210
|
-
if self.parent.type:
|
|
211
|
-
self.pyedb_obj.type = self.parent.type
|
|
212
|
-
if self.parent.enabled:
|
|
213
|
-
self.pyedb_obj.enabled = self.parent.enabled
|
|
214
|
-
|
|
215
|
-
self._set_model_properties_to_edb()
|
|
216
|
-
if self.pyedb_obj.type.lower() == "ic":
|
|
217
|
-
self._set_ic_die_properties_to_edb()
|
|
218
|
-
self._set_port_properties_to_edb()
|
|
219
|
-
self._set_solder_ball_properties_to_edb()
|
|
220
|
-
elif self.pyedb_obj.type.lower() in ["io", "other"]:
|
|
221
|
-
self._set_solder_ball_properties_to_edb()
|
|
222
|
-
self._set_port_properties_to_edb()
|
|
223
|
-
|
|
224
|
-
def retrieve_parameters_from_edb(self):
|
|
225
|
-
self.parent.type = self.pyedb_obj.type
|
|
226
|
-
self.parent.definition = self.pyedb_obj.part_name
|
|
227
|
-
self.parent.reference_designator = self.pyedb_obj.name
|
|
228
|
-
self.retrieve_model_properties_from_edb()
|
|
229
|
-
if self.pyedb_obj.type.lower() == "ic":
|
|
230
|
-
self._retrieve_ic_die_properties_from_edb()
|
|
231
|
-
self._retrieve_port_properties_from_edb()
|
|
232
|
-
self._retrieve_solder_ball_properties_from_edb()
|
|
233
|
-
elif self.pyedb_obj.type.lower() in ["io", "other"]:
|
|
234
|
-
self._retrieve_solder_ball_properties_from_edb()
|
|
235
|
-
self._retrieve_port_properties_from_edb()
|
|
236
|
-
|
|
237
|
-
class Grpc(Common):
|
|
238
|
-
def __init__(self, parent):
|
|
239
|
-
super().__init__(parent)
|
|
240
|
-
|
|
241
|
-
class DotNet(Grpc):
|
|
242
|
-
def __init__(self, parent):
|
|
243
|
-
super().__init__(parent)
|
|
244
|
-
|
|
245
481
|
def __init__(self, pedb, pedb_object, **kwargs):
|
|
246
482
|
self.pedb = pedb
|
|
247
483
|
self.pyedb_obj = pedb_object
|
|
248
|
-
if
|
|
484
|
+
if self.pedb.grpc:
|
|
249
485
|
self.api = self.Grpc(self)
|
|
250
486
|
else:
|
|
251
487
|
self.api = self.DotNet(self)
|
|
@@ -273,7 +509,7 @@ class CfgComponents:
|
|
|
273
509
|
|
|
274
510
|
if components_data:
|
|
275
511
|
for comp in components_data:
|
|
276
|
-
obj = self.pedb.
|
|
512
|
+
obj = self.pedb.components.instances[comp["reference_designator"]]
|
|
277
513
|
self.components.append(CfgComponent(self.pedb, obj, **comp))
|
|
278
514
|
|
|
279
515
|
def clean(self):
|
|
@@ -32,10 +32,12 @@ class CfgGeneral:
|
|
|
32
32
|
self.suppress_pads = data.get("suppress_pads", True)
|
|
33
33
|
|
|
34
34
|
def apply(self):
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
if self._pedb.grpc:
|
|
36
|
+
self._pedb.active_cell.anti_pads_always_on = self.anti_pads_always_on
|
|
37
|
+
self._pedb.active_cell.suppress_pads = self.suppress_pads
|
|
38
|
+
else:
|
|
39
|
+
self._pedb.design_options.antipads_always_on = self.anti_pads_always_on
|
|
40
|
+
self._pedb.design_options.suppress_pads = self.suppress_pads
|
|
39
41
|
|
|
40
42
|
def get_data_from_db(self):
|
|
41
43
|
self.anti_pads_always_on = self._pedb.design_options.antipads_always_on
|
|
@@ -38,14 +38,24 @@ class CfgPinGroups:
|
|
|
38
38
|
self.pin_groups = []
|
|
39
39
|
layout_pin_groups = self._pedb.siwave.pin_groups
|
|
40
40
|
for pg_name, pg_obj in layout_pin_groups.items():
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
41
|
+
if self._pedb.grpc:
|
|
42
|
+
pins = pg_obj.pins
|
|
43
|
+
refdes = pins[0].component.name
|
|
44
|
+
cfg_pg = CfgPinGroup(
|
|
45
|
+
self._pedb,
|
|
46
|
+
name=pg_name,
|
|
47
|
+
reference_designator=refdes,
|
|
48
|
+
pins=[pin.component_pin for pin in pins],
|
|
49
|
+
)
|
|
50
|
+
else:
|
|
51
|
+
pins = list(pg_obj.pins.keys())
|
|
52
|
+
refdes = list(pg_obj.pins.values())[0].component.name
|
|
53
|
+
cfg_pg = CfgPinGroup(
|
|
54
|
+
self._pedb,
|
|
55
|
+
name=pg_name,
|
|
56
|
+
reference_designator=refdes,
|
|
57
|
+
pins=pins,
|
|
58
|
+
)
|
|
49
59
|
self.pin_groups.append(cfg_pg)
|
|
50
60
|
return self.export_properties()
|
|
51
61
|
|