HLS(高位合成)を無償で試せるようになりました。HLSを使うと、CやC++で記述したコードからVerilogやVHDLのコードが生成できます。2015.4で実際にHLSを試したときのメモです。機能についてテストベンチインターフェース波形表示SolutionVivadoで使う方法AXIアクセスの方法まとめ機能を一通り理解するのに必要な時間チュートリアル(ug871-vivado-high-level-synthesis-tutorial.pdf)を実際に試せば、丸1日でほとんどの機能を理解できます。チュートリアルは、非常にわかりやすいです。取り上げられている題材もかなり実践的です。HLSの高位合成を確認してみました。関数float_topは、単純な単精度浮動小数点の乗算関数です。b;}テストベンチCで作ったテストベンチを、まったく修正なしで高位合成後のRTLの検証に使えます。合成後のインターフェスがAXIであっても、それを意識しないでCのテストベンチをそのまま利用できます。この例の場合、高位合成で生成されたRTLにはfloatではなく、32ビットのバイナリ・データを渡す必要がありますが、そのようなキャストも自動的に行ってくれます。0;}インターフェースクロックやリセット、Valid信号やステータス信号などは、自動的に付加されます。ユーザーが明示的に指定することもできます。インターフェースには、AXIを指定することもできます。これらの設定は、Directiveで行います。Directiveは、ソースコード中にpragmaとして挿入するか、または別ファイルに格納できます。b;}波形表示C/RTL協調シミュレーションの結果は、波形で確認できます。C/RTL協調シミュレーション結果SolutionCのコードはそのままで、インターフェースやパイプライン化の設定などを、Solutionというセットで複数試せます。Solution同士の結果比較を簡単に行える機能があります。Catalogに取り込めます。Designで使えるようになります。AXIアクセスの方法インターフェースとしてAXIを指定すると、「どのようにしてプロセッサからアクセスするのか」という点が気になります。これについては、合成対象の関数の入出力とその制御信号がレジスタにマッピングされます。プロセッサからアクセスする場合には、これらのレジスタを制御することになります。Catalogとしてエキスポートすると、solution->drivers->float_top_v1_0->srcにレジスタ定義ファイルxfloat_top.hとして生成されます(この例の場合)。レジスタの具体的な設定や制御方法は、C/RTL協調シミュレーションの波形結果から確認できます。0x24まとめ予想以上に素晴らしいです。floatといったCネイティブの精度だけでなく、C++のtemplateなどを使って任意の精度の演算器を生成できるようです。演算精度と回路規模のトレードオフパイプライン化と回路規模、パフォーマンスのトレードオフなどを簡単に検討できそうです。Vのベアメタルアプリで、FPGAからHPSへのインタラプトを認識するインタラプト・ハンドラの作成例です。FPGAから出力したインタラプトを、QsysのPIOを介してHPSに接続しています。VIP)をWindows10のコマンドプロンプトから実行したときのメモです。Metal:ベアメタル)を実行するまでの手順です。IPコア(wf3d)は、ZedBoardまたはDE0でサンプル実装を行っています。ACPの実験その2前回の実験で、ACPが期待通りに動かない環境を作ることができました。この環境に設定を追加してACPを有効にします。Vのマニュアルに記載されているACPの有効化に必要な設定は次のとおりです。Primeと呼ばれているようです。GUIのImplementationをコマンドラインから実行する場合の手順です。GUIで一通り動作するプロジェクトを作成してインプリメンテーショ...FPGAVivadoのマルチスレッド数を変えると速くなるかVivadoはツールが使用するマルチスレッドの最大数を変更できます。マニュアルによると、マルチスレッドのデフォルト値はWindowsが2でLinuxが8です。この値を変更するとVivadoの処理が速くなるか実際に試してみました。キットOpenCoresその他ダウンロードホーム検索トップサイドバータイトルとURLをコピーしました。