1. define 参数
`define AHB_WRITE(addr, data); begin \
ahb_seq seq_h; \
seq_h = ahb_seq#(...)::type_id::create(...);
seq_h.addr = addr; \
seq_h.data = data; \
... end
2. 使用define参数的值
使用##来使用define参数引用变量的值
`define REG_TO(x) TCSR_REG_##x
//usage
`REG_TO(1) //TCSR_REG_1
3. 使用define参数本身的变量名(字符串)
使用 `` 来引用将传进来的值(变量名本身的字符串),如果需要识别并替换双引号内的变量名,需要在双引号前用 ` 来标识。
`define decl_class_base(SUFFIX) \
class ahb_trans_``SUFFIX #(type T=int) \
extern ahb_trans_base #(uvm_tlm_if #(T,T))
`uvm_info(`"ahb_trans_``SUFFIX`", `"ahb_trans_``SUFFIX start!`", UVM_LOW)
function void ahb_write(input T t);
super.write``SUFFIX( t);
endfunction
//usage
`decl_class_base(error) //declare ahb_trans_error class