Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RTL talk #17 dalance
Search
dalance
June 24, 2023
Programming
0
630
RTL talk #17 dalance
dalance
June 24, 2023
Tweet
Share
More Decks by dalance
See All by dalance
OSS Silicon EDA #1
dalance
0
180
Make CPU #3 dalance
dalance
1
640
ArkEdge LT #1 dalance
dalance
3
590
Shinjuku.rs #8 dalance
dalance
2
730
RTL talk #16 dalance
dalance
1
940
Rust LT #3 dalance
dalance
1
900
Other Decks in Programming
See All in Programming
CI改善もDatadogとともに
taumu
0
200
責務と認知負荷を整える! 抽象レベルを意識した関心の分離
yahiru
8
1.3k
苦しいTiDBへの移行を乗り越えて快適な運用を目指す
leveragestech
0
1k
Multi Step Form, Decentralized Autonomous Organization
pumpkiinbell
1
860
クリーンアーキテクチャから見る依存の向きの大切さ
shimabox
5
1k
2025.2.14_Developers Summit 2025_登壇資料
0101unite
0
190
sappoRo.R #12 初心者セッション
kosugitti
0
280
なぜイベント駆動が必要なのか - CQRS/ESで解く複雑系システムの課題 -
j5ik2o
14
4.6k
コードを読んで理解するko build
bells17
1
110
PHPのバージョンアップ時にも役立ったAST
matsuo_atsushi
0
230
PEPCは何を変えようとしていたのか
ken7253
2
220
Rails アプリ地図考 Flush Cut
makicamel
1
130
Featured
See All Featured
Designing for humans not robots
tammielis
250
25k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
Designing for Performance
lara
604
68k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
Building Applications with DynamoDB
mza
93
6.2k
How to train your dragon (web standard)
notwaldorf
91
5.9k
Why Our Code Smells
bkeepers
PRO
336
57k
KATA
mclloyd
29
14k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
Writing Fast Ruby
sferik
628
61k
GraphQLとの向き合い方2022年版
quramy
44
14k
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