fix ff annotation
This commit is contained in:
1 parent
ec37e11fef
commit
a2df0e5682
1 file changed
+3
-5
+3
-5
@@ -9,6 +9,7 @@ Call :py:func:`DelayFile.annotation` to match the intermediate representation to
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
import re
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from lark import Lark, Transformer
|
from lark import Lark, Transformer
|
||||||
@@ -93,13 +94,11 @@ class DelayFile:
|
|||||||
if cell is None:
|
if cell is None:
|
||||||
log.warn(f'Cell from SDF not found in circuit: {cn}')
|
log.warn(f'Cell from SDF not found in circuit: {cn}')
|
||||||
continue
|
continue
|
||||||
|
ipn = re.sub(r'\((neg|pos)edge ([^)]+)\)', r'\2', ipn)
|
||||||
ipin = tlib.pin_index(cell.kind, ipn)
|
ipin = tlib.pin_index(cell.kind, ipn)
|
||||||
opin = tlib.pin_index(cell.kind, opn)
|
opin = tlib.pin_index(cell.kind, opn)
|
||||||
kind = cell.kind.lower()
|
kind = cell.kind.lower()
|
||||||
|
|
||||||
ipn2 = ipn.replace('(posedge A1)', 'A1').replace('(negedge A1)', 'A1')\
|
|
||||||
.replace('(posedge A2)', 'A2').replace('(negedge A2)', 'A2')
|
|
||||||
|
|
||||||
def add_delays(_line):
|
def add_delays(_line):
|
||||||
if _line is not None:
|
if _line is not None:
|
||||||
timing[_line, :, 0] += select_del(delvals, 0)
|
timing[_line, :, 0] += select_del(delvals, 0)
|
||||||
@@ -107,13 +106,12 @@ class DelayFile:
|
|||||||
|
|
||||||
take_avg = False
|
take_avg = False
|
||||||
if kind.startswith('sdff'):
|
if kind.startswith('sdff'):
|
||||||
if not ipn.startswith('(posedge CLK'):
|
if not ipn.startswith('CLK'):
|
||||||
continue
|
continue
|
||||||
if ffdelays and (len(cell.outs) > opin):
|
if ffdelays and (len(cell.outs) > opin):
|
||||||
add_delays(cell.outs[opin])
|
add_delays(cell.outs[opin])
|
||||||
else:
|
else:
|
||||||
if kind.startswith(('xor', 'xnor')):
|
if kind.startswith(('xor', 'xnor')):
|
||||||
ipin = tlib.pin_index(cell.kind, ipn2)
|
|
||||||
# print(ipn, ipin, times[cell.i_lines[ipin], 0, 0])
|
# print(ipn, ipin, times[cell.i_lines[ipin], 0, 0])
|
||||||
take_avg = timing[cell.ins[ipin]].sum() > 0
|
take_avg = timing[cell.ins[ipin]].sum() > 0
|
||||||
add_delays(cell.ins[ipin])
|
add_delays(cell.ins[ipin])
|
||||||
|
|||||||
Reference in new issue
Block a user