Verilog $sformat是否有等效函数?
我正在编写SystemVerilog代码,我注意到$sformat是一个系统任务,而不是一个函数。 是否有一个函数等价于$sformat 我想在函数中执行以下操作:Verilog $sformat是否有等效函数?,verilog,system-verilog,Verilog,System Verilog,我正在编写SystemVerilog代码,我注意到$sformat是一个系统任务,而不是一个函数。 是否有一个函数等价于$sformat 我想在函数中执行以下操作: assert(my_dto_h.a == 10) else begin `ovm_error("component", $sformat("my_dto_h.a should be 10, not %0d", my_dto_h.a)) end 不幸的是,我从QuestaSim 10.2中得到以下运行时错误: **错误:(vsi
assert(my_dto_h.a == 10) else begin
`ovm_error("component", $sformat("my_dto_h.a should be 10, not %0d", my_dto_h.a))
end
不幸的是,我从QuestaSim 10.2中得到以下运行时错误:
**错误:(vsim-PLI-3029)component.sv(105):应为系统功能,而不是系统任务“$sformat”。
是,$sformat
来自LRM:
系统函数$sformat
的行为类似于$sformat
,只是字符串结果作为$sformat
的函数结果值传回,而不是作为$sformat
放在第一个参数中。因此,可以在字符串值有效的地方使用$sformaf
例如:
string s;
s = $sformatf("Value = %0d", value);
您可以使用
$psprintf
。它不是标准的一部分,但许多模拟器,如QuestaSim和VCS都支持它
assert(my_dto_h.a == 10) else begin
`ovm_error("component", $psprintf("my_dto_h.a should be 10, not %0d", my_dto_h.a))
end
assert(my_dto_h.a == 10) else begin
`ovm_error("component", $psprintf("my_dto_h.a should be 10, not %0d", my_dto_h.a))
end