JavaScript isn't enabled in your browser, so this file can't be opened. Enable and reload.
1 of 7
Ruby製制御レジスタ生成ツールRgGenご紹介
R07.08.28
石谷太一
2 of 7
自己紹介
石谷太一(いしたにたいち)
GitHub
taichi-ishitani
X
@taichi600730
所属
PEZY Computing K.K.
https://www.pezy.co.jp
ハードウェアやさん
HPC/AI 用アクセラレータチップ開発に従事
今日は業務で使っているツールを紹介
三浦半島.rb
https://miurahantorb.connpass.com
https://ruby-jp.slack.com/archives/C08F7U7TLQG
三浦半島(神奈川)を中心に活動中
いつかYRPでRuby会議やりたい
マグロ兜焼きを食す会(10/25予定)があります
3 of 7
制御レジスタとは?
コンピュータシステムの構成
機能ブロック(GPU/NIC/USB ctrl/etc.)がCPUに接続されている
CPUが機能ブロックを制御し、所望の機能を実現する
制御レジスタ(Control and Status Register; CSR)の役割
CPUから各機能ブロックを制御するために使う
CPUとのインターフェースを提供
設定値や、自身の動作ステータスを保持
CSRを読み書きすることで、各機能ブロックを制御する
4 of 7
制御レジスタの実装方法と問題点
仕様をExcelに纏めて、手書き実装
書くコード自体は単純で難しくはない
問題点
量が多い
微妙に違いがあり、間違いやすい
アドレス、ビット位置、幅、等
特殊な挙動をするレジスタもある
読み出しでクリア
1書き込みでセット、自動クリア
仕様と実装の乖離
Excelの更新が忘れられがち
回路記述以外も実装する必要がある
Cヘッダー
検証用期待値モデル
仕様を神様にして、各コードを自動生成するのが幸せ
5 of 7
Ruby製制御レジスタ生成ツールRgGen
https://github.com/rggen/rggen
多彩な入力フォーマットと出力ファイル
入力フォーマット
構造化テキスト
YAML/JSON/TOML
スプレッドシート
XLSX/ODS/CSV
Ruby + CSR記述用DSL
詳細は次スライドで
出力ファイル
回路記述
SystemVerilog/Verilog/Veryl/VHDL
デファクトの記述言語をサポート
検証用期待値モデル
Cヘッダーファイル
Markdown
プラグイン機能
使用環境に合わせて、RgGenを拡張できる
Rubyのメタプログラミング向け機能があってこそ
6 of 7
Ruby製制御レジスタ生成ツールRgGen
CSR仕様をRubyで記述できる
他の類似ツールにはない特徴
仕様記述中で、Rubyの構文を使うことが出来る
演算やメソッド呼び出し
制御構文
共通化や大規模化に威力を発揮
7 of 7
使ってみる
サンプルはこちら
https://github.com/rggen/rggen-sample