fix ff annotation

This commit is contained in:
Stefan Holst committed 2021-01-22 18:03:18 +09:00
1 parent ec37e11fef
commit a2df0e5682
1 file changed
+3 -5
+3 -5
View File
@@ -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])