ハードウェアの気になるあれこれスマートフォン用の表示で見るハードウェアの気になるあれこれ技術的に興味のあることを調べて書いてくブログ。2020-01-13ChiselのBoringUtilsの使い方を確認ChiselスポンサーリンクChiselのBorringUtilsについての確認を行ったので、メモ書き。Boringテストで確認BoringUtilsこの話は既にmsyksphinzさんがブログでまとめてくださっているので、そちらも合わせてどうぞ。このオブジェクトを使用すると、通常はIO()で包んで宣言したポート以外の信号に、別のモジュールからアクセスができるようになる。WireDefault(0.U)}このBorringUtilsには以下の2つの使い方が定義されているが、実現できることはどちらも一緒だ。Boringこの2つを簡単なサンプルで見てみようと思う。3.2.0で、本記事に掲載しているコードは正常に動作することが確認できている。Boringはアクセスしたいモジュールに手を入れること無く、外部のモジュールからアクセスを行う方法だ。イメージ的にはVerilog-HDLの階層参照に近い感じ(なのでHierarchicalか)。この使い方をする際にはBoringUtilsオブジェクトに定義されているboreメソッドを使う。使用方法は第一引数に参照したい信号のパスを与えて、第2引数にはSeqの中に参照したい信号を受け取る信号を与える様にすればOK。実際にやってみると、以下のようになる。コード中にあるようにこのオブジェクトを使用する際にはchisel3.experimental.BoringUtilsのインポートが必要な点に注意が必要だ。true.B}コメントにも記載したが、受け取る側の信号は事前に他の値が入っていないとエラーが発生する。別の言い方をするとWireで宣言してboreメソッド以外で値を格納していない場合には、エラーが発生する。動作確認は、本記事の最後でまとめて行うので後回し。Boringは階層構造関係なくChiselのモジュール間でやり取りしたい信号を、登録の際に与えるIDを使うことで参照できるようにする。こちらの方法を使う場合にはBoringUtilsに定義されているaddSource/addSinkメソッドを使用する。"addSinkで指定したID")簡単なサンプルを作ってみると次のようになる。上記で作成したサンプルを簡単なテストで確認してみた。}}上記のテストを実行すると、次のようにテストがPASSし、各モジュール内でインスタンスしたサブモジュール内の信号が参照できていることが確認できた。Boringで参照した信号を確認できるこれを使用するとChiselのテスト機能を使ってテストを実行する際に、テストターゲットをインスタンスするテストベンチのトップ階層を挟んでおくだけで、所望の信号にアクセスするパスを作ることができる。そのため内部の信号の期待値比較を行う場合にデバッグ用のポートを作成&トップ階層まで引き上げる作業が不要になるのが便利。技書博2にChisel本を出してきました月別アーカイブはてなブログをはじめよう!diningyo-kpuku-jougekiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。