私はキーワードtry
がSpecmanにするために使用されているものを知りたいと下記のコードスニペットでは特にその使い方になります。Specman-eのtry {};
try {
unpack(packing.low,lob,pkt);
} else{
message(LOW, “Uh-oh!”){print lob using HEX;};
message(LOW,”bad unpack!!!”);
};
私はキーワードtry
がSpecmanにするために使用されているものを知りたいと下記のコードスニペットでは特にその使い方になります。Specman-eのtry {};
try {
unpack(packing.low,lob,pkt);
} else{
message(LOW, “Uh-oh!”){print lob using HEX;};
message(LOW,”bad unpack!!!”);
};
try
とelse
はSpecmanのexception handling構築物で。 try
blockにエラーが作成された場合、ブロックtry
の代わりにelse
ブロックが直ちに実行され、エラーは抑制され、の出力は印刷されませんとなります。
この場合、lob
のビット数がpkt
よりも多い場合、「物理フィールド」がある場合、アンパックはエラーを生成します。その場合、Specmanランタイムはelse
ブロックにジャンプし、元のunpack
エラーを出力する代わりにlob
データ構造を出力します。 「物理フィールド」とは何か、どのように使用されているかについて、ドキュメントを見てください。これらは、Specmanの%
,pack
、およびunpack
構成の動作と具体的に相互作用する奇妙な構造である。 pkt
の物理フィールドはpkt
の「物理フィールド」に先行する%
修飾子で宣言されます。
tryとifは類似しています。条件が真の場合に真のブロックを実行する場合は、 とし、そうでない場合はfalseを実行します。 同様に、真のブロックにエラーがあり、elseブロックに切り替える場合も試してください。
本当に私の原因を助けた説明に感謝します – smashash