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
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
ryuz88
PPTX, PDF
1,068 views
Verilator勉強会 2021/05/29
Verilator勉強会 発表資料です https://connpass.com/event/212792/
Technology
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Downloaded 22 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
Most read
19
/ 35
20
/ 35
21
/ 35
Most read
22
/ 35
Most read
23
/ 35
24
/ 35
25
/ 35
26
/ 35
27
/ 35
28
/ 35
29
/ 35
30
/ 35
31
/ 35
32
/ 35
33
/ 35
34
/ 35
35
/ 35
More Related Content
PDF
VerilatorとSystemC
by
Mr. Vengineer
PDF
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
by
Takateru Yamagishi
PDF
組み込み関数(intrinsic)によるSIMD入門
by
Norishige Fukushima
PPTX
AVX-512(フォーマット)詳解
by
MITSUNARI Shigeo
PDF
Zynq mp勉強会資料
by
一路 川染
PDF
FPGA+SoC+Linux実践勉強会資料
by
一路 川染
PDF
20230105_TITECH_lecture_ishizaki_public.pdf
by
Kazuaki Ishizaki
PDF
RSA暗号運用でやってはいけない n のこと #ssmjp
by
sonickun
VerilatorとSystemC
by
Mr. Vengineer
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
by
Takateru Yamagishi
組み込み関数(intrinsic)によるSIMD入門
by
Norishige Fukushima
AVX-512(フォーマット)詳解
by
MITSUNARI Shigeo
Zynq mp勉強会資料
by
一路 川染
FPGA+SoC+Linux実践勉強会資料
by
一路 川染
20230105_TITECH_lecture_ishizaki_public.pdf
by
Kazuaki Ishizaki
RSA暗号運用でやってはいけない n のこと #ssmjp
by
sonickun
What's hot
PDF
いまさら聞けない!CUDA高速化入門
by
Fixstars Corporation
PDF
明日使えないすごいビット演算
by
京大 マイコンクラブ
PDF
実践QBVH
by
Shuichi Hayashi
PDF
Intro to SVE 富岳のA64FXを触ってみた
by
MITSUNARI Shigeo
PDF
20分くらいでわかった気分になれるC++20コルーチン
by
yohhoy
PDF
ARM CPUにおけるSIMDを用いた高速計算入門
by
Fixstars Corporation
PDF
先端技術とメディア表現1 #FTMA15
by
Yoichi Ochiai
PDF
プログラムを高速化する話
by
京大 マイコンクラブ
PDF
Union find(素集合データ構造)
by
AtCoder Inc.
PDF
高速な倍精度指数関数expの実装
by
MITSUNARI Shigeo
PDF
KCFの紹介
by
Hitoshi Nishimura
PDF
20111015 勉強会 (PCIe / SR-IOV)
by
Kentaro Ebisawa
PDF
1076: CUDAデバッグ・プロファイリング入門
by
NVIDIA Japan
PDF
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
by
Preferred Networks
PDF
動画認識における代表的なモデル・データセット(メタサーベイ)
by
cvpaper. challenge
PDF
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
by
Fixstars Corporation
PDF
Rustに触れて私のPythonはどう変わったか
by
ShunsukeNakamura17
PPT
レイトレ空間構造入門
by
Toru Matsuoka
PPTX
【DL輪読会】DiffRF: Rendering-guided 3D Radiance Field Diffusion [N. Muller+ CVPR2...
by
Deep Learning JP
PPTX
[DL輪読会]MetaFormer is Actually What You Need for Vision
by
Deep Learning JP
いまさら聞けない!CUDA高速化入門
by
Fixstars Corporation
明日使えないすごいビット演算
by
京大 マイコンクラブ
実践QBVH
by
Shuichi Hayashi
Intro to SVE 富岳のA64FXを触ってみた
by
MITSUNARI Shigeo
20分くらいでわかった気分になれるC++20コルーチン
by
yohhoy
ARM CPUにおけるSIMDを用いた高速計算入門
by
Fixstars Corporation
先端技術とメディア表現1 #FTMA15
by
Yoichi Ochiai
プログラムを高速化する話
by
京大 マイコンクラブ
Union find(素集合データ構造)
by
AtCoder Inc.
高速な倍精度指数関数expの実装
by
MITSUNARI Shigeo
KCFの紹介
by
Hitoshi Nishimura
20111015 勉強会 (PCIe / SR-IOV)
by
Kentaro Ebisawa
1076: CUDAデバッグ・プロファイリング入門
by
NVIDIA Japan
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
by
Preferred Networks
動画認識における代表的なモデル・データセット(メタサーベイ)
by
cvpaper. challenge
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
by
Fixstars Corporation
Rustに触れて私のPythonはどう変わったか
by
ShunsukeNakamura17
レイトレ空間構造入門
by
Toru Matsuoka
【DL輪読会】DiffRF: Rendering-guided 3D Radiance Field Diffusion [N. Muller+ CVPR2...
by
Deep Learning JP
[DL輪読会]MetaFormer is Actually What You Need for Vision
by
Deep Learning JP
More from ryuz88
PPTX
LUT-Network ~本物のリアルタイムコンピューティングを目指して~
by
ryuz88
PPTX
LUT-Network その後の話(2022/05/07)
by
ryuz88
PDF
Fast and Light-weight Binarized Neural Network Implemented in an FPGA using L...
by
ryuz88
PDF
Rust で RTOS を考える
by
ryuz88
PPTX
LUT-Network Revision2 -English version-
by
ryuz88
PPTX
LUT-Network ~Edge環境でリアルタイムAIの可能性を探る~
by
ryuz88
PPTX
FPGA勉強会資料 20210516
by
ryuz88
PPTX
LUT-Network Revision2
by
ryuz88
PPTX
Deep Learning development flow
by
ryuz88
LUT-Network ~本物のリアルタイムコンピューティングを目指して~
by
ryuz88
LUT-Network その後の話(2022/05/07)
by
ryuz88
Fast and Light-weight Binarized Neural Network Implemented in an FPGA using L...
by
ryuz88
Rust で RTOS を考える
by
ryuz88
LUT-Network Revision2 -English version-
by
ryuz88
LUT-Network ~Edge環境でリアルタイムAIの可能性を探る~
by
ryuz88
FPGA勉強会資料 20210516
by
ryuz88
LUT-Network Revision2
by
ryuz88
Deep Learning development flow
by
ryuz88
Verilator勉強会 2021/05/29
1.
Verilatorやってみた! ~ OpenCVでテストベンチを書いてみた ~ 2021/05/29
Verilator勉強会 Ryuji Fuchikami @Ryuz88
2.
とりあえず 自己紹介させてください 2
3.
自己紹介 • 平日は某企業で働くサラリーマン • 1976年生まれ
全国転々としつつも結局、福岡が一番長く、今も福岡在住 • 1998~ μITRON仕様 Real-Time OS HOS-80 をリリース • 現在 HOS-V4a にて各種組み込みCPUに対応 (組み込みRustも実験中) (ARM,H8,SH,MIPS,x86,Z80,AM,V850,MicroBlaze, etc.) • 2008~ FPGA用ソフトコアSoC環境 Jelly をリリース(MIPS互換コア) • 現在 Zynq 上にて Real-Time GPU や LUT-Network の実験など 各種 Real-Time コア開発の実験場と化す • 2018~ LUT-Network用の環境 BinaryBrain を開発中 • 微分可能回路記述にてFPGA回路をそのまんま深層学習 • リアルタイムコンピューティング(当然Edgeコンピュータ)を探求中 • 電脳メガネ計画(いつかやりたい電脳コイルの世界) • Real-Time 画像I/O (カメラ[IMX219] & OLED 1kfps駆動) • Real-Time GPU開発 (frame buffer無し、ゼロ遅延描画) • Real-Time DNN開発 (超低遅延DNN認識) 3
4.
それでは Verilator の話 4
5.
使い始めて一か月程の身なので... 中身はブラックボックスのまま 使ってみた感想とか やってみた体験中心にお話しします 5
6.
巷で噂のVerilator 6
7.
何が凄いのか早速やってみた • 環境 • Intel
Core i7-4770@3.4GHz 32GB/GT1660SUPPER/GT1030 • Ubuntu 18.04/20.04 (Windows 10 Pro WSL2) • Verilator v4.200 ← 必ず新しいものを入れよう! • VS code • Xming + GTKwave 7 WLSのおかげで Windows でも快適に使えます。
8.
まだ使ってないVerilogな人に伝えたい事 • 思ったより簡単に導入できる • 思った以上に開発効率が上がる •
新しい使い方について、とても潜在力を 有している 8
9.
Verilatorすごい! • 数時間かかっていた画像処理シミュレーションが数分で終わった • VCD形式よりはるかに小さいFST形式 •
OpenCV はじめ C++ の資産がテストベンチ記述に使える • シミュレーションの進行や制御がC++で自由に弄れる • 体重が 2㎏減った 9 ※ 上記は個人の感想です。効果は個人差がある場合があります。
10.
まずはインストール 10 ドキュメント通りやれば 難なくインストール完了 https://verilator.org/guide/latest/install.html
11.
testbench(C++) ほぼVerilogのまま既存テストベンチを動かしてみる 11 testbench(Verilog) 画像出力 モデル ガウシアン フィルタ for文 クロック&リセット AXI4 Stream 画像保存 モデル $fscanf()で頑張って読む Mandrill.pgm img_0001.pgm $fdisplay()で頑張って書く AXI4
Stream 最小構成
12.
クロックとリセット準備しただけなのに 12 いろいろ制約心配していたら、いともあっさり結果でました こいつ・・・動くぞ!
13.
ちかっぱ速かとです 13 ツール 速度 Veritak 2分15秒 iverilog
4分7秒 xsim 2分17秒 Verilator 10秒 とある512x512画像でテスト さらに波形ダンプ止めたら瞬殺(1秒以下)でした
14.
ここまでに嵌った初心者の穴紹介(1) • 横着せずにクロックはC++まで引き出そう • 最初
–public つけて、そのまま全部外から弄ろうとしたら嵌りました • Warning対応をどこまでやるかは判断が必要 • Warningといいつつコンパイル止まるので、-Wno-XXX • 非常に強力な文法チェックなので、新規に書くならちゃんと対応したい (古い大量のコード抱えてると全部対応はツライ) 14
15.
で、本格的に使い方検討開始 15 C++でモデル書いたら OpenCVとか使えるんじゃ?
16.
普通のシミュレータとの違い # が使えない (@は使える) つまり単独ではイベントが起こらないのでシミュレーションが進行しない 16 シミュレーションの進行はユーザー側のC++に任されている eval()呼ばないと進行しない、信号入れないと@イベントも起きない C++テストベンチで時間も空間(信号)も自由自在 え?
何やってもいいんですか?
17.
はじめにやったこと 17 @Vengineerさんの薄い本を読む なんかわかった気になる C++が主導権を握ったシミュレーションの世界へGO!
18.
我々はシミュレータに時空間を支配されていた 18 Verilatorで支配者になろう!
19.
何が必要か? Verilog の文法に即した信号のハンドシェークが C++ ⇔
Verilog間で必要 19 • イベントキューの機能 • ノンブロッキング代入の機能 具体的にはC++側の
20.
イベントキューの機能(#の代替) 20 initial begin reset =
1’b1; #1000 reset = 1’b0; end always #5.0 clk = ~clk; 要はこんな記述の代わりに 1000ns後にリセット解除するコードの実行予約が必要だったり こんな記述の代わりに 5ns後に波形反転コードが呼ばれ、再び5ns後に再予約される仕組み だったりが必要 ⇒ C++ の std::priority_queue とかで楽に作れるよね
21.
C++でのノンブロッキング代入の対応 21 そもそもノンブロッキング代入のおさらい • 参照する変数はイベント前の値 • 代入は即時実施されず、イベント完了後に反映される イベント処理時に
eval() 呼ぶ前と呼んだ後の それぞれで変数アクセスタイミングがC++に必要
22.
その他のケア 22 initial な処理と、 final
な処理が必要だよね 細かい挙動は@Vengineerさんの薄い本で把握!
23.
結局こんな感じの基底クラス実装 23 必要な処理だけoverrideしてモデルを書けるフレームワークを考えてみた • 前処理/後処理 • 自分が動くべきタイミングかどうかの監視 •
イベント前の値取得と、イベント後の反映 • 怪しいUIを追加する為の別スレッド
24.
作ってみた自作クラスはこんな感じ 24 Manager イベント キュー Reset Node Clock Node ImageLoad Node (OpenCV利用) ImageDump Node (OpenCV利用) Verilator Node Verilator 生成の モジュール 必要に応じて値を参照 (テンプレートを活用して 型異存なく接続) C++で書いたモデル
25.
実行してみる(bmp/png/jpgが使える!) 25
26.
画像読み込みモデル 26 一応ブランキングとかもいれて、ビデオ信号っぽい波形も作れるように してみた。
27.
AXI4-Stream のテスト用に乱数ウェイトを入れてみる 27 valid/ready のハンドシェークは乱数入れるだけで初期のバグ出しに効果的 verilogでも困らないが、C++だとstd::random
とかが充実している
28.
調子にのってUIつけてみた 28 OpenCVで回転などの画像の前処理も楽々実装。 シミュレーション表示するスレッドとは別にのぞき見表示するスレッドを準備 ESCキーを押せば途中でも finish() 実行して中断するように実装
29.
波形ダンプとカバレッジOFFしてみた 29 とても速いです。 でも –threads オプション付けたら逆に遅くなったりもしたのでまだまだこれから
30.
ここまでに嵌った初心者の穴紹介(2) • Verilator 任せだとC++のオプションがうまく操作できない •
cmake は新しいものを使おう • 古い cmake 使っていたら、-std=++17 つけてるのに、-std=gnu++11 も一緒 について解析に手間取りました。 • cmake新しくしたら一発解決でした。 30
31.
おまけ 31 • コンパイルとても長い (多分私のVerilogコードも原因) • 実行が超速でびっくり •
大量のデータの実験にはよさそう (動画使った時系列処理の確認とか) 【LUT-Network(拙作のFPGA DNN)やってみた】 【非同期クロックもやってみた】 • 複数クロックを作ってみたが あっさり動いてくれた
32.
まとめ • 導入は思ったより簡単 • 普通の同期回路ならクロックだけ外に引っ張り出したらほとんどのVerilog記述のテス トベンチはほぼそのまま使えた •
SystemVerilogも基本的なところは使えそう?(使い込んでないので自信なし) • 爆速なのでシミュレーション時間が開発効率に直結する分野に人に超おすすめ • Verilator や cmake などはなるべく最新を入れましょう • WSL2 + VS code 最高! Ubuntu20.04 オススメ • 使い方の応用が非常に奥深い • OpenCV の例は一つの例に過ぎない (ROSとかUnityとか繋ぐと面白いかも) • C++のいいところとVerilogのいいところ混ぜてたテストベンチが簡単に書ける • 速いしいろいろなものと繋げてシステムシミュレーションできるかも (カメラとかの実デバイスとか、FPGAの実体とか) 32
33.
参考にさせて頂いた情報 • @Vengineer様 「Verilator
の薄い本」 • 「Verilatorの中を調べる」No.1、例題解析編] • https://booth.pm/ja/items/2917623 • 「Verilatorの中を調べる」No.2、テストデータ解析編] • https://vengineer.booth.pm/items/2927828 • 「みねっちょのマイコン関係ブログ」様 • WSL で 無償の Verilog な サイクルベースシミュレータ Verilator を使う • https://minettyo.com/entry/logicdesign_wsl_verilator • 「FPGA開発日記」 様 • Verilatorの使い方(1. Verilatorの考え方と基本的なシミュレーション実行方法) • https://msyksphinz.hatenablog.com/entry/2020/05/06/040000 • Verilatorの使い方(2. 波形ダンプの方法) • https://msyksphinz.hatenablog.com/entry/2020/05/08/040000 • Verilatorの使い方(3. Lintとして活用する) • https://msyksphinz.hatenablog.com/entry/2020/05/10/000000 33
34.
発表者アクセス先 • 渕上 竜司
(Ryuji Fuchikami) • e-mail : ryuji.fuchikami@nifty.com • Web-Site : http://ryuz.my.coocan.jp/ • Blog. : http://ryuz.txt-nifty.com/ https://ryuz.hatenablog.com/ • GitHub : https://github.com/ryuz/ • Twitter : https://twitter.com/Ryuz88 • Facebook : https://www.facebook.com/ryuji.fuchikami • YouTube : https://www.youtube.com/user/nekoneko1024 34 本発表に関連するブログ記事は下記の2件です • Verilatorやってみた https://ryuz.hatenablog.com/entry/2021/05/01/135821 • C++の動作モデル書いてみた(主にVerilator用) https://ryuz.hatenablog.com/entry/2021/05/02/104700
35.
ご清聴ありがとうございました 35
Download