pyedb 0.44.0__tar.gz → 0.45.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.44.0 → pyedb-0.45.0}/PKG-INFO +6 -6
- {pyedb-0.44.0 → pyedb-0.45.0}/README.md +5 -5
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/__init__.py +1 -1
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/configuration/cfg_boundaries.py +1 -1
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/configuration/cfg_components.py +7 -7
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/configuration/cfg_general.py +8 -2
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/configuration/cfg_modeler.py +7 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/configuration/cfg_operations.py +40 -1
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/configuration/cfg_pin_groups.py +1 -1
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/configuration/cfg_ports_sources.py +159 -51
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/configuration/cfg_s_parameter_models.py +51 -1
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/configuration/cfg_setup.py +77 -16
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/configuration/configuration.py +13 -3
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/primitive/path.py +12 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/geometry/point_data.py +26 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/geometry/polygon_data.py +9 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/nets.py +13 -3
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/edb.py +41 -18
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/components.py +1 -2
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/definition/component_def.py +1 -1
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/hfss.py +10 -1
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/layout_validation.py +2 -2
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/padstacks.py +15 -9
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/ports/ports.py +3 -3
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +18 -13
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +73 -30
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/simulation_setup/sweep_data.py +12 -1
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/siwave.py +10 -1
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/source_excitations.py +12 -2
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/stackup.py +12 -4
- pyedb-0.45.0/src/pyedb/grpc/database/terminal/edge_terminal.py +144 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/terminal/pingroup_terminal.py +14 -1
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/edb.py +13 -9
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/edb_init.py +19 -15
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/rpc_session.py +11 -8
- pyedb-0.44.0/src/pyedb/grpc/database/terminal/edge_terminal.py +0 -51
- {pyedb-0.44.0 → pyedb-0.45.0}/LICENSE +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/pyproject.toml +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/common/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/common/nets.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/component_libraries/ansys_components.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/configuration/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/configuration/cfg_common.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/configuration/cfg_data.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/configuration/cfg_nets.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/configuration/cfg_package_definition.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/configuration/cfg_padstacks.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/configuration/cfg_spice_models.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/configuration/cfg_stackup.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/clr_module.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/Variables.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/connectable.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/hierarchy/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/hierarchy/component.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/hierarchy/hierarchy_obj.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/hierarchy/model.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/hierarchy/netlist_model.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/hierarchy/pin_pair_model.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/hierarchy/s_parameter_model.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/hierarchy/spice_model.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/layout.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/layout_obj.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/primitive/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/primitive/bondwire.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/primitive/primitive.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/terminal/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/terminal/bundle_terminal.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/terminal/edge_terminal.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/terminal/padstack_instance_terminal.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/terminal/pingroup_terminal.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/terminal/point_terminal.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/terminal/terminal.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/cell/voltage_regulator.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/components.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/definition/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/definition/component_def.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/definition/component_model.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/definition/definition_obj.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/definition/definitions.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/definition/package_def.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/dotnet/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/dotnet/database.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/dotnet/primitive.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/edb_data/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/edb_data/control_file.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/edb_data/design_options.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/edb_data/edbvalue.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/edb_data/hfss_extent_info.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/edb_data/layer_data.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/edb_data/nets_data.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/edb_data/padstacks_data.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/edb_data/ports.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/edb_data/primitives_data.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/edb_data/raptor_x_simulation_setup_data.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/edb_data/simulation_configuration.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/edb_data/sources.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/edb_data/utilities.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/edb_data/variables.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/general.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/geometry/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/hfss.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/layout_obj_instance.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/layout_validation.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/materials.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/modeler.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/net_class.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/padstack.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/sim_setup_data/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/sim_setup_data/data/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/sim_setup_data/data/adaptive_frequency_data.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/sim_setup_data/data/mesh_operation.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/sim_setup_data/data/settings.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/sim_setup_data/data/sim_setup_info.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/sim_setup_data/data/simulation_settings.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/sim_setup_data/data/siw_dc_ir_settings.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/sim_setup_data/data/sweep_data.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/sim_setup_data/io/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/sim_setup_data/io/siwave.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/siwave.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/stackup.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/utilities/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/utilities/heatsink.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/utilities/hfss_simulation_setup.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/utilities/obj_base.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/utilities/simulation_setup.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/dotnet/database/utilities/siwave_simulation_setup.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/edb_logger.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/exceptions.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/extensions/pre_layout_design_toolkit/via_design.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/generic/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/generic/constants.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/generic/data_handlers.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/generic/design_types.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/generic/filesystem.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/generic/general_methods.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/generic/plot.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/generic/process.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/generic/settings.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/control_file.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/definition/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/definition/component_model.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/definition/component_pin.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/definition/materials.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/definition/n_port_component_model.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/definition/package_def.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/definition/padstack_def.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/definitions.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/general.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/geometry/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/geometry/arc_data.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/geometry/point_3d_data.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/geometry/point_data.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/geometry/polygon_data.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/hierarchy/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/hierarchy/component.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/hierarchy/model.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/hierarchy/netlist_model.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/hierarchy/pin_pair_model.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/hierarchy/pingroup.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/hierarchy/s_parameter_model.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/hierarchy/spice_model.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/layers/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/layers/layer.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/layers/stackup_layer.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/layout/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/layout/cell.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/layout/layout.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/layout/voltage_regulator.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/modeler.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/net/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/net/differential_pair.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/net/extended_net.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/net/net.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/net/net_class.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/nets.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/ports/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/primitive/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/primitive/bondwire.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/primitive/circle.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/primitive/padstack_instance.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/primitive/path.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/primitive/polygon.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/primitive/primitive.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/primitive/rectangle.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/simulation_setup/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/simulation_setup/adaptive_frequency.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_meshing_settings.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_settings.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/simulation_setup/hfss_dcr_settings.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/simulation_setup/hfss_general_settings.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/simulation_setup/hfss_settings_options.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_settings.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/simulation_setup/hfss_solver_settings.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/simulation_setup/mesh_operation.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_advanced_settings.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_general_settings.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_settings.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_setup.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/simulation_setup/siwave_dcir_simulation_setup.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/terminal/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/terminal/bundle_terminal.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/terminal/padstack_instance_terminal.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/terminal/point_terminal.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/terminal/terminal.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/utility/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/utility/constants.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/utility/heat_sink.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/utility/hfss_extent_info.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/utility/layout_statistics.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/utility/rlc.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/utility/simulation_configuration.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/utility/sources.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/utility/sweep_data_distribution.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/grpc/database/utility/xml_control_file.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/bom/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/bom/bom.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/bom/bom_item.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/bom/characteristics.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/bom/refdes.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/content/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/content/color.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/content/content.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/content/dictionary_color.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/content/dictionary_fill.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/content/dictionary_line.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/content/entry_color.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/content/entry_line.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/content/fill.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/content/layer_ref.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/content/standard_geometries_dictionary.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/cad_data.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/component.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/drill.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/feature.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/layer.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/layer_feature.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/logical_net.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/outline.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/package.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_def.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_instance.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/path.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/phy_net.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/pin.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/polygon.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/profile.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/stackup.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_group.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_layer.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_data/step.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/cad_header.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/ecad.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ecad/spec.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/history_record.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/ipc2581.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/ipc2581/logistic_header.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/aedtlib_personalib_install.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/downloads.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/misc.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/pyedb.runtimeconfig.json +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/siw_feature_config/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/siw_feature_config/emc/__init__.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/siw_feature_config/emc/component_tags.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/siw_feature_config/emc/net_tags.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/siw_feature_config/emc/tag_library.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/siw_feature_config/emc/xml_generic.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/fd_xtalk_scan_config.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/impedance_scan_config.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/net.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/pins.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/misc/utilities.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/modeler/geometry_operators.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/siwave.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/siwave_core/icepak.py +0 -0
- {pyedb-0.44.0 → pyedb-0.45.0}/src/pyedb/workflow.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: pyedb
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.45.0
|
|
4
4
|
Summary: Higher-Level Pythonic Ansys Electronics Data Base
|
|
5
5
|
Author-email: "ANSYS, Inc." <pyansys.core@ansys.com>
|
|
6
6
|
Maintainer-email: PyEDB developers <simon.vandenbrouck@ansys.com>
|
|
@@ -127,15 +127,15 @@ Documentation for the latest stable release of PyEDB is hosted at
|
|
|
127
127
|
[PyEDB documentation](https://edb.docs.pyansys.com/version/stable/index.html).
|
|
128
128
|
The documentation has five sections:
|
|
129
129
|
|
|
130
|
-
- [Getting started](https://edb.docs.pyansys.com/version/
|
|
130
|
+
- [Getting started](https://edb.docs.pyansys.com/version/stable/getting_started/index.html): Describes
|
|
131
131
|
how to install PyEDB in user mode.
|
|
132
|
-
- [User guide](https://edb.docs.pyansys.com/version/
|
|
132
|
+
- [User guide](https://edb.docs.pyansys.com/version/stable/user_guide/index.html#user-guide): Describes how to
|
|
133
133
|
use PyEDB.
|
|
134
|
-
- [API reference](https://edb.docs.pyansys.com/version/
|
|
134
|
+
- [API reference](https://edb.docs.pyansys.com/version/stable/api/index.html): Provides API member descriptions
|
|
135
135
|
and usage examples.
|
|
136
|
-
- [Examples](https://
|
|
136
|
+
- [Examples](https://examples.aedt.docs.pyansys.com/version/dev/examples/high_frequency/layout/index.html): Provides examples showing
|
|
137
137
|
end-to-end workflows for using PyEDB.
|
|
138
|
-
- [Contribute](https://edb.docs.pyansys.com/version/
|
|
138
|
+
- [Contribute](https://edb.docs.pyansys.com/version/stable/contributing.html): Describes how to install
|
|
139
139
|
PyEDB in developer mode and how to contribute to this PyAnsys library.
|
|
140
140
|
|
|
141
141
|
In the upper right corner of the documentation's title bar, there is an option
|
|
@@ -60,15 +60,15 @@ Documentation for the latest stable release of PyEDB is hosted at
|
|
|
60
60
|
[PyEDB documentation](https://edb.docs.pyansys.com/version/stable/index.html).
|
|
61
61
|
The documentation has five sections:
|
|
62
62
|
|
|
63
|
-
- [Getting started](https://edb.docs.pyansys.com/version/
|
|
63
|
+
- [Getting started](https://edb.docs.pyansys.com/version/stable/getting_started/index.html): Describes
|
|
64
64
|
how to install PyEDB in user mode.
|
|
65
|
-
- [User guide](https://edb.docs.pyansys.com/version/
|
|
65
|
+
- [User guide](https://edb.docs.pyansys.com/version/stable/user_guide/index.html#user-guide): Describes how to
|
|
66
66
|
use PyEDB.
|
|
67
|
-
- [API reference](https://edb.docs.pyansys.com/version/
|
|
67
|
+
- [API reference](https://edb.docs.pyansys.com/version/stable/api/index.html): Provides API member descriptions
|
|
68
68
|
and usage examples.
|
|
69
|
-
- [Examples](https://
|
|
69
|
+
- [Examples](https://examples.aedt.docs.pyansys.com/version/dev/examples/high_frequency/layout/index.html): Provides examples showing
|
|
70
70
|
end-to-end workflows for using PyEDB.
|
|
71
|
-
- [Contribute](https://edb.docs.pyansys.com/version/
|
|
71
|
+
- [Contribute](https://edb.docs.pyansys.com/version/stable/contributing.html): Describes how to install
|
|
72
72
|
PyEDB in developer mode and how to contribute to this PyAnsys library.
|
|
73
73
|
|
|
74
74
|
In the upper right corner of the documentation's title bar, there is an option
|
|
@@ -79,7 +79,7 @@ class CfgBoundaries(CfgBase):
|
|
|
79
79
|
if self.air_box_horizontal_padding:
|
|
80
80
|
self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent = float(self.air_box_horizontal_padding)
|
|
81
81
|
if self.air_box_positive_vertical_padding:
|
|
82
|
-
self._pedb.hfss.hfss_extent_info.
|
|
82
|
+
self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent = float(
|
|
83
83
|
self.air_box_positive_vertical_padding
|
|
84
84
|
)
|
|
85
85
|
if self.air_box_negative_vertical_padding:
|
|
@@ -136,9 +136,9 @@ class CfgComponent(CfgBase):
|
|
|
136
136
|
die_type = pascal_to_snake(ic_die_prop.die_type.name)
|
|
137
137
|
temp["type"] = die_type
|
|
138
138
|
if not die_type == "no_die":
|
|
139
|
-
temp["orientation"] =
|
|
139
|
+
temp["orientation"] = ic_die_prop.die_orientation.name.lower()
|
|
140
140
|
if die_type == "wire_bond":
|
|
141
|
-
temp["height"] = ic_die_prop.height.value
|
|
141
|
+
temp["height"] = str(ic_die_prop.height.value)
|
|
142
142
|
|
|
143
143
|
self.parent.ic_die_properties = temp
|
|
144
144
|
|
|
@@ -183,10 +183,10 @@ class CfgComponent(CfgBase):
|
|
|
183
183
|
uses_solder_ball = solder_ball_prop.uses_solderball
|
|
184
184
|
|
|
185
185
|
temp["uses_solder_ball"] = uses_solder_ball
|
|
186
|
-
temp["shape"] =
|
|
187
|
-
temp["diameter"] = diam
|
|
188
|
-
temp["mid_diameter"] = mid_diam
|
|
189
|
-
temp["height"] = height
|
|
186
|
+
temp["shape"] = shape.lower()
|
|
187
|
+
temp["diameter"] = str(diam)
|
|
188
|
+
temp["mid_diameter"] = str(mid_diam)
|
|
189
|
+
temp["height"] = str(height)
|
|
190
190
|
temp["material"] = material
|
|
191
191
|
|
|
192
192
|
self.parent.solder_ball_properties = temp
|
|
@@ -495,7 +495,7 @@ class CfgComponent(CfgBase):
|
|
|
495
495
|
|
|
496
496
|
self.port_properties = kwargs.get("port_properties", {})
|
|
497
497
|
self.solder_ball_properties = kwargs.get("solder_ball_properties", {})
|
|
498
|
-
self.ic_die_properties = kwargs.get("ic_die_properties", {})
|
|
498
|
+
self.ic_die_properties = kwargs.get("ic_die_properties", {"type": "no_die"})
|
|
499
499
|
self.pin_pair_model = kwargs.get("pin_pair_model", [])
|
|
500
500
|
self.spice_model = kwargs.get("spice_model", {})
|
|
501
501
|
self.s_parameter_model = kwargs.get("s_parameter_model", {})
|
|
@@ -34,8 +34,8 @@ class CfgGeneral:
|
|
|
34
34
|
self.pedb.active_cell.suppress_pads = self.parent.suppress_pads
|
|
35
35
|
|
|
36
36
|
def get_parameters_from_edb(self):
|
|
37
|
-
anti_pads_always_on = self.pedb.
|
|
38
|
-
suppress_pads = self.pedb.
|
|
37
|
+
anti_pads_always_on = self.pedb.active_cell.anti_pads_always_on
|
|
38
|
+
suppress_pads = self.pedb.active_cell.suppress_pads
|
|
39
39
|
data = {"anti_pads_always_on": anti_pads_always_on, "suppress_pads": suppress_pads}
|
|
40
40
|
return data
|
|
41
41
|
|
|
@@ -49,6 +49,12 @@ class CfgGeneral:
|
|
|
49
49
|
if self.parent.suppress_pads is not None:
|
|
50
50
|
self.pedb.design_options.suppress_pads = self.parent.suppress_pads
|
|
51
51
|
|
|
52
|
+
def get_parameters_from_edb(self):
|
|
53
|
+
anti_pads_always_on = self.pedb.design_options.antipads_always_on
|
|
54
|
+
suppress_pads = self.pedb.design_options.suppress_pads
|
|
55
|
+
data = {"anti_pads_always_on": anti_pads_always_on, "suppress_pads": suppress_pads}
|
|
56
|
+
return data
|
|
57
|
+
|
|
52
58
|
def __init__(self, pedb, data):
|
|
53
59
|
self.pedb = pedb
|
|
54
60
|
if self.pedb.grpc:
|
|
@@ -141,6 +141,11 @@ class CfgModeler:
|
|
|
141
141
|
c.pyedb_obj = obj
|
|
142
142
|
c.api.set_parameters_to_edb()
|
|
143
143
|
|
|
144
|
+
def delete_primitives(self):
|
|
145
|
+
primitives = self._pedb.layout.find_primitive(**self.parent.primitives_to_delete)
|
|
146
|
+
for i in primitives:
|
|
147
|
+
i.delete()
|
|
148
|
+
|
|
144
149
|
class DotNet(Grpc):
|
|
145
150
|
def __init__(self, parent):
|
|
146
151
|
super().__init__(parent)
|
|
@@ -230,6 +235,8 @@ class CfgModeler:
|
|
|
230
235
|
]
|
|
231
236
|
self.planes = [CfgPlane(**i) for i in data.get("planes", [])]
|
|
232
237
|
self.components = [CfgComponent(self._pedb, None, **i) for i in data.get("components", [])]
|
|
238
|
+
self.primitives_to_delete = data.get("primitives_to_delete", {"layer_name": [], "name": [], "net_name": []})
|
|
233
239
|
|
|
234
240
|
def apply(self):
|
|
235
241
|
self.api.set_parameter_to_edb()
|
|
242
|
+
self.api.delete_primitives()
|
|
@@ -56,6 +56,9 @@ class CfgCutout(CfgBase):
|
|
|
56
56
|
self.api = self.Grpc(self)
|
|
57
57
|
else:
|
|
58
58
|
self.api = self.DotNet(self)
|
|
59
|
+
self.auto_identify_nets = kwargs.get(
|
|
60
|
+
"auto_identify_nets", {"enabled": False, "resistor_below": 100, "inductor_below": 1, "capacitor_above": 1}
|
|
61
|
+
)
|
|
59
62
|
self.signal_list = kwargs.get("signal_list")
|
|
60
63
|
self.reference_list = kwargs.get("reference_list")
|
|
61
64
|
self.extent_type = kwargs.get("extent_type")
|
|
@@ -99,7 +102,43 @@ class CfgOperations(CfgBase):
|
|
|
99
102
|
|
|
100
103
|
def apply_on_edb(self):
|
|
101
104
|
if self.parent.op_cutout:
|
|
102
|
-
|
|
105
|
+
cutout_params = self.parent.op_cutout.get_attributes()
|
|
106
|
+
auto_identify_nets = cutout_params.pop("auto_identify_nets")
|
|
107
|
+
if auto_identify_nets["enabled"]:
|
|
108
|
+
reference_list = cutout_params.get("reference_list", [])
|
|
109
|
+
if auto_identify_nets:
|
|
110
|
+
self._pedb.nets.generate_extended_nets(
|
|
111
|
+
auto_identify_nets["resistor_below"],
|
|
112
|
+
auto_identify_nets["inductor_below"],
|
|
113
|
+
auto_identify_nets["capacitor_above"],
|
|
114
|
+
auto_identify_nets.get("exception_list", []),
|
|
115
|
+
)
|
|
116
|
+
signal_nets = []
|
|
117
|
+
for i in self._pedb.ports.values():
|
|
118
|
+
# Positive terminal
|
|
119
|
+
extended_net = i.net.extended_net
|
|
120
|
+
if extended_net:
|
|
121
|
+
temp = [i2 for i2 in extended_net.nets.keys() if i2 not in reference_list]
|
|
122
|
+
temp = [i2 for i2 in temp if i2 not in signal_nets]
|
|
123
|
+
signal_nets.extend(temp)
|
|
124
|
+
else:
|
|
125
|
+
signal_nets.append(i.net.name)
|
|
126
|
+
|
|
127
|
+
# Negative terminal
|
|
128
|
+
ref_net = i.ref_terminal.net if i.ref_terminal else None
|
|
129
|
+
if ref_net is None:
|
|
130
|
+
continue
|
|
131
|
+
elif ref_net.name not in reference_list:
|
|
132
|
+
extended_net = ref_net.extended_net
|
|
133
|
+
if extended_net:
|
|
134
|
+
temp = [i2 for i2 in extended_net.nets.keys() if i2 not in reference_list]
|
|
135
|
+
temp = [i2 for i2 in temp if i2 not in signal_nets]
|
|
136
|
+
signal_nets.extend(temp)
|
|
137
|
+
else:
|
|
138
|
+
signal_nets.append(ref_net.name)
|
|
139
|
+
|
|
140
|
+
cutout_params["signal_list"] = signal_nets
|
|
141
|
+
polygon_points = self._pedb.cutout(**cutout_params)
|
|
103
142
|
if "pyedb_cutout" not in self._pedb.stackup.all_layers:
|
|
104
143
|
self._pedb.stackup.add_document_layer(name="pyedb_cutout")
|
|
105
144
|
self._pedb.modeler.create_polygon(
|
|
@@ -40,7 +40,7 @@ class CfgPinGroups:
|
|
|
40
40
|
layout_pin_groups = self._pedb.siwave.pin_groups
|
|
41
41
|
for pg_name, pg_obj in layout_pin_groups.items():
|
|
42
42
|
if self._pedb.grpc:
|
|
43
|
-
pins = pg_obj.pins
|
|
43
|
+
pins = list(pg_obj.pins.values())
|
|
44
44
|
refdes = pins[0].component.name
|
|
45
45
|
cfg_pg = CfgPinGroup(
|
|
46
46
|
self._pedb,
|
|
@@ -108,8 +108,27 @@ class CfgNearestPinTerminalInfo(CfgTerminalInfo):
|
|
|
108
108
|
|
|
109
109
|
|
|
110
110
|
class CfgSources:
|
|
111
|
+
class Grpc:
|
|
112
|
+
def __init__(self, parent):
|
|
113
|
+
self.parent = parent
|
|
114
|
+
self._pedb = parent._pedb
|
|
115
|
+
|
|
116
|
+
def get_pin_group_name(self, src):
|
|
117
|
+
return src.pin_group.name
|
|
118
|
+
|
|
119
|
+
class DotNet(Grpc):
|
|
120
|
+
def __init__(self, parent):
|
|
121
|
+
super().__init__(parent)
|
|
122
|
+
|
|
123
|
+
def get_pin_group_name(self, src):
|
|
124
|
+
return src._edb_object.GetPinGroup().GetName()
|
|
125
|
+
|
|
111
126
|
def __init__(self, pedb, sources_data):
|
|
112
127
|
self._pedb = pedb
|
|
128
|
+
if self._pedb.grpc:
|
|
129
|
+
self.api = self.Grpc(self)
|
|
130
|
+
else:
|
|
131
|
+
self.api = self.DotNet(self)
|
|
113
132
|
self.sources = [CfgSource(self._pedb, **src) for src in sources_data]
|
|
114
133
|
|
|
115
134
|
def apply(self):
|
|
@@ -128,7 +147,7 @@ class CfgSources:
|
|
|
128
147
|
|
|
129
148
|
if src.terminal_type == "PinGroupTerminal":
|
|
130
149
|
refdes = ""
|
|
131
|
-
pg = self._pedb.siwave.pin_groups[
|
|
150
|
+
pg = self._pedb.siwave.pin_groups[self.api.get_pin_group_name(src)]
|
|
132
151
|
pos_term_info = {"pin_group": pg.name}
|
|
133
152
|
elif src.terminal_type == "PadstackInstanceTerminal":
|
|
134
153
|
refdes = src.component.refdes if src.component else ""
|
|
@@ -136,7 +155,7 @@ class CfgSources:
|
|
|
136
155
|
|
|
137
156
|
neg_term = self._pedb.terminals[src.ref_terminal.name]
|
|
138
157
|
if neg_term.terminal_type == "PinGroupTerminal":
|
|
139
|
-
pg = self._pedb.siwave.pin_groups[
|
|
158
|
+
pg = self._pedb.siwave.pin_groups[self.api.get_pin_group_name(neg_term)]
|
|
140
159
|
neg_term_info = {"pin_group": pg.name}
|
|
141
160
|
elif neg_term.terminal_type == "PadstackInstanceTerminal":
|
|
142
161
|
neg_term_info = {"padstack": neg_term.padstack_instance.aedt_name}
|
|
@@ -172,6 +191,26 @@ class CfgPorts:
|
|
|
172
191
|
def get_edge_info(self, port):
|
|
173
192
|
return port._edb_object.GetEdges()[0].GetParameters()
|
|
174
193
|
|
|
194
|
+
def _get_edge_port_from_edb(self, p, port_type):
|
|
195
|
+
# primitive, point = p._edb_object.GetEdges()[0].GetParameters()
|
|
196
|
+
edges = p.edges
|
|
197
|
+
primitive = None
|
|
198
|
+
point = None
|
|
199
|
+
primitive = Primitive(self._pedb, primitive)
|
|
200
|
+
point = PointData(self._pedb, point)
|
|
201
|
+
|
|
202
|
+
cfg_port = CfgEdgePort(
|
|
203
|
+
self._pedb,
|
|
204
|
+
name=p.name,
|
|
205
|
+
type=port_type,
|
|
206
|
+
primitive_name=primitive.aedt_name,
|
|
207
|
+
point_on_edge=[point._edb_object.X.ToString(), point._edb_object.Y.ToString()],
|
|
208
|
+
horizontal_extent_factor=p.horizontal_extent_factor,
|
|
209
|
+
vertical_extent_factor=p.vertical_extent_factor,
|
|
210
|
+
pec_launch_width=p.pec_launch_width,
|
|
211
|
+
)
|
|
212
|
+
return cfg_port
|
|
213
|
+
|
|
175
214
|
class DotNet(Grpc):
|
|
176
215
|
def __init__(self, parent):
|
|
177
216
|
super().__init__(parent)
|
|
@@ -179,6 +218,24 @@ class CfgPorts:
|
|
|
179
218
|
def get_pin_group(self, port):
|
|
180
219
|
return self._pedb.siwave.pin_groups[port._edb_object.GetPinGroup().GetName()]
|
|
181
220
|
|
|
221
|
+
def _get_edge_port_from_edb(self, p, port_type):
|
|
222
|
+
_, primitive, point = p._edb_object.GetEdges()[0].GetParameters()
|
|
223
|
+
|
|
224
|
+
primitive = Primitive(self._pedb, primitive)
|
|
225
|
+
point = PointData(self._pedb, point)
|
|
226
|
+
|
|
227
|
+
cfg_port = CfgEdgePort(
|
|
228
|
+
self._pedb,
|
|
229
|
+
name=p.name,
|
|
230
|
+
type=port_type,
|
|
231
|
+
primitive_name=primitive.aedt_name,
|
|
232
|
+
point_on_edge=[point._edb_object.X.ToString(), point._edb_object.Y.ToString()],
|
|
233
|
+
horizontal_extent_factor=p.horizontal_extent_factor,
|
|
234
|
+
vertical_extent_factor=p.vertical_extent_factor,
|
|
235
|
+
pec_launch_width=p.pec_launch_width,
|
|
236
|
+
)
|
|
237
|
+
return cfg_port
|
|
238
|
+
|
|
182
239
|
def __init__(self, pedb, ports_data):
|
|
183
240
|
self._pedb = pedb
|
|
184
241
|
if self._pedb.grpc:
|
|
@@ -189,6 +246,8 @@ class CfgPorts:
|
|
|
189
246
|
for p in ports_data:
|
|
190
247
|
if p["type"] == "wave_port":
|
|
191
248
|
self.ports.append(CfgEdgePort(self._pedb, **p))
|
|
249
|
+
elif p["type"] == "gap_port":
|
|
250
|
+
self.ports.append(CfgEdgePort(self._pedb, **p))
|
|
192
251
|
elif p["type"] == "diff_wave_port":
|
|
193
252
|
self.ports.append(CfgDiffWavePort(self._pedb, **p))
|
|
194
253
|
elif p["type"] in ["coax", "circuit"]:
|
|
@@ -205,7 +264,7 @@ class CfgPorts:
|
|
|
205
264
|
if i.aedt_name:
|
|
206
265
|
edb_primitives[i.aedt_name] = i
|
|
207
266
|
for p in self.ports:
|
|
208
|
-
if p.type in ["wave_port", "diff_wave_port"]:
|
|
267
|
+
if p.type in ["wave_port", "diff_wave_port", "gap_port"]:
|
|
209
268
|
p.set_parameters_to_edb(edb_primitives)
|
|
210
269
|
else:
|
|
211
270
|
p.set_parameters_to_edb()
|
|
@@ -221,10 +280,10 @@ class CfgPorts:
|
|
|
221
280
|
port_type = "coax"
|
|
222
281
|
elif p.terminal_type == "PinGroupTerminal":
|
|
223
282
|
port_type = "circuit"
|
|
224
|
-
elif p.
|
|
225
|
-
port_type = "wave_port"
|
|
283
|
+
elif p.terminal_type == "EdgeTerminal":
|
|
284
|
+
port_type = "wave_port" if p.hfss_type == "Wave" else "gap_port"
|
|
226
285
|
else:
|
|
227
|
-
|
|
286
|
+
raise ValueError("Unknown terminal type")
|
|
228
287
|
else:
|
|
229
288
|
port_type = "circuit"
|
|
230
289
|
|
|
@@ -273,22 +332,7 @@ class CfgPorts:
|
|
|
273
332
|
positive_terminal=pos_term_info,
|
|
274
333
|
)
|
|
275
334
|
else:
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
primitive = Primitive(self._pedb, primitive)
|
|
279
|
-
point = PointData(self._pedb, point)
|
|
280
|
-
|
|
281
|
-
cfg_port = CfgEdgePort(
|
|
282
|
-
self._pedb,
|
|
283
|
-
name=p.name,
|
|
284
|
-
type=port_type,
|
|
285
|
-
primitive_name=primitive.aedt_name,
|
|
286
|
-
point_on_edge=[point._edb_object.X.ToString(), point._edb_object.Y.ToString()],
|
|
287
|
-
horizontal_extent_factor=p.horizontal_extent_factor,
|
|
288
|
-
vertical_extent_factor=p.vertical_extent_factor,
|
|
289
|
-
pec_launch_width=p.pec_launch_width,
|
|
290
|
-
)
|
|
291
|
-
|
|
335
|
+
cfg_port = self.api._get_edge_port_from_edb(p, port_type)
|
|
292
336
|
self.ports.append(cfg_port)
|
|
293
337
|
return self.export_properties()
|
|
294
338
|
|
|
@@ -723,8 +767,99 @@ class CfgProbe(CfgCircuitElement):
|
|
|
723
767
|
|
|
724
768
|
|
|
725
769
|
class CfgEdgePort:
|
|
770
|
+
class Grpc:
|
|
771
|
+
def __init__(self, parent):
|
|
772
|
+
self.parent = parent
|
|
773
|
+
self._pedb = parent._pedb
|
|
774
|
+
|
|
775
|
+
def set_parameters_to_edb(self, edb_primitives):
|
|
776
|
+
from ansys.edb.core.geometry.point_data import PointData as GrpcPointData
|
|
777
|
+
from ansys.edb.core.terminal.edge_terminal import (
|
|
778
|
+
EdgeTerminal as GrpcEdgeTerminal,
|
|
779
|
+
)
|
|
780
|
+
from ansys.edb.core.terminal.edge_terminal import (
|
|
781
|
+
PrimitiveEdge as GrpcPrimitiveEdge,
|
|
782
|
+
)
|
|
783
|
+
from ansys.edb.core.utility.value import Value as GrpcValue
|
|
784
|
+
|
|
785
|
+
from pyedb.grpc.database.ports.ports import WavePort
|
|
786
|
+
|
|
787
|
+
point_on_edge = GrpcPointData(self.parent.point_on_edge)
|
|
788
|
+
primitive = edb_primitives[self.parent.primitive_name]
|
|
789
|
+
pos_edge = GrpcPrimitiveEdge.create(primitive, point_on_edge)
|
|
790
|
+
edge_term = GrpcEdgeTerminal.create(
|
|
791
|
+
layout=primitive.layout, name=self.parent.name, net=primitive.net, edges=[pos_edge], is_ref=False
|
|
792
|
+
)
|
|
793
|
+
edge_term.impedance = GrpcValue(50)
|
|
794
|
+
wave_port = WavePort(self._pedb, edge_term)
|
|
795
|
+
wave_port.horizontal_extent_factor = self.parent.horizontal_extent_factor
|
|
796
|
+
wave_port.vertical_extent_factor = self.parent.vertical_extent_factor
|
|
797
|
+
wave_port.pec_launch_width = self.parent.pec_launch_width
|
|
798
|
+
if self.parent.type == "wave_port":
|
|
799
|
+
wave_port.hfss_type = "Wave"
|
|
800
|
+
else:
|
|
801
|
+
wave_port.hfss_type = "Gap"
|
|
802
|
+
wave_port.do_renormalize = True
|
|
803
|
+
return wave_port
|
|
804
|
+
|
|
805
|
+
def export_properties(self):
|
|
806
|
+
return {
|
|
807
|
+
"name": self.name,
|
|
808
|
+
"type": self.type,
|
|
809
|
+
"primitive_name": self.primitive_name,
|
|
810
|
+
"point_on_edge": self.point_on_edge,
|
|
811
|
+
"horizontal_extent_factor": self.horizontal_extent_factor,
|
|
812
|
+
"vertical_extent_factor": self.vertical_extent_factor,
|
|
813
|
+
"pec_launch_width": self.pec_launch_width,
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
class DotNet(Grpc):
|
|
817
|
+
def __init__(self, parent):
|
|
818
|
+
super().__init__(parent)
|
|
819
|
+
|
|
820
|
+
def set_parameters_to_edb(self, edb_primitives):
|
|
821
|
+
point_on_edge = PointData(self._pedb, x=self.parent.point_on_edge[0], y=self.parent.point_on_edge[1])
|
|
822
|
+
primitive = edb_primitives[self.parent.primitive_name]
|
|
823
|
+
pos_edge = self._pedb.edb_api.cell.terminal.PrimitiveEdge.Create(
|
|
824
|
+
primitive._edb_object, point_on_edge._edb_object
|
|
825
|
+
)
|
|
826
|
+
pos_edge = convert_py_list_to_net_list(pos_edge, self._pedb.edb_api.cell.terminal.Edge)
|
|
827
|
+
edge_term = self._pedb.edb_api.cell.terminal.EdgeTerminal.Create(
|
|
828
|
+
primitive._edb_object.GetLayout(),
|
|
829
|
+
primitive._edb_object.GetNet(),
|
|
830
|
+
self.parent.name,
|
|
831
|
+
pos_edge,
|
|
832
|
+
isRef=False,
|
|
833
|
+
)
|
|
834
|
+
edge_term.SetImpedance(self._pedb.edb_value(50))
|
|
835
|
+
wave_port = WavePort(self._pedb, edge_term)
|
|
836
|
+
wave_port.horizontal_extent_factor = self.parent.horizontal_extent_factor
|
|
837
|
+
wave_port.vertical_extent_factor = self.parent.vertical_extent_factor
|
|
838
|
+
wave_port.pec_launch_width = self.parent.pec_launch_width
|
|
839
|
+
if self.parent.type == "wave_port":
|
|
840
|
+
wave_port.hfss_type = "Wave"
|
|
841
|
+
else:
|
|
842
|
+
wave_port.hfss_type = "Gap"
|
|
843
|
+
wave_port.do_renormalize = True
|
|
844
|
+
return wave_port
|
|
845
|
+
|
|
846
|
+
def export_properties(self):
|
|
847
|
+
return {
|
|
848
|
+
"name": self.parent.name,
|
|
849
|
+
"type": self.parent.type,
|
|
850
|
+
"primitive_name": self.parent.primitive_name,
|
|
851
|
+
"point_on_edge": self.parent.point_on_edge,
|
|
852
|
+
"horizontal_extent_factor": self.parent.horizontal_extent_factor,
|
|
853
|
+
"vertical_extent_factor": self.parent.vertical_extent_factor,
|
|
854
|
+
"pec_launch_width": self.parent.pec_launch_width,
|
|
855
|
+
}
|
|
856
|
+
|
|
726
857
|
def __init__(self, pedb, **kwargs):
|
|
727
858
|
self._pedb = pedb
|
|
859
|
+
if self._pedb.grpc:
|
|
860
|
+
self.api = self.Grpc(self)
|
|
861
|
+
else:
|
|
862
|
+
self.api = self.DotNet(self)
|
|
728
863
|
self.name = kwargs["name"]
|
|
729
864
|
self.type = kwargs["type"]
|
|
730
865
|
self.primitive_name = kwargs["primitive_name"]
|
|
@@ -734,37 +869,10 @@ class CfgEdgePort:
|
|
|
734
869
|
self.pec_launch_width = kwargs.get("pec_launch_width", "0.01mm")
|
|
735
870
|
|
|
736
871
|
def set_parameters_to_edb(self, edb_primitives):
|
|
737
|
-
|
|
738
|
-
primitive = edb_primitives[self.primitive_name]
|
|
739
|
-
pos_edge = self._pedb.edb_api.cell.terminal.PrimitiveEdge.Create(
|
|
740
|
-
primitive._edb_object, point_on_edge._edb_object
|
|
741
|
-
)
|
|
742
|
-
pos_edge = convert_py_list_to_net_list(pos_edge, self._pedb.edb_api.cell.terminal.Edge)
|
|
743
|
-
edge_term = self._pedb.edb_api.cell.terminal.EdgeTerminal.Create(
|
|
744
|
-
primitive._edb_object.GetLayout(), primitive._edb_object.GetNet(), self.name, pos_edge, isRef=False
|
|
745
|
-
)
|
|
746
|
-
edge_term.SetImpedance(self._pedb.edb_value(50))
|
|
747
|
-
wave_port = WavePort(self._pedb, edge_term)
|
|
748
|
-
wave_port.horizontal_extent_factor = self.horizontal_extent_factor
|
|
749
|
-
wave_port.vertical_extent_factor = self.vertical_extent_factor
|
|
750
|
-
wave_port.pec_launch_width = self.pec_launch_width
|
|
751
|
-
if self.type == "wave_port":
|
|
752
|
-
wave_port.hfss_type = "Wave"
|
|
753
|
-
else:
|
|
754
|
-
wave_port.hfss_type = "Gap"
|
|
755
|
-
wave_port.do_renormalize = True
|
|
756
|
-
return wave_port
|
|
872
|
+
return self.api.set_parameters_to_edb(edb_primitives)
|
|
757
873
|
|
|
758
874
|
def export_properties(self):
|
|
759
|
-
return
|
|
760
|
-
"name": self.name,
|
|
761
|
-
"type": self.type,
|
|
762
|
-
"primitive_name": self.primitive_name,
|
|
763
|
-
"point_on_edge": self.point_on_edge,
|
|
764
|
-
"horizontal_extent_factor": self.horizontal_extent_factor,
|
|
765
|
-
"vertical_extent_factor": self.vertical_extent_factor,
|
|
766
|
-
"pec_launch_width": self.pec_launch_width,
|
|
767
|
-
}
|
|
875
|
+
return self.api.export_properties()
|
|
768
876
|
|
|
769
877
|
|
|
770
878
|
class CfgDiffWavePort:
|
|
@@ -80,7 +80,7 @@ class CfgSParameters:
|
|
|
80
80
|
else:
|
|
81
81
|
pin_order = compdef_obj.get_properties()["pin_order"]
|
|
82
82
|
temp_comps = [i for i in cfg_components if i["definition"] == name]
|
|
83
|
-
for
|
|
83
|
+
for model_obj in nport_models:
|
|
84
84
|
temp_comp_list = []
|
|
85
85
|
reference_net_per_component = {}
|
|
86
86
|
for i in temp_comps:
|
|
@@ -155,6 +155,56 @@ class CfgSParameters:
|
|
|
155
155
|
ref_net = s_param.reference_net
|
|
156
156
|
comp.use_s_parameter_model(s_param.name, reference_net=ref_net)
|
|
157
157
|
|
|
158
|
+
def get_data_from_db(self, cfg_components):
|
|
159
|
+
db_comp_def = self._pedb.definitions.component
|
|
160
|
+
for name, compdef_obj in db_comp_def.items():
|
|
161
|
+
nport_models = compdef_obj.component_models
|
|
162
|
+
if not nport_models:
|
|
163
|
+
continue
|
|
164
|
+
else:
|
|
165
|
+
pin_order = compdef_obj.get_properties()["pin_order"]
|
|
166
|
+
temp_comps = [i for i in cfg_components if i["definition"] == name]
|
|
167
|
+
for model_name, model_obj in nport_models.items():
|
|
168
|
+
temp_comp_list = []
|
|
169
|
+
reference_net_per_component = {}
|
|
170
|
+
for i in temp_comps:
|
|
171
|
+
s_param_model = i.get("s_parameter_model")
|
|
172
|
+
if s_param_model:
|
|
173
|
+
if s_param_model["model_name"] == model_name:
|
|
174
|
+
temp_comp_list.append(i["reference_designator"])
|
|
175
|
+
reference_net_per_component[i["reference_designator"]] = s_param_model[
|
|
176
|
+
"reference_net"
|
|
177
|
+
]
|
|
178
|
+
else:
|
|
179
|
+
continue
|
|
180
|
+
|
|
181
|
+
self.parent.s_parameters_models.append(
|
|
182
|
+
CfgSParameterModel(
|
|
183
|
+
name=model_name,
|
|
184
|
+
component_definition=name,
|
|
185
|
+
file_path=model_obj.reference_file,
|
|
186
|
+
apply_to_all=False,
|
|
187
|
+
components=temp_comp_list,
|
|
188
|
+
reference_net_per_component=reference_net_per_component,
|
|
189
|
+
pin_order=pin_order,
|
|
190
|
+
)
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
data = []
|
|
194
|
+
for i in self.parent.s_parameters_models:
|
|
195
|
+
data.append(
|
|
196
|
+
{
|
|
197
|
+
"name": i.name,
|
|
198
|
+
"component_definition": i.component_definition,
|
|
199
|
+
"file_path": i.file_path,
|
|
200
|
+
"apply_to_all": i.apply_to_all,
|
|
201
|
+
"components": i.components,
|
|
202
|
+
"reference_net_per_component": i.reference_net_per_component,
|
|
203
|
+
"pin_order": i.pin_order,
|
|
204
|
+
}
|
|
205
|
+
)
|
|
206
|
+
return data
|
|
207
|
+
|
|
158
208
|
def __init__(self, pedb, data, path_lib=None):
|
|
159
209
|
self._pedb = pedb
|
|
160
210
|
if self._pedb.grpc:
|