まずは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!