Skip to content

Commit eb939bb

Browse files
svandenb-devCopilotpyansys-ci-bot
authored
REFACTOR: removing edb-core inheritance (#1710)
* padstackdef refactoring * refactoring * refactoring pass #2 * refactoring pass #3 * refactoring pass #4 * refactoring pass #5 * refactoring pass #6 * refactoring pass #7 * refactoring pass #8 * pass #9 * pass #10 * pass #11 * pass #12 * pass #13 * pass #14 * pass #15 * pass #16 * pass #17 * pass #18 * pass #19 * pass #20 * pass #21 * pass #22 * pass #23 * pass #24 * pass #25 * pass #26 * pass #26 * pass #27 * pass #28 * pass #29 * pass #30 * pass #31 * pass #32 * pass #33 * pass #34 * pass #35 * pass #36 * pass #37 * pass #38 * pass #39 * Update src/pyedb/grpc/database/layout/layout.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * chore: adding changelog file 1710.miscellaneous.md [dependabot-skip] * Update src/pyedb/grpc/database/primitive/path.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * pass #40 * pass #41 * pass #42 * pass #43 --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: pyansys-ci-bot <92810346+pyansys-ci-bot@users.noreply.github.com>
1 parent 8150cd5 commit eb939bb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+3442
-1283
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Removing edb-core inheritance

src/pyedb/extensions/create_cell_array.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -260,21 +260,21 @@ def is_supported_outline(self, outline) -> bool:
260260
return outline.type in {"polygon", "rectangle"}
261261

262262
def pitch_from_outline(self, outline):
263-
bbox = outline.polygon_data.bbox()
264-
return self.edb.value(bbox[1].x - bbox[0].x), self.edb.value(bbox[1].y - bbox[0].y)
263+
bbox = outline.polygon_data.bounding_box
264+
return self.edb.value(bbox[1][0] - bbox[0][0]), self.edb.value(bbox[1][1] - bbox[0][1])
265265

266266
def is_primitive_to_copy(self, prim):
267267
return prim.type in {"polygon", "rectangle", "circle"}
268268

269269
def duplicate_primitive(self, prim, dx, dy, i, j):
270-
moved_pd = prim.polygon_data.move((dx, dy))
271-
voids = [voids.polygon_data.move((dx, dy)) for voids in prim.voids]
270+
moved_pd = prim.polygon_data.core.move((dx, dy))
271+
voids = [voids.polygon_data.core.move((dx, dy)) for voids in prim.voids]
272272
return self.edb.modeler.create_polygon(
273273
moved_pd, layer_name=prim.layer.name, net_name=prim.net.name, voids=voids
274274
)
275275

276276
def duplicate_path(self, path, dx, dy, i, j):
277-
moved_line = path.cast().center_line.move((dx, dy))
277+
moved_line = path.core.polygon_data.move((dx, dy))
278278
self.edb.modeler.create_trace(
279279
moved_line,
280280
width=path.width,
@@ -291,7 +291,7 @@ def duplicate_standalone_via(self, via, dx, dy, i, j):
291291
self.active_layout,
292292
net=via.net,
293293
name=f"{via.name}_X{i}_Y{j}",
294-
padstack_def=via.definition,
294+
padstack_definition=via.definition,
295295
position_x=pos[0] + dx,
296296
position_y=pos[1] + dy,
297297
rotation=0.0,

src/pyedb/grpc/database/components.py

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -345,26 +345,25 @@ def refresh_components(self) -> bool:
345345
self._ics = {}
346346
self._ios = {}
347347
self._others = {}
348+
type_map = {
349+
"resistor": self._res,
350+
"capacitor": self._cap,
351+
"inductor": self._ind,
352+
"ic": self._ics,
353+
"io": self._ios,
354+
"other": self._others,
355+
}
348356
for i in self._pedb.layout.groups:
349357
self._cmp[i.name] = i
350358
try:
351-
if i.type == "resistor":
352-
self._res[i.name] = i
353-
elif i.type == "capacitor":
354-
self._cap[i.name] = i
355-
elif i.type == "inductor":
356-
self._ind[i.name] = i
357-
elif i.type == "ic":
358-
self._ics[i.name] = i
359-
elif i.type == "io":
360-
self._ios[i.name] = i
361-
elif i.type == "other":
362-
self._others[i.name] = i
363-
else:
359+
target = type_map.get(i.component_type)
360+
if target is None:
364361
self._logger.warning(
365362
f"Unknown component type {i.name} found while refreshing components, will ignore"
366363
)
367-
except:
364+
else:
365+
target[i.name] = i
366+
except Exception:
368367
self._logger.warning(f"Assigning component {i.name} as default type other.")
369368
self._others[i.name] = i
370369
return True
@@ -1071,13 +1070,13 @@ def create(
10711070
compdef = self._get_component_definition(component_name, pins)
10721071
if not compdef:
10731072
return False
1074-
new_cmp = GrpcComponentGroup.create(self._active_layout, component_name, compdef.name)
1073+
new_cmp = GrpcComponentGroup.create(self._active_layout.core, component_name, compdef.name)
10751074
if new_cmp.is_null:
10761075
raise ValueError(f"Failed to create component {component_name}.")
10771076
if hasattr(pins[0], "component") and pins[0].component:
10781077
hosting_component_location = None
10791078
if not pins[0].component.is_null:
1080-
hosting_component_location = pins[0].component.transform
1079+
hosting_component_location = pins[0].component.core.transform
10811080
else:
10821081
hosting_component_location = None
10831082
if not len(pins) == len(compdef.component_pins):
@@ -1089,14 +1088,14 @@ def create(
10891088
for padstack_instance, component_pin in zip(pins, compdef.component_pins):
10901089
padstack_instance.is_layout_pin = True
10911090
padstack_instance.name = component_pin.name
1092-
new_cmp.add_member(padstack_instance)
1091+
new_cmp.add_member(padstack_instance.core)
10931092
if not placement_layer:
10941093
new_cmp_layer_name = pins[0].padstack_def.data.layer_names[0]
10951094
else:
10961095
new_cmp_layer_name = placement_layer
10971096
if new_cmp_layer_name in self._pedb.stackup.signal_layers:
10981097
new_cmp_placement_layer = self._pedb.stackup.signal_layers[new_cmp_layer_name]
1099-
new_cmp.placement_layer = new_cmp_placement_layer
1098+
new_cmp.placement_layer = new_cmp_placement_layer.core
11001099
if r_value:
11011100
new_cmp.component_type = GrpcComponentType.RESISTOR
11021101
is_rlc = True
@@ -1329,12 +1328,12 @@ def delete_single_pin_rlc(self, deactivate_only: bool = False) -> List[str]:
13291328
deleted_comps = []
13301329
for comp, val in self.instances.items():
13311330
if hasattr(val, "pins") and val.pins:
1332-
if val.num_pins == 1 and val.type in ["Resistor", "Capacitor", "Inductor"]:
1331+
if val.num_pins == 1 and val.component_type in ["resistor", "capacitor", "inductor"]:
13331332
if deactivate_only:
13341333
val.is_enabled = False
1335-
val.model_type = "RLC"
1334+
val.model_type = "rlc"
13361335
else:
1337-
val.edbcomponent.delete()
1336+
val.delete()
13381337
deleted_comps.append(comp)
13391338
if not deactivate_only:
13401339
self.refresh_components()
@@ -1470,7 +1469,7 @@ def set_solder_ball(
14701469
sball_shape = GrpcSolderballShape.SOLDERBALL_SPHEROID
14711470

14721471
cmp_property = cmp.component_property
1473-
if cmp.component_type == GrpcComponentType.IC:
1472+
if cmp.core.component_type == GrpcComponentType.IC:
14741473
ic_die_prop = cmp_property.die_property
14751474
ic_die_prop.die_type = GrpcDieType.FLIPCHIP
14761475
if not cmp.placement_layer == list(self._pedb.stackup.layers.keys())[0]:
@@ -1696,7 +1695,7 @@ def import_bom(
16961695
comp.refdes = refdes_temp
16971696

16981697
unmount_comp_list.remove(refdes)
1699-
comp.ungroup(True)
1698+
comp.core.ungroup(True)
17001699
self.create(pinlist, refdes, p_layer, part_name)
17011700
self.refresh_components()
17021701
comp = self.instances[refdes]
@@ -1858,7 +1857,7 @@ def get_pin_position(self, pin: Any) -> List[float]:
18581857
if pin.component.is_null:
18591858
transformed_pt_pos = pt_pos
18601859
else:
1861-
transformed_pt_pos = pin.component.transform.transform_point(pt_pos)
1860+
transformed_pt_pos = pin.component.core.transform.transform_point(pt_pos)
18621861
return [Value(transformed_pt_pos[0]), Value(transformed_pt_pos[1])]
18631862

18641863
def get_pins_name_from_net(self, net_name: str, pin_list: Optional[List[Any]] = None) -> List[str]:

src/pyedb/grpc/database/definition/component_def.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,11 @@ def components(self) -> dict[str, Component]:
102102
-------
103103
dict[str, :class:`Component <pyedb.grpc.database.hierarchy.component.Component>`]
104104
"""
105-
comp_list = [Component(self._pedb, l) for l in Component.find_by_def(self._pedb.active_layout, self.part_name)]
105+
from ansys.edb.core.hierarchy.component_group import ComponentGroup as GrpcComponent
106+
107+
comp_list = [
108+
Component(self._pedb, l) for l in GrpcComponent.find_by_def(self._pedb.active_layout.core, self.part_name)
109+
]
106110
return {comp.refdes: comp for comp in comp_list}
107111

108112
@property

0 commit comments

Comments
 (0)