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

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

Chiselのテストでshould be (true)付けてなくてプチハマりした

今作り直してるオレオレRISC-V(dirv)の対向に接続するメモリモデルがバグってるので、バグ再現パターンを起こしてシミュレーションを行っていた。その際に出くわした「いや、当たり前でしょ」な話をメモ書き程度に残しておく。ScalaTest使ってる人は多分タイトルでわかる方もいる気が。。

  • メモリモデルがバグってて。。
  • バグ再現パターン
  • should be (true) を付与して再度実行
続きを読む

Chisel3.2-SNAPSHOTを試した時に遭遇したエラー

もうそこそこ経ってはいるがChiselの3.2-SNAPSHOTがgithubのリリースに上がっている。今回はそれを使うにあたって遭遇したエラーについて。

  • Chsiel-3.2のSNAPSHOTが公開された
  • ImplicitModuleが、、、消えた??
  • おまけ ~ 他のプロジェクトでもアップデート時に別のエラーが。。
続きを読む

Chiselのシミュレーションを所定のサイクルで終了する方法

ある意味前々回の続きのネタ。前々回の記事ではシミュレーション実行時にログにサイクル数を出す方法を探したが、今回は波形上で確認するための細工を行ってみる。

”前々回の記事”は以下。

  • Chiselの波形上に経過サイクルを表示
続きを読む

Chiselのシミュレーション実行時にサイクル数を表示する方法

Chiselで書いたモジュールをiotesters.Driverでテストする際に地味ーーに便利(だと思う)なシミュレーションのサイクル数を知る方法についてまとめてみる。

  • Chiselのテスト実行時の表示について
  • Chiselのテスト実行時にサイクル数を知る方法
    • "--is-verbose"オプション
    • PeekPokeTester上で時間を取得して表示
続きを読む

ChiselのArbiterのvalid/readyの調停テストコードが上手く作れなかった話

今日の記事はChiselでテストを書いていた時に出くわしたトラブルとそれに対する修正について。回路自体は前回まで記事にしていたNICのArbiter部分のような調停回路。

トラブルと言ってもChiselのバグとかそういう話ではなく、自分の理解不足からくるもので、一言で書くと以下になる。

  • テスト対象のモジュールに与えた入力が意図したとおりに反映されない
  • Arbiterに対するテストコードの調査
    • 結局のところ原因は??
    • 解決策
続きを読む