14. Metrics
The SiliconCompiler schema includes a ['metric', ...]
dictionary with a large number of parameters to be tracked on a per step and per index basis.
The metric values are used in the minimum()
and maximum()
functions to select the best compilation based on the associated ['flowgraph', <flow>, <step>, <index>, 'goal', ...]
and ['flowgraph', <flow>, <step>, <index>, 'weight', ...]
set for the step and index within the flowgraph. For a complete description of the minimum()
function, see the Core API section of the reference manual.
The default ‘asicflow’ demonstrates a traditional ASIC optimization function, with hard requirements set up for hold, setup, warnings, and errors and soft requirements for area and power.
if metric in ('errors','warnings','drvs','holdwns','setupwns','holdtns','setuptns'):
chip.set('flowgraph', flow, step, index, 'weight', metric, 1.0)
chip.set('flowgraph', flow, step, index, metric, 'goal', 0)
elif metric in ('cellarea', 'peakpower', 'standbypower'):
chip.set('flowgraph', flow, step, index, 'weight', metric, 1.0)
else:
chip.set('flowgraph', flow, step, index, 'weight', metric, 0.001)
In addition to step wise minimization, metrics are used by the summary()
function to present a dashboard view of the compilation results, and can be accessed through set()
/get()
by the user to create custom reporting and optimization loops. The metrics are cleared before each step/index run and then updated by the post_process() function for each tool. For an example of post_process setup, see the
openroad module.
The following table shows a summary of all the available metrics. For a complete descriptions, refer to the Schema section of the reference manual.
parameter |
description |
errors |
Metric: total errors |
warnings |
Metric: total warnings |
drvs |
Metric: total drvs |
unconstrained |
Metric: total unconstrained |
coverage |
Metric: coverage |
security |
Metric: security |
luts |
Metric: FPGA LUTs |
dsps |
Metric: FPGA DSP slices |
brams |
Metric: FPGA BRAM tiles |
cellarea |
Metric: cellarea |
totalarea |
Metric: totalarea |
utilization |
Metric: area utilization |
peakpower |
Metric: peakpower |
averagepower |
Metric: averagepower |
dozepower |
Metric: dozepower |
idlepower |
Metric: idlepower |
leakagepower |
Metric: leakagepower |
sleeppower |
Metric: sleeppower |
irdrop |
Metric: peak IR drop |
holdpaths |
Metric: holdpaths |
setuppaths |
Metric: setuppaths |
holdslack |
Metric: holdslack |
holdwns |
Metric: holdwns |
holdtns |
Metric: holdtns |
setupslack |
Metric: setupslack |
setupwns |
Metric: setupwns |
setuptns |
Metric: setuptns |
macros |
Metric: macros |
cells |
Metric: cells |
registers |
Metric: registers |
buffers |
Metric: buffers |
transistors |
Metric: transistors |
pins |
Metric: pins |
nets |
Metric: nets |
vias |
Metric: vias |
wirelength |
Metric: wirelength |
overflow |
Metric: overflow |
memory |
Metric: memory |
exetime |
Metric: exetime |
tasktime |
Metric: tasktime |
totaltime |
Metric: totaltime |