Showing results for 
Search instead for 
Did you mean: 

FPGA: wonderful transforming register datatypes

I just have to mention this as I've seen it today for the third or fourth time.


In my FPGA project making use of plenty of VI-defined registers using LVOOP sometimes the datatypes of the registers get messed up in certain parts of my code, but not in others.


Just this morning I opened my FPGA target main VI and had a broken arrow.  Following this to a particular location I found that the datatype of a register output of a private class function to return the register reference had changed its data type from U64 to U32.  Obviously the data being written to this terminal (being an actual U64 register) was not compatible and I got a broken arrow.


I had just compiled this VI.  I did NOT close down LV (It's been running uninterrupted for 3-4 days).


This is not the first time I have seen this.  Once LV decided to change my accessor VI Register indicator data type from FXP +25,0 to U32 which was rather unhelpful.  While broken arrows are rather annoying, the idea that one of these changes may occur WITHOUT breaking my VIs and introducing an impossible-to-guess bug is terrifying me.



0 Kudos
Message 1 of 4

Hi Shane,


Thanks for sharing this. Perhaps someone else runs into this.


When I understand correctly. The project was open, but not running. You compiled it, then the transforming took place.


I would like to try it out: do you think you can get the project in a reproducible form?


What would be interesting - how often does that happen (days, weeks, with every recompile or totally random)?


Thanks and regards


0 Kudos
Message 2 of 4

It has happened about 3 or 4 times over the last couple of months.


It tends to happen more often when I copy my entire project tree from one drive to another although this may be completely anecdotal.


I had the project open at all times.  I had previously compiled my code without problems and then after closing the main VI and opening it again, a single accessor of a single class had been modified so that the connector pane of the accessor and the internals of the accessor were different datatypes.


I will not be able to get things into a reproducible form unfortunately.  It's one of those great LabVIEW legends of ghosts parading the ramparts on a moonlit night.... I swear I have observed it, but I can't prove it....



0 Kudos
Message 3 of 4

One thing I've noticed that can cause something with similar symptoms as you've described is typedef cross-linking. When you've copied these projects, is it possible you've somehow got links in some places to old version of typedefs, especially differently typed fixed-point typedefs? If there are some weird linking issues to different source it could show up as LabVIEW possibly loading the first one it happens to find. Might want to double-check the Load Warnings dialog to see if anything odd shows up.

0 Kudos
Message 4 of 4