スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[SystemVerilog] defineマクロを使って階層参照記述を簡略化する。

defineマクロについてはこちらの記事をご覧ください。


SystemVerilog:defineマクロ


本題ですが、こちらのコードをご覧ください。

  • サンプルコード(defineマクロ無し)
  • module base();
    
      task show();
        $display("*** Call show - %m ***");
      endtask
    
    endmodule
    
    module hogehoge();
    
      base mbase();
    
    endmodule
    
    module hoge();
    
      hogehoge mhogehoge1();
      hogehoge mhogehoge2();
    
    endmodule
    
    module testbench ();
    
      hoge mhoge();
    
      initial begin
        mhoge.mhogehoge1.mbase.show();
        mhoge.mhogehoge2.mbase.show();
        $finish(2);
      end
    
    endmodule: testbench

以下の階層のtaskを呼び出してます。

  • mhoge.mhogehoge1.mbase.show();
  • mhoge.mhogehoge2.mbase.show();


ただ、同じもの(階層)を記述の記述するのが面倒なので、
その対処として、defineマクロを使うとスッキリするかもしれません。

  • サンプルコード(defineマクロあり)
  • 
    `define CALL(a) mhoge.a.mbase.show()
    module base();   task show();     $display("*** Call show - %m ***");   endtask endmodule module hogehoge();   base mbase(); endmodule module hoge();   hogehoge mhogehoge1();   hogehoge mhogehoge2(); endmodule module testbench ();   hoge mhoge();   initial begin     `CALL(mhogehoge1);     `CALL(mhogehoge2);     $finish(2);   end endmodule: testbench

とこんな感じで、記述することが可能です。

関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。