Avoiding Arbitration to Optimize FPGA VIs

LabVIEW uses arbitration to manage access to shared resources. When you select an arbitration option, select Never Arbitrate, if possible, to save space on the FPGA and increase speed.

If you select the Never Arbitrate option for a resource interface, LabVIEW does not add arbitration components, which saves significant space on the FPGA. In addition to saving space, the Never Arbitrate option allows some of the FPGA I/O and FIFOfunctions to execute in a single clock cycle. To use the Never Arbitrate option, you must guarantee sequential access to the resource interface in the data flow of the FPGA VI, as shown in the following block diagram.

In the block diagram above, the Flat Sequence structure ensures that the two FIFO Method Nodes do not execute simultaneously, so resource contention does not occur. In such situations, Never Arbitrate is an appropriate option. However, if you select the Never Arbitrate option and make simultaneous requests, the FPGA VI corrupts data.

Note To ensure data integrity, avoid FIFO reads or writes by multiple objects, even if the access requests are not simultaneous.

Selecting the Never Arbitrate option when simulating an FPGA application that contains memory items with multiple accessors may result in incorrect behavior. For example, if your application includes multiple writers, each writer can update the memory address specified during simulation. Additionally, if your application includes multiple readers, each reader can assess the memory address specified during simulation.