FC2カウンター FPGAの部屋 SDSoC 2015.2 のチュートリアルのファイル構造を確認してみた

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

FPGAの部屋

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

SDSoC 2015.2 のチュートリアルのファイル構造を確認してみた

SDSoC 2015.2 のファイル構造を見ていくことにする。プロジェクトは、”SDSoC 2015.2 のチュートリアルをやってみた2(ハードウェア・アクセレーション)”とする。

SDSoC 2015.2 のチュートリアルをやってみた2(ハードウェア・アクセレーション)”の下の記事を引用するところから始める。

D:\SDSoC\labn\SDRelease\_sds\swstubs フォルダの内容を示す。
SDSoC_22_150729.png

D:\SDSoC\labn\SDRelease\_sds\swstubs の main.cpp の mmultadd_test() 関数を引用する。
hw_sds_clk_start() と hw_sds_clk_stop() で囲われている部分を見ると、_p0_mmult_0() と _p0_madd_0() が使われている。
SDSoC_20_150728.png

D:\SDSoC\labn\SDRelease\_sds\swstubs の madd.cpp の _p0_madd_0() を引用する。
これを見ると、cf_send_i (), cf_receive_i (), cf_wait (), などが使われていて、ハードウェア・アクセラレータにデータを送って、受けていることが伺われる。
SDSoC_21_150728.png

madd.cpp の _p0_madd_0 () の前には #pragma HLS が書いてある madd() があって、これはVivado HLS 用の madd() で、元々の madd() 関数だ。

mmult.cpp も同様に、 _po_mmult_0 () があって、こっちは、cf_send_i (), cf_wait (), が使われていて、 cf_receive_i () が使われていないのだが、どうしてだろうか?やはり、mmult() もあって、 #pragma HLS が書かれている。その他、mmult_kernel() があって、こちらも pragma HLS array_partition が書かれているので、やはり Vivado HLS 用のようだ。

D:\SDSoC\labn\SDRelease\_sds\iprepo\repo に xilinx_com_hls_madd_1_0 と xilinx_com_hls_mmult_1_0 があるが、どうやら Vivado HLS で作ったIP ではないか?と思う。
SDSoC_23_150729.png

xilinx_com_hls_mmult_1_0 の内容を見てみると、hdl やdoc があって IP フォルダのようだ。
SDSoC_24_150729.png

D:\SDSoC\labn\SDRelease\_sds\iprepo\repo\xilinx_com_hls_mmult_1_0\hdl\verilog フォルダを見ると mmult.v などのVerilog HDL ファイルが並んでいる。
SDSoC_25_150729.png

D:\SDSoC\labn\SDRelease\_sds\p0 フォルダを示す。
SDSoC_26_150729.png

.cf_work フォルダはC ファイルとかがあって、最下層のドライバなのだろうか?
SDSoC_27_150729.png

ipi フォルダには Vivado のプロジェクト zc702.xpr があった。
SDSoC_28_150729.png

Vivado のプロジェクト zc702.xpr を立ちあげてみた。
SDSoC_29_150729.png
zc702 のブロックデザインがあった。

Summary を見た。DSPをたくさん使っている。
SDSoC_30_150729.png

zc702 のブロックデザインを表示した。たくさんIPがある。
SDSoC_31_150729.png

datamover や AXI4-Stream Accelerator Adapter や Vivado HLS のIPの mmult, madd 等がある。
Zynq は M_AXI_GP0 ポートと S_AXI_ACP ポートを使用している。たぶん、ARMプロセッサに madd や mmult のデータをRead/Writeするには ACPポートを使っていると思う。外部ポートはハードウェア・アクセラレータに使用しているので、MIO用の固定IOとDDR のみで PL の入出力ポートは存在しない。

Zynqのプロパティで PL Fabric Clocks を見ると FCLK_CLK2 が datamover や AXI4-Stream Accelerator Adapter や Vivado HLS のIPの mmult, madd に供給されているクロックで 100 MHz だった。
SDSoC_34_150729.png

SD_card フォルダには、Linuxの起動イメージや、RAMディスク、BOOT.BIN、devicetree.dtb などが入っている。
SDSoC_35_150729.png

D:\SDSoC\labn\SDRelease\_sds\vhls フォルダの内容を示す。 madd, mmlt フォルダがある。
SDSoC_36_150729.png

madd フォルダを下がっていくと、D:\SDSoC\labn\SDRelease\_sds\vhls\madd\solution\impl\ip フォルダがあるので、ここは、Vivado HLS のプロジェクト用フォルダのようだ。
SDSoC_37_150729.png

SDSoC はいろいろなファイルを出力し、Vivado のプロジェクトも自動作成している。凄いと思った。これがうまく行けば、今まで、Vivado HLSでIP作って、Vivado に持ってきて、論理合成、インプリメント、ビットストリームを作って、ドライバを書いて、制御用アプリを書いてという手間をツールが全部やってくれるみたいだ。
しかし、これでハードウェア技術者が要らなくなるということではないと思う。今のところ、Vivado HLS を使用して性能を向上させるにはテクニックが必要だ。ソフトウェアをそのままハードウェア化しても性能が良くなるとは限らない。でも、このようなツールが普及してくるとハードウェア技術者はIPの作製のような、よりスペシャリストとしての性格が強くなるのかもしれない?
  1. 2015年07月29日 03:25 |
  2. SDSoC
  3. | トラックバック:0
  4. | コメント:2

コメント

他国で仕事をしていると

ご無沙汰しています,Marseeさん.
時々,弊職のスタッフが,貴殿Web情報を参考にさせて
いただいております.

現在,海外オフショア会社でC/C++エンジニアだけで
SDSoCを使っていますが,言語エンジニアがFPGAをつかって
車載向け製品開発を実施している現場をみていると頼もしく
思っております.

が,同時に最下段記載の文章はますます強く感じています.

>このようなツールが普及してくるとハードウェア技術者は
>IPの作製のような、よりスペシャリストとしての性格が
>強くなるのかもしれない

むしろ,日本人HW技術者の行く末(往く末)はここにしか
ないのではないかという,思いです.

まだしばらくは論理合成と機能合成の間を行き来している
状況でしょうかね.
  1. 2015/11/08(日) 13:53:20 |
  2. URL |
  3. Masatiku #i4iootPE
  4. [ 編集 ]

Masatikuさん、こんにちは。

異国の地で頑張っておられるようで安心しました。

確かにSDSoCを使っているそういう考えになってきますが、SDSoCのプラットフォームを作るにはハードエンジニアが必要ですし、ある一定数は必要があると思いますが、数は少なくて済むようになると思います。
  1. 2015/11/09(月) 04:07:59 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


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

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