有没有人想出一种聪明的方法来支持您自己的记录器的$psprinf
(或$sformat
)功能?
我想改变我的界限:
log.info($psprintf(" The burst took %0d cycles as expected", cycle_count));
为:
log.info(" The burst took %0d cycles as expected", cycle_count);
它主要是一个美容目标,但每个打印行添加10个字符会变得乏味。
欢迎聪明的想法!
更新:注意!主要问题是模仿$psprintf
能够接受多个(非确切数量)参数的能力。我不认为它得到了语言的支持,但是我已经离开了几年,所以也许出现了一些聪明的东西?
答案 0 :(得分:1)
SystemVerilog不支持具有可变数量参数的函数或任务,但您可以使用具有您期望的最大参数数量的宏
// must have between 1 and 5 arguments
`define LOG(a1,a2="",a3="",a4="",a5="") log.info($psprintf(a1,a2,a3,a4,a5))
`LOG(" The burst took %0d cycles as expected", cycle_count);
如果您不知道预期有多少个参数,则必须将括号作为参数的一部分。
`define LOG(arg) log.info($psprintf arg )
`LOG((" The burst took %0d cycles as expected", cycle_count));