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!

AR# 55550

Vivado Constraints - Paths associated with endpoints added by "lappend" command are dropped from constraint after implementation


I have the following constraints in the XDC file:

set x [get_cells cell1] 
lappend x [get_cells cell2] 
set_multicycle_path -from $x -setup 2
set_multicycle_path -from $x -hold 1

These constraints work well post-Synthesis.

However, the path starting from cell2 loses its association with the multi-cycle constraint after implementation.

When running "report_timing -from [get_cells cell2]" in the Synthesized design, the returned path is analyzed as multi-cycle path (2x period requirement) as expected.

Whereas in Implemented design, the returned path is analyzed as default (1x period requirement).

What is the problem?


This issue is caused by the "lappend" command.

The "lappend" tcl command is not supported in XDC.

The elements grouped by "lappend" will not be written into the post-Implementation checkpoint, which leads to some paths being dropped from the original constraints.

For the example above, the multi-cycle constraints that were written into the XDC in the post-Implementation checkpoint are as follows:

set_multicycle_path -from [get_cells cell1]  -setup 2
set_multicycle_path -from [get_cells cell1]  -hold 1

[get_cells cell2] is not included.

To resolve this issue, do not use the "lappend" command in XDC and use supported list commands instead.

For supported XDC and SDC Commands, please refer to UG903, appendix A.
AR# 55550
Date 09/22/2014
Status Active
Type General Article
  • Vivado Design Suite