Slide 1

Slide 1 text

RustでLSI開発 PEZY Computing 初田 直也

Slide 2

Slide 2 text

自己紹介  名前:初田 直也  dalance @ GitHub  所属:PEZY Computing  スーパーコンピュータ向けのプロセッサLSIの設計  LSI設計のサポートにRustを使っている

Slide 3

Slide 3 text

Rustの使いどころ  SystemVerilog周りのツール  SystemVerilog:ハードウェア記述言語の1つ  ツールサポートが弱い → 自作するしかない  プロセッサの命令セット周りの自動化ツール  独自プロセッサなのでコンパイラからドキュメントまで自作する必要あり  ハードウェアの検証サポート

Slide 4

Slide 4 text

SystemVerilog周りのツール  sv-parser/svlint/svls  RustでSystemVerilogのパーサを作成  作成したパーサを使ってlinterとlanguage serverを作成  社内リポジトリでのCIチェックなどで使用中  OSSとしてGitHubで公開  https://github.com/dalance/sv-parser  https://github.com/dalance/svlint  https://github.com/dalance/svls  Veryl  SystemVerilogを改善するために新しい言語を作る試み  次のプロジェクトで実戦投入したい  https://github.com/dalance/veryl

Slide 5

Slide 5 text

命令セット周りのツール  scx_isa  TOMLで命令セットを定義して、いろいろなものを自動生成するツール  生成できるもの  命令をデコードするSystemVerilogのソースコード  命令をデコードするRustのソースコード  RestructuredText形式のドキュメント  scx_random  ↑のTOMLを読み込んで、ランダム検証用のアセンブリを生成するツール  2021年に夏季インターン(2名 x 2か月)で作ってもらった

Slide 6

Slide 6 text

検証サポート  命令セットシミュレータ  プロセッサの挙動をソフトで書いて、SystemVerilog記述との一致を確認する  ハードウェア設計中にソフトウェアエンジニアがプロセッサの挙動を確認する  scx_forest_rs  メニーコアプロセッサ(~4096コア)の挙動をマルチスレッドで高速に実行する  昔はC++実装だったがマルチスレッドがなかなか安定しなかったのでRustに移行