UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

Reply

Implementation runs made smarter

Highlighted
Visitor
Posts: 14
Registered: ‎07-27-2016

Implementation runs made smarter

Hi all,

 

I have a fairly complex and high-utilized design with a Artix7 - 200.

Therefore I usually leave the implementation phase running over night too see if I get any successful runs that will meet timing. Although, one night is not enough to run 20+ implementations that all require ~1,5-2h to finish.

So, I have noticed that the first WNS estimations are usually enough for me in order to know if the whole design would meet timing. Say, if I see a WNS of <-1.0ns even before routing, I know that in 99,9% of the cases the design won't meet timing.

 

To save some time, is there any way to tell the implementation to stop automatically at this point (<-1.0ns?) and then continue with the next implementation with other directives.

It is quite unnecessary to have the router routing a design for 1h that eventually will fail.

 

Kind regards,

Jonas

Voyager
Posts: 300
Registered: ‎02-24-2014

Re: Implementation runs made smarter

The simplest way to do this is use a non-project compilation flow, using a script.   In a Linux enviroment, it's easy to run parallel place & route on different machines, and also to get the slack from place & route in a TCL script, where you can decide whether or not try other strategies. Scripting lets you develop much more complex strategies than project mode with the GUI

Scholar
Posts: 1,052
Registered: ‎09-16-2009

Re: Implementation runs made smarter

We do similar things in tcl like so:

proc timing_ok {} {
    return [expr [get_property SLACK [get_timing_paths -delay_type min_max]] >= 0]
}

if { ! [timing_ok] } {
  puts "Boo - timing failed"
  # Try other things
} else {
  puts "Yea - timing passed"
  # Generate reports, etc...
}

Adjust as necessary for your desired actions / limits.

 

Regards,

 

Mark

Visitor
Posts: 14
Registered: ‎07-27-2016

Re: Implementation runs made smarter

Hi,

 

Thank you for the comments and example. I will have a look into scripting & Vivado. I have only used the GUI so far, just because it has been enough.

 

You guys now any good tutorials into this subject?

 

Kind regards,

Jonas

Moderator
Posts: 1,695
Registered: ‎01-16-2013

Re: Implementation runs made smarter

@nlacoustics,

 

Check the following TCL scripting user guide:

https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_4/ug894-vivado-tcl-scripting.pdf

 

The below user guide has complete vivado TCL commands: 

https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_4/ug835-vivado-tcl-commands.pdf

 

--Syed

---------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
---------------------------------------------------------------------------------------------