- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
input never used in synthesizi ng
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
12-22-2008 05:32 AM
When I implement my CAM I get this warning:
Synthesizing Unit <read_RAM>.
WARNING:Xst:647 - Input <stateArray<63:1>> 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.
...
Unit <read_RAM> synthesized.
I can't figure out how to change my implementation.
The code of the implicated component is:
entity read_RAM is
Generic ( ADDR : integer := 5;
WIDTH : integer := 13;
DEPTH : integer := 63
);
Port ( stateArray : in STD_LOGIC_VECTOR (DEPTH downto 0);
clk : std_logic;
enable : in STD_LOGIC; -- rd or dl
-- rdX : out STD_LOGIC; -- rd1 or rd2
aX : out STD_LOGIC_VECTOR (ADDR downto 0)); -- a1 or a2
end read_RAM;
architecture Behavioral of read_RAM is
-- signal read_enable : std_logic;
begin
process(clk, enable)
begin
if (rising_edge(clk)) then
if enable = '1' then
for i in DEPTH downto 0 loop
if stateArray(i) = '1' then
-- read_enable <= '1';
aX <= std_logic_vector(conv_unsigned(i, 6));
else
-- read_enable <= not(read_enable);
aX <= "ZZZZZZ";
end if;
end loop;
else
-- read_enable <= not(read_enable);
aX <= "ZZZZZZ";
end if;
end if;
end process;
-- rdX <= read_enable;
end Behavioral;
Can anyone help me with this warning? It's getting me nuts.
Re: input never used in synthesizi ng
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
12-22-2008 05:47 AM
Hello,
I would recommend you to check the connectivity of this stateArray signal.
is it indeed connected to a full 64 bit wide array? or is most of it static and does XST therefor optimize it away.
also, if you don't find it: synthesize this read_RAM block as a toplevel. looking at the code, it shouldn't give this warning anymore and this should make you confident it is not caused by this block.
probably checking the netlist with the XST RTL viewer or PlanAhead would be easiest.
running a simulation should also reveal why only 1 of the 64-bits is used.
best regards,
Dries
Re: input never used in synthesizi ng
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
12-22-2008 08:08 AM
Hi Dries,
thank you for the advice. Since you mentioned simulation, I ask you (or who would like to help me) how should I run a simulation. I made a test bench file whith the utility "create a new source" and then selecting "test bench waveform" but then I can run it.
Can someone explain the simulation procedure?
thanks in advance
Re: input never used in synthesizi ng
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
12-22-2008 08:14 AM
that's quite difficult to explain easily.
maybe you can find what you need in the ISE quickstart guide: http://www.xilinx.com/itp/xilinx10/books/docs/qst/
page 16 starts an explanaition on how to simulate.
best regards,
Dries
Re: input never used in synthesizi ng
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
12-22-2008 08:29 AM
Re: input never used in synthesizi ng
[ Edited ]
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
12-22-2008 02:07 PM - edited 12-22-2008 02:30 PM
driesd wrote:
running a simulation should also reveal why only 1 of the 64-bits is used.
Actually I ran a simulation as shown in the pdf you linked in your previous post. In the simulation it seems that no output is affected by the incoming signals. It may mean that my coding is uncorrect but I also implemented a dual port ram as shown in VHDL Coding Examples from the software manuals and even in that case no output is affected. What could be the reason?
I modeled the waveforms without payng too much attention to their reliability: can it possibly be the cause of it all?
Also I wonder how can I synthetize a block as top-level.
At any rate it stopped giving me warning messages when I completed the else branches with null statements as follows:
entity read_RAM is
Generic ( ADDR : integer := 5;
WIDTH : integer := 13;
DEPTH : integer := 63
);
Port ( stateArray : in STD_LOGIC_VECTOR (DEPTH downto 0);
clk : std_logic;
enable : in STD_LOGIC; -- rd or dl
-- rdX : out STD_LOGIC; -- rd1 or rd2
aX : out STD_LOGIC_VECTOR (ADDR downto 0)); -- a1 or a2
end read_RAM;
architecture Behavioral of read_RAM is
-- signal read_enable : std_logic;
begin
process(clk, enable)
begin
if (rising_edge(clk)) then
if enable = '1' then
for i in DEPTH downto 0 loop
if stateArray(i) = '1' then
-- read_enable <= '1';
aX <= std_logic_vector(conv_unsigned(i, 6));
else
-- read_enable <= not(read_enable);
null;
end if;
end loop;
else
-- read_enable <= not(read_enable);
null;
end if;
end if;
end process;
-- rdX <= read_enable;
end Behavioral;
This doesn't make sense to me, but it works.
Re: input never used in synthesizi ng
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
12-23-2008 02:00 AM
Hello,
I would invest time in running simulations of your design. if you don't get an output, then you need to find out why and correct the testbench or your design if necessary.
the world of FPGA design is unfortunately not a push-a-button world.
best regards,
Dries
Re: input never used in synthesizi ng
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
12-23-2008 02:37 AM
I'm going to do as you suggest.
I want to ask you another question:
when I synthetize a block with an instance of a dual port RAM I obtain thes warnings:
LIT:243 - Logical network RAM/Mram_RAM_ren1/SPO has no load.
LIT:395 - The above warning message base_net_load_rule is repeated 27 more times for the following (max. 5 shown):
RAM/Mram_RAM_ren2/SPO.
RAM/Mram_RAM_ren3/SPO.
RAM/Mram_RAM_ren4/SPO.
RAM/Mram_RAM_ren5/SPO.
RAM/Mram_RAM_ren6/SPO.
To see the details of these warning messages, please use the -detail switch.
I tried to use the -detail switch with the command line mode but it says that "Option -detail is not available for command run". How should I get the details of those warning messages?
Thanks a lot for the support you're giving me.











