pyedb 0.13.0__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.0.dist-info → pyedb-0.14.0.dist-info}/METADATA +2 -2
- {pyedb-0.13.0.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.0.dist-info → pyedb-0.14.0.dist-info}/LICENSE +0 -0
- {pyedb-0.13.0.dist-info → pyedb-0.14.0.dist-info}/WHEEL +0 -0
|
@@ -22,8 +22,6 @@
|
|
|
22
22
|
|
|
23
23
|
from __future__ import absolute_import
|
|
24
24
|
|
|
25
|
-
from pyedb.generic.general_methods import pyedb_function_handler
|
|
26
|
-
|
|
27
25
|
|
|
28
26
|
class LayerEdbClass(object):
|
|
29
27
|
"""Manages Edb Layers. Replaces EDBLayer."""
|
|
@@ -40,7 +38,6 @@ class LayerEdbClass(object):
|
|
|
40
38
|
self._create(layer_type)
|
|
41
39
|
self.update(**kwargs)
|
|
42
40
|
|
|
43
|
-
@pyedb_function_handler
|
|
44
41
|
def _create(self, layer_type):
|
|
45
42
|
layer_type = self._layer_name_mapping[layer_type]
|
|
46
43
|
layer_type = self._doc_layer_mapping[layer_type]
|
|
@@ -50,7 +47,6 @@ class LayerEdbClass(object):
|
|
|
50
47
|
layer_type,
|
|
51
48
|
)
|
|
52
49
|
|
|
53
|
-
@pyedb_function_handler
|
|
54
50
|
def update(self, **kwargs):
|
|
55
51
|
for k, v in kwargs.items():
|
|
56
52
|
if k in dir(self):
|
|
@@ -539,7 +535,6 @@ class StackupLayerEdbClass(LayerEdbClass):
|
|
|
539
535
|
def side_hallhuray_surface_ratio(self, value):
|
|
540
536
|
self._side_hallhuray_surface_ratio = value
|
|
541
537
|
|
|
542
|
-
@pyedb_function_handler()
|
|
543
538
|
def get_roughness_model(self, surface="top"):
|
|
544
539
|
"""Get roughness model of the layer.
|
|
545
540
|
|
|
@@ -562,7 +557,6 @@ class StackupLayerEdbClass(LayerEdbClass):
|
|
|
562
557
|
elif surface == "side":
|
|
563
558
|
return self._edb_layer.GetRoughnessModel(self._pedb.edb_api.Cell.RoughnessModel.Region.Side)
|
|
564
559
|
|
|
565
|
-
@pyedb_function_handler()
|
|
566
560
|
def assign_roughness_model(
|
|
567
561
|
self,
|
|
568
562
|
model_type="huray",
|
|
@@ -627,7 +621,6 @@ class StackupLayerEdbClass(LayerEdbClass):
|
|
|
627
621
|
layer_clone.SetRoughnessModel(r, model)
|
|
628
622
|
return self._pedb.stackup._set_layout_stackup(layer_clone, "change_attribute")
|
|
629
623
|
|
|
630
|
-
@pyedb_function_handler()
|
|
631
624
|
def _json_format(self):
|
|
632
625
|
dict_out = {}
|
|
633
626
|
self._color = self.color
|
|
@@ -28,7 +28,6 @@ from pyedb.dotnet.edb_core.dotnet.database import (
|
|
|
28
28
|
)
|
|
29
29
|
from pyedb.dotnet.edb_core.edb_data.padstacks_data import EDBPadstackInstance
|
|
30
30
|
from pyedb.dotnet.edb_core.edb_data.primitives_data import cast
|
|
31
|
-
from pyedb.generic.general_methods import pyedb_function_handler
|
|
32
31
|
|
|
33
32
|
|
|
34
33
|
class EDBNetsData(NetDotNet):
|
|
@@ -58,6 +57,7 @@ class EDBNetsData(NetDotNet):
|
|
|
58
57
|
self._core_components = core_app.components
|
|
59
58
|
self._core_primitive = core_app.modeler
|
|
60
59
|
self.net_object = raw_net
|
|
60
|
+
self._edb_object = raw_net
|
|
61
61
|
NetDotNet.__init__(self, self._app, raw_net)
|
|
62
62
|
|
|
63
63
|
@property
|
|
@@ -88,7 +88,7 @@ class EDBNetsData(NetDotNet):
|
|
|
88
88
|
|
|
89
89
|
Returns
|
|
90
90
|
-------
|
|
91
|
-
dict[str, :class:`pyedb.dotnet.edb_core.
|
|
91
|
+
dict[str, :class:`pyedb.dotnet.edb_core.cell.hierarchy.component.EDBComponent`]
|
|
92
92
|
"""
|
|
93
93
|
comps = {}
|
|
94
94
|
for p in self.padstack_instances:
|
|
@@ -98,7 +98,6 @@ class EDBNetsData(NetDotNet):
|
|
|
98
98
|
comps[comp.refdes] = comp
|
|
99
99
|
return comps
|
|
100
100
|
|
|
101
|
-
@pyedb_function_handler()
|
|
102
101
|
def find_dc_short(self, fix=False):
|
|
103
102
|
"""Find DC-shorted nets.
|
|
104
103
|
|
|
@@ -115,7 +114,6 @@ class EDBNetsData(NetDotNet):
|
|
|
115
114
|
"""
|
|
116
115
|
return self._app.layout_validation.dc_shorts(self.name, fix)
|
|
117
116
|
|
|
118
|
-
@pyedb_function_handler()
|
|
119
117
|
def plot(
|
|
120
118
|
self,
|
|
121
119
|
layers=None,
|
|
@@ -155,7 +153,6 @@ class EDBNetsData(NetDotNet):
|
|
|
155
153
|
show=show,
|
|
156
154
|
)
|
|
157
155
|
|
|
158
|
-
@pyedb_function_handler()
|
|
159
156
|
def get_smallest_trace_width(self):
|
|
160
157
|
"""Retrieve the smallest trace width from paths.
|
|
161
158
|
|
|
@@ -30,11 +30,7 @@ from pyedb.dotnet.edb_core.cell.primitive import Primitive
|
|
|
30
30
|
from pyedb.dotnet.edb_core.dotnet.database import PolygonDataDotNet
|
|
31
31
|
from pyedb.dotnet.edb_core.edb_data.edbvalue import EdbValue
|
|
32
32
|
from pyedb.dotnet.edb_core.general import PadGeometryTpe, convert_py_list_to_net_list
|
|
33
|
-
from pyedb.generic.general_methods import
|
|
34
|
-
generate_unique_name,
|
|
35
|
-
is_ironpython,
|
|
36
|
-
pyedb_function_handler,
|
|
37
|
-
)
|
|
33
|
+
from pyedb.generic.general_methods import generate_unique_name, is_ironpython
|
|
38
34
|
from pyedb.modeler.geometry_operators import GeometryOperators
|
|
39
35
|
|
|
40
36
|
|
|
@@ -300,7 +296,6 @@ class EDBPadProperties(object):
|
|
|
300
296
|
def rotation(self, rotation_value):
|
|
301
297
|
self._update_pad_parameters_parameters(rotation=rotation_value)
|
|
302
298
|
|
|
303
|
-
@pyedb_function_handler()
|
|
304
299
|
def int_to_pad_type(self, val=0):
|
|
305
300
|
"""Convert an integer to an EDB.PadGeometryType.
|
|
306
301
|
|
|
@@ -315,7 +310,6 @@ class EDBPadProperties(object):
|
|
|
315
310
|
"""
|
|
316
311
|
return self._pedbpadstack._ppadstack.int_to_pad_type(val)
|
|
317
312
|
|
|
318
|
-
@pyedb_function_handler()
|
|
319
313
|
def int_to_geometry_type(self, val=0):
|
|
320
314
|
"""Convert an integer to an EDB.PadGeometryType.
|
|
321
315
|
|
|
@@ -330,7 +324,6 @@ class EDBPadProperties(object):
|
|
|
330
324
|
"""
|
|
331
325
|
return self._pedbpadstack._ppadstack.int_to_geometry_type(val)
|
|
332
326
|
|
|
333
|
-
@pyedb_function_handler()
|
|
334
327
|
def _update_pad_parameters_parameters(
|
|
335
328
|
self,
|
|
336
329
|
layer_name=None,
|
|
@@ -521,7 +514,6 @@ class EDBPadstack(object):
|
|
|
521
514
|
"""Hole diameter in string format."""
|
|
522
515
|
return list(self.hole_params[2])[0].ToString()
|
|
523
516
|
|
|
524
|
-
@pyedb_function_handler()
|
|
525
517
|
def _update_hole_parameters(self, hole_type=None, params=None, offsetx=None, offsety=None, rotation=None):
|
|
526
518
|
"""Update hole parameters.
|
|
527
519
|
|
|
@@ -777,7 +769,6 @@ class EDBPadstack(object):
|
|
|
777
769
|
return
|
|
778
770
|
self.edb_padstack.SetData(cloned_padstackdef_data)
|
|
779
771
|
|
|
780
|
-
@pyedb_function_handler()
|
|
781
772
|
def convert_to_3d_microvias(self, convert_only_signal_vias=True, hole_wall_angle=15, delete_padstack_def=True):
|
|
782
773
|
"""Convert actual padstack instance to microvias 3D Objects with a given aspect ratio.
|
|
783
774
|
|
|
@@ -905,7 +896,6 @@ class EDBPadstack(object):
|
|
|
905
896
|
self._ppadstack._pedb.logger.info("{} Converted successfully to 3D Objects.".format(i))
|
|
906
897
|
return True
|
|
907
898
|
|
|
908
|
-
@pyedb_function_handler()
|
|
909
899
|
def split_to_microvias(self):
|
|
910
900
|
"""Convert actual padstack definition to multiple microvias definitions.
|
|
911
901
|
|
|
@@ -1045,7 +1035,6 @@ class EDBPadstack(object):
|
|
|
1045
1035
|
self._ppadstack._pedb.logger.info("Created {} new microvias.".format(i))
|
|
1046
1036
|
return new_instances
|
|
1047
1037
|
|
|
1048
|
-
@pyedb_function_handler()
|
|
1049
1038
|
def _update_layer_names(self, old_name, updated_name):
|
|
1050
1039
|
"""Update padstack definition layer name when layer name is edited with the layer name setter.
|
|
1051
1040
|
Parameters
|
|
@@ -1187,7 +1176,7 @@ class EDBPadstackInstance(Primitive):
|
|
|
1187
1176
|
if create_new_terminal:
|
|
1188
1177
|
term = self._create_terminal(name)
|
|
1189
1178
|
else:
|
|
1190
|
-
from pyedb.dotnet.edb_core.
|
|
1179
|
+
from pyedb.dotnet.edb_core.cell.terminal.padstack_instance_terminal import (
|
|
1191
1180
|
PadstackInstanceTerminal,
|
|
1192
1181
|
)
|
|
1193
1182
|
|
|
@@ -1198,33 +1187,33 @@ class EDBPadstackInstance(Primitive):
|
|
|
1198
1187
|
@property
|
|
1199
1188
|
def terminal(self):
|
|
1200
1189
|
"""Terminal."""
|
|
1201
|
-
from pyedb.dotnet.edb_core.
|
|
1190
|
+
from pyedb.dotnet.edb_core.cell.terminal.padstack_instance_terminal import (
|
|
1191
|
+
PadstackInstanceTerminal,
|
|
1192
|
+
)
|
|
1202
1193
|
|
|
1203
1194
|
term = PadstackInstanceTerminal(self._pedb, self._edb_object.GetPadstackInstanceTerminal())
|
|
1204
1195
|
return term if not term.is_null else None
|
|
1205
1196
|
|
|
1206
|
-
@pyedb_function_handler()
|
|
1207
1197
|
def _create_terminal(self, name=None):
|
|
1208
1198
|
"""Create a padstack instance terminal"""
|
|
1209
1199
|
warnings.warn("`_create_terminal` is deprecated. Use `create_terminal` instead.", DeprecationWarning)
|
|
1210
1200
|
return self.create_terminal(name)
|
|
1211
1201
|
|
|
1212
|
-
@pyedb_function_handler
|
|
1213
1202
|
def create_terminal(self, name=None):
|
|
1214
1203
|
"""Create a padstack instance terminal"""
|
|
1215
|
-
from pyedb.dotnet.edb_core.
|
|
1204
|
+
from pyedb.dotnet.edb_core.cell.terminal.padstack_instance_terminal import (
|
|
1205
|
+
PadstackInstanceTerminal,
|
|
1206
|
+
)
|
|
1216
1207
|
|
|
1217
1208
|
term = PadstackInstanceTerminal(self._pedb, self._edb_object.GetPadstackInstanceTerminal())
|
|
1218
1209
|
return term.create(self, name)
|
|
1219
1210
|
|
|
1220
|
-
@pyedb_function_handler()
|
|
1221
1211
|
def create_coax_port(self, name=None, radial_extent_factor=0):
|
|
1222
1212
|
"""Create a coax port."""
|
|
1223
1213
|
port = self.create_port(name)
|
|
1224
1214
|
port.radial_extent_factor = radial_extent_factor
|
|
1225
1215
|
return port
|
|
1226
1216
|
|
|
1227
|
-
@pyedb_function_handler
|
|
1228
1217
|
def create_port(self, name=None, reference=None, is_circuit_port=False):
|
|
1229
1218
|
"""Create a port on the padstack.
|
|
1230
1219
|
|
|
@@ -1239,9 +1228,9 @@ class EDBPadstackInstance(Primitive):
|
|
|
1239
1228
|
is_circuit_port : bool, optional
|
|
1240
1229
|
Whether it is a circuit port.
|
|
1241
1230
|
"""
|
|
1242
|
-
terminal = self.
|
|
1231
|
+
terminal = self.create_terminal(name)
|
|
1243
1232
|
if reference:
|
|
1244
|
-
ref_terminal = reference.
|
|
1233
|
+
ref_terminal = reference.create_terminal(terminal.name + "_ref")
|
|
1245
1234
|
if reference._edb_object.ToString() == "PinGroup":
|
|
1246
1235
|
is_circuit_port = True
|
|
1247
1236
|
else:
|
|
@@ -1341,7 +1330,6 @@ class EDBPadstackInstance(Primitive):
|
|
|
1341
1330
|
]
|
|
1342
1331
|
return self._bounding_box
|
|
1343
1332
|
|
|
1344
|
-
@pyedb_function_handler()
|
|
1345
1333
|
def in_polygon(self, polygon_data, include_partial=True, simple_check=False):
|
|
1346
1334
|
"""Check if padstack Instance is in given polygon data.
|
|
1347
1335
|
|
|
@@ -1637,7 +1625,7 @@ class EDBPadstackInstance(Primitive):
|
|
|
1637
1625
|
@property
|
|
1638
1626
|
def component(self):
|
|
1639
1627
|
"""Component."""
|
|
1640
|
-
from pyedb.dotnet.edb_core.
|
|
1628
|
+
from pyedb.dotnet.edb_core.cell.hierarchy.component import EDBComponent
|
|
1641
1629
|
|
|
1642
1630
|
comp = EDBComponent(self._pedb, self._edb_object.GetComponent())
|
|
1643
1631
|
return comp if not comp.is_null else False
|
|
@@ -1768,7 +1756,6 @@ class EDBPadstackInstance(Primitive):
|
|
|
1768
1756
|
name = str(name).strip("'")
|
|
1769
1757
|
return name
|
|
1770
1758
|
|
|
1771
|
-
@pyedb_function_handler()
|
|
1772
1759
|
def parametrize_position(self, prefix=None):
|
|
1773
1760
|
"""Parametrize the instance position.
|
|
1774
1761
|
|
|
@@ -1793,7 +1780,6 @@ class EDBPadstackInstance(Primitive):
|
|
|
1793
1780
|
self.position = [var_name + "X", var_name + "Y"]
|
|
1794
1781
|
return [var_name + "X", var_name + "Y"]
|
|
1795
1782
|
|
|
1796
|
-
@pyedb_function_handler()
|
|
1797
1783
|
def delete_padstack_instance(self):
|
|
1798
1784
|
"""Delete this padstack instance.
|
|
1799
1785
|
|
|
@@ -1804,7 +1790,6 @@ class EDBPadstackInstance(Primitive):
|
|
|
1804
1790
|
self._edb_padstackinstance.Delete()
|
|
1805
1791
|
return True
|
|
1806
1792
|
|
|
1807
|
-
@pyedb_function_handler()
|
|
1808
1793
|
def in_voids(self, net_name=None, layer_name=None):
|
|
1809
1794
|
"""Check if this padstack instance is in any void.
|
|
1810
1795
|
|
|
@@ -1897,7 +1882,6 @@ class EDBPadstackInstance(Primitive):
|
|
|
1897
1882
|
"""
|
|
1898
1883
|
return int(self._edb_padstackinstance.GetGroup().GetPlacementLayer().GetTopBottomAssociation())
|
|
1899
1884
|
|
|
1900
|
-
@pyedb_function_handler()
|
|
1901
1885
|
def create_rectangle_in_pad(self, layer_name, return_points=False, partition_max_order=16):
|
|
1902
1886
|
"""Create a rectangle inscribed inside a padstack instance pad.
|
|
1903
1887
|
|
|
@@ -2095,7 +2079,6 @@ class EDBPadstackInstance(Primitive):
|
|
|
2095
2079
|
created_polygon = self._pedb.modeler.create_polygon(path, layer_name)
|
|
2096
2080
|
return created_polygon
|
|
2097
2081
|
|
|
2098
|
-
@pyedb_function_handler()
|
|
2099
2082
|
def get_connected_object_id_set(self):
|
|
2100
2083
|
"""Produce a list of all geometries physically connected to a given layout object.
|
|
2101
2084
|
|
|
@@ -2108,7 +2091,6 @@ class EDBPadstackInstance(Primitive):
|
|
|
2108
2091
|
layoutObjInst = self.object_instance
|
|
2109
2092
|
return [loi.GetLayoutObj().GetId() for loi in layoutInst.GetConnectedObjects(layoutObjInst).Items]
|
|
2110
2093
|
|
|
2111
|
-
@pyedb_function_handler()
|
|
2112
2094
|
def get_reference_pins(self, reference_net="GND", search_radius=5e-3, max_limit=0, component_only=True):
|
|
2113
2095
|
"""Search for reference pins using given criteria.
|
|
2114
2096
|
|
|
@@ -20,12 +20,12 @@
|
|
|
20
20
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
# SOFTWARE.
|
|
22
22
|
|
|
23
|
-
from pyedb.dotnet.edb_core.
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
from pyedb.dotnet.edb_core.cell.terminal.bundle_terminal import BundleTerminal
|
|
24
|
+
from pyedb.dotnet.edb_core.cell.terminal.edge_terminal import EdgeTerminal
|
|
25
|
+
from pyedb.dotnet.edb_core.cell.terminal.padstack_instance_terminal import (
|
|
26
26
|
PadstackInstanceTerminal,
|
|
27
|
-
Terminal,
|
|
28
27
|
)
|
|
28
|
+
from pyedb.dotnet.edb_core.cell.terminal.terminal import Terminal
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
class GapPort(EdgeTerminal):
|
|
@@ -33,7 +33,6 @@ from pyedb.dotnet.edb_core.dotnet.primitive import (
|
|
|
33
33
|
TextDotNet,
|
|
34
34
|
)
|
|
35
35
|
from pyedb.dotnet.edb_core.general import convert_py_list_to_net_list
|
|
36
|
-
from pyedb.generic.general_methods import pyedb_function_handler
|
|
37
36
|
from pyedb.modeler.geometry_operators import GeometryOperators
|
|
38
37
|
|
|
39
38
|
|
|
@@ -93,7 +92,6 @@ class EDBPrimitives(Primitive):
|
|
|
93
92
|
def __init__(self, raw_primitive, core_app):
|
|
94
93
|
Primitive.__init__(self, core_app, raw_primitive)
|
|
95
94
|
|
|
96
|
-
@pyedb_function_handler()
|
|
97
95
|
def area(self, include_voids=True):
|
|
98
96
|
"""Return the total area.
|
|
99
97
|
|
|
@@ -254,7 +252,6 @@ class EDBPrimitives(Primitive):
|
|
|
254
252
|
bbox = self.bbox
|
|
255
253
|
return [(bbox[0] + bbox[2]) / 2, (bbox[1] + bbox[3]) / 2]
|
|
256
254
|
|
|
257
|
-
@pyedb_function_handler()
|
|
258
255
|
def is_arc(self, point):
|
|
259
256
|
"""Either if a point is an arc or not.
|
|
260
257
|
|
|
@@ -264,7 +261,6 @@ class EDBPrimitives(Primitive):
|
|
|
264
261
|
"""
|
|
265
262
|
return point.IsArc()
|
|
266
263
|
|
|
267
|
-
@pyedb_function_handler()
|
|
268
264
|
def get_connected_object_id_set(self):
|
|
269
265
|
"""Produce a list of all geometries physically connected to a given layout object.
|
|
270
266
|
|
|
@@ -277,7 +273,6 @@ class EDBPrimitives(Primitive):
|
|
|
277
273
|
layoutObjInst = layoutInst.GetLayoutObjInstance(self.primitive_object, None) # 2nd arg was []
|
|
278
274
|
return [loi.GetLayoutObj().GetId() for loi in layoutInst.GetConnectedObjects(layoutObjInst).Items]
|
|
279
275
|
|
|
280
|
-
@pyedb_function_handler()
|
|
281
276
|
def convert_to_polygon(self):
|
|
282
277
|
"""Convert path to polygon.
|
|
283
278
|
|
|
@@ -295,7 +290,6 @@ class EDBPrimitives(Primitive):
|
|
|
295
290
|
else:
|
|
296
291
|
return False
|
|
297
292
|
|
|
298
|
-
@pyedb_function_handler()
|
|
299
293
|
def subtract(self, primitives):
|
|
300
294
|
"""Subtract active primitive with one or more primitives.
|
|
301
295
|
|
|
@@ -349,7 +343,6 @@ class EDBPrimitives(Primitive):
|
|
|
349
343
|
continue
|
|
350
344
|
return new_polys
|
|
351
345
|
|
|
352
|
-
@pyedb_function_handler()
|
|
353
346
|
def intersect(self, primitives):
|
|
354
347
|
"""Intersect active primitive with one or more primitives.
|
|
355
348
|
|
|
@@ -434,7 +427,6 @@ class EDBPrimitives(Primitive):
|
|
|
434
427
|
continue
|
|
435
428
|
return new_polys
|
|
436
429
|
|
|
437
|
-
@pyedb_function_handler()
|
|
438
430
|
def unite(self, primitives):
|
|
439
431
|
"""Unite active primitive with one or more primitives.
|
|
440
432
|
|
|
@@ -489,7 +481,6 @@ class EDBPrimitives(Primitive):
|
|
|
489
481
|
continue
|
|
490
482
|
return new_polys
|
|
491
483
|
|
|
492
|
-
@pyedb_function_handler()
|
|
493
484
|
def intersection_type(self, primitive):
|
|
494
485
|
"""Get intersection type between actual primitive and another primitive or polygon data.
|
|
495
486
|
|
|
@@ -514,7 +505,6 @@ class EDBPrimitives(Primitive):
|
|
|
514
505
|
pass
|
|
515
506
|
return int(self.polygon_data.edb_api.GetIntersectionType(poly.edb_api))
|
|
516
507
|
|
|
517
|
-
@pyedb_function_handler()
|
|
518
508
|
def is_intersecting(self, primitive):
|
|
519
509
|
"""Check if actual primitive and another primitive or polygon data intesects.
|
|
520
510
|
|
|
@@ -528,7 +518,6 @@ class EDBPrimitives(Primitive):
|
|
|
528
518
|
"""
|
|
529
519
|
return True if self.intersection_type(primitive) >= 1 else False
|
|
530
520
|
|
|
531
|
-
@pyedb_function_handler()
|
|
532
521
|
def get_closest_point(self, point):
|
|
533
522
|
"""Get the closest point of the primitive to the input data.
|
|
534
523
|
|
|
@@ -546,7 +535,6 @@ class EDBPrimitives(Primitive):
|
|
|
546
535
|
p0 = self.polygon_data.edb_api.GetClosestPoint(point)
|
|
547
536
|
return [p0.X.ToDouble(), p0.Y.ToDouble()]
|
|
548
537
|
|
|
549
|
-
@pyedb_function_handler()
|
|
550
538
|
def get_closest_arc_midpoint(self, point):
|
|
551
539
|
"""Get the closest arc midpoint of the primitive to the input data.
|
|
552
540
|
|
|
@@ -645,7 +633,6 @@ class EdbPath(EDBPrimitives, PathDotNet):
|
|
|
645
633
|
path_length += self.width / 2
|
|
646
634
|
return path_length
|
|
647
635
|
|
|
648
|
-
@pyedb_function_handler()
|
|
649
636
|
def add_point(self, x, y, incremental=False):
|
|
650
637
|
"""Add a point at the end of the path.
|
|
651
638
|
|
|
@@ -667,7 +654,6 @@ class EdbPath(EDBPrimitives, PathDotNet):
|
|
|
667
654
|
center_line.add_point(x, y, incremental)
|
|
668
655
|
return self._edb_object.SetCenterLine(center_line.edb_api)
|
|
669
656
|
|
|
670
|
-
@pyedb_function_handler()
|
|
671
657
|
def get_center_line(self, to_string=False):
|
|
672
658
|
"""Get the center line of the trace.
|
|
673
659
|
|
|
@@ -686,7 +672,6 @@ class EdbPath(EDBPrimitives, PathDotNet):
|
|
|
686
672
|
else:
|
|
687
673
|
return [[p.X.ToDouble(), p.Y.ToDouble()] for p in list(self.primitive_object.GetCenterLine().Points)]
|
|
688
674
|
|
|
689
|
-
@pyedb_function_handler()
|
|
690
675
|
def clone(self):
|
|
691
676
|
"""Clone a primitive object with keeping same definition and location.
|
|
692
677
|
|
|
@@ -712,8 +697,8 @@ class EdbPath(EDBPrimitives, PathDotNet):
|
|
|
712
697
|
if cloned_path:
|
|
713
698
|
return cloned_path
|
|
714
699
|
|
|
715
|
-
#
|
|
716
|
-
|
|
700
|
+
#
|
|
701
|
+
|
|
717
702
|
def create_edge_port(
|
|
718
703
|
self,
|
|
719
704
|
name,
|
|
@@ -766,7 +751,6 @@ class EdbPath(EDBPrimitives, PathDotNet):
|
|
|
766
751
|
else:
|
|
767
752
|
return self._app.hfss.create_edge_port_vertical(self.id, pos, name, 50, reference_layer)
|
|
768
753
|
|
|
769
|
-
@pyedb_function_handler()
|
|
770
754
|
def create_via_fence(self, distance, gap, padstack_name, net_name="GND"):
|
|
771
755
|
"""Create via fences on both sides of the trace.
|
|
772
756
|
|
|
@@ -891,7 +875,6 @@ class EdbPolygon(EDBPrimitives, PolygonDotNet):
|
|
|
891
875
|
EDBPrimitives.__init__(self, raw_primitive, core_app)
|
|
892
876
|
PolygonDotNet.__init__(self, self._app, raw_primitive)
|
|
893
877
|
|
|
894
|
-
@pyedb_function_handler()
|
|
895
878
|
def clone(self):
|
|
896
879
|
"""Clone a primitive object with keeping same definition and location.
|
|
897
880
|
|
|
@@ -913,7 +896,6 @@ class EdbPolygon(EDBPrimitives, PolygonDotNet):
|
|
|
913
896
|
return cloned_poly
|
|
914
897
|
return False
|
|
915
898
|
|
|
916
|
-
@pyedb_function_handler()
|
|
917
899
|
def duplicate_across_layers(self, layers):
|
|
918
900
|
"""Duplicate across layer a primitive object.
|
|
919
901
|
|
|
@@ -942,7 +924,6 @@ class EdbPolygon(EDBPrimitives, PolygonDotNet):
|
|
|
942
924
|
return False
|
|
943
925
|
return True
|
|
944
926
|
|
|
945
|
-
@pyedb_function_handler
|
|
946
927
|
def move(self, vector):
|
|
947
928
|
"""Move polygon along a vector.
|
|
948
929
|
|
|
@@ -971,7 +952,6 @@ class EdbPolygon(EDBPrimitives, PolygonDotNet):
|
|
|
971
952
|
return self.api_object.SetPolygonData(polygon_data)
|
|
972
953
|
return False
|
|
973
954
|
|
|
974
|
-
@pyedb_function_handler
|
|
975
955
|
def rotate(self, angle, center=None):
|
|
976
956
|
"""Rotate polygon around a center point by an angle.
|
|
977
957
|
|
|
@@ -1009,7 +989,6 @@ class EdbPolygon(EDBPrimitives, PolygonDotNet):
|
|
|
1009
989
|
return self.api_object.SetPolygonData(polygon_data)
|
|
1010
990
|
return False
|
|
1011
991
|
|
|
1012
|
-
@pyedb_function_handler
|
|
1013
992
|
def scale(self, factor, center=None):
|
|
1014
993
|
"""Scales the polygon relative to a center point by a factor.
|
|
1015
994
|
|
|
@@ -1048,7 +1027,6 @@ class EdbPolygon(EDBPrimitives, PolygonDotNet):
|
|
|
1048
1027
|
return self.api_object.SetPolygonData(polygon_data)
|
|
1049
1028
|
return False
|
|
1050
1029
|
|
|
1051
|
-
@pyedb_function_handler
|
|
1052
1030
|
def move_layer(self, layer):
|
|
1053
1031
|
"""Move polygon to given layer.
|
|
1054
1032
|
|
|
@@ -1072,7 +1050,6 @@ class EdbPolygon(EDBPrimitives, PolygonDotNet):
|
|
|
1072
1050
|
return True
|
|
1073
1051
|
return False
|
|
1074
1052
|
|
|
1075
|
-
@pyedb_function_handler()
|
|
1076
1053
|
def in_polygon(
|
|
1077
1054
|
self,
|
|
1078
1055
|
point_data,
|
|
@@ -1111,7 +1088,7 @@ class EdbPolygon(EDBPrimitives, PolygonDotNet):
|
|
|
1111
1088
|
else:
|
|
1112
1089
|
return False
|
|
1113
1090
|
|
|
1114
|
-
#
|
|
1091
|
+
#
|
|
1115
1092
|
# def add_void(self, point_list):
|
|
1116
1093
|
# """Add a void to current primitive.
|
|
1117
1094
|
#
|
|
@@ -19,18 +19,13 @@
|
|
|
19
19
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
# SOFTWARE.
|
|
22
|
-
|
|
23
|
-
from pyedb.dotnet.edb_core.edb_data.edbvalue import EdbValue
|
|
24
22
|
from pyedb.dotnet.edb_core.general import convert_py_list_to_net_list
|
|
25
|
-
from pyedb.dotnet.edb_core.
|
|
26
|
-
|
|
27
|
-
EdbFrequencySweep,
|
|
28
|
-
)
|
|
29
|
-
from pyedb.generic.data_handlers import pyedb_function_handler
|
|
23
|
+
from pyedb.dotnet.edb_core.sim_setup_data.data.sweep_data import SweepData
|
|
24
|
+
from pyedb.dotnet.edb_core.utilities.simulation_setup import SimulationSetup
|
|
30
25
|
from pyedb.generic.general_methods import generate_unique_name
|
|
31
26
|
|
|
32
27
|
|
|
33
|
-
class RaptorXSimulationSetup(
|
|
28
|
+
class RaptorXSimulationSetup(SimulationSetup):
|
|
34
29
|
"""Manages EDB methods for RaptorX simulation setup."""
|
|
35
30
|
|
|
36
31
|
def __init__(self, pedb, edb_object=None):
|
|
@@ -40,7 +35,6 @@ class RaptorXSimulationSetup(BaseSimulationSetup):
|
|
|
40
35
|
self._edb_setup_info = None
|
|
41
36
|
self.logger = self._pedb.logger
|
|
42
37
|
|
|
43
|
-
@pyedb_function_handler
|
|
44
38
|
def create(self, name=None):
|
|
45
39
|
"""Create an HFSS setup."""
|
|
46
40
|
self._name = name
|
|
@@ -74,7 +68,6 @@ class RaptorXSimulationSetup(BaseSimulationSetup):
|
|
|
74
68
|
else:
|
|
75
69
|
self.logger.error(f"RaptorX setup position input setter must be an integer. Provided value {value}")
|
|
76
70
|
|
|
77
|
-
@pyedb_function_handler()
|
|
78
71
|
def add_frequency_sweep(self, name=None, frequency_sweep=None):
|
|
79
72
|
"""Add frequency sweep.
|
|
80
73
|
|
|
@@ -87,7 +80,7 @@ class RaptorXSimulationSetup(BaseSimulationSetup):
|
|
|
87
80
|
|
|
88
81
|
Returns
|
|
89
82
|
-------
|
|
90
|
-
:class:`pyedb.dotnet.edb_core.edb_data.
|
|
83
|
+
:class:`pyedb.dotnet.edb_core.edb_data.simulation_setup.EdbFrequencySweep`
|
|
91
84
|
|
|
92
85
|
Examples
|
|
93
86
|
--------
|
|
@@ -102,7 +95,7 @@ class RaptorXSimulationSetup(BaseSimulationSetup):
|
|
|
102
95
|
return False
|
|
103
96
|
if not name:
|
|
104
97
|
name = generate_unique_name("sweep")
|
|
105
|
-
return
|
|
98
|
+
return SweepData(self, frequency_sweep, name)
|
|
106
99
|
|
|
107
100
|
|
|
108
101
|
class RaptorXSimulationSettings(object):
|
|
@@ -148,7 +141,7 @@ class RaptorXGeneralSettings(object):
|
|
|
148
141
|
|
|
149
142
|
@global_temperature.setter
|
|
150
143
|
def global_temperature(self, value):
|
|
151
|
-
self._general_settings.GlobalTemperature =
|
|
144
|
+
self._general_settings.GlobalTemperature = self._pedb.edb_value(value).ToDouble()
|
|
152
145
|
|
|
153
146
|
@property
|
|
154
147
|
def max_frequency(self):
|
|
@@ -160,7 +153,7 @@ class RaptorXGeneralSettings(object):
|
|
|
160
153
|
mesh will be. User can override the default meshing frequency as defined by Max Frequency using the Advanced
|
|
161
154
|
settings > MeshFrequency. Example: "10GHz".
|
|
162
155
|
"""
|
|
163
|
-
self._general_settings.MaxFrequency =
|
|
156
|
+
self._general_settings.MaxFrequency = self._pedb.edb_value(value).ToString()
|
|
164
157
|
|
|
165
158
|
|
|
166
159
|
class RaptorXSimulationAdvancedSettings(object):
|
|
@@ -176,7 +169,7 @@ class RaptorXSimulationAdvancedSettings(object):
|
|
|
176
169
|
|
|
177
170
|
@auto_removal_sliver_poly.setter
|
|
178
171
|
def auto_removal_sliver_poly(self, value):
|
|
179
|
-
self._advanced_settings.AutoRemovalSliverPoly =
|
|
172
|
+
self._advanced_settings.AutoRemovalSliverPoly = self._pedb.edb_value(value).ToDouble()
|
|
180
173
|
|
|
181
174
|
@property
|
|
182
175
|
def cell_per_wave_length(self):
|
|
@@ -205,7 +198,7 @@ class RaptorXSimulationAdvancedSettings(object):
|
|
|
205
198
|
|
|
206
199
|
@edge_mesh.setter
|
|
207
200
|
def edge_mesh(self, value):
|
|
208
|
-
self._advanced_settings.EdgeMesh =
|
|
201
|
+
self._advanced_settings.EdgeMesh = self._pedb.edb_value(value).ToString()
|
|
209
202
|
|
|
210
203
|
@property
|
|
211
204
|
def eliminate_slit_per_hole(self):
|
|
@@ -218,7 +211,7 @@ class RaptorXSimulationAdvancedSettings(object):
|
|
|
218
211
|
|
|
219
212
|
@eliminate_slit_per_hole.setter
|
|
220
213
|
def eliminate_slit_per_hole(self, value):
|
|
221
|
-
self._advanced_settings.EliminateSlitPerHoles =
|
|
214
|
+
self._advanced_settings.EliminateSlitPerHoles = self._pedb.edb_value(value).ToDouble()
|
|
222
215
|
|
|
223
216
|
@property
|
|
224
217
|
def mesh_frequency(self):
|
|
@@ -229,7 +222,7 @@ class RaptorXSimulationAdvancedSettings(object):
|
|
|
229
222
|
|
|
230
223
|
@mesh_frequency.setter
|
|
231
224
|
def mesh_frequency(self, value):
|
|
232
|
-
self._advanced_settings.MeshFrequency =
|
|
225
|
+
self._advanced_settings.MeshFrequency = self._pedb.edb_value(value).ToString()
|
|
233
226
|
|
|
234
227
|
@property
|
|
235
228
|
def net_settings_options(self):
|
|
@@ -255,7 +248,7 @@ class RaptorXSimulationAdvancedSettings(object):
|
|
|
255
248
|
|
|
256
249
|
@override_shrink_fac.setter
|
|
257
250
|
def override_shrink_fac(self, value):
|
|
258
|
-
self._advanced_settings.OverrideShrinkFac =
|
|
251
|
+
self._advanced_settings.OverrideShrinkFac = self._pedb.edb_value(value).ToDouble()
|
|
259
252
|
|
|
260
253
|
@property
|
|
261
254
|
def plane_projection_factor(self):
|
|
@@ -268,7 +261,7 @@ class RaptorXSimulationAdvancedSettings(object):
|
|
|
268
261
|
|
|
269
262
|
@plane_projection_factor.setter
|
|
270
263
|
def plane_projection_factor(self, value):
|
|
271
|
-
self._advanced_settings.PlaneProjectionFactor =
|
|
264
|
+
self._advanced_settings.PlaneProjectionFactor = self._pedb.edb_value(value).ToDouble()
|
|
272
265
|
|
|
273
266
|
@property
|
|
274
267
|
def use_accelerate_via_extraction(self):
|