ホーム > ユーザーサポート > FAQ カバレッジマスターwinAMS
【質問】
カバレッジマスターゼネラルでシミュレーションエラーが発生します。対処方法を教えてください。
【回答】
発生しているエラーによって原因が異なります。
Invalid Operation code found [code = 16] (pc=a0000000)
スタートアップコマンドファイルが原因です。下図のようにして内容を確認してください。
「@reset」という行があればこれが原因です。この行をコメントアウト、もしくは削除してください。
Invalid Operation code found [code = 16] (pc=00000000)
2つの原因が考えられます。
1) テスト対象関数が割り込みハンドラとしてビルドされている。
カバレッジマスターは割り込みハンドラをテスト対象関数にすることができません。通常の関数として再ビルドしてください。
CasePlayer2内蔵のゼネラル用コンパイラは、ソースファイル上に「#pragma interrupt...」という行があると、それ以降に定義された関数が(関数名にかかわりなく)全て割り込みハンドラになるという仕様ですので、注意が必要です。たとえば
#pragma interrupt func
void func(void)
{
...
}
//#pragma interrupt test
void test(void)
{
...
}
というソースの場合「#pragma interrupt test」の行がコメントアウトされているにも関わらず、test()は割り込みハンドラになります。「#pragma interrupt func」の行もコメントアウトする必要があります
2) テスト対象関数からライブラリ関数が呼び出されている。
カバレッジマスターゼネラルではライブラリ関数を使用することができません。ライブラリ関数を呼び出す箇所は、「0番地ジャンプ」の命令になります。
Generalコードのオブジェクトを生成します...
%XLNKV-W: Undefined symbol "_stdlib" referenced, at location "40007a58h".
in "test" unit, "C_test" section
C:\SL1\SL1 0 Management\support\etc\FAQ\A05_01\test\cp2\cp2.xlo が生成されました。
CasePlayer2によるゼネラルコード生成時に上記のような警告が出ていたら、これが原因です。
この場合呼び出されているライブラリ関数のダミー関数を作成することによって回避します。ダミー関数は空関数でOKです(戻り値の型、引数の数と型はライブラリ関数の実体に合わせてください)。