LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

FPGA internal software error

Solved!
Go to solution

Hello,

 

I'm running LV 2010 SP1, I don't know what version of the FPGA module I've got, but I think it was upgraded at the time of the SP1 upgrade.  The error is below.  It refers to two of the four globals I'm using the communicate from a FPGA timed loop to a non-timed loop.

 

My code has compiled since the upgrade, but not since the addition of the globals..

 

I' ll greatly appreciate all help on this.  

 

Roger

 

An internal software error has occurred. Please contact National Instruments technical support at ni.com/support with the following information:nirviUIDToObject.vi<ERR>Error getting object reference for UID.All text parsed:
<CodeGenErr><ErrorCode>-61103</ErrorCode><DynamicText><TreeLineInfo><TreeInfo><TreeID>1</TreeID></TreeInfo><LineInfo><JustText>NI.Munge.S3 Global.vi_FPGACompileCopy00000001.vi</JustText></LineInfo></TreeLineInfo><TreeLineInfo><TreeInfo><TreeID>2</TreeID><ParentID>1</ParentID></TreeInfo><LineInfo><DiagramObject><VIPath>C:\NIFPGA\compilation\CardiaLen2_FPGATarget_CardiaLen2IO(FPG_86098CD2\MungedForFPGA\NI.Munge.CardiaLen2 IO (FPGA).vi_FPGACompileCopy00000001.vi</VIPath><UID>4624</UID><ObjectName>Global Variable: &apos;NI.Munge.S3 Global.vi_FPGACompileCopy00000001.vi&apos;</ObjectName></DiagramObject></LineInfo></TreeLineInfo><TreeLineInfo><TreeInfo><TreeID>3</TreeID><ParentID>1</ParentID></TreeInfo><LineInfo><DiagramObject><VIPath>C:\NIFPGA\compilation\CardiaLen2_FPGATarget_CardiaLen2IO(FPG_86098CD2\MungedForFPGA\NI.Munge.CardiaLen2 IO (FPGA).vi_FPGACompileCopy00000001.vi</VIPath><UID>11890</UID><ObjectName>Global Variable: &apos;NI.Munge.S3 Global.vi_FPGACompileCopy00000001.vi&apos;</ObjectName></DiagramObject></LineInfo></TreeLineInfo></DynamicText></CodeGenErr>
<CodeGenErr><ErrorCode>-61103</ErrorCode><DynamicText><TreeLineInfo><TreeInfo><TreeID>1</TreeID></TreeInfo><LineInfo><JustText>NI.Munge.S2 Global.vi_FPGACompileCopy00000001.vi</JustText></LineInfo></TreeLineInfo><TreeLineInfo><TreeInfo><TreeID>2</TreeID><ParentID>1</ParentID></TreeInfo><LineInfo><DiagramObject><VIPath>C:\NIFPGA\compilation\CardiaLen2_FPGATarget_CardiaLen2IO(FPG_86098CD2\MungedForFPGA\NI.Munge.CardiaLen2 IO (FPGA).vi_FPGACompileCopy00000001.vi</VIPath><UID>11881</UID><ObjectName>Global Variable: &apos;NI.Munge.S2 Global.vi_FPGACompileCopy00000001.vi&apos;</ObjectName></DiagramObject></LineInfo></TreeLineInfo><TreeLineInfo><TreeInfo><TreeID>3</TreeID><ParentID>1</ParentID></TreeInfo><LineInfo><DiagramObject><VIPath>C:\NIFPGA\compilation\CardiaLen2_FPGATarget_CardiaLen2IO(FPG_86098CD2\MungedForFPGA\NI.Munge.CardiaLen2 IO (FPGA).vi_FPGACompileCopy00000001.vi</VIPath><UID>11878</UID><ObjectName>Global Variable: &apos;NI.Munge.S2 Global.vi_FPGACompileCopy00000001.vi&apos;</ObjectName></DiagramObject></LineInfo></TreeLineInfo></DynamicText></CodeGenErr>
<CodeGenErr><ErrorCode>-61103</ErrorCode><DynamicText><TreeLineInfo><TreeInfo><TreeID>1</TreeID></TreeInfo><LineInfo><JustText>NI.Munge.AO Changed Global.vi_FPGACompileCopy00000001.vi</JustText></LineInfo></TreeLineInfo><TreeLineInfo><TreeInfo><TreeID>2</TreeID><ParentID>1</ParentID></TreeInfo><LineInfo><DiagramObject><VIPath>C:\NIFPGA\compilation\CardiaLen2_FPGATarget_CardiaLen2IO(FPG_86098CD2\MungedForFPGA\NI.Munge.CardiaLen2 IO (FPGA).vi_FPGACompileCopy00000001.vi</VIPath><UID>11906</UID><ObjectName>Global Variable: &apos;NI.Munge.AO Changed Global.vi_FPGACompileCopy00000001.vi&apos;</ObjectName></DiagramObject></LineInfo></TreeLineInfo><TreeLineInfo><TreeInfo><TreeID>3</TreeID><ParentID>1</ParentID></TreeInfo><LineInfo><DiagramObject><VIPath>C:\NIFPGA\compilation\CardiaLen2_FPGATarget_CardiaLen2IO(FPG_86098CD2\MungedForFPGA\NI.Munge.CardiaLen2 IO (FPGA).vi_FPGACompileCopy00000001.vi</VIPath><UID>4622</UID><ObjectName>Global Variable: &apos;NI.Munge.AO Changed Global.vi_FPGACompileCopy00000001.vi&apos;</ObjectName></DiagramObject></LineInfo></TreeLineInfo><TreeLineInfo><TreeInfo><TreeID>4</TreeID><ParentID>1</ParentID></TreeInfo><LineInfo><DiagramObject><VIPath>C:\NIFPGA\compilation\CardiaLen2_FPGATarget_CardiaLen2IO(FPG_86098CD2\MungedForFPGA\NI.Munge.CardiaLen2 IO (FPGA).vi_FPGACompileCopy00000001.vi</VIPath><UID>11905</UID><ObjectName>Global Variable: &apos;NI.Munge.AO Changed Global.vi_FPGACompileCopy00000001.vi&apos;</ObjectName></DiagramObject></LineInfo></TreeLineInfo></DynamicText></CodeGenErr>
<CodeGenErr><ErrorCode>-61103</ErrorCode><DynamicText><TreeLineInfo><TreeInfo><TreeID>1</TreeID></TreeInfo><LineInfo><JustText>NI.Munge.S3 Global.vi_FPGACompileCopy00000001.vi</JustText></LineInfo></TreeLineInfo><TreeLineInfo><TreeInfo><TreeID>2</TreeID><ParentID>1</ParentID></TreeInfo><LineInfo><DiagramObject><VIPath>C:\NIFPGA\compilation\CardiaLen2_FPGATarget_CardiaLen2IO(FPG_86098CD2\MungedForFPGA\NI.Munge.CardiaLen2 IO (FPGA).vi_FPGACompileCopy00000001.vi</VIPath><UID>4624</UID><ObjectName>Global Variable: &apos;NI.Munge.S3 Global.vi_FPGACompileCopy00000001.vi&apos;</ObjectName></DiagramObject></LineInfo></TreeLineInfo><TreeLineInfo><TreeInfo><TreeID>3</TreeID><ParentID>1</ParentID></TreeInfo><LineInfo><DiagramObject><VIPath>C:\NIFPGA\compilation\CardiaLen2_FPGATarget_CardiaLen2IO(FPG_86098CD2\MungedForFPGA\NI.Munge.CardiaLen2 IO (FPGA).vi_FPGACompileCopy00000001.vi</VIPath><UID>11890</UID><ObjectName>Global Variable: &apos;NI.Munge.S3 Global.vi_FPGACompileCopy00000001.vi&apos;</ObjectName></DiagramObject></LineInfo></TreeLineInfo></DynamicText></CodeGenErr>
<CodeGenErr><ErrorCode>-61103</ErrorCode><DynamicText><TreeLineInfo><TreeInfo><TreeID>1</TreeID></TreeInfo><LineInfo><JustText>NI.Munge.S2 Global.vi_FPGACompileCopy00000001.vi</JustText></LineInfo></TreeLineInfo><TreeLineInfo><TreeInfo><TreeID>2</TreeID><ParentID>1</ParentID></TreeInfo><LineInfo><DiagramObject><VIPath>C:\NIFPGA\compilation\CardiaLen2_FPGATarget_CardiaLen2IO(FPG_86098CD2\MungedForFPGA\NI.Munge.CardiaLen2 IO (FPGA).vi_FPGACompileCopy00000001.vi</VIPath><UID>11881</UID><ObjectName>Global Variable: &apos;NI.Munge.S2 Global.vi_FPGACompileCopy00000001.vi&apos;</ObjectName></DiagramObject></LineInfo></TreeLineInfo><TreeLineInfo><TreeInfo><TreeID>3</TreeID><ParentID>1</ParentID></TreeInfo><LineInfo><DiagramObject><VIPath>C:\NIFPGA\compilation\CardiaLen2_FPGATarget_CardiaLen2IO(FPG_86098CD2\MungedForFPGA\NI.Munge.CardiaLen2 IO (FPGA).vi_FPGACompileCopy00000001.vi</VIPath><UID>11878</UID><ObjectName>Global Variable: &apos;NI.Munge.S2 Global.vi_FPGACompileCopy00000001.vi&apos;</ObjectName></DiagramObject></LineInfo></TreeLineInfo></DynamicText></CodeGenErr>
<CodeGenErr><ErrorCode>-61103</ErrorCode><DynamicText><TreeLineInfo><TreeInfo><TreeID>1</TreeID></TreeInfo><LineInfo><JustText>NI.Munge.AO Changed Global.vi_FPGACompileCopy00000001.vi</JustText></LineInfo></TreeLineInfo><TreeLineInfo><TreeInfo><TreeID>2</TreeID><ParentID>1</ParentID>

 

Snip...

 

 

0 Kudos
Message 1 of 6
(3,704 Views)

Hi Roger,

 

The error indicates that you are most likely writing to the globals in multiple locations inside a Single-Cycle Timed Loop (SCTL).  Since there is only one write interface for a global variable, arbitration for the write is required when it is written in multiple places.  However, since this is inside the SCTL, we cannot have arbitration as it could violate the timing constraints to execute in a single cycle.  Make sure you are only writing the globals in one place if you are using the SCTL.  Multiple reads are fine.

Donovan
0 Kudos
Message 2 of 6
(3,702 Views)

Hi Donovan,

 

Thanks for the quick reply!  I was wondering if that might be the case.

 

Alas, that's why I've lowered myself to try using global variables. The writes of the globals will not conflict, as they are in different states of a state machine.  

 

What I'm trying to do, is change the settings of an NI 9269 analog output module from the SCTL.  The AO module will take way to long to update for the loop to wait.

 

I need to find a way to get an event from the SCTL to the loop that updates the AO module.   I wouldn't need to pass numbers out of the loop, but I do need to change the AO at multiple points of the pulse train that I'm generating.

 

Any ideas will be appreciated,

 

Roger

0 Kudos
Message 3 of 6
(3,700 Views)

Hi Again,

 

Just after posting, I thought of a possible workaround. I'll use different boolean globals to pass the events out of the SCTL.  That can increment the state of the AO loop.

 

I'll report back if that works.

 

Roger

0 Kudos
Message 4 of 6
(3,697 Views)
Solution
Accepted by topic author RogerMont

Unfortunately, although you can guarantee the writes will never happen concurrently if you only write once per case, LabVIEW FPGA currently does not have the capability to set the arbitratio scheme for globals, so multiple writes on the diagram can cause this error.  What I would suggest is that you write the global each iteration of the loop outside of the case structure and just wire the value out through a tunnel on the case structure.  This will still let you change the value each time through and will eliminate the code generation error.

 

If you would like to send feedback about this particular use case to LabVIEW FPGA R&D, I would recommend that you post your idea at the LabVIEW FPGA Idea Exchange.

Donovan
0 Kudos
Message 5 of 6
(3,696 Views)

Hi Donovan,

 

I appreciate your suggestion.  I may end up doing that.  I'm going to try timing the AO changes in the While loop.  It runs from the same clock as the SCTL.  The changing of the AO only needs to be within a few thousand clocks of the pulse train, so we'll see.

 

Thanks for your help!

 

Roger

0 Kudos
Message 6 of 6
(3,683 Views)