Guest
I am generating a 39 bit adder which takes an input from a multiplier
in ise 7.1. The problem is that when the inputs (the summands) are
defined as signals, XST will completely omit the adder from the design
and gives warnings. If the inputs are taken directly from pins in the
entity declaration, the adder synthesizes correctly.
Relevant code:
entity testAdd is
GENERIC ( n : INTEGER := 39 ) ;
port (
IN1,IN2 : in std_logic_vector(38 downto 0);
S : OUT STD_LOGIC_VECTOR(n-1 DOWNTO 0)
);
end entity testAdd;
architecture behv of testAdd is
SIGNAL s1,s2 : STD_LOGIC_VECTOR (38 downto 0);
SIGNAL C : STD_LOGIC_VECTOR(0 TO n) ;
begin
....
....
....
C(0) <= '0' ;
Generate_label:
FOR i IN 0 TO n-1 GENERATE
--stage: fulladd PORT MAP ( C(i), s1(i), s2(i), S(i), C(i+1) );
--doesn't work
stage: fulladd PORT MAP ( C(i),
IN1(i), IN2(i), S(i), C(i+1) ); --works
END GENERATE ;
....
....
....
end architecture behv;
Low Level Synthesis *
=========================================================================
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage11/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage10/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage9/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage8/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage7/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage6/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage38/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage37/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage0/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage1/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage2/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage3/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage4/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage5/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage36/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage35/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage34/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage33/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage32/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage31/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage30/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage29/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage28/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage27/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage26/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage25/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage24/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage23/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage22/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage21/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage20/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage19/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage18/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage17/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage16/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage15/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage14/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage13/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
Does anybody understand why this happens?
Thanks!
sarah
in ise 7.1. The problem is that when the inputs (the summands) are
defined as signals, XST will completely omit the adder from the design
and gives warnings. If the inputs are taken directly from pins in the
entity declaration, the adder synthesizes correctly.
Relevant code:
entity testAdd is
GENERIC ( n : INTEGER := 39 ) ;
port (
IN1,IN2 : in std_logic_vector(38 downto 0);
S : OUT STD_LOGIC_VECTOR(n-1 DOWNTO 0)
);
end entity testAdd;
architecture behv of testAdd is
SIGNAL s1,s2 : STD_LOGIC_VECTOR (38 downto 0);
SIGNAL C : STD_LOGIC_VECTOR(0 TO n) ;
begin
....
....
....
C(0) <= '0' ;
Generate_label:
FOR i IN 0 TO n-1 GENERATE
--stage: fulladd PORT MAP ( C(i), s1(i), s2(i), S(i), C(i+1) );
--doesn't work
stage: fulladd PORT MAP ( C(i),
IN1(i), IN2(i), S(i), C(i+1) ); --works
END GENERATE ;
....
....
....
end architecture behv;
Low Level Synthesis *
=========================================================================
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage11/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage10/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage9/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage8/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage7/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage6/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage38/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage37/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage0/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage1/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage2/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage3/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage4/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage5/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance is
removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage36/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage35/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage34/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage33/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage32/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage31/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage30/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage29/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage28/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage27/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage26/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage25/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage24/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage23/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage22/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage21/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage20/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage19/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage18/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage17/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage16/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage15/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage14/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
WARNING:Xst:1989 - Unit <testadd>: instances <stage12/Mxor_s>,
<stage13/Mxor_s> of unit <LPM_XOR3_1> are equivalent, second instance
is removed
Does anybody understand why this happens?
Thanks!
sarah