# 6.6. pyopus.design.yt — Yield targeting (design for yield)¶

Corners-based design (PyOPUS subsystem name: YT)

Finds the circuit’s design parameters for which the worst-case performances (within beta of the statistical parameters origin) satisfy the design requirements. beta specifies the target yield through the following equation.

Y = 0.5 beta ( 1 + erf( beta / sqrt(2) ) )

class pyopus.design.yt.YieldTargeting(paramSpec, statParamSpec, opParamSpec, heads, analyses, measures, corners, fixedCorners=None, fixedParams={}, variables={}, beta=3.0, sigmaBox=None, wcSpecs=None, initial=None, initialNominalDesign=True, forwardSolution=True, initialCbdOptions=None, firstPassCbdOptions=None, cbdOptions={}, wcOptions={}, cornerTol=0.01, angleTol=10, debug=0, spawnerLevel=1)[source]

paramSpec is the design parameter specification dictionary with lo and hi members specifying the lower and the upper bound.

statParamSpec is the statistical parameter specification dictionary with lo and hi members specifying the lower and the upper bound.

opParamSpec is the operating parameter specification dictionary with lo and hi members specifying the lower and the upper bound. The nominal value is specified by the init member.

See PerformanceEvaluator for details on heads, analyses, measures, corners, and variables.

corners are prototype corners and do not specify any operating or statistical parameters. They are used by the worst-case analysis for computing worst case performance corners.

fixedCorners are predefined, fully specified corners (i.e. not prototype corners) where performance measures for which worst-case corners are not computed will be evaluated. If not specified, only the corners generated by the worst-case analysis will be used for these measures.

Fixed parameters are given by fixedParams - a dictionary with parameter name for key and parameter value for value. Alternatively the value can be a dictionary in which case the init member specifies the parameter value.

If fixedParams is a list the members of this list must be dictionaries describing parameters. The set of fixed parameters is obtained by merging the information from these dictionaries.

beta is the spehere radius within which the worst case is sought. It defines the target yield.

sigmaBox is the box constraint on normalized statistical parameters (i.e. normalized to N(0,1)). If not specified it is set to 10 or 2x beta, whichever is greater.

wcSpecs is the list of worst cases to compute in the form of a list of (name, type) pairs where name is the performance measure name an type is either upper or lower. If a specification is just a string it represents the performance measure name. In that case the type of the specification is obtained from the measures structure (the lower and the upper member of a performance measure description dictionary). If wcSpecs is not specified the complete list of all performance measures is used and the presence of the lower and the upper member in the performance measure description dictionary specifies the type of the worst case that is considered in the process of yield targetting.

initial is a dictionary of initial design parameter values. If not specified the mean of the lower and the upper bound are used.

If initialNominalDesign is True an initial design in the nominal corner is performed using CornerBasedDesign class and the resulting design parameter values are used as the initial point for yield targeting. initial is used as the strating point for the nominal design.

If forwardSolution is True the solution of previous pass is used as the initial point for the next pass.

initialCbdOptions is a dictionary of options passed to the CornerBasedDesign object at its creation in initial nominal design. These options define the behavior of the sizing across corners. If not given cbdOptions are used.

firstPassCbdOptions is a dictionary of options passed to the CornerBasedDesign object at its creation in the first pass. These options define the behavior of the sizing across corners in the first pass. If not specified cbdOptions are used.

cbdOptions is a dictionary of options passed to the CornerBasedDesign object at its creation. These options define the behavior of the sizing across corners.

wcOptions is a dictionary of options passed to the WorstCase object. These options define the behavior of the worst case analysis.

cornerTol is the relative tolerance for determining if two corners are almost equal. The absolute tolerance for the norm of the vector of statistical parameters is obtained by multiplying this value with beta. The absolute tolerance for operating parameters is obtained by multiplying the low-high range with cornerTol.

angleTol is the angular tolerance in degrees for determining if two sets of statistical parameters are almost equal.

debug turns on debugging.

Setting spawnerLevel to a value not greater than 1 distributes the evaluations across available computing nodes. This argument is forwarded to the CornerBasedDesign and the WorstCase objects.

This is a callable object with no arguments. The return value is a tuple comprising a dictionary with the final values of the design parameters, the Aggregator object used for evaluating the final result across all relevant corners, the WorstCase object used for computingthe final worst case performance, and the total dictionary holding the number of all analyses performed. If no optimization step is performed (i.e. if the initial design satisfies the design requirements in worst case corners) the returned aggregator is None.

Objects of this type store the number of analyses performed during the last call to the object in the analysisCount member. The last Aggregator object and the last WorstCase object are stored in the aggregator and the wc member. The resulting set of design parameters is stored in the atParam member.