在实际编程中,有时会碰到若干段代码高度相似,平时我们会想办法把它函数化,将它写成一个函数,然后在它原本的地方调用并传递相关参数。
但是,有时候,这个不同的地方有点尴尬,不属于变量,可能是一个变量名中的一部分。此时,可以使用SV宏中的双反引号``来实现该功能。
例如:
`define somethingOutput_user_compare(user_id) \
for( int i = 0; i < num; i++) begin \
@(posedge tb_top.top.block.clk iff(tb_top.top.block.blk``user_id``_dv_out)); \
if(tb_array[``user_id``][i] == tb_top.top.block.signal) begin \
sig_match_count[``user_id``]++; \
end \
else begin \
sig_mismatch_count[``user_id``]++; \
$display("Warning: something important.\n") \
end \
sig_idx++;\
end