pyedb 0.49.0__tar.gz → 0.50.1__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.49.0 → pyedb-0.50.1}/PKG-INFO +1 -1
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/__init__.py +1 -1
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_modeler.py +42 -11
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_ports_sources.py +9 -1
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/hierarchy/component.py +6 -6
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/components.py +3 -3
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/padstacks_data.py +13 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/primitives_data.py +3 -3
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/variables.py +3 -3
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/materials.py +16 -16
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/modeler.py +38 -4
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/data/settings.py +28 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/stackup.py +1 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/utilities/hfss_simulation_setup.py +5 -6
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/edb.py +22 -20
- pyedb-0.50.1/src/pyedb/extensions/via_design_backend.py +681 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/components.py +537 -686
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/control_file.py +458 -149
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/definition/component_def.py +17 -14
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/definition/materials.py +60 -60
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/definition/package_def.py +8 -8
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/definition/padstack_def.py +31 -33
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/definitions.py +6 -4
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/geometry/arc_data.py +5 -5
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/geometry/point_3d_data.py +3 -3
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/geometry/polygon_data.py +5 -5
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/hfss.py +399 -397
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/hierarchy/component.py +60 -58
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/hierarchy/pin_pair_model.py +6 -6
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/hierarchy/pingroup.py +13 -11
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/hierarchy/s_parameter_model.py +1 -1
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/hierarchy/spice_model.py +1 -1
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/layers/layer.py +2 -2
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/layers/stackup_layer.py +144 -44
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/layout/layout.py +12 -12
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/layout/voltage_regulator.py +8 -8
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/layout_validation.py +5 -5
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/modeler.py +248 -245
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/net/differential_pair.py +4 -4
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/net/extended_net.py +7 -8
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/net/net.py +57 -46
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/nets.py +139 -122
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/padstacks.py +174 -190
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/ports/ports.py +23 -17
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/primitive/padstack_instance.py +45 -30
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/primitive/path.py +7 -7
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/primitive/polygon.py +9 -9
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/primitive/primitive.py +21 -21
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/primitive/rectangle.py +1 -1
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_settings.py +1 -1
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/hfss_general_settings.py +1 -1
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/hfss_settings_options.py +1 -1
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_settings.py +6 -6
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +2 -2
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_settings.py +2 -2
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_setup.py +1 -1
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +3 -3
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/siwave.py +166 -214
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/source_excitations.py +156 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/stackup.py +415 -316
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/terminal/bundle_terminal.py +12 -12
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/terminal/edge_terminal.py +6 -5
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/terminal/padstack_instance_terminal.py +13 -13
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/terminal/pingroup_terminal.py +12 -12
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/terminal/point_terminal.py +6 -6
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/terminal/terminal.py +26 -26
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/utility/heat_sink.py +5 -5
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/utility/hfss_extent_info.py +21 -21
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/utility/layout_statistics.py +13 -13
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/utility/rlc.py +3 -3
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/utility/sources.py +1 -1
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/utility/sweep_data_distribution.py +1 -1
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/edb.py +524 -764
- pyedb-0.50.1/src/pyedb/misc/siw_feature_config/emc/__init__.py +0 -0
- pyedb-0.49.0/src/pyedb/extensions/pre_layout_design_toolkit/via_design.py +0 -1151
- pyedb-0.49.0/src/pyedb/grpc/database/utility/simulation_configuration.py +0 -3305
- {pyedb-0.49.0 → pyedb-0.50.1}/LICENSE +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/README.md +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/pyproject.toml +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/common/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/common/nets.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/component_libraries/ansys_components.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_boundaries.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_common.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_components.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_data.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_general.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_nets.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_operations.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_package_definition.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_padstacks.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_pin_groups.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_s_parameter_models.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_setup.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_spice_models.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/cfg_stackup.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/configuration/configuration.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/clr_module.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/Variables.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/connectable.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/hierarchy/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/hierarchy/hierarchy_obj.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/hierarchy/model.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/hierarchy/netlist_model.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/hierarchy/pin_pair_model.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/hierarchy/s_parameter_model.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/hierarchy/spice_model.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/layout.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/layout_obj.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/primitive/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/primitive/bondwire.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/primitive/path.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/primitive/primitive.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/terminal/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/terminal/bundle_terminal.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/terminal/edge_terminal.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/terminal/padstack_instance_terminal.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/terminal/pingroup_terminal.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/terminal/point_terminal.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/terminal/terminal.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/cell/voltage_regulator.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/definition/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/definition/component_def.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/definition/component_model.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/definition/definition_obj.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/definition/definitions.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/definition/package_def.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/dotnet/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/dotnet/database.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/dotnet/primitive.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/control_file.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/design_options.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/edbvalue.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/hfss_extent_info.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/layer_data.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/nets_data.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/ports.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/raptor_x_simulation_setup_data.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/simulation_configuration.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/sources.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/edb_data/utilities.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/general.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/geometry/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/geometry/point_data.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/geometry/polygon_data.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/hfss.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/layout_obj_instance.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/layout_validation.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/net_class.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/nets.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/padstack.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/data/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/data/adaptive_frequency_data.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/data/mesh_operation.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/data/sim_setup_info.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/data/simulation_settings.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/data/siw_dc_ir_settings.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/data/sweep_data.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/io/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/sim_setup_data/io/siwave.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/siwave.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/utilities/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/utilities/heatsink.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/utilities/obj_base.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/utilities/simulation_setup.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/dotnet/database/utilities/siwave_simulation_setup.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/edb_logger.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/exceptions.py +0 -0
- {pyedb-0.49.0/src/pyedb/generic → pyedb-0.50.1/src/pyedb/extensions}/__init__.py +0 -0
- {pyedb-0.49.0/src/pyedb/grpc/database/definition → pyedb-0.50.1/src/pyedb/generic}/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/generic/constants.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/generic/data_handlers.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/generic/design_types.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/generic/filesystem.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/generic/general_methods.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/generic/plot.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/generic/process.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/generic/settings.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/__init__.py +0 -0
- {pyedb-0.49.0/src/pyedb/grpc/database/geometry → pyedb-0.50.1/src/pyedb/grpc/database/definition}/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/definition/component_model.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/definition/component_pin.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/definition/n_port_component_model.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/general.py +0 -0
- {pyedb-0.49.0/src/pyedb/grpc/database/hierarchy → pyedb-0.50.1/src/pyedb/grpc/database/geometry}/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/geometry/point_data.py +0 -0
- {pyedb-0.49.0/src/pyedb/grpc/database/layers → pyedb-0.50.1/src/pyedb/grpc/database/hierarchy}/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/hierarchy/model.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/hierarchy/netlist_model.py +0 -0
- {pyedb-0.49.0/src/pyedb/grpc/database/layout → pyedb-0.50.1/src/pyedb/grpc/database/layers}/__init__.py +0 -0
- {pyedb-0.49.0/src/pyedb/grpc/database/net → pyedb-0.50.1/src/pyedb/grpc/database/layout}/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/layout/cell.py +0 -0
- {pyedb-0.49.0/src/pyedb/grpc/database/ports → pyedb-0.50.1/src/pyedb/grpc/database/net}/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/net/net_class.py +0 -0
- {pyedb-0.49.0/src/pyedb/grpc/database/simulation_setup → pyedb-0.50.1/src/pyedb/grpc/database/ports}/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/primitive/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/primitive/bondwire.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/primitive/circle.py +0 -0
- {pyedb-0.49.0/src/pyedb/grpc/database/terminal → pyedb-0.50.1/src/pyedb/grpc/database/simulation_setup}/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/adaptive_frequency.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_meshing_settings.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/hfss_dcr_settings.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/hfss_solver_settings.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/mesh_operation.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/raptor_x_advanced_settings.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/raptor_x_general_settings.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/siwave_dcir_simulation_setup.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/simulation_setup/sweep_data.py +0 -0
- {pyedb-0.49.0/src/pyedb/ipc2581 → pyedb-0.50.1/src/pyedb/grpc/database/terminal}/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/utility/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/utility/constants.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/database/utility/xml_control_file.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/edb_init.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/grpc/rpc_session.py +0 -0
- {pyedb-0.49.0/src/pyedb/ipc2581/bom → pyedb-0.50.1/src/pyedb/ipc2581}/__init__.py +0 -0
- {pyedb-0.49.0/src/pyedb/ipc2581/content → pyedb-0.50.1/src/pyedb/ipc2581/bom}/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/bom/bom.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/bom/bom_item.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/bom/characteristics.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/bom/refdes.py +0 -0
- {pyedb-0.49.0/src/pyedb/ipc2581/ecad → pyedb-0.50.1/src/pyedb/ipc2581/content}/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/color.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/content.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/dictionary_color.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/dictionary_fill.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/dictionary_line.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/entry_color.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/entry_line.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/fill.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/layer_ref.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/content/standard_geometries_dictionary.py +0 -0
- {pyedb-0.49.0/src/pyedb/ipc2581/ecad/cad_data → pyedb-0.50.1/src/pyedb/ipc2581/ecad}/__init__.py +0 -0
- {pyedb-0.49.0/src/pyedb/misc → pyedb-0.50.1/src/pyedb/ipc2581/ecad/cad_data}/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/cad_data.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/component.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/drill.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/feature.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/layer.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/layer_feature.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/logical_net.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/outline.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/package.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/padstack_def.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/padstack_instance.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/path.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/phy_net.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/pin.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/polygon.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/profile.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/stackup.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/stackup_group.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/stackup_layer.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_data/step.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/cad_header.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/ecad.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ecad/spec.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/history_record.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/ipc2581.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/ipc2581/logistic_header.py +0 -0
- {pyedb-0.49.0/src/pyedb/misc/siw_feature_config → pyedb-0.50.1/src/pyedb/misc}/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/aedtlib_personalib_install.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/downloads.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/misc.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/pyedb.runtimeconfig.json +0 -0
- {pyedb-0.49.0/src/pyedb/misc/siw_feature_config/emc → pyedb-0.50.1/src/pyedb/misc/siw_feature_config}/__init__.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/emc/component_tags.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/emc/net_tags.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/emc/tag_library.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/emc/xml_generic.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/xtalk_scan/fd_xtalk_scan_config.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/xtalk_scan/impedance_scan_config.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/xtalk_scan/net.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/xtalk_scan/pins.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/misc/utilities.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/modeler/geometry_operators.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/siwave.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/siwave_core/icepak.py +0 -0
- {pyedb-0.49.0 → pyedb-0.50.1}/src/pyedb/workflow.py +0 -0
|
@@ -29,13 +29,15 @@ class CfgTrace:
|
|
|
29
29
|
def __init__(self, **kwargs):
|
|
30
30
|
self.name = kwargs.get("name", "")
|
|
31
31
|
self.layer = kwargs["layer"]
|
|
32
|
-
self.path = kwargs
|
|
32
|
+
self.path = kwargs.get("path")
|
|
33
33
|
self.width = kwargs["width"]
|
|
34
34
|
self.net_name = kwargs.get("net_name", "")
|
|
35
35
|
self.start_cap_style = kwargs.get("start_cap_style", "round")
|
|
36
36
|
self.end_cap_style = kwargs.get("end_cap_style", "round")
|
|
37
37
|
self.corner_style = kwargs.get("corner_style", "sharp")
|
|
38
38
|
|
|
39
|
+
self.incremental_path = kwargs.get("incremental_path")
|
|
40
|
+
|
|
39
41
|
|
|
40
42
|
class CfgPlane:
|
|
41
43
|
def __init__(self, **kwargs):
|
|
@@ -54,6 +56,10 @@ class CfgPlane:
|
|
|
54
56
|
# polygon
|
|
55
57
|
self.points = kwargs.get("points", [])
|
|
56
58
|
|
|
59
|
+
# circle
|
|
60
|
+
self.radius = kwargs.get("radius", 0)
|
|
61
|
+
self.position = kwargs.get("position", [0, 0])
|
|
62
|
+
|
|
57
63
|
|
|
58
64
|
class CfgModeler:
|
|
59
65
|
"""Manage configuration general settings."""
|
|
@@ -153,16 +159,30 @@ class CfgModeler:
|
|
|
153
159
|
def set_parameter_to_edb(self):
|
|
154
160
|
if self.parent.traces:
|
|
155
161
|
for t in self.parent.traces:
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
162
|
+
if t.path:
|
|
163
|
+
obj = self._pedb.modeler.create_trace(
|
|
164
|
+
path_list=t.path,
|
|
165
|
+
layer_name=t.layer,
|
|
166
|
+
net_name=t.net_name,
|
|
167
|
+
width=t.width,
|
|
168
|
+
start_cap_style=t.start_cap_style,
|
|
169
|
+
end_cap_style=t.end_cap_style,
|
|
170
|
+
corner_style=t.corner_style,
|
|
171
|
+
)
|
|
172
|
+
obj.aedt_name = t.name
|
|
173
|
+
else:
|
|
174
|
+
obj = self._pedb.modeler.create_trace(
|
|
175
|
+
path_list=[t.incremental_path[0]],
|
|
176
|
+
layer_name=t.layer,
|
|
177
|
+
net_name=t.net_name,
|
|
178
|
+
width=t.width,
|
|
179
|
+
start_cap_style=t.start_cap_style,
|
|
180
|
+
end_cap_style=t.end_cap_style,
|
|
181
|
+
corner_style=t.corner_style,
|
|
182
|
+
)
|
|
183
|
+
obj.aedt_name = t.name
|
|
184
|
+
for x, y in t.incremental_path[1:]:
|
|
185
|
+
obj.add_point(x, y, True)
|
|
166
186
|
|
|
167
187
|
if self.parent.padstack_defs:
|
|
168
188
|
for p in self.parent.padstack_defs:
|
|
@@ -202,6 +222,17 @@ class CfgModeler:
|
|
|
202
222
|
main_shape=p.points, layer_name=p.layer, net_name=p.net_name
|
|
203
223
|
)
|
|
204
224
|
obj.aedt_name = p.name
|
|
225
|
+
elif p.type == "circle":
|
|
226
|
+
obj = self._pedb.modeler.create_circle(
|
|
227
|
+
layer_name=p.layer,
|
|
228
|
+
net_name=p.net_name,
|
|
229
|
+
x=p.position[0],
|
|
230
|
+
y=p.position[1],
|
|
231
|
+
radius=p.radius,
|
|
232
|
+
)
|
|
233
|
+
obj.aedt_name = p.name
|
|
234
|
+
else:
|
|
235
|
+
raise
|
|
205
236
|
|
|
206
237
|
for v in p.voids:
|
|
207
238
|
for i in self._pedb.layout.primitives:
|
|
@@ -391,7 +391,11 @@ class CfgCircuitElement(CfgBase):
|
|
|
391
391
|
pos_coor_terminal = dict()
|
|
392
392
|
if self.type == "coax":
|
|
393
393
|
pins = self._get_pins(pos_type, pos_value, self.positive_terminal_info.reference_designator)
|
|
394
|
-
pins
|
|
394
|
+
if len(pins) < 2:
|
|
395
|
+
pins = {f"{self.name}": i for _, i in pins.items()}
|
|
396
|
+
else:
|
|
397
|
+
pins = {f"{self.name}_{name}": i for name, i in pins.items()}
|
|
398
|
+
self.distributed = True
|
|
395
399
|
pos_objs.update(pins)
|
|
396
400
|
elif pos_type == "coordinates":
|
|
397
401
|
layer = self.positive_terminal_info.layer
|
|
@@ -402,10 +406,14 @@ class CfgCircuitElement(CfgBase):
|
|
|
402
406
|
pos_coor_terminal[self.name] = self._pedb.get_point_terminal(self.name, net_name, point, layer)
|
|
403
407
|
|
|
404
408
|
elif pos_type == "padstack":
|
|
409
|
+
flag = False
|
|
405
410
|
for pds in self._pedb.layout.padstack_instances:
|
|
406
411
|
if pds.aedt_name == pos_value:
|
|
407
412
|
pos_objs.update({pos_value: pds})
|
|
413
|
+
flag = True
|
|
408
414
|
break
|
|
415
|
+
if flag is False:
|
|
416
|
+
raise ValueError(f"Padstack instance {pos_value} does not exist")
|
|
409
417
|
elif pos_type == "pin":
|
|
410
418
|
pins = {
|
|
411
419
|
pos_value: self._pedb.components.instances[self.positive_terminal_info.reference_designator].pins[
|
|
@@ -308,11 +308,11 @@ class EDBComponent(Group):
|
|
|
308
308
|
if "GetSolderBallProperty" in dir(self.component_property):
|
|
309
309
|
shape = self.component_property.GetSolderBallProperty().GetShape()
|
|
310
310
|
if shape.value__ == 0:
|
|
311
|
-
return "
|
|
311
|
+
return "none"
|
|
312
312
|
elif shape.value__ == 1:
|
|
313
|
-
return "
|
|
313
|
+
return "cylinder"
|
|
314
314
|
elif shape.value__ == 2:
|
|
315
|
-
return "
|
|
315
|
+
return "spheroid"
|
|
316
316
|
|
|
317
317
|
@solder_ball_shape.setter
|
|
318
318
|
def solder_ball_shape(self, value):
|
|
@@ -510,7 +510,7 @@ class EDBComponent(Group):
|
|
|
510
510
|
return "0"
|
|
511
511
|
for pinpair in pinpairs:
|
|
512
512
|
pair = model.GetPinPairRlc(pinpair)
|
|
513
|
-
return pair.R.
|
|
513
|
+
return pair.R.ToDouble()
|
|
514
514
|
return None
|
|
515
515
|
|
|
516
516
|
@res_value.setter
|
|
@@ -539,7 +539,7 @@ class EDBComponent(Group):
|
|
|
539
539
|
return "0"
|
|
540
540
|
for pinpair in pinpairs:
|
|
541
541
|
pair = model.GetPinPairRlc(pinpair)
|
|
542
|
-
return pair.C.
|
|
542
|
+
return pair.C.ToDouble()
|
|
543
543
|
return None
|
|
544
544
|
|
|
545
545
|
@cap_value.setter
|
|
@@ -568,7 +568,7 @@ class EDBComponent(Group):
|
|
|
568
568
|
return "0"
|
|
569
569
|
for pinpair in pinpairs:
|
|
570
570
|
pair = model.GetPinPairRlc(pinpair)
|
|
571
|
-
return pair.L.
|
|
571
|
+
return pair.L.ToDouble()
|
|
572
572
|
return None
|
|
573
573
|
|
|
574
574
|
@ind_value.setter
|
|
@@ -2362,11 +2362,11 @@ class Components(object):
|
|
|
2362
2362
|
part_name = comp.partname
|
|
2363
2363
|
comp_type = comp.type
|
|
2364
2364
|
if comp_type == "Resistor":
|
|
2365
|
-
value = comp.res_value
|
|
2365
|
+
value = str(comp.res_value)
|
|
2366
2366
|
elif comp_type == "Capacitor":
|
|
2367
|
-
value = comp.cap_value
|
|
2367
|
+
value = str(comp.cap_value)
|
|
2368
2368
|
elif comp_type == "Inductor":
|
|
2369
|
-
value = comp.ind_value
|
|
2369
|
+
value = str(comp.ind_value)
|
|
2370
2370
|
else:
|
|
2371
2371
|
value = ""
|
|
2372
2372
|
if not value:
|
|
@@ -1185,6 +1185,7 @@ class EDBPadstackInstance(Primitive):
|
|
|
1185
1185
|
super().__init__(_pedb, edb_padstackinstance)
|
|
1186
1186
|
self._edb_padstackinstance = self._edb_object
|
|
1187
1187
|
self._bounding_box = []
|
|
1188
|
+
self._side_number = None
|
|
1188
1189
|
self._object_instance = None
|
|
1189
1190
|
self._position = []
|
|
1190
1191
|
self._pdef = None
|
|
@@ -1929,6 +1930,18 @@ class EDBPadstackInstance(Primitive):
|
|
|
1929
1930
|
"""
|
|
1930
1931
|
return int(self._edb_padstackinstance.GetGroup().GetPlacementLayer().GetTopBottomAssociation())
|
|
1931
1932
|
|
|
1933
|
+
@property
|
|
1934
|
+
def side_number(self) -> float:
|
|
1935
|
+
if not self._side_number:
|
|
1936
|
+
prop_string = "$begin ''\n\tsid=3\n\tmat='copper'\n\tvs='Wirebond'\n$end ''\n"
|
|
1937
|
+
self._edb_padstackinstance.SetProductProperty(self._pedb._edb.ProductId.Designer, 21, prop_string)
|
|
1938
|
+
self._side_number = self._edb_padstackinstance.GetProductProperty(self._pedb._edb.ProductId.Designer, 21)
|
|
1939
|
+
return self._side_number
|
|
1940
|
+
|
|
1941
|
+
@side_number.setter
|
|
1942
|
+
def side_number(self, value):
|
|
1943
|
+
self._side_number = self._edb_padstackinstance.GetProductProperty(self._pedb._edb.ProductId.Designer, 21, value)
|
|
1944
|
+
|
|
1932
1945
|
def create_rectangle_in_pad(self, layer_name, return_points=False, partition_max_order=16):
|
|
1933
1946
|
"""Create a rectangle inscribed inside a padstack instance pad.
|
|
1934
1947
|
|
|
@@ -522,9 +522,9 @@ class EDBArcs(object):
|
|
|
522
522
|
xt, yt = self._app._active_cell.primitive._get_points_for_plot(my_net_points, arc_segments)
|
|
523
523
|
if not xt:
|
|
524
524
|
return []
|
|
525
|
-
x, y = GeometryOperators.orient_polygon(xt, yt, clockwise=True)
|
|
526
|
-
return x, y
|
|
525
|
+
x, y = list(GeometryOperators.orient_polygon(xt, yt, clockwise=True))
|
|
526
|
+
return [x, y]
|
|
527
527
|
except:
|
|
528
528
|
x = []
|
|
529
529
|
y = []
|
|
530
|
-
return x, y
|
|
530
|
+
return [x, y]
|
|
@@ -57,7 +57,7 @@ class Variable:
|
|
|
57
57
|
str
|
|
58
58
|
|
|
59
59
|
"""
|
|
60
|
-
return self.
|
|
60
|
+
return self._var_server.GetVariableValue(self.name)[1].ToString()
|
|
61
61
|
|
|
62
62
|
@property
|
|
63
63
|
def value_object(self):
|
|
@@ -77,11 +77,11 @@ class Variable:
|
|
|
77
77
|
-------
|
|
78
78
|
float
|
|
79
79
|
"""
|
|
80
|
-
return self.
|
|
80
|
+
return self._var_server.GetVariableValue(self.name)[1].ToDouble()
|
|
81
81
|
|
|
82
82
|
@value.setter
|
|
83
83
|
def value(self, value):
|
|
84
|
-
self.
|
|
84
|
+
self._var_server.SetVariableValue(self.name, self._pedb.edb_value(value))
|
|
85
85
|
|
|
86
86
|
@property
|
|
87
87
|
def description(self):
|
|
@@ -88,22 +88,22 @@ def get_line_float_value(line):
|
|
|
88
88
|
class MaterialProperties(BaseModel):
|
|
89
89
|
"""Store material properties."""
|
|
90
90
|
|
|
91
|
-
conductivity: Optional[PositiveFloat] =
|
|
92
|
-
dielectric_loss_tangent: Optional[PositiveFloat] =
|
|
93
|
-
magnetic_loss_tangent: Optional[PositiveFloat] =
|
|
94
|
-
mass_density: Optional[PositiveFloat] =
|
|
95
|
-
permittivity: Optional[PositiveFloat] =
|
|
96
|
-
permeability: Optional[PositiveFloat] =
|
|
97
|
-
poisson_ratio: Optional[PositiveFloat] =
|
|
98
|
-
specific_heat: Optional[PositiveFloat] =
|
|
99
|
-
thermal_conductivity: Optional[PositiveFloat] =
|
|
100
|
-
youngs_modulus: Optional[PositiveFloat] =
|
|
101
|
-
thermal_expansion_coefficient: Optional[PositiveFloat] =
|
|
102
|
-
dc_conductivity: Optional[PositiveFloat] =
|
|
103
|
-
dc_permittivity: Optional[PositiveFloat] =
|
|
104
|
-
dielectric_model_frequency: Optional[PositiveFloat] =
|
|
105
|
-
loss_tangent_at_frequency: Optional[PositiveFloat] =
|
|
106
|
-
permittivity_at_frequency: Optional[PositiveFloat] =
|
|
91
|
+
conductivity: Optional[PositiveFloat] = 0.0
|
|
92
|
+
dielectric_loss_tangent: Optional[PositiveFloat] = 0.0
|
|
93
|
+
magnetic_loss_tangent: Optional[PositiveFloat] = 0.0
|
|
94
|
+
mass_density: Optional[PositiveFloat] = 0.0
|
|
95
|
+
permittivity: Optional[PositiveFloat] = 0.0
|
|
96
|
+
permeability: Optional[PositiveFloat] = 0.0
|
|
97
|
+
poisson_ratio: Optional[PositiveFloat] = 0.0
|
|
98
|
+
specific_heat: Optional[PositiveFloat] = 0.0
|
|
99
|
+
thermal_conductivity: Optional[PositiveFloat] = 0.0
|
|
100
|
+
youngs_modulus: Optional[PositiveFloat] = 0.0
|
|
101
|
+
thermal_expansion_coefficient: Optional[PositiveFloat] = 0.0
|
|
102
|
+
dc_conductivity: Optional[PositiveFloat] = 0.0
|
|
103
|
+
dc_permittivity: Optional[PositiveFloat] = 0.0
|
|
104
|
+
dielectric_model_frequency: Optional[PositiveFloat] = 0.0
|
|
105
|
+
loss_tangent_at_frequency: Optional[PositiveFloat] = 0.0
|
|
106
|
+
permittivity_at_frequency: Optional[PositiveFloat] = 0.0
|
|
107
107
|
|
|
108
108
|
|
|
109
109
|
class Material(object):
|
|
@@ -629,7 +629,7 @@ class Modeler(object):
|
|
|
629
629
|
|
|
630
630
|
return primitive
|
|
631
631
|
|
|
632
|
-
def create_polygon(self, main_shape, layer_name, voids=[], net_name=""):
|
|
632
|
+
def create_polygon(self, main_shape=None, layer_name="", voids=[], net_name="", points=None):
|
|
633
633
|
"""Create a polygon based on a list of points and voids.
|
|
634
634
|
|
|
635
635
|
Parameters
|
|
@@ -646,13 +646,40 @@ class Modeler(object):
|
|
|
646
646
|
List of shape objects for voids or points that creates the shapes. The default is``[]``.
|
|
647
647
|
net_name : str, optional
|
|
648
648
|
Name of the net. The default is ``""``.
|
|
649
|
+
points : list, optional
|
|
650
|
+
Added for compatibility with grpc.
|
|
649
651
|
|
|
650
652
|
Returns
|
|
651
653
|
-------
|
|
652
654
|
bool, :class:`dotnet.database.edb_data.primitives.Primitive`
|
|
653
655
|
Polygon when successful, ``False`` when failed.
|
|
654
656
|
"""
|
|
657
|
+
from pyedb.dotnet.database.geometry.polygon_data import PolygonData
|
|
658
|
+
|
|
659
|
+
if main_shape:
|
|
660
|
+
warnings.warn(
|
|
661
|
+
"main_shape argument will be deprecated soon with grpc version, use points instead.", DeprecationWarning
|
|
662
|
+
)
|
|
663
|
+
|
|
655
664
|
net = self._pedb.nets.find_or_create_net(net_name)
|
|
665
|
+
if points:
|
|
666
|
+
arcs = []
|
|
667
|
+
if isinstance(points, PolygonData):
|
|
668
|
+
points = points.points
|
|
669
|
+
for _ in range(len(points)):
|
|
670
|
+
arcs.append(
|
|
671
|
+
self._edb.Geometry.ArcData(
|
|
672
|
+
self._pedb.point_data(0, 0),
|
|
673
|
+
self._pedb.point_data(0, 0),
|
|
674
|
+
)
|
|
675
|
+
)
|
|
676
|
+
polygonData = self._edb.Geometry.PolygonData.CreateFromArcs(convert_py_list_to_net_list(arcs), True)
|
|
677
|
+
|
|
678
|
+
for idx, i in enumerate(points):
|
|
679
|
+
pdata_0 = self._pedb.edb_value(i[0])
|
|
680
|
+
pdata_1 = self._pedb.edb_value(i[1])
|
|
681
|
+
new_points = self._edb.Geometry.PointData(pdata_0, pdata_1)
|
|
682
|
+
polygonData.SetPoint(idx, new_points)
|
|
656
683
|
if isinstance(main_shape, list):
|
|
657
684
|
arcs = []
|
|
658
685
|
for _ in range(len(main_shape)):
|
|
@@ -673,9 +700,14 @@ class Modeler(object):
|
|
|
673
700
|
elif isinstance(main_shape, Modeler.Shape):
|
|
674
701
|
polygonData = self.shape_to_polygon_data(main_shape)
|
|
675
702
|
else:
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
703
|
+
if not points:
|
|
704
|
+
polygonData = main_shape
|
|
705
|
+
if isinstance(polygonData, PolygonData):
|
|
706
|
+
if not polygonData.points:
|
|
707
|
+
raise RuntimeError("Failed to create main shape polygon data")
|
|
708
|
+
else:
|
|
709
|
+
if polygonData.IsNull():
|
|
710
|
+
raise RuntimeError("Failed to create main shape polygon data")
|
|
679
711
|
for void in voids:
|
|
680
712
|
if isinstance(void, list):
|
|
681
713
|
void = self.Shape("polygon", points=void)
|
|
@@ -689,6 +721,8 @@ class Modeler(object):
|
|
|
689
721
|
self._logger.error("Failed to create void polygon data")
|
|
690
722
|
return False
|
|
691
723
|
polygonData.AddHole(voidPolygonData)
|
|
724
|
+
if isinstance(polygonData, PolygonData):
|
|
725
|
+
polygonData = polygonData._edb_object
|
|
692
726
|
polygon = self._pedb._edb.Cell.Primitive.Polygon.Create(
|
|
693
727
|
self._active_layout, layer_name, net.net_obj, polygonData
|
|
694
728
|
)
|
|
@@ -289,6 +289,34 @@ class AdaptiveSettings(object):
|
|
|
289
289
|
self.adaptive_settings.AdaptiveFrequencyDataList.Add(high_freq_adapt_data)
|
|
290
290
|
return self._parent._update_setup()
|
|
291
291
|
|
|
292
|
+
def add_multi_frequency_adaptive_setup(self, freq_list, max_num_passes=10, max_delta_s=0.02):
|
|
293
|
+
"""Add a setup for frequency data.
|
|
294
|
+
|
|
295
|
+
Parameters
|
|
296
|
+
----------
|
|
297
|
+
low_frequency : str, float
|
|
298
|
+
Frequency with units or float frequency (in Hz).
|
|
299
|
+
high_frequency : str, float
|
|
300
|
+
Frequency with units or float frequency (in Hz).
|
|
301
|
+
max_num_passes : int, optional
|
|
302
|
+
Maximum number of passes. The default is ``10``.
|
|
303
|
+
max_delta_s : float, optional
|
|
304
|
+
Maximum delta S. The default is ``0.02``.
|
|
305
|
+
|
|
306
|
+
Returns
|
|
307
|
+
-------
|
|
308
|
+
bool
|
|
309
|
+
``True`` if method is successful, ``False`` otherwise.
|
|
310
|
+
"""
|
|
311
|
+
self.adaptive_settings.AdaptiveFrequencyDataList.Clear()
|
|
312
|
+
for i in freq_list:
|
|
313
|
+
low_freq_adapt_data = self._parent._pedb.simsetupdata.AdaptiveFrequencyData()
|
|
314
|
+
low_freq_adapt_data.MaxDelta = self._parent._pedb.edb_value(max_delta_s).ToString()
|
|
315
|
+
low_freq_adapt_data.MaxPasses = max_num_passes
|
|
316
|
+
low_freq_adapt_data.AdaptiveFrequency = self._parent._pedb.edb_value(i).ToString()
|
|
317
|
+
self.adaptive_settings.AdaptiveFrequencyDataList.Add(low_freq_adapt_data)
|
|
318
|
+
return self._parent._update_setup()
|
|
319
|
+
|
|
292
320
|
|
|
293
321
|
class DefeatureSettings(object):
|
|
294
322
|
"""Manages EDB methods for defeature settings."""
|
|
@@ -885,6 +885,7 @@ class Stackup(LayerCollection):
|
|
|
885
885
|
else:
|
|
886
886
|
new_layer = self._create_nonstackup_layer(layer_name, layer_type)
|
|
887
887
|
self._set_layout_stackup(new_layer, "non_stackup")
|
|
888
|
+
return self.non_stackup_layers[layer_name]
|
|
888
889
|
self.refresh_layer_collection()
|
|
889
890
|
return self.layers[layer_name]
|
|
890
891
|
|
|
@@ -310,7 +310,7 @@ class HfssSimulationSetup(SimulationSetup):
|
|
|
310
310
|
self._update_setup()
|
|
311
311
|
return mesh_operation
|
|
312
312
|
|
|
313
|
-
def set_solution_single_frequency(self, frequency="
|
|
313
|
+
def set_solution_single_frequency(self, frequency="5Ghz", max_num_passes=10, max_delta_s=0.02):
|
|
314
314
|
"""Set single-frequency solution.
|
|
315
315
|
|
|
316
316
|
Parameters
|
|
@@ -331,7 +331,7 @@ class HfssSimulationSetup(SimulationSetup):
|
|
|
331
331
|
self.adaptive_settings.adaptive_settings.AdaptiveFrequencyDataList.Clear()
|
|
332
332
|
return self.adaptive_settings.add_adaptive_frequency_data(frequency, max_num_passes, max_delta_s)
|
|
333
333
|
|
|
334
|
-
def set_solution_multi_frequencies(self, frequencies=("
|
|
334
|
+
def set_solution_multi_frequencies(self, frequencies=("5Ghz", "10Ghz"), max_num_passes=10, max_delta_s="0.02"):
|
|
335
335
|
"""Set multi-frequency solution.
|
|
336
336
|
|
|
337
337
|
Parameters
|
|
@@ -350,13 +350,12 @@ class HfssSimulationSetup(SimulationSetup):
|
|
|
350
350
|
"""
|
|
351
351
|
self.adaptive_settings.adapt_type = "kMultiFrequencies"
|
|
352
352
|
self.adaptive_settings.adaptive_settings.AdaptiveFrequencyDataList.Clear()
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
return False
|
|
353
|
+
if not self.adaptive_settings.add_multi_frequency_adaptive_setup(frequencies, max_num_passes, max_delta_s):
|
|
354
|
+
return False
|
|
356
355
|
return True
|
|
357
356
|
|
|
358
357
|
def set_solution_broadband(
|
|
359
|
-
self, low_frequency="
|
|
358
|
+
self, low_frequency="5Ghz", high_frequency="10Ghz", max_num_passes=10, max_delta_s="0.02"
|
|
360
359
|
):
|
|
361
360
|
"""Set broadband solution.
|
|
362
361
|
|
|
@@ -49,7 +49,6 @@ from pyedb.dotnet.database.components import Components
|
|
|
49
49
|
import pyedb.dotnet.database.dotnet.database
|
|
50
50
|
from pyedb.dotnet.database.dotnet.database import Database
|
|
51
51
|
from pyedb.dotnet.database.edb_data.design_options import EdbDesignOptions
|
|
52
|
-
from pyedb.dotnet.database.edb_data.edbvalue import EdbValue
|
|
53
52
|
from pyedb.dotnet.database.edb_data.ports import (
|
|
54
53
|
BundleWavePort,
|
|
55
54
|
CircuitPort,
|
|
@@ -461,9 +460,9 @@ class Edb(Database):
|
|
|
461
460
|
"""
|
|
462
461
|
all_vars = dict()
|
|
463
462
|
for i, j in self.project_variables.items():
|
|
464
|
-
all_vars[i] = j
|
|
463
|
+
all_vars[i] = j.value
|
|
465
464
|
for i, j in self.design_variables.items():
|
|
466
|
-
all_vars[i] = j
|
|
465
|
+
all_vars[i] = j.value
|
|
467
466
|
return all_vars
|
|
468
467
|
|
|
469
468
|
@property
|
|
@@ -3022,11 +3021,11 @@ class Edb(Database):
|
|
|
3022
3021
|
--------
|
|
3023
3022
|
|
|
3024
3023
|
>>> from pyedb import Edb
|
|
3025
|
-
>>> edb = Edb(edbpath=
|
|
3024
|
+
>>> edb = Edb(edbpath="C:\\temp\\myproject.aedb", edbversion="2023.2")
|
|
3026
3025
|
|
|
3027
3026
|
>>> options_config = {'UNITE_NETS' : 1, 'LAUNCH_Q3D' : 0}
|
|
3028
|
-
>>> edb.write_export3d_option_config_file(r"C
|
|
3029
|
-
>>> edb.export_hfss(r"C
|
|
3027
|
+
>>> edb.write_export3d_option_config_file(r"C:\\temp", options_config)
|
|
3028
|
+
>>> edb.export_hfss(r"C:\\temp")
|
|
3030
3029
|
"""
|
|
3031
3030
|
siwave_s = SiwaveSolve(self.edbpath, aedt_installer_path=self.base_path)
|
|
3032
3031
|
return siwave_s.export_3d_cad("HFSS", path_to_output, net_list, num_cores, aedt_file_name, hidden=hidden)
|
|
@@ -3065,10 +3064,10 @@ class Edb(Database):
|
|
|
3065
3064
|
--------
|
|
3066
3065
|
|
|
3067
3066
|
>>> from pyedb import Edb
|
|
3068
|
-
>>> edb = Edb(edbpath=
|
|
3067
|
+
>>> edb = Edb(edbpath="C:\\temp\\myproject.aedb", edbversion="2021.2")
|
|
3069
3068
|
>>> options_config = {'UNITE_NETS' : 1, 'LAUNCH_Q3D' : 0}
|
|
3070
|
-
>>> edb.write_export3d_option_config_file(
|
|
3071
|
-
>>> edb.export_q3d(
|
|
3069
|
+
>>> edb.write_export3d_option_config_file("C:\\temp", options_config)
|
|
3070
|
+
>>> edb.export_q3d("C:\\temp")
|
|
3072
3071
|
"""
|
|
3073
3072
|
|
|
3074
3073
|
siwave_s = SiwaveSolve(self.edbpath, aedt_installer_path=self.base_path)
|
|
@@ -3116,11 +3115,11 @@ class Edb(Database):
|
|
|
3116
3115
|
|
|
3117
3116
|
>>> from pyedb import Edb
|
|
3118
3117
|
|
|
3119
|
-
>>> edb = Edb(edbpath=
|
|
3118
|
+
>>> edb = Edb(edbpath="C:\\temp\\myproject.aedb", edbversion="2021.2")
|
|
3120
3119
|
|
|
3121
3120
|
>>> options_config = {'UNITE_NETS' : 1, 'LAUNCH_Q3D' : 0}
|
|
3122
|
-
>>> edb.write_export3d_option_config_file(
|
|
3123
|
-
>>> edb.export_maxwell(
|
|
3121
|
+
>>> edb.write_export3d_option_config_file("C:\\temp", options_config)
|
|
3122
|
+
>>> edb.export_maxwell("C:\\temp")
|
|
3124
3123
|
"""
|
|
3125
3124
|
siwave_s = SiwaveSolve(self.edbpath, aedt_installer_path=self.base_path)
|
|
3126
3125
|
return siwave_s.export_3d_cad(
|
|
@@ -3245,10 +3244,13 @@ class Edb(Database):
|
|
|
3245
3244
|
-------
|
|
3246
3245
|
:class:`pyedb.dotnet.database.edb_data.edbvalue.EdbValue`
|
|
3247
3246
|
"""
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3247
|
+
|
|
3248
|
+
for i, j in self.project_variables.items():
|
|
3249
|
+
if i == variable_name:
|
|
3250
|
+
return j
|
|
3251
|
+
for i, j in self.design_variables.items():
|
|
3252
|
+
if i == variable_name:
|
|
3253
|
+
return j
|
|
3252
3254
|
self.logger.info("Variable %s doesn't exists.", variable_name)
|
|
3253
3255
|
return None
|
|
3254
3256
|
|
|
@@ -3758,7 +3760,7 @@ class Edb(Database):
|
|
|
3758
3760
|
elif not name:
|
|
3759
3761
|
name = generate_unique_name("setup")
|
|
3760
3762
|
setup = HfssSimulationSetup(self, name=name)
|
|
3761
|
-
setup.set_solution_single_frequency("
|
|
3763
|
+
setup.set_solution_single_frequency("1Ghz")
|
|
3762
3764
|
return setup
|
|
3763
3765
|
|
|
3764
3766
|
def create_raptorx_setup(self, name=None):
|
|
@@ -3958,7 +3960,7 @@ class Edb(Database):
|
|
|
3958
3960
|
Dictionary with EDB path as key and EDB PolygonData as value defining the zone region.
|
|
3959
3961
|
This dictionary is returned from the command copy_zones():
|
|
3960
3962
|
>>> edb = Edb(edb_file)
|
|
3961
|
-
>>> zone_dict = edb.copy_zones(
|
|
3963
|
+
>>> zone_dict = edb.copy_zones("C:/Temp/test")
|
|
3962
3964
|
|
|
3963
3965
|
common_reference_net : str
|
|
3964
3966
|
the common reference net name. This net name must be provided to provide a valid project.
|
|
@@ -4017,7 +4019,7 @@ class Edb(Database):
|
|
|
4017
4019
|
dictionary terminals with edb name as key and created ports name on clipped signal nets.
|
|
4018
4020
|
Dictionary is generated by the command cutout_multizone_layout:
|
|
4019
4021
|
>>> edb = Edb(edb_file)
|
|
4020
|
-
>>> edb_zones = edb.copy_zones(
|
|
4022
|
+
>>> edb_zones = edb.copy_zones("C:/Temp/test")
|
|
4021
4023
|
>>> defined_ports, terminals_info = edb.cutout_multizone_layout(edb_zones, common_reference_net)
|
|
4022
4024
|
>>> project_connexions = get_connected_ports(terminals_info)
|
|
4023
4025
|
|
|
@@ -4724,6 +4726,6 @@ class Edb(Database):
|
|
|
4724
4726
|
def get_variable_value(self, variable_name):
|
|
4725
4727
|
"""Added to get closer architecture as for grpc."""
|
|
4726
4728
|
if variable_name in self.variables:
|
|
4727
|
-
return self.variables[variable_name]
|
|
4729
|
+
return self.variables[variable_name]
|
|
4728
4730
|
else:
|
|
4729
4731
|
return False
|