PLB/OPB_EMC 2.00.a 3-state registers cannot be packed into IOBs.
"The reason that the 3-state registers cannot be pushed into the IOB is because the registers are optimized down to one register and all of the 3-state lines are driven from the one slice register. A save attribute will probably keep XST from doing this optimization. "
So, add the following attributes in "plb_emc.vhd" to successfully pack all (input/output/3-state) registers into IOBs.
attribute equivalent_register_removal: string;
attribute equivalent_register_removal of Mem_DQ_T : signal is "no";
attribute iob: string;
attribute iob of Mem_DQ_T : signal is "true";
Changes were made to the plb_emc_v2_00_a, opb_emc_v2_00_a, emc_common_v2_00_a and libraries.
This problem has been fixed in the latest 7.1i EDK Service Pack available at:
The first service pack containing the fix is 7.1i EDK Service Pack 2.