Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
RTL talk #17 dalance
Search
dalance
June 24, 2023
Programming
890
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RTL talk #17 dalance
dalance
June 24, 2023
More Decks by dalance
See All by dalance
RTL talk #18 dalance
dalance
0
460
OSS Silicon EDA #1
dalance
0
300
Make CPU #3 dalance
dalance
1
920
ArkEdge LT #1 dalance
dalance
3
700
Shinjuku.rs #8 dalance
dalance
2
870
RTL talk #16 dalance
dalance
1
1.1k
Rust LT #3 dalance
dalance
1
1k
Other Decks in Programming
See All in Programming
AWSに止められる覚悟してますか?
morizo_1984
2
540
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
370
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
910
APNsからLive Activityを開始する話
yumnumm
0
170
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
590
contenteditable と日本語入力に向き合う
colorful12
0
200
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
350
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
190
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
170
最近”作らせてる” ローカルAIアプリの話
akit37
0
470
Agents on Rails - Rails at Scale 2026
irinanazarova
0
560
Featured
See All Featured
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
740
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
The Invisible Side of Design
smashingmag
301
52k
Designing Experiences People Love
moore
143
24k
Being A Developer After 40
akosma
92
590k
Claude Code のすすめ
schroneko
67
230k
4 Signs Your Business is Dying
shpigford
187
23k
Evolving SEO for Evolving Search Engines
ryanjones
0
330
Discover your Explorer Soul
emna__ayadi
2
1.3k
Transcript
Veryl 新しいハードウェア記述言語 PEZY Computing 初田 直也
自己紹介 名前:初田 直也 dalance @ GitHub 所属:PEZY
Computing スーパーコンピュータ向けのプロセッサLSIの設計 SystemVerilogを全面的に使用中 OSS活動 SystemVerilog向けツール sv-parser/svlint/svls Google Open Source Peer Bonus貰った SystemVerilog Test Suiteへの貢献に対して
本題の前に svlintの宣伝 https://github.com/dalance/svlint SystemVerilog用のlinter もともとは社内CIで回すためのlinterとして開発
語る会(16)で紹介したSystemVerilogパーサの成果物 最近は某欧州のチップベンダーの中の人が積極的に開発中 ドキュメントなど大量に書いていただいた language serverでエディタ編集中にリアルタイムでチェックできる https://github.com/dalance/svls
Veryl SystemVerilogの代替となる新しいHDLを開発中 https://github.com/dalance/veryl
なぜ新しくHDLを作るのか? SystemVerilogへの不満 既存のAlt-HDLへの不満
SystemVerilogへの不満 構文が複雑であいまい SystemVerilogパーサ実装がとても大変 sv-parser では45000行くらい書いた 意味解析までしないと確定しない部分がある
有償のEDAツールですら完全な実装はできていない 各ツールのバグ回避のための記述を探索する羽目に 言語機能の不足 それほど困ってはいない 「あると便利なのに」程度のものはいくつか parameterized function
Alt-HDLへの不満 既存のプログラミング言語の内部DSL Chisel(Scala)やMyHDL(Python)など HDLとして自然な構文にできない ビット幅指定の数値リテラル
信号の方向 Verilogへのトランスパイラ 高度なデータ構造がフラットな変数群に分解されてしまう 生成されたVerilogの可読性が悪い RTL-Simでの波形デバッグが煩雑 元ソースとVerilogソースの対応付けが困難 ECOに伴う等価性検証などのフローに対応できない
新言語を作ろう いい感じのパーサジェネレータを見つけたので実装してみることに 「Parolというパーサ生成ツールがすごい」 https://zenn.dev/ryo33/articles/26f87f776b4bfa HDL Advent
Calendar 2022の記事でネタ出し 「新しいHDL(ハードウェア記述言語)を考える」 https://zenn.dev/dalance/articles/17017b7b95b2ca 2022年末実装開始 1週間ほどでプロトタイプ実装 Rustエコシステムの恩恵 年明けからGitHub上で構文の検討など @taichi-ishitaniさん、@ryuzさんと 最近は仕事が忙しいのであまり触れていない…
新言語の方針(1/3) シンプルな構文 LL(k)で構文解析可能にする k個(現時点で3)のトークン先読みで構文確定 パーサジェネレータの制約だが、シンプルさを保つために結果的には良かった
プリプロセッサマクロなし マクロはエディタの表示と実際の構文木が一致しなくなる language serverの実装が困難に SystemVerilog/Rustベースの構文 キーワードなどはSystemVerilogをベースにする 構文はRustなど最近の言語での知見を活かす
新言語の方針(2/3) SystemVerilogと(ほぼ)同じセマンティクス module/interface/packageなど意味的には同じ 単に構文を変えただけ 以下のようなことができるようになる
可読性の高いSystemVerilogを生成する 既存のSystemVerilogソースコードとの相互運用 将来的には一部拡張するかも
新言語の方針(3/3) 言語組み込みの開発ツール linter formatter SystemVerilogで実装できなかったものの1つ
特に縦方向のalignをうまくやりたい HDLの並列性は縦方向に現れることが多い気がする language server 補完や定義ジャンプなど高機能なもの パッケージマネージャ ドキュメント自動生成
現在の状況 出来ているもの 基本的な構文 とりあえず合成可能記述はだいたいカバーできている linter/formatter/language server
パッケージマネージャ gitからの依存関係解決 SemVerによるバージョン解決 ドキュメント自動生成 言語リファレンス(一部) 検討中のもの 組み込みテスト (プリプロセッサでない)マクロ Generics
構文の紹介 https://dalance.github.io/veryl/book