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