SlideShare une entreprise Scribd logo
1  sur  13
SP13 RgGen ご紹介 石谷太一
RgGen ご紹介
石谷太一
(PEZY Computing K.K.)
1
SP13 RgGen ご紹介 石谷太一
注意
● RgGen および GitHub 上で公開している成果物は、石谷個人が開発している
ものです
● PEZY の社員としての登壇ですが、問い合わせなどは石谷までお願いします
2
SP13 RgGen ご紹介 石谷太一
本日の内容
1. 自己紹介
2. RgGen ご紹介
3. 使ってみる (デモ)
4. 使用例紹介
3
SP13 RgGen ご紹介 石谷太一
自己紹介
● 石谷太一(いしたにたいち)
○ GitHub https://github.com/taichi-ishitani
■ RgGen: 本日紹介します
■ TNoC: SystemVerilog で実装した合成可能な NoC router
■ tvip-axi: UVM ベースの AMBA AXI VIP
■ tue: UVM の拡張パッケージ
○ Twitter @taichi600730
● SystemVerilog/Ruby 歴 13 年ちょっと
○ SV で RTL 書いたり、UVM ベースの検証環境のおもりをしたり
● 所属
○ PEZY Computing K.K.
■ PEZY-SC3 がローンチしました
■ 新規チップを開発中です
○ 求人あります
■ https://www.pezy.co.jp/career/
4
SP13 RgGen ご紹介 石谷太一
RgGen ご紹介
● レジスタマップから、コンフィグレジスタ (CSR) 関連のファイルを自動生成
するツールです
○ https://github.com/rggen/rggen
● レジスタマップは人間様が読めるフォーマットです
○ Ruby
■ レジスタマップ記述用の DSL を使用
○ 各種構造化テキスト (YAML/JSON/TOML)
○ 各種スプレッドシート (xlsx/xls/ods/csv/tsv)
○ SiFive DUH
○ SystemRDL はいずれ・・・
● 生成物
○ SystemVerilog/Verilog/VHDL RTL
○ UVM RAL model
○ Markdown
5
SP13 RgGen ご紹介 石谷太一
RgGen ご紹介
● 対応する型は(たぶん)多いです
○ 配列状/外部アクセス/間接参照レジスタ
○ ビットフィールド 33 種類
■ UVM RAL model で定義されている型は網羅しています
○ レジスタファイルも対応
● 標準的なホストプロトコルに対応
○ AMBA AXI4 Lite/APB
● プラグインによる機能拡張にも対応
○ 特殊なビットフィールド型の追加
○ 独自ホストプロトコルの対応
● EDA ツールの対応
○ シミュレータ: VCS/Xcelium/Verilator/Icarus Verilog
○ 論理合成: Design Compiler/Vivado/Quartus
● RTL/UVM RAL model はバックドアアクセスに対応
○ バスアクセスなしで、CSR の読み書きができます
○ シミュレーションの時間短縮などに使えます
6
SP13 RgGen ご紹介 石谷太一
使ってみる
● 紹介する入力/生成物のサンプルは、以下のリポジトリから取得できます
○ https://github.com/rggen/rggen-sample
● 生成物を組み込んだサンプルのテストベンチもあります
○ https://github.com/rggen/rggen-sample-testbench
○ 生成 RTL と RAL model を組み込んで、UVM で実装されている CSR のサニティチェック用
テストシーケンスを実行します
7
SP13 RgGen ご紹介 石谷太一
使ってみる - RgGen のインストール
● 前準備
○ Ruby (2.5 以上) と開発用パッケージをインストールしておきます
○ apt-get install ruby/apt-get install ruby-dev とか
● インストール
○ Ruby のパッケージ管理ツール (gem) を使ってインストールします
■ $ gem install rggen
■ 依存する他のライブラリも一緒にインストールされます
○ 追加のプラグインもインストールします
■ $ gem install rggen-verilog
$ gem install rggen-vhdl
$ gem install rggen-duh
8
SP13 RgGen ご紹介 石谷太一
使ってみる - 入力ファイル準備
● コンフィグレーションファイル
○ アドレス幅、データ幅、プロトコル等を指定します
○ YAML/JSON/TOML で記述します
○ https://github.com/rggen/rggen-sample/blob/master/config.yml
● レジスタマップ
○ CSR の仕様を記述します
○ register block/register file/register/bit field の4階層
■ 詳しくは Wiki を参照ください
https://github.com/rggen/rggen/wiki/Register-Map-Specifications
○ https://github.com/rggen/rggen-sample/blob/master/block_0.yml
https://github.com/rggen/rggen-sample/blob/master/block_1.yml
9
SP13 RgGen ご紹介 石谷太一
使ってみる - 実行!
● 実行コマンド rggen に、コンフィグレーションファイルとレジスタマップを
食わせるだけです
● $ rggen --plugin rggen-verilog --plugin rggen-vhdl -o out -c config.yml
block_0.yml block_1.yml
○ --plugin rggen-verilog/--plugin rggen-vhdl
■ Verilog/VHDL 出力プラグインを有効にします
○ -o out
■ 出力ディレクトリを指定します
○ -c config.yml
■ コンフィグレーションファイルのパスをしています
○ 生成物は “out” ディレクトリに書き出されます
● 実行時に、レジスタマップ上のエラーチェックが行われます
○ 識別子の唯一性、アドレスやビットフィールドの重複など
10
SP13 RgGen ご紹介 石谷太一
使ってみる - 生成物の組み込み
● RTL/UVM RAL model は、共通モジュール/クラス を使って構成されています
○ 以下のリポジトリから取得しておきます
■ https://github.com/rggen/rggen-sv-rtl.git
■ https://github.com/rggen/rggen-verilog-rtl.git
■ https://github.com/rggen/rggen-vhdl-rtl.git
■ https://github.com/rggen/rggen-sv-ral.git
○ 生成物と一緒に共通モジュール/クラスもEDAツールに入力します
11
SP13 RgGen ご紹介 石谷太一
使用例紹介 (PEZY での使用例)
● 採用前
○ 各モジュール担当者が CSR モジュールを各々で実装していた
■ アドレスのデコード方法などが統一されていなかった
■ あるレジスタがどのような動作をするかは、RTL を見なければならなかった
○ RTL とドキュメントが差分があった
● 現在
○ 全 CSR モジュールを RgGen で生成
■ レジスタマップをは YAML で記述
● Git で管理していて、変更履歴を追いやすくて良いです
■ レジスタ仕様、実装を標準化できた
○ 社内用プラグインを作成
■ 社内用バスプロトコル、特殊ビットフィールドに対応
○ ドキュメントを自動生成
■ Markdown の生成とドキュメント用サーバーへのアップロードを、更新毎に自動実行
● 仕様、RTL、ドキュメントの乖離を防止
12
SP13 RgGen ご紹介 石谷太一
おわり
13

