Skip to main content
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
EN
Upload
Download free for 30 days
Sign in
Uploaded by
marsee101
5,651 views
Vivado hlsのシミュレーションとhlsストリーム
2016年9月25日のRTLを語る会12でお話ししたスライドです。 Vivado HLSのシミュレーションについてお話ししました。
Technology
◦
Read more
4
Save
Share
Embed
Save to Drive
Download now
Downloaded 24 times
1
/ 35
2
/ 35
3
/ 35
4
/ 35
5
/ 35
6
/ 35
7
/ 35
8
/ 35
9
/ 35
10
/ 35
11
/ 35
12
/ 35
13
/ 35
14
/ 35
15
/ 35
16
/ 35
17
/ 35
18
/ 35
19
/ 35
20
/ 35
More Related Content
PDF
Vivado hls勉強会1(基礎編)
by
marsee101
184 slides
28.1K views
PDF
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
by
marsee101
125 slides
6.9K views
PDF
Vivado hls勉強会5(axi4 stream)
by
marsee101
73 slides
8.2K views
PDF
Vivado hls勉強会4(axi4 master)
by
marsee101
130 slides
6.1K views
PDF
Vivado hls勉強会3(axi4 lite slave)
by
marsee101
152 slides
7.2K views
PPTX
Zynq + Vivado HLS入門
by
narusugimoto
177 slides
27K views
PDF
ACRiウェビナー:小野様ご講演資料
by
直久 住川
36 slides
903 views
PDF
FPGAスタートアップ資料
by
marsee101
26 slides
4.6K views
Vivado hls勉強会1(基礎編)
by
marsee101
184 slides
28.1K views
Vivado hls勉強会2(レジスタの挿入とpipelineディレクティブ)
by
marsee101
125 slides
6.9K views
Vivado hls勉強会5(axi4 stream)
by
marsee101
73 slides
8.2K views
Vivado hls勉強会4(axi4 master)
by
marsee101
130 slides
6.1K views
Vivado hls勉強会3(axi4 lite slave)
by
marsee101
152 slides
7.2K views
Zynq + Vivado HLS入門
by
narusugimoto
177 slides
27K views
ACRiウェビナー:小野様ご講演資料
by
直久 住川
36 slides
903 views
FPGAスタートアップ資料
by
marsee101
26 slides
4.6K views
What's hot
PDF
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
by
Yoshiro Tokumasu
62 slides
2.5K views
PDF
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
by
Mr. Vengineer
76 slides
11.2K views
PDF
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
by
ksk_ha
43 slides
1.8K views
PDF
痛い目にあってわかる HAクラスタのありがたさ
by
Takatoshi Matsuo
86 slides
13.1K views
PPTX
Verilator勉強会 2021/05/29
by
ryuz88
35 slides
1.1K views
PPTX
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
by
marsee101
48 slides
8.9K views
PDF
KVM環境におけるネットワーク速度ベンチマーク
by
VirtualTech Japan Inc.
32 slides
4.7K views
PPTX
HTTP2 最速実装 〜入門編〜
by
Kaoru Maeda
42 slides
32.2K views
PDF
Dockerからcontainerdへの移行
by
Kohei Tokunaga
36 slides
19.4K views
PDF
KafkaとAWS Kinesisの比較
by
Yoshiyasu SAEKI
16 slides
15.4K views
PDF
Fibre Channel 基礎講座
by
Brocade
66 slides
68.8K views
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
by
Yahoo!デベロッパーネットワーク
49 slides
25.4K views
PDF
ゼロからはじめるKVM超入門
by
VirtualTech Japan Inc.
18 slides
23.5K views
PDF
ARM Trusted FirmwareのBL31を単体で使う!
by
Mr. Vengineer
49 slides
14.8K views
PDF
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
by
tamtam180
92 slides
9.2K views
PDF
ML2/OVN アーキテクチャ概観
by
Yamato Tanaka
56 slides
1.9K views
PDF
Zynq mp勉強会資料
by
一路 川染
69 slides
6.2K views
PDF
FPGA+SoC+Linux実践勉強会資料
by
一路 川染
114 slides
4.9K views
PDF
WebAssemblyのWeb以外のことぜんぶ話す
by
Takaya Saeki
37 slides
28.7K views
PDF
DockerとPodmanの比較
by
Akihiro Suda
37 slides
64.8K views
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
by
Yoshiro Tokumasu
62 slides
2.5K views
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
by
Mr. Vengineer
76 slides
11.2K views
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
by
ksk_ha
43 slides
1.8K views
痛い目にあってわかる HAクラスタのありがたさ
by
Takatoshi Matsuo
86 slides
13.1K views
Verilator勉強会 2021/05/29
by
ryuz88
35 slides
1.1K views
ラプラシアンフィルタをZedBoardで実装(ソフトウェアからハードウェアにオフロード)
by
marsee101
48 slides
8.9K views
KVM環境におけるネットワーク速度ベンチマーク
by
VirtualTech Japan Inc.
32 slides
4.7K views
HTTP2 最速実装 〜入門編〜
by
Kaoru Maeda
42 slides
32.2K views
Dockerからcontainerdへの移行
by
Kohei Tokunaga
36 slides
19.4K views
KafkaとAWS Kinesisの比較
by
Yoshiyasu SAEKI
16 slides
15.4K views
Fibre Channel 基礎講座
by
Brocade
66 slides
68.8K views
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
by
Yahoo!デベロッパーネットワーク
49 slides
25.4K views
ゼロからはじめるKVM超入門
by
VirtualTech Japan Inc.
18 slides
23.5K views
ARM Trusted FirmwareのBL31を単体で使う!
by
Mr. Vengineer
49 slides
14.8K views
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
by
tamtam180
92 slides
9.2K views
ML2/OVN アーキテクチャ概観
by
Yamato Tanaka
56 slides
1.9K views
Zynq mp勉強会資料
by
一路 川染
69 slides
6.2K views
FPGA+SoC+Linux実践勉強会資料
by
一路 川染
114 slides
4.9K views
WebAssemblyのWeb以外のことぜんぶ話す
by
Takaya Saeki
37 slides
28.7K views
DockerとPodmanの比較
by
Akihiro Suda
37 slides
64.8K views
Similar to Vivado hlsのシミュレーションとhlsストリーム
PDF
高位合成ツールVivado hlsのopen cv対応
by
marsee101
14 slides
3.6K views
PDF
ソフトウェアエンジニアと高位合成
by
Kenichiro MITSUDA
71 slides
2.3K views
PDF
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
by
Hiroki Nakahara
44 slides
9.1K views
PDF
Pynqでカメラ画像をリアルタイムfastx コーナー検出
by
marsee101
16 slides
5.7K views
PDF
ACRiルーム副室長_安藤様_講演資料
by
直久 住川
24 slides
156 views
PDF
Synthesijer.Scala (PROSYM 2015)
by
Takefumi MIYOSHI
50 slides
6K views
PDF
SystemC Tutorial
by
kocha2012
56 slides
9.5K views
PDF
画像処理ボード入門およびビデオ信号入門
by
Electro-System
25 slides
302 views
PPTX
研究者のための Python による FPGA 入門
by
ryos36
94 slides
14.8K views
PDF
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
by
直久 住川
55 slides
1K views
PPTX
Androidとfpgaを高速fifo通信させちゃう
by
ksk sue
26 slides
5.7K views
PDF
FPGAをロボット(ROS)で「やわらかく」使うには
by
Hideki Takase
39 slides
1.9K views
PDF
Fpga online seminar by fixstars (1st)
by
Fixstars Corporation
40 slides
503 views
PDF
RISC-V User level ISA
by
たけおか しょうぞう
28 slides
3.2K views
PDF
Synthesijer zynq qs_20150316
by
Takefumi MIYOSHI
44 slides
9K views
PDF
2012研究室紹介(大川)
by
猛 大川
11 slides
674 views
PPTX
Starc verilog hdl2013d
by
Kiyoshi Ogawa
51 slides
5.8K views
PDF
第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた
by
Ito Takahiro
44 slides
4K views
PPTX
自作LSIコミュニティの可能性
by
Junichi Akita
27 slides
2K views
PPTX
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
by
Kiyoshi Ogawa
56 slides
4.5K views
高位合成ツールVivado hlsのopen cv対応
by
marsee101
14 slides
3.6K views
ソフトウェアエンジニアと高位合成
by
Kenichiro MITSUDA
71 slides
2.3K views
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
by
Hiroki Nakahara
44 slides
9.1K views
Pynqでカメラ画像をリアルタイムfastx コーナー検出
by
marsee101
16 slides
5.7K views
ACRiルーム副室長_安藤様_講演資料
by
直久 住川
24 slides
156 views
Synthesijer.Scala (PROSYM 2015)
by
Takefumi MIYOSHI
50 slides
6K views
SystemC Tutorial
by
kocha2012
56 slides
9.5K views
画像処理ボード入門およびビデオ信号入門
by
Electro-System
25 slides
302 views
研究者のための Python による FPGA 入門
by
ryos36
94 slides
14.8K views
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
by
直久 住川
55 slides
1K views
Androidとfpgaを高速fifo通信させちゃう
by
ksk sue
26 slides
5.7K views
FPGAをロボット(ROS)で「やわらかく」使うには
by
Hideki Takase
39 slides
1.9K views
Fpga online seminar by fixstars (1st)
by
Fixstars Corporation
40 slides
503 views
RISC-V User level ISA
by
たけおか しょうぞう
28 slides
3.2K views
Synthesijer zynq qs_20150316
by
Takefumi MIYOSHI
44 slides
9K views
2012研究室紹介(大川)
by
猛 大川
11 slides
674 views
Starc verilog hdl2013d
by
Kiyoshi Ogawa
51 slides
5.8K views
第3回ローレイヤー勉強会 : FPGAでコンピュータを作ってみた
by
Ito Takahiro
44 slides
4K views
自作LSIコミュニティの可能性
by
Junichi Akita
27 slides
2K views
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
by
Kiyoshi Ogawa
56 slides
4.5K views
More from marsee101
PDF
Robot car gabor_filter
by
marsee101
22 slides
1.8K views
PDF
Ultra96 pmod expansion board
by
marsee101
27 slides
1.8K views
PDF
Camera input from_ultra_96's_slow_expansion_connector
by
marsee101
7 slides
2.7K views
PDF
Fpga robot car
by
marsee101
15 slides
3.5K views
PDF
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
by
marsee101
19 slides
6.5K views
PDF
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
by
marsee101
63 slides
5.8K views
PDF
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
by
marsee101
27 slides
3.4K views
PDF
FPGAの部屋、slide share、xilinxツールのご紹介
by
marsee101
11 slides
2.8K views
ODP
MPSoCのPLの性能について
by
marsee101
12 slides
3.1K views
PPTX
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
by
marsee101
7 slides
5.8K views
Robot car gabor_filter
by
marsee101
22 slides
1.8K views
Ultra96 pmod expansion board
by
marsee101
27 slides
1.8K views
Camera input from_ultra_96's_slow_expansion_connector
by
marsee101
7 slides
2.7K views
Fpga robot car
by
marsee101
15 slides
3.5K views
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
by
marsee101
19 slides
6.5K views
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
by
marsee101
63 slides
5.8K views
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
by
marsee101
27 slides
3.4K views
FPGAの部屋、slide share、xilinxツールのご紹介
by
marsee101
11 slides
2.8K views
MPSoCのPLの性能について
by
marsee101
12 slides
3.1K views
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
by
marsee101
7 slides
5.8K views
Vivado hlsのシミュレーションとhlsストリーム
1.
Vivado HLSのシミュレーション とHLSストリーム marseeこと小野 雅晃
2.
2 FPGAの部屋(ブログ) ● 2005年からYahooブログで書き始めた(11年以上) ● 最初ー2005年5月15日”Chipscopeについて” ● ブログが流行りでやってみたかった ●
FPGAの開発ノウハウやバグの共有がしたかった ● ログが貼り付けられなかったので8月にFC2に移動 ● 備忘録として使用(補助記憶) ● お仕事に使う前にブログでツールなどを検証 ● 早朝書いています。超朝型 ● コメントなど、お願いします
3.
3 私の机
4.
4 ノートパソコンを1月に購入 ● FPGAマガジンの執 筆のためだけに購入 ● 経費で落とさない と。。。
5.
5 FPGAコンパイル用にパソコンを購入 ● 5年前のパソコンよ りもFPGAのコンパ イル速度が2倍から 3倍速い ● マウスコンピュー ター – i5
4コア 3.2GHz – メモリ 16GB
6.
6 Vivado HLS ● C、C++、System
CからVHDL、Verilog HDLに変換 する ● IPを生成する ● FPGAの種類を指定して、クロック周期を設定する ● 指定したクロック周期で動作するRTLを出力するよう に努力する ● クロック周期を短くすると自動的にパイプライン段数が 増える ● AXI-Master, AXI-Lite Slave, AXI-Streamは自動生成 ● ソフトウェアから使用するためのドライバも自動生成
7.
7 Vivadoのブロックデザイン
8.
8 私の方針 ● もう58歳 – 頭は長く持たない2時間くらい? –
ステートマシンを多用したシーケンスをHDLで書くのは つらい – HDLだと書くまでの設計時間が長かった ● そこでVivado HLSでCで書く – Cで書けばハードに – CシミュレーションもC/RTL協調シミュレーションも ● ほとんどCで書いて、書けないのだけHDLで
9.
9 Vivado HLSで書くのが難しい回路 ● 入力タイミングや出力タイミングが厳しい回路 – A信号入力がアサートされてから何クロック以内にB信号出 力をアサート ● スレッドが必要な場合 –
入力と出力が独立(例:FIFO) – 追加:書けそうだという予想になっていたの忘れていました ● DATAFLOW指示子で書いてみる予定 ● 2つのクロックを使う回路 – <例>ディスプレイ・コントローラ ● 100MHzのAXI4-StreamのデータをSVGA(ピクセルクロック 40MHz)で出力
10.
10 私の方針2 ● 前のスライドの回路はHDLで書く ● 特にアルゴリズム系はVivado
HLSを使ってCで書 く ● なるべくXのIPを使って楽に書きたい – XのIPには汎用性やバージョンごとの継続性の関係で 使いにくいIPがある(AXI VDMA) – そのようなIPはVivado HLSでなるべく書き直したい ● この方針で行く – ブログもほとんどVivado HLSの話題
11.
11 Vivado HLSの利点 ● クロックやタイミングは考慮しない(できない) – 欠点:細かいタイミングは書けない(vld,
ack) – 利点:動作周波数を指定することができる(回路を自動的に変 更) – 書くのに時間がかからない ● シミュレーション – Cシミュレーション ● テストベンチをCで書けると便利 ● 通常のCソフトウェア – C/RTL協調シミュレーション ● CからRTLに合成した部分はRTLシミュレータ ● Cテストベンチから入力データをRTLシミュレータに渡して、結果をCテ ストベンチに戻す
12.
12 Cシミュレーション例(画像フィルタ) 画像ファイル 読み込み 画像フィルタ (ソフトウェア) 画像フィルタ (ソフトウェア) 値を比較 一致 画像書き出し 正常終了 あり得ない Cシミュレーション スタート CからHDLに合成 される関数 不一致 = Cテストベンチ
13.
13 C/RTL協調シミュレーション 画像ファイル 読み込み 画像フィルタ (ソフトウェア) 画像フィルタ (ハードウェア) 値を比較 一致 画像書き出し 正常終了 異常終了 C/RTL協調シミュレー ション・スタート 不一致 RTLシミュレータ Cテストベンチ CからHDLに合成 される関数
14.
14 テストベンチは浮動小数点演算 ハードウェアは固定小数点の例 画像ファイル 読み込み 画像フィルタ (ソフトウェア) 浮動小数点演算 画像フィルタ (ソフトorハード) 固定小数点演算 二乗誤差を比較 <=スレッショルド 画像書き出し 正常終了 異常終了 シミュレーション スタート >スレッショルド C実行 or RTLシミュレータ Cテストベンチ CからHDLに合成 される関数
15.
15 Vivado HLSでのシミュレーション への疑問 ● CやC++で書いてハードになる –
Cだったら引数の値は変化しないけど、ハードウェアで は変化する引数が必要な場合がある – 出力もリターンする前に変化する場合があるよね。。。 ● 出力値が変化する場合はC/RTL協調シミュレー ションで変化を見れば良いか。。。 ● Cテストベンチでシミュレーションの時に複数の値 の引数を与えられるのかな? – 通常は無理だよね。。。
16.
16 関数の入力値が変化する例 ● 出力が変化する場合 – C/RTL協調シミュレーションすれば値の変化は見られる –
Cのテストベンチで検証はできない(一般的には) – PWM出力など ● 入力が変化する場合 – パルスの数を数える回路 – Cのテストベンチでは入力が与えられない ● 1つの引数には1つの値 – とりあえず、HDLのテストベンチを使ってみよう
17.
17 ハード化する関数の引数の方を変更1 ● FPGAの部屋の記事”Vivado HLS
2016.2 で volatile を使用する場合” ● http://marsee101.blog19.fc2.com/blog-entry-3497.ht ml ● ap_start から ap_done の間に関数の入力や出力が変 化する場合は、volatile を付ける(UG902) ● 入力、出力ポートをap_none, registerオプションありに してVivado HLSで合成し、HDLのテストベンチでシミュ レーション ● 引数の型やvolatileでどのように結果が変わるかを観察 した
18.
18 Cソースコード1 #include <ap_int.h> void volatile_test(volatile
ap_uint<16> multi_in0, volatile ap_uint<16> multi_in1, volatile ap_uint<16> *multi_out){ #pragma HLS INTERFACE ap_none register port=multi_out #pragma HLS INTERFACE ap_none register port=multi_in1 #pragma HLS INTERFACE ap_none register port=multi_in0 for(int i=0; i<10; i++){ #pragma HLS PIPELINE II=1 ap_uint<16> temp = (ap_uint<16>)multi_in0 * (ap_uint<16>)multi_in1; *multi_out = temp; } }
19.
19 シミュレーション波形1 ● 入力された最初の値をラッチして乗算し、最後に出 力する
20.
20 1クロックごとに乗算結果を得る方法 ● 1クロックごとに乗算結果を得たい ● その方法は? ●
その方法は? ● もう一丁、その方法とは? ● そんなにじらすな。。。いやな奴。。。 ● 入力もポインタにしましょう。。。
21.
21 Cソースコード2 #include <ap_int.h> void volatile_test(volatile
ap_uint<16> *multi_in0, volatile ap_uint<16> *multi_in1, volatile ap_uint<16> *multi_out){ #pragma HLS INTERFACE ap_none register port=multi_out #pragma HLS INTERFACE ap_none register port=multi_in1 #pragma HLS INTERFACE ap_none register port=multi_in0 for(int i=0; i<10; i++){ #pragma HLS PIPELINE II=1 *multi_out = (ap_uint<16>)*multi_in0 * (ap_uint<16>)*multi_in1; } }
22.
22 シミュレーション波形2 ● 入力がアサートされた3クロック後にデータが出力 されている ● 始まりの3クロック分は出力されない
23.
23 無限に乗算をする回路 ● それじゃ、無限に乗算する回路を作るには? – while(1)で無限ループにすれば良いのでは? –
それでOK – ただしシミュレーション不可能(終わらない)
24.
24 それではVivado HLSで シミュレーション可能にするには ● 今までは、Vivado
HLSでシミュレーションできずに RTLシミュレーションを行ってきた ● Cの関数の引数に値をセットして関数コール ● 途中で引数の値を変えるのは無理・・・ ● でもせっかく便利なんだからCのテストベンチを使っ てシミュレーションしたい。。。 ● その方法は。。。 ● その方法とは。。。 ● 果たして、その方法とは?
25.
25 HLSストリームライブラリ ● UG902では、HLSストリームライブラリを推奨 ● hls::stream<>
ク ラ ス を使用し て イ ンプ リ メ ン ト し た ス ト リ ーム ● C コー ドでは、 hls::stream<> が無限深さの FIFO の よ う に動作
26.
26 HLSストリームライブラリの使用法1 (RGB出力の例) ● hls_stream.hをインクルード – #include
<hls_stream.h> ● テンプレートを定義 – template<int Data> – struct RGB{ – ap_uint<Data> vid_pData; – ap_uint<1> vid_pHSync; – ap_uint<1> vid_pVSync; – ap_uint<1> vid_pVDE; – };
27.
27 HLSストリームライブラリの使用法2 (RGB出力の例) ● 関数の引数にhls::stream<>オブジェクトを書く – void
lap_filter_rgb(ap_uint<1> lap_fil_enable, hls::stream<vid_in<24> >& video_in, hls::stream<RGB<24> >& video_out){ ● テンプレートの書式のHLSストリームが生成される ● HLSストリームに入力したいデータを詰め込んでから関数 を呼べばOK ● つまり、入力値を変えることができる ● ただし、IOレベルのインターフェースはap_noneではだめ ● ap_hs, ap_fifo, axis のどれかを使用する ● http://marsee101.blog19.fc2.com/blog-entry-3235.html
28.
28 HLSストリームの入力ポートの使い方 ● HLSストリームはPmodHB5 のセンサー・フィード バック処理IPに使用している ●
CシミュレーションやC/RTL協調シミュレーションで 検証したかった – typedef ap_uint<1> ap_uint_1; – int motor_monitor(hls::stream<ap_uint_1 >& sa, – hls::stream<ap_uint_1 >& sb, – ap_uint<32> & sa_count, – ap_uint_1 & sb_level, – ap_uint_1 & overflow){
29.
29 SB, SAの波形 「Project 10:
Frequency Measurement Using Input Capture」のFugure 2の一 部を引用 http://www.mrc.uidaho.edu/mrc/people/jff/340/341/labs/lab10/project10.pdf
30.
30 テストベンチ ap_uint_1 saa[DATASIZE] =
{1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1}; ap_uint_1 sba[DATASIZE] = {0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1}; hls::stream<ap_uint_1> sa; hls::stream<ap_uint_1> sb; for (int i=0; i<DATASIZE; i++){ sa << saa[i]; sb << sba[i]; } int ret_val = motor_monitor(sa, sb, sa_count, sb_level); http://marsee101.blog19.fc2.com/blog-entry-3501.html
31.
31 PmodHB5_infモジュール 1に固定
32.
32 HLSストリームが使えるかどうか? for (sa_count=0; sa_count!=0xffffffff;
sa_count++){ // sa=1の間はループ #pragma HLS PIPELINE II=1 sa >> sad; sb >> sbd; if (!sad) break; } if (sa_count == 0xffffffff) // overflow return 1; for (sa_count=1; sa_count!=0xffffffff; sa_count++){ // sa=0の間はループ #pragma HLS PIPELINE II=1 sa >> sad; sb >> sbd; if (sad) break; } if (sa_count == 0xffffffff) // overflow return 1; sb_level = sbd; // saが立ち上がった時のsbの値 for (sa_count++; sa_count!=0xffffffff; sa_count++){ // sa=1の間はループ #pragma HLS PIPELINE II=1 sa >> sad; sb >> sbd; if (!sad) break; } if (sa_count == 0xffffffff) // overflow return 1; ● 3つのループ
33.
33 C/RTL協調シミュレーション波形
34.
34 Cから合成したHDLの出力が 変化する場合 ● 今まで関数コール後に引数(つまり入力が変化す る場合)を見てきた ● 出力が変化する場合もHLSストリームに入れてお いてテストベンチでテストすれば良さそう
35.
35 まとめ ● レジスタ・オプションを付けた入力ポートもポインタ渡し、 参照渡しにすると毎クロック入力データをラッチします ● その場合は、Cのテストベンチではシミュレーションがで きないので、HDLシミュレーションをしましょう ● HDLシミュレーションをしたくない場合には、HLSスト リームを使って、ap_vldに常に1を入れましょう ●
HLSストリームのap_ackは無視します ● その場合は、必ずC/RTL協調シミュレーションで1クロッ クごとに処理できているかを確認しましょう ● 出力が変化する場合もHLSストリームに入れておいてC テストベンチでテストすれば良さそうです