はじめに
defineマクロが思ったよりいろんな使い方ができたので、試してみました。
サンプル1 値を置換
`define DEF_INIT 2
always_ff @(posedge clk, negedge rst_n)
if (!rst_n)
data <= `DEF_INIT
サンプル2 組み合わせ回路を置換
`define DEF_XOR(a, b) a & ~b | ~a & b;
always_ff @(posedge clk, negedge rst_n)
if (!rst_n)
c <= '0;
else
c <= `DEF_XOR(a, b)
サンプル3 FlipFlopを置換
`define FF(clk, rst_n, din, dout) \
always_ff @(posedge clk, negedge rst_n) \
if (!rst_n) \
dout <= '0; \
else \
dout <= din;
`FF(clk, rst_n, din, dout)
サンプル4 moduleを置換
`define DEF_MODULE(clk, rst_n, din, dout, name) module name #( \
)( \
input clk, \
input rst_n, \
input [2:0] din, \
output logic [2:0] dout \
); \
always_ff @(posedge clk, negedge rst_n) \
if (!rst_n) \
dout <= '0; \
else \
dout <= din; \
endmodule
`DEF_MODULE(clk, rst_n, din, dout, dut)
まとめ
defineマクロを使用しました。
コメント