Description
Keywords: port, Virtex-6, Spartan-6
The following warning occurs in XST when I target Virtex-6 or Spartan-6 devices, but I do not have any issues targeting older devices. Why?
"WARNING:Xst:647 - Input <sel<3:0>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved."
Solution
In 11.2, XST introduced a new VHDL/Verilog parser for Virtex-6 and Spartan-6 families. For more information on this change, see
(Xilinx Answer 32927).
XST for older devices (non Virtex-6 and Spartan-6) when processing compare operation with operands having different sizes. In the following example, 8-bit sel signal is compared to 4-bit "1111" constant.
File: ex_0012.vhd
Compilation Library: work
library ieee;
use ieee.std_logic_1164.all;
entity ex_0012 is
port(sel: in std_logic_vector(7 downto 0);
res: out std_logic
);
end ex_0012;
architecture bhv of ex_0012 is
begin
res <= '1' when ("1111" < sel) else '0';
end;
XST for older devices adjusts the size of the constant, resulting in the following message:
"WARNING:Xst:1639 - "ex_0012.vhd" line 12: Size of operands are different, smallest operand is adjusted."
Targeting Virtex-5 XST Standard generates the following netlist:

XST interpretation of above code for older devicesXST for Virtex-6 and Spartan-6 devices issues the following message:
"WARNING:Xst:647 - Input <sel<3:0>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved."
The generated netlist is LRM compliant.

XST interpretation of above code for Virtex-6/Spartan-6