AR# 51019

2012.2 Vivado HLS - 既知の問題

説明

このアンサーには 2012.2 Vivado HLS の既知の問題および制限事項がリストされています。

ソリューション

コード形式
- 仮想関数の複数継承はサポートされていません。
- 64 ビットの OS では、long データ型を使用するとシミュレーションで不一致が発生することがあります。64 ビットの整数には long long データ型を使用するようにしてください。

指示子/Pragma の使用
- 各サイクルに有効な出力がない場合、デザイン レベルのハンドシェイク信号は追加されません。デフォルトでもあるインターフェイス モード ap_ctrl_hs が選択されている場合、as ap_start や ap_done などのデザイン レベルのハンドシェイクがデザインに追加されます。しかし、デザインが II=1 でパイプライン化されている場合、各クロック サイクルに有効な出力があれば、デザイン レベルのハンドシェイクが最終 RTL で最適化されます。この問題は今後のリリースで修正される予定です。
- すく数変数のインデックス化されたアレイ アクセスに完全アレイ パーティションがあると、ランタイムが長くなり、メモリ使用率が過多になる可能性があります。
例 :
Array[x] = y;
Array[x+1] = y+1;
...
Array[x+N] = y+N;
#pragma AP array partition variable=Array
- ap_int、ap_fixed 変数などの C__ クラス オブジェクトの Pragma には追加のアンパサンド (&) が必要です。このような要件は Tcl 指示子にはありません。
例 :
ap_int<N>x = y*z;
#pragma AP resource core=PipeMul2S variable=&x
- このアレイ ストリーミング指示子ではデータフローのスカラー変数に対し FIFO の深さをコンフィギュレーションできません。
例 :
Void DUT(Type_M in_data[N], Type_M out_data[N})
{
Type_M mem[N]; // Can configure depth with array streaming if
// this array is converted into FIFO.
bool flag; // Cannot configure depth for this scalar variable.
//bool flag[1]; // Workaround of using single-element array.
read_data(in_data, mem, &flag);
write_data(out_data, memo, flag);
}

RTL 協調シミュレーション
- 大きたアレイにはスタック スペースが多く必要となるので、コードに大型アレイが含まれているとこの問題が発生する可能性があります。回避策は 2 つ考えられます。
- スタティック限定子を使用すると、アレイがスタック外になります。
- シェル コマンド ulimit -s を使用し、スタック サイズを増やすこともできます。
- C シミュレーション中にランタイム パフォーマンスを最適化するため C コンパイル フラグ -O2 を使用すると、RTL シミュレーション (C テストベンチおよび RTL の協調シミュレーション) でエラーが発生することがあります。
- C シミュレーションのランタイムを最適化するには、特に浮動小数点型を使用している場合は、add_files -cflag で使用されている -O2 をすべて削除します。

アンサー レコード リファレンス

マスター アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
47397 Vivado Design Suite 2012 - 既知の問題 N/A N/A
47429 ザイリンクス Vivado HLS ソリューション センター - 重要な問題 N/A N/A
AR# 51019
日付 07/26/2012
ステータス アクティブ
種類 既知の問題
ツール