ひでみのアイデア帳

くだらないことなんだけど、忘れないために・・・

Club Vivadoであった質問の内容を俺々な解釈

9/16(金)、Xilinx社主催のClub Vivadoに参加してきた。 その時にあった質問やXilinx社に対する要望などを俺なりに解釈してみた。

Vivado HLSで生成したRTLをVivado IPIに組み込む時、バージョンアップ時は元のブロックを削除しなければいけない

たぶん、これ、バージョンが古かったんでしょう。 Vivadoは2015.4か2016.1あたりからリポジトリをスキャン(たぶん、ポーリングで)しています。 なので、ブロックの削除無しでIPIだけでアップデートは可能です。

ただし、モジュールのファイル構成は考えておいたほうが良いです。

VivadoもVivado HLSもソースコードの新規作成の場合、地下坑道にファイルを作成する。 あまり深すぎて、管理しにくい。 ソースコードは先に作成しておいて、"Add"で追加するのが良いです。

Cシミュレーションは遅いから実機シミュレーションできたら嬉しい

実機シミュレーションの前提はCよりFPGAが速いという妄想が無いと考えられないと思うが・・・。

たとえ、Cシミュレーションは実機より速度が遅くても、バグ退治やアルゴリズムの細かい点の修正のときに細かい出力する時にはCシミュレーションのほうが便利である。 これはRTLシミュレーションも一緒だろうと思う。 RTLを作成した時は実機より遅いけど細かい点を見るにはRTLシミュレーションのほうを使うでしょ。

実機上ではCシミュレーションというよりもCシミュレーションがそこそこOKになってからシステムレベルの検証なら実機を使うのが良いけど。

俺の場合は、RTL作成したらソースコードから信号を引き出しやすいように作成しておいて、実機シミュレーションするプロジェクトを作成してるけどね。 だって、RTLシミュレーションはシミュレーション期間や表示数でシミュレーションに制限もあるしね。

Cソースコードの細かい出力ってHLSではなかなかできないんだなぁ。 Cソースコードで出力なんて作ってしまうと、回路の中身が変わってしまうからね。 しかも、CとRTLの中身は等価じゃない可能性があるからこれもまた難しい。

HLSの最適化を変更できないか?

結果のRTLはから推測するとたぶん、Vivado HLSは"-O2"で最適化していると思います。 詳しく調べてないですが、もし、"-O2"などの選択肢がないとすると最適化の度合いは、#pragmaで宣言できるようになっているんだと思います。

たとえば、

 #pragma HLS INLINE off

とか・・・