01-20-2016 10:38 AM
When I look to extract the routing delays associated with a net from a post-implementation design in Vivado, rather than getting the delays I just get information regarding the net.
When I run the cmmand:
get_net_delay -of_objects [ get_nets register_file_inst/reg_array_reg]
The output I get is:
While the above is a concatenation of the driver and the multiple desinations of the net, there is really no information presented regard the actual routing delay. I have tried multiple options and have struggled to extract the needed value. I am able to load net properties, and in the "connectivity" tab, use the "Load Net Delays" to use the GUI to get the delays, but still unable to get delays for the same net using the command line.
Any help would be appreciated
01-20-2016 10:49 AM
You note it is placed, has has it succesfully routed?
Until it has been both placed and routed, delays are not 'known'.
01-20-2016 11:01 AM - edited 01-20-2016 11:02 AM
The get_net_delays command returns a list of the net delay objects (just like the get_nets command returns net objects). What you see returned from the command is merely the list of names of the net delays.
To get the actual values of the net delays, you need to query the properties of each object. You can see the objects using the report_properties command:
report_property [lindex [get_net_delays -of_objects [get_nets sel0]] 0]
Property Type Read-only Value
CLASS string true net_delay
ESTIMATED bool true 0
FAST_MAX int true 179
FAST_MIN int true 151
NAME string true sel0_to_resp_gen_i0/char_cnt_i_1/I0
NET string true sel0
SLOW_MAX int true 285
SLOW_MIN int true 244
TO_PIN string true resp_gen_i0/char_cnt_i_1/I0
[this reports the property of the first item (lindex <list> 0) in the list of objects returned from the get_net_delays command]
You can see that each net delay object returned by the get_net_delays command has properties for the delay on the four different process corners. If you wanted the "slowest" one (SLOW_MAX) you could use
get_property SLOW_MAX [lindex [get_net_delays -of_objects [get_nets sel0]] 0] 285
01-20-2016 02:00 PM
Thank you. I think I understand it now and was able to extract it. Is all of this covered in the TCL reference manual?
01-20-2016 03:05 PM - edited 01-20-2016 03:05 PM
Is all of this covered in the TCL reference manual?
It is all covered "somewhere". The concept of objects and their properties are fundamental to how Vivado works, so information on how to work with them is scattered throughout much of the documentation.
So, yes, you get some hints about this in the "Tcl Guide" (UG853), but also in the "Properties Reference Guide" (UG912) and other places..
It is also covered in the Xilinx class Vivado Design Suite Advanced XDC and Static Timing Analysis for ISE Software Users.
02-23-2016 07:26 AM
10-23-2017 04:31 AM
10-23-2017 04:39 AM
10-23-2017 04:55 AM
10-23-2017 09:16 AM
Without having the actual syntax of what you are doing, we can't tell you what you are doing wrong.
However, in Vivado, the definition of a path is pretty specific, if you don't get it right, you won't get a report. A path:
- Starts at a start point. This can be:
- a clock
- a clocked cell
- the clock pin of a clocked cell
- an input (or inout) port of the design
- ends at an end point. This can be
- a clock
- a clocked cell
- the data pin (or one of the data pins) of a clocked cell
- note most clocked cells have multiple data input pins; for example a flip-flop has D, CE and R
- an output port (or input port of the design)
Everything else it passes through is a through point
- pins of combinatorial cells
- combinatorial cells
- pins of hierarchical blocks
- the Q output of flip-flops (this is not a startpoint)
You have to make sure that your -from contains only startpoints, the -to contains only endpoints and a -through (or multiple -through options) contain all the things you want to go through.