pyedb 0.5.dev0__py3-none-any.whl → 0.6.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 +2 -3
- pyedb/dotnet/application/Variables.py +22 -0
- pyedb/dotnet/edb.py +46 -9
- pyedb/dotnet/edb_core/cell/hierarchy/model.py +22 -0
- pyedb/dotnet/edb_core/components.py +23 -1
- pyedb/dotnet/edb_core/configuration.py +23 -2
- pyedb/dotnet/edb_core/definition/component_def.py +24 -3
- pyedb/dotnet/edb_core/definition/component_model.py +22 -0
- pyedb/dotnet/edb_core/definition/definition_obj.py +24 -4
- pyedb/dotnet/edb_core/definition/definitions.py +22 -1
- pyedb/dotnet/edb_core/definition/package_def.py +23 -3
- pyedb/dotnet/edb_core/dotnet/database.py +22 -0
- pyedb/dotnet/edb_core/dotnet/layout.py +22 -0
- pyedb/dotnet/edb_core/dotnet/primitive.py +22 -0
- pyedb/dotnet/edb_core/edb_data/components_data.py +107 -2
- pyedb/dotnet/edb_core/edb_data/connectable.py +22 -0
- pyedb/dotnet/edb_core/edb_data/control_file.py +22 -0
- pyedb/dotnet/edb_core/edb_data/design_options.py +23 -0
- pyedb/dotnet/edb_core/edb_data/edbvalue.py +23 -0
- pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py +22 -0
- pyedb/dotnet/edb_core/edb_data/hfss_simulation_setup_data.py +22 -0
- pyedb/dotnet/edb_core/edb_data/layer_data.py +22 -0
- pyedb/dotnet/edb_core/edb_data/nets_data.py +23 -1
- pyedb/dotnet/edb_core/edb_data/obj_base.py +23 -0
- pyedb/dotnet/edb_core/edb_data/padstacks_data.py +22 -0
- pyedb/dotnet/edb_core/edb_data/ports.py +22 -0
- pyedb/dotnet/edb_core/edb_data/primitives_data.py +62 -7
- pyedb/dotnet/edb_core/edb_data/simulation_configuration.py +22 -0
- pyedb/dotnet/edb_core/edb_data/simulation_setup.py +22 -0
- pyedb/dotnet/edb_core/edb_data/siwave_simulation_setup_data.py +22 -0
- pyedb/dotnet/edb_core/edb_data/sources.py +23 -3
- pyedb/dotnet/edb_core/edb_data/terminals.py +22 -0
- pyedb/dotnet/edb_core/edb_data/utilities.py +25 -2
- pyedb/dotnet/edb_core/edb_data/variables.py +23 -0
- pyedb/dotnet/edb_core/general.py +22 -0
- pyedb/dotnet/edb_core/hfss.py +22 -0
- pyedb/dotnet/edb_core/layout.py +33 -4
- pyedb/dotnet/edb_core/layout_validation.py +24 -2
- pyedb/dotnet/edb_core/materials.py +22 -0
- pyedb/dotnet/edb_core/net_class.py +22 -0
- pyedb/dotnet/edb_core/nets.py +22 -0
- pyedb/dotnet/edb_core/padstack.py +22 -0
- pyedb/dotnet/edb_core/siwave.py +22 -0
- pyedb/dotnet/edb_core/stackup.py +22 -0
- pyedb/edb_logger.py +22 -0
- pyedb/generic/constants.py +22 -0
- pyedb/generic/data_handlers.py +0 -1
- pyedb/generic/design_types.py +24 -0
- pyedb/generic/general_methods.py +22 -115
- pyedb/generic/plot.py +3 -13
- pyedb/generic/settings.py +22 -0
- pyedb/ipc2581/bom/bom.py +22 -0
- pyedb/ipc2581/bom/bom_item.py +22 -0
- pyedb/ipc2581/bom/characteristics.py +22 -0
- pyedb/ipc2581/bom/refdes.py +22 -0
- pyedb/ipc2581/content/color.py +22 -0
- pyedb/ipc2581/content/content.py +22 -0
- pyedb/ipc2581/content/dictionary_color.py +22 -0
- pyedb/ipc2581/content/dictionary_fill.py +22 -0
- pyedb/ipc2581/content/dictionary_line.py +22 -0
- pyedb/ipc2581/content/entry_color.py +22 -0
- pyedb/ipc2581/content/entry_line.py +22 -0
- pyedb/ipc2581/content/fill.py +22 -0
- pyedb/ipc2581/content/layer_ref.py +22 -0
- pyedb/ipc2581/content/standard_geometries_dictionary.py +22 -0
- pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +22 -0
- pyedb/ipc2581/ecad/cad_data/cad_data.py +22 -0
- pyedb/ipc2581/ecad/cad_data/component.py +22 -0
- pyedb/ipc2581/ecad/cad_data/drill.py +22 -0
- pyedb/ipc2581/ecad/cad_data/feature.py +22 -0
- pyedb/ipc2581/ecad/cad_data/layer.py +22 -0
- pyedb/ipc2581/ecad/cad_data/layer_feature.py +22 -0
- pyedb/ipc2581/ecad/cad_data/logical_net.py +22 -0
- pyedb/ipc2581/ecad/cad_data/outline.py +22 -0
- pyedb/ipc2581/ecad/cad_data/package.py +22 -0
- pyedb/ipc2581/ecad/cad_data/padstack_def.py +22 -0
- pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +22 -0
- pyedb/ipc2581/ecad/cad_data/padstack_instance.py +22 -0
- pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +22 -0
- pyedb/ipc2581/ecad/cad_data/path.py +22 -0
- pyedb/ipc2581/ecad/cad_data/phy_net.py +22 -0
- pyedb/ipc2581/ecad/cad_data/pin.py +22 -0
- pyedb/ipc2581/ecad/cad_data/polygon.py +22 -0
- pyedb/ipc2581/ecad/cad_data/profile.py +22 -0
- pyedb/ipc2581/ecad/cad_data/stackup.py +22 -0
- pyedb/ipc2581/ecad/cad_data/stackup_group.py +22 -0
- pyedb/ipc2581/ecad/cad_data/stackup_layer.py +22 -0
- pyedb/ipc2581/ecad/cad_data/step.py +22 -0
- pyedb/ipc2581/ecad/cad_header.py +22 -0
- pyedb/ipc2581/ecad/ecad.py +22 -0
- pyedb/ipc2581/ecad/spec.py +22 -0
- pyedb/ipc2581/history_record.py +22 -0
- pyedb/ipc2581/ipc2581.py +22 -0
- pyedb/ipc2581/logistic_header.py +22 -0
- pyedb/misc/aedtlib_personalib_install.py +22 -0
- pyedb/misc/downloads.py +22 -0
- pyedb/misc/misc.py +22 -0
- pyedb/misc/siw_feature_config/emc/component_tags.py +3 -5
- pyedb/misc/siw_feature_config/emc/net_tags.py +1 -3
- pyedb/misc/siw_feature_config/emc/tag_library.py +5 -4
- pyedb/misc/siw_feature_config/emc/xml_generic.py +1 -2
- pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +55 -30
- pyedb/siwave.py +6 -4
- {pyedb-0.5.dev0.dist-info → pyedb-0.6.0.dist-info}/METADATA +5 -7
- pyedb-0.6.0.dist-info/RECORD +130 -0
- pyedb-0.5.dev0.dist-info/RECORD +0 -130
- {pyedb-0.5.dev0.dist-info → pyedb-0.6.0.dist-info}/LICENSE +0 -0
- {pyedb-0.5.dev0.dist-info → pyedb-0.6.0.dist-info}/WHEEL +0 -0
pyedb/__init__.py
CHANGED
|
@@ -44,10 +44,9 @@ deprecation_warning()
|
|
|
44
44
|
#
|
|
45
45
|
|
|
46
46
|
pyedb_path = os.path.dirname(__file__)
|
|
47
|
-
__version__ = "0.
|
|
47
|
+
__version__ = "0.6.0"
|
|
48
48
|
version = __version__
|
|
49
49
|
|
|
50
50
|
#
|
|
51
51
|
|
|
52
|
-
from pyedb.generic.design_types import Edb
|
|
53
|
-
from pyedb.generic.design_types import Siwave
|
|
52
|
+
from pyedb.generic.design_types import Edb, Siwave
|
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
1
23
|
"""
|
|
2
24
|
This module contains these classes: `CSVDataset`, `DataSet`, `Expression`, `Variable`, and `VariableManager`.
|
|
3
25
|
|
pyedb/dotnet/edb.py
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
1
23
|
"""This module contains the ``Edb`` class.
|
|
2
24
|
|
|
3
25
|
This module is implicitly loaded in HFSS 3D Layout when launched.
|
|
@@ -191,10 +213,21 @@ class Edb(Database):
|
|
|
191
213
|
os.path.dirname(edbpath),
|
|
192
214
|
"pyedb_" + os.path.splitext(os.path.split(edbpath)[-1])[0] + ".log",
|
|
193
215
|
)
|
|
216
|
+
aedt_file = os.path.splitext(edbpath)[0] + ".aedt"
|
|
217
|
+
files = [aedt_file, aedt_file + ".lock"]
|
|
218
|
+
for file in files:
|
|
219
|
+
if os.path.isfile(file):
|
|
220
|
+
try:
|
|
221
|
+
shutil.rmtree(file)
|
|
222
|
+
self.logger.info(f"Removing {file} to allow loading EDB file.")
|
|
223
|
+
except:
|
|
224
|
+
self.logger.info(
|
|
225
|
+
f"Failed to delete {file} which is located at the same location as the EDB file."
|
|
226
|
+
)
|
|
194
227
|
|
|
195
228
|
if isaedtowned and (inside_desktop or settings.remote_rpc_session):
|
|
196
229
|
self.open_edb_inside_aedt()
|
|
197
|
-
elif edbpath[-3:] in ["brd", "mcm", "sip", "gds", "xml", "dxf", "tgz"]:
|
|
230
|
+
elif edbpath[-3:] in ["brd", "mcm", "sip", "gds", "xml", "dxf", "tgz", "anf"]:
|
|
198
231
|
self.edbpath = edbpath[:-4] + ".aedb"
|
|
199
232
|
working_dir = os.path.dirname(edbpath)
|
|
200
233
|
control_file = None
|
|
@@ -2230,9 +2263,10 @@ class Edb(Database):
|
|
|
2230
2263
|
include_pingroups=include_pingroups,
|
|
2231
2264
|
pins_to_preserve=pins_to_preserve,
|
|
2232
2265
|
)
|
|
2233
|
-
if extent_type in ["Conforming", self.edb_api.geometry.extent_type.Conforming, 1]
|
|
2234
|
-
|
|
2235
|
-
|
|
2266
|
+
if extent_type in ["Conforming", self.edb_api.geometry.extent_type.Conforming, 1]:
|
|
2267
|
+
if extent_defeature > 0:
|
|
2268
|
+
_poly = _poly.Defeature(extent_defeature)
|
|
2269
|
+
_poly = _poly.CreateFromArcs(_poly.GetArcData(), True)
|
|
2236
2270
|
if not _poly or _poly.IsNull():
|
|
2237
2271
|
self._logger.error("Failed to create Extent.")
|
|
2238
2272
|
return []
|
|
@@ -2289,9 +2323,9 @@ class Edb(Database):
|
|
|
2289
2323
|
list_prims = subtract(p, voids_data)
|
|
2290
2324
|
for prim in list_prims:
|
|
2291
2325
|
if not prim.IsNull():
|
|
2292
|
-
poly_to_create.append([prim, prim_1.
|
|
2326
|
+
poly_to_create.append([prim, prim_1.layer.name, net, list_void])
|
|
2293
2327
|
else:
|
|
2294
|
-
poly_to_create.append([p, prim_1.
|
|
2328
|
+
poly_to_create.append([p, prim_1.layer.name, net, list_void])
|
|
2295
2329
|
|
|
2296
2330
|
prims_to_delete.append(prim_1)
|
|
2297
2331
|
|
|
@@ -2317,8 +2351,10 @@ class Edb(Database):
|
|
|
2317
2351
|
|
|
2318
2352
|
for item in reference_paths:
|
|
2319
2353
|
clip_path(item)
|
|
2320
|
-
|
|
2321
|
-
|
|
2354
|
+
for prim in reference_prims: # removing multithreading as failing with new layer from primitive
|
|
2355
|
+
clean_prim(prim)
|
|
2356
|
+
# with ThreadPoolExecutor(number_of_threads) as pool:
|
|
2357
|
+
# pool.map(lambda item: clean_prim(item), reference_prims)
|
|
2322
2358
|
|
|
2323
2359
|
for el in poly_to_create:
|
|
2324
2360
|
self.modeler.create_polygon(el[0], el[1], net_name=el[2], voids=el[3])
|
|
@@ -4234,4 +4270,5 @@ class Edb(Database):
|
|
|
4234
4270
|
def definitions(self):
|
|
4235
4271
|
"""Definitions class."""
|
|
4236
4272
|
from pyedb.dotnet.edb_core.definition.definitions import Definitions
|
|
4237
|
-
|
|
4273
|
+
|
|
4274
|
+
return Definitions(self)
|
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
1
23
|
from pyedb.dotnet.edb_core.edb_data.obj_base import ObjBase
|
|
2
24
|
from pyedb.generic.general_methods import pyedb_function_handler
|
|
3
25
|
|
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
1
23
|
"""This module contains the `Components` class.
|
|
2
24
|
|
|
3
25
|
"""
|
|
@@ -8,10 +30,10 @@ import re
|
|
|
8
30
|
import warnings
|
|
9
31
|
|
|
10
32
|
from pyedb.dotnet.clr_module import String
|
|
33
|
+
from pyedb.dotnet.edb_core.definition.component_def import EDBComponentDef
|
|
11
34
|
from pyedb.dotnet.edb_core.edb_data.components_data import EDBComponent
|
|
12
35
|
from pyedb.dotnet.edb_core.edb_data.padstacks_data import EDBPadstackInstance
|
|
13
36
|
from pyedb.dotnet.edb_core.edb_data.sources import Source, SourceType
|
|
14
|
-
from pyedb.dotnet.edb_core.definition.component_def import EDBComponentDef
|
|
15
37
|
from pyedb.dotnet.edb_core.general import convert_py_list_to_net_list
|
|
16
38
|
from pyedb.dotnet.edb_core.padstack import EdbPadstacks
|
|
17
39
|
from pyedb.generic.general_methods import (
|
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
1
23
|
import json
|
|
2
24
|
from pathlib import Path
|
|
3
25
|
|
|
@@ -95,12 +117,11 @@ class Configuration:
|
|
|
95
117
|
|
|
96
118
|
return True
|
|
97
119
|
|
|
98
|
-
|
|
99
120
|
@pyedb_function_handler
|
|
100
121
|
def _load_components(self):
|
|
101
122
|
"""Imports component information from json."""
|
|
102
123
|
|
|
103
|
-
for comp in self.data["components"]
|
|
124
|
+
for comp in self.data["components"]:
|
|
104
125
|
refdes = comp["reference_designator"]
|
|
105
126
|
part_type = comp["part_type"].lower()
|
|
106
127
|
if part_type == "resistor":
|
|
@@ -1,10 +1,30 @@
|
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
1
23
|
import os
|
|
2
24
|
|
|
25
|
+
from pyedb.dotnet.edb_core.definition.component_model import NPortComponentModel
|
|
3
26
|
from pyedb.dotnet.edb_core.edb_data.obj_base import ObjBase
|
|
4
27
|
from pyedb.generic.general_methods import pyedb_function_handler
|
|
5
|
-
from pyedb.dotnet.edb_core.definition.component_model import (
|
|
6
|
-
NPortComponentModel
|
|
7
|
-
)
|
|
8
28
|
|
|
9
29
|
|
|
10
30
|
class EDBComponentDef(ObjBase):
|
|
@@ -65,6 +85,7 @@ class EDBComponentDef(ObjBase):
|
|
|
65
85
|
dict of :class:`EDBComponent`
|
|
66
86
|
"""
|
|
67
87
|
from pyedb.dotnet.edb_core.edb_data.components_data import EDBComponent
|
|
88
|
+
|
|
68
89
|
comp_list = [
|
|
69
90
|
EDBComponent(self._pedb, l)
|
|
70
91
|
for l in self._pedb.edb_api.cell.hierarchy.component.FindByComponentDef(
|
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
1
23
|
from pyedb.dotnet.edb_core.edb_data.obj_base import ObjBase
|
|
2
24
|
from pyedb.generic.general_methods import pyedb_function_handler
|
|
3
25
|
|
|
@@ -1,13 +1,34 @@
|
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
1
23
|
from pyedb.dotnet.edb_core.edb_data.obj_base import ObjBase
|
|
2
|
-
from pyedb.generic.general_methods import pyedb_function_handler
|
|
3
24
|
|
|
4
25
|
|
|
5
26
|
class DefinitionObj(ObjBase):
|
|
6
27
|
"""Base class for definition objects."""
|
|
7
|
-
|
|
28
|
+
|
|
8
29
|
def __init__(self, pedb, edb_object):
|
|
9
30
|
super().__init__(pedb, edb_object)
|
|
10
|
-
|
|
31
|
+
|
|
11
32
|
@property
|
|
12
33
|
def definition_obj_type(self):
|
|
13
34
|
return self._edb_object.GetDefinitionObjType()
|
|
@@ -15,4 +36,3 @@ class DefinitionObj(ObjBase):
|
|
|
15
36
|
@property
|
|
16
37
|
def name(self):
|
|
17
38
|
return self._edb_object.GetName()
|
|
18
|
-
|
|
@@ -1,4 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
2
23
|
from pyedb.dotnet.edb_core.definition.component_def import EDBComponentDef
|
|
3
24
|
from pyedb.dotnet.edb_core.definition.package_def import PackageDef
|
|
4
25
|
from pyedb.generic.general_methods import pyedb_function_handler
|
|
@@ -1,8 +1,28 @@
|
|
|
1
|
-
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
2
22
|
|
|
23
|
+
from pyedb.dotnet.edb_core.dotnet.database import PolygonDataDotNet
|
|
3
24
|
from pyedb.dotnet.edb_core.edb_data.obj_base import ObjBase
|
|
4
25
|
from pyedb.generic.general_methods import pyedb_function_handler
|
|
5
|
-
from pyedb.dotnet.edb_core.dotnet.database import PolygonDataDotNet
|
|
6
26
|
|
|
7
27
|
|
|
8
28
|
class PackageDef(ObjBase):
|
|
@@ -83,7 +103,7 @@ class PackageDef(ObjBase):
|
|
|
83
103
|
return self._edb_object.GetTheta_JC().ToDouble()
|
|
84
104
|
|
|
85
105
|
@theta_jc.setter
|
|
86
|
-
def theta_jc(self,value):
|
|
106
|
+
def theta_jc(self, value):
|
|
87
107
|
value = self._pedb.edb_value(value)
|
|
88
108
|
self._edb_object.SetTheta_JC(value)
|
|
89
109
|
|
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
1
23
|
"""Database."""
|
|
2
24
|
import os
|
|
3
25
|
import re
|
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
1
23
|
from pyedb.dotnet.edb_core.dotnet.database import NetDotNet
|
|
2
24
|
from pyedb.dotnet.edb_core.dotnet.primitive import cast
|
|
3
25
|
from pyedb.dotnet.edb_core.general import convert_py_list_to_net_list
|
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
1
23
|
"""Primitive."""
|
|
2
24
|
from pyedb.dotnet.edb_core.dotnet.database import NetDotNet, PolygonDataDotNet
|
|
3
25
|
from pyedb.dotnet.edb_core.general import convert_py_list_to_net_list
|
|
@@ -1,9 +1,31 @@
|
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
1
23
|
import logging
|
|
2
24
|
import re
|
|
3
25
|
import warnings
|
|
4
26
|
|
|
5
|
-
from pyedb.dotnet.edb_core.definition.package_def import PackageDef
|
|
6
27
|
from pyedb.dotnet.edb_core.cell.hierarchy.model import PinPairModel
|
|
28
|
+
from pyedb.dotnet.edb_core.definition.package_def import PackageDef
|
|
7
29
|
from pyedb.dotnet.edb_core.edb_data.padstacks_data import EDBPadstackInstance
|
|
8
30
|
from pyedb.generic.general_methods import is_ironpython
|
|
9
31
|
|
|
@@ -175,6 +197,11 @@ class EDBComponent(object):
|
|
|
175
197
|
"""``ComponentProperty`` object."""
|
|
176
198
|
return self.edbcomponent.GetComponentProperty().Clone()
|
|
177
199
|
|
|
200
|
+
@component_property.setter
|
|
201
|
+
def component_property(self, value):
|
|
202
|
+
if value:
|
|
203
|
+
self.edbcomponent.SetComponentProperty(value)
|
|
204
|
+
|
|
178
205
|
@property
|
|
179
206
|
def _edb_model(self): # pragma: no cover
|
|
180
207
|
return self.component_property.GetModel().Clone()
|
|
@@ -242,6 +269,7 @@ class EDBComponent(object):
|
|
|
242
269
|
self.package_def = name
|
|
243
270
|
|
|
244
271
|
from pyedb.dotnet.edb_core.dotnet.database import PolygonDataDotNet
|
|
272
|
+
|
|
245
273
|
polygon = PolygonDataDotNet(self._pedb).create_from_bbox(self.component_instance.GetBBox())
|
|
246
274
|
self.package_def._edb_object.SetExteriorBoundary(polygon)
|
|
247
275
|
return True
|
|
@@ -297,6 +325,84 @@ class EDBComponent(object):
|
|
|
297
325
|
return self.component_property.GetSolderBallProperty().GetHeight()
|
|
298
326
|
return None
|
|
299
327
|
|
|
328
|
+
@solder_ball_height.setter
|
|
329
|
+
def solder_ball_height(self, value):
|
|
330
|
+
if "GetSolderBallProperty" in dir(self.component_property) and value:
|
|
331
|
+
sball_height = round(self._edb.utility.Value(value).ToDouble(), 9)
|
|
332
|
+
cmp_property = self.component_property
|
|
333
|
+
solder_ball_prop = cmp_property.GetSolderBallProperty().Clone()
|
|
334
|
+
solder_ball_prop.SetHeight(self._get_edb_value(sball_height))
|
|
335
|
+
cmp_property.SetSolderBallProperty(solder_ball_prop)
|
|
336
|
+
self.component_property = cmp_property
|
|
337
|
+
|
|
338
|
+
@property
|
|
339
|
+
def solder_ball_shape(self):
|
|
340
|
+
"""Solder ball shape."""
|
|
341
|
+
if "GetSolderBallProperty" in dir(self.component_property):
|
|
342
|
+
shape = self.component_property.GetSolderBallProperty().GetShape()
|
|
343
|
+
if shape.value__ == 0:
|
|
344
|
+
return "None"
|
|
345
|
+
elif shape.value__ == 1:
|
|
346
|
+
return "Cylinder"
|
|
347
|
+
elif shape.value__ == 2:
|
|
348
|
+
return "Spheroid"
|
|
349
|
+
|
|
350
|
+
@solder_ball_shape.setter
|
|
351
|
+
def solder_ball_shape(self, value):
|
|
352
|
+
shape = None
|
|
353
|
+
if isinstance(value, str):
|
|
354
|
+
if value.lower() == "cylinder":
|
|
355
|
+
shape = self._edb.definition.SolderballShape.Cylinder
|
|
356
|
+
elif value.lower() == "none":
|
|
357
|
+
shape = self._edb.definition.SolderballShape.NoSolderball
|
|
358
|
+
elif value.lower() == "spheroid":
|
|
359
|
+
shape = self._edb.definition.SolderballShape.Spheroid
|
|
360
|
+
if isinstance(value, int):
|
|
361
|
+
if value == 0:
|
|
362
|
+
shape = self._edb.definition.SolderballShape.NoSolderball
|
|
363
|
+
elif value == 1:
|
|
364
|
+
shape = self._edb.definition.SolderballShape.Cylinder
|
|
365
|
+
elif value == 2:
|
|
366
|
+
shape = self._edb.definition.SolderballShape.Spheroid
|
|
367
|
+
if shape:
|
|
368
|
+
cmp_property = self.component_property
|
|
369
|
+
solder_ball_prop = cmp_property.GetSolderBallProperty().Clone()
|
|
370
|
+
solder_ball_prop.SetShape(shape)
|
|
371
|
+
cmp_property.SetSolderBallProperty(solder_ball_prop)
|
|
372
|
+
self.component_property = cmp_property
|
|
373
|
+
|
|
374
|
+
@property
|
|
375
|
+
def solder_ball_diameter(self):
|
|
376
|
+
"""Solder ball diameter"""
|
|
377
|
+
if "GetSolderBallProperty" in dir(self.component_property):
|
|
378
|
+
result = self.component_property.GetSolderBallProperty().GetDiameter()
|
|
379
|
+
succeed = result[0]
|
|
380
|
+
diameter = result[1]
|
|
381
|
+
mid_diameter = result[2]
|
|
382
|
+
if succeed:
|
|
383
|
+
return diameter, mid_diameter
|
|
384
|
+
|
|
385
|
+
@solder_ball_diameter.setter
|
|
386
|
+
def solder_ball_diameter(self, value):
|
|
387
|
+
diameter = None
|
|
388
|
+
mid_diameter = None # used with spheroid shape
|
|
389
|
+
if isinstance(value, tuple) or isinstance(value, list):
|
|
390
|
+
if len(value) == 2:
|
|
391
|
+
diameter = self._get_edb_value(value[0])
|
|
392
|
+
mid_diameter = self._get_edb_value(value[1])
|
|
393
|
+
elif len(value) == 1:
|
|
394
|
+
diameter = self._get_edb_value(value[0])
|
|
395
|
+
mid_diameter = self._get_edb_value(value[0])
|
|
396
|
+
if isinstance(value, str):
|
|
397
|
+
diameter = self._get_edb_value(value)
|
|
398
|
+
mid_diameter = self._get_edb_value(value)
|
|
399
|
+
if diameter and mid_diameter:
|
|
400
|
+
cmp_property = self.component_property
|
|
401
|
+
solder_ball_prop = cmp_property.GetSolderBallProperty().Clone()
|
|
402
|
+
solder_ball_prop.SetDiameter(diameter, mid_diameter)
|
|
403
|
+
cmp_property.SetSolderBallProperty(solder_ball_prop)
|
|
404
|
+
self.component_property = cmp_property
|
|
405
|
+
|
|
300
406
|
@property
|
|
301
407
|
def solder_ball_placement(self):
|
|
302
408
|
"""Solder ball placement if available.."""
|
|
@@ -903,7 +1009,6 @@ class EDBComponent(object):
|
|
|
903
1009
|
model.SetReferenceNet(reference_net)
|
|
904
1010
|
return self._set_model(model)
|
|
905
1011
|
|
|
906
|
-
|
|
907
1012
|
@pyedb_function_handler()
|
|
908
1013
|
def assign_rlc_model(self, res=None, ind=None, cap=None, is_parallel=False):
|
|
909
1014
|
"""Assign RLC to this component.
|