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: 
Highlighted
Visitor tomalek
Visitor
16,170 Views
Registered: ‎07-16-2014

How to treat asynchronous inputs to be excluded from STA

Jump to solution

I have an asynchronous input SELF_DONE. That input goes into a 2-stage synchronizer (2 flip-flops) that runs on a clock that is completely asynchronous to that SELF_DONE input.

 

In Vivado, after I run check_timing commnad I get the following messages:

1)

unconstrained pins for maximum delay:

<some_path>/self_done_demet_reg[0]/D

2)

ports with no input delay:

SELF_DONE

 

I do not care about input or maximum delay in this case since I know that the SELF_DONE input is completely asynchronous and its change may come at any time. How can I simply remove the path from the SELF_DONE input to the demet register pin (self_done_demet_reg[0]/D) from analysis so that I do not get those two messages after running the check_timing command?

 

I tried to set the following false path but after running the check_timing command it had no impact:

set_false_path -from [get_ports SELF_DONE] -to [get_pins <some_path>/self_done_demet_reg[0]/D]

 

Could you please give me some advice? Thank you very much!

 

 

0 Kudos
1 Solution

Accepted Solutions
Historian
Historian
26,571 Views
Registered: ‎01-23-2009

Re: How to treat asynchronous inputs to be excluded from STA

Jump to solution

Ironically, I think you need to first give it an input delay and then give it the false path...

 

Without the input_delay, the SELF_DONE is not a startpoint of a static timing path; the set_input_delay makes it one. Then you can declare it false

 

set_input_delay <any_value> -clock [get_clocks <any_clock>] [get_ports SELF_DONE]

set_false_path -from [get_ports SELF_DONE] -to [get_pins <some_path>/self_done_demet_reg[0]/D]

 

 

Avrum

 

 

6 Replies
Scholar muravin
Scholar
16,151 Views
Registered: ‎11-21-2013

Re: How to treat asynchronous inputs to be excluded from STA

Jump to solution
Hi Tomalek,
I think what you want is to simply specify the source path:

set_false_path -from [get_ports SELF_DONE]

That's all.
Regards
Vlad
Vladislav Muravin
0 Kudos
Historian
Historian
26,572 Views
Registered: ‎01-23-2009

Re: How to treat asynchronous inputs to be excluded from STA

Jump to solution

Ironically, I think you need to first give it an input delay and then give it the false path...

 

Without the input_delay, the SELF_DONE is not a startpoint of a static timing path; the set_input_delay makes it one. Then you can declare it false

 

set_input_delay <any_value> -clock [get_clocks <any_clock>] [get_ports SELF_DONE]

set_false_path -from [get_ports SELF_DONE] -to [get_pins <some_path>/self_done_demet_reg[0]/D]

 

 

Avrum

 

 

Scholar muravin
Scholar
16,133 Views
Registered: ‎11-21-2013

Re: How to treat asynchronous inputs to be excluded from STA

Jump to solution

Avrum,

 

Can you please elaborate on this? We don't set_input_delay on the inputs we don't care about, and the timing analysis does return some path for the timing-excepted inputs using set_false_path.

 

Thank you

Vlad

Vladislav Muravin
0 Kudos
Historian
Historian
16,128 Views
Registered: ‎01-23-2009

Re: How to treat asynchronous inputs to be excluded from STA

Jump to solution

We all agree that there is no need to constrain this path - an asynchronous single bit  signal going to a clock crossing circuit doesn't need to be constrained.

 

However, the OP asked how you can get this path removed from the list of unconstrained paths, and how to remove this input from the "no input delay" check of check_timing. If you don't have a set_input_delay on this input, then it shows up in both reports.

 

Apparently (and this makes some sense), you can't just do a set_false_path on it to remove it from these reports. Without a set_input_delay, it is not a path. So, to

  - leave it unconstrained and

  - to remove it from these reports

I suspect that what I suggested in the previous post will work.

 

Avrum

 

 

0 Kudos
Visitor tomalek
Visitor
15,702 Views
Registered: ‎07-16-2014

Re: How to treat asynchronous inputs to be excluded from STA

Jump to solution

I can confirm that the solution suggested by avrumw worked:

 

set_input_delay <any_value> -clock [get_clocks <any_clock>] [get_ports SELF_DONE]

set_false_path -from [get_ports SELF_DONE] -to [get_pins <some_path>/self_done_demet_reg[0]/D]

 

Thanks for your help,

tomalek

Visitor mniyas
Visitor
349 Views
Registered: ‎05-21-2018

Re: How to treat asynchronous inputs to be excluded from STA

Jump to solution

I recently faced the same problem and I've found a better way and created one template to handle even for my next projects.

Paste the below commands in xdc and edit accordingly. Hopes it helps!

## Better way to handle all async inouts in one-shot from Vivado tool
# Run 'Report Timing Summary' with enabling 'Report unconstrained paths'
# Goto 'Unconstrained Paths' -> 'NONE to NONE' and understand the maximum delay for direct inout path
# Create a virtual clock with period just greater than the above maximum delay and make it asynchronous to all other clocks
create_clock -name async_inouts -period <>
set_clock_groups -asynchronous -group [get_clocks async_inouts]

# Goto 'Check Timing' -> 'no_input_delay'
# Select all -> Export to spreadsheet -> Copy-paste ports below ensuring they are async inputs
set_input_delay -clock [get_clocks async_inouts] 0.000 [get_ports <>]

# Goto 'Check Timing' -> 'no_output_delay'
# Select all -> Export to spreadsheet -> Copy-paste ports below ensuring they are async outputs
set_output_delay -clock [get_clocks async_inouts] 0.000 [get_ports <>]

## Now the benefit is you can analyze all direct paths at 'Intra-Clocks Paths' -> 'async_inouts' and all other paths will become false paths.
## By adusting value of set_input_delay/set_output_delay or with set_max_delay you can adjust the direct path requirements.