Skip to content

Commit b3f7cce

Browse files
authored
Access edb_value from components using a method instead of a property. (#938)
* Replace the read-only property _edb_value by the method _get_edb_value(). * Add test for the port creation. * Add port creation tests from component. * Do not add port on GND pin. * Fix code style for tests. * Replace the private property by the private method. * Replace the private property by the private method in layout module. * Replace the private property by the private method in the remaining module of edb_core. * Remove the property decorator. * Fix tests. * Fix tests.
1 parent 1a5003b commit b3f7cce

File tree

7 files changed

+173
-153
lines changed

7 files changed

+173
-153
lines changed

_unittest/test_00_EDB.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from pyaedt import Edb
66
from pyaedt.edb_core.components import resistor_value_parser
7+
from pyaedt.generic.constants import SourceType
78

89
# Setup paths for module imports
910
# Import required modules
@@ -66,6 +67,27 @@ def test_01_find_by_name(self):
6667
assert isinstance(parameters[1], list)
6768
assert isinstance(parameters[0], int)
6869

70+
def test_01A_create_ports(self):
71+
pins = self.edbapp.core_components.get_pin_from_component("J1")
72+
nets = self.edbapp.core_components.get_nets_from_pin_list(pins)
73+
assert len(nets) == 6
74+
assert "IO13_ICSP_R" in nets
75+
assert "V5_ALW_ON" in nets
76+
assert "GND" in nets
77+
assert "IO11_ICSP_R" in nets
78+
assert "RESET_N_SHLD" in nets
79+
assert "IO12_ICSP_R" in nets
80+
81+
assert self.edbapp.core_components.create_port_on_component(
82+
component="J1", net_list=nets[:2], port_type=SourceType.CoaxPort, do_pingroup=True, reference_net="GND"
83+
)
84+
assert self.edbapp.core_components.create_port_on_component(
85+
component="J1", net_list=nets[3], port_type=SourceType.CoaxPort, do_pingroup=False, reference_net="GND"
86+
)
87+
assert self.edbapp.core_components.create_port_on_component(
88+
component="J1", net_list=nets[-2:], port_type=SourceType.CircPort, do_pingroup=False, reference_net="GND"
89+
)
90+
6991
def test_01B_get_vias_from_nets(self):
7092
assert self.edbapp.core_padstack.get_via_instance_from_net("GND")
7193
assert not self.edbapp.core_padstack.get_via_instance_from_net(["GND2"])

pyaedt/edb_core/EDB_Data.py

Lines changed: 42 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -473,10 +473,9 @@ def _logger(self):
473473
"""Logger."""
474474
return self._pedblayers.logger
475475

476-
@property
477-
def _edb_value(self):
478-
"""Edb Value."""
479-
return self._pedblayers._edb_value
476+
def _get_edb_value(self, value):
477+
"""Get Edb Value."""
478+
return self._pedblayers._get_edb_value(value)
480479

481480
@property
482481
def name(self):
@@ -748,7 +747,7 @@ def update_layer_vals(self, layerName, newLayer, etchMap, materialMap, fillMater
748747
self._logger.error("Layer %s has unknown type %s.", layerName, layerTypeMap)
749748
return False
750749
if thicknessMap:
751-
newLayer.SetThickness(self._edb_value(thicknessMap))
750+
newLayer.SetThickness(self._get_edb_value(thicknessMap))
752751
if materialMap:
753752
newLayer.SetMaterial(materialMap)
754753
if fillMaterialMap:
@@ -759,7 +758,7 @@ def update_layer_vals(self, layerName, newLayer, etchMap, materialMap, fillMater
759758
etchVal = 0.0
760759
if etchVal != 0.0:
761760
newLayer.SetEtchFactorEnabled(True)
762-
newLayer.SetEtchFactor(self._edb_value(etchVal))
761+
newLayer.SetEtchFactor(self._get_edb_value(etchVal))
763762
return newLayer
764763

765764
@pyaedt_function_handler()
@@ -780,7 +779,7 @@ def set_elevation(self, layer, elev):
780779
781780
"""
782781

783-
layer.SetLowerElevation(self._edb_value(elev))
782+
layer.SetLowerElevation(self._get_edb_value(elev))
784783
return layer
785784

786785
@pyaedt_function_handler()
@@ -882,9 +881,8 @@ def _stackup_methods(self):
882881
def _edb(self):
883882
return self._pedbstackup._edb
884883

885-
@property
886-
def _edb_value(self):
887-
return self._pedbstackup._edb_value
884+
def _get_edb_value(self, value):
885+
return self._pedbstackup._get_edb_value(value)
888886

889887
@property
890888
def _builder(self):
@@ -1103,15 +1101,15 @@ def add_layer(
11031101
newLayer = self._edb.Cell.StackupLayer(
11041102
layerName,
11051103
self._int_to_layer_types(layerType),
1106-
self._edb_value(0),
1107-
self._edb_value(0),
1104+
self._get_edb_value(0),
1105+
self._get_edb_value(0),
11081106
"",
11091107
)
11101108
self._edb_object[layerName] = EDBLayer(newLayer, self._pedbstackup)
11111109
newLayer = self._edb_object[layerName].update_layer_vals(
11121110
layerName, newLayer, etchMap, material, fillMaterial, thickness, self._int_to_layer_types(layerType)
11131111
)
1114-
newLayer.SetLowerElevation(self._edb_value(el))
1112+
newLayer.SetLowerElevation(self._get_edb_value(el))
11151113

11161114
# newLayers.Add(newLayer)
11171115
lcNew.AddLayerTop(newLayer)
@@ -1120,7 +1118,7 @@ def add_layer(
11201118
if not lyr.IsStackupLayer():
11211119
continue
11221120
newLayer = lyr.Clone()
1123-
newLayer.SetLowerElevation(self._edb_value(el))
1121+
newLayer.SetLowerElevation(self._get_edb_value(el))
11241122
el += newLayer.GetThickness()
11251123
# newLayers.Add(newLayer)
11261124
lcNew.AddLayerTop(newLayer)
@@ -1132,14 +1130,14 @@ def add_layer(
11321130
continue
11331131
if lyr.GetName() == start_layer:
11341132
original_layer = lyr.Clone()
1135-
original_layer.SetLowerElevation(self._edb_value(el))
1133+
original_layer.SetLowerElevation(self._get_edb_value(el))
11361134
lcNew.AddLayerTop(original_layer)
11371135
el += original_layer.GetThickness()
11381136
newLayer = self._edb.Cell.StackupLayer(
11391137
layerName,
11401138
self._int_to_layer_types(layerType),
1141-
self._edb_value(0),
1142-
self._edb_value(0),
1139+
self._get_edb_value(0),
1140+
self._get_edb_value(0),
11431141
"",
11441142
)
11451143
self._edb_object[layerName] = EDBLayer(newLayer, self._pedbstackup)
@@ -1152,14 +1150,14 @@ def add_layer(
11521150
thickness,
11531151
self._int_to_layer_types(layerType),
11541152
)
1155-
newLayer.SetLowerElevation(self._edb_value(el))
1153+
newLayer.SetLowerElevation(self._get_edb_value(el))
11561154
lcNew.AddLayerTop(newLayer)
11571155
el += newLayer.GetThickness()
11581156
# newLayers.Add(original_layer)
11591157

11601158
else:
11611159
newLayer = lyr.Clone()
1162-
newLayer.SetLowerElevation(self._edb_value(el))
1160+
newLayer.SetLowerElevation(self._get_edb_value(el))
11631161
el += newLayer.GetThickness()
11641162
lcNew.AddLayerTop(newLayer)
11651163
# lcNew = self._edb.Cell.LayerCollection()
@@ -1271,9 +1269,8 @@ def _builder(self):
12711269
def _edb(self):
12721270
return self._pedbpadstack._edb
12731271

1274-
@property
1275-
def _edb_value(self):
1276-
return self._pedbpadstack._edb_value
1272+
def _get_edb_value(self, value):
1273+
return self._pedbpadstack._get_edb_value(value)
12771274

12781275
@property
12791276
def geometry_type(self):
@@ -1293,7 +1290,7 @@ def geometry_type(self, geom_type):
12931290
shape.8, Round gap with 45 degree thermal ties. 9, Round gap with 90 degree thermal ties.10, Square gap
12941291
with 45 degree thermal ties. 11, Square gap with 90 degree thermal ties.
12951292
"""
1296-
val = self._edb_value(0)
1293+
val = self._get_edb_value(0)
12971294
params = []
12981295
if geom_type == 0:
12991296
pass
@@ -1354,9 +1351,9 @@ def parameters(self):
13541351
def parameters(self, propertylist):
13551352

13561353
if not isinstance(propertylist, list):
1357-
propertylist = [self._edb_value(propertylist)]
1354+
propertylist = [self._get_edb_value(propertylist)]
13581355
else:
1359-
propertylist = [self._edb_value(i) for i in propertylist]
1356+
propertylist = [self._get_edb_value(i) for i in propertylist]
13601357
self._update_pad_parameters_parameters(params=propertylist)
13611358

13621359
@property
@@ -1485,7 +1482,7 @@ def _update_pad_parameters_parameters(
14851482
if not geom_type:
14861483
geom_type = self.geometry_type
14871484
if not params:
1488-
params = [self._edb_value(i) for i in self.parameters]
1485+
params = [self._get_edb_value(i) for i in self.parameters]
14891486
if not offsetx:
14901487
offsetx = self.offset_x
14911488
if not offsety:
@@ -1502,9 +1499,9 @@ def _update_pad_parameters_parameters(
15021499
pad_type,
15031500
geom_type,
15041501
convert_py_list_to_net_list(params),
1505-
self._edb_value(offsetx),
1506-
self._edb_value(offsety),
1507-
self._edb_value(rotation),
1502+
self._get_edb_value(offsetx),
1503+
self._get_edb_value(offsety),
1504+
self._get_edb_value(rotation),
15081505
)
15091506
self._edb_padstack.SetData(newPadstackDefinitionData)
15101507

@@ -1554,9 +1551,8 @@ def _builder(self):
15541551
def _edb(self):
15551552
return self._ppadstack._edb
15561553

1557-
@property
1558-
def _edb_value(self):
1559-
return self._ppadstack._edb_value
1554+
def _get_edb_value(self, value):
1555+
return self._ppadstack._get_edb_value(value)
15601556

15611557
@property
15621558
def via_layers(self):
@@ -1597,7 +1593,7 @@ def _hole_params(self):
15971593
if is_ironpython:
15981594
out = viaData.GetHoleParametersValue()
15991595
else:
1600-
value0 = self._edb_value("0.0")
1596+
value0 = self._get_edb_value("0.0")
16011597
ptype = self._edb.Definition.PadGeometryType.Circle
16021598
HoleParam = Array[type(value0)]([])
16031599
out = viaData.GetHoleParametersValue(ptype, HoleParam, value0, value0, value0)
@@ -1651,15 +1647,19 @@ def _update_hole_parameters(self, hole_type=None, params=None, offsetx=None, off
16511647
rotation = self.hole_rotation
16521648
if is_ironpython:
16531649
newPadstackDefinitionData.SetHoleParameters(
1654-
hole_type, params, self._edb_value(offsetx), self._edb_value(offsety), self._edb_value(rotation)
1650+
hole_type,
1651+
params,
1652+
self._get_edb_value(offsetx),
1653+
self._get_edb_value(offsety),
1654+
self._get_edb_value(rotation),
16551655
)
16561656
else:
16571657
newPadstackDefinitionData.SetHoleParameters(
16581658
hole_type,
16591659
convert_py_list_to_net_list(params),
1660-
self._edb_value(offsetx),
1661-
self._edb_value(offsety),
1662-
self._edb_value(rotation),
1660+
self._get_edb_value(offsetx),
1661+
self._get_edb_value(offsety),
1662+
self._get_edb_value(rotation),
16631663
)
16641664
self.edb_padstack.SetData(newPadstackDefinitionData)
16651665

@@ -1679,9 +1679,9 @@ def hole_properties(self):
16791679
def hole_properties(self, propertylist):
16801680

16811681
if not isinstance(propertylist, list):
1682-
propertylist = [self._edb_value(propertylist)]
1682+
propertylist = [self._get_edb_value(propertylist)]
16831683
else:
1684-
propertylist = [self._edb_value(i) for i in propertylist]
1684+
propertylist = [self._get_edb_value(i) for i in propertylist]
16851685
self._update_hole_parameters(params=propertylist)
16861686

16871687
@property
@@ -1766,7 +1766,7 @@ def hole_plating_ratio(self, ratio):
17661766

17671767
originalPadstackDefinitionData = self.edb_padstack.GetData()
17681768
newPadstackDefinitionData = self._edb.Definition.PadstackDefData(originalPadstackDefinitionData)
1769-
newPadstackDefinitionData.SetHolePlatingPercentage(self._edb_value(ratio))
1769+
newPadstackDefinitionData.SetHolePlatingPercentage(self._get_edb_value(ratio))
17701770
self.edb_padstack.SetData(newPadstackDefinitionData)
17711771

17721772
@property
@@ -2481,9 +2481,8 @@ def partname(self):
24812481
"""
24822482
return self.edbcomponent.GetComponentDef().GetName()
24832483

2484-
@property
2485-
def _edb_value(self):
2486-
return self._pcomponents._edb_value
2484+
def _get_edb_value(self, value):
2485+
return self._pcomponents._get_edb_value(value)
24872486

24882487
@property
24892488
def _edb(self):

0 commit comments

Comments
 (0)