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

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

DSimに入門してみた(2):CLIを使ってシミュレーションを実行する

前回の記事ではDSim Desktopをインストールして、チュートリアルVScodeで動かすまでを取り上げた。

今回は同じチュートリアルのデータをCLIを使って実行してみる。

この辺の確認を行うにあたっては、DSimのユーザーズマニュアルとKnowledge baseを参照した。

help.metrics.ca

help.metrics.ca

公開後にXでいくつかコメントを頂いたので追記しました。

チュートリアルを動かすための環境は以下にあります。DSim Desktopのインストールが終わっていることを前提にしていますが、とりあえず簡単にコマンドライン上で動かしてみたいとかがあれば参考にどうぞ。

github.com

  • ツールの設定とライセンスのセットアップ
  • CLIを使ったシミュレーションの実行
    • 1-pathシミュレーション
    • 2-pathシミュレーション
    • 3-pathシミュレーション
  • 使いそうなオプション
    • インクルードディレクトリを指定したい
    • 波形を取得したい場合
    • ライブラリを読み込みたい場合
    • シミュレーション実行時にdefineを指定したい
  • おまけ
    • シミュレーションのイメージファイル
    • ライセンスを掴んだまま、離さなくなる
  • まとめ
続きを読む

DSimに入門してみた(1):チュートリアルの実行

ちょっと前にXのタイムライン上で話題になってたDSimを試したのでメモ。

今回はDSimの公式に上がっているチュートリアルを終えるところまで。

基本的にはチュートリアル通りにやっていけば大丈夫だった。

いずれ、別の記事でMakefileからDSimを呼び出して実行する方法やUVMを使ったテストのための設定についても書こうと思う。

  • DSim Desktopのインストール
  • ライセンスファイルの取得
  • チュートリアルデータの準備
  • 波形ダンプ
  • プロジェクトファイルの中身
続きを読む

GnuPGで作成した鍵の有効期限を更新する

永らく更新をサボっておりました。。。 色々バタバタしていたこともあり、去年はほぼ何も趣味作業が出来ずじまいのまま一年が過ぎ去りました。 やっと落ち着いてきて作業も再開できそうな感じになってきたが、PCのクリーンインストールをしてその後放置状態だったため、各種環境の復元から始めることになってしまった。 このサボっている間にgithub等で使用していた各種鍵が期限切れになっており、git push すら出来ない事態に。 今回の記事はgpg2で生成した後、期限切れになった鍵を更新する方法についてメモ代わりに残したもの。

  • 鍵の更新
  • ssh-agentでgpg2で作成した認証鍵を使用する
続きを読む

Chisel3.5.0のリリースノートを確認した

