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

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

Chiselの文法 - 入門編 〜その6:ChiselのVec〜

前回の続きでChiselの文法入門編その6
今回はChiselにおける拡張型であるVecBundleの2つについてまとめて書こうを思ったのですが、思いの外膨らんだので、Vecメインにしました。

  • Chisel入門編〜その6:Vec〜
    • VecとBundleの位置づけ
    • Vec型
      • Vecの宣言
        • 基本形
      • 初期値が必要な場合
        • RegInitを使う場合
        • RegNextを使う場合
      • レジスタファイルの例で見るVecの使い方
続きを読む

Chiselの文法 - 入門編〜その3:Chiselのハードウェアの要素〜

前回の続きでChiselの文法入門編その3
前回の冒頭に書いたChiselにおける3つ目の要素であるChiselのハードウェアの要素について見ていきます。

  • Chisel入門編〜その3:Chiselのハードウェアの要素〜
    • Chiselの”型”と”ハードウェアの要素”の区別
    • Chiselのハードウェア要素
      • Module
      • IO
      • Wire
      • Reg
      • Regの派生系RegInit/RegNext
        • RegInit
        • RegNext
      • Chiselのハードウェア要素を使ったサンプル
      • 生成されたVerilog HDLのRTL
続きを読む

Chiselの文法 - 入門編〜その2:Scala/Chiselの基本的なデータ型〜

前回の続きでChiselの文法入門編その2
自分の理解ではChiselでハードウェアを実装する場合に、以下の3つの要素についての区別を理解する必要があると思っています。

  1. Scalaの型
  2. Chiselの型
  3. Ciiselのハードウェアの要素

これは言い換えると、以下の2つの境界線を明確に区別する必要があるということだと考えています。

  1. ScalaとChiselの境界線
  2. Chiselの”型”とChiselの”ハードウェア要素”の境界線

一回だと結構なボリュームになるので今回はまずScalaの型とChiselの型について見ていきます

  • Chisel入門編〜その2:Scala/Chiselの基本的なデータ型〜
    • Scalaの型
    • Chiselの型
      • Bool
      • SIntとUInt
      • モジュール化して試してみる
続きを読む

Chiselの文法 - 入門編〜その1:モジュールの定義とエラボレート〜

前回はGW中に作ったRISC-Vの紹介をしてみたが、その記事ではそのRISC-Vプロセッサの概要と作った所感についてをまとめただけでした。
まず最初の目標としていたのがこの取り組みだったため、ひとまず最初の目標は達成したというところ言う感じです。
そんなわけもあり一区切りという意味も込めて、ここまでに勉強してきたChiselの文法的な話をついてまとめてみようと思います。
ある意味Chiselの文法の入門編的な感じになる、、はず。

  • Chisel入門編〜その1:モジュールの定義とエラボレート〜
    • Chiselのモジュール
    • エラボレート
    • TestChiselModuleのエラボレート用オブジェクト
    • エラボレート時のsbtコマンド
続きを読む

Chiselで簡単なRISC-Vを作った話

今年のGWの自分宿題としてものすごく簡単なRISC-Vを作っていました。
ツイッター見てる方はご覧になってたかもしれませんが、GW中に一応riscv-tests位ならPASSするものが出来ています。
今回はその後にVivadoで合成してみた結果も取ることが出来たのでそれも含めて紹介をしてみようと思います。

  • Chiselで作るオレオレRISC-V
    • ディレクトリの構成
    • ブロック図
      • 外部インターフェース
        • リード
        • ライト
    • テスト環境
    • テストの実行
    • RTLの生成
    • Ultra96上で合成
      • リソース使用量
      • タイミング
  • 作ってみての感想
続きを読む