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!

AR# 54842

2013.x Vivado Constraints - "CRITICAL WARNING: [Designutils 20-1307] Command 'lappend', 'lindex', 'lsort', 'set_param', or 'concat' is not supported in the xdc constraint file ..."

Description

The following critical warnings might occur when XDC files include "lappend", "lindex", "lsort", or "concat" are now run in 2013.1:

CRITICAL WARNING: [Designutils 20-1307] Command 'concat' is not supported in the xdc constraint file. [constraints.xdc:310]
CRITICAL WARNING: [Designutils 20-1307] Command 'lappend' is not supported in the xdc constraint file. [constraints.xdc:311]
CRITICAL WARNING: [Designutils 20-1307] Command 'lindex' is not supported in the xdc constraint file. [constraints.xdc:312]
CRITICAL WARNING: [Designutils 20-1307] Command 'lsort' is not supported in the xdc constraint file. [constraints.xdc:313]
CRITICAL WARNING: [Designutils 20-1307] Command 'set_param' is not supported in the xdc constraint file. [constraints.xdc:314]

These commands were previously accepted. What has changed?

Solution

It was found that "lappend" and "concat" were causing problems with the XDC constraints and were not always getting applied as expected which sometimes led to timing issues in designs. These are still supported as Tcl commands, but not in XDC from 2013.1.

Following are the ways you can work around the problem:

1) Original XDC file contains the following:

    set DRAM5NS {}
    set DRAM5NS_PER [get_property PERIOD [get_clocks -of_objects [get_pins rx_clocking/mig_ddr3_clk_gen.3.mig_ddr3_clocking/u_infrastructure/mmcm_i/CLKFBOUT\]]]
    lappend DRAM5NS [get_clocks -of_objects [get_pins rx_clocking/mig_ddr3_clk_gen.3.mig_ddr3_clocking/u_infrastructure/mmcm_i/CLKFBOUT\]]
    lappend DRAM5NS [get_clocks -of_objects [get_pins rx_clocking/mig_ddr3_clk_gen.3.mig_ddr3_clocking/u_infrastructure/mmcm_i/CLKFBOUT\]]
    lappend DRAM5NS [get_clocks -of_objects [get_pins rx_clocking/mig_ddr3_clk_gen.3.mig_ddr3_clocking/u_infrastructure/mmcm_i/CLKFBOUT\]]
    lappend DRAM5NS [get_clocks -of_objects [get_pins rx_clocking/mig_ddr3_clk_gen.3.mig_ddr3_clocking/u_infrastructure/mmcm_i/CLKFBOUT\]]

   For 2013.1, you can create the list in one shot by doing the following:

   set DRAM5NS [list \
    [get_clocks -of_objects [get_pins rx_clocking/mig_ddr3_clk_gen.0.mig_ddr3_clocking/u_infrastructure/mmcm_i/CLKFBOUT\]] \
    [get_clocks -of_objects [get_pins rx_clocking/mig_ddr3_clk_gen.1.mig_ddr3_clocking/u_infrastructure/mmcm_i/CLKFBOUT\]] \
    [get_clocks -of_objects [get_pins rx_clocking/mig_ddr3_clk_gen.2.mig_ddr3_clocking/u_infrastructure/mmcm_i/CLKFBOUT\]] \
    [get_clocks -of_objects [get_pins rx_clocking/mig_ddr3_clk_gen.3.mig_ddr3_clocking/u_infrastructure/mmcm_i/CLKFBOUT\]] \
    ]

2) You can also do the following, if your list contains valid objects and not regular strings:

   set my_var "a b c"
   set my_var "$my_var d e f"

Attached to the end of this answer record is a list of commands accepted by the Vivado tool in the XDC file.

Attachments

Associated Attachments

Name File Size File Type
valid_commands_for_xdc.txt 1 KB TXT
AR# 54842
Date Created 03/08/2013
Last Updated 08/28/2013
Status Active
Type Known Issues
Tools
  • Vivado Design Suite