pyedb 0.52.0__py3-none-any.whl → 0.53.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 -1
- pyedb/configuration/cfg_common.py +12 -15
- pyedb/configuration/cfg_data.py +2 -2
- pyedb/configuration/cfg_modeler.py +163 -234
- pyedb/configuration/cfg_stackup.py +62 -249
- pyedb/configuration/configuration.py +271 -170
- pyedb/dotnet/database/components.py +9 -3
- pyedb/dotnet/database/dotnet/database.py +4 -0
- pyedb/dotnet/database/edb_data/layer_data.py +3 -1
- pyedb/dotnet/database/siwave.py +14 -0
- pyedb/dotnet/database/stackup.py +6 -60
- pyedb/dotnet/database/utilities/simulation_setup.py +1 -1
- pyedb/dotnet/database/utilities/siwave_cpa_simulation_setup.py +894 -0
- pyedb/dotnet/database/utilities/siwave_simulation_setup.py +15 -0
- pyedb/dotnet/edb.py +15 -2
- pyedb/generic/design_types.py +29 -0
- pyedb/generic/grpc_warnings.py +5 -0
- pyedb/grpc/database/components.py +102 -81
- pyedb/grpc/database/control_file.py +240 -193
- pyedb/grpc/database/definitions.py +7 -5
- pyedb/grpc/database/modeler.py +105 -77
- pyedb/grpc/database/simulation_setup/siwave_cpa_simulation_setup.py +961 -0
- pyedb/grpc/database/siwave.py +14 -0
- pyedb/grpc/edb.py +70 -7
- pyedb/siwave_core/cpa/simulation_setup_data_model.py +132 -0
- pyedb/siwave_core/product_properties.py +198 -0
- {pyedb-0.52.0.dist-info → pyedb-0.53.0.dist-info}/METADATA +13 -11
- {pyedb-0.52.0.dist-info → pyedb-0.53.0.dist-info}/RECORD +30 -25
- {pyedb-0.52.0.dist-info → pyedb-0.53.0.dist-info}/WHEEL +1 -1
- {pyedb-0.52.0.dist-info → pyedb-0.53.0.dist-info/licenses}/LICENSE +0 -0
pyedb/grpc/database/siwave.py
CHANGED
|
@@ -36,6 +36,9 @@ from ansys.edb.core.simulation_setup.simulation_setup import (
|
|
|
36
36
|
)
|
|
37
37
|
from ansys.edb.core.simulation_setup.simulation_setup import SweepData as GrpcSweepData
|
|
38
38
|
|
|
39
|
+
from pyedb.grpc.database.simulation_setup.siwave_cpa_simulation_setup import (
|
|
40
|
+
SIWaveCPASimulationSetup,
|
|
41
|
+
)
|
|
39
42
|
from pyedb.misc.siw_feature_config.xtalk_scan.scan_config import SiwaveScanConfig
|
|
40
43
|
|
|
41
44
|
|
|
@@ -582,6 +585,17 @@ class Siwave(object):
|
|
|
582
585
|
|
|
583
586
|
return True if os.path.exists(file_name) else False
|
|
584
587
|
|
|
588
|
+
def add_cpa_analysis(self, name=None, siwave_cpa_setup_class=None):
|
|
589
|
+
if not name:
|
|
590
|
+
from pyedb.generic.general_methods import generate_unique_name
|
|
591
|
+
|
|
592
|
+
if not siwave_cpa_setup_class:
|
|
593
|
+
name = generate_unique_name("cpa_setup")
|
|
594
|
+
else:
|
|
595
|
+
name = siwave_cpa_setup_class.name
|
|
596
|
+
cpa_setup = SIWaveCPASimulationSetup(self._pedb, name=name, siwave_cpa_setup_class=siwave_cpa_setup_class)
|
|
597
|
+
return cpa_setup
|
|
598
|
+
|
|
585
599
|
def add_siwave_syz_analysis(
|
|
586
600
|
self,
|
|
587
601
|
accuracy_level=1,
|
pyedb/grpc/edb.py
CHANGED
|
@@ -70,6 +70,9 @@ import warnings
|
|
|
70
70
|
from zipfile import ZipFile as zpf
|
|
71
71
|
|
|
72
72
|
from ansys.edb.core.geometry.polygon_data import PolygonData as GrpcPolygonData
|
|
73
|
+
from ansys.edb.core.hierarchy.layout_component import (
|
|
74
|
+
LayoutComponent as GrpcLayoutComponent,
|
|
75
|
+
)
|
|
73
76
|
import ansys.edb.core.layout.cell
|
|
74
77
|
from ansys.edb.core.simulation_setup.siwave_dcir_simulation_setup import (
|
|
75
78
|
SIWaveDCIRSimulationSetup as GrpcSIWaveDCIRSimulationSetup,
|
|
@@ -111,6 +114,9 @@ from pyedb.grpc.database.simulation_setup.hfss_simulation_setup import (
|
|
|
111
114
|
from pyedb.grpc.database.simulation_setup.raptor_x_simulation_setup import (
|
|
112
115
|
RaptorXSimulationSetup,
|
|
113
116
|
)
|
|
117
|
+
from pyedb.grpc.database.simulation_setup.siwave_cpa_simulation_setup import (
|
|
118
|
+
SIWaveCPASimulationSetup,
|
|
119
|
+
)
|
|
114
120
|
from pyedb.grpc.database.simulation_setup.siwave_dcir_simulation_setup import (
|
|
115
121
|
SIWaveDCIRSimulationSetup,
|
|
116
122
|
)
|
|
@@ -2838,7 +2844,16 @@ class Edb(EdbInit):
|
|
|
2838
2844
|
@property
|
|
2839
2845
|
def setups(
|
|
2840
2846
|
self,
|
|
2841
|
-
) ->
|
|
2847
|
+
) -> dict[
|
|
2848
|
+
str,
|
|
2849
|
+
Union[
|
|
2850
|
+
HfssSimulationSetup,
|
|
2851
|
+
SiwaveSimulationSetup,
|
|
2852
|
+
SIWaveDCIRSimulationSetup,
|
|
2853
|
+
RaptorXSimulationSetup,
|
|
2854
|
+
SIWaveCPASimulationSetup,
|
|
2855
|
+
],
|
|
2856
|
+
]:
|
|
2842
2857
|
"""Get the dictionary of all EDB HFSS and SIwave setups.
|
|
2843
2858
|
|
|
2844
2859
|
Returns
|
|
@@ -2847,21 +2862,34 @@ class Edb(EdbInit):
|
|
|
2847
2862
|
Dict[str,:class:`SiwaveSimulationSetup`] or
|
|
2848
2863
|
Dict[str,:class:`SIWaveDCIRSimulationSetup`] or
|
|
2849
2864
|
Dict[str,:class:`RaptorXSimulationSetup`]
|
|
2865
|
+
Dict[str,:class:`SIWaveCPASimulationSetup`]
|
|
2850
2866
|
|
|
2851
2867
|
"""
|
|
2852
|
-
|
|
2868
|
+
from ansys.edb.core.database import ProductIdType as GrpcProductIdType
|
|
2869
|
+
|
|
2870
|
+
from pyedb.siwave_core.product_properties import SIwaveProperties
|
|
2871
|
+
|
|
2872
|
+
setups = {}
|
|
2853
2873
|
for setup in self.active_cell.simulation_setups:
|
|
2854
2874
|
setup = setup.cast()
|
|
2855
2875
|
setup_type = setup.type.name
|
|
2856
2876
|
if setup_type == "HFSS":
|
|
2857
|
-
|
|
2877
|
+
setups[setup.name] = HfssSimulationSetup(self, setup)
|
|
2858
2878
|
elif setup_type == "SI_WAVE":
|
|
2859
|
-
|
|
2879
|
+
setups[setup.name] = SiwaveSimulationSetup(self, setup)
|
|
2860
2880
|
elif setup_type == "SI_WAVE_DCIR":
|
|
2861
|
-
|
|
2881
|
+
setups[setup.name] = SIWaveDCIRSimulationSetup(self, setup)
|
|
2862
2882
|
elif setup_type == "RAPTOR_X":
|
|
2863
|
-
|
|
2864
|
-
|
|
2883
|
+
setups[setup.name] = RaptorXSimulationSetup(self, setup)
|
|
2884
|
+
try:
|
|
2885
|
+
cpa_setup_name = self.active_cell.get_product_property(
|
|
2886
|
+
GrpcProductIdType.SIWAVE, SIwaveProperties.CPA_SIM_NAME
|
|
2887
|
+
).value
|
|
2888
|
+
except:
|
|
2889
|
+
cpa_setup_name = ""
|
|
2890
|
+
if cpa_setup_name:
|
|
2891
|
+
setups[cpa_setup_name] = SIWaveCPASimulationSetup(self, cpa_setup_name)
|
|
2892
|
+
return setups
|
|
2865
2893
|
|
|
2866
2894
|
@property
|
|
2867
2895
|
def hfss_setups(self) -> dict[str, HfssSimulationSetup]:
|
|
@@ -3834,3 +3862,38 @@ class Edb(EdbInit):
|
|
|
3834
3862
|
else:
|
|
3835
3863
|
self.logger.info("Comparison correctly completed")
|
|
3836
3864
|
return True
|
|
3865
|
+
|
|
3866
|
+
def import_layout_component(self, component_path) -> GrpcLayoutComponent:
|
|
3867
|
+
"""Import a layout component inside the current layout and place it at the origin.
|
|
3868
|
+
This feature is only supported with PyEDB gRPC. Encryption is not yet supported.
|
|
3869
|
+
|
|
3870
|
+
Parameters
|
|
3871
|
+
----------
|
|
3872
|
+
component_path : str
|
|
3873
|
+
Layout component path (.aedbcomp file).
|
|
3874
|
+
|
|
3875
|
+
Returns
|
|
3876
|
+
-------
|
|
3877
|
+
class:`LayoutComponent <ansys.edb.core.hierarchy.layout_component.LayoutComponent>`.
|
|
3878
|
+
"""
|
|
3879
|
+
|
|
3880
|
+
return GrpcLayoutComponent.import_layout_component(layout=self.active_layout, aedb_comp_path=component_path)
|
|
3881
|
+
|
|
3882
|
+
def export_layout_component(self, component_path) -> bool:
|
|
3883
|
+
"""Export a layout component from the current layout.
|
|
3884
|
+
This feature is only supported with PyEDB gRPC. Encryption is not yet supported.
|
|
3885
|
+
|
|
3886
|
+
Parameters
|
|
3887
|
+
----------
|
|
3888
|
+
component_path : str
|
|
3889
|
+
Layout component path (.aedbcomp file).
|
|
3890
|
+
|
|
3891
|
+
Returns
|
|
3892
|
+
-------
|
|
3893
|
+
bool
|
|
3894
|
+
`True` if layout component is successfully exported, `False` otherwise.
|
|
3895
|
+
"""
|
|
3896
|
+
|
|
3897
|
+
return GrpcLayoutComponent.export_layout_component(
|
|
3898
|
+
layout=self.active_layout, output_aedb_comp_path=component_path
|
|
3899
|
+
)
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
from typing import Dict, List
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, Field
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class SolverOptions(BaseModel):
|
|
7
|
+
"""Configuration options for the SI-Wave solver.
|
|
8
|
+
|
|
9
|
+
Attributes:
|
|
10
|
+
extraction_mode (str): Mode of extraction, defaults to "si"
|
|
11
|
+
custom_refinement (bool): Enable custom refinement settings, defaults to False
|
|
12
|
+
extraction_frequency (str): Frequency for extraction, defaults to "10Ghz"
|
|
13
|
+
compute_capacitance (bool): Enable capacitance computation, defaults to True
|
|
14
|
+
compute_dc_parameters (bool): Enable DC parameters computation, defaults to True
|
|
15
|
+
compute_ac_rl (bool): Enable AC RL computation, defaults to True
|
|
16
|
+
ground_power_ground_nets_for_si (bool): Ground power/ground nets for SI analysis, defaults to False
|
|
17
|
+
small_hole_diameter (str): Small hole diameter setting, defaults to "auto"
|
|
18
|
+
cg_max_passes (int): Maximum passes for CG computation, defaults to 10
|
|
19
|
+
cg_percent_error (float): Percentage error threshold for CG computation, defaults to 0.02
|
|
20
|
+
cg_percent_refinement_per_pass (float): Refinement percentage per pass for CG, defaults to 0.33
|
|
21
|
+
rl_max_passes (int): Maximum passes for RL computation, defaults to 10
|
|
22
|
+
rl_percent_error (float): Percentage error threshold for RL computation, defaults to 0.02
|
|
23
|
+
rl_percent_refinement_per_pass (float): Refinement percentage per pass for RL, defaults to 0.33
|
|
24
|
+
compute_dc_rl (bool): Enable DC RL computation, defaults to True
|
|
25
|
+
compute_dc_cg (bool): Enable DC CG computation, defaults to True
|
|
26
|
+
return_path_net_for_loop_parameters (bool): Include return path net for loop parameters, defaults to True
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
extraction_mode: str = "si"
|
|
30
|
+
custom_refinement: bool = False
|
|
31
|
+
extraction_frequency: str = "10Ghz"
|
|
32
|
+
compute_capacitance: bool = True
|
|
33
|
+
compute_dc_parameters: bool = True
|
|
34
|
+
compute_ac_rl: bool = True
|
|
35
|
+
ground_power_ground_nets_for_si: bool = False
|
|
36
|
+
small_hole_diameter: str = "auto"
|
|
37
|
+
cg_max_passes: int = 10
|
|
38
|
+
cg_percent_error: float = 0.02
|
|
39
|
+
cg_percent_refinement_per_pass: float = 0.33
|
|
40
|
+
rl_max_passes: int = 10
|
|
41
|
+
rl_percent_error: float = 0.02
|
|
42
|
+
rl_percent_refinement_per_pass: float = 0.33
|
|
43
|
+
compute_dc_rl: bool = True
|
|
44
|
+
compute_dc_cg: bool = True
|
|
45
|
+
return_path_net_for_loop_parameters: bool = True
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class Vrm(BaseModel):
|
|
49
|
+
"""Voltage Regulator Module configuration.
|
|
50
|
+
|
|
51
|
+
Attributes:
|
|
52
|
+
name (str): Name of the VRM, defaults to empty string
|
|
53
|
+
voltage (float): Voltage value, defaults to 0.0
|
|
54
|
+
power_net (str): Power net identifier, defaults to empty string
|
|
55
|
+
reference_net (str): Reference net identifier, defaults to empty string
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
name: str = ""
|
|
59
|
+
voltage: float = 0.0
|
|
60
|
+
power_net: str = ""
|
|
61
|
+
reference_net: str = ""
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
class ChannelSetup(BaseModel):
|
|
65
|
+
"""Channel configuration setup.
|
|
66
|
+
|
|
67
|
+
Attributes:
|
|
68
|
+
die_name (str): Name of the die, defaults to empty string
|
|
69
|
+
pin_grouping_mode (str): Mode for pin grouping, defaults to "perpin"
|
|
70
|
+
channel_component_exposure (Dict[str, bool]): Component exposure settings
|
|
71
|
+
vrm_setup (List[Vrm]): List of VRM configurations
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
die_name: str = ""
|
|
75
|
+
pin_grouping_mode: str = "perpin"
|
|
76
|
+
channel_component_exposure: Dict[str, bool] = Field(default_factory=dict)
|
|
77
|
+
vrm_setup: List[Vrm] = Field(default_factory=list)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
class SIwaveCpaSetup(BaseModel):
|
|
81
|
+
"""Main configuration class for SI-Wave CPA (Channel Parameter Analyzer) setup.
|
|
82
|
+
|
|
83
|
+
Attributes:
|
|
84
|
+
name (str): Name of the setup, defaults to empty string
|
|
85
|
+
mode (str): Operation mode, defaults to "channel"
|
|
86
|
+
model_type (str): Type of model, defaults to "rlcg"
|
|
87
|
+
use_q3d_solver (bool): Use Q3D solver flag, defaults to True
|
|
88
|
+
net_processing_mode (str): Net processing mode, defaults to "userspecified"
|
|
89
|
+
return_path_net_for_loop_parameters (bool): Include return path net for loop parameters, defaults to True
|
|
90
|
+
channel_setup (ChannelSetup): Channel configuration settings
|
|
91
|
+
solver_options (SolverOptions): Solver configuration options
|
|
92
|
+
nets_to_process (List[str]): List of nets to process
|
|
93
|
+
"""
|
|
94
|
+
|
|
95
|
+
name: str = ""
|
|
96
|
+
mode: str = "channel"
|
|
97
|
+
model_type: str = "rlcg"
|
|
98
|
+
use_q3d_solver: bool = True
|
|
99
|
+
net_processing_mode: str = "userspecified"
|
|
100
|
+
return_path_net_for_loop_parameters: bool = True
|
|
101
|
+
channel_setup: ChannelSetup = Field(default_factory=ChannelSetup)
|
|
102
|
+
solver_options: SolverOptions = Field(default_factory=SolverOptions)
|
|
103
|
+
nets_to_process: List[str] = Field(default_factory=list)
|
|
104
|
+
|
|
105
|
+
@classmethod
|
|
106
|
+
def from_dict(cls, data: Dict) -> "SIwaveCpaSetup":
|
|
107
|
+
"""Convert dictionary to SIwaveCpaSetup object.
|
|
108
|
+
|
|
109
|
+
Args:
|
|
110
|
+
data (Dict): Dictionary containing SIwaveCpaSetup configuration
|
|
111
|
+
|
|
112
|
+
Returns:
|
|
113
|
+
SIwaveCpaSetup: New instance created from the dictionary
|
|
114
|
+
"""
|
|
115
|
+
if "channel_setup" in data:
|
|
116
|
+
data["channel_setup"] = ChannelSetup(**data["channel_setup"])
|
|
117
|
+
if "solver_options" in data:
|
|
118
|
+
data["solver_options"] = SolverOptions(**data["solver_options"])
|
|
119
|
+
return cls(**data)
|
|
120
|
+
|
|
121
|
+
def to_dict(self) -> Dict:
|
|
122
|
+
"""Convert SIwaveCpaSetup object to dictionary.
|
|
123
|
+
|
|
124
|
+
Returns:
|
|
125
|
+
Dict: Dictionary representation of the SIwaveCpaSetup instance
|
|
126
|
+
"""
|
|
127
|
+
data = self.model_dump()
|
|
128
|
+
if self.channel_setup:
|
|
129
|
+
data["channel_setup"] = self.channel_setup.model_dump()
|
|
130
|
+
if self.solver_options:
|
|
131
|
+
data["solver_options"] = self.solver_options.model_dump()
|
|
132
|
+
return data
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
class SIwaveProperties:
|
|
2
|
+
# General attributes
|
|
3
|
+
PIN_GROUP = 1
|
|
4
|
+
PART_NAME = 2
|
|
5
|
+
REF_DES_NAME = 3
|
|
6
|
+
PIN_NAME = 4
|
|
7
|
+
INTER_COMPONENT_PIN_GROUP = 5
|
|
8
|
+
|
|
9
|
+
# DC IR simulation attributes
|
|
10
|
+
DCIR_SIM_NAME = 100
|
|
11
|
+
DCIR_INIT_MESH_MAX_EDGE_LEN = 101
|
|
12
|
+
DCIR_MESH_BWS = 102
|
|
13
|
+
DCIR_MESH_VIAS = 103
|
|
14
|
+
DCIR_NUM_BW_FACETS = 104
|
|
15
|
+
DCIR_NUM_VIA_FACETS = 105
|
|
16
|
+
DCIR_ADAPTIVE_SOLVE = 106
|
|
17
|
+
DCIR_MIN_NUM_PASSES = 107
|
|
18
|
+
DCIR_MAX_NUM_PASSES = 108
|
|
19
|
+
DCIR_LOCAL_REFINEMENT = 109
|
|
20
|
+
DCIR_ENERGY_ERROR = 110
|
|
21
|
+
DCIR_REFINE_BWS = 111
|
|
22
|
+
DCIR_REFINE_VIAS = 112
|
|
23
|
+
DCIR_PLOT_JV = 113
|
|
24
|
+
DCIR_CKT_ELEM_CONTACT_R = 114
|
|
25
|
+
DCIR_ICEPAK_TEMP_FILE_PATH = 115
|
|
26
|
+
SOURCE_NEG_TERMINALS_TO_GROUND = 116
|
|
27
|
+
SOURCE_POS_TERMINALS_TO_GROUND = 117
|
|
28
|
+
DCIR_MIN_DC_PLANE_AREA_TO_MESH = 118
|
|
29
|
+
DCIR_MIN_DC_VOID_AREA_TO_MESH = 119
|
|
30
|
+
DCIR_COMPUTE_L = 120
|
|
31
|
+
|
|
32
|
+
# General simulation attributes
|
|
33
|
+
NUM_CPUS_TO_USE = 200
|
|
34
|
+
USE_HPC_LICENSE = 201
|
|
35
|
+
HPC_LICENSE_VENDOR = 202
|
|
36
|
+
|
|
37
|
+
# SYZ simulation attributes
|
|
38
|
+
SYZ_COUPLING_COPLANE = 300
|
|
39
|
+
SYZ_COUPLING_INTRA_PLANE = 301
|
|
40
|
+
SYZ_COUPLING_SPLIT_PLANE = 302
|
|
41
|
+
SYZ_COUPLING_CAVITY = 303
|
|
42
|
+
SYZ_COUPLING_TRACE = 304
|
|
43
|
+
SYZ_COUPLING_XTALK_THRESH = 305
|
|
44
|
+
SY_ZMIN_VOID_MESH = 306
|
|
45
|
+
SYZ_MESH_REFINEMENT = 307
|
|
46
|
+
SYZ_TRACE_RETURN_CURRENT = 308
|
|
47
|
+
SYZ_INCLUDE_SOURCE_PARASITICS = 309
|
|
48
|
+
SYZ_USE_INF_GROUND_PLANE = 310
|
|
49
|
+
SYZ_INF_GROUND_PLANE_DIST = 311
|
|
50
|
+
SYZ_PERFORM_ERC = 312
|
|
51
|
+
SYZ_EXCLUDE_NON_FUNCTIONAL_PADS = 313
|
|
52
|
+
|
|
53
|
+
# Icepak simulation attributes
|
|
54
|
+
|
|
55
|
+
ICEPAK_SIM_NAME = 400
|
|
56
|
+
ICEPAK_DC_SIM_NAME = 401
|
|
57
|
+
ICEPAK_MESH_FIDELITY = 402
|
|
58
|
+
ICEPAK_CAB_ABOVE_PERCENT = 403
|
|
59
|
+
ICEPAK_CAB_BELOW_PERCENT = 404
|
|
60
|
+
ICEPAK_CAB_HORIZ_PERCENT = 405
|
|
61
|
+
ICEPAK_FLOW_STYLE = 406
|
|
62
|
+
|
|
63
|
+
ICEPAK_FLOW_SPEED = 407
|
|
64
|
+
ICEPAK_FLOW_DIR = 408
|
|
65
|
+
ICEPAK_FLOW_TEMP = 409
|
|
66
|
+
|
|
67
|
+
ICEPAK_COND_FLOW_SPEED_TOP = 410
|
|
68
|
+
ICEPAK_COND_FLOW_SPEED_BOTTOM = 411
|
|
69
|
+
ICEPAK_COND_FLOW_DIR_TOP = 412
|
|
70
|
+
ICEPAK_COND_FLOW_DIR_BOTTOM = 413
|
|
71
|
+
ICEPAK_COND_TEMP_TOP = 414
|
|
72
|
+
ICEPAK_COND_TEMP_BOTTOM = 415
|
|
73
|
+
|
|
74
|
+
ICEPAK_GRAV_X = 416
|
|
75
|
+
ICEPAK_GRAV_Y = 417
|
|
76
|
+
ICEPAK_GRAV_Z = 418
|
|
77
|
+
ICEPAK_AMBIENT_TEMP = 419
|
|
78
|
+
|
|
79
|
+
ICEPAK_COMPONENT_FILE = 420
|
|
80
|
+
ICEPAK_BRD_OUTLINE_FIDELITY_MM = 421
|
|
81
|
+
ICEPAK_USE_MINIMAL_COMP_DEFAULTS = 422
|
|
82
|
+
|
|
83
|
+
# PSI simulation attributes
|
|
84
|
+
|
|
85
|
+
PSI_AC_SIM_NAME = 500
|
|
86
|
+
PSI_AC_SWEEP_STR = 501
|
|
87
|
+
|
|
88
|
+
PSI_SYZ_SIM_NAME = 502
|
|
89
|
+
PSI_SYZ_SWEEP_STR = 503
|
|
90
|
+
PSI_SYZ_INTERPOLATING = 504
|
|
91
|
+
PSI_SYZ_FAST_SWP = 505
|
|
92
|
+
PSI_SYZ_ADAPTIVE_SAMPLING = 506
|
|
93
|
+
PSI_SYZ_ENFORCE_DC = 507
|
|
94
|
+
PSI_SYZ_PORT_TYPE = 508
|
|
95
|
+
|
|
96
|
+
PSI_DISTRIBUTED = 509
|
|
97
|
+
PSI_NUM_CPUS = 510
|
|
98
|
+
PSI_USE_HPC = 511
|
|
99
|
+
PSI_HPC_LICENSE_TYPE = 512
|
|
100
|
+
PSI_SIM_SERVER_NAME = 513
|
|
101
|
+
PSI_SIM_SERVER_PORT = 514
|
|
102
|
+
PSI_SIMULATION_PREFERENCE = 515
|
|
103
|
+
PSI_MODEL_TYPE = 516
|
|
104
|
+
PSI_ENHANCED_BW_MODELING = 517
|
|
105
|
+
PSI_SURFACE_ROUGHNESS_MODEL = 518
|
|
106
|
+
PSI_RMS_ROUGHNESS = 519
|
|
107
|
+
PSI_TEMP_WORKING_DIR = 520
|
|
108
|
+
PSI_IGNORE_DUMMY_NETS = 521
|
|
109
|
+
PSI_PERFORM_ERC = 522
|
|
110
|
+
PSI_EXCLUDE_NONFUNCTIONAL_PADS = 523
|
|
111
|
+
PSI_AUTO_NET_SELECT = 524
|
|
112
|
+
PSI_IMPROVED_LOW_FREQ_RESIST = 525
|
|
113
|
+
PSI_SMALL_HOLE_SIZE = 526
|
|
114
|
+
PSI_SIGNAL_NET_ERROR_TOL = 527
|
|
115
|
+
PSI_CONDUCTOR_MODELING = 528
|
|
116
|
+
PSI_IMPROVED_METAL_LOSS = 529
|
|
117
|
+
PSI_IMPROVED_DIELECTRIC_FILL = 530
|
|
118
|
+
PSI_TOP_FILL_MATERIAL = 531
|
|
119
|
+
PSI_BOTTOM_FILL_MATERIAL = 532
|
|
120
|
+
PSI_PCB_MATERIAL = 533
|
|
121
|
+
PSI_INCLUDE_METAL_PLANE1 = 534
|
|
122
|
+
PSI_INCLUDE_METAL_PLANE2 = 535
|
|
123
|
+
PSI_FLOAT_METAL_PLANE1 = 536
|
|
124
|
+
PSI_FLOAT_METAL_PLANE2 = 537
|
|
125
|
+
PSI_H1 = 538
|
|
126
|
+
PSI_H2 = 539
|
|
127
|
+
|
|
128
|
+
# CPA simulation attributes
|
|
129
|
+
|
|
130
|
+
CPA_SIM_NAME = 600
|
|
131
|
+
CPA_CHANNEL_SETUP = 601 # channel = 1, individual source/sink = 0
|
|
132
|
+
CPA_ESD_R_MODEL = 602 # ESD R model = 1, RLCG model = 0
|
|
133
|
+
CPA_USE_Q3D_SOLVER = 603
|
|
134
|
+
CPA_NET_PROCESSING_MODE = 604
|
|
135
|
+
CPA_NETS_TO_PROCESS = 605
|
|
136
|
+
CPA_CHANNEL_DIE_NAME = 610
|
|
137
|
+
CPA_CHANNEL_PIN_GROUPING_MODE = 611 # per-pin = -1, die pin grouping = 1, PLOC = 0
|
|
138
|
+
CPA_CHANNEL_COMPONENT_EXPOSURE_CONFIG = 612
|
|
139
|
+
CPA_CHANNEL_VRM_SETUP = 613
|
|
140
|
+
CPA_REPORT_EXPORT_PATH = 614
|
|
141
|
+
CPA_RLCG_TABLE_EXPORT_PATH = 615
|
|
142
|
+
|
|
143
|
+
CPA_EXTRACTION_MODE = 616 # 0 => optimal PI, 1 => optimal SI
|
|
144
|
+
CPA_CUSTOM_REFINEMENT = 617
|
|
145
|
+
CPA_EXTRACTION_FREQUENCY = 618
|
|
146
|
+
CPA_COMPUTE_CAPACITANCE = 619
|
|
147
|
+
CPA_COMPUTE_DC_PARAMS = 620
|
|
148
|
+
CPA_DC_PARAMS_COMPUTE_RL = 621
|
|
149
|
+
CPA_DC_PARAMS_COMPUTE_CG = 622
|
|
150
|
+
CPA_AC_PARAMS_COMPUTE_RL = 623
|
|
151
|
+
CPA_GROUND_PG_NETS_FOR_SI = 624
|
|
152
|
+
CPA_AUTO_DETECT_SMALL_HOLES = 625
|
|
153
|
+
CPA_SMALL_HOLE_DIAMETER = 626
|
|
154
|
+
CPA_MODEL_TYPE = 627
|
|
155
|
+
CPA_ADAPTIVE_REFINEMENT_CG_MAX_PASSES = 628
|
|
156
|
+
CPA_ADAPTIVE_REFINEMENT_CG_PERCENT_ERROR = 629
|
|
157
|
+
CPA_ADAPTIVE_REFINEMENT_CG_PERCENT_REFINEMENT_PER_PASS = 630
|
|
158
|
+
CPA_ADAPTIVE_REFINEMENT_RL_MAX_PASSES = 631
|
|
159
|
+
CPA_ADAPTIVE_REFINEMENT_RL_PERCENT_ERROR = 632
|
|
160
|
+
CPA_ADAPTIVE_REFINEMENT_RL_PERCENT_REFINEMENT_PER_PASS = 633
|
|
161
|
+
CPA_MIN_PLANE_AREA_TO_MESH = 634
|
|
162
|
+
CPA_MIN_VOID_AREA_TO_MESH = 635
|
|
163
|
+
CPA_VERTEX_SNAP_THRESHOLD = 636
|
|
164
|
+
|
|
165
|
+
CPA_TERMINAL_TYPE = 640
|
|
166
|
+
CPA_PLOC_CONFIG = 641
|
|
167
|
+
CPA_RETURN_PATH_NET_FOR_LOOP_PARAMS = 642
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
class AttribIndex:
|
|
171
|
+
FROM_GROUP_NAME = 0
|
|
172
|
+
FROM_NET_NAME = 1
|
|
173
|
+
FROM_PIN_NAME = 2
|
|
174
|
+
FROM_PINS_ON_NET_NAME = 3
|
|
175
|
+
FROM_REFDES_NAME = 4
|
|
176
|
+
TO_GROUP_NAME = 5
|
|
177
|
+
TO_NET_NAME = 6
|
|
178
|
+
TO_PIN_NAME = 7
|
|
179
|
+
TO_PINS_ON_NET_NAME = 8
|
|
180
|
+
TO_REFDES_NAME = 9
|
|
181
|
+
TO_SOURCE_TYPE = 10
|
|
182
|
+
TO_SOURCE_MAG = 11
|
|
183
|
+
TO_RLC_TYPE = 12
|
|
184
|
+
TO_RLC_MAG = 13
|
|
185
|
+
REF_DES_NAME = 14
|
|
186
|
+
PIN_NAME = 15
|
|
187
|
+
PINS_ON_NET_NAME = 16
|
|
188
|
+
TERM_TYPE = 17
|
|
189
|
+
PIN_REGEX = 18
|
|
190
|
+
PART_REGEX = 19
|
|
191
|
+
REFDES_REGEX = 20
|
|
192
|
+
NET_REGEX = 21
|
|
193
|
+
FROM_PIN_ON_NET_NAME = 22
|
|
194
|
+
TO_PIN_ON_NET_NAME = 23
|
|
195
|
+
LAYER_NAME = 24
|
|
196
|
+
X_POS = 25
|
|
197
|
+
Y_POS = 26
|
|
198
|
+
NUM_ATTRIBS = 27
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: pyedb
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.53.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>
|
|
@@ -15,13 +15,14 @@ Classifier: Programming Language :: Python :: 3.8
|
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.9
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
License-File: LICENSE
|
|
18
19
|
Requires-Dist: cffi>=1.16.0,<1.18; platform_system=='Linux'
|
|
19
20
|
Requires-Dist: pywin32 >= 303;platform_system=='Windows'
|
|
20
21
|
Requires-Dist: ansys-pythonnet >= 3.1.0rc4
|
|
21
22
|
Requires-Dist: dotnetcore2 ==3.1.23;platform_system=='Linux'
|
|
22
23
|
Requires-Dist: numpy>=1.20.0,<3
|
|
23
|
-
Requires-Dist: pandas>=1.1.0,<2.
|
|
24
|
-
Requires-Dist: pydantic>=2.6.4,<2.
|
|
24
|
+
Requires-Dist: pandas>=1.1.0,<2.4
|
|
25
|
+
Requires-Dist: pydantic>=2.6.4,<2.12
|
|
25
26
|
Requires-Dist: Rtree >= 1.2.0
|
|
26
27
|
Requires-Dist: toml == 0.10.2
|
|
27
28
|
Requires-Dist: shapely
|
|
@@ -30,10 +31,10 @@ Requires-Dist: ansys-edb-core>=0.2.0.dev0
|
|
|
30
31
|
Requires-Dist: ansys-api-edb>=0.2.0.dev0
|
|
31
32
|
Requires-Dist: psutil
|
|
32
33
|
Requires-Dist: ansys-sphinx-theme>=1.0.0,<1.5 ; extra == "doc"
|
|
33
|
-
Requires-Dist: imageio>=2.30.0,<2.
|
|
34
|
+
Requires-Dist: imageio>=2.30.0,<2.38 ; extra == "doc"
|
|
34
35
|
Requires-Dist: ipython>=8.13.0,<8.32 ; extra == "doc"
|
|
35
|
-
Requires-Dist: jupyterlab>=4.0.0,<4.
|
|
36
|
-
Requires-Dist: jupytext>=1.16.0,<1.
|
|
36
|
+
Requires-Dist: jupyterlab>=4.0.0,<4.5 ; extra == "doc"
|
|
37
|
+
Requires-Dist: jupytext>=1.16.0,<1.18 ; extra == "doc"
|
|
37
38
|
Requires-Dist: matplotlib>=3.5.0,<3.11 ; extra == "doc"
|
|
38
39
|
Requires-Dist: nbsphinx>=0.9.0,<0.10 ; extra == "doc"
|
|
39
40
|
Requires-Dist: nbconvert < 7.17 ; extra == "doc"
|
|
@@ -44,15 +45,15 @@ Requires-Dist: Sphinx>=7.1.0,<8.2 ; extra == "doc"
|
|
|
44
45
|
Requires-Dist: sphinx-autobuild==2021.3.14 ; extra == "doc" and ( python_version == '3.8')
|
|
45
46
|
Requires-Dist: sphinx-autobuild==2024.10.3 ; extra == "doc" and ( python_version > '3.8')
|
|
46
47
|
Requires-Dist: sphinx-copybutton>=0.5.0,<0.6 ; extra == "doc"
|
|
47
|
-
Requires-Dist: sphinx-gallery>=0.14.0,<0.
|
|
48
|
+
Requires-Dist: sphinx-gallery>=0.14.0,<0.20 ; extra == "doc"
|
|
48
49
|
Requires-Dist: sphinx_design>=0.4.0,<0.7 ; extra == "doc"
|
|
49
50
|
Requires-Dist: shapely ; extra == "doc"
|
|
50
51
|
Requires-Dist: matplotlib>=3.5.0,<3.11 ; extra == "full"
|
|
51
52
|
Requires-Dist: shapely ; extra == "full"
|
|
52
53
|
Requires-Dist: matplotlib>=3.5.0,<3.11 ; extra == "tests"
|
|
53
|
-
Requires-Dist: mock>=5.1.0,<5.
|
|
54
|
-
Requires-Dist: pytest>=7.4.0,<8.
|
|
55
|
-
Requires-Dist: pytest-cov>=4.0.0,<6.
|
|
54
|
+
Requires-Dist: mock>=5.1.0,<5.3 ; extra == "tests"
|
|
55
|
+
Requires-Dist: pytest>=7.4.0,<8.5 ; extra == "tests"
|
|
56
|
+
Requires-Dist: pytest-cov>=4.0.0,<6.3 ; extra == "tests"
|
|
56
57
|
Requires-Dist: pytest-xdist>=3.5.0,<3.7 ; extra == "tests"
|
|
57
58
|
Requires-Dist: scikit-rf ; extra == "tests"
|
|
58
59
|
Requires-Dist: shapely ; extra == "tests"
|
|
@@ -77,6 +78,7 @@ Provides-Extra: tests
|
|
|
77
78
|
[](https://docs.pyansys.com/)
|
|
78
79
|
[](https://www.python.org/downloads/)
|
|
79
80
|
[](https://opensource.org/licenses/MIT)
|
|
81
|
+
[](https://deepwiki.com/ansys/pyedb)
|
|
80
82
|
|
|
81
83
|
## What is PyEDB?
|
|
82
84
|
|