pyedb 0.5.2__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.

Files changed (108) hide show
  1. pyedb/__init__.py +2 -3
  2. pyedb/dotnet/application/Variables.py +22 -0
  3. pyedb/dotnet/edb.py +42 -6
  4. pyedb/dotnet/edb_core/cell/hierarchy/model.py +22 -0
  5. pyedb/dotnet/edb_core/components.py +23 -1
  6. pyedb/dotnet/edb_core/configuration.py +23 -2
  7. pyedb/dotnet/edb_core/definition/component_def.py +24 -3
  8. pyedb/dotnet/edb_core/definition/component_model.py +22 -0
  9. pyedb/dotnet/edb_core/definition/definition_obj.py +24 -4
  10. pyedb/dotnet/edb_core/definition/definitions.py +22 -1
  11. pyedb/dotnet/edb_core/definition/package_def.py +23 -3
  12. pyedb/dotnet/edb_core/dotnet/database.py +22 -0
  13. pyedb/dotnet/edb_core/dotnet/layout.py +22 -0
  14. pyedb/dotnet/edb_core/dotnet/primitive.py +22 -0
  15. pyedb/dotnet/edb_core/edb_data/components_data.py +107 -2
  16. pyedb/dotnet/edb_core/edb_data/connectable.py +22 -0
  17. pyedb/dotnet/edb_core/edb_data/control_file.py +22 -0
  18. pyedb/dotnet/edb_core/edb_data/design_options.py +23 -0
  19. pyedb/dotnet/edb_core/edb_data/edbvalue.py +23 -0
  20. pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py +22 -0
  21. pyedb/dotnet/edb_core/edb_data/hfss_simulation_setup_data.py +22 -0
  22. pyedb/dotnet/edb_core/edb_data/layer_data.py +22 -0
  23. pyedb/dotnet/edb_core/edb_data/nets_data.py +23 -1
  24. pyedb/dotnet/edb_core/edb_data/obj_base.py +23 -0
  25. pyedb/dotnet/edb_core/edb_data/padstacks_data.py +22 -0
  26. pyedb/dotnet/edb_core/edb_data/ports.py +22 -0
  27. pyedb/dotnet/edb_core/edb_data/primitives_data.py +62 -7
  28. pyedb/dotnet/edb_core/edb_data/simulation_configuration.py +22 -0
  29. pyedb/dotnet/edb_core/edb_data/simulation_setup.py +22 -0
  30. pyedb/dotnet/edb_core/edb_data/siwave_simulation_setup_data.py +22 -0
  31. pyedb/dotnet/edb_core/edb_data/sources.py +23 -3
  32. pyedb/dotnet/edb_core/edb_data/terminals.py +22 -0
  33. pyedb/dotnet/edb_core/edb_data/utilities.py +25 -2
  34. pyedb/dotnet/edb_core/edb_data/variables.py +23 -0
  35. pyedb/dotnet/edb_core/general.py +22 -0
  36. pyedb/dotnet/edb_core/hfss.py +22 -0
  37. pyedb/dotnet/edb_core/layout.py +33 -4
  38. pyedb/dotnet/edb_core/layout_validation.py +24 -2
  39. pyedb/dotnet/edb_core/materials.py +22 -0
  40. pyedb/dotnet/edb_core/net_class.py +22 -0
  41. pyedb/dotnet/edb_core/nets.py +22 -0
  42. pyedb/dotnet/edb_core/padstack.py +22 -0
  43. pyedb/dotnet/edb_core/siwave.py +22 -0
  44. pyedb/dotnet/edb_core/stackup.py +22 -0
  45. pyedb/edb_logger.py +22 -0
  46. pyedb/generic/constants.py +22 -0
  47. pyedb/generic/data_handlers.py +0 -1
  48. pyedb/generic/design_types.py +24 -0
  49. pyedb/generic/general_methods.py +22 -2
  50. pyedb/generic/plot.py +3 -13
  51. pyedb/generic/settings.py +22 -0
  52. pyedb/ipc2581/bom/bom.py +22 -0
  53. pyedb/ipc2581/bom/bom_item.py +22 -0
  54. pyedb/ipc2581/bom/characteristics.py +22 -0
  55. pyedb/ipc2581/bom/refdes.py +22 -0
  56. pyedb/ipc2581/content/color.py +22 -0
  57. pyedb/ipc2581/content/content.py +22 -0
  58. pyedb/ipc2581/content/dictionary_color.py +22 -0
  59. pyedb/ipc2581/content/dictionary_fill.py +22 -0
  60. pyedb/ipc2581/content/dictionary_line.py +22 -0
  61. pyedb/ipc2581/content/entry_color.py +22 -0
  62. pyedb/ipc2581/content/entry_line.py +22 -0
  63. pyedb/ipc2581/content/fill.py +22 -0
  64. pyedb/ipc2581/content/layer_ref.py +22 -0
  65. pyedb/ipc2581/content/standard_geometries_dictionary.py +22 -0
  66. pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +22 -0
  67. pyedb/ipc2581/ecad/cad_data/cad_data.py +22 -0
  68. pyedb/ipc2581/ecad/cad_data/component.py +22 -0
  69. pyedb/ipc2581/ecad/cad_data/drill.py +22 -0
  70. pyedb/ipc2581/ecad/cad_data/feature.py +22 -0
  71. pyedb/ipc2581/ecad/cad_data/layer.py +22 -0
  72. pyedb/ipc2581/ecad/cad_data/layer_feature.py +22 -0
  73. pyedb/ipc2581/ecad/cad_data/logical_net.py +22 -0
  74. pyedb/ipc2581/ecad/cad_data/outline.py +22 -0
  75. pyedb/ipc2581/ecad/cad_data/package.py +22 -0
  76. pyedb/ipc2581/ecad/cad_data/padstack_def.py +22 -0
  77. pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +22 -0
  78. pyedb/ipc2581/ecad/cad_data/padstack_instance.py +22 -0
  79. pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +22 -0
  80. pyedb/ipc2581/ecad/cad_data/path.py +22 -0
  81. pyedb/ipc2581/ecad/cad_data/phy_net.py +22 -0
  82. pyedb/ipc2581/ecad/cad_data/pin.py +22 -0
  83. pyedb/ipc2581/ecad/cad_data/polygon.py +22 -0
  84. pyedb/ipc2581/ecad/cad_data/profile.py +22 -0
  85. pyedb/ipc2581/ecad/cad_data/stackup.py +22 -0
  86. pyedb/ipc2581/ecad/cad_data/stackup_group.py +22 -0
  87. pyedb/ipc2581/ecad/cad_data/stackup_layer.py +22 -0
  88. pyedb/ipc2581/ecad/cad_data/step.py +22 -0
  89. pyedb/ipc2581/ecad/cad_header.py +22 -0
  90. pyedb/ipc2581/ecad/ecad.py +22 -0
  91. pyedb/ipc2581/ecad/spec.py +22 -0
  92. pyedb/ipc2581/history_record.py +22 -0
  93. pyedb/ipc2581/ipc2581.py +22 -0
  94. pyedb/ipc2581/logistic_header.py +22 -0
  95. pyedb/misc/aedtlib_personalib_install.py +22 -0
  96. pyedb/misc/downloads.py +22 -0
  97. pyedb/misc/misc.py +22 -0
  98. pyedb/misc/siw_feature_config/emc/component_tags.py +3 -5
  99. pyedb/misc/siw_feature_config/emc/net_tags.py +1 -3
  100. pyedb/misc/siw_feature_config/emc/tag_library.py +5 -4
  101. pyedb/misc/siw_feature_config/emc/xml_generic.py +1 -2
  102. pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +55 -30
  103. pyedb/siwave.py +6 -4
  104. {pyedb-0.5.2.dist-info → pyedb-0.6.0.dist-info}/METADATA +1 -1
  105. pyedb-0.6.0.dist-info/RECORD +130 -0
  106. pyedb-0.5.2.dist-info/RECORD +0 -130
  107. {pyedb-0.5.2.dist-info → pyedb-0.6.0.dist-info}/LICENSE +0 -0
  108. {pyedb-0.5.2.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.5.2"
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
@@ -2290,9 +2323,9 @@ class Edb(Database):
2290
2323
  list_prims = subtract(p, voids_data)
2291
2324
  for prim in list_prims:
2292
2325
  if not prim.IsNull():
2293
- poly_to_create.append([prim, prim_1.layer_name, net, list_void])
2326
+ poly_to_create.append([prim, prim_1.layer.name, net, list_void])
2294
2327
  else:
2295
- poly_to_create.append([p, prim_1.layer_name, net, list_void])
2328
+ poly_to_create.append([p, prim_1.layer.name, net, list_void])
2296
2329
 
2297
2330
  prims_to_delete.append(prim_1)
2298
2331
 
@@ -2318,8 +2351,10 @@ class Edb(Database):
2318
2351
 
2319
2352
  for item in reference_paths:
2320
2353
  clip_path(item)
2321
- with ThreadPoolExecutor(number_of_threads) as pool:
2322
- pool.map(lambda item: clean_prim(item), reference_prims)
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)
2323
2358
 
2324
2359
  for el in poly_to_create:
2325
2360
  self.modeler.create_polygon(el[0], el[1], net_name=el[2], voids=el[3])
@@ -4235,4 +4270,5 @@ class Edb(Database):
4235
4270
  def definitions(self):
4236
4271
  """Definitions class."""
4237
4272
  from pyedb.dotnet.edb_core.definition.definitions import Definitions
4238
- return Definitions(self)
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
- import os
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
- import os
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.
@@ -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