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