cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
tim_severance
Scholar
Scholar
4,916 Views
Registered: ‎03-03-2017

Run Post-Route Phys Opt Design

Jump to solution

Quick question,

   Let's say I am using Vivado 2017.4 and just completed an implementation using Performance_Explore strategy but failed timing.   What is the recommended method if I wanted to run an additional Post-Route Phys Opt Design?   I believe I can open the Settings window and check mark the is_enabled in the Post-Route Phys Opt Design option and hit OK and I think it will ask if I want to continue from the last step.

   Is there a way to run this step using TCL (I am using project mode in Vivado)?

   Also, what if I wanted to run a few more iterations of Opt-Design?   Can I load a design checkpoint at the end of the Opt-Design that already ran and then using TCL tell it to run some more iterations?

 

Thanks.

Tim

0 Kudos
1 Solution

Accepted Solutions
jmcclusk
Mentor
Mentor
5,633 Views
Registered: ‎02-24-2014

It's easy enough to run a post-route polishing pass..   Just load the design "Open Implemented Design" in Vivado, and run the optimization you want from the TCL console.

Don't forget to close a thread when possible by accepting a post as a solution.

View solution in original post

16 Replies
jmcclusk
Mentor
Mentor
4,907 Views
Registered: ‎02-24-2014

I'd do this.  

 

Turn on retiming in synthesis first.

 

Then I'd turn on Post-Placement Phys Opt.   I'd also look for timing failures involving high fanout nets, and perhaps target them specifically for post-placement optimization

 

and lastly,  Post-Route Phy Opt...    which can be run multiple times, by the way.

Don't forget to close a thread when possible by accepting a post as a solution.
0 Kudos
tim_severance
Scholar
Scholar
4,904 Views
Registered: ‎03-03-2017

@jmcclusk,

   Thanks for the tips.

   Can you be more specific as to how I would run the post route phy opt multiple times?   Let's say I just ran implementation and it failed timing.   Do I need to load the implemented design and use a TCL command to run the post route phy opt again?   Or can I do it somehow through the GUI?

Thanks.

Tim

0 Kudos
jmcclusk
Mentor
Mentor
4,895 Views
Registered: ‎02-24-2014

It's easily done from the TCL console.  you can run the entire flow from the command line, after loading the synthesized netlist.

 

eg:

place_design -directive Explore

phys_opt_design -directive Explore 

phys_opt_design -force_replication_on_nets [get_nets  target_net]

route_design -directive Explore

phys_opt_design -directive AggressiveExplore 

Don't forget to close a thread when possible by accepting a post as a solution.
0 Kudos
tim_severance
Scholar
Scholar
4,866 Views
Registered: ‎03-03-2017

@jmcclusk,

   Thanks for the info on how to do it all from the console.

   But what if I ran synth and impl using the buttons in the GUI but timing failed and I wanted to run additional post-route phys opt design runs.   Is this possible?   Do I have to load the implementation and run a TCL command from there?

Thanks.

Tim

0 Kudos
jmcclusk
Mentor
Mentor
5,634 Views
Registered: ‎02-24-2014

It's easy enough to run a post-route polishing pass..   Just load the design "Open Implemented Design" in Vivado, and run the optimization you want from the TCL console.

Don't forget to close a thread when possible by accepting a post as a solution.

View solution in original post

tim_severance
Scholar
Scholar
4,751 Views
Registered: ‎03-03-2017

@jmcclusk,

   I took a design that failed timing, opened the implemented design and ran "phys_opt_design -directive AggressiveExplore" from tcl console and then when it completed I ran the timing report and it showed passing.

   My question is how do I get this now passed timing to show in the Project Summary page and WNS/TNS in the Design Runs tab?   Once I closed the implementation Vivado still thought timing failed.

Thanks.

Tim

0 Kudos
jmcclusk
Mentor
Mentor
4,744 Views
Registered: ‎02-24-2014

try adding this pass as a post-route command in the implementation options.  see below:

 

post_route.png

