Error -64998 When Compiling a LabVIEW FPGA Project That Uses Classes

Updated May 4, 2018

Reported In

Software

  • LabVIEW FPGA Module

Issue Details

I have a LabVIEW FPGA project and I am using an Object-Oriented Programming architecture that makes use of LabVIEW Classes. In one of my VIs, I have a While loop using shift registers to pass references to objects with I/O nodes.

When I try and compile my project, I run into the following error:

Error -64998 occurred

Possible reason(s):

LabVIEW Elemental IO:  An internal software error with LabVIEW Elemental I/O has occurred. Please contact National Instruments technical support at ni.com/support with following information:

An unexpected case was reached.

Solution

Shift registers cannot be used to pass I/O Node references between loop iterations on the FPGA because they imply that the references or I/O Nodes could change at run-time. Since everything needs to be determined at compile time, the compiler throws an error.

Additional Information

As far as the compiler can tell, if there's a chance that the reference can change it won't allow it, even if the reference is only written to once. The compiler doesn't have a way of knowing that it will never be updated, so it assumes that if it can be, then it will be. 

If the shift registers need to be used to maintain other class information, and since the I/O Nodes cannot be used with a shift register since that means they could theoretically change, separating these and using a helper class is one way to solve this. The class with a shift register could be used for all of the regular class-related state data, and there could be a separate class dedicated only to handling the I/O.

WAS THIS ARTICLE HELPFUL?

Not Helpful