Review the test_bf_3x.cpp
AI Engine application. Note that all the input and output PLIO ports for the TEST_BF
graph are instantiated. Next, instantiate the virtual platform and connect the virtual platform’s src
and sink
arrays to PLIOs.
Each input PLIO port has a *.txt
file relative to the current directory that sources the input platform data. Each output PLIO port specifies a .*txt
file to sink the output platform data. The beamforming kernels expect cint16
data inputs, so the input data *.txt
files are organized as four columns per row where each column represents a 16-bit real or imaginary value.
Lastly, the AI Engine application uses the Run Time Graph Control API with an infinite graph execution. The graph dut
is declared from the TEST_BF
graph class. In the main
function, this graph object is initialized and run. The init()
method loads the graph to the AI Engine array at specific AI Engine tiles. This includes loading the ELF binaries for each AI Engine, configuring the stream switching for routing, and configuring the DMAs for I/O. It leaves the processors in a disabled state. The run()
method starts the graph execution by enabling the processors. This graph runs for one iteration. The run-time event API for performance profiling is used to calculate the throughput of two of the output ports.