^

AR# 41444 MIG v3.61-v3.7 Virtex-6 HXT DDR2/DDR3 - BUFR / RSYNC/ IODELAY Column Constraints

When generating some Virtex-6 HXT MIG 3.61-3.7 DDR2/DDR3 designs, the UCF generated by MIG fails during Verify UCF, but implements in Place and Route (PAR) successfully.The Verify failures occur on the BUFR placement constraints similar to the following:

/*******************************************************/
/* Controller 0
/*******************************************************/
ERROR: Resynchronization Clock (BUFR) pin for the column - "2" is either not allocated or provided the wrong constraint value.
ERROR: The BUFR Constraint for the FPGA column '1' is not provided in the UCF or Constraint provided for this column is not valid . Following is(are) valid BUFR constraints
E33 - X0Y143.
C33 - X0Y141.
G34 - X0Y139.
J31 - X0Y137.
B30 - X0Y181.
K27 - X0Y179.
D29 - X0Y177.

ERROR: The BUFR Constraint for the FPGA column '2' is not provided in the UCF or Constraint provided for this column is not valid . Following is(are) valid BUFR constraints
D11 - X1Y143.
E16 - X1Y181.
J15 - X1Y179.
B19 - X1Y177.

These errors occur in Verify UCF because the HXT columns are labeled differently than the rest of the Virtex-6 devices. MIG does not account for this difference in column labels and so generates the column constraints incorrectly. The center columns are labeled 0 and 1 as there are only two center columns, the MIG core is expecting them to be 1 and 2. While the constraints fail during Verify UCF, the design does implement in Place and Route (PAR) correctly.

For customers not using Verify UCF, no changes need to be made. However, for customers needing to modify their pin-out and use Verify UCF, the column constraints need to be modified in the generated UCF.

Here is an example:

##Site: D11 -- Bank 36
INST "c0_u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/gen_loop_col0.u_oserdes_rsync"
LOC = "OLOGIC_X1Y143";
INST "c0_u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/gen_loop_col0.u_odelay_rsync"
LOC = "IODELAY_X1Y143";

INST "c0_u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/gen_loop_col0.u_bufr_rsync"
LOC = "BUFR_X1Y7";

##Site: J31 -- Bank 26
INST "c0_u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/gen_loop_col2.u_oserdes_rsync"
LOC = "OLOGIC_X0Y137";
INST "c0_u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/gen_loop_col2.u_odelay_rsync"
LOC = "IODELAY_X0Y137";

INST "c0_u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/gen_loop_col2.u_bufr_rsync"
LOC = "BUFR_X0Y6";

And, its related RTL top level parameters generated as follows:

parameter C0_nDQS_COL0 = 2,
// Number of DQS groups in I/O column #1.
parameter C0_nDQS_COL1 = 0,
// Number of DQS groups in I/O column #2.
parameter C0_nDQS_COL2 = 6,
// Number of DQS groups in I/O column #3.
parameter C0_nDQS_COL3 = 0,
// Number of DQS groups in I/O column #4.
parameter C0_DQS_LOC_COL0 = 16'h0706,
// DQS groups in column #1.
parameter C0_DQS_LOC_COL1 = 0,
// DQS groups in column #2.
parameter C0_DQS_LOC_COL2 = 48'h050403020100,
// DQS groups in column #3.
parameter C0_DQS_LOC_COL3 = 0,

Modify the column number in the constraints as follows:

##Site: D11 -- Bank 36
INST "c0_u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/gen_loop_col1.u_oserdes_rsync"
LOC = "OLOGIC_X1Y143";
INST "c0_u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/gen_loop_col1.u_odelay_rsync"
LOC = "IODELAY_X1Y143";

INST "c0_u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/gen_loop_col1.u_bufr_rsync"
LOC = "BUFR_X1Y7";

##Site: J31 -- Bank 26
INST "c0_u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/gen_loop_col0.u_oserdes_rsync"
LOC = "OLOGIC_X0Y137";
INST "c0_u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/gen_loop_col0.u_odelay_rsync"
LOC = "IODELAY_X0Y137";

INST "c0_u_memc_ui_top/u_mem_intfc/phy_top0/u_phy_read/u_phy_rdclk_gen/gen_loop_col0.u_bufr_rsync"
LOC = "BUFR_X0Y6";

The RTL top level parameters should be as follows:

parameter C0_nDQS_COL0 = 2,
// Number of DQS groups in I/O column #1.
parameter C0_nDQS_COL1 = 6,
// Number of DQS groups in I/O column #2.
parameter C0_nDQS_COL2 = 0,
// Number of DQS groups in I/O column #3.
parameter C0_nDQS_COL3 = 0,
// Number of DQS groups in I/O column #4.
parameter C0_DQS_LOC_COL0 = 16'h0706,
// DQS groups in column #1.
parameter C0_DQS_LOC_COL1 = 48'h050403020100,,
// DQS groups in column #2.
parameter C0_DQS_LOC_COL2 = 0,
// DQS groups in column #3.
parameter C0_DQS_LOC_COL3 = 0,

This difference in constraint generation will be resolved in ISE 13.2 (MIG v3.8).

Revision History

03/24/11 - Initial Release

Master Answer Records

Answer Number Answer Title Version Found Version Resolved
39128 MIG Virtex-6 and Spartan-6 v3.7 - Release Notes and Known Issues for ISE Design Suite 13.1 N/A N/A

Associated Answer Records

Answer Number Answer Title Version Found Version Resolved
39128 MIG Virtex-6 and Spartan-6 v3.7 - Release Notes and Known Issues for ISE Design Suite 13.1 N/A N/A
AR# 41444
Date Created 06/08/2011
Last Updated 05/20/2012
Status Active
Type Known Issues
Devices
  • Virtex-6 HXT
IP
  • MIG
Feed Back