我是Specman的新手,并试图通过阅读现有代码来学习它。
我遇到了以下功能,无法在specman文档中找到解释......
VerifyNode(end_point:string, derived_value:uint) is also {
if ('(end_point)' === ~derived_value) {
message("Error1");
}
else if ('(end_point)' === derived_value) {
message("Error2");
}
else {
message("Error3");
}
}
我假设逻辑上'(end_point)'
在运行时获得end_point
信号的实际值。这是真的吗?
如果运行时end_point
的值取消derived_value
无符号整数,则Error1将成为消息。
如果运行时end_point
的值与derived_value
无符号整数相同,则Error2将成为消息。
我如何解释"错误3"条件?
答案 0 :(得分:0)
'(end_point)'
是两件事。它是对被测设备(DUT)的老式,非端口访问,该片段的(end_point)
部分是在''
DUT访问中直接进行字符串替换的方法。如果您的设计足够大,那么使用旧式DUT访问可以大大降低仿真速度。此外,这种方法缺少更多的静态编译时间检查,因为这些字符串可以是任何东西,并且当您模拟它并且无法找到DUT路径时,您只会知道路径错误,从而产生错误。
答案 1 :(得分:0)
实际上,这是基于字符串的信号访问的老派。我建议你搜索" simple_port"。
end_point是一个字符串,应该是您要读取的信号的完整HDL路径。调用此方法的示例:
// check if signal has the value 3:
VerifyNode("top.module_a.sig_val", 3);
答案 2 :(得分:0)
''的正式名称在Specman文档中称为刻度表示法。搜索术语"刻度符号"在cdnshelp中你会找到它。