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

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

Chisel Bootcamp - Module3.1(4) - match文のChiselのモジュールへの適用

前回の記事ではChisel BootcampのModule3.1でパラメタライズの際に指定できるオプションとデフォルト引数を見ていった。

www.tech-diningyo.info

今日も引き続きModule3.1を見ていく。今日はScalaの文法であるmatch文とそれをChiselに適用するとどうなるかということについて勉強していく。

  • Module 3.1: ジェネレータ:パラメータ
    • match/case文
      • 例題:値のマッチ
        • 実行結果
      • 例題:複数の値のマッチ
        • 実行結果
      • 例題:型によるマッチ
        • 実行結果
      • 例題:複数の型によるマッチ
        • 実行結果
      • 例題:型マッチと抹消
        • 実行結果
      • 例題:オプションのリセットへのマッチ
続きを読む

Chisel Bootcamp - Module3.1(3) - デフォルト引数とOptionクラス

前回の記事ではChisel BootcampのModule3.1のパラメタライズの2つ目の例について見ていった。

www.tech-diningyo.info

今日も引き続きModule3.1を見ていく。今日はパラメタライズの際に指定できるオプションとデフォルト引数についてだ。

  • Module 3.1: ジェネレータ:パラメータ
    • オプションとデフォルト引数
      • 例題:Mapのインデックス間違い
      • 例題:不確実なインデックス参照
      • 例題:GetとElse
        • Noneでgetを呼ぶとエラー
        • getOrElseで処理
        • getOrElseメソッド
      • デフォルト値付きのパラメータ
        • 例題:リセット・オプション
          • 実行結果:resetValueを明示しない場合(new DelayBy1)
          • 実行結果:resetValueを設定した場合(new DelayBy1(Some(3.U))
続きを読む

Chisel Bootcamp - Module3.1(2) - パラメータを使った論理の変更

前回の記事ではChisel BootcampのModule3.1に入り、パラメタライズとエラボレーション時のアサーションであるrequireについて勉強した。

www.tech-diningyo.info

今日も引き続きModule3.1を見ていく。今日はModule2.3で扱ったsortモジュール、再びだ!!

  • Module 3.1: ジェネレータ:パラメータ
    • パラメタライズされたモジュールによるソート
      • パラメタライズされた4入力のソートモジュール
      • テスト
      • 生成されるRTL
        • ascending == trueの場合
        • ascending == false の場合
続きを読む

Chisel Bootcamp - Module3.1(1) - パラメタライズを使ったジェネレータ

前回の記事ではChisel BootcampのModule2.5でFIRフィルタのジェネレータの実装について勉強した。

www.tech-diningyo.info

Module2.5の残りのトピックがあるのだが、一旦後回しにして今回からModule3.1に入っていく。

Module3からはジェネレータについてより深く学んでいくことになっているようだ。Module3.1の内容は「パラメータ」となる。

  • Module 3.1: ジェネレータ:パラメータ
    • モチベーション
    • パラメータの受け渡し
      • 例題:パラメタライズされたScalaのオブジェクト
      • 例題:パラメタライズされたChiselのオブジェクト
      • require
        • require文の条件を満たさない場合
続きを読む

Chisel Bootcamp - Module2.5 (2) - FIRフィルタ・ジェネレータ

前回の記事ではChisel BootcampのModule2.5の最初の練習問題であるChiselを使ったFIRフィルタの設計を行った。

www.tech-diningyo.info

今回もMoudle2.5の続きで、前回のFIRフィルタを生成するジェネレータを作っていく。

なお前回の終わりにも書いたし、こんなgithubのIssueも見つけたので間に挟まっているIPXactのセクションはスキップすることにする。

https://github.com/freechipsproject/chisel-bootcamp/issues/16

  • Module 2.5: FIRフィルタ:全てを一つに
    • FIRフィルタのジェネレータ
    • FIRフィルタ・ジェネレータの中身
    • 変換したVerilogコード
    • FIRフィルタ・ジェネレータのテスト
続きを読む

Chisel Bootcamp - Module2.5 (1) - Chiselで書くFIRフィルタ

前回の記事ではChisel BootcampのModule2.4の学習を終えた。

www.tech-diningyo.info

今回はModule2.5の練習問題に取り組んでいく。

  • Module 2.5: FIRフィルタ:全てを一つに
続きを読む

Chisel Bootcamp - Module2.4 (3) - マルチクロック&マルチリセット

前回の記事ではChisel BootcampのModule2.4で学んだレジスタを使ったフロー制御を学んだ。

www.tech-diningyo.info

今回はModule2.4の残りである練習問題に取り組んでいく。

  • Module 2.4: 順序回路
    • 練習問題
      • 練習問題:シフトレジスタ
      • 練習問題:パラメタライズ版シフトレジスタ
      • Appendix: 明示的なクロックとリセット
        • 例題:マルチクロックのモジュール
    • ラップアップ
続きを読む