Skip to content

Commit 11d17a9

Browse files
FIX: IPC export efficiency (#752)
* FIX: layer name * revert * fix * FIX * MISC: Auto fixes from pre-commit.com hooks For more information, see https://pre-commit.ci * fix: docstring * fix --------- Co-authored-by: ring630 <@gmail.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 0a03146 commit 11d17a9

File tree

3 files changed

+24
-8
lines changed

3 files changed

+24
-8
lines changed

src/pyedb/dotnet/edb_core/cell/primitive/primitive.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,11 @@ def net_name(self, name):
113113
@property
114114
def layer(self):
115115
"""Get the primitive edb layer object."""
116-
layer_name = self._edb_object.GetLayer().GetName()
117-
return self._pedb.stackup.all_layers[layer_name]
116+
obj = self._edb_object.GetLayer()
117+
if obj.IsNull():
118+
return None
119+
else:
120+
return self._pedb.stackup.find_layer_by_name(obj.GetName())
118121

119122
@property
120123
def layer_name(self):

src/pyedb/dotnet/edb_core/edb_data/layer_data.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@
2323
from __future__ import absolute_import
2424

2525

26+
def layer_cast(pedb, edb_object):
27+
if edb_object.IsStackupLayer():
28+
return StackupLayerEdbClass(pedb, edb_object.Clone(), name=edb_object.GetName())
29+
else:
30+
return LayerEdbClass(pedb, edb_object.Clone(), name=edb_object.GetName())
31+
32+
2633
class LayerEdbClass(object):
2734
"""Manages Edb Layers. Replaces EDBLayer."""
2835

src/pyedb/dotnet/edb_core/stackup.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
from pyedb.dotnet.edb_core.edb_data.layer_data import (
3737
LayerEdbClass,
3838
StackupLayerEdbClass,
39+
layer_cast,
3940
)
4041
from pyedb.dotnet.edb_core.general import convert_py_list_to_net_list
4142
from pyedb.generic.general_methods import ET, generate_unique_name
@@ -284,10 +285,7 @@ def all_layers(self):
284285
layer_list = list(self._edb_object.Layers(self._pedb.edb_api.cell.layer_type_set.AllLayerSet))
285286
temp = dict()
286287
for i in layer_list:
287-
if i.IsStackupLayer():
288-
obj = StackupLayerEdbClass(self._pedb, i.Clone(), name=i.GetName())
289-
else:
290-
obj = LayerEdbClass(self._pedb, i.Clone(), name=i.GetName())
288+
obj = layer_cast(self._pedb, i)
291289
temp[obj.name] = obj
292290
return temp
293291

@@ -306,12 +304,20 @@ def layers(self):
306304
"""
307305
return {name: obj for name, obj in self.all_layers.items() if obj.is_stackup_layer}
308306

307+
def find_layer_by_name(self, name: str):
308+
"""Finds a layer with the given name."""
309+
obj = self._pedb.edb_api.cell._cell.Layer.FindByName(self._edb_object, name)
310+
if obj.IsNull():
311+
raise ValueError("Layer with name '{}' was not found.".format(name))
312+
else:
313+
return layer_cast(self._pedb, obj.Clone())
314+
309315

310316
class Stackup(LayerCollection):
311317
"""Manages EDB methods for stackup accessible from `Edb.stackup` property."""
312318

313319
def __getitem__(self, item):
314-
return self.all_layers[item]
320+
return self.find_layer_by_name(item)
315321

316322
def __init__(self, pedb, edb_object=None):
317323
super().__init__(pedb, edb_object)
@@ -1800,7 +1806,7 @@ def residual_copper_area_per_layer(self):
18001806
temp_data = {name: 0 for name, _ in self.signal_layers.items()}
18011807
outline_area = 0
18021808
for i in self._pedb.modeler.primitives:
1803-
layer_name = i.layer.name
1809+
layer_name = i._edb_object.GetLayer().GetName()
18041810
if layer_name.lower() == "outline":
18051811
if i.area() > outline_area:
18061812
outline_area = i.area()

0 commit comments

Comments
 (0)