Skip to content

Commit 72fca6b

Browse files
committed
test #79 done
1 parent 8a7fb2d commit 72fca6b

File tree

2 files changed

+48
-39
lines changed

2 files changed

+48
-39
lines changed

src/pyedb/grpc/edb_core/padstack.py

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -834,15 +834,11 @@ def create(
834834
)
835835
padstack_data.plating_percentage = GrpcValue(20.0)
836836
else:
837-
ptype = GrpcPadGeometryType.PADGEOMTYPE_NO_GEOMETRY
837+
pass
838838

839839
x_size = GrpcValue(x_size)
840840
y_size = GrpcValue(y_size)
841841
corner_radius = GrpcValue(corner_radius)
842-
offset_x = GrpcValue(offset_x)
843-
offset_y = GrpcValue(offset_y)
844-
rotation = GrpcValue(rotation)
845-
846842
pad_offset_x = GrpcValue(pad_offset_x)
847843
pad_offset_y = GrpcValue(pad_offset_y)
848844
pad_rotation = GrpcValue(pad_rotation)
@@ -865,30 +861,36 @@ def create(
865861
layers = layers[layers.index(start_layer) :]
866862
if stop_layer and stop_layer in layers: # pragma no cover
867863
layers = layers[: layers.index(stop_layer) + 1]
868-
pad_array = paddiam
864+
if not isinstance(paddiam, list):
865+
pad_array = [paddiam]
866+
else:
867+
pad_array = paddiam
869868
if pad_shape == "Circle": # pragma no cover
870869
pad_shape = GrpcPadGeometryType.PADGEOMTYPE_CIRCLE
871870
elif pad_shape == "Rectangle": # pragma no cover
872-
pad_array = (x_size, y_size)
871+
pad_array = [x_size, y_size]
873872
pad_shape = GrpcPadGeometryType.PADGEOMTYPE_RECTANGLE
874873
elif pad_shape == "Polygon":
875874
if isinstance(pad_polygon, list):
876-
pad_array = GrpcPolygonData(pad_polygon)
875+
pad_array = [GrpcPolygonData(pad_polygon)]
877876
elif isinstance(pad_polygon, GrpcPolygonData):
878877
pad_array = pad_polygon
879878
if antipad_shape == "Bullet": # pragma no cover
880-
antipad_array = (x_size, y_size, corner_radius)
879+
antipad_array = [x_size, y_size, corner_radius]
881880
antipad_shape = GrpcPadGeometryType.PADGEOMTYPE_BULLET
882881
elif antipad_shape == "Rectangle": # pragma no cover
883-
antipad_array = (anti_pad_x_size, anti_pad_y_size)
882+
antipad_array = [anti_pad_x_size, anti_pad_y_size]
884883
antipad_shape = GrpcPadGeometryType.PADGEOMTYPE_RECTANGLE
885884
elif antipad_shape == "Polygon":
886885
if isinstance(antipad_polygon, list):
887886
antipad_array = GrpcPolygonData(antipad_polygon)
888887
elif isinstance(antipad_polygon, GrpcPolygonData):
889888
antipad_array = antipad_polygon
890-
else: # pragma no cover
891-
antipad_array = antipaddiam
889+
else:
890+
if not isinstance(antipaddiam, list):
891+
antipad_array = [antipaddiam]
892+
else:
893+
antipad_array = antipaddiam
892894
antipad_shape = GrpcPadGeometryType.PADGEOMTYPE_CIRCLE
893895
if add_default_layer: # pragma no cover
894896
layers = layers + ["Default"]

tests/grpc/system/test_edb_padstacks.py

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -59,30 +59,33 @@ def test_get_vias_from_nets(self, edb_examples):
5959
assert not edbapp.padstacks.get_via_instance_from_net(["GND2"])
6060
edbapp.close()
6161

62-
def test_create_with_packstack_name(self):
62+
def test_create_with_packstack_name(self, edb_examples):
6363
"""Create a padstack"""
6464
# Create myVia
65-
self.edbapp.padstacks.create(padstackname="myVia")
66-
assert "myVia" in list(self.edbapp.padstacks.definitions.keys())
67-
self.edbapp.padstacks.definitions["myVia"].hole_range = "begin_on_upper_pad"
68-
assert self.edbapp.padstacks.definitions["myVia"].hole_range == "begin_on_upper_pad"
69-
self.edbapp.padstacks.definitions["myVia"].hole_range = "through"
70-
assert self.edbapp.padstacks.definitions["myVia"].hole_range == "through"
65+
edbapp = edb_examples.get_si_verse()
66+
edbapp.padstacks.create(padstackname="myVia")
67+
assert "myVia" in list(edbapp.padstacks.definitions.keys())
68+
edbapp.padstacks.definitions["myVia"].hole_range = "begin_on_upper_pad"
69+
assert edbapp.padstacks.definitions["myVia"].hole_range == "begin_on_upper_pad"
70+
edbapp.padstacks.definitions["myVia"].hole_range = "through"
71+
assert edbapp.padstacks.definitions["myVia"].hole_range == "through"
7172
# Create myVia_bullet
72-
self.edbapp.padstacks.create(padstackname="myVia_bullet", antipad_shape="Bullet")
73-
assert isinstance(self.edbapp.padstacks.definitions["myVia"].instances, list)
74-
assert "myVia_bullet" in list(self.edbapp.padstacks.definitions.keys())
75-
76-
self.edbapp.add_design_variable("via_x", 5e-3)
77-
self.edbapp["via_y"] = "1mm"
78-
assert self.edbapp["via_y"].value == 1e-3
79-
assert self.edbapp["via_y"].value_string == "1mm"
80-
assert self.edbapp.padstacks.place(["via_x", "via_x+via_y"], "myVia", via_name="via_test1")
81-
assert self.edbapp.padstacks.place(["via_x", "via_x+via_y*2"], "myVia_bullet")
82-
self.edbapp.padstacks["via_test1"].net_name = "GND"
83-
assert self.edbapp.padstacks["via_test1"].net_name == "GND"
84-
padstack = self.edbapp.padstacks.place(["via_x", "via_x+via_y*3"], "myVia", is_pin=True)
85-
for test_prop in (self.edbapp.padstacks.instances, self.edbapp.padstacks.instances):
73+
edbapp.padstacks.create(padstackname="myVia_bullet", antipad_shape="Bullet")
74+
assert isinstance(edbapp.padstacks.definitions["myVia"].instances, list)
75+
assert "myVia_bullet" in list(edbapp.padstacks.definitions.keys())
76+
edbapp.close()
77+
78+
# TODO fix variables
79+
edbapp.add_design_variable("via_x", 5e-3)
80+
edbapp["via_y"] = "1mm"
81+
assert edbapp["via_y"].value == 1e-3
82+
assert edbapp["via_y"].value_string == "1mm"
83+
assert edbapp.padstacks.place(["via_x", "via_x+via_y"], "myVia", via_name="via_test1")
84+
assert edbapp.padstacks.place(["via_x", "via_x+via_y*2"], "myVia_bullet")
85+
edbapp.padstacks["via_test1"].net_name = "GND"
86+
assert edbapp.padstacks["via_test1"].net_name == "GND"
87+
padstack = edbapp.padstacks.place(["via_x", "via_x+via_y*3"], "myVia", is_pin=True)
88+
for test_prop in (edbapp.padstacks.instances, edbapp.padstacks.instances):
8689
padstack_instance = test_prop[padstack.id]
8790
assert padstack_instance.is_pin
8891
assert padstack_instance.position
@@ -92,18 +95,18 @@ def test_create_with_packstack_name(self):
9295
assert padstack_instance.position == [0.001, 0.002]
9396
assert padstack_instance.parametrize_position()
9497
assert isinstance(padstack_instance.rotation, float)
95-
self.edbapp.padstacks.create_circular_padstack(padstackname="mycircularvia")
96-
assert "mycircularvia" in list(self.edbapp.padstacks.definitions.keys())
98+
edbapp.padstacks.create_circular_padstack(padstackname="mycircularvia")
99+
assert "mycircularvia" in list(edbapp.padstacks.definitions.keys())
97100
assert not padstack_instance.backdrill_top
98101
assert not padstack_instance.backdrill_bottom
99102
assert padstack_instance.delete()
100-
via = self.edbapp.padstacks.place([0, 0], "myVia")
103+
via = edbapp.padstacks.place([0, 0], "myVia")
101104
assert via.set_backdrill_top("Inner4(Sig2)", 0.5e-3)
102105
assert via.backdrill_top
103106
assert via.set_backdrill_bottom("16_Bottom", 0.5e-3)
104107
assert via.backdrill_bottom
105108

106-
via = self.edbapp.padstacks.instances_by_name["Via1266"]
109+
via = edbapp.padstacks.instances_by_name["Via1266"]
107110
via.backdrill_parameters = {
108111
"from_bottom": {"drill_to_layer": "Inner5(PWR2)", "diameter": "0.4mm", "stub_length": "0.1mm"},
109112
"from_top": {"drill_to_layer": "Inner2(PWR1)", "diameter": "0.41mm", "stub_length": "0.11mm"},
@@ -112,11 +115,15 @@ def test_create_with_packstack_name(self):
112115
"from_bottom": {"drill_to_layer": "Inner5(PWR2)", "diameter": "0.4mm", "stub_length": "0.1mm"},
113116
"from_top": {"drill_to_layer": "Inner2(PWR1)", "diameter": "0.41mm", "stub_length": "0.11mm"},
114117
}
118+
edbapp.close()
115119

116-
def test_padstacks_get_nets_from_pin_list(self):
120+
def test_padstacks_get_nets_from_pin_list(self, edb_examples):
117121
"""Retrieve pin list from component and net."""
118-
cmp_pinlist = self.edbapp.padstacks.get_pinlist_from_component_and_net("U1", "GND")
122+
# Done
123+
edbapp = edb_examples.get_si_verse()
124+
cmp_pinlist = edbapp.padstacks.get_pinlist_from_component_and_net("U1", "GND")
119125
assert cmp_pinlist[0].net.name
126+
edbapp.close()
120127

121128
def test_padstack_properties_getter(self):
122129
"""Evaluate properties"""

0 commit comments

Comments
 (0)