ハードウェアの気になるあれこれ

技術的に興味のあることを調べて書いてくブログ。主にハードウェアがネタ。

Chiselで作るNIC - (1)- 仕様について

ちょっとパラメタライズのやり方を検討したかったので、ものすごく簡単なデータ用のインターコネクト的なやつをChiselで書いてみたのでそれについてをまとめておく。 今回の記事は全体の仕様について。

  • NICの仕様
    • バスの仕様
    • パラメタライズについて
    • ブロック図
      • Decoder
      • Arbiter
      • Top
続きを読む

Rocket ChipのGeneratorのソースの解析メモ(3) - TestHarnessの中身

Rocket Chip環境の仕組み解析メモの垂れ流し記事。前回のgenerateFirrtlで実際にChiselのモジュールとして回路化されるTestHarnessを見ていく。

  • TestHarness
    • dontTouchPorts
    • tieOffInterrupts
    • connectSimAXIMem
    • connectSimAXIMMIO
    • dut.l2_frontend_bus_axi4.foreach(_.tieoff)
    • Debug.connectDebug
続きを読む

Rocket ChipのGeneratorのソースの解析メモ(2) - generateFirrtlを追ってみる

Rocket Chip環境の仕組み解析メモの垂れ流し記事。前回見ていったGeneratorの中のgenerateFirrtlを見ていくのが良さそうだったので、今回からはそれを少しずつ見ていく。

  • generateFirrtl
    • トレイト"GeneratorApp"の挙動
    • elaborateの処理
続きを読む

Rocket ChipのGeneratorのソースの解析メモ(1)

Rocket Chip環境の仕組み解析メモの垂れ流し記事。とりあえずRTL生成時のざっくりした流れを追ったメモを元に少しだけ手直し。

  • Rocket ChipのRTL生成フロー(全体の流れ)
    • src/main/system/Generator.scala
      • オブジェクトの宣言
      • テストスイートの構築メソッド(addTestSuites)
      • エミュレータの生成処理
続きを読む

Chiselのハードウェアを型のインスタンスに変換(chiselTypeOf)

Chiselのutil以下に存在するモジュールに自分のモジュールのIOを接続しようとした時に遭遇したエラーとその解決法であるchiselTypeOfについて簡単にまとめておく。

  • QueueにモジュールのIOをつなぐときにエラー
続きを読む

Mux内でVecの要素を選択しようとして遭遇したエラーについて

今日はとあるモジュールの実装中にVecの取り扱いで遭遇したエラーとその解決方法について簡単にまとめておく。

  • Vecの各要素との接続で遭遇したエラー
    • 修正案1:<>ならどうだろう
    • 修正案2:インデックスをMuxで選んで<>で接続
続きを読む

chisel3.utilに入ってるアービターの再調査(Arbiter/RRArbiter/LockingArbiter/LockingRRArbiter)

今日はChiselのutilに入っているArbiterについてを再度調べてみたのでその内容をまとめようと思う。

  • ChiselのArbiter
    • utilに入っているArbiterについて
    • テスト対象のアービター・モジュール
    • 動作を確認する
      • Arbiterの波形
      • RRArbiterの波形
      • LockingArbiterの波形
      • LockingRRArbiterの波形
続きを読む