Contenu connexe

Tendances

組み込みLinuxでのGolangのススメ
組み込みLinuxでのGolangのススメ組み込みLinuxでのGolangのススメ
組み込みLinuxでのGolangのススメTetsuyuki Kobayashi
 
ニコニコ生放送のタイムシフトを無料で保存する方法
ニコニコ生放送のタイムシフトを無料で保存する方法ニコニコ生放送のタイムシフトを無料で保存する方法
ニコニコ生放送のタイムシフトを無料で保存する方法tani-page
 
ニコニコ生放送のタイムシフトを無料で保存する方法
ニコニコ生放送のタイムシフトを無料で保存する方法ニコニコ生放送のタイムシフトを無料で保存する方法
ニコニコ生放送のタイムシフトを無料で保存する方法tani-page
 
サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会slankdev
 
30days Album の裏側 + 表側
30days Album の裏側 + 表側30days Album の裏側 + 表側
30days Album の裏側 + 表側Kensuke Nagae
 
久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみたShohei Tai
 
Trac 0.12 と今後の動向および Trac への貢献 - tanabata.trac 2010-07-07
Trac 0.12 と今後の動向および Trac への貢献 - tanabata.trac 2010-07-07Trac 0.12 と今後の動向および Trac への貢献 - tanabata.trac 2010-07-07
Trac 0.12 と今後の動向および Trac への貢献 - tanabata.trac 2010-07-07Jun Omae
 
Pyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LTPyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LTdrillan
 
Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)Uehara Junji
 
分散バージョン管理システムって何なん 20101218
分散バージョン管理システムって何なん 20101218分散バージョン管理システムって何なん 20101218
分散バージョン管理システムって何なん 20101218Takashi Okamoto
 
Seurity Camp Award 2016
Seurity Camp Award 2016 Seurity Camp Award 2016
Seurity Camp Award 2016 slankdev
 
git-svnつかってみる?
git-svnつかってみる?git-svnつかってみる?
git-svnつかってみる?riskrisk
 
