Weitere ähnliche Inhalte
Ähnlich wie Verilator勉強会 2021/05/29 (20)
Kürzlich hochgeladen (11)
Verilator勉強会 2021/05/29
- 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
- 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 でも快適に使えます。
- 20. イベントキューの機能(#の代替)
20
initial begin
reset = 1’b1;
#1000
reset = 1’b0;
end
always #5.0 clk = ~clk;
要はこんな記述の代わりに
1000ns後にリセット解除するコードの実行予約が必要だったり
こんな記述の代わりに
5ns後に波形反転コードが呼ばれ、再び5ns後に再予約される仕組み
だったりが必要
⇒ C++ の std::priority_queue とかで楽に作れるよね
- 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