1.最简单的if else
if (property) begin
$error("Error");
end
else begin
$display("Pass");
end
同时可以在脚本中加入筛选错误信息的判断语句,如果有error这个关键词,就return出FAIL 信息在terminal。
# Search for error message
if grep -q error "$wrapper_tb_sim.log";
then
echo "***************************************"
echo " TEST FAIL "
echo "***************************************"
else
echo "***************************************"
echo " TEST PASSED "
echo "***************************************"
fi
2. MACRO宏定义
VCS不支持立即断言,那么可以写一个宏:
- 查一下为什么VCS不支持立即断言,cadence是否有支持立即断言的tool
`define CHECKER(CHKNAME, PROPERTY, ERROR_CODEBLOCK, ERROR_MSG, PASS_CODEBLOCK, PASS_INFO) \
if (!(PROPERTY)) begin \
$error(`"CHKNAME`", ": ", ERROR_MSG) \
ERROR_CODEBLOCK \
end \
else begin \
PASS_CODEBLOCK \
PASS_INFO \
end \
CHKNAME: assert(PROPERTY);
在test中可以进行如下调用:
`CHECKER(default_value_none_zero, data_out == 0, , ("Error"), ,("OK"))