cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
pa3bgr
Visitor
Visitor
8,712 Views
Registered: ‎09-10-2014

Vivado bug when using expressions in differential port delay constraints

I wasted a few days on this bug, so I wanted to share it with you. In my Vivado 2015.3 project, I use constraint files for I/.O poerts, using set_input_delay and set_output_delay. I prefer use expressions instead of values, so I can keep the constraints readable. For single-dende signals this works fine, but wehn addressing differential signals, Vivado returns with an obscure critical error, that there is no useable port. The workaround is to put in the actuial value, instead of expression.

 

works (single-ended):

set_output_delay -clock Clock_virt -max [expr  ($T_MOSI+$T_Serial_setup )] [get_ports MOSI]

 

does not work (differential):

set_output_delay -clock LVDS_Clock_1_virt -max [expr ($T_RX_1+$T_LVDS_setup )] [get_ports RX_1_P]

 

works (differential):

set_output_delay -clock LVDS_Clock_1_virt -max 2.257 [get_ports RX_I_P]

 

0 Kudos
6 Replies
pulim
Xilinx Employee
Xilinx Employee
8,693 Views
Registered: ‎02-16-2014

hi @pa3bgr

 

In the two commands (which you posted for differential ports) I see a difference in the port name.

 

[get_ports RX_1_P] and [get_ports RX_I_P]

 

Can you cross-check that?

 

 

 

 

 

 

 

0 Kudos
pulim
Xilinx Employee
Xilinx Employee
8,660 Views
Registered: ‎02-16-2014

hi @pa3bgr

 

have you cross-checked that?

0 Kudos
nupurs
Moderator
Moderator
8,647 Views
Registered: ‎06-24-2015

Hi,

I too think the RX_1_IP and RX_I_IP caused the difference.
Please reconfirm that.

Thanks,
Nupur
Thanks,
Nupur
--------------------------------------------------------------------------------------------
Google your question before posting. If someone's post answers your question, mark the post as answer with "Accept as solution". If you see a particularly good and informative post, consider giving it Kudos (click on the 'thumbs-up' button).
0 Kudos
pa3bgr
Visitor
Visitor
8,640 Views
Registered: ‎09-10-2014

hi,

 

Thanks for looking into this. The RX_1_IP and RX_I_IP were typos in my post, not in my code. I manually changed the text after copy and paste into the post and made a typo, sorry for that.

 

The error still is there when usinig an expression. I strongly believe this is a bug in the constraints parser for the case of differential ports.

0 Kudos
pa3bgr
Visitor
Visitor
8,638 Views
Registered: ‎09-10-2014

corrected texts:

 

works (single-ended):

set_output_delay -clock Clock_virt -max [expr  ($T_MOSI+$T_Serial_setup )] [get_ports MOSI]

 

does not work (differential):

set_output_delay -clock LVDS_Clock_1_virt -max [expr ($T_RX_1+$T_LVDS_setup )] [get_ports RX_1_P]

 

works (differential):

set_output_delay -clock LVDS_Clock_1_virt -max 2.257 [get_ports RX_1_P]

0 Kudos
pa3bgr
Visitor
Visitor
8,487 Views
Registered: ‎09-10-2014

Can someone please move this post to "known bugs for Vivado 2015.4" ?

Sorry, don't know how to do that.

0 Kudos