The following error occurs when I use a BEL constraint on a SRL16 (or RAM 16X1) to constrain a symbol to the F-LUT:
"ERROR:Pack:1118 - The symbol U2/SRL16E was unable to be implemented in a slice containing no other symbols. RAM cannot be placed in F in RAM 16x1 or 1SHIFT mode. Check that the constraints on this symbol make sense in isolation."
(BEL constraints are used to specify that a particular piece of logic within a slice be used. In this case, the F-LUT was specified with the constraint "INST "U2" BEL = F;".)
This error occurs because the Virtex hardware does not support the configuration that the BEL constraint was being used to specify. The reason for this is that the LUTRAM write-enable control hardware is actually only in the G LUT site. If the G LUT is not programmed as RAM or SRL, then the write-enable strobe is not active for either LUT site.
If the BEL constraint is removed, the shift register will successfully map to the G-LUT.
NOTE: This Answer Record applies to all architectures from Virtex to Virtex-4.