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.

@@ -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
- ) -> Union[HfssSimulationSetup, SiwaveSimulationSetup, SIWaveDCIRSimulationSetup, RaptorXSimulationSetup]:
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
- self._setups = {}
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
- self._setups[setup.name] = HfssSimulationSetup(self, setup)
2877
+ setups[setup.name] = HfssSimulationSetup(self, setup)
2858
2878
  elif setup_type == "SI_WAVE":
2859
- self._setups[setup.name] = SiwaveSimulationSetup(self, setup)
2879
+ setups[setup.name] = SiwaveSimulationSetup(self, setup)
2860
2880
  elif setup_type == "SI_WAVE_DCIR":
2861
- self._setups[setup.name] = SIWaveDCIRSimulationSetup(self, setup)
2881
+ setups[setup.name] = SIWaveDCIRSimulationSetup(self, setup)
2862
2882
  elif setup_type == "RAPTOR_X":
2863
- self._setups[setup.name] = RaptorXSimulationSetup(self, setup)
2864
- return self._setups
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.3
1
+ Metadata-Version: 2.4
2
2
  Name: pyedb
3
- Version: 0.52.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.3
24
- Requires-Dist: pydantic>=2.6.4,<2.11
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.37 ; extra == "doc"
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.4 ; extra == "doc"
36
- Requires-Dist: jupytext>=1.16.0,<1.17 ; extra == "doc"
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.19 ; extra == "doc"
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.2 ; extra == "tests"
54
- Requires-Dist: pytest>=7.4.0,<8.4 ; extra == "tests"
55
- Requires-Dist: pytest-cov>=4.0.0,<6.1 ; extra == "tests"
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
  [![PyAnsys](https://img.shields.io/badge/Py-Ansys-ffc107.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABDklEQVQ4jWNgoDfg5mD8vE7q/3bpVyskbW0sMRUwofHD7Dh5OBkZGBgW7/3W2tZpa2tLQEOyOzeEsfumlK2tbVpaGj4N6jIs1lpsDAwMJ278sveMY2BgCA0NFRISwqkhyQ1q/Nyd3zg4OBgYGNjZ2ePi4rB5loGBhZnhxTLJ/9ulv26Q4uVk1NXV/f///////69du4Zdg78lx//t0v+3S88rFISInD59GqIH2esIJ8G9O2/XVwhjzpw5EAam1xkkBJn/bJX+v1365hxxuCAfH9+3b9/+////48cPuNehNsS7cDEzMTAwMMzb+Q2u4dOnT2vWrMHu9ZtzxP9vl/69RVpCkBlZ3N7enoDXBwEAAA+YYitOilMVAAAAAElFTkSuQmCC)](https://docs.pyansys.com/)
78
79
  [![PythonVersion](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
79
80
  [![MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
81
+ [![DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/ansys/pyedb)
80
82
 
81
83
  ## What is PyEDB?
82
84