Don't forget to close a thread when possible by accepting a post as a solution.
0 Kudos
tim_severance
Scholar
Scholar
4,417 Views
Registered: ‎03-03-2017

@jmcclusk,

   Sorry for the delay on this, but I am again working on optimizing timing on a complex design.

   You mentioned adding in the post-route phys_opt_design, but I already had that setup when I initially ran (which failed timing), then I opened the implemented design and ran more phys_opt_design runs where it eventually passes timing.

   I then save the implementation and close it.

   My question is how do I get the report shown on the main Project Manager (Design Runs tab) to show updated reported WNS/TNS/WHS etc.?   The numbers shown there are still the original failing numbers.

Thanks.

Tim

0 Kudos
tim_severance
Scholar
Scholar
4,409 Views
Registered: ‎03-03-2017

@jmcclusk,

    As an example:

   I synthesized a design using "Flow_PerfOptimized" synthesis strategy and implemented using Performance_ExplorePostRoutePhysOpt implementation strategy and ended up with WNS=-0.030 and TNS=-0.066.   I then opened the implementation and ran "phys_opt_design -directive AggressiveExplore" which ended up with WNS=+0.006 and TNS=0.000 so it passed!

   I then click the X in the upper right corner of Vivado to close the implemented design and it does not ask if I should save, it just lets me close..

   The WNS and TNS still show -0.030 and -0.066 in the design_runs window.

   If I open the implemented design again then the timing is back to where it failed initially, so my additional phys_opt_design I ran before was not saved.

 

Thanks for any tips to get this working.

 

Tim

0 Kudos
jmcclusk
Mentor
Mentor
4,094 Views
Registered: ‎02-24-2014

This is straightforward..    Once you've modified a design in memory like this, in order to save the results, you have to save it as a design checkpoint (DCP) file.     use the TCL command "write_checkpoint <file>"

 

Don't forget to close a thread when possible by accepting a post as a solution.
0 Kudos
tim_severance
Scholar
Scholar
4,091 Views
Registered: ‎03-03-2017

@jmcclusk,

   Thanks for the fast response.   Do you know if this updates the summary numbers in the Design Runs tab?

Tim

0 Kudos
jmcclusk
Mentor
Mentor
4,068 Views
Registered: ‎02-24-2014

No it won't.     Once you start diverging from the standard design flow, Vivado doesn't really keep track of what you are doing.

Don't forget to close a thread when possible by accepting a post as a solution.
0 Kudos
tim_severance
Scholar
Scholar
4,065 Views
Registered: ‎03-03-2017

@jmcclusk,

  Ok, understood.

  If I save a design checkpoint and then close implementation, will this checkpoint open when I open that implementation next time from the main window, or will it still open the implementation that completed before I ran the post-implementation phys_opt_desing?   In other words, is the only way to open the design with the passing timing going to be by doing a file->Checkpoint->Open?

Thanks.

Tim

0 Kudos
jmcclusk
Mentor
Mentor
4,063 Views
Registered: ‎02-24-2014

you got it..   file->Checkpoint->Open  is how you reload a design checkpoint.     you might be able to shoehorn your modified design flow into the standard Vivado design flow by using pre/post TCL scripts..      These can call the post-route phy_opt_design, for example, after routing.   Then you should get the right reporting in the various reports as well.

Don't forget to close a thread when possible by accepting a post as a solution.
tim_severance
Scholar
Scholar
4,057 Views
Registered: ‎03-03-2017

@jmcclusk,

   Great idea with the post.tcl.   I could put in calls to a couple extra rounds of phys_opt_design.

   Thanks for your help, you have been really helpful.   

   Technically the thread is already closed with an accepted solution.

Tim

0 Kudos
andrewcb
Explorer
Explorer
261 Views
Registered: ‎07-03-2008

My 2019.1 project flow failed to run phys_opt_degin as Vivado thought there were not timing errors, despite the Implementation Timing Report showing 32 errors!!
I was able to use this post to run phys_opt_design manually and it was able to fix the timing errors in just 4 passes.
Thank-you.

0 Kudos