pyedb 0.49.0__py3-none-any.whl → 0.50.1__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_modeler.py +42 -11
- pyedb/configuration/cfg_ports_sources.py +9 -1
- pyedb/dotnet/database/cell/hierarchy/component.py +6 -6
- pyedb/dotnet/database/components.py +3 -3
- pyedb/dotnet/database/edb_data/padstacks_data.py +13 -0
- pyedb/dotnet/database/edb_data/primitives_data.py +3 -3
- pyedb/dotnet/database/edb_data/variables.py +3 -3
- pyedb/dotnet/database/materials.py +16 -16
- pyedb/dotnet/database/modeler.py +38 -4
- pyedb/dotnet/database/sim_setup_data/data/settings.py +28 -0
- pyedb/dotnet/database/stackup.py +1 -0
- pyedb/dotnet/database/utilities/hfss_simulation_setup.py +5 -6
- pyedb/dotnet/edb.py +22 -20
- pyedb/extensions/__init__.py +0 -0
- pyedb/extensions/via_design_backend.py +681 -0
- pyedb/grpc/database/components.py +537 -686
- pyedb/grpc/database/control_file.py +458 -149
- pyedb/grpc/database/definition/component_def.py +17 -14
- pyedb/grpc/database/definition/materials.py +60 -60
- pyedb/grpc/database/definition/package_def.py +8 -8
- pyedb/grpc/database/definition/padstack_def.py +31 -33
- pyedb/grpc/database/definitions.py +6 -4
- pyedb/grpc/database/geometry/arc_data.py +5 -5
- pyedb/grpc/database/geometry/point_3d_data.py +3 -3
- pyedb/grpc/database/geometry/polygon_data.py +5 -5
- pyedb/grpc/database/hfss.py +399 -397
- pyedb/grpc/database/hierarchy/component.py +60 -58
- pyedb/grpc/database/hierarchy/pin_pair_model.py +6 -6
- pyedb/grpc/database/hierarchy/pingroup.py +13 -11
- pyedb/grpc/database/hierarchy/s_parameter_model.py +1 -1
- pyedb/grpc/database/hierarchy/spice_model.py +1 -1
- pyedb/grpc/database/layers/layer.py +2 -2
- pyedb/grpc/database/layers/stackup_layer.py +144 -44
- pyedb/grpc/database/layout/layout.py +12 -12
- pyedb/grpc/database/layout/voltage_regulator.py +8 -8
- pyedb/grpc/database/layout_validation.py +5 -5
- pyedb/grpc/database/modeler.py +248 -245
- pyedb/grpc/database/net/differential_pair.py +4 -4
- pyedb/grpc/database/net/extended_net.py +7 -8
- pyedb/grpc/database/net/net.py +57 -46
- pyedb/grpc/database/nets.py +139 -122
- pyedb/grpc/database/padstacks.py +174 -190
- pyedb/grpc/database/ports/ports.py +23 -17
- pyedb/grpc/database/primitive/padstack_instance.py +45 -30
- pyedb/grpc/database/primitive/path.py +7 -7
- pyedb/grpc/database/primitive/polygon.py +9 -9
- pyedb/grpc/database/primitive/primitive.py +21 -21
- pyedb/grpc/database/primitive/rectangle.py +1 -1
- pyedb/grpc/database/simulation_setup/hfss_advanced_settings.py +1 -1
- pyedb/grpc/database/simulation_setup/hfss_general_settings.py +1 -1
- pyedb/grpc/database/simulation_setup/hfss_settings_options.py +1 -1
- pyedb/grpc/database/simulation_setup/hfss_simulation_settings.py +6 -6
- pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +2 -2
- pyedb/grpc/database/simulation_setup/raptor_x_simulation_settings.py +2 -2
- pyedb/grpc/database/simulation_setup/raptor_x_simulation_setup.py +1 -1
- pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +3 -3
- pyedb/grpc/database/siwave.py +166 -214
- pyedb/grpc/database/source_excitations.py +156 -0
- pyedb/grpc/database/stackup.py +415 -316
- pyedb/grpc/database/terminal/bundle_terminal.py +12 -12
- pyedb/grpc/database/terminal/edge_terminal.py +6 -5
- pyedb/grpc/database/terminal/padstack_instance_terminal.py +13 -13
- pyedb/grpc/database/terminal/pingroup_terminal.py +12 -12
- pyedb/grpc/database/terminal/point_terminal.py +6 -6
- pyedb/grpc/database/terminal/terminal.py +26 -26
- pyedb/grpc/database/utility/heat_sink.py +5 -5
- pyedb/grpc/database/utility/hfss_extent_info.py +21 -21
- pyedb/grpc/database/utility/layout_statistics.py +13 -13
- pyedb/grpc/database/utility/rlc.py +3 -3
- pyedb/grpc/database/utility/sources.py +1 -1
- pyedb/grpc/database/utility/sweep_data_distribution.py +1 -1
- pyedb/grpc/edb.py +524 -764
- {pyedb-0.49.0.dist-info → pyedb-0.50.1.dist-info}/METADATA +1 -1
- {pyedb-0.49.0.dist-info → pyedb-0.50.1.dist-info}/RECORD +77 -77
- pyedb/extensions/pre_layout_design_toolkit/via_design.py +0 -1151
- pyedb/grpc/database/utility/simulation_configuration.py +0 -3305
- {pyedb-0.49.0.dist-info → pyedb-0.50.1.dist-info}/LICENSE +0 -0
- {pyedb-0.49.0.dist-info → pyedb-0.50.1.dist-info}/WHEEL +0 -0
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
import logging
|
|
24
24
|
import re
|
|
25
|
-
from typing import Optional
|
|
25
|
+
from typing import Optional, Union
|
|
26
26
|
import warnings
|
|
27
27
|
|
|
28
28
|
from ansys.edb.core.definition.component_model import (
|
|
@@ -117,7 +117,7 @@ class Component(GrpcComponentGroup):
|
|
|
117
117
|
return self._comp_instance
|
|
118
118
|
|
|
119
119
|
@property
|
|
120
|
-
def is_enabled(self):
|
|
120
|
+
def is_enabled(self) -> bool:
|
|
121
121
|
"""Component enable.
|
|
122
122
|
|
|
123
123
|
Returns
|
|
@@ -132,7 +132,7 @@ class Component(GrpcComponentGroup):
|
|
|
132
132
|
self.enabled = value
|
|
133
133
|
|
|
134
134
|
@property
|
|
135
|
-
def ic_die_properties(self):
|
|
135
|
+
def ic_die_properties(self) -> ICDieProperty:
|
|
136
136
|
"""IC Die property.
|
|
137
137
|
|
|
138
138
|
returns
|
|
@@ -145,7 +145,7 @@ class Component(GrpcComponentGroup):
|
|
|
145
145
|
return None
|
|
146
146
|
|
|
147
147
|
@property
|
|
148
|
-
def _active_layout(self):
|
|
148
|
+
def _active_layout(self):
|
|
149
149
|
"""Active layout.
|
|
150
150
|
|
|
151
151
|
Returns
|
|
@@ -155,7 +155,7 @@ class Component(GrpcComponentGroup):
|
|
|
155
155
|
return self._pedb.active_layout
|
|
156
156
|
|
|
157
157
|
@property
|
|
158
|
-
def _edb_model(self):
|
|
158
|
+
def _edb_model(self):
|
|
159
159
|
"""Component model.
|
|
160
160
|
|
|
161
161
|
Returns
|
|
@@ -167,7 +167,7 @@ class Component(GrpcComponentGroup):
|
|
|
167
167
|
return comp_prop.model
|
|
168
168
|
|
|
169
169
|
@property # pragma: no cover
|
|
170
|
-
def _pin_pairs(self):
|
|
170
|
+
def _pin_pairs(self) -> PinPairModel:
|
|
171
171
|
"""Pins pairs.
|
|
172
172
|
|
|
173
173
|
Returns
|
|
@@ -200,7 +200,7 @@ class Component(GrpcComponentGroup):
|
|
|
200
200
|
return [self._edb_model.rlc(pin_pair) for pin_pair in self._edb_model.pin_pairs()]
|
|
201
201
|
|
|
202
202
|
@property
|
|
203
|
-
def model(self):
|
|
203
|
+
def model(self) -> Union[SparamModel, SpiceModel]:
|
|
204
204
|
"""Component model.
|
|
205
205
|
|
|
206
206
|
Returns
|
|
@@ -261,7 +261,7 @@ class Component(GrpcComponentGroup):
|
|
|
261
261
|
self.component_property = comp_prop
|
|
262
262
|
|
|
263
263
|
@property
|
|
264
|
-
def is_mcad(self):
|
|
264
|
+
def is_mcad(self) -> bool:
|
|
265
265
|
"""MCad component.
|
|
266
266
|
|
|
267
267
|
Returns
|
|
@@ -277,7 +277,7 @@ class Component(GrpcComponentGroup):
|
|
|
277
277
|
super(Component, self.__class__).is_mcad.__set__(self, GrpcValue(value))
|
|
278
278
|
|
|
279
279
|
@property
|
|
280
|
-
def is_mcad_3d_comp(self):
|
|
280
|
+
def is_mcad_3d_comp(self) -> bool:
|
|
281
281
|
"""Mcad 3D component.
|
|
282
282
|
|
|
283
283
|
Returns
|
|
@@ -293,7 +293,7 @@ class Component(GrpcComponentGroup):
|
|
|
293
293
|
super(Component, self.__class__).is_mcad_3d_comp.__set__(self, GrpcValue(value))
|
|
294
294
|
|
|
295
295
|
@property
|
|
296
|
-
def is_mcad_hfss(self):
|
|
296
|
+
def is_mcad_hfss(self) -> bool:
|
|
297
297
|
"""MCad HFSS.
|
|
298
298
|
|
|
299
299
|
Returns
|
|
@@ -309,7 +309,7 @@ class Component(GrpcComponentGroup):
|
|
|
309
309
|
super(Component, self.__class__).is_mcad_hfss.__set__(self, GrpcValue(value))
|
|
310
310
|
|
|
311
311
|
@property
|
|
312
|
-
def is_mcad_stride(self):
|
|
312
|
+
def is_mcad_stride(self) -> bool:
|
|
313
313
|
"""MCar stride.
|
|
314
314
|
|
|
315
315
|
Returns
|
|
@@ -324,15 +324,13 @@ class Component(GrpcComponentGroup):
|
|
|
324
324
|
if isinstance(value, bool):
|
|
325
325
|
super(Component, self.__class__).is_mcad_stride.__set__(self, GrpcValue(value))
|
|
326
326
|
|
|
327
|
-
def create_package_def(self, name=
|
|
327
|
+
def create_package_def(self, name=None) -> bool:
|
|
328
328
|
"""Create a package definition and assign it to the component.
|
|
329
329
|
|
|
330
330
|
Parameters
|
|
331
331
|
----------
|
|
332
332
|
name: str, optional
|
|
333
333
|
Name of the package definition
|
|
334
|
-
component_part_name : str, optional
|
|
335
|
-
Part name of the component.
|
|
336
334
|
|
|
337
335
|
Returns
|
|
338
336
|
-------
|
|
@@ -349,7 +347,7 @@ class Component(GrpcComponentGroup):
|
|
|
349
347
|
return False
|
|
350
348
|
|
|
351
349
|
@property
|
|
352
|
-
def enabled(self):
|
|
350
|
+
def enabled(self) -> bool:
|
|
353
351
|
"""Component active mode.
|
|
354
352
|
|
|
355
353
|
Returns
|
|
@@ -369,7 +367,7 @@ class Component(GrpcComponentGroup):
|
|
|
369
367
|
self.component_property = cmp_prop
|
|
370
368
|
|
|
371
369
|
@property
|
|
372
|
-
def spice_model(self):
|
|
370
|
+
def spice_model(self) -> SpiceModel:
|
|
373
371
|
"""Assigned Spice model.
|
|
374
372
|
|
|
375
373
|
Returns
|
|
@@ -379,10 +377,10 @@ class Component(GrpcComponentGroup):
|
|
|
379
377
|
if not self.model_type == "SPICEModel":
|
|
380
378
|
return None
|
|
381
379
|
else:
|
|
382
|
-
return SpiceModel(self._edb_model
|
|
380
|
+
return SpiceModel(edb_object=self._edb_model)
|
|
383
381
|
|
|
384
382
|
@property
|
|
385
|
-
def s_param_model(self):
|
|
383
|
+
def s_param_model(self) -> SparamModel:
|
|
386
384
|
"""Assigned S-parameter model.
|
|
387
385
|
|
|
388
386
|
Returns
|
|
@@ -392,10 +390,10 @@ class Component(GrpcComponentGroup):
|
|
|
392
390
|
if not self.model_type == "SParameterModel":
|
|
393
391
|
return None
|
|
394
392
|
else:
|
|
395
|
-
return
|
|
393
|
+
return SparamModel(edb_object=self._edb_model)
|
|
396
394
|
|
|
397
395
|
@property
|
|
398
|
-
def netlist_model(self):
|
|
396
|
+
def netlist_model(self) -> GrpcNetlistModel:
|
|
399
397
|
"""Assigned netlist model.
|
|
400
398
|
|
|
401
399
|
Returns
|
|
@@ -408,7 +406,7 @@ class Component(GrpcComponentGroup):
|
|
|
408
406
|
return GrpcNetlistModel(self._edb_model)
|
|
409
407
|
|
|
410
408
|
@property
|
|
411
|
-
def solder_ball_height(self):
|
|
409
|
+
def solder_ball_height(self) -> float:
|
|
412
410
|
"""Solder ball height if available.
|
|
413
411
|
|
|
414
412
|
Returns
|
|
@@ -416,9 +414,10 @@ class Component(GrpcComponentGroup):
|
|
|
416
414
|
float
|
|
417
415
|
Balls height value.
|
|
418
416
|
"""
|
|
419
|
-
|
|
417
|
+
try:
|
|
420
418
|
return self.component_property.solder_ball_property.height.value
|
|
421
|
-
|
|
419
|
+
except:
|
|
420
|
+
return 0.0
|
|
422
421
|
|
|
423
422
|
@solder_ball_height.setter
|
|
424
423
|
def solder_ball_height(self, value):
|
|
@@ -430,7 +429,7 @@ class Component(GrpcComponentGroup):
|
|
|
430
429
|
self.component_property = cmp_property
|
|
431
430
|
|
|
432
431
|
@property
|
|
433
|
-
def solder_ball_shape(self):
|
|
432
|
+
def solder_ball_shape(self) -> str:
|
|
434
433
|
"""Solder ball shape.
|
|
435
434
|
|
|
436
435
|
Returns
|
|
@@ -466,7 +465,7 @@ class Component(GrpcComponentGroup):
|
|
|
466
465
|
self.component_property = cmp_property
|
|
467
466
|
|
|
468
467
|
@property
|
|
469
|
-
def solder_ball_diameter(self):
|
|
468
|
+
def solder_ball_diameter(self) -> float:
|
|
470
469
|
"""Solder ball diameter.
|
|
471
470
|
|
|
472
471
|
Returns
|
|
@@ -507,7 +506,7 @@ class Component(GrpcComponentGroup):
|
|
|
507
506
|
return solder_placement.value
|
|
508
507
|
|
|
509
508
|
@property
|
|
510
|
-
def refdes(self):
|
|
509
|
+
def refdes(self) -> str:
|
|
511
510
|
"""Reference Designator Name.
|
|
512
511
|
|
|
513
512
|
Returns
|
|
@@ -522,7 +521,7 @@ class Component(GrpcComponentGroup):
|
|
|
522
521
|
self.name = name
|
|
523
522
|
|
|
524
523
|
@property
|
|
525
|
-
def model_type(self):
|
|
524
|
+
def model_type(self) -> str:
|
|
526
525
|
"""Retrieve assigned model type.
|
|
527
526
|
|
|
528
527
|
Returns
|
|
@@ -541,12 +540,12 @@ class Component(GrpcComponentGroup):
|
|
|
541
540
|
return _model_type
|
|
542
541
|
|
|
543
542
|
@property
|
|
544
|
-
def rlc_values(self):
|
|
543
|
+
def rlc_values(self) -> list[list[float]]:
|
|
545
544
|
"""Get component rlc values.
|
|
546
545
|
|
|
547
546
|
Returns
|
|
548
547
|
-------
|
|
549
|
-
|
|
548
|
+
list[list[Rvalue(float), Lvalue(float), Cvalue(float)]].
|
|
550
549
|
"""
|
|
551
550
|
if not len(self._rlc):
|
|
552
551
|
return [None, None, None]
|
|
@@ -588,7 +587,7 @@ class Component(GrpcComponentGroup):
|
|
|
588
587
|
self.component_property = comp_property
|
|
589
588
|
|
|
590
589
|
@property
|
|
591
|
-
def value(self):
|
|
590
|
+
def value(self) -> float:
|
|
592
591
|
"""Retrieve discrete component value.
|
|
593
592
|
|
|
594
593
|
Returns
|
|
@@ -612,7 +611,7 @@ class Component(GrpcComponentGroup):
|
|
|
612
611
|
self.cap_value = value
|
|
613
612
|
|
|
614
613
|
@property
|
|
615
|
-
def res_value(self):
|
|
614
|
+
def res_value(self) -> float:
|
|
616
615
|
"""Resistance value.
|
|
617
616
|
|
|
618
617
|
Returns
|
|
@@ -644,7 +643,7 @@ class Component(GrpcComponentGroup):
|
|
|
644
643
|
self.component_property = comp_prop
|
|
645
644
|
|
|
646
645
|
@property
|
|
647
|
-
def cap_value(self):
|
|
646
|
+
def cap_value(self) -> float:
|
|
648
647
|
"""Capacitance Value.
|
|
649
648
|
|
|
650
649
|
Returns
|
|
@@ -695,7 +694,7 @@ class Component(GrpcComponentGroup):
|
|
|
695
694
|
return None
|
|
696
695
|
|
|
697
696
|
@ind_value.setter
|
|
698
|
-
def ind_value(self, value)
|
|
697
|
+
def ind_value(self, value) -> float:
|
|
699
698
|
if value:
|
|
700
699
|
_rlc = []
|
|
701
700
|
model = PinPairModel(self._pedb, GrpcPinPairModel.create())
|
|
@@ -710,7 +709,7 @@ class Component(GrpcComponentGroup):
|
|
|
710
709
|
self.component_property = comp_prop
|
|
711
710
|
|
|
712
711
|
@property
|
|
713
|
-
def is_parallel_rlc(self):
|
|
712
|
+
def is_parallel_rlc(self) -> bool:
|
|
714
713
|
"""Define if model is Parallel or Series.
|
|
715
714
|
|
|
716
715
|
Returns
|
|
@@ -738,7 +737,7 @@ class Component(GrpcComponentGroup):
|
|
|
738
737
|
self.component_property = comp_property
|
|
739
738
|
|
|
740
739
|
@property
|
|
741
|
-
def center(self):
|
|
740
|
+
def center(self) -> list[float, float]:
|
|
742
741
|
"""Compute the component center.
|
|
743
742
|
|
|
744
743
|
Returns
|
|
@@ -767,7 +766,7 @@ class Component(GrpcComponentGroup):
|
|
|
767
766
|
super(Component, self.__class__).location.__set__(self, _location)
|
|
768
767
|
|
|
769
768
|
@property
|
|
770
|
-
def bounding_box(self):
|
|
769
|
+
def bounding_box(self) -> list[float]:
|
|
771
770
|
"""Component's bounding box.
|
|
772
771
|
|
|
773
772
|
Returns
|
|
@@ -783,7 +782,7 @@ class Component(GrpcComponentGroup):
|
|
|
783
782
|
return [pt1.x.value, pt1.y.value, pt2.x.value, pt2.y.value]
|
|
784
783
|
|
|
785
784
|
@property
|
|
786
|
-
def rotation(self):
|
|
785
|
+
def rotation(self) -> float:
|
|
787
786
|
"""Compute the component rotation in radian.
|
|
788
787
|
|
|
789
788
|
Returns
|
|
@@ -794,7 +793,7 @@ class Component(GrpcComponentGroup):
|
|
|
794
793
|
return self.transform.rotation.value
|
|
795
794
|
|
|
796
795
|
@property
|
|
797
|
-
def pinlist(self):
|
|
796
|
+
def pinlist(self) -> list[PadstackInstance]:
|
|
798
797
|
"""Pins of the component.
|
|
799
798
|
|
|
800
799
|
Returns
|
|
@@ -820,7 +819,7 @@ class Component(GrpcComponentGroup):
|
|
|
820
819
|
return list(set(nets))
|
|
821
820
|
|
|
822
821
|
@property
|
|
823
|
-
def pins(self):
|
|
822
|
+
def pins(self) -> dict[str, PadstackInstance]:
|
|
824
823
|
"""Component pins.
|
|
825
824
|
|
|
826
825
|
Returns
|
|
@@ -837,7 +836,7 @@ class Component(GrpcComponentGroup):
|
|
|
837
836
|
return _pins
|
|
838
837
|
|
|
839
838
|
@property
|
|
840
|
-
def type(self):
|
|
839
|
+
def type(self) -> str:
|
|
841
840
|
"""Component type.
|
|
842
841
|
|
|
843
842
|
Returns
|
|
@@ -875,7 +874,7 @@ class Component(GrpcComponentGroup):
|
|
|
875
874
|
return
|
|
876
875
|
|
|
877
876
|
@property
|
|
878
|
-
def numpins(self):
|
|
877
|
+
def numpins(self) -> int:
|
|
879
878
|
"""Number of Pins of Component.
|
|
880
879
|
|
|
881
880
|
Returns
|
|
@@ -886,7 +885,7 @@ class Component(GrpcComponentGroup):
|
|
|
886
885
|
return self.num_pins
|
|
887
886
|
|
|
888
887
|
@property
|
|
889
|
-
def partname(self)
|
|
888
|
+
def partname(self) -> str:
|
|
890
889
|
"""Component part name.
|
|
891
890
|
|
|
892
891
|
Returns
|
|
@@ -902,7 +901,7 @@ class Component(GrpcComponentGroup):
|
|
|
902
901
|
self.part_name = name
|
|
903
902
|
|
|
904
903
|
@property
|
|
905
|
-
def part_name(self):
|
|
904
|
+
def part_name(self) -> str:
|
|
906
905
|
"""Component part name.
|
|
907
906
|
|
|
908
907
|
Returns
|
|
@@ -918,7 +917,7 @@ class Component(GrpcComponentGroup):
|
|
|
918
917
|
self.component_def.name = name
|
|
919
918
|
|
|
920
919
|
@property
|
|
921
|
-
def placement_layer(self):
|
|
920
|
+
def placement_layer(self) -> str:
|
|
922
921
|
"""Placement layern name.
|
|
923
922
|
|
|
924
923
|
Returns
|
|
@@ -929,7 +928,7 @@ class Component(GrpcComponentGroup):
|
|
|
929
928
|
return super().placement_layer.name
|
|
930
929
|
|
|
931
930
|
@property
|
|
932
|
-
def layer(self):
|
|
931
|
+
def layer(self) -> StackupLayer:
|
|
933
932
|
"""Placement layern object.
|
|
934
933
|
|
|
935
934
|
Returns
|
|
@@ -940,7 +939,7 @@ class Component(GrpcComponentGroup):
|
|
|
940
939
|
return StackupLayer(self._pedb, super().placement_layer)
|
|
941
940
|
|
|
942
941
|
@property
|
|
943
|
-
def is_top_mounted(self):
|
|
942
|
+
def is_top_mounted(self) -> bool:
|
|
944
943
|
"""Check if a component is mounted on top or bottom of the layout.
|
|
945
944
|
|
|
946
945
|
Returns
|
|
@@ -954,7 +953,7 @@ class Component(GrpcComponentGroup):
|
|
|
954
953
|
return False
|
|
955
954
|
|
|
956
955
|
@property
|
|
957
|
-
def lower_elevation(self):
|
|
956
|
+
def lower_elevation(self) -> float:
|
|
958
957
|
"""Lower elevation of the placement layer.
|
|
959
958
|
|
|
960
959
|
Returns
|
|
@@ -965,7 +964,7 @@ class Component(GrpcComponentGroup):
|
|
|
965
964
|
return self.layer.lower_elevation
|
|
966
965
|
|
|
967
966
|
@property
|
|
968
|
-
def upper_elevation(self):
|
|
967
|
+
def upper_elevation(self) -> float:
|
|
969
968
|
"""Upper elevation of the placement layer.
|
|
970
969
|
|
|
971
970
|
Returns
|
|
@@ -977,7 +976,7 @@ class Component(GrpcComponentGroup):
|
|
|
977
976
|
return self.layer.upper_elevation
|
|
978
977
|
|
|
979
978
|
@property
|
|
980
|
-
def top_bottom_association(self):
|
|
979
|
+
def top_bottom_association(self) -> int:
|
|
981
980
|
"""Top/bottom association of the placement layer.
|
|
982
981
|
|
|
983
982
|
Returns
|
|
@@ -1014,7 +1013,7 @@ class Component(GrpcComponentGroup):
|
|
|
1014
1013
|
name: Optional[str] = None,
|
|
1015
1014
|
sub_circuit_name: Optional[str] = None,
|
|
1016
1015
|
terminal_pairs: Optional[list] = None,
|
|
1017
|
-
):
|
|
1016
|
+
) -> SpiceModel:
|
|
1018
1017
|
"""Assign Spice model to this component.
|
|
1019
1018
|
|
|
1020
1019
|
Parameters
|
|
@@ -1063,7 +1062,7 @@ class Component(GrpcComponentGroup):
|
|
|
1063
1062
|
else:
|
|
1064
1063
|
return False
|
|
1065
1064
|
|
|
1066
|
-
def assign_s_param_model(self, file_path, name=None, reference_net=None):
|
|
1065
|
+
def assign_s_param_model(self, file_path, name=None, reference_net=None) -> GrpcNPortComponentModel:
|
|
1067
1066
|
"""Assign S-parameter to this component.
|
|
1068
1067
|
|
|
1069
1068
|
Parameters
|
|
@@ -1073,6 +1072,9 @@ class Component(GrpcComponentGroup):
|
|
|
1073
1072
|
name : str, optional
|
|
1074
1073
|
Name of the S-parameter model.
|
|
1075
1074
|
|
|
1075
|
+
reference_net : str, optional
|
|
1076
|
+
Reference net.
|
|
1077
|
+
|
|
1076
1078
|
Returns
|
|
1077
1079
|
-------
|
|
1078
1080
|
:class:`NPortComponentModel <ansys.edb.core.definition.component_model.ComponentModel>`
|
|
@@ -1099,7 +1101,7 @@ class Component(GrpcComponentGroup):
|
|
|
1099
1101
|
model = GrpcSParameterModel.create(name=name, ref_net=reference_net)
|
|
1100
1102
|
return self._set_model(model)
|
|
1101
1103
|
|
|
1102
|
-
def use_s_parameter_model(self, name, reference_net=None):
|
|
1104
|
+
def use_s_parameter_model(self, name, reference_net=None) -> bool:
|
|
1103
1105
|
"""Use S-parameter model on the component.
|
|
1104
1106
|
|
|
1105
1107
|
Parameters
|
|
@@ -1133,7 +1135,7 @@ class Component(GrpcComponentGroup):
|
|
|
1133
1135
|
return self._set_model(s_param_model)
|
|
1134
1136
|
return False
|
|
1135
1137
|
|
|
1136
|
-
def assign_rlc_model(self, res=None, ind=None, cap=None, is_parallel=False):
|
|
1138
|
+
def assign_rlc_model(self, res=None, ind=None, cap=None, is_parallel=False) -> PinPairModel:
|
|
1137
1139
|
"""Assign RLC to this component.
|
|
1138
1140
|
|
|
1139
1141
|
Parameters
|
|
@@ -1179,7 +1181,7 @@ class Component(GrpcComponentGroup):
|
|
|
1179
1181
|
model.set_rlc(("1", "2"), rlc)
|
|
1180
1182
|
return self._set_model(model)
|
|
1181
1183
|
|
|
1182
|
-
def create_clearance_on_component(self, extra_soldermask_clearance=1e-4):
|
|
1184
|
+
def create_clearance_on_component(self, extra_soldermask_clearance=1e-4) -> bool:
|
|
1183
1185
|
"""Create a Clearance on Soldermask layer by drawing a rectangle.
|
|
1184
1186
|
|
|
1185
1187
|
Parameters
|
|
@@ -1228,7 +1230,7 @@ class ICDieProperty:
|
|
|
1228
1230
|
self._die_property = self._component.component_property.die_property
|
|
1229
1231
|
|
|
1230
1232
|
@property
|
|
1231
|
-
def die_orientation(self):
|
|
1233
|
+
def die_orientation(self) -> str:
|
|
1232
1234
|
"""Die orientation.
|
|
1233
1235
|
|
|
1234
1236
|
Returns
|
|
@@ -1253,7 +1255,7 @@ class ICDieProperty:
|
|
|
1253
1255
|
self._component.component_property = component_property
|
|
1254
1256
|
|
|
1255
1257
|
@property
|
|
1256
|
-
def die_type(self):
|
|
1258
|
+
def die_type(self) -> str:
|
|
1257
1259
|
"""Die type.
|
|
1258
1260
|
|
|
1259
1261
|
Returns
|
|
@@ -1280,7 +1282,7 @@ class ICDieProperty:
|
|
|
1280
1282
|
self._component.component_property = component_property
|
|
1281
1283
|
|
|
1282
1284
|
@property
|
|
1283
|
-
def height(self):
|
|
1285
|
+
def height(self) -> float:
|
|
1284
1286
|
"""Die height.
|
|
1285
1287
|
|
|
1286
1288
|
Returns
|
|
@@ -1300,7 +1302,7 @@ class ICDieProperty:
|
|
|
1300
1302
|
self._component.component_property = component_property
|
|
1301
1303
|
|
|
1302
1304
|
@property
|
|
1303
|
-
def is_null(self):
|
|
1305
|
+
def is_null(self) -> bool:
|
|
1304
1306
|
"""Test is die is null.
|
|
1305
1307
|
|
|
1306
1308
|
Returns
|
|
@@ -34,7 +34,7 @@ class PinPairModel(GrpcPinPairModel):
|
|
|
34
34
|
super().__init__(edb_object.msg)
|
|
35
35
|
|
|
36
36
|
@property
|
|
37
|
-
def rlc(self):
|
|
37
|
+
def rlc(self) -> tuple[str, str]:
|
|
38
38
|
"""Rlc mdodel.
|
|
39
39
|
|
|
40
40
|
Returns
|
|
@@ -45,7 +45,7 @@ class PinPairModel(GrpcPinPairModel):
|
|
|
45
45
|
return super().rlc(self.pin_pairs()[0])
|
|
46
46
|
|
|
47
47
|
@property
|
|
48
|
-
def rlc_enable(self):
|
|
48
|
+
def rlc_enable(self) -> list[bool]:
|
|
49
49
|
"""Enable model.
|
|
50
50
|
|
|
51
51
|
Returns
|
|
@@ -62,7 +62,7 @@ class PinPairModel(GrpcPinPairModel):
|
|
|
62
62
|
self.rlc.c_enabled = GrpcValue(value[2])
|
|
63
63
|
|
|
64
64
|
@property
|
|
65
|
-
def resistance(self):
|
|
65
|
+
def resistance(self) -> float:
|
|
66
66
|
"""Resistance.
|
|
67
67
|
|
|
68
68
|
Returns
|
|
@@ -78,7 +78,7 @@ class PinPairModel(GrpcPinPairModel):
|
|
|
78
78
|
self.rlc.r = GrpcValue(value)
|
|
79
79
|
|
|
80
80
|
@property
|
|
81
|
-
def inductance(self):
|
|
81
|
+
def inductance(self) -> float:
|
|
82
82
|
"""Inductance.
|
|
83
83
|
|
|
84
84
|
Returns
|
|
@@ -94,7 +94,7 @@ class PinPairModel(GrpcPinPairModel):
|
|
|
94
94
|
self.rlc.l = GrpcValue(value)
|
|
95
95
|
|
|
96
96
|
@property
|
|
97
|
-
def capacitance(self):
|
|
97
|
+
def capacitance(self) -> float:
|
|
98
98
|
"""Capacitance.
|
|
99
99
|
|
|
100
100
|
Returns
|
|
@@ -110,7 +110,7 @@ class PinPairModel(GrpcPinPairModel):
|
|
|
110
110
|
self.rlc.c = GrpcValue(value)
|
|
111
111
|
|
|
112
112
|
@property
|
|
113
|
-
def rlc_values(self)
|
|
113
|
+
def rlc_values(self) -> list[float]:
|
|
114
114
|
"""Rlc value.
|
|
115
115
|
|
|
116
116
|
Returns
|
|
@@ -21,6 +21,8 @@
|
|
|
21
21
|
# SOFTWARE.
|
|
22
22
|
|
|
23
23
|
|
|
24
|
+
from typing import Union
|
|
25
|
+
|
|
24
26
|
from ansys.edb.core.hierarchy.pin_group import PinGroup as GrpcPinGroup
|
|
25
27
|
from ansys.edb.core.terminal.terminal import BoundaryType as GrpcBoundaryType
|
|
26
28
|
from ansys.edb.core.utility.value import Value as GrpcValue
|
|
@@ -53,7 +55,7 @@ class PinGroup(GrpcPinGroup):
|
|
|
53
55
|
return self._pedb.active_layout
|
|
54
56
|
|
|
55
57
|
@property
|
|
56
|
-
def component(self):
|
|
58
|
+
def component(self) -> Component:
|
|
57
59
|
"""Component.
|
|
58
60
|
|
|
59
61
|
Return
|
|
@@ -69,7 +71,7 @@ class PinGroup(GrpcPinGroup):
|
|
|
69
71
|
super(PinGroup, self.__class__).component.__set__(self, value)
|
|
70
72
|
|
|
71
73
|
@property
|
|
72
|
-
def pins(self):
|
|
74
|
+
def pins(self) -> dict[str, PadstackInstance]:
|
|
73
75
|
"""Pin group pins.
|
|
74
76
|
|
|
75
77
|
Returns
|
|
@@ -79,7 +81,7 @@ class PinGroup(GrpcPinGroup):
|
|
|
79
81
|
return {i.name: PadstackInstance(self._pedb, i) for i in super().pins}
|
|
80
82
|
|
|
81
83
|
@property
|
|
82
|
-
def net(self):
|
|
84
|
+
def net(self) -> Net:
|
|
83
85
|
"""Net.
|
|
84
86
|
|
|
85
87
|
Returns
|
|
@@ -94,7 +96,7 @@ class PinGroup(GrpcPinGroup):
|
|
|
94
96
|
super(PinGroup, self.__class__).net.__set__(self, value)
|
|
95
97
|
|
|
96
98
|
@property
|
|
97
|
-
def net_name(self):
|
|
99
|
+
def net_name(self) -> str:
|
|
98
100
|
"""Net name.
|
|
99
101
|
|
|
100
102
|
Returns
|
|
@@ -106,7 +108,7 @@ class PinGroup(GrpcPinGroup):
|
|
|
106
108
|
return self.net.name
|
|
107
109
|
|
|
108
110
|
@property
|
|
109
|
-
def terminal(self):
|
|
111
|
+
def terminal(self) -> Union[PinGroupTerminal, None]:
|
|
110
112
|
"""Terminal."""
|
|
111
113
|
term = self.pin_group_terminal
|
|
112
114
|
if not term.is_null:
|
|
@@ -115,7 +117,7 @@ class PinGroup(GrpcPinGroup):
|
|
|
115
117
|
else:
|
|
116
118
|
return None
|
|
117
119
|
|
|
118
|
-
def create_terminal(self, name=None):
|
|
120
|
+
def create_terminal(self, name=None) -> PinGroupTerminal:
|
|
119
121
|
"""Create a terminal.
|
|
120
122
|
|
|
121
123
|
Parameters
|
|
@@ -136,7 +138,7 @@ class PinGroup(GrpcPinGroup):
|
|
|
136
138
|
)
|
|
137
139
|
return PinGroupTerminal(self._pedb, term)
|
|
138
140
|
|
|
139
|
-
def _json_format(self):
|
|
141
|
+
def _json_format(self) -> dict[str, any]:
|
|
140
142
|
"""Format json.
|
|
141
143
|
|
|
142
144
|
Returns
|
|
@@ -146,7 +148,7 @@ class PinGroup(GrpcPinGroup):
|
|
|
146
148
|
dict_out = {"component": self.component, "name": self.name, "net": self.net, "node_type": self.node_type}
|
|
147
149
|
return dict_out
|
|
148
150
|
|
|
149
|
-
def create_current_source_terminal(self, magnitude=1.0, phase=0, impedance=1e6):
|
|
151
|
+
def create_current_source_terminal(self, magnitude=1.0, phase=0, impedance=1e6) -> PinGroupTerminal:
|
|
150
152
|
"""Create current source terminal.
|
|
151
153
|
|
|
152
154
|
Parameters
|
|
@@ -171,7 +173,7 @@ class PinGroup(GrpcPinGroup):
|
|
|
171
173
|
terminal.impedance = GrpcValue(impedance)
|
|
172
174
|
return terminal
|
|
173
175
|
|
|
174
|
-
def create_voltage_source_terminal(self, magnitude=1, phase=0, impedance=0.001):
|
|
176
|
+
def create_voltage_source_terminal(self, magnitude=1, phase=0, impedance=0.001) -> PinGroupTerminal:
|
|
175
177
|
"""Create voltage source terminal.
|
|
176
178
|
|
|
177
179
|
Parameters
|
|
@@ -196,7 +198,7 @@ class PinGroup(GrpcPinGroup):
|
|
|
196
198
|
terminal.impedance = GrpcValue(impedance)
|
|
197
199
|
return terminal
|
|
198
200
|
|
|
199
|
-
def create_voltage_probe_terminal(self, impedance=1e6):
|
|
201
|
+
def create_voltage_probe_terminal(self, impedance=1e6) -> PinGroupTerminal:
|
|
200
202
|
"""Create voltage probe terminal.
|
|
201
203
|
|
|
202
204
|
Parameters
|
|
@@ -215,7 +217,7 @@ class PinGroup(GrpcPinGroup):
|
|
|
215
217
|
terminal.impedance = GrpcValue(impedance)
|
|
216
218
|
return terminal
|
|
217
219
|
|
|
218
|
-
def create_port_terminal(self, impedance=50):
|
|
220
|
+
def create_port_terminal(self, impedance=50) -> PinGroupTerminal:
|
|
219
221
|
"""Create port terminal.
|
|
220
222
|
|
|
221
223
|
Parameters
|
|
@@ -29,5 +29,5 @@ class SparamModel(GrpcSParameterModel): # pragma: no cover
|
|
|
29
29
|
"""Manage :class:`SParameterModel <ansys.edb.core.hierarchy.sparameter_model.SParameterModel>`"""
|
|
30
30
|
|
|
31
31
|
def __init__(self, edb_object):
|
|
32
|
-
super().__init__(
|
|
32
|
+
super().__init__(edb_object.msg)
|
|
33
33
|
self._edb_model = edb_object
|
|
@@ -28,7 +28,7 @@ class SpiceModel(GrpcSpiceModel): # pragma: no cover
|
|
|
28
28
|
|
|
29
29
|
def __init__(self, edb_object=None, name=None, file_path=None, sub_circuit=None):
|
|
30
30
|
if edb_object:
|
|
31
|
-
super().__init__(edb_object)
|
|
31
|
+
super().__init__(edb_object.msg)
|
|
32
32
|
elif name and file_path:
|
|
33
33
|
if not sub_circuit:
|
|
34
34
|
sub_circuit = name
|
|
@@ -53,7 +53,7 @@ class Layer(GrpcLayer):
|
|
|
53
53
|
self._pedb.logger.error(f"{k} is not a valid layer attribute")
|
|
54
54
|
|
|
55
55
|
@property
|
|
56
|
-
def properties(self):
|
|
56
|
+
def properties(self) -> dict[str, str]:
|
|
57
57
|
from ansys.edb.core.layer.stackup_layer import StackupLayer as GrpcStackupLayer
|
|
58
58
|
|
|
59
59
|
from pyedb.grpc.database.stackup import StackupLayer
|
|
@@ -77,7 +77,7 @@ class Layer(GrpcLayer):
|
|
|
77
77
|
self.color = color
|
|
78
78
|
|
|
79
79
|
@property
|
|
80
|
-
def type(self):
|
|
80
|
+
def type(self) -> str:
|
|
81
81
|
return super().type.name.lower().split("_")[0]
|
|
82
82
|
|
|
83
83
|
@property
|