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

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

desiredNameを使ったChiselのモジュール名の変更

Chiselのモジュール名は通常宣言したクラス名がそのまま使用されるのだが、これだと問題起こりそうなケースってあるよな、、、って思っていた。 そこで今回はこれに関する解決方法が無いかを調査したので紹介したい。

  • Chiselのモジュール名
  • desiredName
    • クラスパラメータを使ってモジュール名を生成
続きを読む

GithubのGPG keysの設定を試した話

これまでのブログの流れとはまっっっったく関係ないけど、唐突にgithubのGPG keysの設定を行ってみたのでそれの手順をメモ。

  • GithubのGPG keysの設定
    • gpg2のインストール
    • Master Keyの作成
    • Subkeyの設定
    • Master Keyの削除
    • Subkeyのエクスポートしてgithubに登録
    • コミットとプッシュのテスト
続きを読む

MultiIOModuleを使ったデバッグ用ポートについての作成

今回はデバッグ用にポートを作る場合の方法について、今の時点の知識で考えなおしてみた。

  • 案1:traitにしといてMix-in(結果→失敗でした)
    • もう少し粘ってみる
  • 案2:ポートのビット幅0にして最適化で消してもらう(こちらは成功)
続きを読む

Chiselのモジュールのテスト時に出くわした分かりにくかったエラー

今日はChiselで実装したモジュールをテストしていて出くわした、わかりにくかったエラーについて解析した際のメモを。

  • VecをUIntにしたらテストがFAILするようになった。
    • 試してわかったこと
    • エラーを修正するには?
続きを読む

Rocket ChipのGeneratorのソースの解析メモ(7) - サンプルに沿ってPWMモジュールをTileLinkバスに追加してみる(1)

なんとなく内部構造も見えてきたので、ここらでRocket Chipにモジュールを追加する例題を追っていった際のメモ書き。 長くなりそうなので、適宜分割予定(Maxで5回、、かな)。最初にお断りしておきますが、まだ理解があやふやなのです。 ご承知おきください。

  • firesimのPWMモジュールの追加のサンプル
  • サンプルのPWMモジュール
    • 作成するファイル
    • PWM.scala
      • インポート
      • PWM用のパラメータクラス(PWMBase)
      • PWMのベースとなるクラス(PWMBase)
      • TileLinkバスに接続するためのIOポート用トレイト(PWMTLBundle)
      • TileLinkのルータに接続されるレジスタブロック(PWMTLModule)
      • PWMモジュール用のレジスタ・ルータ
      • PWMモジュールを追加用のトレイト(HasPeripheryPWM)
      • PWMモジュールの実装実体となるModuleImpクラス(HasPeripheryPWMModuleImp)
続きを読む

ChiselのMultiIOModuleを使ったポートのカスタマイズ

Rocket Chipの記事で以下のように書いたのを試してみたという記事。

あとRocketChipで使われているMultiIOModuleについても少し気になることがあるので、それは別途紹介する予定。

  • LazyModuleImp
  • MultiIOModule
    • 簡単な例
  • Rocket Chipの実装から出来そうなことを試す
    • トレイトにポート宣言書いてMix-inでポートを定義
    • IOポートのTraitをパラメタライズ
続きを読む

ChiselのDecoupledIOの使い方を考えなおした話

ChiselのQueueを使って設計をしていて、少し考えたことがあったので今日はそれについて。 ただ単にDecoupledIOをどう使うか、、、という話。

  • Queueの実装例
  • IOの形を書き換えてみる
  • 継承してスッキリ
  • コンパニオンオブジェクト版
続きを読む