pyedb 0.26.0__tar.gz → 0.26.2__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.26.0 → pyedb-0.26.2}/PKG-INFO +3 -3
- {pyedb-0.26.0 → pyedb-0.26.2}/pyproject.toml +2 -2
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/__init__.py +1 -1
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb.py +26 -13
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/primitive/primitive.py +2 -76
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/dotnet/primitive.py +4 -5
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/edb_data/primitives_data.py +1 -1
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/nets.py +2 -76
- pyedb-0.26.2/src/pyedb/misc/utilities.py +100 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/siwave.py +11 -3
- pyedb-0.26.0/src/pyedb/misc/utilities.py +0 -27
- {pyedb-0.26.0 → pyedb-0.26.2}/LICENSE +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/README.md +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/component_libraries/ansys_components.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/configuration/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/configuration/cfg_boundaries.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/configuration/cfg_common.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/configuration/cfg_components.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/configuration/cfg_data.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/configuration/cfg_general.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/configuration/cfg_nets.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/configuration/cfg_operations.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/configuration/cfg_package_definition.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/configuration/cfg_padstacks.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/configuration/cfg_pin_groups.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/configuration/cfg_ports_sources.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/configuration/cfg_s_parameter_models.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/configuration/cfg_setup.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/configuration/cfg_spice_models.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/configuration/cfg_stackup.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/configuration/configuration.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/application/Variables.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/application/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/clr_module.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/connectable.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/hierarchy/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/hierarchy/component.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/hierarchy/hierarchy_obj.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/hierarchy/model.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/hierarchy/netlist_model.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/hierarchy/pin_pair_model.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/hierarchy/s_parameter_model.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/hierarchy/spice_model.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/layout.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/layout_obj.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/primitive/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/primitive/bondwire.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/primitive/path.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/terminal/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/terminal/bundle_terminal.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/terminal/edge_terminal.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/terminal/padstack_instance_terminal.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/terminal/pingroup_terminal.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/terminal/point_terminal.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/terminal/terminal.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/cell/voltage_regulator.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/components.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/definition/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/definition/component_def.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/definition/component_model.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/definition/definition_obj.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/definition/definitions.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/definition/package_def.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/dotnet/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/dotnet/database.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/edb_data/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/edb_data/control_file.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/edb_data/design_options.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/edb_data/edbvalue.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/edb_data/layer_data.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/edb_data/nets_data.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/edb_data/padstacks_data.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/edb_data/ports.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/edb_data/simulation_configuration.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/edb_data/sources.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/edb_data/utilities.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/edb_data/variables.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/general.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/geometry/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/geometry/point_data.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/geometry/polygon_data.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/hfss.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/layout_obj_instance.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/layout_validation.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/materials.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/modeler.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/net_class.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/padstack.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/sim_setup_data/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/sim_setup_data/data/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/sim_setup_data/data/adaptive_frequency_data.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/sim_setup_data/data/mesh_operation.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/sim_setup_data/data/settings.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/sim_setup_data/data/sim_setup_info.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/sim_setup_data/data/simulation_settings.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/sim_setup_data/data/siw_dc_ir_settings.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/sim_setup_data/data/sweep_data.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/sim_setup_data/io/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/sim_setup_data/io/siwave.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/siwave.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/stackup.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/utilities/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/utilities/heatsink.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/utilities/hfss_simulation_setup.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/utilities/obj_base.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/utilities/simulation_setup.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/dotnet/edb_core/utilities/siwave_simulation_setup.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/edb_logger.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/exceptions.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/generic/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/generic/constants.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/generic/data_handlers.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/generic/design_types.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/generic/filesystem.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/generic/general_methods.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/generic/plot.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/generic/process.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/generic/settings.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/bom/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/bom/bom.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/bom/bom_item.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/bom/characteristics.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/bom/refdes.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/content/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/content/color.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/content/content.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/content/dictionary_color.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/content/dictionary_fill.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/content/dictionary_line.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/content/entry_color.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/content/entry_line.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/content/fill.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/content/layer_ref.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/content/standard_geometries_dictionary.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/cad_data.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/component.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/drill.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/feature.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/layer.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/layer_feature.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/logical_net.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/outline.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/package.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/padstack_def.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/padstack_instance.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/path.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/phy_net.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/pin.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/polygon.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/profile.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/stackup.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/stackup_group.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/stackup_layer.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_data/step.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/cad_header.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/ecad.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ecad/spec.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/history_record.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/ipc2581.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/ipc2581/logistic_header.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/misc/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/misc/aedtlib_personalib_install.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/misc/downloads.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/misc/misc.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/misc/pyedb.runtimeconfig.json +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/misc/siw_feature_config/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/misc/siw_feature_config/emc/__init__.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/misc/siw_feature_config/emc/component_tags.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/misc/siw_feature_config/emc/net_tags.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/misc/siw_feature_config/emc/tag_library.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/misc/siw_feature_config/emc/xml_generic.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/misc/siw_feature_config/xtalk_scan/fd_xtalk_scan_config.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/misc/siw_feature_config/xtalk_scan/impedance_scan_config.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/misc/siw_feature_config/xtalk_scan/net.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/misc/siw_feature_config/xtalk_scan/pins.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/modeler/geometry_operators.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/siwave_core/icepak.py +0 -0
- {pyedb-0.26.0 → pyedb-0.26.2}/src/pyedb/workflow.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pyedb
|
|
3
|
-
Version: 0.26.
|
|
3
|
+
Version: 0.26.2
|
|
4
4
|
Summary: Higher-Level Pythonic Ansys Electronics Data Base
|
|
5
5
|
Author-email: "ANSYS, Inc." <pyansys.core@ansys.com>
|
|
6
6
|
Maintainer-email: PyEDB developers <simon.vandenbrouck@ansys.com>
|
|
@@ -19,7 +19,7 @@ Requires-Dist: cffi>=1.16.0,<1.18; platform_system=='Linux'
|
|
|
19
19
|
Requires-Dist: pywin32 >= 303;platform_system=='Windows'
|
|
20
20
|
Requires-Dist: ansys-pythonnet >= 3.1.0rc3
|
|
21
21
|
Requires-Dist: dotnetcore2 ==3.1.23;platform_system=='Linux'
|
|
22
|
-
Requires-Dist: numpy>=1.20.0,<2
|
|
22
|
+
Requires-Dist: numpy>=1.20.0,<2.2
|
|
23
23
|
Requires-Dist: pandas>=1.1.0,<2.3
|
|
24
24
|
Requires-Dist: pydantic>=2.6.4,<2.9
|
|
25
25
|
Requires-Dist: Rtree >= 1.2.0
|
|
@@ -27,7 +27,7 @@ Requires-Dist: toml == 0.10.2
|
|
|
27
27
|
Requires-Dist: scikit-rf
|
|
28
28
|
Requires-Dist: ansys-sphinx-theme>=0.10.0,<1.1 ; extra == "doc"
|
|
29
29
|
Requires-Dist: imageio>=2.30.0,<2.36 ; extra == "doc"
|
|
30
|
-
Requires-Dist: ipython>=8.13.0,<8.
|
|
30
|
+
Requires-Dist: ipython>=8.13.0,<8.28 ; extra == "doc"
|
|
31
31
|
Requires-Dist: jupyterlab>=4.0.0,<4.3 ; extra == "doc"
|
|
32
32
|
Requires-Dist: jupytext>=1.16.0,<1.17 ; extra == "doc"
|
|
33
33
|
Requires-Dist: matplotlib>=3.5.0,<3.10 ; extra == "doc"
|
|
@@ -29,7 +29,7 @@ dependencies = [
|
|
|
29
29
|
"pywin32 >= 303;platform_system=='Windows'",
|
|
30
30
|
"ansys-pythonnet >= 3.1.0rc3",
|
|
31
31
|
"dotnetcore2 ==3.1.23;platform_system=='Linux'",
|
|
32
|
-
"numpy>=1.20.0,<2",
|
|
32
|
+
"numpy>=1.20.0,<2.2",
|
|
33
33
|
"pandas>=1.1.0,<2.3",
|
|
34
34
|
"pydantic>=2.6.4,<2.9",
|
|
35
35
|
"Rtree >= 1.2.0",
|
|
@@ -49,7 +49,7 @@ tests = [
|
|
|
49
49
|
doc = [
|
|
50
50
|
"ansys-sphinx-theme>=0.10.0,<1.1",
|
|
51
51
|
"imageio>=2.30.0,<2.36",
|
|
52
|
-
"ipython>=8.13.0,<8.
|
|
52
|
+
"ipython>=8.13.0,<8.28",
|
|
53
53
|
"jupyterlab>=4.0.0,<4.3",
|
|
54
54
|
"jupytext>=1.16.0,<1.17",
|
|
55
55
|
"matplotlib>=3.5.0,<3.10",
|
|
@@ -4411,12 +4411,19 @@ class Edb(Database):
|
|
|
4411
4411
|
if not temp_directory:
|
|
4412
4412
|
self.logger.error("Temp directory must be provided when creating model foe arbitrary wave port")
|
|
4413
4413
|
return False
|
|
4414
|
+
if mounting_side not in ["top", "bottom"]:
|
|
4415
|
+
self.logger.error(
|
|
4416
|
+
"Mounting side must be provided and only `top` or `bottom` are supported. Setting to "
|
|
4417
|
+
"`top` will take the top layer from the current design as reference. Setting to `bottom` "
|
|
4418
|
+
"will take the bottom one."
|
|
4419
|
+
)
|
|
4414
4420
|
if not output_edb:
|
|
4415
4421
|
output_edb = os.path.join(temp_directory, "waveport_model.aedb")
|
|
4416
4422
|
if os.path.isdir(temp_directory):
|
|
4417
4423
|
shutil.rmtree(temp_directory)
|
|
4424
|
+
os.mkdir(temp_directory)
|
|
4418
4425
|
reference_layer = list(self.stackup.signal_layers.keys())[0]
|
|
4419
|
-
if mounting_side.lower == "bottom":
|
|
4426
|
+
if mounting_side.lower() == "bottom":
|
|
4420
4427
|
reference_layer = list(self.stackup.signal_layers.keys())[-1]
|
|
4421
4428
|
if not signal_nets:
|
|
4422
4429
|
signal_nets = list(self.nets.signal.keys())
|
|
@@ -4462,25 +4469,31 @@ class Edb(Database):
|
|
|
4462
4469
|
)
|
|
4463
4470
|
return False
|
|
4464
4471
|
cloned_edb = Edb(edbpath=output_edb, edbversion=self.edbversion)
|
|
4465
|
-
|
|
4472
|
+
|
|
4466
4473
|
cloned_edb.stackup.add_layer(
|
|
4467
4474
|
layer_name="ports",
|
|
4468
4475
|
layer_type="signal",
|
|
4469
4476
|
thickness=self.stackup.signal_layers[reference_layer].thickness,
|
|
4470
4477
|
material="pec",
|
|
4471
4478
|
)
|
|
4472
|
-
box_thick = "100um"
|
|
4473
4479
|
if launching_box_thickness:
|
|
4474
|
-
|
|
4475
|
-
|
|
4476
|
-
|
|
4477
|
-
|
|
4478
|
-
|
|
4479
|
-
|
|
4480
|
-
|
|
4481
|
-
|
|
4482
|
-
|
|
4483
|
-
|
|
4480
|
+
launching_box_thickness = self.edb_value(launching_box_thickness).ToString()
|
|
4481
|
+
cloned_edb.stackup.add_layer(
|
|
4482
|
+
layer_name="ref",
|
|
4483
|
+
layer_type="signal",
|
|
4484
|
+
thickness=0.0,
|
|
4485
|
+
material="pec",
|
|
4486
|
+
method=f"add_on_{mounting_side}",
|
|
4487
|
+
base_layer="ports",
|
|
4488
|
+
)
|
|
4489
|
+
cloned_edb.stackup.add_layer(
|
|
4490
|
+
layer_name="port_pec",
|
|
4491
|
+
layer_type="signal",
|
|
4492
|
+
thickness=launching_box_thickness,
|
|
4493
|
+
method=f"add_on_{mounting_side}",
|
|
4494
|
+
material="pec",
|
|
4495
|
+
base_layer="ports",
|
|
4496
|
+
)
|
|
4484
4497
|
for void_info in void_padstacks:
|
|
4485
4498
|
port_poly = cloned_edb.modeler.create_polygon(
|
|
4486
4499
|
main_shape=void_info[0].polygon_data._edb_object, layer_name="ref", net_name="GND"
|
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
# SOFTWARE.
|
|
22
|
-
import math
|
|
23
22
|
|
|
24
23
|
from pyedb.dotnet.edb_core.cell.connectable import Connectable
|
|
25
24
|
from pyedb.dotnet.edb_core.general import convert_py_list_to_net_list
|
|
26
25
|
from pyedb.dotnet.edb_core.geometry.polygon_data import PolygonData
|
|
26
|
+
from pyedb.misc.utilities import compute_arc_points
|
|
27
27
|
from pyedb.modeler.geometry_operators import GeometryOperators
|
|
28
28
|
|
|
29
29
|
|
|
@@ -202,80 +202,6 @@ class Primitive(Connectable):
|
|
|
202
202
|
def is_negative(self, value):
|
|
203
203
|
self._edb_object.SetIsNegative(value)
|
|
204
204
|
|
|
205
|
-
@staticmethod
|
|
206
|
-
def _eval_arc_points(p1, p2, h, n=6, tol=1e-12):
|
|
207
|
-
"""Get the points of the arc
|
|
208
|
-
|
|
209
|
-
Parameters
|
|
210
|
-
----------
|
|
211
|
-
p1 : list
|
|
212
|
-
Arc starting point.
|
|
213
|
-
p2 : list
|
|
214
|
-
Arc ending point.
|
|
215
|
-
h : float
|
|
216
|
-
Arc height.
|
|
217
|
-
n : int
|
|
218
|
-
Number of points to generate along the arc.
|
|
219
|
-
tol : float
|
|
220
|
-
Geometric tolerance.
|
|
221
|
-
|
|
222
|
-
Returns
|
|
223
|
-
-------
|
|
224
|
-
list, list
|
|
225
|
-
Points generated along the arc.
|
|
226
|
-
"""
|
|
227
|
-
# fmt: off
|
|
228
|
-
if abs(h) < tol:
|
|
229
|
-
return [], []
|
|
230
|
-
elif h > 0:
|
|
231
|
-
reverse = False
|
|
232
|
-
x1 = p1[0]
|
|
233
|
-
y1 = p1[1]
|
|
234
|
-
x2 = p2[0]
|
|
235
|
-
y2 = p2[1]
|
|
236
|
-
else:
|
|
237
|
-
reverse = True
|
|
238
|
-
x1 = p2[0]
|
|
239
|
-
y1 = p2[1]
|
|
240
|
-
x2 = p1[0]
|
|
241
|
-
y2 = p1[1]
|
|
242
|
-
h *= -1
|
|
243
|
-
xa = (x2 - x1) / 2
|
|
244
|
-
ya = (y2 - y1) / 2
|
|
245
|
-
xo = x1 + xa
|
|
246
|
-
yo = y1 + ya
|
|
247
|
-
a = math.sqrt(xa ** 2 + ya ** 2)
|
|
248
|
-
if a < tol:
|
|
249
|
-
return [], []
|
|
250
|
-
r = (a ** 2) / (2 * h) + h / 2
|
|
251
|
-
if abs(r - a) < tol:
|
|
252
|
-
b = 0
|
|
253
|
-
th = 2 * math.asin(1) # chord angle
|
|
254
|
-
else:
|
|
255
|
-
b = math.sqrt(r ** 2 - a ** 2)
|
|
256
|
-
th = 2 * math.asin(a / r) # chord angle
|
|
257
|
-
|
|
258
|
-
# center of the circle
|
|
259
|
-
xc = xo + b * ya / a
|
|
260
|
-
yc = yo - b * xa / a
|
|
261
|
-
|
|
262
|
-
alpha = math.atan2((y1 - yc), (x1 - xc))
|
|
263
|
-
xr = []
|
|
264
|
-
yr = []
|
|
265
|
-
for i in range(n):
|
|
266
|
-
i += 1
|
|
267
|
-
dth = (float(i) / (n + 1)) * th
|
|
268
|
-
xi = xc + r * math.cos(alpha - dth)
|
|
269
|
-
yi = yc + r * math.sin(alpha - dth)
|
|
270
|
-
xr.append(xi)
|
|
271
|
-
yr.append(yi)
|
|
272
|
-
|
|
273
|
-
if reverse:
|
|
274
|
-
xr.reverse()
|
|
275
|
-
yr.reverse()
|
|
276
|
-
# fmt: on
|
|
277
|
-
return xr, yr
|
|
278
|
-
|
|
279
205
|
def _get_points_for_plot(self, my_net_points, num):
|
|
280
206
|
"""
|
|
281
207
|
Get the points to be plotted.
|
|
@@ -295,7 +221,7 @@ class Primitive(Connectable):
|
|
|
295
221
|
p2 = [my_net_points[i + 1].X.ToDouble(), my_net_points[i + 1].Y.ToDouble()]
|
|
296
222
|
else:
|
|
297
223
|
p2 = [my_net_points[0].X.ToDouble(), my_net_points[0].Y.ToDouble()]
|
|
298
|
-
x_arc, y_arc =
|
|
224
|
+
x_arc, y_arc = compute_arc_points(p1, p2, arc_h, num)
|
|
299
225
|
x.extend(x_arc)
|
|
300
226
|
y.extend(y_arc)
|
|
301
227
|
# i += 1
|
|
@@ -21,8 +21,10 @@
|
|
|
21
21
|
# SOFTWARE.
|
|
22
22
|
|
|
23
23
|
"""Primitive."""
|
|
24
|
+
|
|
24
25
|
from pyedb.dotnet.edb_core.dotnet.database import NetDotNet
|
|
25
26
|
from pyedb.dotnet.edb_core.general import convert_py_list_to_net_list
|
|
27
|
+
from pyedb.misc.utilities import compute_arc_points
|
|
26
28
|
from pyedb.modeler.geometry_operators import GeometryOperators
|
|
27
29
|
|
|
28
30
|
|
|
@@ -256,11 +258,10 @@ class PrimitiveDotNet:
|
|
|
256
258
|
"""
|
|
257
259
|
self.prim_obj.MakeZonePrimitive(zone_id)
|
|
258
260
|
|
|
259
|
-
def _get_points_for_plot(self, my_net_points,
|
|
261
|
+
def _get_points_for_plot(self, my_net_points, n=6, tol=1e-12):
|
|
260
262
|
"""
|
|
261
263
|
Get the points to be plot
|
|
262
264
|
"""
|
|
263
|
-
# fmt: off
|
|
264
265
|
x = []
|
|
265
266
|
y = []
|
|
266
267
|
for i, point in enumerate(my_net_points):
|
|
@@ -276,11 +277,9 @@ class PrimitiveDotNet:
|
|
|
276
277
|
p2 = [my_net_points[i + 1].X.ToDouble(), my_net_points[i + 1].Y.ToDouble()]
|
|
277
278
|
else:
|
|
278
279
|
p2 = [my_net_points[0].X.ToDouble(), my_net_points[0].Y.ToDouble()]
|
|
279
|
-
x_arc, y_arc =
|
|
280
|
+
x_arc, y_arc = compute_arc_points(p1, p2, arc_h, n, tol)
|
|
280
281
|
x.extend(x_arc)
|
|
281
282
|
y.extend(y_arc)
|
|
282
|
-
# i += 1
|
|
283
|
-
# fmt: on
|
|
284
283
|
return x, y
|
|
285
284
|
|
|
286
285
|
def points(self, arc_segments=6):
|
|
@@ -488,7 +488,7 @@ class EDBArcs(object):
|
|
|
488
488
|
"""
|
|
489
489
|
try:
|
|
490
490
|
my_net_points = self.points_raw
|
|
491
|
-
xt, yt = self._app._get_points_for_plot(my_net_points, arc_segments)
|
|
491
|
+
xt, yt = self._app._active_cell.primitive._get_points_for_plot(my_net_points, arc_segments)
|
|
492
492
|
if not xt:
|
|
493
493
|
return []
|
|
494
494
|
x, y = GeometryOperators.orient_polygon(xt, yt, clockwise=True)
|
|
@@ -22,7 +22,6 @@
|
|
|
22
22
|
|
|
23
23
|
from __future__ import absolute_import # noreorder
|
|
24
24
|
|
|
25
|
-
import math
|
|
26
25
|
import os
|
|
27
26
|
import time
|
|
28
27
|
import warnings
|
|
@@ -30,6 +29,7 @@ import warnings
|
|
|
30
29
|
from pyedb.dotnet.edb_core.edb_data.nets_data import EDBNetsData
|
|
31
30
|
from pyedb.generic.constants import CSS4_COLORS
|
|
32
31
|
from pyedb.generic.general_methods import generate_unique_name
|
|
32
|
+
from pyedb.misc.utilities import compute_arc_points
|
|
33
33
|
from pyedb.modeler.geometry_operators import GeometryOperators
|
|
34
34
|
|
|
35
35
|
|
|
@@ -354,80 +354,6 @@ class EdbNets(object):
|
|
|
354
354
|
|
|
355
355
|
return _extended_nets
|
|
356
356
|
|
|
357
|
-
@staticmethod
|
|
358
|
-
def _eval_arc_points(p1, p2, h, n=6, tol=1e-12):
|
|
359
|
-
"""Get the points of the arc.
|
|
360
|
-
|
|
361
|
-
Parameters
|
|
362
|
-
----------
|
|
363
|
-
p1 : list
|
|
364
|
-
Arc starting point.
|
|
365
|
-
p2 : list
|
|
366
|
-
Arc ending point.
|
|
367
|
-
h : float
|
|
368
|
-
Arc height.
|
|
369
|
-
n : int
|
|
370
|
-
Number of points to generate along the arc.
|
|
371
|
-
tol : float
|
|
372
|
-
Geometric tolerance.
|
|
373
|
-
|
|
374
|
-
Returns
|
|
375
|
-
-------
|
|
376
|
-
list
|
|
377
|
-
points generated along the arc.
|
|
378
|
-
"""
|
|
379
|
-
# fmt: off
|
|
380
|
-
if abs(h) < tol:
|
|
381
|
-
return [], []
|
|
382
|
-
elif h > 0:
|
|
383
|
-
reverse = False
|
|
384
|
-
x1 = p1[0]
|
|
385
|
-
y1 = p1[1]
|
|
386
|
-
x2 = p2[0]
|
|
387
|
-
y2 = p2[1]
|
|
388
|
-
else:
|
|
389
|
-
reverse = True
|
|
390
|
-
x1 = p2[0]
|
|
391
|
-
y1 = p2[1]
|
|
392
|
-
x2 = p1[0]
|
|
393
|
-
y2 = p1[1]
|
|
394
|
-
h *= -1
|
|
395
|
-
xa = (x2 - x1) / 2
|
|
396
|
-
ya = (y2 - y1) / 2
|
|
397
|
-
xo = x1 + xa
|
|
398
|
-
yo = y1 + ya
|
|
399
|
-
a = math.sqrt(xa ** 2 + ya ** 2)
|
|
400
|
-
if a < tol:
|
|
401
|
-
return [], []
|
|
402
|
-
r = (a ** 2) / (2 * h) + h / 2
|
|
403
|
-
if abs(r - a) < tol:
|
|
404
|
-
b = 0
|
|
405
|
-
th = 2 * math.asin(1) # chord angle
|
|
406
|
-
else:
|
|
407
|
-
b = math.sqrt(r ** 2 - a ** 2)
|
|
408
|
-
th = 2 * math.asin(a / r) # chord angle
|
|
409
|
-
|
|
410
|
-
# center of the circle
|
|
411
|
-
xc = xo + b * ya / a
|
|
412
|
-
yc = yo - b * xa / a
|
|
413
|
-
|
|
414
|
-
alpha = math.atan2((y1 - yc), (x1 - xc))
|
|
415
|
-
xr = []
|
|
416
|
-
yr = []
|
|
417
|
-
for i in range(n):
|
|
418
|
-
i += 1
|
|
419
|
-
dth = (i / (n + 1)) * th
|
|
420
|
-
xi = xc + r * math.cos(alpha - dth)
|
|
421
|
-
yi = yc + r * math.sin(alpha - dth)
|
|
422
|
-
xr.append(xi)
|
|
423
|
-
yr.append(yi)
|
|
424
|
-
|
|
425
|
-
if reverse:
|
|
426
|
-
xr.reverse()
|
|
427
|
-
yr.reverse()
|
|
428
|
-
# fmt: on
|
|
429
|
-
return xr, yr
|
|
430
|
-
|
|
431
357
|
def _get_points_for_plot(self, my_net_points):
|
|
432
358
|
"""
|
|
433
359
|
Get the points to be plot
|
|
@@ -448,7 +374,7 @@ class EdbNets(object):
|
|
|
448
374
|
p2 = [my_net_points[i + 1].X.ToDouble(), my_net_points[i + 1].Y.ToDouble()]
|
|
449
375
|
else:
|
|
450
376
|
p2 = [my_net_points[0].X.ToDouble(), my_net_points[0].Y.ToDouble()]
|
|
451
|
-
x_arc, y_arc =
|
|
377
|
+
x_arc, y_arc = compute_arc_points(p1, p2, arc_h)
|
|
452
378
|
x.extend(x_arc)
|
|
453
379
|
y.extend(y_arc)
|
|
454
380
|
# i += 1
|
|
@@ -0,0 +1,100 @@
|
|
|
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
|
+
"""Module gathering utility functions for PyEDB modules."""
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
import math
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def compute_arc_points(p1, p2, h, n=6, tol=1e-12):
|
|
30
|
+
"""Get the points of the arc.
|
|
31
|
+
|
|
32
|
+
Parameters
|
|
33
|
+
----------
|
|
34
|
+
p1 : list
|
|
35
|
+
Arc starting point.
|
|
36
|
+
p2 : list
|
|
37
|
+
Arc ending point.
|
|
38
|
+
h : float
|
|
39
|
+
Arc height.
|
|
40
|
+
n : int
|
|
41
|
+
Number of points to generate along the arc.
|
|
42
|
+
tol : float
|
|
43
|
+
Geometric tolerance.
|
|
44
|
+
|
|
45
|
+
Returns
|
|
46
|
+
-------
|
|
47
|
+
list, list
|
|
48
|
+
Points generated along the arc.
|
|
49
|
+
"""
|
|
50
|
+
if abs(h) < tol:
|
|
51
|
+
return [], []
|
|
52
|
+
elif h > 0:
|
|
53
|
+
reverse = False
|
|
54
|
+
x1 = p1[0]
|
|
55
|
+
y1 = p1[1]
|
|
56
|
+
x2 = p2[0]
|
|
57
|
+
y2 = p2[1]
|
|
58
|
+
else:
|
|
59
|
+
reverse = True
|
|
60
|
+
x1 = p2[0]
|
|
61
|
+
y1 = p2[1]
|
|
62
|
+
x2 = p1[0]
|
|
63
|
+
y2 = p1[1]
|
|
64
|
+
h *= -1
|
|
65
|
+
|
|
66
|
+
xa = (x2 - x1) / 2
|
|
67
|
+
ya = (y2 - y1) / 2
|
|
68
|
+
xo = x1 + xa
|
|
69
|
+
yo = y1 + ya
|
|
70
|
+
a = math.sqrt(xa**2 + ya**2)
|
|
71
|
+
if a < tol:
|
|
72
|
+
return [], []
|
|
73
|
+
r = (a**2) / (2 * h) + h / 2
|
|
74
|
+
if abs(r - a) < tol:
|
|
75
|
+
b = 0
|
|
76
|
+
th = 2 * math.asin(1) # chord angle
|
|
77
|
+
else:
|
|
78
|
+
b = math.sqrt(r**2 - a**2)
|
|
79
|
+
th = 2 * math.asin(a / r) # chord angle
|
|
80
|
+
|
|
81
|
+
# Center of the circle
|
|
82
|
+
xc = xo + b * ya / a
|
|
83
|
+
yc = yo - b * xa / a
|
|
84
|
+
|
|
85
|
+
alpha = math.atan2((y1 - yc), (x1 - xc))
|
|
86
|
+
xr = []
|
|
87
|
+
yr = []
|
|
88
|
+
for i in range(n):
|
|
89
|
+
i += 1
|
|
90
|
+
dth = (float(i) / (n + 1)) * th
|
|
91
|
+
xi = xc + r * math.cos(alpha - dth)
|
|
92
|
+
yi = yc + r * math.sin(alpha - dth)
|
|
93
|
+
xr.append(xi)
|
|
94
|
+
yr.append(yi)
|
|
95
|
+
|
|
96
|
+
if reverse:
|
|
97
|
+
xr.reverse()
|
|
98
|
+
yr.reverse()
|
|
99
|
+
|
|
100
|
+
return xr, yr
|
|
@@ -11,6 +11,7 @@ from __future__ import absolute_import # noreorder
|
|
|
11
11
|
import os
|
|
12
12
|
from pathlib import Path
|
|
13
13
|
import pkgutil
|
|
14
|
+
import shutil
|
|
14
15
|
import sys
|
|
15
16
|
import tempfile
|
|
16
17
|
import time
|
|
@@ -19,7 +20,7 @@ import warnings
|
|
|
19
20
|
from pyedb import Edb
|
|
20
21
|
from pyedb.dotnet.clr_module import _clr
|
|
21
22
|
from pyedb.edb_logger import pyedb_logger
|
|
22
|
-
from pyedb.generic.general_methods import _pythonver, is_windows
|
|
23
|
+
from pyedb.generic.general_methods import _pythonver, generate_unique_name, is_windows
|
|
23
24
|
from pyedb.misc.misc import list_installed_ansysem
|
|
24
25
|
from pyedb.siwave_core.icepak import Icepak
|
|
25
26
|
|
|
@@ -63,6 +64,11 @@ class Siwave(object): # pragma no cover
|
|
|
63
64
|
|
|
64
65
|
"""
|
|
65
66
|
|
|
67
|
+
@property
|
|
68
|
+
def version(self):
|
|
69
|
+
ver = self.oSiwave.GetVersion()
|
|
70
|
+
return ".".join(ver.split(".")[:-1])
|
|
71
|
+
|
|
66
72
|
@property
|
|
67
73
|
def version_keys(self):
|
|
68
74
|
"""Version keys for AEDT."""
|
|
@@ -330,6 +336,7 @@ class Siwave(object): # pragma no cover
|
|
|
330
336
|
|
|
331
337
|
"""
|
|
332
338
|
self._main.oSiwave.Quit()
|
|
339
|
+
self._main.oSiwave = None
|
|
333
340
|
return True
|
|
334
341
|
|
|
335
342
|
def export_element_data(self, simulation_name, file_path, data_type="Vias"):
|
|
@@ -509,16 +516,17 @@ class Siwave(object): # pragma no cover
|
|
|
509
516
|
# temp_folder = tempfile.TemporaryDirectory(suffix=".ansys")
|
|
510
517
|
# temp_edb = os.path.join(temp_folder.name, "temp.aedb")
|
|
511
518
|
|
|
512
|
-
temp_edb = os.path.join(
|
|
519
|
+
temp_edb = os.path.join(tempfile.gettempdir(), generate_unique_name("temp") + ".aedb")
|
|
513
520
|
|
|
514
521
|
self.export_edb(temp_edb)
|
|
515
522
|
self.oproject.ScrCloseProject()
|
|
516
|
-
edbapp = Edb(temp_edb, edbversion=self.
|
|
523
|
+
edbapp = Edb(temp_edb, edbversion=self.version)
|
|
517
524
|
edbapp.configuration.load(file_path)
|
|
518
525
|
edbapp.configuration.run()
|
|
519
526
|
edbapp.save()
|
|
520
527
|
edbapp.close()
|
|
521
528
|
self.import_edb(temp_edb)
|
|
529
|
+
shutil.rmtree(Path(temp_edb), ignore_errors=True)
|
|
522
530
|
|
|
523
531
|
def export_configuration(self, file_path: str):
|
|
524
532
|
"""Export layout information into a configuration file.
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
from distutils.dir_util import copy_tree
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class file_tools:
|
|
5
|
-
def __init__(self):
|
|
6
|
-
pass
|
|
7
|
-
|
|
8
|
-
@staticmethod
|
|
9
|
-
def copy_folder(source_folder, destination_folder):
|
|
10
|
-
"""
|
|
11
|
-
|
|
12
|
-
Parameters
|
|
13
|
-
----------
|
|
14
|
-
source_folder : str
|
|
15
|
-
source folder
|
|
16
|
-
|
|
17
|
-
destination_folder : str
|
|
18
|
-
destination folder.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
Returns
|
|
22
|
-
-------
|
|
23
|
-
|
|
24
|
-
"""
|
|
25
|
-
|
|
26
|
-
copy_tree(source_folder, destination_folder)
|
|
27
|
-
return True
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|