Intel® Quartus® Prime Pro Edition User Guide: Scripting

ID 683432
Date 9/26/2022
Public

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

Document Table of Contents

4.1.35.45. 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