Markup Template Engine introduced Groovy 2.3
Markup Template Engine introduced Groovy 2.3Markup Template Engine introduced Groovy 2.3
Markup Template Engine introduced Groovy 2.3Uehara Junji
 
"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another ApproachDaisuke Miyakawa
 
enterprise grails challenge, 2013 Summer
enterprise grails challenge, 2013 Summerenterprise grails challenge, 2013 Summer
enterprise grails challenge, 2013 SummerUehara Junji
 
OSC2016 Tokyo/Spring セミナー資料
OSC2016 Tokyo/Spring セミナー資料OSC2016 Tokyo/Spring セミナー資料
OSC2016 Tokyo/Spring セミナー資料slankdev
 

Tendances (20)

組み込みLinuxでのGolangのススメ
組み込みLinuxでのGolangのススメ組み込みLinuxでのGolangのススメ
組み込みLinuxでのGolangのススメ
 
ニコニコ生放送のタイムシフトを無料で保存する方法
ニコニコ生放送のタイムシフトを無料で保存する方法ニコニコ生放送のタイムシフトを無料で保存する方法
ニコニコ生放送のタイムシフトを無料で保存する方法
 
ニコニコ生放送のタイムシフトを無料で保存する方法
ニコニコ生放送のタイムシフトを無料で保存する方法ニコニコ生放送のタイムシフトを無料で保存する方法
ニコニコ生放送のタイムシフトを無料で保存する方法
 
サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会
 
30days Album の裏側 + 表側
30days Album の裏側 + 表側30days Album の裏側 + 表側
30days Album の裏側 + 表側
 
MicroPython + ESP32
MicroPython + ESP32MicroPython + ESP32
MicroPython + ESP32
 
久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた
 
Fpgax20170924
Fpgax20170924Fpgax20170924
Fpgax20170924
 
Trac 0.12 と今後の動向および Trac への貢献 - tanabata.trac 2010-07-07
Trac 0.12 と今後の動向および Trac への貢献 - tanabata.trac 2010-07-07Trac 0.12 と今後の動向および Trac への貢献 - tanabata.trac 2010-07-07
Trac 0.12 と今後の動向および Trac への貢献 - tanabata.trac 2010-07-07
 
Pyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LTPyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LT
 
Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)
 
分散バージョン管理システムって何なん 20101218
分散バージョン管理システムって何なん 20101218分散バージョン管理システムって何なん 20101218
分散バージョン管理システムって何なん 20101218
 
Seurity Camp Award 2016
Seurity Camp Award 2016 Seurity Camp Award 2016
Seurity Camp Award 2016
 
git-svnつかってみる?
git-svnつかってみる?git-svnつかってみる?
git-svnつかってみる?
 
Markup Template Engine introduced Groovy 2.3
Markup Template Engine introduced Groovy 2.3Markup Template Engine introduced Groovy 2.3
Markup Template Engine introduced Groovy 2.3
 
python.jpの使い方
python.jpの使い方python.jpの使い方
python.jpの使い方
 
"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach
 
enterprise grails challenge, 2013 Summer
enterprise grails challenge, 2013 Summerenterprise grails challenge, 2013 Summer
enterprise grails challenge, 2013 Summer
 
Pynq祭り資料
Pynq祭り資料Pynq祭り資料
Pynq祭り資料
 
OSC2016 Tokyo/Spring セミナー資料
OSC2016 Tokyo/Spring セミナー資料OSC2016 Tokyo/Spring セミナー資料
OSC2016 Tokyo/Spring セミナー資料
 

Similaire à RgGen ご紹介

Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む2bo 2bo
 
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo LinuxについてTakuto Matsuu
 
OCaml でデータ分析
OCaml でデータ分析OCaml でデータ分析
OCaml でデータ分析Akinori Abe
 
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイPlaybay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイKazuhiro Hara
 
Rocroにおけるgcp活用事例
Rocroにおけるgcp活用事例Rocroにおけるgcp活用事例
Rocroにおけるgcp活用事例Kishin Yagami
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門Tomoya Kawanishi
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
Polidog に RPM の作り方を教える
Polidog に RPM の作り方を教えるPolidog に RPM の作り方を教える
Polidog に RPM の作り方を教えるftnk
 
PyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッションPyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッションTetsuya Morimoto
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識Katsuhiro Morishita
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!Yohei Fushii
 
