macro

よく使われるケースとしては、レジスタマップをdefineで定義しておいて、仕様が変わったらdefineを修正するというものです。

`define SYSTEM_TIMER_SET_REG 32'h7FFA_0200

`define SYSTEM_TIMER_RUN_REG 32'h7FFA_0204

とか。これをこのサイトで作成したマスタモデルのコマンドに指定する場合は

write_issue(`SYSTEM_TIMER_SET_REG, 32'h1000_0000);

write_issue(`SYSTEM_TIMER_RUN_REG, 32'h0000_0001);

などとすると思います。これはこれで便利ですが、もう少しおもしろいことをしたいな…と。

例えば、$display文でいつも時間を表示させるとして、それ以外は文字列だけで済むならこんな定義も出来ます。

`define msg(MESSAGE) $display("[%0d] %s",$time,MESSAGE);