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!

cancel
Showing results for 
Search instead for 
Did you mean: 
Scholar mistercoffee
Scholar
324 Views
Registered: ‎04-04-2014

set_max_delay not being applied, no error messages generated

Jump to solution

Hi,

 

I am trying to apply a set_max_delay constrain on a clock crossing pair of FF. The path is from the first FF to the PRE pin of the second FF. I am using an identical approach to another design I have where this works. If I look at the timing path of that project it states the mex delay exceptino has been applied. In my enwer project there is no timing exception listed for the path. There appears to be no error mesaages I can find in the log that explains why it hasn't been applied. If I go to "edit constrains" I can see the constaint listed there so it appears to be parsed.

The path is listed in others path groups-> async default

Here is the schematic

set_max_delay.png

Here are my constraints. First a global set false path to all the D pins of my "async_chain" modules, which are my library FF chains.

set_false_path -to [get_pins -of_objects [get_cells -hier {*async_chain_reg[0]}] -filter {NAME =~ *D}]

The I have a structured 3 line approach to set_max_delay on the reset pins of these FF. 1st I set the endpoint PRE/CLR pin, Then I find the startpoints for all paths leading to that pin. Then I set max delay from all start and end points.

set samp_FF_DEST1 [get_pins -of_objects [get_cells */TRANS_EN_I/SAMP_EOB_SYNC_I/*reg[*]] -filter {NAME =~ *CLR || NAME =~ *PRE}]
set samp_FF_SRC1 [all_fanin -flat -only_cells -startpoints_only $samp_FF_DEST1]
set_max_delay 4.000 -to $samp_FF_DEST1 -from $samp_FF_SRC1 -datapath_only

I have tried combining these 3 lines into one. I have tried both PRE and CLR pins. I have tried not setting a global flase path to the D pins. Every time there appears to be no timing exception applied to that path. As I say, this approach works in another design and after 2 horus of trying I cannot see what I have done wrong.

Any ideas?

 

Thanks

0 Kudos
1 Solution

Accepted Solutions
Scholar mistercoffee
Scholar
304 Views
Registered: ‎04-04-2014

Re: set_max_delay not being applied, no error messages generated

Jump to solution

It's okay, I found it. I had a slightly different reg name for part of one instance of my async_chain module and for this reg alone the set max delay was not being applied.

2 Replies
Scholar mistercoffee
Scholar
309 Views
Registered: ‎04-04-2014

Re: set_max_delay not being applied, no error messages generated

Jump to solution

Ok, I am confused.

I have removed all my false paths. Yet by applying the set_max_delay it adds a false path whichI can see under "user ignored paths" and the hold constraints. 

The path to CLR passes setup but fails hold, with no mention of set max delay being applied as an exception.

Yet if I write the timing report to a file it clearly lists the path as being part of the set_max_delays.

The path is part of *async_default* because async reg RTL attribute is applied to the regs in my async_chain modules.

The path appears to be passing setup but failing hold due to the requirment being min delay of 0.0.

Here is the timing report attached.

 

 

 

 

 

 

0 Kudos
Scholar mistercoffee
Scholar
305 Views
Registered: ‎04-04-2014

Re: set_max_delay not being applied, no error messages generated

Jump to solution

It's okay, I found it. I had a slightly different reg name for part of one instance of my async_chain module and for this reg alone the set max delay was not being applied.