pyedb 0.42.0__tar.gz → 0.43.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.42.0 → pyedb-0.43.0}/PKG-INFO +1 -1
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/__init__.py +1 -1
- pyedb-0.43.0/src/pyedb/configuration/cfg_boundaries.py +181 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/configuration/cfg_general.py +30 -14
- pyedb-0.43.0/src/pyedb/configuration/cfg_modeler.py +234 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/configuration/cfg_nets.py +33 -17
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/configuration/cfg_operations.py +63 -31
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/configuration/cfg_package_definition.py +72 -51
- pyedb-0.43.0/src/pyedb/configuration/cfg_pin_groups.py +145 -0
- pyedb-0.43.0/src/pyedb/configuration/cfg_s_parameter_models.py +141 -0
- pyedb-0.43.0/src/pyedb/configuration/cfg_setup.py +289 -0
- pyedb-0.43.0/src/pyedb/configuration/cfg_stackup.py +212 -0
- pyedb-0.43.0/src/pyedb/configuration/configuration.py +578 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/edb_data/padstacks_data.py +7 -2
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/sim_setup_data/data/sweep_data.py +63 -10
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/utilities/simulation_setup.py +7 -13
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/edb.py +75 -105
- pyedb-0.42.0/src/pyedb/configuration/cfg_boundaries.py +0 -104
- pyedb-0.42.0/src/pyedb/configuration/cfg_modeler.py +0 -140
- pyedb-0.42.0/src/pyedb/configuration/cfg_pin_groups.py +0 -103
- pyedb-0.42.0/src/pyedb/configuration/cfg_s_parameter_models.py +0 -116
- pyedb-0.42.0/src/pyedb/configuration/cfg_setup.py +0 -318
- pyedb-0.42.0/src/pyedb/configuration/cfg_stackup.py +0 -180
- pyedb-0.42.0/src/pyedb/configuration/configuration.py +0 -445
- {pyedb-0.42.0 → pyedb-0.43.0}/LICENSE +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/README.md +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/pyproject.toml +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/common/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/common/nets.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/component_libraries/ansys_components.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/configuration/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/configuration/cfg_common.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/configuration/cfg_components.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/configuration/cfg_data.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/configuration/cfg_padstacks.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/configuration/cfg_ports_sources.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/configuration/cfg_spice_models.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/clr_module.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/Variables.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/connectable.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/hierarchy/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/hierarchy/component.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/hierarchy/hierarchy_obj.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/hierarchy/model.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/hierarchy/netlist_model.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/hierarchy/pin_pair_model.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/hierarchy/s_parameter_model.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/hierarchy/spice_model.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/layout.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/layout_obj.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/primitive/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/primitive/bondwire.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/primitive/path.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/primitive/primitive.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/terminal/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/terminal/bundle_terminal.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/terminal/edge_terminal.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/terminal/padstack_instance_terminal.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/terminal/pingroup_terminal.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/terminal/point_terminal.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/terminal/terminal.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/cell/voltage_regulator.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/components.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/definition/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/definition/component_def.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/definition/component_model.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/definition/definition_obj.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/definition/definitions.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/definition/package_def.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/dotnet/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/dotnet/database.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/dotnet/primitive.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/edb_data/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/edb_data/control_file.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/edb_data/design_options.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/edb_data/edbvalue.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/edb_data/hfss_extent_info.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/edb_data/layer_data.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/edb_data/nets_data.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/edb_data/ports.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/edb_data/primitives_data.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/edb_data/raptor_x_simulation_setup_data.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/edb_data/simulation_configuration.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/edb_data/sources.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/edb_data/utilities.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/edb_data/variables.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/general.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/geometry/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/geometry/point_data.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/geometry/polygon_data.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/hfss.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/layout_obj_instance.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/layout_validation.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/materials.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/modeler.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/net_class.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/nets.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/padstack.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/sim_setup_data/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/sim_setup_data/data/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/sim_setup_data/data/adaptive_frequency_data.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/sim_setup_data/data/mesh_operation.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/sim_setup_data/data/settings.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/sim_setup_data/data/sim_setup_info.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/sim_setup_data/data/simulation_settings.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/sim_setup_data/data/siw_dc_ir_settings.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/sim_setup_data/io/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/sim_setup_data/io/siwave.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/siwave.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/stackup.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/utilities/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/utilities/heatsink.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/utilities/hfss_simulation_setup.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/utilities/obj_base.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/dotnet/database/utilities/siwave_simulation_setup.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/edb_logger.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/exceptions.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/extensions/pre_layout_design_toolkit/via_design.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/generic/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/generic/constants.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/generic/data_handlers.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/generic/design_types.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/generic/filesystem.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/generic/general_methods.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/generic/plot.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/generic/process.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/generic/settings.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/components.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/control_file.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/definition/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/definition/component_def.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/definition/component_model.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/definition/component_pin.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/definition/materials.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/definition/n_port_component_model.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/definition/package_def.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/definition/padstack_def.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/definitions.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/general.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/geometry/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/geometry/arc_data.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/geometry/point_3d_data.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/geometry/point_data.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/geometry/polygon_data.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/hfss.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/hierarchy/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/hierarchy/component.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/hierarchy/model.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/hierarchy/netlist_model.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/hierarchy/pin_pair_model.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/hierarchy/pingroup.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/hierarchy/s_parameter_model.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/hierarchy/spice_model.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/layers/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/layers/layer.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/layers/stackup_layer.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/layout/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/layout/cell.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/layout/layout.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/layout/voltage_regulator.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/layout_validation.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/modeler.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/net/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/net/differential_pair.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/net/extended_net.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/net/net.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/net/net_class.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/nets.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/padstacks.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/ports/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/ports/ports.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/primitive/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/primitive/bondwire.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/primitive/circle.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/primitive/padstack_instance.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/primitive/path.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/primitive/polygon.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/primitive/primitive.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/primitive/rectangle.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/simulation_setup/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/simulation_setup/adaptive_frequency.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_meshing_settings.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_settings.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/simulation_setup/hfss_dcr_settings.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/simulation_setup/hfss_general_settings.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/simulation_setup/hfss_settings_options.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_settings.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/simulation_setup/hfss_solver_settings.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/simulation_setup/mesh_operation.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_advanced_settings.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_general_settings.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_settings.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_setup.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/simulation_setup/siwave_dcir_simulation_setup.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/simulation_setup/sweep_data.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/siwave.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/source_excitations.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/stackup.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/terminal/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/terminal/bundle_terminal.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/terminal/edge_terminal.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/terminal/padstack_instance_terminal.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/terminal/pingroup_terminal.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/terminal/point_terminal.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/terminal/terminal.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/utility/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/utility/constants.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/utility/heat_sink.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/utility/hfss_extent_info.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/utility/layout_statistics.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/utility/rlc.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/utility/simulation_configuration.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/utility/sources.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/utility/sweep_data_distribution.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/database/utility/xml_control_file.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/edb.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/edb_init.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/grpc/rpc_session.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/bom/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/bom/bom.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/bom/bom_item.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/bom/characteristics.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/bom/refdes.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/content/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/content/color.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/content/content.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/content/dictionary_color.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/content/dictionary_fill.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/content/dictionary_line.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/content/entry_color.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/content/entry_line.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/content/fill.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/content/layer_ref.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/content/standard_geometries_dictionary.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/cad_data.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/component.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/drill.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/feature.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/layer.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/layer_feature.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/logical_net.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/outline.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/package.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_def.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_instance.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/path.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/phy_net.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/pin.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/polygon.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/profile.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/stackup.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_group.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_layer.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_data/step.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/cad_header.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/ecad.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ecad/spec.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/history_record.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/ipc2581.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/ipc2581/logistic_header.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/aedtlib_personalib_install.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/downloads.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/misc.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/pyedb.runtimeconfig.json +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/siw_feature_config/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/siw_feature_config/emc/__init__.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/siw_feature_config/emc/component_tags.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/siw_feature_config/emc/net_tags.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/siw_feature_config/emc/tag_library.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/siw_feature_config/emc/xml_generic.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/fd_xtalk_scan_config.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/impedance_scan_config.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/net.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/pins.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/misc/utilities.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/modeler/geometry_operators.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/siwave.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/siwave_core/icepak.py +0 -0
- {pyedb-0.42.0 → pyedb-0.43.0}/src/pyedb/workflow.py +0 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
23
|
+
from pyedb.configuration.cfg_common import CfgBase
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class CfgBoundaries(CfgBase):
|
|
27
|
+
class Grpc:
|
|
28
|
+
@property
|
|
29
|
+
def pyedb_obj(self):
|
|
30
|
+
return self.parent.pyedb_obj
|
|
31
|
+
|
|
32
|
+
def __init__(self, parent):
|
|
33
|
+
self.parent = parent
|
|
34
|
+
self._pedb = parent.pedb
|
|
35
|
+
self.open_region = self.parent.boundary_data.get("open_region", None)
|
|
36
|
+
self.open_region_type = self.parent.boundary_data.get("map_open_region_type", None)
|
|
37
|
+
self.pml_visible = self.parent.boundary_data.get("pml_visible", None)
|
|
38
|
+
self.pml_operation_frequency = self.parent.boundary_data.get("pml_operation_frequency", None)
|
|
39
|
+
self.pml_radiation_factor = self.parent.boundary_data.get("pml_radiation_factor", None)
|
|
40
|
+
self.dielectric_extent_type = self.parent.boundary_data.get("dielectric_extent_type", None)
|
|
41
|
+
self.horizontal_padding = self.parent.boundary_data.get("horizontal_padding", None)
|
|
42
|
+
self.honor_primitives_on_dielectric_layers = self.parent.boundary_data.get(
|
|
43
|
+
"honor_primitives_on_dielectric_layers", False
|
|
44
|
+
)
|
|
45
|
+
self.air_box_extent_type = self.parent.boundary_data.get("air_box_extent_type", None)
|
|
46
|
+
self.air_box_base_polygon = self.parent.boundary_data.get("air_box_base_polygon", None)
|
|
47
|
+
self.air_box_truncate_model_ground_layers = self.parent.boundary_data.get(
|
|
48
|
+
"air_box_truncate_model_ground_layers", None
|
|
49
|
+
)
|
|
50
|
+
self.air_box_horizontal_padding = self.parent.boundary_data.get("air_box_horizontal_padding", None)
|
|
51
|
+
self.air_box_positive_vertical_padding = self.parent.boundary_data.get(
|
|
52
|
+
"air_box_positive_vertical_padding", None
|
|
53
|
+
)
|
|
54
|
+
self.air_box_negative_vertical_padding = self.parent.boundary_data.get(
|
|
55
|
+
"air_box_negative_vertical_padding", None
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
def set_parameters_to_edb(self):
|
|
59
|
+
if self.open_region is not None:
|
|
60
|
+
self._pedb.hfss.hfss_extent_info.use_open_region = self.open_region
|
|
61
|
+
if self.open_region_type:
|
|
62
|
+
self._pedb.hfss.hfss_extent_info.open_region_type = self.open_region_type.lower()
|
|
63
|
+
if self.pml_visible is not None:
|
|
64
|
+
self._pedb.hfss.hfss_extent_info.is_pml_visible = self.pml_visible
|
|
65
|
+
if self.pml_operation_frequency:
|
|
66
|
+
self._pedb.hfss.hfss_extent_info.operating_freq = self.pml_operation_frequency
|
|
67
|
+
if self.pml_radiation_factor:
|
|
68
|
+
self._pedb.hfss.hfss_extent_info.pml_radiation_factor = self.pml_radiation_factor
|
|
69
|
+
if self.dielectric_extent_type:
|
|
70
|
+
self._pedb.hfss.hfss_extent_info.extent_type = self.dielectric_extent_type.lower()
|
|
71
|
+
if self.horizontal_padding:
|
|
72
|
+
self._pedb.hfss.hfss_extent_info.dielectric_extent_size = float(self.horizontal_padding)
|
|
73
|
+
if self.honor_primitives_on_dielectric_layers is not None:
|
|
74
|
+
self._pedb.hfss.hfss_extent_info.honor_user_dielectric = self.honor_primitives_on_dielectric_layers
|
|
75
|
+
if self.air_box_extent_type:
|
|
76
|
+
self._pedb.hfss.hfss_extent_info.extent_type = self.air_box_extent_type.lower()
|
|
77
|
+
if self.air_box_truncate_model_ground_layers is not None:
|
|
78
|
+
self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground = self.air_box_truncate_model_ground_layers
|
|
79
|
+
if self.air_box_horizontal_padding:
|
|
80
|
+
self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent = float(self.air_box_horizontal_padding)
|
|
81
|
+
if self.air_box_positive_vertical_padding:
|
|
82
|
+
self._pedb.hfss.hfss_extent_info.parentair_box_positive_vertical_extent = float(
|
|
83
|
+
self.air_box_positive_vertical_padding
|
|
84
|
+
)
|
|
85
|
+
if self.air_box_negative_vertical_padding:
|
|
86
|
+
self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent = float(
|
|
87
|
+
self.air_box_negative_vertical_padding
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
def get_parameters_from_edb(self):
|
|
91
|
+
self.open_region = self._pedb.hfss.hfss_extent_info.use_open_region
|
|
92
|
+
self.open_region_type = self._pedb.hfss.hfss_extent_info.open_region_type
|
|
93
|
+
self.pml_visible = self._pedb.hfss.hfss_extent_info.is_pml_visible
|
|
94
|
+
self.pml_operation_frequency = self._pedb.hfss.hfss_extent_info.operating_freq
|
|
95
|
+
self.pml_radiation_factor = self._pedb.hfss.hfss_extent_info.pml_radiation_factor
|
|
96
|
+
self.dielectric_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
|
|
97
|
+
self.horizontal_padding = self._pedb.hfss.hfss_extent_info.dielectric_extent_size
|
|
98
|
+
self.honor_primitives_on_dielectric_layers = self._pedb.hfss.hfss_extent_info.honor_user_dielectric
|
|
99
|
+
self.air_box_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
|
|
100
|
+
self.air_box_truncate_model_ground_layers = self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground
|
|
101
|
+
self.air_box_horizontal_padding = self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent
|
|
102
|
+
self.air_box_positive_vertical_padding = self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent
|
|
103
|
+
self.air_box_negative_vertical_padding = self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent
|
|
104
|
+
return self.parent.get_attributes()
|
|
105
|
+
|
|
106
|
+
class DotNet(Grpc):
|
|
107
|
+
def __init__(self, parent):
|
|
108
|
+
super().__init__(parent)
|
|
109
|
+
|
|
110
|
+
def get_parameters_from_edb(self):
|
|
111
|
+
self.parent.open_region = self._pedb.hfss.hfss_extent_info.use_open_region
|
|
112
|
+
self.parent.open_region_type = self._pedb.hfss.hfss_extent_info.open_region_type
|
|
113
|
+
self.parent.pml_visible = self._pedb.hfss.hfss_extent_info.is_pml_visible
|
|
114
|
+
self.parent.pml_operation_frequency = self._pedb.hfss.hfss_extent_info.operating_freq.tostring
|
|
115
|
+
self.parent.pml_radiation_factor = self._pedb.hfss.hfss_extent_info.radiation_level.tostring
|
|
116
|
+
self.parent.dielectric_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
|
|
117
|
+
self.parent.horizontal_padding = self._pedb.hfss.hfss_extent_info.dielectric_extent_size
|
|
118
|
+
self.parent.honor_primitives_on_dielectric_layers = self._pedb.hfss.hfss_extent_info.honor_user_dielectric
|
|
119
|
+
self.parent.air_box_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
|
|
120
|
+
self.parent.air_box_truncate_model_ground_layers = (
|
|
121
|
+
self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground
|
|
122
|
+
)
|
|
123
|
+
self.parent.air_box_horizontal_padding = self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent
|
|
124
|
+
self.parent.air_box_positive_vertical_padding = (
|
|
125
|
+
self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent
|
|
126
|
+
)
|
|
127
|
+
self.parent.air_box_negative_vertical_padding = (
|
|
128
|
+
self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent
|
|
129
|
+
)
|
|
130
|
+
return self.parent.get_attributes(exclude="boundary_data")
|
|
131
|
+
|
|
132
|
+
def set_parameters_to_edb(self):
|
|
133
|
+
"""Imports boundary information from JSON."""
|
|
134
|
+
if self.open_region is not None:
|
|
135
|
+
self._pedb.hfss.hfss_extent_info.use_open_region = self.open_region
|
|
136
|
+
if self.open_region_type:
|
|
137
|
+
self._pedb.hfss.hfss_extent_info.open_region_type = self.open_region_type.lower()
|
|
138
|
+
if self.pml_visible is not None:
|
|
139
|
+
self._pedb.hfss.hfss_extent_info.is_pml_visible = self.pml_visible
|
|
140
|
+
if self.pml_operation_frequency:
|
|
141
|
+
self._pedb.hfss.hfss_extent_info.operating_freq = self.pml_operation_frequency
|
|
142
|
+
if self.pml_radiation_factor:
|
|
143
|
+
if self._pedb.grpc:
|
|
144
|
+
self._pedb.hfss.hfss_extent_info.pml_radiation_factor = self.pml_radiation_factor
|
|
145
|
+
else:
|
|
146
|
+
self._pedb.hfss.hfss_extent_info.radiation_level = self.pml_radiation_factor
|
|
147
|
+
if self.dielectric_extent_type:
|
|
148
|
+
self._pedb.hfss.hfss_extent_info.extent_type = self.dielectric_extent_type.lower()
|
|
149
|
+
if self.horizontal_padding:
|
|
150
|
+
self._pedb.hfss.hfss_extent_info.dielectric_extent_size = float(self.horizontal_padding)
|
|
151
|
+
if self.honor_primitives_on_dielectric_layers is not None:
|
|
152
|
+
self._pedb.hfss.hfss_extent_info.honor_user_dielectric = self.honor_primitives_on_dielectric_layers
|
|
153
|
+
if self.air_box_extent_type:
|
|
154
|
+
self._pedb.hfss.hfss_extent_info.extent_type = self.air_box_extent_type.lower()
|
|
155
|
+
if self.air_box_truncate_model_ground_layers is not None:
|
|
156
|
+
self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground = self.air_box_truncate_model_ground_layers
|
|
157
|
+
if self.air_box_horizontal_padding:
|
|
158
|
+
self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent = float(self.air_box_horizontal_padding)
|
|
159
|
+
if self.air_box_positive_vertical_padding:
|
|
160
|
+
self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent = float(
|
|
161
|
+
self.air_box_positive_vertical_padding
|
|
162
|
+
)
|
|
163
|
+
if self.air_box_negative_vertical_padding:
|
|
164
|
+
self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent = float(
|
|
165
|
+
self.air_box_negative_vertical_padding
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
def __init__(self, pedb, boundary_data):
|
|
169
|
+
self.pedb = pedb
|
|
170
|
+
self.boundary_data = boundary_data
|
|
171
|
+
if self.pedb.grpc:
|
|
172
|
+
self.api = self.Grpc(self)
|
|
173
|
+
else:
|
|
174
|
+
self.api = self.DotNet(self)
|
|
175
|
+
|
|
176
|
+
def apply(self):
|
|
177
|
+
"""Imports boundary information from JSON."""
|
|
178
|
+
self.api.set_parameters_to_edb()
|
|
179
|
+
|
|
180
|
+
def get_data_from_db(self):
|
|
181
|
+
return self.api.get_parameters_from_edb()
|
|
@@ -24,26 +24,42 @@
|
|
|
24
24
|
class CfgGeneral:
|
|
25
25
|
"""Manage configuration general settings."""
|
|
26
26
|
|
|
27
|
+
class Grpc:
|
|
28
|
+
def __init__(self, parent):
|
|
29
|
+
self.parent = parent
|
|
30
|
+
self.pedb = parent.pedb
|
|
31
|
+
|
|
32
|
+
def set_parameters_to_edb(self):
|
|
33
|
+
self.pedb.active_cell.anti_pads_always_on = self.parent.anti_pads_always_on
|
|
34
|
+
self.pedb.active_cell.suppress_pads = self.parent.suppress_pads
|
|
35
|
+
|
|
36
|
+
def get_parameters_from_edb(self):
|
|
37
|
+
anti_pads_always_on = self.pedb.design_options.antipads_always_on
|
|
38
|
+
suppress_pads = self.pedb.design_options.suppress_pads
|
|
39
|
+
data = {"anti_pads_always_on": anti_pads_always_on, "suppress_pads": suppress_pads}
|
|
40
|
+
return data
|
|
41
|
+
|
|
42
|
+
class DotNet(Grpc):
|
|
43
|
+
def __init__(self, parent):
|
|
44
|
+
super().__init__(parent)
|
|
45
|
+
|
|
46
|
+
def set_parameters_to_edb(self):
|
|
47
|
+
self.pedb.design_options.antipads_always_on = self.parent.anti_pads_always_on
|
|
48
|
+
self.pedb.design_options.suppress_pads = self.parent.suppress_pads
|
|
49
|
+
|
|
27
50
|
def __init__(self, pedb, data):
|
|
28
|
-
self.
|
|
51
|
+
self.pedb = pedb
|
|
52
|
+
if self.pedb.grpc:
|
|
53
|
+
self.api = self.Grpc(self)
|
|
54
|
+
else:
|
|
55
|
+
self.api = self.DotNet(self)
|
|
29
56
|
self.spice_model_library = data.get("spice_model_library", "")
|
|
30
57
|
self.s_parameter_library = data.get("s_parameter_library", "")
|
|
31
58
|
self.anti_pads_always_on = data.get("anti_pads_always_on", False)
|
|
32
59
|
self.suppress_pads = data.get("suppress_pads", True)
|
|
33
60
|
|
|
34
61
|
def apply(self):
|
|
35
|
-
|
|
36
|
-
self._pedb.active_cell.anti_pads_always_on = self.anti_pads_always_on
|
|
37
|
-
self._pedb.active_cell.suppress_pads = self.suppress_pads
|
|
38
|
-
else:
|
|
39
|
-
self._pedb.design_options.antipads_always_on = self.anti_pads_always_on
|
|
40
|
-
self._pedb.design_options.suppress_pads = self.suppress_pads
|
|
62
|
+
self.api.set_parameters_to_edb()
|
|
41
63
|
|
|
42
64
|
def get_data_from_db(self):
|
|
43
|
-
|
|
44
|
-
self.suppress_pads = self._pedb.design_options.suppress_pads
|
|
45
|
-
|
|
46
|
-
data = {}
|
|
47
|
-
data["anti_pads_always_on"] = self.anti_pads_always_on
|
|
48
|
-
data["suppress_pads"] = self.suppress_pads
|
|
49
|
-
return data
|
|
65
|
+
return self.api.get_parameters_from_edb()
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
23
|
+
from pyedb.configuration.cfg_components import CfgComponent
|
|
24
|
+
from pyedb.configuration.cfg_padstacks import CfgPadstackDefinition, CfgPadstackInstance
|
|
25
|
+
from pyedb.dotnet.database.edb_data.padstacks_data import EDBPadstack
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class CfgTrace:
|
|
29
|
+
def __init__(self, **kwargs):
|
|
30
|
+
self.name = kwargs.get("name", "")
|
|
31
|
+
self.layer = kwargs["layer"]
|
|
32
|
+
self.path = kwargs["path"]
|
|
33
|
+
self.width = kwargs["width"]
|
|
34
|
+
self.net_name = kwargs.get("net_name", "")
|
|
35
|
+
self.start_cap_style = kwargs.get("start_cap_style", "round")
|
|
36
|
+
self.end_cap_style = kwargs.get("end_cap_style", "round")
|
|
37
|
+
self.corner_style = kwargs.get("corner_style", "sharp")
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class CfgPlane:
|
|
41
|
+
def __init__(self, **kwargs):
|
|
42
|
+
self.name = kwargs.get("name", "")
|
|
43
|
+
self.layer = kwargs["layer"]
|
|
44
|
+
self.net_name = kwargs.get("net_name", "")
|
|
45
|
+
self.type = kwargs.get("type", "rectangle")
|
|
46
|
+
|
|
47
|
+
# rectangle
|
|
48
|
+
self.lower_left_point = kwargs.get("lower_left_point", [])
|
|
49
|
+
self.upper_right_point = kwargs.get("upper_right_point", [])
|
|
50
|
+
self.corner_radius = kwargs.get("corner_radius", 0)
|
|
51
|
+
self.rotation = kwargs.get("rotation", 0)
|
|
52
|
+
self.voids = kwargs.get("voids", [])
|
|
53
|
+
|
|
54
|
+
# polygon
|
|
55
|
+
self.points = kwargs.get("points", [])
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class CfgModeler:
|
|
59
|
+
"""Manage configuration general settings."""
|
|
60
|
+
|
|
61
|
+
class Grpc:
|
|
62
|
+
def __init__(self, parent):
|
|
63
|
+
self.parent = parent
|
|
64
|
+
self._pedb = parent._pedb
|
|
65
|
+
|
|
66
|
+
def set_parameter_to_edb(self):
|
|
67
|
+
from ansys.edb.core.definition.padstack_def import (
|
|
68
|
+
PadstackDef as GrpcPadstackDef,
|
|
69
|
+
)
|
|
70
|
+
from ansys.edb.core.definition.padstack_def_data import (
|
|
71
|
+
PadstackDefData as GrpcPadstackDefData,
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
from pyedb.grpc.database.definition.padstack_def import PadstackDef
|
|
75
|
+
|
|
76
|
+
if self.parent.traces:
|
|
77
|
+
for t in self.parent.traces:
|
|
78
|
+
obj = self._pedb.modeler.create_trace(
|
|
79
|
+
path_list=t.path,
|
|
80
|
+
layer_name=t.layer,
|
|
81
|
+
net_name=t.net_name,
|
|
82
|
+
width=t.width,
|
|
83
|
+
start_cap_style=t.start_cap_style,
|
|
84
|
+
end_cap_style=t.end_cap_style,
|
|
85
|
+
corner_style=t.corner_style,
|
|
86
|
+
)
|
|
87
|
+
obj.aedt_name = t.name
|
|
88
|
+
|
|
89
|
+
if self.parent.padstack_defs:
|
|
90
|
+
for p in self.parent.padstack_defs:
|
|
91
|
+
pdata = GrpcPadstackDefData.create()
|
|
92
|
+
pdef = GrpcPadstackDef.create(self._pedb.active_db, p.name)
|
|
93
|
+
pdef.data = pdata
|
|
94
|
+
pdef = PadstackDef(self._pedb, pdef)
|
|
95
|
+
p.pyedb_obj = pdef
|
|
96
|
+
p.api.set_parameters_to_edb()
|
|
97
|
+
|
|
98
|
+
if self.parent.padstack_instances:
|
|
99
|
+
for p in self.parent.padstack_instances:
|
|
100
|
+
p_inst = self._pedb.padstacks.place(
|
|
101
|
+
via_name=p.name,
|
|
102
|
+
net_name=p.net_name,
|
|
103
|
+
position=p.position,
|
|
104
|
+
definition_name=p.definition,
|
|
105
|
+
)
|
|
106
|
+
p.pyedb_obj = p_inst
|
|
107
|
+
p.api.set_parameters_to_edb()
|
|
108
|
+
|
|
109
|
+
if self.parent.planes:
|
|
110
|
+
for p in self.parent.planes:
|
|
111
|
+
if p.type == "rectangle":
|
|
112
|
+
obj = self._pedb.modeler.create_rectangle(
|
|
113
|
+
layer_name=p.layer,
|
|
114
|
+
net_name=p.net_name,
|
|
115
|
+
lower_left_point=p.lower_left_point,
|
|
116
|
+
upper_right_point=p.upper_right_point,
|
|
117
|
+
corner_radius=p.corner_radius,
|
|
118
|
+
rotation=p.rotation,
|
|
119
|
+
)
|
|
120
|
+
obj.aedt_name = p.name
|
|
121
|
+
elif p.type == "polygon":
|
|
122
|
+
obj = self._pedb.modeler.create_polygon(
|
|
123
|
+
points=p.points, layer_name=p.layer, net_name=p.net_name
|
|
124
|
+
)
|
|
125
|
+
obj.aedt_name = p.name
|
|
126
|
+
|
|
127
|
+
for v in p.voids:
|
|
128
|
+
for i in self._pedb.layout.primitives:
|
|
129
|
+
if i.aedt_name == v:
|
|
130
|
+
self._pedb.modeler.add_void(obj, i)
|
|
131
|
+
|
|
132
|
+
if self.parent.components:
|
|
133
|
+
pedb_p_inst = self._pedb.padstacks.instances_by_name
|
|
134
|
+
for c in self.parent.components:
|
|
135
|
+
obj = self._pedb.components.create(
|
|
136
|
+
[pedb_p_inst[i] for i in c.pins],
|
|
137
|
+
component_name=c.reference_designator,
|
|
138
|
+
placement_layer=c.placement_layer,
|
|
139
|
+
component_part_name=c.definition,
|
|
140
|
+
)
|
|
141
|
+
c.pyedb_obj = obj
|
|
142
|
+
c.api.set_parameters_to_edb()
|
|
143
|
+
|
|
144
|
+
class DotNet(Grpc):
|
|
145
|
+
def __init__(self, parent):
|
|
146
|
+
super().__init__(parent)
|
|
147
|
+
|
|
148
|
+
def set_parameter_to_edb(self):
|
|
149
|
+
if self.parent.traces:
|
|
150
|
+
for t in self.parent.traces:
|
|
151
|
+
obj = self._pedb.modeler.create_trace(
|
|
152
|
+
path_list=t.path,
|
|
153
|
+
layer_name=t.layer,
|
|
154
|
+
net_name=t.net_name,
|
|
155
|
+
width=t.width,
|
|
156
|
+
start_cap_style=t.start_cap_style,
|
|
157
|
+
end_cap_style=t.end_cap_style,
|
|
158
|
+
corner_style=t.corner_style,
|
|
159
|
+
)
|
|
160
|
+
obj.aedt_name = t.name
|
|
161
|
+
|
|
162
|
+
if self.parent.padstack_defs:
|
|
163
|
+
for p in self.parent.padstack_defs:
|
|
164
|
+
pdata = self._pedb._edb.Definition.PadstackDefData.Create()
|
|
165
|
+
pdef = self._pedb._edb.Definition.PadstackDef.Create(self._pedb.active_db, p.name)
|
|
166
|
+
pdef.SetData(pdata)
|
|
167
|
+
pdef = EDBPadstack(pdef, self._pedb.padstacks)
|
|
168
|
+
p.pyedb_obj = pdef
|
|
169
|
+
p.api.set_parameters_to_edb()
|
|
170
|
+
|
|
171
|
+
if self.parent.padstack_instances:
|
|
172
|
+
for p in self.parent.padstack_instances:
|
|
173
|
+
p_inst = self._pedb.padstacks.place(
|
|
174
|
+
via_name=p.name,
|
|
175
|
+
net_name=p.net_name,
|
|
176
|
+
position=p.position,
|
|
177
|
+
definition_name=p.definition,
|
|
178
|
+
)
|
|
179
|
+
p.pyedb_obj = p_inst
|
|
180
|
+
p.api.set_parameters_to_edb()
|
|
181
|
+
|
|
182
|
+
if self.parent.planes:
|
|
183
|
+
for p in self.parent.planes:
|
|
184
|
+
if p.type == "rectangle":
|
|
185
|
+
obj = self._pedb.modeler.create_rectangle(
|
|
186
|
+
layer_name=p.layer,
|
|
187
|
+
net_name=p.net_name,
|
|
188
|
+
lower_left_point=p.lower_left_point,
|
|
189
|
+
upper_right_point=p.upper_right_point,
|
|
190
|
+
corner_radius=p.corner_radius,
|
|
191
|
+
rotation=p.rotation,
|
|
192
|
+
)
|
|
193
|
+
obj.aedt_name = p.name
|
|
194
|
+
elif p.type == "polygon":
|
|
195
|
+
obj = self._pedb.modeler.create_polygon(
|
|
196
|
+
main_shape=p.points, layer_name=p.layer, net_name=p.net_name
|
|
197
|
+
)
|
|
198
|
+
obj.aedt_name = p.name
|
|
199
|
+
|
|
200
|
+
for v in p.voids:
|
|
201
|
+
for i in self._pedb.layout.primitives:
|
|
202
|
+
if i.aedt_name == v:
|
|
203
|
+
self._pedb.modeler.add_void(obj, i)
|
|
204
|
+
|
|
205
|
+
if self.parent.components:
|
|
206
|
+
pedb_p_inst = self._pedb.padstacks.instances_by_name
|
|
207
|
+
for c in self.parent.components:
|
|
208
|
+
obj = self._pedb.components.create(
|
|
209
|
+
[pedb_p_inst[i] for i in c.pins],
|
|
210
|
+
component_name=c.reference_designator,
|
|
211
|
+
placement_layer=c.placement_layer,
|
|
212
|
+
component_part_name=c.definition,
|
|
213
|
+
)
|
|
214
|
+
c.pyedb_obj = obj
|
|
215
|
+
c.api.set_parameters_to_edb()
|
|
216
|
+
|
|
217
|
+
def __init__(self, pedb, data):
|
|
218
|
+
self._pedb = pedb
|
|
219
|
+
if self._pedb.grpc:
|
|
220
|
+
self.api = self.Grpc(self)
|
|
221
|
+
else:
|
|
222
|
+
self.api = self.DotNet(self)
|
|
223
|
+
self.traces = [CfgTrace(**i) for i in data.get("traces", [])]
|
|
224
|
+
self.padstack_defs = [
|
|
225
|
+
CfgPadstackDefinition(self._pedb, None, **i) for i in data.get("padstack_definitions", [])
|
|
226
|
+
]
|
|
227
|
+
self.padstack_instances = [
|
|
228
|
+
CfgPadstackInstance(self._pedb, None, **i) for i in data.get("padstack_instances", [])
|
|
229
|
+
]
|
|
230
|
+
self.planes = [CfgPlane(**i) for i in data.get("planes", [])]
|
|
231
|
+
self.components = [CfgComponent(self._pedb, None, **i) for i in data.get("components", [])]
|
|
232
|
+
|
|
233
|
+
def apply(self):
|
|
234
|
+
self.api.set_parameter_to_edb()
|
|
@@ -24,8 +24,39 @@
|
|
|
24
24
|
class CfgNets:
|
|
25
25
|
"""Manage configuration net class."""
|
|
26
26
|
|
|
27
|
+
class Grpc:
|
|
28
|
+
def __init__(self, parent):
|
|
29
|
+
self.parent = parent
|
|
30
|
+
self._pedb = parent._pedb
|
|
31
|
+
|
|
32
|
+
def set_parameter_to_edb(self):
|
|
33
|
+
for signal_net in self.parent.signal_nets:
|
|
34
|
+
if signal_net in self._pedb.nets:
|
|
35
|
+
self._pedb.nets.nets[signal_net].is_power_ground = False
|
|
36
|
+
for power_net in self.parent.power_nets:
|
|
37
|
+
if power_net in self._pedb.nets:
|
|
38
|
+
self._pedb.nets.nets[power_net].is_power_ground = True
|
|
39
|
+
|
|
40
|
+
def get_parameter_from_edb(self):
|
|
41
|
+
"""Get net information."""
|
|
42
|
+
for net in self._pedb.nets.signal:
|
|
43
|
+
self.parent.signal_nets.append(net)
|
|
44
|
+
for net in self._pedb.nets.power:
|
|
45
|
+
self.parent.power_nets.append(net)
|
|
46
|
+
data = {"signal_nets": self.parent.signal_nets, "power_ground_nets": self.parent.power_nets}
|
|
47
|
+
return data
|
|
48
|
+
|
|
49
|
+
class DotNet(Grpc):
|
|
50
|
+
def __init__(self, parent):
|
|
51
|
+
self.parent = parent
|
|
52
|
+
super().__init__(parent)
|
|
53
|
+
|
|
27
54
|
def __init__(self, pdata, signal_nets=None, power_nets=None):
|
|
28
55
|
self._pedb = pdata._pedb
|
|
56
|
+
if self._pedb.grpc:
|
|
57
|
+
self.api = self.Grpc(self)
|
|
58
|
+
else:
|
|
59
|
+
self.api = self.DotNet(self)
|
|
29
60
|
self.signal_nets = []
|
|
30
61
|
self.power_nets = []
|
|
31
62
|
if signal_nets:
|
|
@@ -35,23 +66,8 @@ class CfgNets:
|
|
|
35
66
|
|
|
36
67
|
def apply(self):
|
|
37
68
|
"""Apply net on layout."""
|
|
38
|
-
|
|
39
|
-
if signal_net in self._pedb.nets:
|
|
40
|
-
self._pedb.nets.nets[signal_net].is_power_ground = False
|
|
41
|
-
for power_net in self.power_nets:
|
|
42
|
-
if power_net in self._pedb.nets:
|
|
43
|
-
self._pedb.nets.nets[power_net].is_power_ground = True
|
|
44
|
-
|
|
45
|
-
def _load_data_from_db(self):
|
|
46
|
-
self.signal_nets = []
|
|
47
|
-
self.power_nets = []
|
|
48
|
-
for net in self._pedb.nets.signal:
|
|
49
|
-
self.signal_nets.append(net)
|
|
50
|
-
for net in self._pedb.nets.power:
|
|
51
|
-
self.power_nets.append(net)
|
|
69
|
+
self.api.set_parameter_to_edb()
|
|
52
70
|
|
|
53
71
|
def get_data_from_db(self):
|
|
54
72
|
"""Get net information."""
|
|
55
|
-
self.
|
|
56
|
-
data = {"signal_nets": self.signal_nets, "power_ground_nets": self.power_nets}
|
|
57
|
-
return data
|
|
73
|
+
return self.api.get_parameter_from_edb()
|
|
@@ -24,9 +24,38 @@ from pyedb.configuration.cfg_common import CfgBase
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
class CfgCutout(CfgBase):
|
|
27
|
+
class Grpc:
|
|
28
|
+
def __init__(self, parent):
|
|
29
|
+
self.parent = parent
|
|
30
|
+
self._pedb = parent._pedb
|
|
31
|
+
|
|
32
|
+
def get_parameters_from_edb(self):
|
|
33
|
+
if "pyedb_cutout" in self._pedb.stackup.all_layers:
|
|
34
|
+
polygons = self._pedb.layout.find_primitive(layer_name="pyedb_cutout")
|
|
35
|
+
if polygons:
|
|
36
|
+
poly = polygons[0]
|
|
37
|
+
self.parent.custom_extent = poly.polygon_data.points
|
|
38
|
+
net_names = []
|
|
39
|
+
for name, obj in self._pedb.nets.nets.items():
|
|
40
|
+
if obj.primitives:
|
|
41
|
+
if obj.primitives[0].layer.name == "pyedb_cutout":
|
|
42
|
+
continue
|
|
43
|
+
else:
|
|
44
|
+
net_names.append(name)
|
|
45
|
+
self.parent.reference_list = []
|
|
46
|
+
self.parent.signal_list = net_names
|
|
47
|
+
return self.parent.export_properties()
|
|
48
|
+
|
|
49
|
+
class DotNet(Grpc):
|
|
50
|
+
def __init__(self, parent):
|
|
51
|
+
super().__init__(parent)
|
|
52
|
+
|
|
27
53
|
def __init__(self, pedb, **kwargs):
|
|
28
54
|
self._pedb = pedb
|
|
29
|
-
|
|
55
|
+
if self._pedb.grpc:
|
|
56
|
+
self.api = self.Grpc(self)
|
|
57
|
+
else:
|
|
58
|
+
self.api = self.DotNet(self)
|
|
30
59
|
self.signal_list = kwargs.get("signal_list")
|
|
31
60
|
self.reference_list = kwargs.get("reference_list")
|
|
32
61
|
self.extent_type = kwargs.get("extent_type")
|
|
@@ -52,23 +81,7 @@ class CfgCutout(CfgBase):
|
|
|
52
81
|
self.keep_lines_as_path = kwargs.get("keep_lines_as_path")
|
|
53
82
|
|
|
54
83
|
def get_data_from_db(self):
|
|
55
|
-
|
|
56
|
-
polygons = self._pedb.layout.find_primitive(layer_name="pyedb_cutout")
|
|
57
|
-
if polygons:
|
|
58
|
-
poly = polygons[0]
|
|
59
|
-
self.custom_extent = poly.polygon_data.points
|
|
60
|
-
|
|
61
|
-
net_names = []
|
|
62
|
-
for name, obj in self._pedb.nets.nets.items():
|
|
63
|
-
if obj.primitives:
|
|
64
|
-
if obj.primitives[0].layer.name == "pyedb_cutout":
|
|
65
|
-
continue
|
|
66
|
-
else:
|
|
67
|
-
net_names.append(name)
|
|
68
|
-
|
|
69
|
-
self.reference_list = []
|
|
70
|
-
self.signal_list = net_names
|
|
71
|
-
return self.export_properties()
|
|
84
|
+
return self.api.get_parameters_from_edb()
|
|
72
85
|
|
|
73
86
|
def export_properties(self):
|
|
74
87
|
return {
|
|
@@ -79,24 +92,43 @@ class CfgCutout(CfgBase):
|
|
|
79
92
|
|
|
80
93
|
|
|
81
94
|
class CfgOperations(CfgBase):
|
|
95
|
+
class Grpc:
|
|
96
|
+
def __init__(self, parent):
|
|
97
|
+
self.parent = parent
|
|
98
|
+
self._pedb = parent._pedb
|
|
99
|
+
|
|
100
|
+
def apply_on_edb(self):
|
|
101
|
+
if self.parent.op_cutout:
|
|
102
|
+
polygon_points = self._pedb.cutout(**self.parent.op_cutout.get_attributes())
|
|
103
|
+
if "pyedb_cutout" not in self._pedb.stackup.all_layers:
|
|
104
|
+
self._pedb.stackup.add_document_layer(name="pyedb_cutout")
|
|
105
|
+
self._pedb.modeler.create_polygon(
|
|
106
|
+
polygon_points, layer_name="pyedb_cutout", net_name="pyedb_cutout"
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
def get_parameter_from_edb(self):
|
|
110
|
+
self.parent.op_cutout = CfgCutout(self._pedb)
|
|
111
|
+
data_from_db = self.parent.op_cutout.get_data_from_db()
|
|
112
|
+
if data_from_db:
|
|
113
|
+
return {"cutout": data_from_db}
|
|
114
|
+
else:
|
|
115
|
+
return {}
|
|
116
|
+
|
|
117
|
+
class DotNet(Grpc):
|
|
118
|
+
def __init__(self, parent):
|
|
119
|
+
super().__init__(parent)
|
|
120
|
+
|
|
82
121
|
def __init__(self, pedb, data):
|
|
83
122
|
self._pedb = pedb
|
|
123
|
+
if self._pedb.grpc:
|
|
124
|
+
self.api = self.Grpc(self)
|
|
125
|
+
else:
|
|
126
|
+
self.api = self.DotNet(self)
|
|
84
127
|
self.op_cutout = CfgCutout(pedb, **data["cutout"]) if "cutout" in data else None
|
|
85
128
|
|
|
86
129
|
def apply(self):
|
|
87
130
|
"""Imports operation information from JSON."""
|
|
88
|
-
|
|
89
|
-
polygon_points = self._pedb.cutout(**self.op_cutout.get_attributes())
|
|
90
|
-
if "pyedb_cutout" not in self._pedb.stackup.all_layers:
|
|
91
|
-
self._pedb.stackup.add_document_layer(name="pyedb_cutout")
|
|
92
|
-
self._pedb.modeler.create_polygon(polygon_points, layer_name="pyedb_cutout", net_name="pyedb_cutout")
|
|
93
|
-
|
|
94
|
-
# create a polygon on pyedb layer
|
|
131
|
+
self.api.apply_on_edb()
|
|
95
132
|
|
|
96
133
|
def get_data_from_db(self):
|
|
97
|
-
self.
|
|
98
|
-
data_from_db = self.op_cutout.get_data_from_db()
|
|
99
|
-
if data_from_db:
|
|
100
|
-
return {"cutout": data_from_db}
|
|
101
|
-
else:
|
|
102
|
-
return {}
|
|
134
|
+
return self.api.get_parameter_from_edb()
|