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
820
RTL talk #17 dalance
dalance
June 24, 2023
Tweet
Share
More Decks by dalance
See All by dalance
RTL talk #18 dalance
dalance
0
380
OSS Silicon EDA #1
dalance
0
240
Make CPU #3 dalance
dalance
1
830
ArkEdge LT #1 dalance
dalance
3
670
Shinjuku.rs #8 dalance
dalance
2
830
RTL talk #16 dalance
dalance
1
1k
Rust LT #3 dalance
dalance
1
1k
Other Decks in Programming
See All in Programming
How to stabilize UI tests using XCTest
akkeylab
0
130
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
0
130
Agentic AI: Evolution oder Revolution
mobilelarson
PRO
0
190
AWS Infrastructure as Code の新機能 2025 総まとめ 〜SA 4人による怒涛のデモ祭り〜
konokenj
10
3.4k
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
420
API Platformを活用したPHPによる本格的なWeb API開発 / api-platform-book-intro
ttskch
1
150
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
230
Go Conference mini in Sendai 2026 : Goに新機能を提案し実装されるまでのフロー徹底解説
yamatoya
0
610
GC言語のWasm化とComponent Modelサポートの実践と課題 - Scalaの場合
tanishiking
0
120
モックわからないマン卒業記 ~振る舞いを起点に見直した、フロントエンドテストにおけるモックの使いどころ~
tasukuwatanabe
3
400
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
500
コーディングルールの鮮度を保ちたい / keep-fresh-go-internal-conventions
handlename
0
220
Featured
See All Featured
Un-Boring Meetings
codingconduct
0
230
So, you think you're a good person
axbom
PRO
2
2k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
980
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
480
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.9k
Mobile First: as difficult as doing things right
swwweet
225
10k
Paper Plane (Part 1)
katiecoart
PRO
0
5.7k
Context Engineering - Making Every Token Count
addyosmani
9
760
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Optimizing for Happiness
mojombo
378
71k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
280
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