FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

Yosysの使い方を勉強する (6. 自作のPassでModuleを表示する)

まずはYosysに簡単なPassを作ってみる。Passに対してモジュールの名前をリストアップするPassを作ってみよう。

デザインに登録されているModuleの名前を取得する。

  • yosys/passes/tests/mypass.cc
  void execute(std::vector<std::string> args, RTLIL::Design* design) override
  {
    log ("Hello!\n");
    auto modules = design->modules();
    for (auto iter = modules.begin(); iter != modules.end(); iter++) {
      log("Module Name = %s\n", (*iter)->name.c_str());
    }

  }

テストしてみる。以下のデザインを読み込ませる。

module adder
(
 input logic [31:0]   in0,
 input logic [31:0]   in1,
 output logic [31: 0] out
);

assign out = in0 + in1;

endmodule // adder


module adder2
(
 input logic [31:0]   in0,
 input logic [31:0]   in1,
 input logic [31:0]   in2,
 output logic [31: 0] out
);

assign out = in0 + in1 + in2;

endmodule // adder2

結果は以下のようになった。それぞれのモジュールに対して名前を取得できた。

Successfully finished Verilog frontend.
Hello!
Module Name = $abstract\adder2
Module Name = $abstract\adder