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.
Was this Answer Record helpful?