Out of Memory Error comes suddenly.

Hello. I am writing VHDL code to be synthesized on a Xilinx Spartan II FPGA. For the past month, I've been beating my head against one problem with synthesizing the latest version of my code. I am using the Xilinx Webpack IDE V7.1.01i available for free from . Synthesis usually takes about a minute with my previous code versions. When I added a few lines about a buffer and references to that buffer, and try to synthesize, the synthesis goes to 66% of completion normally, but then stays there for about 15 minutes before spitting out an out of memory error:

ERROR:Portability:3 - This Xilinx application has run out of memory or has encountered a memory conflict. Current memory usage is 1954536 kb. Memory problems may require a simple increase in available system memory, or possibly a fix to the software or a special workaround. To troubleshoot or remedy the problem, first: Try increasing your system's RAM. Alternatively, you may try increasing your system's virtual memory or swap space. If this does not fix the problem, please try the following: Search the Answers Database at support.xilinx.com to locate information on this error message. If neither of the above resources produces an available solution, please use Web Support to open a case with Xilinx Technical Support off of support.xilinx.com. As it is likely that this may be an unforeseen problem, please be prepared to submit relevant design files if necessary. ERROR: XST failed Process "Synthesize" did not complete.

I have stripped my program down to the simplest version that still exhibits the problem:

library IEEE; use IEEE.STD_LOGIC_1164.ALL;

entity frameCapture is port ( clk :in std_logic; lineBuffer : out std_logic_vector(1780 downto 0); --will buffer most significant 5 bits of each pixel on even lines. UV: in std_logic_vector(7 downto 0)); --Digital output from camera. UV bus. end frameCapture;

architecture reg_transfer of frameCapture is

signal bufPosOne, bufPosTwo, bufPosThree : integer range 0 to 1785; --are five more than they needs to be to prevent negative numbers. signal colCount : integer range 5 to 25 :=5; -- I picked these values in this example so that bufPosTwo and bufPosOne are obviously -- between 0 and 1785. begin

bufPosTwo

Reply to
Andrew Doucette
Loading thread data ...

I imagine that the computer is synthesising a hugely complicated multiplexer out of logic gates for the frame buffer, rather than inferring that it ought to use a BRAM. I could certainly understand a design compiler running out of memory implementing a 2kbit random-access memory.

Would explicitly instantiating a BRAM help?

Tom

Reply to
Thomas Womack

I have posted an answer in the VHDL forum

Bert

Andrew Doucette wrote:

For the past month, I've been beating my head against one problem with synthesizing the latest version of my code. I am using the Xilinx Webpack IDE V7.1.01i available for free from . Synthesis usually takes about a minute with my previous code versions. When I added a few lines about a buffer and references to that buffer, and try to synthesize, the synthesis goes to 66% of completion normally, but then stays there for about 15 minutes before spitting out an out of memory error:

encountered a memory conflict. Current memory usage is 1954536 kb. Memory problems may require a simple increase in available system memory, or possibly a fix to the software or a special workaround. To troubleshoot or remedy the problem, first: Try increasing your system's RAM. Alternatively, you may try increasing your system's virtual memory or swap space. If this does not fix the problem, please try the following: Search the Answers Database at support.xilinx.com to locate information on this error message. If neither of the above resources produces an available solution, please use Web Support to open a case with Xilinx Technical Support off of support.xilinx.com. As it is likely that this may be an unforeseen problem, please be prepared to submit relevant design files if necessary. ERROR: XST failed Process "Synthesize" did not complete.

the problem:

std_logic_vector(1780 downto 0); --will buffer most significant 5 bits of each pixel on even lines. UV: in std_logic_vector(7 downto 0)); --Digital output from camera. UV bus. end frameCapture;

more than they needs to be to prevent negative numbers. signal colCount : integer range 5 to 25 :=5; -- I picked these values in this example so that bufPosTwo and bufPosOne are obviously -- between 0 and 1785. begin

and have a deadline soon aproaching, so I am in desperate need of help. Is my bit of code doing anything illegal? Can you see any reason why my code should make the ISE work so hard it runs out of memory? From my experimentation, the problem does not have to do with colCount, but the indexing of LineBuffer with bufPosTwo and bufPosOne.

Reply to
info_

Thank you very much! I used corGen to make a "Single Port Block Memory" and used that for my lineBuffer, and it synthesizes! Thanks so much.

Reply to
Andromodon

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.