pyedb 0.53.0__py3-none-any.whl → 0.55.0__py3-none-any.whl
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/__init__.py +1 -8
- pyedb/configuration/cfg_boundaries.py +69 -151
- pyedb/configuration/cfg_components.py +201 -460
- pyedb/configuration/cfg_data.py +4 -2
- pyedb/configuration/cfg_general.py +13 -36
- pyedb/configuration/cfg_modeler.py +2 -1
- pyedb/configuration/cfg_nets.py +21 -35
- pyedb/configuration/cfg_operations.py +22 -151
- pyedb/configuration/cfg_package_definition.py +56 -112
- pyedb/configuration/cfg_padstacks.py +292 -688
- pyedb/configuration/cfg_pin_groups.py +32 -79
- pyedb/configuration/cfg_ports_sources.py +20 -9
- pyedb/configuration/cfg_s_parameter_models.py +67 -172
- pyedb/configuration/cfg_setup.py +102 -295
- pyedb/configuration/configuration.py +66 -6
- pyedb/dotnet/database/cell/connectable.py +38 -9
- pyedb/dotnet/database/cell/hierarchy/component.py +28 -28
- pyedb/dotnet/database/cell/hierarchy/model.py +1 -1
- pyedb/dotnet/database/cell/layout.py +64 -3
- pyedb/dotnet/database/cell/layout_obj.py +3 -3
- pyedb/dotnet/database/cell/primitive/path.py +6 -8
- pyedb/dotnet/database/cell/primitive/primitive.py +10 -31
- pyedb/dotnet/database/cell/terminal/edge_terminal.py +2 -2
- pyedb/dotnet/database/cell/terminal/padstack_instance_terminal.py +1 -1
- pyedb/dotnet/database/cell/terminal/pingroup_terminal.py +1 -1
- pyedb/dotnet/database/cell/terminal/point_terminal.py +1 -1
- pyedb/dotnet/database/cell/terminal/terminal.py +26 -28
- pyedb/dotnet/database/cell/voltage_regulator.py +0 -21
- pyedb/dotnet/database/components.py +99 -91
- pyedb/dotnet/database/definition/component_def.py +4 -4
- pyedb/dotnet/database/definition/component_model.py +1 -1
- pyedb/dotnet/database/definition/package_def.py +2 -3
- pyedb/dotnet/database/dotnet/database.py +27 -218
- pyedb/dotnet/database/dotnet/primitive.py +16 -16
- pyedb/dotnet/database/edb_data/control_file.py +5 -5
- pyedb/dotnet/database/edb_data/hfss_extent_info.py +6 -6
- pyedb/dotnet/database/edb_data/layer_data.py +35 -35
- pyedb/dotnet/database/edb_data/padstacks_data.py +65 -90
- pyedb/dotnet/database/edb_data/primitives_data.py +5 -5
- pyedb/dotnet/database/edb_data/sources.py +6 -6
- pyedb/dotnet/database/edb_data/variables.py +8 -4
- pyedb/dotnet/database/geometry/point_data.py +14 -10
- pyedb/dotnet/database/geometry/polygon_data.py +3 -5
- pyedb/dotnet/database/hfss.py +50 -52
- pyedb/dotnet/database/layout_validation.py +14 -11
- pyedb/dotnet/database/materials.py +10 -11
- pyedb/dotnet/database/modeler.py +104 -101
- pyedb/dotnet/database/nets.py +20 -23
- pyedb/dotnet/database/padstack.py +156 -84
- pyedb/dotnet/database/sim_setup_data/data/settings.py +24 -0
- pyedb/dotnet/database/sim_setup_data/io/siwave.py +26 -1
- pyedb/dotnet/database/siwave.py +47 -47
- pyedb/dotnet/database/stackup.py +152 -87
- pyedb/dotnet/database/utilities/heatsink.py +4 -4
- pyedb/dotnet/database/utilities/obj_base.py +3 -3
- pyedb/dotnet/database/utilities/simulation_setup.py +2 -2
- pyedb/dotnet/database/utilities/value.py +116 -0
- pyedb/dotnet/edb.py +248 -170
- pyedb/edb_logger.py +12 -27
- pyedb/extensions/via_design_backend.py +6 -3
- pyedb/generic/design_types.py +68 -21
- pyedb/generic/general_methods.py +0 -120
- pyedb/generic/process.py +44 -108
- pyedb/generic/settings.py +75 -19
- pyedb/grpc/__init__.py +0 -0
- pyedb/grpc/database/components.py +55 -17
- pyedb/grpc/database/control_file.py +5 -5
- pyedb/grpc/database/definition/materials.py +24 -31
- pyedb/grpc/database/definition/package_def.py +18 -18
- pyedb/grpc/database/definition/padstack_def.py +104 -51
- pyedb/grpc/database/geometry/arc_data.py +7 -5
- pyedb/grpc/database/geometry/point_3d_data.py +8 -7
- pyedb/grpc/database/geometry/polygon_data.py +4 -3
- pyedb/grpc/database/hierarchy/component.py +43 -38
- pyedb/grpc/database/hierarchy/pin_pair_model.py +15 -14
- pyedb/grpc/database/hierarchy/pingroup.py +9 -9
- pyedb/grpc/database/layers/stackup_layer.py +45 -44
- pyedb/grpc/database/layout/layout.py +17 -13
- pyedb/grpc/database/layout/voltage_regulator.py +7 -7
- pyedb/grpc/database/layout_validation.py +16 -15
- pyedb/grpc/database/modeler.py +60 -58
- pyedb/grpc/database/net/net.py +15 -14
- pyedb/grpc/database/nets.py +112 -31
- pyedb/grpc/database/padstacks.py +303 -190
- pyedb/grpc/database/ports/ports.py +5 -6
- pyedb/grpc/database/primitive/bondwire.py +8 -7
- pyedb/grpc/database/primitive/circle.py +4 -4
- pyedb/grpc/database/primitive/padstack_instance.py +191 -23
- pyedb/grpc/database/primitive/path.py +7 -7
- pyedb/grpc/database/primitive/polygon.py +3 -3
- pyedb/grpc/database/primitive/primitive.py +13 -17
- pyedb/grpc/database/primitive/rectangle.py +13 -13
- pyedb/grpc/database/simulation_setup/hfss_general_settings.py +1 -1
- pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +10 -0
- pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +17 -1
- pyedb/grpc/database/siwave.py +31 -25
- pyedb/grpc/database/source_excitations.py +335 -233
- pyedb/grpc/database/stackup.py +165 -148
- pyedb/grpc/database/terminal/bundle_terminal.py +18 -8
- pyedb/grpc/database/terminal/edge_terminal.py +10 -0
- pyedb/grpc/database/terminal/padstack_instance_terminal.py +16 -5
- pyedb/grpc/database/terminal/pingroup_terminal.py +12 -11
- pyedb/grpc/database/terminal/point_terminal.py +4 -3
- pyedb/grpc/database/terminal/terminal.py +9 -9
- pyedb/grpc/database/utility/value.py +109 -0
- pyedb/grpc/database/utility/xml_control_file.py +5 -5
- pyedb/grpc/edb.py +130 -63
- pyedb/grpc/edb_init.py +3 -10
- pyedb/grpc/rpc_session.py +10 -10
- pyedb/libraries/common.py +366 -0
- pyedb/libraries/rf_libraries/base_functions.py +1358 -0
- pyedb/libraries/rf_libraries/planar_antennas.py +628 -0
- pyedb/misc/decorators.py +61 -0
- pyedb/misc/misc.py +0 -13
- pyedb/siwave.py +2 -2
- {pyedb-0.53.0.dist-info → pyedb-0.55.0.dist-info}/METADATA +2 -3
- {pyedb-0.53.0.dist-info → pyedb-0.55.0.dist-info}/RECORD +119 -112
- {pyedb-0.53.0.dist-info → pyedb-0.55.0.dist-info}/WHEEL +0 -0
- {pyedb-0.53.0.dist-info → pyedb-0.55.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -51,7 +51,7 @@ class HFSSGeneralSettings(GrpcHFSSGeneralSettings):
|
|
|
51
51
|
@adaptive_solution_type.setter
|
|
52
52
|
def adaptive_solution_type(self, value):
|
|
53
53
|
if isinstance(value, str):
|
|
54
|
-
if value.lower() == "
|
|
54
|
+
if value.lower() == "single":
|
|
55
55
|
self.adaptive_solution_type = GrpcAdaptType.SINGLE
|
|
56
56
|
elif value.lower() == "multi_frequencies":
|
|
57
57
|
self.adaptive_solution_type = GrpcAdaptType.MULTI_FREQUENCIES
|
|
@@ -43,6 +43,16 @@ class HfssSimulationSetup(GrpcHfssSimulationSetup):
|
|
|
43
43
|
self._pedb = pedb
|
|
44
44
|
self._name = name
|
|
45
45
|
|
|
46
|
+
@property
|
|
47
|
+
def hfss_solver_settings(self):
|
|
48
|
+
"""Legacy compatibility to settings properties."""
|
|
49
|
+
return self.settings.options
|
|
50
|
+
|
|
51
|
+
@property
|
|
52
|
+
def adaptive_settings(self):
|
|
53
|
+
"""Legacy compatibility to general settings."""
|
|
54
|
+
return self.settings.general
|
|
55
|
+
|
|
46
56
|
def set_solution_single_frequency(self, frequency="5GHz", max_num_passes=10, max_delta_s=0.02) -> bool:
|
|
47
57
|
"""Set HFSS single frequency solution.
|
|
48
58
|
Parameters
|
|
@@ -37,6 +37,21 @@ class SiwaveSimulationSetup(GrpcSIWaveSimulationSetup):
|
|
|
37
37
|
super().__init__(edb_object.msg)
|
|
38
38
|
self._pedb = pedb
|
|
39
39
|
|
|
40
|
+
@property
|
|
41
|
+
def advanced_settings(self):
|
|
42
|
+
"""Setup advanced settings."""
|
|
43
|
+
return self.settings.advanced
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def dc_settings(self):
|
|
47
|
+
"""Setup dc settings."""
|
|
48
|
+
return self.settings.dc
|
|
49
|
+
|
|
50
|
+
@property
|
|
51
|
+
def dc_advanced_settings(self):
|
|
52
|
+
"""Setup dc settings."""
|
|
53
|
+
return self.settings.dc_advanced
|
|
54
|
+
|
|
40
55
|
@property
|
|
41
56
|
def type(self) -> str:
|
|
42
57
|
"""Simulation setup type.
|
|
@@ -127,6 +142,7 @@ class SiwaveSimulationSetup(GrpcSIWaveSimulationSetup):
|
|
|
127
142
|
for sweep in self.sweep_data:
|
|
128
143
|
sweep_data.append(sweep)
|
|
129
144
|
self.sweep_data = sweep_data
|
|
145
|
+
return sweep_data[0]
|
|
130
146
|
else:
|
|
131
147
|
start_freq = self._pedb.number_with_units(start_freq, "Hz")
|
|
132
148
|
stop_freq = self._pedb.number_with_units(stop_freq, "Hz")
|
|
@@ -156,7 +172,7 @@ class SiwaveSimulationSetup(GrpcSIWaveSimulationSetup):
|
|
|
156
172
|
sweep_data.append(sweep)
|
|
157
173
|
self.sweep_data = sweep_data
|
|
158
174
|
if len(self.sweep_data) == init_sweep_count + 1:
|
|
159
|
-
return
|
|
175
|
+
return sweep_data[0]
|
|
160
176
|
else:
|
|
161
177
|
self._pedb.logger.error("Failed to add frequency sweep data")
|
|
162
178
|
return False
|
pyedb/grpc/database/siwave.py
CHANGED
|
@@ -25,6 +25,7 @@ This module contains these classes: ``CircuitPort``, ``CurrentSource``, ``EdbSiw
|
|
|
25
25
|
``PinGroup``, ``ResistorSource``, ``Source``, ``SourceType``, and ``VoltageSource``.
|
|
26
26
|
"""
|
|
27
27
|
import os
|
|
28
|
+
from typing import Any, Dict, Optional, Union
|
|
28
29
|
import warnings
|
|
29
30
|
|
|
30
31
|
from ansys.edb.core.database import ProductIdType as GrpcProductIdType
|
|
@@ -57,41 +58,41 @@ class Siwave(object):
|
|
|
57
58
|
>>> edb_siwave = edbapp.siwave
|
|
58
59
|
"""
|
|
59
60
|
|
|
60
|
-
def __init__(self, p_edb):
|
|
61
|
+
def __init__(self, p_edb) -> None:
|
|
61
62
|
self._pedb = p_edb
|
|
62
63
|
|
|
63
64
|
@property
|
|
64
|
-
def _edb(self):
|
|
65
|
+
def _edb(self) -> Any:
|
|
65
66
|
"""EDB object."""
|
|
66
67
|
return self._pedb
|
|
67
68
|
|
|
68
69
|
@property
|
|
69
|
-
def _logger(self):
|
|
70
|
+
def _logger(self) -> Any:
|
|
70
71
|
"""Logger object."""
|
|
71
72
|
return self._pedb.logger
|
|
72
73
|
|
|
73
74
|
@property
|
|
74
|
-
def _active_layout(self):
|
|
75
|
+
def _active_layout(self) -> Any:
|
|
75
76
|
"""Active layout."""
|
|
76
77
|
return self._pedb.active_layout
|
|
77
78
|
|
|
78
79
|
@property
|
|
79
|
-
def _layout(self):
|
|
80
|
+
def _layout(self) -> Any:
|
|
80
81
|
"""Active layout."""
|
|
81
82
|
return self._pedb.layout
|
|
82
83
|
|
|
83
84
|
@property
|
|
84
|
-
def _cell(self):
|
|
85
|
+
def _cell(self) -> Any:
|
|
85
86
|
"""Active cell."""
|
|
86
87
|
return self._pedb.active_cell
|
|
87
88
|
|
|
88
89
|
@property
|
|
89
|
-
def _db(self):
|
|
90
|
+
def _db(self) -> Any:
|
|
90
91
|
"""Active database."""
|
|
91
92
|
return self._pedb.active_db
|
|
92
93
|
|
|
93
94
|
@property
|
|
94
|
-
def excitations(self):
|
|
95
|
+
def excitations(self) -> Dict[str, Any]:
|
|
95
96
|
"""Excitation sources in the layout.
|
|
96
97
|
|
|
97
98
|
Examples
|
|
@@ -103,7 +104,7 @@ class Siwave(object):
|
|
|
103
104
|
return self._pedb.excitations
|
|
104
105
|
|
|
105
106
|
@property
|
|
106
|
-
def sources(self):
|
|
107
|
+
def sources(self) -> Dict[str, Any]:
|
|
107
108
|
"""All sources in the layout.
|
|
108
109
|
|
|
109
110
|
Examples
|
|
@@ -115,7 +116,7 @@ class Siwave(object):
|
|
|
115
116
|
return self._pedb.sources
|
|
116
117
|
|
|
117
118
|
@property
|
|
118
|
-
def probes(self):
|
|
119
|
+
def probes(self) -> Dict[str, Any]:
|
|
119
120
|
"""All probes in the layout.
|
|
120
121
|
|
|
121
122
|
Examples
|
|
@@ -127,7 +128,7 @@ class Siwave(object):
|
|
|
127
128
|
return self._pedb.probes
|
|
128
129
|
|
|
129
130
|
@property
|
|
130
|
-
def pin_groups(self):
|
|
131
|
+
def pin_groups(self) -> Dict[str, Any]:
|
|
131
132
|
"""All layout pin groups.
|
|
132
133
|
|
|
133
134
|
Returns
|
|
@@ -526,8 +527,13 @@ class Siwave(object):
|
|
|
526
527
|
return self._pedb.source_excitation.create_dc_terminal(component_name, net_name, source_name)
|
|
527
528
|
|
|
528
529
|
def create_exec_file(
|
|
529
|
-
self,
|
|
530
|
-
|
|
530
|
+
self,
|
|
531
|
+
add_dc: bool = False,
|
|
532
|
+
add_ac: bool = False,
|
|
533
|
+
add_syz: bool = False,
|
|
534
|
+
export_touchstone: bool = False,
|
|
535
|
+
touchstone_file_path: str = "",
|
|
536
|
+
) -> bool:
|
|
531
537
|
"""Create an executable file.
|
|
532
538
|
|
|
533
539
|
Parameters
|
|
@@ -583,7 +589,7 @@ class Siwave(object):
|
|
|
583
589
|
f.write('ExportTouchstone "{}"\n'.format(touchstone_file_path))
|
|
584
590
|
f.write("SaveSiw\n")
|
|
585
591
|
|
|
586
|
-
return
|
|
592
|
+
return file_name
|
|
587
593
|
|
|
588
594
|
def add_cpa_analysis(self, name=None, siwave_cpa_setup_class=None):
|
|
589
595
|
if not name:
|
|
@@ -598,13 +604,13 @@ class Siwave(object):
|
|
|
598
604
|
|
|
599
605
|
def add_siwave_syz_analysis(
|
|
600
606
|
self,
|
|
601
|
-
accuracy_level=1,
|
|
602
|
-
distribution="linear",
|
|
603
|
-
start_freq=1,
|
|
604
|
-
stop_freq=1e9,
|
|
605
|
-
step_freq=1e6,
|
|
606
|
-
discrete_sweep=False,
|
|
607
|
-
):
|
|
607
|
+
accuracy_level: int = 1,
|
|
608
|
+
distribution: str = "linear",
|
|
609
|
+
start_freq: Union[str, float] = 1,
|
|
610
|
+
stop_freq: Union[str, float] = 1e9,
|
|
611
|
+
step_freq: Union[str, float, int] = 1e6,
|
|
612
|
+
discrete_sweep: bool = False,
|
|
613
|
+
) -> Any:
|
|
608
614
|
"""Add a SIwave AC analysis to EDB.
|
|
609
615
|
|
|
610
616
|
Parameters
|
|
@@ -684,7 +690,7 @@ class Siwave(object):
|
|
|
684
690
|
self.create_exec_file(add_ac=True)
|
|
685
691
|
return setup
|
|
686
692
|
|
|
687
|
-
def add_siwave_dc_analysis(self, name=None):
|
|
693
|
+
def add_siwave_dc_analysis(self, name: Optional[str] = None) -> Any:
|
|
688
694
|
"""Add a Siwave DC analysis in EDB.
|
|
689
695
|
|
|
690
696
|
.. note::
|
|
@@ -1015,7 +1021,7 @@ class Siwave(object):
|
|
|
1015
1021
|
negative_layer,
|
|
1016
1022
|
)
|
|
1017
1023
|
|
|
1018
|
-
def create_impedance_crosstalk_scan(self, scan_type="impedance"):
|
|
1024
|
+
def create_impedance_crosstalk_scan(self, scan_type: str = "impedance") -> "SiwaveScanConfig":
|
|
1019
1025
|
"""Create Siwave crosstalk scan object.
|
|
1020
1026
|
|
|
1021
1027
|
Parameters
|
|
@@ -1035,7 +1041,7 @@ class Siwave(object):
|
|
|
1035
1041
|
return SiwaveScanConfig(self._pedb, scan_type)
|
|
1036
1042
|
|
|
1037
1043
|
@property
|
|
1038
|
-
def icepak_use_minimal_comp_defaults(self):
|
|
1044
|
+
def icepak_use_minimal_comp_defaults(self) -> bool:
|
|
1039
1045
|
"""Icepak default setting.
|
|
1040
1046
|
|
|
1041
1047
|
If ``True``, only resistors are active in Icepak simulation and power dissipation
|
|
@@ -1049,7 +1055,7 @@ class Siwave(object):
|
|
|
1049
1055
|
self._pedb.active_cell.set_product_property(GrpcProductIdType.SIWAVE, 422, value)
|
|
1050
1056
|
|
|
1051
1057
|
@property
|
|
1052
|
-
def icepak_component_file(self):
|
|
1058
|
+
def icepak_component_file(self) -> str:
|
|
1053
1059
|
"""Icepak component file path."""
|
|
1054
1060
|
return self._pedb.active_cell.get_product_property(GrpcProductIdType.SIWAVE, 420).value
|
|
1055
1061
|
|