Case 2: Asynchronous Parameter - Case 2: Asynchronous Parameter - 2026.1 English - UG1864

Vitis Functional Simulation User Guide (UG1864)

Document_ID
UG1864
Release_Date
2026-06-23
Version
2026.1 English
class myGraph : public adf::graph {
public:
    adf::input_plio   In1;
    adf::output_plio  Out1;
    adf::kernel       kernel;
    adf::port<adf::input> scalar_port;

    myGraph() {
        kernel = adf::kernel::create(multiply_by_2_with_scalar);
        adf::connect< adf::stream >    (In1.out[0], kernel.in[0]);
        adf::connect< adf::stream >    (kernel.out[0], Out1.in[0]);
        adf::connect< adf::parameter > (scalar_port, adf::async(kernel.in[1]));  // async
    }
};
# 16 stream samples and 1 scalar value
output = myGraph.run(va.array(list(range(1, 17)), dtype=va.int32),
                     va.array(5, dtype=va.int32))
# output: [5, 10, 15, ..., 80] -- kernel runs twice, reusing scalar=5

Asynchronous parameters retain their value across kernel invocations, so the stream can drive as many kernel runs as the data allows.