Quantcast
Channel: Cadence Digital Implementation Blogs
Viewing all articles
Browse latest Browse all 335

EDI System’s get_metric Command Makes Metrics Reporting Quick and Easy

$
0
0

In this blog post I want to highlight the command get_metric that was introduced in Encounter Digital Implementation (EDI) System 10.1 and enhanced further in version 11. Have you ever tried writing a script to extract information from the log file like run times or timing results? It becomes complicated quite fast when you're trying to capture the desired data, especially if a command is run multiple times. Also, any script is reliant on the log file format staying consistent.

The command get_metric was developed to make reporting metrics easy and straightforward. When the variable encEnableMetric is set to 1 (default in EDI 11) EDI System will automatically store metrics for a set of a predefined commands. These metrics are saved with the database (*.enc.dat/designName.metric) and made accessible from session to session using get_metric.

Here are some examples of how it is used:

get_metric by itself returns all metrics last computed:

encounter> get_metric
    34726           design.numStandardCell
    35327           design.numNet
     0               design.numFloatBlock
     4               design.numFixedBlock
     34726           design.numSingleRowCell
     0               design.numDoubleRowCell
     0               design.numMultiRowCell
     0               design.numIoInst
     0               design.numFixedIo
     0               design.numFloatIo
     156584          design.numTerm
     4.43            design.numTermPerNet
     40.547 %        design.util
     0.138           design.pinDensity
     1.10e+06 um     place.totalNetLength
     -1.036 ns       timing.setup.WNS.all
     -61.875 ns      timing.setup.TNS.all
     12273           timing.setup.numPaths.all
     100             timing.setup.numViolatingPaths.all
     0.026 ns        timing.setup.WNS.reg2reg
     ...

 

Use the -cmd option to filter metrics by command:

encounter> get_metric -cmd verifyGeometry
verifyGeometry
     3    verify.geom.cell
     0    verify.geom.samenet
     0    verify.geom.wiring
     0    verify.geom.antenna
     0    verify.geom.short
     0    verify.geom.overlap
     3    verify.geom.total

 

Use wildcards to match multiple commands:

encounter> get_metric -cmd verify*
verifyGeometry
     3    verify.geom.cell
     0    verify.geom.samenet
     0    verify.geom.wiring
     0    verify.geom.antenna
     0    verify.geom.short
     0    verify.geom.overlap
     3    verify.geom.total
verifyConnectivity -type all -error 1000 -warning 50
     0    verify.conn
verifyProcessAntenna -reportfile leon.antenna.rpt -error 1000
     0    verify.antenna

 

You can specify the metric name to report. If multiple commands have the same metric it returns the most recent one:

encounter> get_metric timing.setup.WNS.all
     -1.036 ns timing.setup.WNS.all

 

Filter by both command and metric:

encounter> get_metric timing.setup.WNS.all -cmd {optDesign* *setup*}
optDesign -preCts
     0.006 ns   timing.setup.WNS.all
optDesign -postCts
     -1.023 ns timing.setup.WNS.all
optDesign -postCts -hold
     -1.023 ns timing.setup.WNS.all
optDesign -postRoute
     -1.036 ns timing.setup.WNS.all
optDesign -postRoute -hold
     -1.036 ns timing.setup.WNS.all

 

If you want to format your own standard QoR report, the -tcl and -value options are used to read the data directly into Tcl lists/values you can write out in any style you choose. Below is an example of using the -tcl option:

encounter> get_metric design.* -tcl
{design.numStandardCell 34726} {design.numNet 35327} {design.numFloatBlock 0} {design.numFixedBlock 4} {design.numSingleRowCell 34726} {design.numDoubleRowCell 0} {design.numMultiRowCell 0} {design.numIoInst 0} {design.numFixedIo 0} {design.numFloatIo 0} {design.numTerm 156584} {design.numTermPerNet 4.43} {design.util 40.547 %} {design.pinDensity 0.138}

 

Use the -value option to return only the metric's value. Here I assign it to a variable:

encounter> set totalGeomViols [get_metric verify.geom.total -value]
  3

 

Lastly, use the following to report metrics for all the commands run:

encounter> get_metric -cmd *
placeDesign
     34726           design.numStandardCell
     35327           design.numNet
...
optDesign -preCts
     0.006 ns   timing.setup.WNS.all
     0.000 ns   timing.setup.TNS.all
...
clockDesign -specFile DATA/leon.ctstch
     306             clock.clk.numBuffer
     1978.44         clock.clk.areaBuffer
...
optDesign -postCts
     -1.023 ns       timing.setup.WNS.all
     -62.451 ns      timing.setup.TNS.all
...
optDesign -postCts -hold
     -1.023 ns       timing.setup.WNS.all
     -62.490 ns      timing.setup.TNS.all
     12273           timing.setup.numPaths.all
...
optDesign -postRoute
     -1.036 ns       timing.setup.WNS.all
     -61.835 ns      timing.setup.TNS.all
     12273           timing.setup.numPaths.all
...
optDesign -postRoute -hold
     -1.036 ns       timing.setup.WNS.all
     -61.875 ns      timing.setup.TNS.all
...
verifyGeometry
     3    verify.geom.cell
...
verifyConnectivity -type all -error 1000 -warning 50
     0    verify.conn
verifyProcessAntenna -reportfile
leon.antenna.rpt -error 1000
     0    verify.antenna

 

The metrics are stored in the .metric file with both the command and options. So it's useful to use wildcards when specifying the -cmd option.

 

The commands currently supported by get_metric are:

placeDesign
optDesign
timeDesign
clockDesign
verifyGeometry
verifyConnectivity
verifyProcessAntenna
verifyMetalDensity
report_power
addFiller
addWellTap
addEndCap

If you've haven't tried get_metric I encourage you to give a try and let us know what you think. Are there commands currently not supported which you would like to report metrics on?

Brian Wallace


Viewing all articles
Browse latest Browse all 335

Trending Articles