cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
2,442 Views
Registered: ‎01-22-2015

set_max_delay -datapath_only -from {NOT OPTIONAL}

Jump to solution

UG835 tells me that the -from argument for set_max_delay is optional, except when using the -datapath_only argument.

 

So, when using -datapath_only, how do I safely wildcard the -from argument – and is this advisable?

0 Kudos
1 Solution

Accepted Solutions
jmcclusk
Mentor
Mentor
2,888 Views
Registered: ‎02-24-2014

A very common way to specify the -from argument of set_max_delay is with a clock.  i.e.

 

set_max_delay -datapath_only -from [get_clocks some_random_clock]  -to a_random_destination  10.0 

 

The only valid source points are the clock pins of registers (or other sequential elements), or an actual clock, so using a clock as the source is by far the easiest solution here.  (EDIT:   And as Avrum points out below, you have to use a clock that actually sources signals on the path you are trying to constrain. )

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

View solution in original post

0 Kudos
4 Replies
jmcclusk
Mentor
Mentor
2,889 Views
Registered: ‎02-24-2014

A very common way to specify the -from argument of set_max_delay is with a clock.  i.e.

 

set_max_delay -datapath_only -from [get_clocks some_random_clock]  -to a_random_destination  10.0 

 

The only valid source points are the clock pins of registers (or other sequential elements), or an actual clock, so using a clock as the source is by far the easiest solution here.  (EDIT:   And as Avrum points out below, you have to use a clock that actually sources signals on the path you are trying to constrain. )

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

View solution in original post

0 Kudos
avrumw
Guide
Guide
2,402 Views
Registered: ‎01-23-2009

A very common way to specify the -from argument of set_max_delay is with a clock.  i.e.

 

set_max_delay -datapath_only -from [get_clocks some_random_clock]  -to a_random_destination  10.0 

 

A clarification on this: The "some_random_clock" must, in fact, be the clock that clocks the startpoint of the path that you are applying the set_max_delay -datapath_only to. Otherwise, the tools will find no path that is clocked by a FF on "some_random_clock" and ends at "a_random_destination" (and the constraint will not do anything).

 

I am going to assume that this constraint is needed on the clock domain crossing path going into a clock domain crossing circuit (CDCC),

 

In general, any mechanism that matches the startpoint will be OK - there are lots if you have access to the rest of the design.

 

For example

  -from [get_cells -hier]

will certainly do it - I might avoid this because it could potentially slow down the tools due to the large list (or it might not). In a proper clock domain crossing circuit, there will be one and only one FF driving the input to the CDCC.

 

   -from [all_fanin -only_cells -flat -startpoints_only [get_pins <D_input_of_destination_input>]

 

would also do it, and would have only the startpoint

 

The problem with this is that these won't work with scoped constraints (at least the first one won't - I have never tried with the second one, but I suspect it won't). So, if you have a module that is used as a CDCC, and you want to apply this constraint to the first flip-flop in a scoped XDC file, then the fact that you need the -from is a problem, since the -from is outside the module. So one way to do that is to have the source clock brought in to your CDCC - even though the clock is not used by any logic within the CDCC. Then you can use

 

set_max_delay -from [get_clocks -of_objects [get_ports src_clk] -to ...

 

in the scoped constraint file. I am pretty sure this works (I haven't tried it myself, but have heard of others doing it).

 

Of course, when you instantiate your CDCC you have to connect this port to the correct clock...

 

I have talked to a number of Xilinx engineers about this "restriction". It is there (apparently) because without the -from the command has the potential to slow down implementation. I don't know if this is still the case - in an ideal world, this restriction would be removed, and this path could be enumerated like any other path enumeration.

 

Avrum

rentschl
Visitor
Visitor
1,967 Views
Registered: ‎04-28-2017

I noticed that Avrum's post was from 1-24-18, so I'm wondering if there is any update from Xilinx regarding support of the "set_max_delay -datapath_only" *without* any "-from"?

 

A closely related question is, what about not requiring a "-from" for the set_bus_skew command as well, for all the same reasons?

 

Thanks,

Eric

0 Kudos
avrumw
Guide
Guide
1,961 Views
Registered: ‎01-23-2009

I noticed that Avrum's post was from 1-24-18

 

There has been at most 2 versions of the tool since this post...

 

The "shortcoming" of the set_max_delay -datapath_only needing a -from argument has been known since the beginning of Vivado - some time around 2012. The likelihood of it changing "any time soon" is pretty low...

 

I know it is still required in 2018.1, and there is nothing mentioned in the release notes for 2018.2...

 

Avrum

0 Kudos