Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations IamaSherpa on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

WARNING:Xst:646 - Signal <catcheckval4> is assigned but never used.

Status
Not open for further replies.

edhunter2003

Technical User
Oct 21, 2003
8
IE
Hi,

When I try to synthesise a vhdl module, I get the following warnings.

Code:
WARNING:Xst:646 - Signal <catcheckval4> is assigned but never used.

I understand that this can happen if I assign values to a signal, but is never used as an assignment to other signals. The thing is, this happens on every signal in my design, even on ones that I know are used as assignments. For the inputs I get the following warning.

Code:
WARNING:Xst:647 - Input <zrl<0>> is never used.[\code]

Then, if I ignore these warnings and do a translate on the design, I get the following error (I don't know if the two are connected).

[code]FATAL_ERROR:NgdBuild:basnbmain.c:1910:1.71.4.1 - Design is empty.   Process will terminate.  To resolve this error, please consult the Answers Database and other online resources at [URL unfurl="true"]http://support.xilinx.com.[/URL] If you need further assistance, please open a Webcase by clicking on the &quot;WebCase&quot; link at [URL unfurl="true"]http://support.xilinx.com[/URL]

I am using Xilinx ISE 5.2i. Anybody have any idea why this is happening? It doesn't happen with other modules I have.

Thanks all,
Ed
 
The most likely cause of this that I can come up with is that your top level doesn't have any signals defined.

If you don't have any signals in and out of your top level (ie pins on the device), the synthesizer will decide &quot;oh you are not using this signal, so I will optimize it out&quot;. Of course that means the signals that were assigned to and from the optimized signal also get optimized out etc. You can end up with no logic.

Make sure that your top level entity has ports defined. Only in the top level will unassigned ports be assumed to be connected to something (since they would be connected to signals outside the device).

--
 
oh I forgot to mention... you may have just missed one port on the top level, not necessarily all ports. Of course that would mean you have a declaration in the artchitecture for that signal (otherwise you would have got an error - same goes for if all port declarations are missing).


--
 
My full code is below

Code:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_SIGNED.ALL;

entity findCategory is port(
	clk, rst, validIn, eobIn: in std_logic;
	zrl: in std_logic_vector(5 downto 0);
	value: in std_logic_vector(10 downto 0);
	eobOut, validOut: out std_logic;
	index: out std_logic_vector(7 downto 0);
	addBits: out std_logic_vector(10 downto 0));
end entity findCategory;

architecture logic of findCategory is
type mem64x8 is array(0 to 63) of std_logic_vector(7 downto 0);
type mem64x11 is array(0 to 63) of std_logic_vector(10 downto 0);

signal indexBuf: mem64x8;
signal addBitsBuf: mem64x11;
signal count: integer range 0 to 63;
signal countPlus1: integer range 0 to 64;
signal countPlus2: integer range 0 to 65;
signal countPlus3: integer range 0 to 66;
signal countPlus4: integer range 0 to 67;
signal cat: std_logic_vector(3 downto 0);
signal addBitsTemp: std_logic_vector(10 downto 0);
signal zrlMinus48, zrlMinus32, zrlMinus16: std_logic_vector(5 downto 0);
signal catCheckValA, catCheckVal9, catCheckVal8, catCheckVal7, catCheckVal6: std_logic;
signal catCheckVal5, catCheckVal4, catCheckVal3, catCheckVal2, catCheckVal1: std_logic;
begin
	catCheckValA <= '0' when rst = '1' else value(10) xor value(9);
	catCheckVal9 <= '0' when rst = '1' else value(10) xor value(8);
	catCheckVal8 <= '0' when rst = '1' else value(10) xor value(7);
	catCheckVal7 <= '0' when rst = '1' else value(10) xor value(6);
	catCheckVal6 <= '0' when rst = '1' else value(10) xor value(5);
	catCheckVal5 <= '0' when rst = '1' else value(10) xor value(4);
	catCheckVal4 <= '0' when rst = '1' else value(10) xor value(3);
	catCheckVal3 <= '0' when rst = '1' else value(10) xor value(2);
	catCheckVal2 <= '0' when rst = '1' else value(10) xor value(1);
	catCheckVal1 <= '0' when rst = '1' else value(0);
		
	cat <= x&quot;A&quot; when catCheckValA = '1' else
		  x&quot;9&quot; when catCheckVal9 = '1' else
		  x&quot;8&quot; when catCheckVal8 = '1' else
		  x&quot;7&quot; when catCheckVal7 = '1' else
		  x&quot;6&quot; when catCheckVal6 = '1' else
		  x&quot;5&quot; when catCheckVal5 = '1' else
		  x&quot;4&quot; when catCheckVal4 = '1' else
		  x&quot;3&quot; when catCheckVal3 = '1' else
		  x&quot;2&quot; when catCheckVal2 = '1' else
		  x&quot;1&quot; when catCheckVal1 = '1' else
		  x&quot;0&quot; when rst = '1' else x&quot;0&quot;;

	addBitsTemp <= value		when value(10) = '0' 	  else
			 	value + 1023 	when value < &quot;11000000001&quot; else
			 	value + 511 	when value < &quot;11100000001&quot; else
			 	value + 255 	when value < &quot;11110000001&quot; else
			 	value + 127 	when value < &quot;11111000001&quot; else
				value + 63 	when value < &quot;11111100001&quot; else
				value + 31 	when value < &quot;11111110001&quot; else
				value + 15 	when value < &quot;11111111001&quot; else
				value + 7 	when value < &quot;11111111101&quot; else
				value + 3		when value < &quot;11111111111&quot; else
				value + 1		when value = &quot;11111111111&quot; else
				&quot;00000000000&quot; 	when rst = '1';

	zrlMinus48 <= &quot;000000&quot; when rst = '1' else zrl + &quot;010000&quot;;
	zrlMinus32 <= &quot;000000&quot; when rst = '1' else zrl + &quot;100000&quot;;
	zrlMinus16 <= &quot;000000&quot; when rst = '1' else zrl + &quot;110000&quot;;
	countPlus1 <= 0 when rst = '1' else count + 1;
	countPlus2 <= 0 when rst = '1' else count + 2;
	countPlus3 <= 0 when rst = '1' else count + 3;
	countPlus4 <= 0 when rst = '1' else count + 4;

	process(clk,rst)
	begin
		if rst = '1' then
		count <= 0;
		indexBuf <= (others => (others => '0'));
		addBitsBuf <= (others => (others => '0'));
		elsif clk'event and clk = '1' then
			if validIn = '1' then
				if zrl(5) = '1' and zrl(4) = '1' then
					indexBuf(count) <= x&quot;F0&quot;;
					indexBuf(countPlus1) <= x&quot;F0&quot;;
					indexBuf(countPlus2) <= x&quot;F0&quot;;
					indexBuf(countPlus3) <= zrlMinus48(3 downto 0)&cat;
					addBitsBuf(countPlus3) <= addBitsTemp;
					count <= countPlus4;
				elsif zrl(5) = '1' then
					indexBuf(count) <= x&quot;F0&quot;;
					indexBuf(countPlus1) <= x&quot;F0&quot;;
					indexBuf(countPlus2) <=zrlMinus32(3 downto 0)&cat;
					addBitsBuf(countPlus2) <= addBitsTemp;
					count <= countPlus3;
				elsif zrl(4) = '1' then
					indexBuf(count) <= x&quot;F0&quot;;
					indexBuf(countPlus1) <= zrlMinus16(3 downto 0)&cat;
					addBitsBuf(countPlus1) <= addBitsTemp;
					count <= countPlus2;
				else
					indexBuf(count) <= zrl(3 downto 0)&cat;
					addBitsBuf(count) <= addBitsTemp;
					count <= countPlus1;
				end if;
			end if;			
		end if;
	end process;	
end architecture logic;

And the warnings I get when I synthesise are

Code:
WARNING:Xst:646 - Signal <catcheckvala> is assigned but never used.
WARNING:Xst:646 - Signal <catcheckval9> is assigned but never used.
WARNING:Xst:646 - Signal <catcheckval8> is assigned but never used.
WARNING:Xst:646 - Signal <catcheckval7> is assigned but never used.
WARNING:Xst:646 - Signal <catcheckval6> is assigned but never used.
WARNING:Xst:646 - Signal <catcheckval5> is assigned but never used.
WARNING:Xst:646 - Signal <catcheckval4> is assigned but never used.
WARNING:Xst:646 - Signal <catcheckval3> is assigned but never used.
WARNING:Xst:646 - Signal <catcheckval2> is assigned but never used.
WARNING:Xst:646 - Signal <catcheckval1> is assigned but never used.
WARNING:Xst:646 - Signal <cat> is assigned but never used.
WARNING:Xst:646 - Signal <addbitstemp> is assigned but never used.
WARNING:Xst:646 - Signal <zrlminus48> is assigned but never used.
WARNING:Xst:646 - Signal <zrlminus32> is assigned but never used.
WARNING:Xst:646 - Signal <zrlminus16> is assigned but never used.
WARNING:Xst:646 - Signal <countplus1> is assigned but never used.
WARNING:Xst:646 - Signal <countplus2> is assigned but never used.
WARNING:Xst:646 - Signal <countplus3> is assigned but never used.
WARNING:Xst:646 - Signal <countplus4> is assigned but never used.
WARNING:Xst:646 - Signal <count> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<0>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<1>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<2>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<3>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<4>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<5>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<6>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<7>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<8>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<9>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<10>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<11>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<12>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<13>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<14>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<15>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<16>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<17>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<18>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<19>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<20>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<21>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<22>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<23>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<24>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<25>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<26>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<27>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<28>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<29>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<30>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<31>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<32>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<33>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<34>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<35>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<36>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<37>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<38>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<39>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<40>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<41>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<42>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<43>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<44>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<45>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<46>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<47>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<48>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<49>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<50>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<51>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<52>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<53>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<54>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<55>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<56>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<57>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<58>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<59>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<60>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<61>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<62>> is assigned but never used.
WARNING:Xst:646 - Signal <indexbuf<63>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<0>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<1>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<2>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<3>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<4>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<5>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<6>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<7>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<8>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<9>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<10>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<11>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<12>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<13>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<14>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<15>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<16>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<17>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<18>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<19>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<20>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<21>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<22>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<23>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<24>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<25>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<26>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<27>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<28>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<29>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<30>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<31>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<32>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<33>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<34>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<35>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<36>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<37>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<38>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<39>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<40>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<41>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<42>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<43>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<44>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<45>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<46>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<47>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<48>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<49>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<50>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<51>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<52>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<53>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<54>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<55>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<56>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<57>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<58>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<59>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<60>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<61>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<62>> is assigned but never used.
WARNING:Xst:646 - Signal <addbitsbuf<63>> is assigned but never used.
WARNING:Xst:647 - Input <value<10>> is never used.
WARNING:Xst:647 - Input <value<9>> is never used.
WARNING:Xst:647 - Input <value<8>> is never used.
WARNING:Xst:647 - Input <value<7>> is never used.
WARNING:Xst:647 - Input <value<6>> is never used.
WARNING:Xst:647 - Input <value<5>> is never used.
WARNING:Xst:647 - Input <value<4>> is never used.
WARNING:Xst:647 - Input <value<3>> is never used.
WARNING:Xst:647 - Input <value<2>> is never used.
WARNING:Xst:647 - Input <value<1>> is never used.
WARNING:Xst:647 - Input <value<0>> is never used.
WARNING:Xst:647 - Input <clk> is never used.
WARNING:Xst:647 - Input <zrl<5>> is never used.
WARNING:Xst:647 - Input <zrl<4>> is never used.
WARNING:Xst:647 - Input <zrl<3>> is never used.
WARNING:Xst:647 - Input <zrl<2>> is never used.
WARNING:Xst:647 - Input <zrl<1>> is never used.
WARNING:Xst:647 - Input <zrl<0>> is never used.
WARNING:Xst:647 - Input <rst> is never used.
WARNING:Xst:647 - Input <validin> is never used.
WARNING:Xst:647 - Input <eobin> is never used.

As I say, every signal produces a warning. Some such as addBitsBuf and indexBuf I can understand.

Oh wait......If addBitsBuf and indexBuf are removed during the synthesis, then will all signals that are used to determine them and only them be removed (i.e. probably all the signals?). It can probably work backwards like that!

What do you think?
 
Seems like you are right in the last sentence.
I would try to declare the two signals as ports instead, just for the trial, or to add other two ports and assign these two to them or something like that. Or at least one of them ...



 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top