再帰関数 - 2023.2 日本語

Vitis 高位合成ユーザー ガイド (UG1399)

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 日本語

再帰関数は合成できません。これは、次のような再帰が複数回繰り返される可能性のある関数に適用されます。

unsigned foo (unsigned n) 
{  
    if (n == 0 || n == 1) return 1;  
    return (foo(n-2) + foo(n-1)); 
} 

Vitis HLS では、有限数の関数呼び出しがある末尾再帰もサポートされません。

unsigned foo (unsigned m, unsigned n)  
{  
    if (m == 0) return n;  
    if (n == 0) return m; 
    return foo(n, m%n); 
} 

C++ では、テンプレートで末尾再帰をインプリメントでき、合成可能な末尾再帰デザインに使用できます。

注意:
仮想関数はサポートされません。