年末にもうすぐChisel3.5.0が出そう、、、、と書いていたのだが、新年始まってバタバタしてたらとっくにリリースが行われていた。。。。 という事で、勝手に毎度おなじみにしているリリースノートの確認をやっていこうと思う。

  • Chisel v3.5.0がリリースされた
  • v3.4.0 -> v3.5.0へのアップグレード
  • Highlights
    • (#2045) Definition/Instance
    • (#1955) DataView
    • (#661) viewAsSuperType
    • (#1834) Vec Literals
    • (#2277) Seq/Tuple
    • Feature
    • (#1154) ExtModule now supports built in support for providing Verilog source
    • Naming improvements
      • (#1614) When prefixing with a data, eagerly get local name
      • (#1616) Use Data refs for name prefixing with aggregate elements
      • (#1634) Added Force Name API
    • (#1819) add new APIs to BitPat
    • Verification
      • (#1891) Guard statements with module reset
      • (#1968) create and extend annotatable BaseSim class for verification nodes
      • (#1992) Make printf return BaseSim subclass so it can be named/annotated
    • (#1964) Implement Espresso Decoder
    • (#1694) Add when.cond for getting the current when condition
    • (#1740) Parametrized Mem- & SyncReadMem-based implementation of the Queue class
    • (#1805) Import memory files inline for Verilog generation
    • (#1826) Make plugin autoclonetype always on
    • (#1921) Add getVerilog in Chisel3
    • (#1933) Merge minimized table before return as a TruthTable
    • (#1966) Add isOneOf method to ChiselEnum
    • (#2211) Add BitSet API
    • (#2197) Improve Data.toString
    • (#2077) implement trace API
    • (#1140) Circular-shift (rotate) operations for UInt
    • (#2030) Added flush capability to Queue
    • (#2059) Added VecInit factory methods (fill,iterate)
    • (#2065) Add multiple dimensions to VecInit fill and iterate
  • API Changes
    • Bundles can no longer be instantiated with bound hardware
    • Bundles no longer can be instantiated with bound types
    • (#1954) Stop Emitting BlackBoxResourceAnno.
      • (#2271) Require the chisel3 compiler plugin
    • (#2217) Refactor TruthTable to use Seq (#2217)
    • (#2149) Remove v3.4.0 version of autoNameRecursively (#2149)
    • (#2170) Remove .toBools (#2170)
    • (#2267) Remove ChiselExecutionOptions and HasChiselExecutionOptions (#2267)
    • (#245) refactor Queue.hasFlush: Boolean to Queue.flush: Option[Bool]. (#2245) -- change from RC1
    • (#2052) Remove all Bundle cloneTypes and chiselRuntimeDeprecate its use (#2052)
  • API Deprecations
    • (#1945) deprecate getPorts with modulePorts. (#1945)
    • (#2284) deprecate getModulePorts (#2284)
    • (#2302) Deprecate chisel3.internal.firrtl.Port (#2302)
    • (#2257) Deprecate chisel3.BackendCompilationUtilities (#2257)
    • (#2192) Deprecate computeName (#2192)
    • (#2149) Add nullary .fire to Valid and deprecate dummy version (#2156)
    • (#2124) Deprecate auto-application of empty argument lists to parameterless functions (#2124)
    • (#1730) Remove Deprecated APIs (#1730)
    • (#1744) remove 2.11 dedicated code. (#1744)
    • (8a73362) 8a73362 Remove val io
    • (7e4d1ee) Update docs for the removal of val io and MultiIOModule
    • (6c6ec71) Fold Chisel.CompatibilityModule into chisel3.internal.LegacyModule
  • Miscellany
    • (#1618) Provide user source locators in Builder.error errors
    • (#1623) Enable Cat of Zero Element Vec (#1623)
    • (#1630) Make -e option work with ChiselStage methods (#1630)
    • (#1854 add helper function to convert chirrtl to firrtl. (#1854)
    • (5ece5aa) Rename MultiIOModule to Module
続きを読む

2022年の抱負的なアレ

新年明けましておめでとうございます!

毎年これは書くようにしてるので、今年何をしたいかとについてざっくりと書いておこうと思います。 いわゆる年始のポエム的なやーつです。

  • やりたいこと
    • Chiselもっと使えるようになりたい&もっと広めたい
    • Rocket-Chipをもっと突っ込んで調べたい
    • ゲームボーイを完成させたい
    • 本書きたい
続きを読む

iotestersからChiselTestへの移行を考える

この記事はHDL (SystemVerilog/Verilog/VHDL/Chisel/etc.) Advent Calendar20日目の記事です。 Chiselも含まれてたので、Chiselネタで何か、、、、と考えた結果、あんまりちゃんと調べて&まとめてなかったChiselTestについて書くことにしました。

  • ChiselTest
    • ChiselTestを試したい
    • iotestersからの移行
      • build.sbtの修正
      • テストクラスの宣言
      • テストの実行:Driver -> test
      • テスト実行時のオプション
      • 信号の操作
    • ChiselTestの新機能
      • fork-join
      • timescope
      • timeout
続きを読む