07-13-2016 09:35 AM
I am using the NI LabVIEW 2015 SP1 FPGA Xilinx Compilation Tools for Vivado 2014.4 on Windows 10. Attached is the LabVIEW project that contains the files I want to compile. The code consists of two timed loops, one for gathering data from a detector and one for processing that data. The data processing loop is... complicated. I run 11 filters over the data in parallel. To make this easier for me, I put them in a for loop. Each filter has a 23-state state machine that processes the outputs of 4 box filters. I also am using one enormous array that contains all of the past 500+ data points rather than using 44 FIFOs. This is, again, to make my life easier.
In the LabVIEW code, the data processing loop is a timed loop that contains a large array and a for loop (the for loop is a LabVIEW shenanigan that allows me to run the 11 filters in parallel). The for loop contains a 23-case case structure. To get this code to compile successfully, I got rid of my state machine and left behind only a 1-case case structure. This is no use to me, but it's the closest thing to my code that successfully compiles. When I turned this into a 2-state case structure, it failed, even when I did nothing in the second case and left all outputs to their default values. I would attach the VHDL files the Compilation Tools produce from this code, but LabVIEW encrypts them, so I don't think they'll help much.
When the compiler fails, it almost always grabs 12GB of memory (I have 64GB available, so that isn't the problem), sits on it for a while, and then starts writing to disk rapidly while decreasing the memory load before giving me the error message. Not sure if that helps at all, but it's something that happens for every failure that doesn't happen when I succeed.
I've looked up this error and there are two common refrains: use the Runtime-Optimized options rather than the default options, and make sure your computer only uses Latin characters in your computer name. I already only use Latin characters in my computer name, and I have also tried to use the Runtime-Optimzed options.
I believe this is a LabVIEW error, not a Xilinx error, because it occurs in the proximity of PumaK7Top, which is a proprietary LabVIEW vhd file.
Solved! Go to Solution.
07-14-2016 10:39 PM
Hi Forrest,
Does the number of case structures that you use affect the size or dimensions of the array that you are using?
For the 500 element array what are are the dimensions?
Also, I'm going to continue to look into this since you were able to get it to run with only one case structure but just so you know the Xilinx compile tools are not officially supported on Windows 10.
http://www.ni.com/white-paper/52818/en/
07-14-2016 11:06 PM
It's a length 5200 array of a cluster of two 16-bit integers. I didn't know the Vivado Tools weren't supported on Windows 10; that's probably my problem.
07-15-2016 12:22 PM
Yeah, do you have a Windows 7 machine with similar resources that you could try compiling on to see if the same error occurs?
07-15-2016 03:58 PM - edited 07-15-2016 04:04 PM
There is a Windows 7 machine that I can borrow for a couple hours at some point. I'll try it the next time it is available to me.
In other news, I have gotten it to compile by severely lowering its capabilities in other ways (I decreased the array size, gave it a slower clock, etc.), but the usage of Slice LUTs is about 200%. I'll probably be modifying the code in some significant manner to deal with this, and that itself may get rid of my error.
07-18-2016 01:09 PM
Yeah, now it seems like it could be a memory issue. See the document attached below for guidelines on optimizing FPGA code:
https://zone.ni.com/reference/en-XX/help/371599G-01/lvfpgaconcepts/optimizing_fpga_vis/
07-18-2016 03:11 PM
I tried it on Windows 7 and it still failed in the same manner, so I'm inclined to agree. Thank you for the reference, it helped me make a few optimizations.