pyedb 0.13.dev0__py3-none-any.whl → 0.14.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 +0 -5
- pyedb/configuration/cfg_components.py +0 -2
- pyedb/configuration/cfg_operations.py +0 -2
- pyedb/configuration/cfg_package_definition.py +0 -2
- pyedb/configuration/cfg_ports_sources.py +14 -11
- pyedb/configuration/cfg_stackup.py +0 -7
- pyedb/configuration/configuration.py +0 -6
- pyedb/dotnet/application/Variables.py +4 -40
- pyedb/dotnet/edb.py +27 -82
- pyedb/dotnet/edb_core/{edb_data/components_data.py → cell/hierarchy/component.py} +13 -133
- pyedb/dotnet/edb_core/cell/hierarchy/model.py +0 -3
- pyedb/dotnet/edb_core/cell/hierarchy/netlist_model.py +30 -0
- pyedb/dotnet/edb_core/cell/hierarchy/pin_pair_model.py +105 -0
- pyedb/dotnet/edb_core/cell/hierarchy/s_parameter_model.py +34 -0
- pyedb/dotnet/edb_core/cell/hierarchy/spice_model.py +34 -0
- pyedb/dotnet/edb_core/cell/layout.py +137 -0
- pyedb/dotnet/edb_core/cell/layout_obj.py +2 -4
- pyedb/dotnet/edb_core/cell/primitive.py +199 -1
- pyedb/dotnet/edb_core/cell/terminal/bundle_terminal.py +52 -0
- pyedb/dotnet/edb_core/cell/terminal/edge_terminal.py +50 -0
- pyedb/dotnet/edb_core/cell/terminal/padstack_instance_terminal.py +88 -0
- pyedb/dotnet/edb_core/cell/terminal/pingroup_terminal.py +59 -0
- pyedb/dotnet/edb_core/cell/terminal/point_terminal.py +73 -0
- pyedb/dotnet/edb_core/{edb_data/terminals.py → cell/terminal/terminal.py} +33 -242
- pyedb/dotnet/edb_core/components.py +10 -56
- pyedb/dotnet/edb_core/definition/component_def.py +1 -8
- pyedb/dotnet/edb_core/definition/component_model.py +0 -2
- pyedb/dotnet/edb_core/definition/definitions.py +0 -2
- pyedb/dotnet/edb_core/definition/package_def.py +7 -5
- pyedb/dotnet/edb_core/edb_data/control_file.py +0 -3
- pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py +0 -5
- pyedb/dotnet/edb_core/edb_data/hfss_pi_simulation_setup_data.py +4 -9
- pyedb/dotnet/edb_core/edb_data/layer_data.py +0 -7
- pyedb/dotnet/edb_core/edb_data/nets_data.py +2 -5
- pyedb/dotnet/edb_core/edb_data/padstacks_data.py +11 -29
- pyedb/dotnet/edb_core/edb_data/ports.py +4 -4
- pyedb/dotnet/edb_core/edb_data/primitives_data.py +3 -26
- pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py +13 -20
- pyedb/dotnet/edb_core/edb_data/simulation_configuration.py +3 -11
- pyedb/dotnet/edb_core/edb_data/sources.py +12 -17
- pyedb/dotnet/edb_core/general.py +1 -6
- pyedb/dotnet/edb_core/geometry/polygon_data.py +0 -3
- pyedb/dotnet/edb_core/hfss.py +1 -33
- pyedb/dotnet/edb_core/layout.py +0 -35
- pyedb/dotnet/edb_core/layout_validation.py +1 -3
- pyedb/dotnet/edb_core/materials.py +1 -22
- pyedb/dotnet/edb_core/net_class.py +0 -8
- pyedb/dotnet/edb_core/nets.py +4 -29
- pyedb/dotnet/edb_core/padstack.py +76 -30
- pyedb/dotnet/edb_core/sim_setup_data/data/adaptive_frequency_data.py +72 -0
- pyedb/dotnet/edb_core/sim_setup_data/data/mesh_operation.py +287 -0
- pyedb/dotnet/edb_core/{edb_data/hfss_simulation_setup_data.py → sim_setup_data/data/settings.py} +174 -878
- pyedb/dotnet/edb_core/sim_setup_data/data/sweep_data.py +509 -0
- pyedb/dotnet/edb_core/sim_setup_data/io/__init__.py +0 -0
- pyedb/dotnet/edb_core/{edb_data/siwave_simulation_setup_data.py → sim_setup_data/io/siwave.py} +0 -341
- pyedb/dotnet/edb_core/siwave.py +5 -33
- pyedb/dotnet/edb_core/stackup.py +4 -51
- pyedb/dotnet/edb_core/utilities/simulation_setup.py +612 -366
- pyedb/generic/data_handlers.py +1 -9
- pyedb/generic/general_methods.py +3 -53
- pyedb/generic/plot.py +1 -2
- pyedb/ipc2581/ecad/cad_data/layer_feature.py +1 -7
- pyedb/ipc2581/ecad/cad_data/package.py +1 -4
- pyedb/ipc2581/ecad/cad_data/path.py +1 -3
- pyedb/ipc2581/ecad/cad_data/polygon.py +1 -6
- pyedb/ipc2581/ecad/cad_data/step.py +1 -10
- pyedb/ipc2581/ipc2581.py +8 -15
- pyedb/modeler/geometry_operators.py +164 -67
- pyedb/siwave.py +1 -16
- {pyedb-0.13.dev0.dist-info → pyedb-0.14.0.dist-info}/METADATA +2 -2
- {pyedb-0.13.dev0.dist-info → pyedb-0.14.0.dist-info}/RECORD +75 -61
- /pyedb/dotnet/edb_core/cell/{__init__.py → terminal/__init__.py} +0 -0
- {pyedb-0.13.dev0.dist-info → pyedb-0.14.0.dist-info}/LICENSE +0 -0
- {pyedb-0.13.dev0.dist-info → pyedb-0.14.0.dist-info}/WHEEL +0 -0
|
@@ -24,7 +24,7 @@ import re
|
|
|
24
24
|
|
|
25
25
|
from pyedb.dotnet.edb_core.edb_data.padstacks_data import EDBPadstackInstance
|
|
26
26
|
from pyedb.dotnet.edb_core.edb_data.primitives_data import EDBPrimitives
|
|
27
|
-
from pyedb.generic.general_methods import generate_unique_name
|
|
27
|
+
from pyedb.generic.general_methods import generate_unique_name
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
class LayoutValidation:
|
|
@@ -33,7 +33,6 @@ class LayoutValidation:
|
|
|
33
33
|
def __init__(self, pedb):
|
|
34
34
|
self._pedb = pedb
|
|
35
35
|
|
|
36
|
-
@pyedb_function_handler()
|
|
37
36
|
def dc_shorts(self, net_list=None, fix=False):
|
|
38
37
|
"""Find DC shorts on layout.
|
|
39
38
|
|
|
@@ -121,7 +120,6 @@ class LayoutValidation:
|
|
|
121
120
|
# i.net = temp_name
|
|
122
121
|
return dc_shorts
|
|
123
122
|
|
|
124
|
-
@pyedb_function_handler()
|
|
125
123
|
def disjoint_nets(
|
|
126
124
|
self,
|
|
127
125
|
net_list=None,
|
|
@@ -35,7 +35,7 @@ from pyedb import Edb
|
|
|
35
35
|
from pyedb.dotnet.clr_module import _clr
|
|
36
36
|
from pyedb.dotnet.edb_core.general import convert_py_list_to_net_list
|
|
37
37
|
from pyedb.exceptions import MaterialModelException
|
|
38
|
-
from pyedb.generic.general_methods import is_ironpython
|
|
38
|
+
from pyedb.generic.general_methods import is_ironpython
|
|
39
39
|
|
|
40
40
|
logger = logging.getLogger(__name__)
|
|
41
41
|
|
|
@@ -378,7 +378,6 @@ class Material(object):
|
|
|
378
378
|
material_property_id = self.__edb_definition.MaterialPropertyId.ThermalExpansionCoefficient
|
|
379
379
|
self.__material_def.SetProperty(material_property_id, edb_value)
|
|
380
380
|
|
|
381
|
-
@pyedb_function_handler()
|
|
382
381
|
def to_dict(self):
|
|
383
382
|
"""Convert material into dictionary."""
|
|
384
383
|
self.__load_all_properties()
|
|
@@ -387,7 +386,6 @@ class Material(object):
|
|
|
387
386
|
res.update(self.__properties.model_dump())
|
|
388
387
|
return res
|
|
389
388
|
|
|
390
|
-
@pyedb_function_handler()
|
|
391
389
|
def update(self, input_dict: dict):
|
|
392
390
|
if input_dict:
|
|
393
391
|
# Update attributes
|
|
@@ -412,7 +410,6 @@ class Material(object):
|
|
|
412
410
|
elif self.__dc_model:
|
|
413
411
|
self.__material_def.SetDielectricMaterialModel(self.__edb_value(None))
|
|
414
412
|
|
|
415
|
-
@pyedb_function_handler()
|
|
416
413
|
def __edb_value(self, value):
|
|
417
414
|
"""Convert a value to an EDB value.
|
|
418
415
|
|
|
@@ -422,13 +419,11 @@ class Material(object):
|
|
|
422
419
|
"""
|
|
423
420
|
return self.__edb.edb_value(value)
|
|
424
421
|
|
|
425
|
-
@pyedb_function_handler()
|
|
426
422
|
def __load_all_properties(self):
|
|
427
423
|
"""Load all properties of the material."""
|
|
428
424
|
for property in self.__properties.model_dump().keys():
|
|
429
425
|
_ = getattr(self, property)
|
|
430
426
|
|
|
431
|
-
@pyedb_function_handler()
|
|
432
427
|
def __property_value(self, material_property_id):
|
|
433
428
|
"""Get property value from a material property id."""
|
|
434
429
|
if is_ironpython: # pragma: no cover
|
|
@@ -496,7 +491,6 @@ class Materials(object):
|
|
|
496
491
|
"""
|
|
497
492
|
return self.__edb.edb_value(value)
|
|
498
493
|
|
|
499
|
-
@pyedb_function_handler()
|
|
500
494
|
def add_material(self, name: str, **kwargs):
|
|
501
495
|
"""Add a new material.
|
|
502
496
|
|
|
@@ -531,7 +525,6 @@ class Materials(object):
|
|
|
531
525
|
|
|
532
526
|
return material
|
|
533
527
|
|
|
534
|
-
@pyedb_function_handler()
|
|
535
528
|
def add_conductor_material(self, name, conductivity, **kwargs):
|
|
536
529
|
"""Add a new conductor material.
|
|
537
530
|
|
|
@@ -553,7 +546,6 @@ class Materials(object):
|
|
|
553
546
|
|
|
554
547
|
return material
|
|
555
548
|
|
|
556
|
-
@pyedb_function_handler()
|
|
557
549
|
def add_dielectric_material(self, name, permittivity, dielectric_loss_tangent, **kwargs):
|
|
558
550
|
"""Add a new dielectric material in library.
|
|
559
551
|
|
|
@@ -577,7 +569,6 @@ class Materials(object):
|
|
|
577
569
|
|
|
578
570
|
return material
|
|
579
571
|
|
|
580
|
-
@pyedb_function_handler()
|
|
581
572
|
def add_djordjevicsarkar_dielectric(
|
|
582
573
|
self,
|
|
583
574
|
name,
|
|
@@ -635,7 +626,6 @@ class Materials(object):
|
|
|
635
626
|
except MaterialModelException:
|
|
636
627
|
raise ValueError("Use realistic values to define DS model.")
|
|
637
628
|
|
|
638
|
-
@pyedb_function_handler()
|
|
639
629
|
def add_debye_material(
|
|
640
630
|
self,
|
|
641
631
|
name,
|
|
@@ -703,7 +693,6 @@ class Materials(object):
|
|
|
703
693
|
except MaterialModelException:
|
|
704
694
|
raise ValueError("Use realistic values to define Debye model.")
|
|
705
695
|
|
|
706
|
-
@pyedb_function_handler()
|
|
707
696
|
def add_multipole_debye_material(
|
|
708
697
|
self,
|
|
709
698
|
name,
|
|
@@ -768,7 +757,6 @@ class Materials(object):
|
|
|
768
757
|
except MaterialModelException:
|
|
769
758
|
raise ValueError("Use realistic values to define Multipole Debye model.")
|
|
770
759
|
|
|
771
|
-
@pyedb_function_handler()
|
|
772
760
|
def __add_dielectric_material_model(self, name, material_model):
|
|
773
761
|
"""Add a dielectric material model.
|
|
774
762
|
|
|
@@ -791,7 +779,6 @@ class Materials(object):
|
|
|
791
779
|
return material
|
|
792
780
|
raise MaterialModelException("Set dielectric material model failed.")
|
|
793
781
|
|
|
794
|
-
@pyedb_function_handler()
|
|
795
782
|
def duplicate(self, material_name, new_material_name):
|
|
796
783
|
"""Duplicate a material from the database.
|
|
797
784
|
|
|
@@ -820,7 +807,6 @@ class Materials(object):
|
|
|
820
807
|
|
|
821
808
|
return new_material
|
|
822
809
|
|
|
823
|
-
@pyedb_function_handler()
|
|
824
810
|
def delete_material(self, material_name):
|
|
825
811
|
"""Remove a material from the database."""
|
|
826
812
|
material_def = self.__edb_definition.MaterialDef.FindByName(self.__edb.active_db, material_name)
|
|
@@ -828,7 +814,6 @@ class Materials(object):
|
|
|
828
814
|
raise ValueError(f"Cannot find material {material_name}.")
|
|
829
815
|
material_def.Delete()
|
|
830
816
|
|
|
831
|
-
@pyedb_function_handler()
|
|
832
817
|
def update_material(self, material_name, input_dict):
|
|
833
818
|
"""Update material attributes."""
|
|
834
819
|
if material_name not in self.materials:
|
|
@@ -847,7 +832,6 @@ class Materials(object):
|
|
|
847
832
|
material.update(attributes_input_dict)
|
|
848
833
|
return material
|
|
849
834
|
|
|
850
|
-
@pyedb_function_handler()
|
|
851
835
|
def load_material(self, material: dict):
|
|
852
836
|
"""Load material."""
|
|
853
837
|
if material:
|
|
@@ -868,7 +852,6 @@ class Materials(object):
|
|
|
868
852
|
material_dlt = material["dielectric_loss_tangent"]
|
|
869
853
|
self.add_dielectric_material(material_name, material_permittivity, material_dlt)
|
|
870
854
|
|
|
871
|
-
@pyedb_function_handler()
|
|
872
855
|
def material_property_to_id(self, property_name):
|
|
873
856
|
"""Convert a material property name to a material property ID.
|
|
874
857
|
|
|
@@ -910,7 +893,6 @@ class Materials(object):
|
|
|
910
893
|
else:
|
|
911
894
|
return property_name_to_id["InvalidProperty"]
|
|
912
895
|
|
|
913
|
-
@pyedb_function_handler()
|
|
914
896
|
def load_amat(self, amat_file):
|
|
915
897
|
"""Load materials from an AMAT file.
|
|
916
898
|
|
|
@@ -944,7 +926,6 @@ class Materials(object):
|
|
|
944
926
|
self.__edb.logger.warning(f"Material {material_name} already exist and was not loaded from AMAT file.")
|
|
945
927
|
return True
|
|
946
928
|
|
|
947
|
-
@pyedb_function_handler()
|
|
948
929
|
def iterate_materials_in_amat(self, amat_file=None):
|
|
949
930
|
"""Iterate over material description in an AMAT file.
|
|
950
931
|
|
|
@@ -1019,7 +1000,6 @@ class Materials(object):
|
|
|
1019
1000
|
material_description["name"] = match.group(1)
|
|
1020
1001
|
in_material_def = True
|
|
1021
1002
|
|
|
1022
|
-
@pyedb_function_handler()
|
|
1023
1003
|
def read_materials(self, amat_file):
|
|
1024
1004
|
"""Read materials from an AMAT file.
|
|
1025
1005
|
|
|
@@ -1043,7 +1023,6 @@ class Materials(object):
|
|
|
1043
1023
|
|
|
1044
1024
|
return res
|
|
1045
1025
|
|
|
1046
|
-
@pyedb_function_handler()
|
|
1047
1026
|
def read_syslib_material(self, material_name):
|
|
1048
1027
|
"""Read a specific material from syslib AMAT file.
|
|
1049
1028
|
|
|
@@ -29,7 +29,6 @@ from pyedb.dotnet.edb_core.edb_data.nets_data import (
|
|
|
29
29
|
EDBExtendedNetData,
|
|
30
30
|
EDBNetClassData,
|
|
31
31
|
)
|
|
32
|
-
from pyedb.generic.general_methods import pyedb_function_handler
|
|
33
32
|
|
|
34
33
|
|
|
35
34
|
class EdbCommon:
|
|
@@ -51,7 +50,6 @@ class EdbCommon:
|
|
|
51
50
|
"""EDB logger."""
|
|
52
51
|
return self._pedb.logger
|
|
53
52
|
|
|
54
|
-
@pyedb_function_handler()
|
|
55
53
|
def __getitem__(self, name):
|
|
56
54
|
"""Get a net from the EDB project.
|
|
57
55
|
|
|
@@ -97,7 +95,6 @@ class EdbNetClasses(EdbCommon, object):
|
|
|
97
95
|
net_classes[net_class.GetName()] = EDBNetClassData(self._pedb, net_class)
|
|
98
96
|
return net_classes
|
|
99
97
|
|
|
100
|
-
@pyedb_function_handler()
|
|
101
98
|
def create(self, name, net):
|
|
102
99
|
# type: (str, str|list)->EDBNetClassData
|
|
103
100
|
"""Create a new net class.
|
|
@@ -154,7 +151,6 @@ class EdbExtendedNets(EdbCommon, object):
|
|
|
154
151
|
nets[extended_net.GetName()] = EDBExtendedNetData(self._pedb, extended_net)
|
|
155
152
|
return nets
|
|
156
153
|
|
|
157
|
-
@pyedb_function_handler()
|
|
158
154
|
def create(self, name, net):
|
|
159
155
|
# type: (str, str|list)->EDBExtendedNetData
|
|
160
156
|
"""Create a new Extended net.
|
|
@@ -183,7 +179,6 @@ class EdbExtendedNets(EdbCommon, object):
|
|
|
183
179
|
|
|
184
180
|
return self.items[name]
|
|
185
181
|
|
|
186
|
-
@pyedb_function_handler()
|
|
187
182
|
def auto_identify_signal(self, resistor_below=10, inductor_below=1, capacitor_above=1e-9, exception_list=None):
|
|
188
183
|
# type: (int | float, int | float, int |float, list) -> list
|
|
189
184
|
"""Get extended signal net and associated components.
|
|
@@ -218,7 +213,6 @@ class EdbExtendedNets(EdbCommon, object):
|
|
|
218
213
|
resistor_below, inductor_below, capacitor_above, exception_list, True, True
|
|
219
214
|
)
|
|
220
215
|
|
|
221
|
-
@pyedb_function_handler()
|
|
222
216
|
def auto_identify_power(self, resistor_below=10, inductor_below=1, capacitor_above=1, exception_list=None):
|
|
223
217
|
# type: (int | float, int | float, int |float, list) -> list
|
|
224
218
|
"""Get all extended power nets and their associated components.
|
|
@@ -282,7 +276,6 @@ class EdbDifferentialPairs(EdbCommon, object):
|
|
|
282
276
|
diff_pairs[diff_pair.GetName()] = EDBDifferentialPairData(self._pedb, diff_pair)
|
|
283
277
|
return diff_pairs
|
|
284
278
|
|
|
285
|
-
@pyedb_function_handler()
|
|
286
279
|
def create(self, name, net_p, net_n):
|
|
287
280
|
# type: (str, str, str) -> EDBDifferentialPairData
|
|
288
281
|
"""
|
|
@@ -309,7 +302,6 @@ class EdbDifferentialPairs(EdbCommon, object):
|
|
|
309
302
|
|
|
310
303
|
return self.items[name]
|
|
311
304
|
|
|
312
|
-
@pyedb_function_handler()
|
|
313
305
|
def auto_identify(self, positive_differentiator="_P", negative_differentiator="_N"):
|
|
314
306
|
"""Auto identify differential pairs by naming conversion.
|
|
315
307
|
|
pyedb/dotnet/edb_core/nets.py
CHANGED
|
@@ -29,11 +29,7 @@ import warnings
|
|
|
29
29
|
|
|
30
30
|
from pyedb.dotnet.edb_core.edb_data.nets_data import EDBNetsData
|
|
31
31
|
from pyedb.generic.constants import CSS4_COLORS
|
|
32
|
-
from pyedb.generic.general_methods import
|
|
33
|
-
generate_unique_name,
|
|
34
|
-
is_ironpython,
|
|
35
|
-
pyedb_function_handler,
|
|
36
|
-
)
|
|
32
|
+
from pyedb.generic.general_methods import generate_unique_name, is_ironpython
|
|
37
33
|
from pyedb.modeler.geometry_operators import GeometryOperators
|
|
38
34
|
|
|
39
35
|
|
|
@@ -47,7 +43,6 @@ class EdbNets(object):
|
|
|
47
43
|
>>> edb_nets = edbapp.nets
|
|
48
44
|
"""
|
|
49
45
|
|
|
50
|
-
@pyedb_function_handler()
|
|
51
46
|
def __getitem__(self, name):
|
|
52
47
|
"""Get a net from the Edb project.
|
|
53
48
|
|
|
@@ -65,7 +60,6 @@ class EdbNets(object):
|
|
|
65
60
|
self._pedb.logger.error("Component or definition not found.")
|
|
66
61
|
return
|
|
67
62
|
|
|
68
|
-
@pyedb_function_handler()
|
|
69
63
|
def __contains__(self, name):
|
|
70
64
|
"""Determine if a net is named ``name`` or not.
|
|
71
65
|
|
|
@@ -125,11 +119,7 @@ class EdbNets(object):
|
|
|
125
119
|
dict[str, :class:`pyedb.dotnet.edb_core.edb_data.nets_data.EDBNetsData`]
|
|
126
120
|
Dictionary of nets.
|
|
127
121
|
"""
|
|
128
|
-
|
|
129
|
-
temp = {}
|
|
130
|
-
for net in self._layout.nets:
|
|
131
|
-
temp[net.name] = EDBNetsData(net.api_object, self._pedb)
|
|
132
|
-
return temp
|
|
122
|
+
return self._pedb.modeler.nets
|
|
133
123
|
|
|
134
124
|
@property
|
|
135
125
|
def netlist(self):
|
|
@@ -183,7 +173,7 @@ class EdbNets(object):
|
|
|
183
173
|
"""
|
|
184
174
|
nets = {}
|
|
185
175
|
for net, value in self.nets.items():
|
|
186
|
-
if not value.
|
|
176
|
+
if not value.is_power_ground:
|
|
187
177
|
nets[net] = value
|
|
188
178
|
return nets
|
|
189
179
|
|
|
@@ -198,11 +188,10 @@ class EdbNets(object):
|
|
|
198
188
|
"""
|
|
199
189
|
nets = {}
|
|
200
190
|
for net, value in self.nets.items():
|
|
201
|
-
if value.
|
|
191
|
+
if value.is_power_ground:
|
|
202
192
|
nets[net] = value
|
|
203
193
|
return nets
|
|
204
194
|
|
|
205
|
-
@pyedb_function_handler()
|
|
206
195
|
def eligible_power_nets(self, threshold=0.3):
|
|
207
196
|
"""Return a list of nets calculated by area to be eligible for PWR/Ground net classification.
|
|
208
197
|
It uses the same algorithm implemented in SIwave.
|
|
@@ -257,7 +246,6 @@ class EdbNets(object):
|
|
|
257
246
|
self._comps_by_nets_dict[n] = [comp]
|
|
258
247
|
return self._comps_by_nets_dict
|
|
259
248
|
|
|
260
|
-
@pyedb_function_handler()
|
|
261
249
|
def generate_extended_nets(
|
|
262
250
|
self,
|
|
263
251
|
resistor_below=10,
|
|
@@ -469,7 +457,6 @@ class EdbNets(object):
|
|
|
469
457
|
# fmt: on
|
|
470
458
|
return x, y
|
|
471
459
|
|
|
472
|
-
@pyedb_function_handler()
|
|
473
460
|
def get_plot_data(
|
|
474
461
|
self,
|
|
475
462
|
nets=None,
|
|
@@ -778,7 +765,6 @@ class EdbNets(object):
|
|
|
778
765
|
else:
|
|
779
766
|
return objects_lists
|
|
780
767
|
|
|
781
|
-
@pyedb_function_handler()
|
|
782
768
|
def classify_nets(self, power_nets=None, signal_nets=None):
|
|
783
769
|
"""Reassign power/ground or signal nets based on list of nets.
|
|
784
770
|
|
|
@@ -810,7 +796,6 @@ class EdbNets(object):
|
|
|
810
796
|
self.nets[net].net_object.SetIsPowerGround(False)
|
|
811
797
|
return True
|
|
812
798
|
|
|
813
|
-
@pyedb_function_handler()
|
|
814
799
|
def plot(
|
|
815
800
|
self,
|
|
816
801
|
nets=None,
|
|
@@ -888,7 +873,6 @@ class EdbNets(object):
|
|
|
888
873
|
show=show,
|
|
889
874
|
)
|
|
890
875
|
|
|
891
|
-
@pyedb_function_handler()
|
|
892
876
|
def is_power_gound_net(self, netname_list):
|
|
893
877
|
"""Determine if one of the nets in a list is power or ground.
|
|
894
878
|
|
|
@@ -910,7 +894,6 @@ class EdbNets(object):
|
|
|
910
894
|
return True
|
|
911
895
|
return False
|
|
912
896
|
|
|
913
|
-
@pyedb_function_handler()
|
|
914
897
|
def get_dcconnected_net_list(self, ground_nets=["GND"], res_value=0.001):
|
|
915
898
|
"""Get the nets connected to the direct current through inductors.
|
|
916
899
|
|
|
@@ -961,7 +944,6 @@ class EdbNets(object):
|
|
|
961
944
|
|
|
962
945
|
return dcconnected_net_list
|
|
963
946
|
|
|
964
|
-
@pyedb_function_handler()
|
|
965
947
|
def get_powertree(self, power_net_name, ground_nets):
|
|
966
948
|
"""Retrieve the power tree.
|
|
967
949
|
|
|
@@ -1021,14 +1003,12 @@ class EdbNets(object):
|
|
|
1021
1003
|
]
|
|
1022
1004
|
return component_list, component_list_columns, net_group
|
|
1023
1005
|
|
|
1024
|
-
@pyedb_function_handler()
|
|
1025
1006
|
def get_net_by_name(self, net_name):
|
|
1026
1007
|
"""Find a net by name."""
|
|
1027
1008
|
edb_net = self._edb.cell.net.find_by_name(self._active_layout, net_name)
|
|
1028
1009
|
if edb_net is not None:
|
|
1029
1010
|
return edb_net
|
|
1030
1011
|
|
|
1031
|
-
@pyedb_function_handler()
|
|
1032
1012
|
def delete_nets(self, netlist):
|
|
1033
1013
|
"""Delete one or more nets from EDB.
|
|
1034
1014
|
|
|
@@ -1053,7 +1033,6 @@ class EdbNets(object):
|
|
|
1053
1033
|
warnings.warn("Use :func:`delete` method instead.", DeprecationWarning)
|
|
1054
1034
|
return self.delete(netlist=netlist)
|
|
1055
1035
|
|
|
1056
|
-
@pyedb_function_handler()
|
|
1057
1036
|
def delete(self, netlist):
|
|
1058
1037
|
"""Delete one or more nets from EDB.
|
|
1059
1038
|
|
|
@@ -1086,7 +1065,6 @@ class EdbNets(object):
|
|
|
1086
1065
|
nets_deleted.append(i.name)
|
|
1087
1066
|
return nets_deleted
|
|
1088
1067
|
|
|
1089
|
-
@pyedb_function_handler()
|
|
1090
1068
|
def find_or_create_net(self, net_name="", start_with="", contain="", end_with=""):
|
|
1091
1069
|
"""Find or create the net with the given name in the layout.
|
|
1092
1070
|
|
|
@@ -1161,7 +1139,6 @@ class EdbNets(object):
|
|
|
1161
1139
|
nets_found = [self.nets[net].net_object for net in list(self.nets.keys()) if contain in net.lower()]
|
|
1162
1140
|
return nets_found
|
|
1163
1141
|
|
|
1164
|
-
@pyedb_function_handler()
|
|
1165
1142
|
def is_net_in_component(self, component_name, net_name):
|
|
1166
1143
|
"""Check if a net belongs to a component.
|
|
1167
1144
|
|
|
@@ -1185,7 +1162,6 @@ class EdbNets(object):
|
|
|
1185
1162
|
return True
|
|
1186
1163
|
return False
|
|
1187
1164
|
|
|
1188
|
-
@pyedb_function_handler()
|
|
1189
1165
|
def find_and_fix_disjoint_nets(
|
|
1190
1166
|
self, net_list=None, keep_only_main_net=False, clean_disjoints_less_than=0.0, order_by_area=False
|
|
1191
1167
|
):
|
|
@@ -1221,7 +1197,6 @@ class EdbNets(object):
|
|
|
1221
1197
|
net_list, keep_only_main_net, clean_disjoints_less_than, order_by_area
|
|
1222
1198
|
)
|
|
1223
1199
|
|
|
1224
|
-
@pyedb_function_handler()
|
|
1225
1200
|
def merge_nets_polygons(self, net_names_list):
|
|
1226
1201
|
"""Convert paths from net into polygons, evaluate all connected polygons and perform the merge.
|
|
1227
1202
|
|