cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
joe306
Scholar
Scholar
227 Views
Registered: ‎12-07-2018

TCL Script to Highlight failing paths

Jump to solution

Hello,, I was watching the QuickTake Video: 

Vivado Timing Closure Techniques - Physical Optimization
https://www.xilinx.com/video/hardware/vivado-timing-closure-physical-optimization.html

I am learning a lot of good stuff. In the video the presenter uses a tcl script to highlight failing paths. Here is the command he used: source ./highlight_orig_net.tcl

At 9.47 in the video, the script is used. 

Question, where can I get that tcl script?

Question, do I run the script after Synthesis or Implentation?

Thank you

Joe

 

0 Kudos
Reply
1 Solution

Accepted Solutions
miker
Xilinx Employee
Xilinx Employee
220 Views
Registered: ‎11-30-2007

@joe306 

That was a script the presenter wrote to quickly highlight the desired paths for the presentation.  You can see all the commands in the script highlighted below:

forums_vivado_script.png

Please Reply, Kudos, and Accept as Solution.

View solution in original post

4 Replies
miker
Xilinx Employee
Xilinx Employee
221 Views
Registered: ‎11-30-2007

@joe306 

That was a script the presenter wrote to quickly highlight the desired paths for the presentation.  You can see all the commands in the script highlighted below:

forums_vivado_script.png

Please Reply, Kudos, and Accept as Solution.

View solution in original post

joe306
Scholar
Scholar
198 Views
Registered: ‎12-07-2018

Hello, and thank you for responding to my post. 

Here is what the script should have then:

select_objects {get_nets /cpuEngin/or1200_cpu/or1200_ctrl/O17}
highlight_objects -color green {get_select_objects}
select_objects {get_nets {cpuEngine/or1200_cpu/or1200_ctrl/n_O_intaddr_a_reg{4}_i_2 cpuEgnine/or1200_cpu/or1200_ctrl/041}}
highlight_objects -color yellow {get_selected_objects}

I will have to try this in the future. 

Thank you very much

0 Kudos
Reply
avrumw
Guide
Guide
166 Views
Registered: ‎01-23-2009

This is just a VERY small sampling of what you can do with the combination of the design database and the visualization windows in Vivado.

In Vivado, everything is linked. If an object is selected, it shows up as selected in any visualization window that can show that object. For example, if you select a cell, that cell is selected in the design database, and will show as selected in the schematic viewer (if the cell is visible in the schematic) in the die view, in the netlist window (again, if it is visible) and in any interactive list that shows that cell.

You do a lot of very powerful stuff with this.

The "get_*" commands (get_cells, get_nets, get_pins, get_ports, get_timing_paths, ...) are very powerful - you can create a list of objects using these commands (and, yes, a "timing path" is an object). In addition to the other things you can do with objects (get and set properties, get access to other objects based on the connectivity of objects, filter them,...), you can also "select" them with the "select_objects" command. This is one of the two links between the design database mechanisms and the visualization mechanisms; when you pass a list of objects to the "select_objects" command, the objects in the list are all selected. As I mentioned, when an object is selected in any way (clicking on it in any view, or using the select_object command) it is highlighted in all views that show that object.

The other link between the mechanisms is the get_selected_objects command - this does the opposite - if generates a list which contains any objects that are selected - again, one or multiple objects can be selected by clicking/ctrl-clicking on them and then be returned to a list with the get_selected_objects command. Anything you can do with a list of objects, you can do with a list created in this mechanism. This is what is done with the "highlight_objects" command - this assigns a highlight color to a list of objects

BTW, the command above is wrong, it should be

highlight_objects -color green [get_selected_objects]

The "get_selected_objects" is a command - the command needs to be executed to return a list of objects. When put in [ ], this is an embedded Tcl command - the command inside the [] is executed and the returned value (in this case the list of objects) is returned to the command in which this was embedded.

In fact, the above commands can be simplified - you don't actually need to do the selection - you can just do

highlight_objects -color green [get_nets /cpuEngine/or1200_cpu/or1200_ctrl/O17]

or even

set my_objects [get_nets /cpuEngine/or1200_cpu/or1200_ctrl/O17]
highlight_objects -color green $my_objects

(which passes the list of objects through the variable my_objects rather than the list of selected objects).

And it goes on and on. Lists of objects can be shown in an interactive list with the "show_objects" command - this creates a window with a the objects, were each object is interactive - you can select and manipulate the object in this link directly.

You can also create a schematic of a list of objects using the show_schematic command.

And as I mentioned a timing path is an object - you can create an interactive list of timing paths. This is actually what the

"report_timing -name <report_name> ..."

is doing - it is really the equivalent of

show_objects -name <report_name> [get_timing_objects ...]

And when you select and right click on a timing path and select "Schematic" (or simply press F4) it is doing 

show_schematic [get_selected_objects]

So, what you saw in this video is the very tip of the iceberg as to what you can do with this very very powerful set of mechanisms...

Avrum

joe306
Scholar
Scholar
152 Views
Registered: ‎12-07-2018

Thank you very much for the detailed response. I have so much to learn. Seems like climbing Mount Everest. 

Joe

0 Kudos
Reply