ハードウェアの気になるあれこれスマートフォン用の表示で見るハードウェアの気になるあれこれ技術的に興味のあることを調べて書いてくブログ。2019-10-07ChiselのBlackboxで複数のファイルから構成されるVerilog-HDLのモジュールを読み込むChiselスポンサーリンクふと気になったのでChiselのBlackboxで複数のファイルから構成されたVerilogのRTLを指定できるのかを試してみた。BlackboxのおさらいBlackboxで指定するモジュールが複数のファイルで構成される場合BlackboxのおさらいChiselには既存のVerilog-HDLのRTLをModuleに組み込む方法としてBlackboxが存在している。これを使用することでChiselのモジュールのクラス名と一致するRTLのモジュールをChiselのモジュールでインスタンスして使うことが可能だ。簡単に使い方をおさらいしておく。in;endmodule上記のTestモジュールを含むファイルをChiselのプロジェクトの以下の場所に保存しておく。src/main/resources/Test.vTestモジュールをChiselのモジュール内でインスタンスして使う場合にはBlackboxを継承したクラスを作成してそのクラスを通常のモジュールと同様にインスタンスすればいい。テストの実行時に使用されるようになる。m_test.io.out}Blackboxで指定するモジュールが複数のファイルで構成される場合FPGAで使用するようなRAM推定のファイルならひとつのファイルにひとつのモジュールが書かれていることが多いので、setResourceに指定するファイルは自ずと一つになる。既存の資産を流用するケースで複数のRTLファイルから構成されるモジュールをBlackboxモジュールに指定してChiselのモジュール内で使用するにはどうればいいのだろうか?ということを考えたことが無かったので試してみた。文章で書くといまいちイメージしにくいかもしれないが例えば以下のような感じのことを指している。bが実装されているというケースに於いて、モジュール"a"/"b"が以下のように階層化されているような場合だ。bこの場合にモジュール"a"をChiselのBlackboxに指定した際に"a.sv"/"b.sv"の2つのファイルが必要になるのだが、setResourceの指定はどうすればいいかについて幾つか試してみる。"a.sv"のみを指定。m_a.io.out}テストを作ってverilatorで上記のモジュールをテストすると以下のようにエラーが発生する。エラーの中身はモジュール"b"が実装されているファイルが見つからない、という内容だ。--traceChiselのテストフレームワークのシミュレータのバックエンドとしてverilatorを指定した場合に、モジュール内にsetResourceが使用されると、シミュレーションの実行ディレクトリに"firrtl_black_box_resource_files.f"というファイルが出来ており、この中にsetResourceで指定したファイルのパスが記載され、モジュールの解決が行われる仕組みになっており、今回のケースだと"a.sv"のみが指定されたため、ファイルが見つからないということになっている。ここまで書くともう察した方もいるだろうが、解決方法は単純で必要なファイルを全てsetResourceを使って指定してやればOKだ。先ほどのモジュール"a"の場合はBlackboxを継承したクラスの実装は以下のようになる。"b.sv"も追加する}この状態でテストを再度実行すると以下のようにVerilatorのエラーは発生せずにシミュレーションが開始される。test_run_dir/BlackboxTop/VBlackBoxTopということで、Chiselのテストフレームワーク経由で複数のファイルからなるRTLをブラックボックス化して使う際には必要なファイルを全てsetResourceで列挙すればOKだった。setResourceを何個も列挙するのはめんどくさいので、以下のような感じでSeqとかに適当に入れてforeachとかで処理するのが良いと思う。setResource(s"/$f"))}ということで、複数のRTLファイルから構成されるVerilog-HDLのモジュールをBlackbox化して使う方法でした。今日はChiselのテストの時にTips的なやつを。技書博2にChisel本を出してきました月別アーカイブはてなブログをはじめよう!diningyo-kpuku-jougekiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。