Rocket Chipの記事で以下のように書いたのを試してみたという記事。
あとRocketChipで使われている
MultiIOModule
についても少し気になることがあるので、それは別途紹介する予定。
- LazyModuleImp
- MultiIOModule
- 簡単な例
- Rocket Chipの実装から出来そうなことを試す
- トレイトにポート宣言書いてMix-inでポートを定義
- IOポートのTraitをパラメタライズ
Rocket Chipの記事で以下のように書いたのを試してみたという記事。
あとRocketChipで使われている
MultiIOModule
についても少し気になることがあるので、それは別途紹介する予定。
ChiselのQueueを使って設計をしていて、少し考えたことがあったので今日はそれについて。
ただ単にDecoupledIO
をどう使うか、、、という話。
前回はとりあえずLazyModuleを使った最小のモジュールを作ってみる、という話をまとめた。
その際に以下の要素があればLazyModule
を使ったモジュールを作れるということがわかった。
Parameters
から派生したモジュールのパラメータクラスLazyModule
から派生したモジュールの皮でモジュール間の最終的な接続はここっぽい?LazyModuleImp
から派生したモジュールの実装本体上記のようにLazyModuleImp
が実装本体っぽいという当たりがついたので、実際にRocket Chipの実装の解析が少し進むかも!!ということでコードを呼んでみた内容をまとめていく。
RISC-Vのビルド環境を作りなおす必要が出てきたので、せっかくだから最新のriscv-toolsのリポジトリの環境を使って作りなおすことにした。 今回はその際に幾つか躓いた部分があったのでそれについてまとめておく。
Twitterでつぶやいてた以下のスレッドに書いてたやつをまとめてみた話。
ある数字Nが表せる状態数のビット幅を取得するとき→log2Ceil(N)
— "だいにんぎょー"って読むことにした (@diningyo) August 21, 2019
その数字Nを表現するために必要なビット数を取得するとき→log2Ceil(N+1)
を使えってソースに書いてあった!(ランダム試験で1敗)