React+TypeScriptもいいぞ
React+TypeScriptもいいぞReact+TypeScriptもいいぞ
React+TypeScriptもいいぞMitsuru Ogawa
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2tamtam180
 
Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)tamtam180
 
自分的pkgsrcの課題
自分的pkgsrcの課題自分的pkgsrcの課題
自分的pkgsrcの課題Ryo ONODERA
 
20090124shibuya Trac
20090124shibuya Trac20090124shibuya Trac
20090124shibuya TracKazuya Hirobe
 

Similaire à RgGen ご紹介 (20)

Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて
 
OCaml でデータ分析
OCaml でデータ分析OCaml でデータ分析
OCaml でデータ分析
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイPlaybay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイ
 
Rocroにおけるgcp活用事例
Rocroにおけるgcp活用事例Rocroにおけるgcp活用事例
Rocroにおけるgcp活用事例
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Polidog に RPM の作り方を教える
Polidog に RPM の作り方を教えるPolidog に RPM の作り方を教える
Polidog に RPM の作り方を教える
 
PyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッションPyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッション
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
 
Gopenflow demo v1
Gopenflow demo v1Gopenflow demo v1
Gopenflow demo v1
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
 
ドリコムのインフラCI
ドリコムのインフラCIドリコムのインフラCI
ドリコムのインフラCI
 
React+TypeScriptもいいぞ
React+TypeScriptもいいぞReact+TypeScriptもいいぞ
React+TypeScriptもいいぞ
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
 
Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)
 
Osc2013 tokyospring
Osc2013 tokyospringOsc2013 tokyospring
Osc2013 tokyospring
 
自分的pkgsrcの課題
自分的pkgsrcの課題自分的pkgsrcの課題
自分的pkgsrcの課題
 
20090124shibuya Trac
20090124shibuya Trac20090124shibuya Trac
20090124shibuya Trac
 

