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

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

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上で合成
      • リソース使用量
      • タイミング
  • 作ってみての感想
続きを読む

C言語のstrtok関数でSEGVが起きてハマった話

唐突にC言語のネタ
というのも最終的にCで書くことになるから、最初からCで書いとくか、、、、と言う話になって、そこでハマったから(T_T)
C言語力が足りない(T_T)

  • C言語のstrtokでハマった
    • 原因調査
    • そして判明
      • 確認してみる
続きを読む

自分で作ったBundleでレジスタ作ったらハマった話

今回は最近進めていたRISC-Vの実装の際にBundleの使い方でハマったのでそれについての話を

  • Bundleのおさらい
  • 本題:自分で作ったBundleでRegを作ったらハマった
    • テストコードを作って確認
    • RTLはどうなってる?
    • 原因は??
    • 解決策
続きを読む

Chiselで3次元メモリっぽいのを作る

今回もChiselのMemについての話。
元ネタは自分の以下のツイート。

おそらくお察し頂けたとは思うが、3次元のメモリを作る場合についてまとめておく。

  • Chiselで3次元のメモリ
    • ChiselのMemで実現するには?
    • とりあえずテストして確認
    • RTLを生成して比較
      • writeタスク不使用版
      • writeタスク使用版
続きを読む