Last but not least, in this fourth testcase, a template parameter allows you to choose between a kernel that has RTP ports and another one which does not have these ports.
template<bool HAS_RTPS>
struct Sub0: public graph
{
input_port _in0;
output_port _out0;
typename std::conditional< HAS_RTPS, input_port, std::tuple<>>::type _in1;
typename std::conditional< HAS_RTPS, inout_port, std::tuple<>>::type _inout0;
kernel _k;
Sub0()
{
if constexpr (HAS_RTPS) {
_k = kernel::create(f1);
} else {
_k = kernel::create(f0);
}
runtime<ratio>(_k) = 0.9;
source(_k) = "k0.cpp";
connect(_in0, _k.in[0]);
connect(_k.out[0], _out0);
if constexpr (HAS_RTPS) {
connect(_in1, _k.in[1]);
connect(_k.inout[0], _inout0);
}
}
};
In the testcase, two of these graphs are instantiated: one without RTPs and another one with RTP ports. The resulting graph in the Vitis Analyzer is as follows:
Type make CASE=4 aie aieviz to visualize the resulting graph of this testcase.