我想知道关键字try
在 Specman 中的用途,尤其是它在下面给出的代码片段中的用法:
try {
unpack(packing.low,lob,pkt);
} else{
message(LOW, “Uh-oh!”){print lob using HEX;};
message(LOW,”bad unpack!!!”);
};
try 和 if 类似,如果条件为真时执行真块,否则执行假。同样尝试如果 true 块中存在错误,它会切换到 else 块。
try
并且else
是 Specman 的异常处理结构。try
如果在块中创建了错误,则else
立即执行该块而不是该块的其余部分,try
并且该错误被抑制而不打印输出。
在这种情况下,如果lob
位数多于pkt
“物理字段”,则解包将产生错误。如果发生这种情况,Specman 运行时将跳转到该else
块并打印出lob
数据结构,而不是打印原始unpack
错误。查看文档以了解“物理场”是什么以及如何使用它们。它们是一个奇怪的构造,专门与 Specman 的 、 和 构造的%
行为pack
交互unpack
。的物理场pkt
将在%
的“物理场”之前使用修饰符声明pkt
。