|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectedu.byu.ece.edif.tools.replicate.nmr.AbstractDeviceUtilizationTracker
edu.byu.ece.edif.tools.replicate.nmr.xilinx.XilinxDeviceUtilizationTracker
public abstract class XilinxDeviceUtilizationTracker
An abstract implementation of a Xilinx device utilization tracker.
| Field Summary | |
|---|---|
protected double |
_desiredUtilizationFactor
This factor scales the total max utilization ratio. |
protected boolean |
_ignoreEstimatedStops
|
protected boolean |
_ignoreHardStops
|
protected int |
_maxLogicBlocks
This is the number of logic blocks contained in the device, a logic block consisting of one LUT and one FF. |
protected double |
_mergeFactor
This factor scales the number of LUTs and FFs which will share a logic block |
private int |
_numVoters
Keep track of the number of voters added. |
protected double |
_optimizationFactor
This factor scales the number of logic blocks used by LUTs and FFs (to account for logic minimization) |
protected static java.lang.String |
BF957_PACKAGE
|
protected static java.lang.String |
BG256_PACKAGE
|
protected static java.lang.String |
BG352_PACKAGE
|
protected static java.lang.String |
BG432_PACKAGE
|
protected static java.lang.String |
BG560_PACKAGE
|
protected static java.lang.String |
BG575_PACKAGE
|
protected static java.lang.String |
BG728_PACKAGE
|
protected static java.lang.String |
CS144_PACKAGE
|
static double |
DEFAULT_DESIRED_UTILIZATION_FACTOR
The default desired utilization factor |
static double |
DEFAULT_MERGE_FACTOR
The default merge factor |
static double |
DEFAULT_OPTIMIZATION_FACTOR
The default optimization factor |
protected static java.lang.String |
FF1148_PACKAGE
|
protected static java.lang.String |
FF1152_PACKAGE
|
protected static java.lang.String |
FF1513_PACKAGE
|
protected static java.lang.String |
FF1517_PACKAGE
|
protected static java.lang.String |
FF1696_PACKAGE
|
protected static java.lang.String |
FF1704_PACKAGE
|
protected static java.lang.String |
FF668_PACKAGE
|
protected static java.lang.String |
FF672_PACKAGE
|
protected static java.lang.String |
FF676_PACKAGE
|
protected static java.lang.String |
FF896_PACKAGE
|
protected static java.lang.String |
FFG1148_PACKAGE
|
protected static java.lang.String |
FFG1152_PACKAGE
|
protected static java.lang.String |
FFG1513_PACKAGE
|
protected static java.lang.String |
FFG1517_PACKAGE
|
protected static java.lang.String |
FFG668_PACKAGE
|
protected static java.lang.String |
FFG672_PACKAGE
|
protected static java.lang.String |
FFG676_PACKAGE
|
protected static java.lang.String |
FG256_PACKAGE
|
protected static java.lang.String |
FG456_PACKAGE
|
protected static java.lang.String |
FG676_PACKAGE
|
protected static java.lang.String |
FG680_PACKAGE
|
protected static java.lang.String |
HQ240_PACKAGE
|
protected static java.lang.String |
PQ240_PACKAGE
|
protected static java.lang.String |
SF363_PACKAGE
|
protected static java.lang.String |
SFG363_PACKAGE
|
protected static java.lang.String |
TQ144_PACKAGE
|
| Fields inherited from class edu.byu.ece.edif.tools.replicate.nmr.AbstractDeviceUtilizationTracker |
|---|
_cachedCurrentUtilizationMap, _currentUtilizationMap, _maxUtilizationMap, _numInstances, _origNumInstances, _resourceMapper, coverage_factor |
| Constructor Summary | |
|---|---|
XilinxDeviceUtilizationTracker(double mergeFactor,
double optimizationFactor,
double desiredUtilizationFactor)
|
|
| Method Summary | |
|---|---|
protected void |
_init(EdifCell cell)
|
void |
decrementResourceCount(java.lang.String resourceType)
Decrements the utilization of the cell-type of the parameter eci. |
double |
getDesiredUtilizationFactor()
|
double |
getEstimatedLogicBlockUtilization()
Estimates the logic block utilization of the current design. |
double |
getEstimatedLogicBlockUtilizationRatio()
|
protected int |
getMaxLogicBlocks()
This assumes that the number of logic blocks (LUT-FF pairs) is equal to the number of LUTs. |
double |
getMergeFactor()
The merge factor is a scaler which tries to estimate the percentage of Flip-Flops and LUTs which can share a logic block. |
double |
getOptimizationFactor()
The optimization factor is a scaler which tries to estimate the percentage of logic blocks which will be optimized away. |
void |
ignoreHardResourceUtilizationLimits()
Causes this DeviceUtilizationTracker to ignore all hard resource limits |
void |
ignoreSoftLogicUtilizationLimit()
Causes this DeviceUtilizationTracker to ignore the soft logic utilization limit |
void |
incrementResourceCount(java.lang.String resourceType)
Increments the utilization of the cell-type parameter resourceType. |
void |
setDesiredUtilizationFactor(double desiredUtilizationFactor)
TODO: Check to make sure we aren't setting the utilization factor too low. |
java.lang.String |
toString()
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
protected double _desiredUtilizationFactor
protected int _maxLogicBlocks
protected double _mergeFactor
protected double _optimizationFactor
protected static final java.lang.String BF957_PACKAGE
protected static final java.lang.String BG256_PACKAGE
protected static final java.lang.String BG352_PACKAGE
protected static final java.lang.String BG432_PACKAGE
protected static final java.lang.String BG560_PACKAGE
protected static final java.lang.String BG575_PACKAGE
protected static final java.lang.String BG728_PACKAGE
protected static final java.lang.String CS144_PACKAGE
protected static final java.lang.String FF672_PACKAGE
protected static final java.lang.String FF896_PACKAGE
protected static final java.lang.String FF1148_PACKAGE
protected static final java.lang.String FF1152_PACKAGE
protected static final java.lang.String FF1517_PACKAGE
protected static final java.lang.String FF1696_PACKAGE
protected static final java.lang.String FF1704_PACKAGE
protected static final java.lang.String FG256_PACKAGE
protected static final java.lang.String FG456_PACKAGE
protected static final java.lang.String FG676_PACKAGE
protected static final java.lang.String FG680_PACKAGE
protected static final java.lang.String HQ240_PACKAGE
protected static final java.lang.String PQ240_PACKAGE
protected static final java.lang.String TQ144_PACKAGE
protected static final java.lang.String SF363_PACKAGE
protected static final java.lang.String FF668_PACKAGE
protected static final java.lang.String FF676_PACKAGE
protected static final java.lang.String FF1513_PACKAGE
protected static final java.lang.String SFG363_PACKAGE
protected static final java.lang.String FFG668_PACKAGE
protected static final java.lang.String FFG672_PACKAGE
protected static final java.lang.String FFG676_PACKAGE
protected static final java.lang.String FFG1148_PACKAGE
protected static final java.lang.String FFG1152_PACKAGE
protected static final java.lang.String FFG1513_PACKAGE
protected static final java.lang.String FFG1517_PACKAGE
private int _numVoters
protected boolean _ignoreEstimatedStops
protected boolean _ignoreHardStops
public static final double DEFAULT_MERGE_FACTOR
public static final double DEFAULT_OPTIMIZATION_FACTOR
public static final double DEFAULT_DESIRED_UTILIZATION_FACTOR
| Constructor Detail |
|---|
public XilinxDeviceUtilizationTracker(double mergeFactor,
double optimizationFactor,
double desiredUtilizationFactor)
| Method Detail |
|---|
public void decrementResourceCount(java.lang.String resourceType)
throws UnsupportedResourceTypeException
UnsupportedResourceTypeExceptionpublic double getDesiredUtilizationFactor()
public double getEstimatedLogicBlockUtilization()
Estimate = optimizationFactor*(utilizedFFs
+ utilizedLUTs - mergeFactor * utilizedFFs);
Derivation: Let A represent the total number of FF's, B represent the number of logic blocks in which FF's and LUTs are combined, and C represent the total number of LUTs. ThenIf you need to calculate a custom mergeFactor for a specific design, use the following equation:We define mergeFactor to betotal FF's = (A + B)
total LUTs = (B + C)
total logic blocks = (A + B + C)somergeFactor = (mergeable flipflops) / (total FF's)andmergeFactor = B / (A + B)Note thatB = mergeFactor * (A + B)Substitute B to get(A + B + C) = (A + B) + (B + C) - BThus the total number of logic blocks (without taking into account optimization) is given by the following equation:(A + B + C) = (A + B) + (B + C) - mergeFactor * (A + B)We define optimizationFactor to be the number of logic blocks after optimization divided by the number of logic blocks before optimization. So the final equation for the total number of logic blocks is as follows:total logic blocks = FF's + LUTs - mergeFactor * FF'sEstimate = optimizationFactor * (FF's + LUTs - mergeFactor * FF's)
mergeFactor = (FF's + LUTs - 2 * slices) / FF's
getMergeFactor(),
getOptimizationFactor()public double getEstimatedLogicBlockUtilizationRatio()
public double getMergeFactor()
public double getOptimizationFactor()
public void ignoreSoftLogicUtilizationLimit()
public void ignoreHardResourceUtilizationLimits()
public void incrementResourceCount(java.lang.String resourceType)
throws OverutilizationEstimatedStopException,
OverutilizationHardStopException,
UnsupportedResourceTypeException
OverutilizationEstimatedStopException
OverutilizationHardStopException
UnsupportedResourceTypeExceptionpublic java.lang.String toString()
toString in interface DeviceUtilizationTrackertoString in class AbstractDeviceUtilizationTrackerpublic void setDesiredUtilizationFactor(double desiredUtilizationFactor)
desiredUtilizationFactor -
protected void _init(EdifCell cell)
throws OverutilizationEstimatedStopException,
OverutilizationHardStopException
_init in class AbstractDeviceUtilizationTrackerOverutilizationEstimatedStopException
OverutilizationHardStopExceptionprotected int getMaxLogicBlocks()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||