RgGen ご紹介

  • 1. SP13 RgGen ご紹介 石谷太一 RgGen ご紹介 石谷太一 (PEZY Computing K.K.) 1
  • 2. SP13 RgGen ご紹介 石谷太一 注意 ● RgGen および GitHub 上で公開している成果物は、石谷個人が開発している ものです ● PEZY の社員としての登壇ですが、問い合わせなどは石谷までお願いします 2
  • 3. SP13 RgGen ご紹介 石谷太一 本日の内容 1. 自己紹介 2. RgGen ご紹介 3. 使ってみる (デモ) 4. 使用例紹介 3
  • 4. SP13 RgGen ご紹介 石谷太一 自己紹介 ● 石谷太一(いしたにたいち) ○ GitHub https://github.com/taichi-ishitani ■ RgGen: 本日紹介します ■ TNoC: SystemVerilog で実装した合成可能な NoC router ■ tvip-axi: UVM ベースの AMBA AXI VIP ■ tue: UVM の拡張パッケージ ○ Twitter @taichi600730 ● SystemVerilog/Ruby 歴 13 年ちょっと ○ SV で RTL 書いたり、UVM ベースの検証環境のおもりをしたり ● 所属 ○ PEZY Computing K.K. ■ PEZY-SC3 がローンチしました ■ 新規チップを開発中です ○ 求人あります ■ https://www.pezy.co.jp/career/ 4
  • 5. SP13 RgGen ご紹介 石谷太一 RgGen ご紹介 ● レジスタマップから、コンフィグレジスタ (CSR) 関連のファイルを自動生成 するツールです ○ https://github.com/rggen/rggen ● レジスタマップは人間様が読めるフォーマットです ○ Ruby ■ レジスタマップ記述用の DSL を使用 ○ 各種構造化テキスト (YAML/JSON/TOML) ○ 各種スプレッドシート (xlsx/xls/ods/csv/tsv) ○ SiFive DUH ○ SystemRDL はいずれ・・・ ● 生成物 ○ SystemVerilog/Verilog/VHDL RTL ○ UVM RAL model ○ Markdown 5
  • 6. SP13 RgGen ご紹介 石谷太一 RgGen ご紹介 ● 対応する型は(たぶん)多いです ○ 配列状/外部アクセス/間接参照レジスタ ○ ビットフィールド 33 種類 ■ UVM RAL model で定義されている型は網羅しています ○ レジスタファイルも対応 ● 標準的なホストプロトコルに対応 ○ AMBA AXI4 Lite/APB ● プラグインによる機能拡張にも対応 ○ 特殊なビットフィールド型の追加 ○ 独自ホストプロトコルの対応 ● EDA ツールの対応 ○ シミュレータ: VCS/Xcelium/Verilator/Icarus Verilog ○ 論理合成: Design Compiler/Vivado/Quartus ● RTL/UVM RAL model はバックドアアクセスに対応 ○ バスアクセスなしで、CSR の読み書きができます ○ シミュレーションの時間短縮などに使えます 6
  • 7. SP13 RgGen ご紹介 石谷太一 使ってみる ● 紹介する入力/生成物のサンプルは、以下のリポジトリから取得できます ○ https://github.com/rggen/rggen-sample ● 生成物を組み込んだサンプルのテストベンチもあります ○ https://github.com/rggen/rggen-sample-testbench ○ 生成 RTL と RAL model を組み込んで、UVM で実装されている CSR のサニティチェック用 テストシーケンスを実行します 7
  • 8. SP13 RgGen ご紹介 石谷太一 使ってみる - RgGen のインストール ● 前準備 ○ Ruby (2.5 以上) と開発用パッケージをインストールしておきます ○ apt-get install ruby/apt-get install ruby-dev とか ● インストール ○ Ruby のパッケージ管理ツール (gem) を使ってインストールします ■ $ gem install rggen ■ 依存する他のライブラリも一緒にインストールされます ○ 追加のプラグインもインストールします ■ $ gem install rggen-verilog $ gem install rggen-vhdl $ gem install rggen-duh 8
  • 9. SP13 RgGen ご紹介 石谷太一 使ってみる - 入力ファイル準備 ● コンフィグレーションファイル ○ アドレス幅、データ幅、プロトコル等を指定します ○ YAML/JSON/TOML で記述します ○ https://github.com/rggen/rggen-sample/blob/master/config.yml ● レジスタマップ ○ CSR の仕様を記述します ○ register block/register file/register/bit field の4階層 ■ 詳しくは Wiki を参照ください https://github.com/rggen/rggen/wiki/Register-Map-Specifications ○ https://github.com/rggen/rggen-sample/blob/master/block_0.yml https://github.com/rggen/rggen-sample/blob/master/block_1.yml 9
  • 10. SP13 RgGen ご紹介 石谷太一 使ってみる - 実行! ● 実行コマンド rggen に、コンフィグレーションファイルとレジスタマップを 食わせるだけです ● $ rggen --plugin rggen-verilog --plugin rggen-vhdl -o out -c config.yml block_0.yml block_1.yml ○ --plugin rggen-verilog/--plugin rggen-vhdl ■ Verilog/VHDL 出力プラグインを有効にします ○ -o out ■ 出力ディレクトリを指定します ○ -c config.yml ■ コンフィグレーションファイルのパスをしています ○ 生成物は “out” ディレクトリに書き出されます ● 実行時に、レジスタマップ上のエラーチェックが行われます ○ 識別子の唯一性、アドレスやビットフィールドの重複など 10
  • 11. SP13 RgGen ご紹介 石谷太一 使ってみる - 生成物の組み込み ● RTL/UVM RAL model は、共通モジュール/クラス を使って構成されています ○ 以下のリポジトリから取得しておきます ■ https://github.com/rggen/rggen-sv-rtl.git ■ https://github.com/rggen/rggen-verilog-rtl.git ■ https://github.com/rggen/rggen-vhdl-rtl.git ■ https://github.com/rggen/rggen-sv-ral.git ○ 生成物と一緒に共通モジュール/クラスもEDAツールに入力します 11
  • 12. SP13 RgGen ご紹介 石谷太一 使用例紹介 (PEZY での使用例) ● 採用前 ○ 各モジュール担当者が CSR モジュールを各々で実装していた ■ アドレスのデコード方法などが統一されていなかった ■ あるレジスタがどのような動作をするかは、RTL を見なければならなかった ○ RTL とドキュメントが差分があった ● 現在 ○ 全 CSR モジュールを RgGen で生成 ■ レジスタマップをは YAML で記述 ● Git で管理していて、変更履歴を追いやすくて良いです ■ レジスタ仕様、実装を標準化できた ○ 社内用プラグインを作成 ■ 社内用バスプロトコル、特殊ビットフィールドに対応 ○ ドキュメントを自動生成 ■ Markdown の生成とドキュメント用サーバーへのアップロードを、更新毎に自動実行 ● 仕様、RTL、ドキュメントの乖離を防止 12
  • 13. SP13 RgGen ご紹介 石谷太一 おわり 13