FC2カウンター FPGAの部屋 Vivado HLS でシミュレーション用と合成用の記述を書き分ける

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Vivado HLS でシミュレーション用と合成用の記述を書き分ける

今までは、Vivado HLS で、シミュレーションするときと合成するときの記述の切り替えは、コメントで切り分けていた。
シミュレーションするときに大きな画像などを対象とするとシミュレーション時間がかかってしまうので、できれば小さい画像を使いたい。合成時は実際に扱う画像の大きさを指定する必要があるということで、記述の切り替えを忘れてしまって痛い目を見ることがある。

(注)合成の時に本番用のパラメータを使ってしまうので、C/RTL 協調シミュレーションがうまく行かなくなってしまうという欠点があります。ご注意を。。。

今回は、tu1978 さんに教えて頂いたコードの中に合成の時だけ有効になるマクロがあるのでそれを使用する。そのマクロは”__SYNTHESIS__”だ。
これは、”Vivado Design Suite ユーザー ガイド 高位合成 UG902 (v2016.1) 2016 年 4 月 6 日”の 253 ページに書いてある。その説明を引用する。

Vivado HLS では、 合成が実行 された と きに macro __SYNTHESIS__ が定義されます。 これによ り 、 __SYNTHESIS__
macro を使用し て、 デザ イ ンか ら合成不可能な コー ド を削除でき る よ う にな り ます。


この __SYNTHESIS__ を使用して、”Vivado HLSで作ったDMA Write IP を実機でテスト4(成功)”でミスったしまったヘッダファイルDMA_Write.h を書き直してみよう。

直す前のDMA_Write.h はこのように書かれていた。
DMA_Write_IP_test_29_160908.png

これを、 __SYNTHESIS__ を使用して、下のように書き直した。

// DMA_Write.h
// 2016/07/10 by marsee
// 2016/09/09 __SYNTHESIS__を使うように修正
//

#ifndef __DMA_WRITE_H__
#define __DMA_WRITE_H__

#ifdef __SYNTHESIS__
    #define HORIZONTAL_PIXEL_WIDTH    800
    #define VERTICAL_PIXEL_WIDTH    600
#else
    #define HORIZONTAL_PIXEL_WIDTH    64
    #define VERTICAL_PIXEL_WIDTH    48
#endif

#define ALL_PIXEL_VALUE    (HORIZONTAL_PIXEL_WIDTH*VERTICAL_PIXEL_WIDTH)

#define MAX_FRAME_NUMBER    3

#endif


これでシミュレーション時の記述と合成時の記述を分けることができた。
  1. 2016年09月10日 05:36 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3569-e0846bda
この記事にトラックバックする(FC2ブログユーザー)