pyedb 0.11.0__tar.gz → 0.12.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.11.0 → pyedb-0.12.0}/PKG-INFO +5 -5
- {pyedb-0.11.0 → pyedb-0.12.0}/pyproject.toml +4 -4
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/__init__.py +1 -1
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/configuration/cfg_boundaries.py +35 -25
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/configuration/cfg_padstacks.py +13 -9
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/configuration/cfg_ports_sources.py +33 -17
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb.py +7 -8
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/hfss_simulation_setup_data.py +5 -6
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/nets_data.py +6 -2
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/padstacks_data.py +9 -1
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/layout.py +2 -2
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/nets.py +7 -3
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/siwave.py +1 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/stackup.py +7 -4
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/utilities/simulation_setup.py +14 -6
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/generic/plot.py +6 -5
- {pyedb-0.11.0 → pyedb-0.12.0}/LICENSE +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/README.md +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/configuration/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/configuration/cfg_components.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/configuration/cfg_data.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/configuration/cfg_general.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/configuration/cfg_nets.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/configuration/cfg_pin_groups.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/configuration/cfg_s_parameter_models.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/configuration/cfg_setup.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/configuration/cfg_spice_models.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/configuration/configuration.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/application/Variables.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/application/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/clr_module.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/cell/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/cell/hierarchy/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/cell/hierarchy/model.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/components.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/definition/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/definition/component_def.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/definition/component_model.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/definition/definition_obj.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/definition/definitions.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/definition/package_def.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/dotnet/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/dotnet/database.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/dotnet/layout.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/dotnet/primitive.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/components_data.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/connectable.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/control_file.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/design_options.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/edbvalue.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/hfss_pi_simulation_setup_data.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/layer_data.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/ports.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/primitives_data.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/simulation_configuration.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/siwave_simulation_setup_data.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/sources.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/terminals.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/utilities.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/variables.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/general.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/geometry/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/geometry/point_data.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/geometry/polygon_data.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/hfss.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/layout_validation.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/materials.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/net_class.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/obj_base.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/padstack.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/sim_setup_data/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/sim_setup_data/data/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/sim_setup_data/data/siw_dc_ir_settings.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/utilities/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/utilities/heatsink.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/edb_logger.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/exceptions.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/generic/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/generic/constants.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/generic/data_handlers.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/generic/design_types.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/generic/filesystem.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/generic/general_methods.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/generic/process.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/generic/settings.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/bom/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/bom/bom.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/bom/bom_item.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/bom/characteristics.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/bom/refdes.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/content/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/content/color.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/content/content.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/content/dictionary_color.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/content/dictionary_fill.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/content/dictionary_line.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/content/entry_color.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/content/entry_line.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/content/fill.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/content/layer_ref.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/content/standard_geometries_dictionary.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/cad_data.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/component.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/drill.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/feature.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/layer.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/layer_feature.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/logical_net.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/outline.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/package.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_def.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_instance.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/path.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/phy_net.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/pin.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/polygon.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/profile.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/stackup.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_group.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_layer.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_data/step.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/cad_header.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/ecad.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ecad/spec.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/history_record.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/ipc2581.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/ipc2581/logistic_header.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/misc/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/misc/aedtlib_personalib_install.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/misc/downloads.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/misc/misc.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/misc/pyedb.runtimeconfig.json +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/misc/siw_feature_config/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/misc/siw_feature_config/emc/__init__.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/misc/siw_feature_config/emc/component_tags.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/misc/siw_feature_config/emc/net_tags.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/misc/siw_feature_config/emc/tag_library.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/misc/siw_feature_config/emc/xml_generic.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/misc/utilities.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/modeler/geometry_operators.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/siwave.py +0 -0
- {pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/siwave_core/icepak.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pyedb
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.12.0
|
|
4
4
|
Summary: Higher-Level Pythonic Ansys Electronics Data Base
|
|
5
5
|
Author-email: "ANSYS, Inc." <pyansys.core@ansys.com>
|
|
6
6
|
Maintainer-email: PyEDB developers <simon.vandenbrouck@ansys.com>
|
|
@@ -26,7 +26,7 @@ Requires-Dist: ansys-sphinx-theme>=0.10.0,<0.17 ; extra == "doc"
|
|
|
26
26
|
Requires-Dist: imageio>=2.30.0,<2.35 ; extra == "doc"
|
|
27
27
|
Requires-Dist: ipython>=8.13.0,<8.25 ; extra == "doc"
|
|
28
28
|
Requires-Dist: jupyterlab>=4.0.0,<4.3 ; extra == "doc"
|
|
29
|
-
Requires-Dist: matplotlib>=3.5.0,<3.
|
|
29
|
+
Requires-Dist: matplotlib>=3.5.0,<3.10 ; extra == "doc"
|
|
30
30
|
Requires-Dist: nbsphinx>=0.9.0,<0.10 ; extra == "doc"
|
|
31
31
|
Requires-Dist: numpydoc>=1.5.0,<1.8 ; extra == "doc"
|
|
32
32
|
Requires-Dist: pypandoc>=1.10.0,<1.14 ; extra == "doc"
|
|
@@ -36,11 +36,11 @@ Requires-Dist: sphinx-autobuild==2024.2.4 ; extra == "doc" and ( python_version
|
|
|
36
36
|
Requires-Dist: sphinx-autobuild==2024.2.4 ; extra == "doc" and ( python_version > '3.8')
|
|
37
37
|
Requires-Dist: sphinx-copybutton>=0.5.0,<0.6 ; extra == "doc"
|
|
38
38
|
Requires-Dist: sphinx-gallery>=0.14.0,<0.17 ; extra == "doc"
|
|
39
|
-
Requires-Dist: sphinx_design>=0.4.0,<0.
|
|
40
|
-
Requires-Dist: matplotlib>=3.5.0,<3.
|
|
39
|
+
Requires-Dist: sphinx_design>=0.4.0,<0.7 ; extra == "doc"
|
|
40
|
+
Requires-Dist: matplotlib>=3.5.0,<3.10 ; extra == "full"
|
|
41
41
|
Requires-Dist: numpy>=1.20.0,<2 ; extra == "full"
|
|
42
42
|
Requires-Dist: pandas>=1.1.0,<2.3 ; extra == "full"
|
|
43
|
-
Requires-Dist: matplotlib>=3.5.0,<3.
|
|
43
|
+
Requires-Dist: matplotlib>=3.5.0,<3.10 ; extra == "tests"
|
|
44
44
|
Requires-Dist: numpy>=1.20.0,<2 ; extra == "tests"
|
|
45
45
|
Requires-Dist: mock>=5.1.0,<5.2 ; extra == "tests"
|
|
46
46
|
Requires-Dist: pandas>=1.1.0,<2.3 ; extra == "tests"
|
|
@@ -36,7 +36,7 @@ dependencies = [
|
|
|
36
36
|
|
|
37
37
|
[project.optional-dependencies]
|
|
38
38
|
tests = [
|
|
39
|
-
"matplotlib>=3.5.0,<3.
|
|
39
|
+
"matplotlib>=3.5.0,<3.10",
|
|
40
40
|
"numpy>=1.20.0,<2",
|
|
41
41
|
"mock>=5.1.0,<5.2",
|
|
42
42
|
"pandas>=1.1.0,<2.3",
|
|
@@ -49,7 +49,7 @@ doc = [
|
|
|
49
49
|
"imageio>=2.30.0,<2.35",
|
|
50
50
|
"ipython>=8.13.0,<8.25",
|
|
51
51
|
"jupyterlab>=4.0.0,<4.3",
|
|
52
|
-
"matplotlib>=3.5.0,<3.
|
|
52
|
+
"matplotlib>=3.5.0,<3.10",
|
|
53
53
|
"nbsphinx>=0.9.0,<0.10",
|
|
54
54
|
"numpydoc>=1.5.0,<1.8",
|
|
55
55
|
"pypandoc>=1.10.0,<1.14",
|
|
@@ -60,10 +60,10 @@ doc = [
|
|
|
60
60
|
"sphinx-autobuild==2024.2.4; python_version > '3.8'",
|
|
61
61
|
"sphinx-copybutton>=0.5.0,<0.6",
|
|
62
62
|
"sphinx-gallery>=0.14.0,<0.17",
|
|
63
|
-
"sphinx_design>=0.4.0,<0.
|
|
63
|
+
"sphinx_design>=0.4.0,<0.7",
|
|
64
64
|
]
|
|
65
65
|
full = [
|
|
66
|
-
"matplotlib>=3.5.0,<3.
|
|
66
|
+
"matplotlib>=3.5.0,<3.10",
|
|
67
67
|
"numpy>=1.20.0,<2",
|
|
68
68
|
"pandas>=1.1.0,<2.3",
|
|
69
69
|
]
|
|
@@ -27,25 +27,25 @@ class CfgBoundaries:
|
|
|
27
27
|
def __init__(self, pdata, boundaries_dict):
|
|
28
28
|
self._pedb = pdata.pedb
|
|
29
29
|
self._boundaries_dict = boundaries_dict
|
|
30
|
-
self.open_region = self._boundaries_dict.get("open_region",
|
|
30
|
+
self.open_region = self._boundaries_dict.get("open_region", None)
|
|
31
31
|
self._map_open_region_type()
|
|
32
|
-
self.pml_visible = self._boundaries_dict.get("pml_visible",
|
|
33
|
-
self.pml_operation_frequency = self._boundaries_dict.get("pml_operation_frequency",
|
|
34
|
-
self.pml_radiation_factor = self._boundaries_dict.get("pml_radiation_factor",
|
|
32
|
+
self.pml_visible = self._boundaries_dict.get("pml_visible", None)
|
|
33
|
+
self.pml_operation_frequency = self._boundaries_dict.get("pml_operation_frequency", None)
|
|
34
|
+
self.pml_radiation_factor = self._boundaries_dict.get("pml_radiation_factor", None)
|
|
35
35
|
self._map_dielectric_extend_type()
|
|
36
|
-
self.dielectric_base_polygon = self._boundaries_dict.get("dielectric_base_polygon",
|
|
37
|
-
self.horizontal_padding = self._boundaries_dict.get("horizontal_padding",
|
|
36
|
+
self.dielectric_base_polygon = self._boundaries_dict.get("dielectric_base_polygon", None)
|
|
37
|
+
self.horizontal_padding = self._boundaries_dict.get("horizontal_padding", None)
|
|
38
38
|
self.honor_primitives_on_dielectric_layers = self._boundaries_dict.get(
|
|
39
39
|
"honor_primitives_on_dielectric_layers", False
|
|
40
40
|
)
|
|
41
41
|
self._map_air_box_extend_type()
|
|
42
|
-
self.air_box_base_polygon = self._boundaries_dict.get("air_box_base_polygon",
|
|
42
|
+
self.air_box_base_polygon = self._boundaries_dict.get("air_box_base_polygon", None)
|
|
43
43
|
self.air_box_truncate_model_ground_layers = self._boundaries_dict.get(
|
|
44
|
-
"air_box_truncate_model_ground_layers",
|
|
44
|
+
"air_box_truncate_model_ground_layers", None
|
|
45
45
|
)
|
|
46
|
-
self.air_box_horizontal_padding = self._boundaries_dict.get("air_box_horizontal_padding",
|
|
47
|
-
self.air_box_positive_vertical_padding = self._boundaries_dict.get("air_box_positive_vertical_padding",
|
|
48
|
-
self.air_box_negative_vertical_padding = self._boundaries_dict.get("air_box_negative_vertical_padding",
|
|
46
|
+
self.air_box_horizontal_padding = self._boundaries_dict.get("air_box_horizontal_padding", None)
|
|
47
|
+
self.air_box_positive_vertical_padding = self._boundaries_dict.get("air_box_positive_vertical_padding", None)
|
|
48
|
+
self.air_box_negative_vertical_padding = self._boundaries_dict.get("air_box_negative_vertical_padding", None)
|
|
49
49
|
|
|
50
50
|
def _map_air_box_extend_type(self):
|
|
51
51
|
air_box_type = self._boundaries_dict.get("air_box_extents_type", None)
|
|
@@ -94,22 +94,32 @@ class CfgBoundaries:
|
|
|
94
94
|
|
|
95
95
|
def apply(self):
|
|
96
96
|
"""Imports boundary information from JSON."""
|
|
97
|
-
self.
|
|
97
|
+
if self.open_region is not None:
|
|
98
|
+
self._pedb.hfss.hfss_extent_info.use_open_region = self.open_region
|
|
98
99
|
self._pedb.hfss.hfss_extent_info.open_region_type = self.open_region_type.name.lower()
|
|
99
|
-
self.
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
if self.pml_visible is not None:
|
|
101
|
+
self._pedb.hfss.hfss_extent_info.is_pml_visible = self.pml_visible
|
|
102
|
+
if self.pml_operation_frequency:
|
|
103
|
+
self._pedb.hfss.hfss_extent_info.operating_freq = self.pml_operation_frequency
|
|
104
|
+
if self.pml_radiation_factor:
|
|
105
|
+
self._pedb.hfss.hfss_extent_info.radiation_level = self.pml_radiation_factor
|
|
102
106
|
self._pedb.hfss.hfss_extent_info.extent_type = self.dielectric_extents_type.name.lower()
|
|
103
107
|
if self.dielectric_base_polygon:
|
|
104
108
|
self._pedb.hfss.hfss_extent_info.dielectric_base_polygon = self.dielectric_base_polygon
|
|
105
|
-
|
|
106
|
-
|
|
109
|
+
if self.horizontal_padding:
|
|
110
|
+
self._pedb.hfss.hfss_extent_info.dielectric_extent_size = float(self.horizontal_padding)
|
|
111
|
+
if self.honor_primitives_on_dielectric_layers is not None:
|
|
112
|
+
self._pedb.hfss.hfss_extent_info.honor_user_dielectric = self.honor_primitives_on_dielectric_layers
|
|
107
113
|
self._pedb.hfss.hfss_extent_info.extent_type = self.air_box_extents_type.name.lower()
|
|
108
|
-
self.
|
|
109
|
-
|
|
110
|
-
self.
|
|
111
|
-
self.
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
if self.air_box_truncate_model_ground_layers is not None:
|
|
115
|
+
self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground = self.air_box_truncate_model_ground_layers
|
|
116
|
+
if self.air_box_horizontal_padding:
|
|
117
|
+
self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent = float(self.air_box_horizontal_padding)
|
|
118
|
+
if self.air_box_positive_vertical_padding:
|
|
119
|
+
self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent = float(
|
|
120
|
+
self.air_box_positive_vertical_padding
|
|
121
|
+
)
|
|
122
|
+
if self.air_box_negative_vertical_padding:
|
|
123
|
+
self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent = float(
|
|
124
|
+
self.air_box_negative_vertical_padding
|
|
125
|
+
)
|
|
@@ -54,20 +54,24 @@ class Definition:
|
|
|
54
54
|
def __init__(self, pdata, definition_dict):
|
|
55
55
|
self._pedb = pdata.pedb
|
|
56
56
|
self._definition_dict = definition_dict
|
|
57
|
-
self.name = self._definition_dict.get("name",
|
|
58
|
-
self.hole_diameter = self._definition_dict.get("hole_diameter",
|
|
59
|
-
self.hole_plating_thickness = self._definition_dict.get("hole_plating_thickness",
|
|
60
|
-
self.hole_material = self._definition_dict.get("hole_material",
|
|
61
|
-
self.hole_range = self._definition_dict.get("hole_range",
|
|
57
|
+
self.name = self._definition_dict.get("name", None)
|
|
58
|
+
self.hole_diameter = self._definition_dict.get("hole_diameter", None)
|
|
59
|
+
self.hole_plating_thickness = self._definition_dict.get("hole_plating_thickness", None)
|
|
60
|
+
self.hole_material = self._definition_dict.get("hole_material", None)
|
|
61
|
+
self.hole_range = self._definition_dict.get("hole_range", None)
|
|
62
62
|
|
|
63
63
|
def apply(self):
|
|
64
64
|
"""Apply padstack definition on layout."""
|
|
65
65
|
padstack_defs = self._pedb.padstacks.definitions
|
|
66
66
|
pdef = padstack_defs[self.name]
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
if self.hole_diameter:
|
|
68
|
+
pdef.hole_diameter = self.hole_diameter
|
|
69
|
+
if self.hole_plating_thickness:
|
|
70
|
+
pdef.hole_plating_thickness = self.hole_plating_thickness
|
|
71
|
+
if self.hole_material:
|
|
72
|
+
pdef.material = self.hole_material
|
|
73
|
+
if self.hole_range:
|
|
74
|
+
pdef.hole_range = self.hole_range
|
|
71
75
|
|
|
72
76
|
|
|
73
77
|
class Instance:
|
|
@@ -41,8 +41,8 @@ class CfgCircuitElement:
|
|
|
41
41
|
self.neg_term_info = kwargs.get("negative_terminal", None)
|
|
42
42
|
|
|
43
43
|
@pyedb_function_handler
|
|
44
|
-
def
|
|
45
|
-
"""Create step 1."""
|
|
44
|
+
def _create_terminals(self):
|
|
45
|
+
"""Create step 1. Collect positive and negative terminals."""
|
|
46
46
|
pos_term_info = self.pos_term_info
|
|
47
47
|
if pos_term_info:
|
|
48
48
|
pos_type, pos_value = [[i, j] for i, j in pos_term_info.items()][0]
|
|
@@ -71,16 +71,26 @@ class CfgCircuitElement:
|
|
|
71
71
|
self.neg_terminal = None
|
|
72
72
|
if neg_term_info:
|
|
73
73
|
neg_type, neg_value = [[i, j] for i, j in neg_term_info.items()][0]
|
|
74
|
-
if neg_type == "
|
|
75
|
-
|
|
74
|
+
if neg_type == "nearest_pin":
|
|
75
|
+
ref_net = neg_value.get("reference_net", "GND")
|
|
76
|
+
search_radius = neg_value.get("search_radius", "5e-3")
|
|
77
|
+
temp = dict()
|
|
78
|
+
for i, j in pos_objs.items():
|
|
79
|
+
temp[i] = self._pdata.pedb.padstacks.get_reference_pins(j, ref_net, search_radius, max_limit=1)[0]
|
|
80
|
+
self.neg_terminal = {
|
|
81
|
+
i: j.create_terminal(i + "_ref") if not j.terminal else j.terminal for i, j in temp.items()
|
|
82
|
+
}
|
|
76
83
|
else:
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
+
if neg_type == "pin_group":
|
|
85
|
+
pin_group = {neg_value: self.pedb.siwave.pin_groups[neg_value]}
|
|
86
|
+
else:
|
|
87
|
+
# Get pins
|
|
88
|
+
pins = self._get_pins(neg_type, neg_value) # terminal type pin or net
|
|
89
|
+
# create pin group
|
|
90
|
+
pin_group = self._create_pin_group(pins, True)
|
|
91
|
+
self.neg_terminal = [
|
|
92
|
+
j.create_terminal(i) if not j.terminal else j.terminal for i, j in pin_group.items()
|
|
93
|
+
][0]
|
|
84
94
|
|
|
85
95
|
@pyedb_function_handler
|
|
86
96
|
def _get_pins(self, terminal_type, terminal_value):
|
|
@@ -125,11 +135,14 @@ class CfgPort(CfgCircuitElement):
|
|
|
125
135
|
@pyedb_function_handler
|
|
126
136
|
def create(self):
|
|
127
137
|
"""Create port."""
|
|
128
|
-
self.
|
|
138
|
+
self._create_terminals()
|
|
129
139
|
is_circuit_port = True if self.type == "circuit" else False
|
|
130
140
|
circuit_elements = []
|
|
131
|
-
for
|
|
132
|
-
|
|
141
|
+
for name, j in self.pos_terminals.items():
|
|
142
|
+
if isinstance(self.neg_terminal, dict):
|
|
143
|
+
elem = self.pedb.create_port(j, self.neg_terminal[name], is_circuit_port)
|
|
144
|
+
else:
|
|
145
|
+
elem = self.pedb.create_port(j, self.neg_terminal, is_circuit_port)
|
|
133
146
|
if not self.distributed:
|
|
134
147
|
elem.name = self.name
|
|
135
148
|
circuit_elements.append(elem)
|
|
@@ -148,12 +161,15 @@ class CfgSources(CfgCircuitElement):
|
|
|
148
161
|
@pyedb_function_handler
|
|
149
162
|
def create(self):
|
|
150
163
|
"""Create sources."""
|
|
151
|
-
self.
|
|
164
|
+
self._create_terminals()
|
|
152
165
|
is_circuit_port = True if self.type == "circuit" else False
|
|
153
166
|
circuit_elements = []
|
|
154
167
|
method = self.pedb.create_current_source if self.type == "current" else self.pedb.create_voltage_source
|
|
155
|
-
for
|
|
156
|
-
|
|
168
|
+
for name, j in self.pos_terminals.items():
|
|
169
|
+
if isinstance(self.neg_terminal, dict):
|
|
170
|
+
elem = method(j, self.neg_terminal[name])
|
|
171
|
+
else:
|
|
172
|
+
elem = method(j, self.neg_terminal)
|
|
157
173
|
if not self.distributed:
|
|
158
174
|
elem.name = self.name
|
|
159
175
|
elem.magnitude = self.magnitude
|
|
@@ -197,7 +197,6 @@ class Edb(Database):
|
|
|
197
197
|
self.standalone = True
|
|
198
198
|
self.oproject = oproject
|
|
199
199
|
self._main = sys.modules["__main__"]
|
|
200
|
-
self.edbversion = edbversion
|
|
201
200
|
self.isaedtowned = isaedtowned
|
|
202
201
|
self.isreadonly = isreadonly
|
|
203
202
|
self.cellname = cellname
|
|
@@ -3703,12 +3702,10 @@ class Edb(Database):
|
|
|
3703
3702
|
self.logger.error("Setup name already used in the layout")
|
|
3704
3703
|
return False
|
|
3705
3704
|
version = self.edbversion.split(".")
|
|
3706
|
-
if
|
|
3707
|
-
setup = HFSSPISimulationSetup(self).create(name)
|
|
3708
|
-
return setup
|
|
3709
|
-
else:
|
|
3705
|
+
if float(self.edbversion) < 2024.2:
|
|
3710
3706
|
self.logger.error("HFSSPI simulation only supported with Ansys release 2024R2 and higher")
|
|
3711
3707
|
return False
|
|
3708
|
+
return HFSSPISimulationSetup(self).create(name)
|
|
3712
3709
|
|
|
3713
3710
|
@pyedb_function_handler()
|
|
3714
3711
|
def create_siwave_syz_setup(self, name=None):
|
|
@@ -3987,7 +3984,7 @@ class Edb(Database):
|
|
|
3987
3984
|
return connected_ports_list
|
|
3988
3985
|
|
|
3989
3986
|
@pyedb_function_handler
|
|
3990
|
-
def create_port(self, terminal, ref_terminal=None, is_circuit_port=False):
|
|
3987
|
+
def create_port(self, terminal, ref_terminal=None, is_circuit_port=False, name=None):
|
|
3991
3988
|
"""Create a port.
|
|
3992
3989
|
|
|
3993
3990
|
Parameters
|
|
@@ -4005,7 +4002,8 @@ class Edb(Database):
|
|
|
4005
4002
|
Negative terminal of the port.
|
|
4006
4003
|
is_circuit_port : bool, optional
|
|
4007
4004
|
Whether it is a circuit port. The default is ``False``.
|
|
4008
|
-
|
|
4005
|
+
name: str, optional
|
|
4006
|
+
Name of the created port. The default is None, a random name is generated.
|
|
4009
4007
|
Returns
|
|
4010
4008
|
-------
|
|
4011
4009
|
list: [:class:`pyedb.dotnet.edb_core.edb_data.ports.GapPort`,
|
|
@@ -4018,7 +4016,8 @@ class Edb(Database):
|
|
|
4018
4016
|
if ref_terminal:
|
|
4019
4017
|
ref_terminal.boundary_type = "PortBoundary"
|
|
4020
4018
|
terminal.ref_terminal = ref_terminal
|
|
4021
|
-
|
|
4019
|
+
if name:
|
|
4020
|
+
terminal.name = name
|
|
4022
4021
|
return self.ports[terminal.name]
|
|
4023
4022
|
|
|
4024
4023
|
@pyedb_function_handler
|
{pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/hfss_simulation_setup_data.py
RENAMED
|
@@ -977,19 +977,18 @@ class ViaSettings(object):
|
|
|
977
977
|
-------
|
|
978
978
|
bool
|
|
979
979
|
"""
|
|
980
|
-
if self._parent._pedb.
|
|
981
|
-
return self._via_settings.ViaMeshPlating
|
|
982
|
-
else:
|
|
980
|
+
if float(self._parent._pedb.edbversion) < 2024.1:
|
|
983
981
|
self._parent._pedb.logger.error("Property only supported on Ansys release 2024R1 and later")
|
|
984
982
|
return False
|
|
983
|
+
return self._via_settings.ViaMeshPlating
|
|
985
984
|
|
|
986
985
|
@via_mesh_plating.setter
|
|
987
986
|
def via_mesh_plating(self, value):
|
|
988
|
-
if self._parent._pedb.
|
|
987
|
+
if float(self._parent._pedb.edbversion) < 2024.1:
|
|
988
|
+
self._parent._pedb.logger.error("Property only supported on Ansys release 2024R1 and later")
|
|
989
|
+
else:
|
|
989
990
|
self._via_settings.ViaMeshPlating = value
|
|
990
991
|
self._parent._update_setup()
|
|
991
|
-
else:
|
|
992
|
-
self._parent._pedb.logger.error("Property only supported on Ansys release 2024R1 and later")
|
|
993
992
|
|
|
994
993
|
@property
|
|
995
994
|
def via_material(self):
|
|
@@ -123,6 +123,7 @@ class EDBNetsData(NetDotNet):
|
|
|
123
123
|
save_plot=None,
|
|
124
124
|
outline=None,
|
|
125
125
|
size=(2000, 1000),
|
|
126
|
+
show=True,
|
|
126
127
|
):
|
|
127
128
|
"""Plot a net to Matplotlib 2D chart.
|
|
128
129
|
|
|
@@ -134,12 +135,14 @@ class EDBNetsData(NetDotNet):
|
|
|
134
135
|
If `True` the legend is shown in the plot. (default)
|
|
135
136
|
If `False` the legend is not shown.
|
|
136
137
|
save_plot : str, optional
|
|
137
|
-
If
|
|
138
|
-
If
|
|
138
|
+
If a path is specified the plot will be saved in this location.
|
|
139
|
+
If ``save_plot`` is provided, the ``show`` parameter is ignored.
|
|
139
140
|
outline : list, optional
|
|
140
141
|
List of points of the outline to plot.
|
|
141
142
|
size : tuple, optional
|
|
142
143
|
Image size in pixel (width, height).
|
|
144
|
+
show : bool, optional
|
|
145
|
+
Whether to show the plot or not. Default is `True`.
|
|
143
146
|
"""
|
|
144
147
|
|
|
145
148
|
self._app.nets.plot(
|
|
@@ -149,6 +152,7 @@ class EDBNetsData(NetDotNet):
|
|
|
149
152
|
save_plot=save_plot,
|
|
150
153
|
outline=outline,
|
|
151
154
|
size=size,
|
|
155
|
+
show=show,
|
|
152
156
|
)
|
|
153
157
|
|
|
154
158
|
@pyedb_function_handler()
|
|
@@ -1183,7 +1183,7 @@ class EDBPadstackInstance(EDBPrimitivesMain):
|
|
|
1183
1183
|
-------
|
|
1184
1184
|
:class:`pyedb.dotnet.edb_core.edb_data.terminals`
|
|
1185
1185
|
"""
|
|
1186
|
-
|
|
1186
|
+
warnings.warn("Use new property :func:`terminal` instead.", DeprecationWarning)
|
|
1187
1187
|
if create_new_terminal:
|
|
1188
1188
|
term = self._create_terminal(name)
|
|
1189
1189
|
else:
|
|
@@ -1195,6 +1195,14 @@ class EDBPadstackInstance(EDBPrimitivesMain):
|
|
|
1195
1195
|
if not term.is_null:
|
|
1196
1196
|
return term
|
|
1197
1197
|
|
|
1198
|
+
@property
|
|
1199
|
+
def terminal(self):
|
|
1200
|
+
"""Terminal."""
|
|
1201
|
+
from pyedb.dotnet.edb_core.edb_data.terminals import PadstackInstanceTerminal
|
|
1202
|
+
|
|
1203
|
+
term = PadstackInstanceTerminal(self._pedb, self._edb_object.GetPadstackInstanceTerminal())
|
|
1204
|
+
return term if not term.is_null else None
|
|
1205
|
+
|
|
1198
1206
|
@pyedb_function_handler()
|
|
1199
1207
|
def _create_terminal(self, name=None):
|
|
1200
1208
|
"""Create a padstack instance terminal"""
|
|
@@ -156,7 +156,7 @@ class EdbLayout(object):
|
|
|
156
156
|
lay = i.GetLayer().GetName()
|
|
157
157
|
_primitives_by_layer[lay].append(cast(i, self._pedb))
|
|
158
158
|
except:
|
|
159
|
-
self._logger.warning(f"Failed to get layer on primitive {i
|
|
159
|
+
self._logger.warning(f"Failed to get layer on primitive {i}, skipping.")
|
|
160
160
|
continue
|
|
161
161
|
return _primitives_by_layer
|
|
162
162
|
|
|
@@ -242,7 +242,7 @@ class EdbLayout(object):
|
|
|
242
242
|
else:
|
|
243
243
|
objinst.append(el)
|
|
244
244
|
except:
|
|
245
|
-
self._logger.warning(f"Failed to retrieve layer on polygon {el
|
|
245
|
+
self._logger.warning(f"Failed to retrieve layer on polygon {el}")
|
|
246
246
|
return objinst
|
|
247
247
|
|
|
248
248
|
@pyedb_function_handler()
|
|
@@ -822,6 +822,7 @@ class EdbNets(object):
|
|
|
822
822
|
size=(2000, 1000),
|
|
823
823
|
plot_components_on_top=False,
|
|
824
824
|
plot_components_on_bottom=False,
|
|
825
|
+
show=True,
|
|
825
826
|
):
|
|
826
827
|
"""Plot a Net to Matplotlib 2D Chart.
|
|
827
828
|
|
|
@@ -838,8 +839,8 @@ class EdbNets(object):
|
|
|
838
839
|
If ``True`` the legend is shown in the plot. (default)
|
|
839
840
|
If ``False`` the legend is not shown.
|
|
840
841
|
save_plot : str, optional
|
|
841
|
-
If
|
|
842
|
-
If
|
|
842
|
+
If a path is specified the plot will be saved in this location.
|
|
843
|
+
If ``save_plot`` is provided, the ``show`` parameter is ignored.
|
|
843
844
|
outline : list, optional
|
|
844
845
|
List of points of the outline to plot.
|
|
845
846
|
size : tuple, int, optional
|
|
@@ -852,6 +853,8 @@ class EdbNets(object):
|
|
|
852
853
|
If ``True`` the components placed on bottom layer are plotted.
|
|
853
854
|
If ``False`` the components are not plotted. (default)
|
|
854
855
|
If nets and/or layers is specified, only the components belonging to the specified nets/layers are plotted.
|
|
856
|
+
show : bool, optional
|
|
857
|
+
Whether to show the plot or not. Default is `True`.
|
|
855
858
|
"""
|
|
856
859
|
if is_ironpython:
|
|
857
860
|
self._logger.warning("Plot functionalities are enabled only in CPython.")
|
|
@@ -880,8 +883,9 @@ class EdbNets(object):
|
|
|
880
883
|
xlabel="X (m)",
|
|
881
884
|
ylabel="Y (m)",
|
|
882
885
|
title=self._pedb.active_cell.GetName(),
|
|
883
|
-
|
|
886
|
+
save_plot=save_plot,
|
|
884
887
|
axis_equal=True,
|
|
888
|
+
show=show,
|
|
885
889
|
)
|
|
886
890
|
|
|
887
891
|
@pyedb_function_handler()
|
|
@@ -2490,6 +2490,7 @@ class Stackup(LayerCollection):
|
|
|
2490
2490
|
first_layer=None,
|
|
2491
2491
|
last_layer=None,
|
|
2492
2492
|
scale_elevation=True,
|
|
2493
|
+
show=True,
|
|
2493
2494
|
):
|
|
2494
2495
|
"""Plot current stackup and, optionally, overlap padstack definitions.
|
|
2495
2496
|
Plot supports only 'Laminate' and 'Overlapping' stackup types.
|
|
@@ -2497,8 +2498,8 @@ class Stackup(LayerCollection):
|
|
|
2497
2498
|
Parameters
|
|
2498
2499
|
----------
|
|
2499
2500
|
save_plot : str, optional
|
|
2500
|
-
If
|
|
2501
|
-
If
|
|
2501
|
+
If a path is specified the plot will be saved in this location.
|
|
2502
|
+
If ``save_plot`` is provided, the ``show`` parameter is ignored.
|
|
2502
2503
|
size : tuple, optional
|
|
2503
2504
|
Image size in pixel (width, height). Default value is ``(2000, 1500)``
|
|
2504
2505
|
plot_definitions : str, list, optional
|
|
@@ -2511,6 +2512,8 @@ class Stackup(LayerCollection):
|
|
|
2511
2512
|
scale_elevation : bool, optional
|
|
2512
2513
|
The real layer thickness is scaled so that max_thickness = 3 * min_thickness.
|
|
2513
2514
|
Default is `True`.
|
|
2515
|
+
show : bool, optional
|
|
2516
|
+
Whether to show the plot or not. Default is `True`.
|
|
2514
2517
|
|
|
2515
2518
|
Returns
|
|
2516
2519
|
-------
|
|
@@ -2925,7 +2928,7 @@ class Stackup(LayerCollection):
|
|
|
2925
2928
|
xlabel="",
|
|
2926
2929
|
ylabel="",
|
|
2927
2930
|
title="",
|
|
2928
|
-
|
|
2931
|
+
save_plot=None,
|
|
2929
2932
|
x_limits=[x_min, x_max],
|
|
2930
2933
|
y_limits=[y_min, y_max],
|
|
2931
2934
|
axis_equal=False,
|
|
@@ -2950,6 +2953,6 @@ class Stackup(LayerCollection):
|
|
|
2950
2953
|
plt.tight_layout()
|
|
2951
2954
|
if save_plot:
|
|
2952
2955
|
plt.savefig(save_plot)
|
|
2953
|
-
|
|
2956
|
+
elif show:
|
|
2954
2957
|
plt.show()
|
|
2955
2958
|
return plt
|
|
@@ -36,6 +36,7 @@ class BaseSimulationSetup(object):
|
|
|
36
36
|
EDB object.
|
|
37
37
|
"""
|
|
38
38
|
|
|
39
|
+
@pyedb_function_handler
|
|
39
40
|
def __init__(self, pedb, edb_setup=None):
|
|
40
41
|
self._pedb = pedb
|
|
41
42
|
self._edb_object = edb_setup
|
|
@@ -56,9 +57,16 @@ class BaseSimulationSetup(object):
|
|
|
56
57
|
"kDDRwizard": None,
|
|
57
58
|
"kQ3D": None,
|
|
58
59
|
"kNumSetupTypes": None,
|
|
59
|
-
"kRaptorX": self._pedb.simsetupdata.RaptorX.RaptorXSimulationSettings,
|
|
60
|
-
"kHFSSPI": self._pedb.simsetupdata.HFSSPISimulationSettings,
|
|
61
60
|
}
|
|
61
|
+
|
|
62
|
+
version = self._pedb.edbversion.split(".")
|
|
63
|
+
if float(self._pedb.edbversion) >= 2024.2:
|
|
64
|
+
self._setup_type_mapping.update(
|
|
65
|
+
{
|
|
66
|
+
"kRaptorX": self._pedb.simsetupdata.RaptorX.RaptorXSimulationSettings,
|
|
67
|
+
"kHFSSPI": self._pedb.simsetupdata.HFSSPISimulationSettings,
|
|
68
|
+
}
|
|
69
|
+
)
|
|
62
70
|
if self._edb_object:
|
|
63
71
|
self._name = self._edb_object.GetName()
|
|
64
72
|
|
|
@@ -103,10 +111,10 @@ class BaseSimulationSetup(object):
|
|
|
103
111
|
"kQ3D": None,
|
|
104
112
|
"kNumSetupTypes": None,
|
|
105
113
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
114
|
+
|
|
115
|
+
version = self._pedb.edbversion.split(".")
|
|
116
|
+
if int(version[0]) == 2024 and int(version[1]) == 2 or int(version[0]) > 2024:
|
|
117
|
+
setup_type_mapping["kRaptorX"] = utility.RaptorXSimulationSetup
|
|
110
118
|
setup_utility = setup_type_mapping[self._setup_type]
|
|
111
119
|
return setup_utility(edb_setup_info)
|
|
112
120
|
|
|
@@ -41,7 +41,7 @@ def plot_matplotlib(
|
|
|
41
41
|
xlabel="",
|
|
42
42
|
ylabel="",
|
|
43
43
|
title="",
|
|
44
|
-
|
|
44
|
+
save_plot=None,
|
|
45
45
|
x_limits=None,
|
|
46
46
|
y_limits=None,
|
|
47
47
|
axis_equal=False,
|
|
@@ -67,8 +67,9 @@ def plot_matplotlib(
|
|
|
67
67
|
Plot Y label. Default is `""`.
|
|
68
68
|
title : str, optional
|
|
69
69
|
Plot Title label. Default is `""`.
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
save_plot : str, optional
|
|
71
|
+
If a path is specified the plot will be saved in this location.
|
|
72
|
+
If ``save_plot`` is provided, the ``show`` parameter is ignored.
|
|
72
73
|
x_limits : list, optional
|
|
73
74
|
List of x limits (left and right). Default is `None`.
|
|
74
75
|
y_limits : list, optional
|
|
@@ -141,8 +142,8 @@ def plot_matplotlib(
|
|
|
141
142
|
for annotation in annotations:
|
|
142
143
|
plt.text(annotation[0], annotation[1], annotation[2], **annotation[3])
|
|
143
144
|
|
|
144
|
-
if
|
|
145
|
-
plt.savefig(
|
|
145
|
+
if save_plot:
|
|
146
|
+
plt.savefig(save_plot)
|
|
146
147
|
elif show:
|
|
147
148
|
plt.show()
|
|
148
149
|
return plt
|
|
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
|
{pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/hfss_pi_simulation_setup_data.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py
RENAMED
|
File without changes
|
{pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/simulation_configuration.py
RENAMED
|
File without changes
|
{pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/edb_data/siwave_simulation_setup_data.py
RENAMED
|
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
|
{pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/dotnet/edb_core/sim_setup_data/data/siw_dc_ir_settings.py
RENAMED
|
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
|
|
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
|
{pyedb-0.11.0 → pyedb-0.12.0}/src/pyedb/misc/siw_feature_config/emc_rule_checker_settings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|