This issue onlyaffects MCB VHDL designs that are generated in MIG 3.7. The issue is that theCx_ARB_TIME_SLOT_? constantsin example_top.vhd or the top-level user design are assigned the logical port values instead of the physical port values.This means that for certain port configurations the userhas to change the Cx_ARB_TIME_SLOT_? values in example_top.vhd or the top-level user design from the logical port values to the physical port values.The port configurations that are affected are the ones where the physical port numbers are different than the logical port numbers. See the table below for the logical and physical port numbers for all possible user port configurations. For more information on Port Configurations of the MCB see the "MCB Functional Description" -> "Port Configurations" section of the Spartan-6 FPGA Memory Controller User Guide(UG388).
| Port Configuration | Logical Ports | Physical Ports |
| 2 32-bit unidirectional & 4-32-bit bidirectional | 012345 | 012345 |
| 4 32-bit bidirectional ports | 0123 | 0124 |
| 1 64-bit & 2- 32-bit bidirectional | 012 | 024 |
| 2 64-bit bidirectional | 01 | 02 |
| 1 128-bit bidirectional | 0 | 0 |
Example
For a 2 64-bit bidirectional port configuration with a round-robin arbitration scheme for MCB3 MIG 3.7 would incorrectlyassign the followingCx_ARB_TIME_SLOT_?constants:
constant C3_ARB_TIME_SLOT_0 : bit_vector(5 downto 0) := o"01";
constant C3_ARB_TIME_SLOT_1 : bit_vector(5 downto 0) := o"10";
constant C3_ARB_TIME_SLOT_2 : bit_vector(5 downto 0) := o"01";
constant C3_ARB_TIME_SLOT_3 : bit_vector(5 downto 0) := o"10";
constant C3_ARB_TIME_SLOT_4 : bit_vector(5 downto 0) := o"01";
constant C3_ARB_TIME_SLOT_5 : bit_vector(5 downto 0) := o"10";
constant C3_ARB_TIME_SLOT_6 : bit_vector(5 downto 0) := o"01";
constant C3_ARB_TIME_SLOT_7 : bit_vector(5 downto 0) := o"10";
constant C3_ARB_TIME_SLOT_8 : bit_vector(5 downto 0) := o"01";
constant C3_ARB_TIME_SLOT_9 : bit_vector(5 downto 0) := o"10";
constant C3_ARB_TIME_SLOT_10 : bit_vector(5 downto 0) := o"01";
constant C3_ARB_TIME_SLOT_11 : bit_vector(5 downto 0) := o"10";
To make the arbitration scheme work the user would have to change the values of the constants as follows:
constant C3_ARB_TIME_SLOT_0 : bit_vector(5 downto 0) := o"02";
constant C3_ARB_TIME_SLOT_1 : bit_vector(5 downto 0) := o"20";
constant C3_ARB_TIME_SLOT_2 : bit_vector(5 downto 0) := o"02";
constant C3_ARB_TIME_SLOT_3 : bit_vector(5 downto 0) := o"20";
constant C3_ARB_TIME_SLOT_4 : bit_vector(5 downto 0) := o"02";
constant C3_ARB_TIME_SLOT_5 : bit_vector(5 downto 0) := o"20";
constant C3_ARB_TIME_SLOT_6 : bit_vector(5 downto 0) := o"02";
constant C3_ARB_TIME_SLOT_7 : bit_vector(5 downto 0) := o"20";
constant C3_ARB_TIME_SLOT_8 : bit_vector(5 downto 0) := o"02";
constant C3_ARB_TIME_SLOT_9 : bit_vector(5 downto 0) := o"20";
constant C3_ARB_TIME_SLOT_10 : bit_vector(5 downto 0) := o"02";
constant C3_ARB_TIME_SLOT_11 : bit_vector(5 downto 0) := o"20";
| Answer Number | Answer Title | Version Found | Version Resolved |
|---|---|---|---|
| 33566 | Design Advisories for MIG including DDR3, DDR2, DDR, Spartan-6 FPGA MCB, RLDRAMII, QDRII+, QDRII, DDRII cores | N/A | N/A |