Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions sc_leflib/_leflib.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,10 @@ cdef extern from "lefrReader.hpp" namespace "LefParser":

cdef cppclass lefiPin:
const char* name()
int hasUse()
const char* use()
int hasDirection()
const char* direction()
int numPorts()
lefiGeometries* port(int index)

Expand Down
8 changes: 8 additions & 0 deletions sc_leflib/_leflib.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -394,6 +394,14 @@ cdef int pin_cb(lefrCallbackType_e cb_type, lefiPin* pin, lefiUserData data) noe
name = pin.name().decode('ascii')
_state.data['macros'][_state.cur_macro]['pins'][name] = {}

if pin.hasDirection():
direction = pin.direction().decode('ascii')
_state.data['macros'][_state.cur_macro]['pins'][name]['direction'] = direction

if pin.hasUse():
use = pin.use().decode('ascii')
_state.data['macros'][_state.cur_macro]['pins'][name]['use'] = use

ports = []
for i in range(pin.numPorts()):
port = pin.port(i)
Expand Down
2 changes: 2 additions & 0 deletions tests/test_leflib.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,8 @@ def test_leflib_complete(datadir):
assert chk3a['size'] == {'width': 10.8, 'height': 28.8}
assert len(chk3a['pins']) == 7
vdd = chk3a['pins']['VDD']
assert vdd['direction'] == "INOUT"
assert vdd['use'] == "POWER"
assert len(vdd['ports']) == 2
port = vdd['ports'][1]
assert port['class'] == 'NONE'
Expand Down
Loading