Intel® Quartus® Prime Pro Edition User Guide: Scripting

ID 683432
Date 10/04/2021
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

3.1.29.44. report_bottleneck (::quartus::sta)

The following table displays information for the report_bottleneck Tcl command:

Tcl Package and Version

Belongs to ::quartus::sta

Syntax report_bottleneck [-h | -help] [-long_help] [-cmetric <cmetric_name> ] [-details] [-metric <default|tns|num_paths|num_fpaths|num_fanins|num_fanouts> ] [-nworst <number> ] [-panel_name <panel_name> ] [-stdout] [ <paths> ]
Arguments -h | -help Short help
-long_help Long help with examples and possible return values
-cmetric <cmetric_name> Custom metric function to evaluate individual nodes
-details Show the detailed information (number of failing edges, number of fanins, etc)
-metric <default|tns|num_paths|num_fpaths|num_fanins|num_fanouts> Indicate the metric to use to rate individual nodes
-nworst <number> Specifies the maximum number of nodes to report. If unspecified, there is no limit
-panel_name <panel_name> Sends the results to the panel and specifies the name of the new panel
-stdout Output the result onto stdout
<paths> Paths to be analyzed
Description

Reports bottleneck nodes in a design based on user-specified criteria for rating each node. The following considerations are pre-defined num_fpaths: (default) returns the number of paths that fail timing through the node. num_fanins: returns the number of fanin edges from the node. num_fanouts: returns the number of fanout edges from the node. num_paths: returns the number of paths through the node. tns: returns the total negative slack of all the paths through the node. The paths to be analyzed can be specified by passing the result of any get_timing_paths call as the last argument to report_bottleneck. If no paths are specified, report_bottleneck analyzes the worst 1000 setup paths in the design. You can also create your own custom criteria for evaluating nodes based on the combination of the number of fanouts, fanins, failing paths, and total paths. To use custom criteria, do the following: 1. Create a Tcl procedure that takes one argument, "arg", for example. 2. Use "upvar $arg metric" in the procedure. 3. Calculate the rating based on $metric(tns), $metric(num_fanouts), $metric(num_fanins), and $metric(num_fpaths). 4. Return the rating with "return $rating". 5. Pass the name of your custom criteria procedure to report_bottleneck using the -cmetric option. Reports can be directed to the Tcl console (-stdout), the Timing Analyzer graphical interface (-panel), or a combination of the two.

Example Usage
project_open my_project
create_timing_netlist
read_sdc
update_timing_netlist

# use the worst 500 hold paths
set paths [ get_timing_paths -npaths 500 -hold ]
report_bottleneck -metric default -panel "Timing Analysis Bottleneck Report - Default Metric" $paths
report_bottleneck -metric tns -panel "Timing Analysis Bottleneck Report - TNS" $paths
report_bottleneck -metric num_paths -panel "Timing Analysis Bottleneck Report - Number of Paths" $paths
report_bottleneck -metric num_fpaths -panel "Timing Analysis Bottleneck Report - Number of Failing Paths" $paths
report_bottleneck -metric num_fanouts -panel "Timing Analysis Bottleneck Report - Number of Fanouts" $paths

# create custom metric and use the worst 2000 setup paths
proc report_bottleneck_custom_metric {arg} {
	# Description: use the number of fanins as the custom metric.
	upvar $arg metric
	set rating $metric(num_fanins)
	return $rating
}

set paths [ get_timing_paths -npaths 2000 -setup ]
report_bottleneck -cmetric report_bottleneck_custom_metric -panel "Timing Analysis Bottleneck Report - Custom" $paths
Return Value Code Name Code String Return
TCL_OK 0 INFO: Operation successful