FPGA開発日記

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

Yosysの使い方を勉強する (5. 自分のPassを作ってみる)

まずはYosysに簡単なPassを作ってみる。mypassと言って、何もしないPassである。

  • yosys/passes/tests/mypass.cc
struct MyPass : public Pass {
  MyPass() : Pass("mypass", "My Pass") { }
  void help() override
  {
    //    |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
    log ("\n");
    log ("    mypass\n");
    log ("\n");
  }

  void execute(std::vector<std::string> args, RTLIL::Design*) override
  {
    log ("Hello!\n");
  }

} MyPass;

さらに、Makefile.incを追加する。

diff --git a/passes/tests/Makefile.inc b/passes/tests/Makefile.inc
index 531943d78..8abacef0e 100644
--- a/passes/tests/Makefile.inc
+++ b/passes/tests/Makefile.inc
@@ -2,4 +2,4 @@
 OBJS += passes/tests/test_autotb.o
 OBJS += passes/tests/test_cell.o
 OBJS += passes/tests/test_abcloop.o
-
+OBJS += passes/tests/mypass.o

コマンドにmypassを追加して、Passを追加してみる。

read -sv2009 adder.sv
mypass

実行結果。ちゃんとlog()の結果が表示された。まずは第一段階だ。

1. Executing Verilog-2005 frontend: adder.sv
Parsing SystemVerilog input from `adder.sv' to AST representation.
Storing AST representation for module `$abstract\adder'.
Successfully finished Verilog frontend.
Hello!