Specifications - 2023.2 English

Vitis Libraries

Release Date
2023.2 English

There is a configuration class derived from the base configuration class xf::solver::qrfTraits by redefining the appropriate class member.

struct my_qrf_traits : xf::solver::qrfTraits<A_ROWS, A_COLS, MATRIX_IN_T, MATRIX_OUT_T> {
    static const int ARCH = SEL_ARCH;

The base configuration class is:

template <int RowsA, int ColsA, typename InputType, typename OutputType>
struct qrfTraits {
    static const int ARCH = 1;
    static const int CALC_ROT_II = 1;
    static const int UPDATE_II = 4;
    static const int UNROLL_FACTOR =1;


  • ARCH: Select implementation. 0=Basic. 1=Lower latency/thoughput architecture.
  • CALC_ROT_II: Specify the rotation calculation loop target II of the QRF_ALT architecture(1).
  • UPDATE_II: Specify the pipelining target for the Q & R update loops.
  • UNROLL_FACTOR: Specify the unrolling factor for Q & R update loops of the QRF_ALT architecture(1).

The configuration class is supplied to the xf::solver::qrf function as a template paramter as follows.

template <bool TransposedQ,
          int RowsA,
          int ColsA,
          typename InputType,
          typename OutputType,
          typename QRF_TRAITS = DEFAULT_QRF_TRAITS>
void qrf(hls::stream<InputType>& matrixAStrm,
         hls::stream<OutputType>& matrixQStrm,
         hls::stream<OutputType>& matrixRStrm)