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
620
RTL talk #17 dalance
dalance
June 24, 2023
Tweet
Share
More Decks by dalance
See All by dalance
OSS Silicon EDA #1
dalance
0
170
Make CPU #3 dalance
dalance
1
620
ArkEdge LT #1 dalance
dalance
3
580
Shinjuku.rs #8 dalance
dalance
2
720
RTL talk #16 dalance
dalance
1
920
Rust LT #3 dalance
dalance
1
890
Other Decks in Programming
See All in Programming
責務を分離するための例外設計 - PHPカンファレンス 2024
kajitack
9
2.4k
良いユニットテストを書こう
mototakatsu
11
3.6k
React 19でお手軽にCSS-in-JSを自作する
yukukotani
5
560
watsonx.ai Dojo #6 継続的なAIアプリ開発と展開
oniak3ibm
PRO
0
170
Оптимизируем производительность блока Казначейство
lamodatech
0
950
QA環境で誰でも自由自在に現在時刻を操って検証できるようにした話
kalibora
1
140
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
300
PHPで学ぶプログラミングの教訓 / Lessons in Programming Learned through PHP
nrslib
4
1.1k
선언형 UI에서의 상태관리
l2hyunwoo
0
270
為你自己學 Python
eddie
0
520
chibiccをCILに移植した結果 (NGK2025S版)
kekyo
PRO
0
130
快速入門可觀測性
blueswen
0
500
Featured
See All Featured
Navigating Team Friction
lara
183
15k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Code Review Best Practice
trishagee
65
17k
Designing for humans not robots
tammielis
250
25k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
KATA
mclloyd
29
14k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.2k
Faster Mobile Websites
deanohume
305
30k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.7k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
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