Characterizing Timing Yield for Functional Units During High Level Synthesis

In
this project, our goal is to search for the methods to characterize the timing
yield by efficient circuit graph analysis techniques (to be more specific, it
is the critical path analysis techniques) instead of expensive SSTA techniques.
We will evaluate the effectiveness of this approach by incorporating it into a
timing analysis flow consisting of Synopsys tools.

In order to address the
problem of process variations, statistical static timing analysis (SSTA) has been
proposed and widely studied in recent years. Existing SSTA methods mainly focus
on gate-level timing analysis. However, in the domain of high-level synthesis, statistical
timing analysis has not been studied extensively as at the gate level. One of
the reasons why this is the case is because it is difficult to accurately characterize
performance yields during high-level behavioral synthesis. In most of the
existing works [1,2],
a piecewise linear approximation based approach is adopted. In this approach,
the delays of the functional units in the behavioral model are expressed as a
function of the process variations, such as the deviation of threshold voltages
DVth and the deviation of the gate length Dl,

T = a0 + a1DVth + a2Dl(1)

where T is the probabilistic delay of the functional unit due to
the process variations. a0 represents the
nominal delay computed at the nominal values of the process variables. a1 and a2 are sensitivity values to
the deviation of different process variables. The delays of individual functional
units in the library are calculated by performing Monte
Carlo analysis [1,2].
The yield of an individual functional unit is then calculated as the
probability that the delay of that functional unit is less than the timing
constraint, that is,

Yield (i) = Prob(Ti < Tc)(2)

Monte Carlo analysis
and gate-level statistical timing analysis are slow for large functional units.
Both will generate detailed timing distribution of individual functional unit.
However, not all those information are used in the yield calculation during
high-level synthesis. In fact, we only need to calculate the percentage of the
delay distribution that meets the timing constraint as illustrated in Equation
(2). Therefore, a more efficient characterization of the timing yields of
functional units without performing gate-level statistical analysis is needed.

It has been recognized that the timing yield is in proportional to the
longest path delay of the function unit. The functional unit will have higher
probability to violate a tighter timing constraint. As the longest path delay
constraint becomes tight, there will be more and more critical or asymptotic
critical paths in the circuit. It is obvious that the probability of timing failure
is proportional to the total number of the critical or asymptotic critical
paths in the circuit. Therefore, it is a good heuristic to use the number of
critical paths in the circuit to characterize the yield of that function unit.
In this way, we avoid performing Monte Carlo
simulation or propagating Probability Distribution Functions in the circuit,
both of which are inefficient for large functional units.

There are several advantages of using critical path as a metric to characterize
the yield. The algorithms for finding critical path or asymptotic critical path
in a circuit have already been widely researched. There also exist commercial
tools that could perform such analysis, such as PrimeTime
from Synopsys. In high-level synthesis, the timing constraint of an individual
functional unit may be optimized iteratively during scheduling and module
selection. Within each iteration, the timing yield of
the function unit should be recalculated. If we use Monte Carlo or statistical
timing analysis, no information from the previous iteration can be used to
speed up the computation. However, the distributions of the critical and
asymptotic critical paths in the circuit have only small local changes after
the timing constraint is updated.