AR# 60924

C コードおよび Vivado HLS

説明

このアンサーでは、Vivado HLS を使用した C コードの使用およびインプリメンテーションに関するアンサーを紹介しています。また、このアンサーでは、C コード記述、C 合成、C を使用したハードウェアのモデリングに関する情報の入手先についても説明しています。

 

注記 : このアンサーは、ザイリンクス Vivado HLS ソリューション センター (ザイリンクス アンサー 47428) の一部です。ザイリンクス Vivado HLS ソリューション センターには、Vivado HLS に関する質問を解決するのに役立つ情報が掲載されています。デザインを新しく作成する場合、または問題をトラブルシュートする場合は、Vivado 合成ソリューション センターから情報を入手してください。

ソリューション

コード記述ガイド

C、C++、SystemC を合成する場合の Vivado HLS で提供されているサポートに関しては、アンサー レコード AR_DM3 にまとめられています。

Vivado Design Suite ユーザー ガイド : 高位合成 には、コード記述に関する章があります。この章は、C、C++、SystemC の合成に関するすべてを説明しています。

コード記述ガイドの各例は、Vivado HLS ソフトウェアに含まれています。これらの例には、GUI の [Welcome] ページまたは、Vivado HLS のインストール ディレクトリにある examples ディレクトリから、アクセスできます。

ビット精度の C モデリング

ハードウェアを C、C++、SystemC でモデリングする場合、FPGA で良い QoR (結果のクオリティ) を得るための主なテクニックの 1 つに、任意精度データ型を使用する方法があります。

標準 C データ型では、8 ビット バウンダリで変数をモデル化することができます (8 ビット、16 ビット、32 ビットなど)。任意精度データ型では、変数を任意のビット幅で定義することができます (6 ビット、12 ビット、143 ビットなど)。

この方法だと、C コードを正確にモデル化し、またハードウェアで求められるビット幅に正確に合成することができます。

たとえば、乗算には 18 ビットしか必要でない場合、標準の 32 ビットの C データ型を使用する必要はなく、ひいては乗算器用に FPGA に複数の DSP48 マクロをインプリメントする必要がありません。

任意精度型を使用するもう 1 つの利点として、正確なビット サイズで C モデルがシミュレートすること、そして、高速な C シミュレーションを使用して、合成前に正しいビット精度操作方法を検証できるという点があります。このため、丸め処理、信号対ノイズ比率などを C レベルで解析できます。

任意精度データ型の使用 (参照のセクションを含む) については、Vivado Design Suite ユーザー ガイド : 高位合成 に記載されています。任意精度データ型の使用についてのチュートリアルは、Vivado HLS チュートリアルにあります。

アプリケーション ノート XAPP-1163 には、浮動小数点データ型を使用した C デザインを、浮動小数点 FPGA ブロックを使用してインプリメントする方法、または任意精度の固定小数点データ型への移行方法が説明されていて、結果的に精度をあまり失わずにより小さく高速なハードウェアを構築できるこことが説明されています。

C ライブラリを使用したハードウェア モデリング

Vivado HLS には C ライブラリが多数提供されているため、共通の C 関数をクオリティの高い FPGA ハードウェアとしてインプリメントすることができます。

たとえば、C および C++ はどちらも浮動小数点関数をインプリメントする数学ライブラリ (math.h または cmath) を提供しています。

これらのライブラリが直接合成される場合は、FPGA ハードウェアの QoR は芳しくなくなります。Vivado HLS には、一般的によく使用される関数を含んだ独自の数学ライブラリがあります。Vivado HLS の数学ライブラリが使用される場合は、浮動小数点関数の RTL インプリメンテーションが最適なものになります。

アプリケーション ノート XAPP-599 では、Vivado HLS 数学ライブラリを浮動小数点デザインで使用する方法が説明されています。Vivado HLS を使用した浮動小数点デザインというクイック ビデオでは、浮動小数点を使用したデザインの概要が説明されています。

また、Vivado HLS は OpenCV ビデオ ライブラリからの関数をモデル化するためのライブラリ、およびライン バッファーやイメージ ウィンドウなどの一般的なビデオ デザイン操作のライブラリを提供しています。

アプリケーション ノート XAPP-793 では、ライン バッファーなどの標準ビデオ関数の使用に関する詳細が説明されています。また、アプリケーション ノート XAPP-1167 (デザイン ファイルはこちら) では、Vivado HLS での OpenCV 関数を使用した C プログラムの合成方法、およびハイ パフォーマンス FPGA ハードウェアとしてのインプリメント方法について説明されています。

Vivado HLS デザインでの OpenCV ライブラリの使用に関する基本情報は、 Vivado での OpenCV および高位合成の利用というクイック ビデオを参照してください。

Vivado Design Suite ユーザー ガイド : 高位合成 では、Vivado HLS で提供されているすべての C ライブラリが説明されており、またサポートされている関数がリストされています。

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

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

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
47428 ザイリンクス Vivado HLS ソリューション センター N/A N/A
47431 ザイリンクス Vivado HLS ソリューション センター - デザイン アシスタント N/A N/A
AR# 60924
日付 06/04/2014
ステータス アクティブ
種類 一般