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

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

Chiselで2次元メモリっぽいのを作る(2)

令和になって最初の投稿。ほんとは昨日上げたかったんだけど。。 いずれにしても読んでくれてる方は引き続きどうぞよろしくですm(_ _)m

前回の記事の終わりに以下のようなこと書いた。

MemBaseにマスク付きのライトタスクが用意されているので、ひょっとするとそっちを使うと何か変化が起きるのかもしれないので別途試してみようと思う。

www.tech-diningyo.info

なので、今回は上記のネタ提起の回収編を書こうと思う。 あと実は前回の2次元メモリは不要な記述があったので、それについての訂正も。。。

  • Chiselで2次元のメモリの続き
    • Memのwriteメソッドを使用する形に書き換えてみる
      • MemBaseのwriteの実装
    • Mem2Dを書き換える
      • 新しいMem2Dクラスのテスト
        • テスト結果
      • RTLを比較してみる
続きを読む

Chiselで2次元メモリっぽいのを作る(1)

今回はふとChiselで2次元のメモリは作れるのか??と思ったので試してみたのでそれをまとめてみようと思う

  • Chiselで2次元のメモリ
    • 試してみたことその1~Mem in Mem~
    • 試してみたことその2~じゃあBundleでくるんでみよう~
    • 試してみたことその3~それならVecにしてみよう~
      • Vec版の2次元メモリのテスト結果
      • FIRRTL
      • RTL
続きを読む

ChiselのBundleをRegInitに渡すときに各フィールドを任意の値で初期化する方法(2)

今日は昨日の続き。
昨日はBundleRegInitに渡すときにBundle内の各フィールドを任意の値で初期化する方法について考えた。
目的の処理は出来ることは分かったのだが、記述がイマイチなので今日はそれを少し整えてみようと思う。

www.tech-diningyo.info

  • 引き続き「Bundleをインスタンスして作るRegInitで各フィールドを任意の値で初期化する方法」
    • もう少し整理してみる
      • 少し整理したバージョンのエラボレート結果
    • コンパニオン・オブジェクト作ってすっきりさせる
続きを読む

ChiselのBundleをRegInitに渡すときに各フィールドを任意の値で初期化する方法(1)

以前にBunldeで構造化したデータを使ってレジスタインスタンスする方法を紹介したのだがその記事を書いたときにもう一つコレ出来たらいいなっと思いながら出来なかったことがあった。 それは”Bundleを使ってレジスタ郡を作る際に、各フィールド毎に任意の値で初期化出来ないか?”というものだった。 んでやっとそのやり方が分かったので、今日はそのやり方についてまとめようと思う。

  • Bundleをインスタンスして作るRegInitで各フィールドを任意の値で初期化する方法
続きを読む

Chiselのメモリにファイルのデータをロードする方法

今回もChiselのTips的なやつでChiselのメモリにファイルのデータをロードする方法についてを紹介する。

  • ChiselのメモリMemに指定したファイルのデータを読み込む方法
    • 今回のソースコード
      • メモリ
      • テスト用モジュール
      • とりあえずテストを実行
      • ファイルの形式について
        • ファイルのフォーマットについて
    • Binaryでの読み込み
続きを読む

ChiselFlatSpecを使ったテストを並列化して高速に実行する方法

今日はChiselのテストの時にTips的なやつを。
ChiselFlatSpecを使って作ったテストクラス内の各テストは通常、実装した順に逐次実行される。
この単一クラス内のテストを並列に実行する方法はないのかしら??と探してみたところ、めちゃくちゃお手軽にテストを並列実行できるのがわかったのでそれをご紹介。

  • ChiselFlatSpecを使ったテストを並列実行する方法
    • 例を使って確認してみる
      • テスト用クラス
    • 並列化の結果
      • CPUの使用率
      • 実行時間
続きを読む

Chisel Bootcamp - Module3.6(5) - 型クラスと使うジェネリクス型

久しぶりにChisel-Bootcampネタ。 前回のChisel-Bootcampの学習ではジェネリクス型について学んだ。

www.tech-diningyo.info

今回はModule3.6の残りの部分を見ていく。ただエラーが出たりするので、そのへんは追って調査する事にして飛ばしていく。

続きを読む