Category: Vivado HLS

Vivado HLSのメモ

最近Vivado HLSで高位合成を使い始めました。やっぱり、HDLを生で書くよりも圧倒的に早くコーディング・検証できるので、計算処理の記述ではとても助かっています。もしかすると、他の人の参考になるかもしれないので、作業していて気がついた点をまとめておきます。間違った記述があったらコメント欄で指摘してください。 Co-simulationでhandshake signals are not bundled to AXI_lite slaveというエラーが出る HLSでAXI-Liteで引数を渡す設定にしているときに、Co-simulationで というエラーが出ることがあります。たとえば、 これは、トップレベル関数の戻り値のdirectiveに を記述していないことが原因。void関数の場合でも、引数をAXI-Lite Slave指定にするときは、returnポートをAXI-Lite Slave指定にする必要があるようです。 AXI Masterポート指定のディレクティブのdepthの単位はバイト データの入出力をAXI Masterポートで行うときに、以下のようなdirectiveを指定しますが、この時のdepthはバイト単位。たとえば、uint32_t* buffer[32]のときは、depthは128(バイト)にします。これをワード単位で記述すると、Co-simulationのときにsegmentation faultでシミュレーションに失敗します。 トップレベル関数とC++のメソッド名が重複しているとCo-simulationが失敗する つまるところ、トップレベル関数名とstatic publicメソッド名を違うものにするとうまくいくようです。 Vivado HLS 2016.2でこのエラーになることは確認しました。新しいバージョンでは修正されているかもしれません。…