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

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

Github Actionsを使ってChiselの自動テスト環境を構築

Github Actionsが使えるようになったので、ChiselのCI環境を構築できないかを試してみる。

  • とりあえずGithub Actionsをお試し
    • 再度トライ
    • main.yamlを確認
    • もう少し調べてみる
      • OSのバージョン
      • CPUの情報
      • aptは使えるかどうか
  • Chisel-templateの環境で自動テスト実行
    • 実行結果
続きを読む

Chiselで作ったRISC-VとUARTをArty 35Tで動かしてみた

今回は作ってたRISC-V(dirv)とUARTを接続した簡単なシステムがFPGAで動いたので、その結果について簡単にまとめておきたいと思う。

  • 要約
  • ここまでの経緯
  • SysUart
    • MbusIC
    • Uart
  • 作ってみた結果
    • リソースの使用率
    • タイミング
  • 今後の予定

要約

オレオレRISC-V(dirv)と自作のバスインターコネクト&UartをArty 35Tに入れて動くのが確認できたーーーー!!

f:id:diningyo-kpuku-jougeki:20191005112841g:plain

データは以下のリポジトリにあるので、ご興味あれば是非!

という記事(2019/1/5修正:リンク先をUART込み込み版のリリースタグに変更しました。)

続きを読む

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)
続きを読む