AMS検証を自動化する場合、テストを回すところまでは比較的やりやすいのですが、その結果をどう判定するかが問題になります。RNMならリファレンスモデルと比較する、回路なら期待値を計算するといった方法があります。ただ、入力条件が増えるほど「正解」を用意する側も大きくなっていきます。

2021年のDATEでは、この問題を別の方向から扱ったPLLの論文「System Level Verification of Phase-Locked Loop using Metamorphic Relations」が発表されました。産業用のPLLモデルにメタモルフィックテスト(metamorphic testing)を適用した研究です。もともと用意されていたテストはすべて通っていましたが、追加したテストによって不具合が見つかりました。論文の概要でも、産業用PLLから重大な不具合を発見したと報告されています。追加したテスト自体は単純なものでした。[1]

1MHzから1.01MHzに変えてみる

PLLがロックしている状態でリファレンス周波数を一定の割合で変えれば、分周後の周波数も同じ割合で変わるはずです。論文が検証条件として使ったのは、個々の正解値ではなく、このような複数の実行結果の関係でした。[2]

テスト リファレンス周波数 期待される結果
元のテスト 1.00MHz 正常にロック
追加したテスト 1.01MHz 元の結果に対応して変化するはず

1MHzで正常に動いたPLLに対して、入力だけ1%上げて1.01MHzにします。ここで1.01MHz用の正解波形を別に用意するわけではありません。「入力周波数を1%上げれば、ロック後の周波数も対応して変わる」という関係だけを確認します。

この条件へ変えると期待した関係が崩れ、PLLは1.01MHzではなく50kHz付近の低い周波数へ誤ってロックしました。原因を追うとPFDにデッドゾーンがあり、ANDゲートからフリップフロップのリセットまでの経路に遅延素子が入っていませんでした。遅延を追加するとPLLは正常に動作し、同じテストも通るようになりました。もともとのテストセットでは見つからなかった問題が、入力を1%変えたときの結果の変化から見つかったことになります。[2]

正解値ではなく、テスト同士の関係を見る

このように複数のテスト結果の関係を利用する方法がメタモルフィックテストです。個々の入力に対する正解値を用意する代わりに、入力を変えたときに出力がどう変わるべきかを決めておきます。

2021年のPLL論文では、PLLやその内部ブロックについて8種類の関係を用意し、コンポーネント単位とシステム単位の両方で検証していました。アナログからデジタル、デジタルからアナログ、デジタル同士の振る舞いをまたぐ関係まで対象になっています。[1]

たとえば、

  • 入力周波数を一定の割合で変えたら、ロック後の周波数も対応して変わる
  • ロック可能な範囲で周波数を変えても、PLLはロック状態を保つ
  • ロック範囲を外れた場合には、VCOはフリーラン時の動作へ移る

といったものです。

「この時刻の制御電圧は何Vでなければならない」といった値を並べているわけではありません。求めているのは、PLLが正常なら成立する性質です。詳細なリファレンスモデルをもう一つ作らなくても、設計時に使っている「この条件を変えたら、こちらはこう動くはず」という知識を、そのまま自動判定の条件へ持ち込めます。

2026年にはRNMでも使われている

DVCon U.S. 2026では、CadenceのDaniel Crossが「Application of Metamorphic Testing to Mixed Signal Systems with Behavioral Models」を発表しました。2021年のPLL研究から5年後には、同じ考え方がビヘイビアモデルを使ったミックスドシグナル検証にも持ち込まれています。[3]

対象は受信系のベースバンド、ADC、AGCを含むシステムです。入力信号の振幅を変えたとき、ADC出力とRSSIがどう変化するかを使って判定します。

入力の変更 ADC出力 RSSI
振幅を2倍 AGCが効くため、ほぼ同じ +6dB
振幅を1/2 同様に、ほぼ同じ -6dB

ここでも、すべての入力条件についてADCの正解値を用意するわけではありません。「AGCが正常なら、入力振幅を変えてもADC側の振幅は大きく変わらない」「入力振幅が2倍ならRSSIは6dB増える」といった性質を判定に使っています。2021年のPLLとは対象が異なりますが、正解波形を一つずつ用意する代わりに、入力を変えた前後で守られる関係を見る点は同じです。

リファレンスモデルを作れば解決するのか

RNMの検証では、別のリファレンスモデルを用意して比較する方法がよく使われます。分かりやすい方法ですが、対象が複雑になるほどリファレンス側もそれなりに大きくなります。検証対象のビヘイビアモデルとよく似たモデルをもう一つ作れば、同じ考え方や同じ間違いを共有する可能性もあります。

メタモルフィックテストで使う条件は少し性質が違います。「入力周波数を1%上げれば、ロック後の周波数も対応して変わる」という条件は、PLLの内部実装をもう一度モデル化したものではありません。「入力振幅を2倍にすればRSSIは6dB増える」という条件も同様で、回路の実装を再現する代わりに、外から見たときに成り立つ性質を判定に使っています。リファレンスモデルや元回路との直接比較とは役割が違うため、別の観点から結果を確認できます。

もちろん、リファレンスモデルが不要になるわけではありません。モデルと元回路が一致しているかを確認したい場面では、直接比較する方が適しています。メタモルフィックテストは、それだけでは拾いにくい条件を補う方法として使う方が自然でしょう。

どんな関係でも使えるわけではない

入力をどう変えても同じ関係が成り立つわけではありません。PLLならロック範囲、AGCなら動作可能な入力振幅など、それぞれの条件が成立する範囲があります。

また、「何を変えたときに何が保たれるか」を考えるには回路の知識が必要です。AMS設計では普段から、

  • バイアスを変えたら、どの動作点がどちらへ動くか
  • 周波数を少し変えてもPLLがロックを維持する範囲はどこか
  • AGCが動いていれば、入力振幅を変えたときADC側がどう見えるか

といったことを考えています。この中には、そのまま自動テストの判定条件へ持っていける知識もあります。

判定に使えるのは正解値だけではない

2021年のPLLでは、もともとのテストをすべて通過したあと、リファレンス周波数を1MHzから1.01MHzへ変えたテストとの関係を確認したことで、50kHzへの誤ロックが見つかりました。原因だったPFDのデッドゾーンを修正すると、同じ条件を満たすようになっています。[2]

この例で使われたのは、1.01MHzに対する詳細な正解波形ではありません。PLLが正常なら、入力周波数を変えたときに出力側も対応して変わるという性質でした。2026年にはCadenceが、同じ考え方をビヘイビアモデルを使ったミックスドシグナル検証にも適用しています。[3]

AMS検証の自動判定では、リファレンスモデルや元回路との直接比較がまず候補になります。ただ、判定に使えるのは正解値だけではありません。「入力をこう変えたら、出力はこう変わる」という回路の性質もテスト条件になります。通常のテストをすり抜けたPLLの不具合が実際に見つかったことを考えると、シミュレーションの本数だけでなく、結果をどう判定するかにもまだ工夫の余地があります。