2016年9月14日水曜日

ACテストって何でしょう? 〜 テストの実際4


今回は、ファンクションテストの回でも少し出て来た、ACテストについて少し詳しく書いてみたいと思います。

ここで言うACテストは、ACタイミングを測定するテストのことを指しますが、「テストの実際」を始めたころに出て来たDCテスト、そして今回のACテスト、なぜDCとかACと言うのでしょう?


DCテストで測定するDC特性は、別の言い方で言うと静特性、ACテストで測定するAC特性は動特性と言われます。

DC特性は静特性と言われるだけあって、回路をバタバタ動かさなくても測定できる電流や電圧の特性です。なお、入力電圧はファンクションテストで測定しますが、それはそれ以外に回路の状態変化を外に引き出す測定方法がないからです。

入力バッファの出力端子がそのままLSIピンに出ている回路なら、ファンクションテストとして測定する必要はなく、入力端子に静的に電圧を印加して出力端子のレベルがひっくり返るのを検出すれば測定できます。

これに対して動特性と言われるAC特性は、中の回路をバタバタ動かさないと測定できない出力タイミングや入力タイミング、もっと具体的に書くと出力信号の遅延時間や入力信号のセットアップ時間、ホールド時間、のことです。

LSIのデータシートを見ると、電気的特性表の中にACタイミング特性という項目が並んでいますね。

今回は、これらをどうやって測定するのかをご紹介します。

なお、ACテストは、特性データ測定で実際にデバイスの実力値を測定する場合と出荷選別で行うテストでテストの仕方がかなり異なります。

特性データの測定では、デバイスが動作しなくなる境界のACタイミングを具体的に測定するのに対して、出荷選別では決められたタイミングスペックでファンクションテストを行うのです。

出力遅延時間の測定


まずACテストと言えば代表的な測定項目として上げられるのが出力遅延時間です。

被測定ピンの信号変化が基準となるタイミングからどのぐらい遅れて生じるか、ということを測定することになります。

右の図は、上からクロック入力、デバイスからのクロック出力、そして信号の例としてマイコン系に良くあるライト信号(WR、負論理)、そしてデータ(D)を想定しています。

まず、マイコン系ではデバイスのクロック出力がタイミングスペックの基準となる場合が多いので、ファンクションテストの回で説明したクロックサーチを行って、クロック出力の立ち上がりがテスターのテスト周期の先頭と一致するように入力クロックのタイミングを補正しておきます。

この状態で、図の例でWR信号がテスト周期の先頭からどのぐらいの時間差で立ち下がるのかを測定します。

測定は、被測定ピン以外の出力期待を全てマスクし、他のピンがイタズラをしないようにした状態で、被測定ピンが期待値一致(以下、Pass)、期待値不一致(Fail)する境界のストローブタイミングを探すことで行います。その境界のタイミング値が測定値です。

また、出力遅延の基準タイミングがクロックの立ち上がりばかりであるとは限りません。たとえば図の例のように、データ(D)の出力遅延の基準がライト信号(WR)の立ち下がりエッジである場合もあります。

この場合は、クロック出力(テスト周期の先頭)を基準にWRの立ち下がりの出力遅延を測定しておいて、同様にDの出力遅延を測定し、Dの出力遅延値からWRの出力遅延値を引き算して、WRの立ち下がりを基準にしたDの出力遅延とします。

ところで、Pass/Failの境界値の探し方についてはやり方がいくつもあります。ファンクションテストのエントリーに書いたshmooプロットを使うのがテストの組み立てとしては楽ですが、測定値の評価をする際に、出力し終わったプロットから目視で数値を拾い出さなければならず、テストプログラムの中で上述のような引き算をして数値を出すことができないのが面倒です。(perlなどを使ってプロットからの数値拾い出しを自動化することはできますけど・・・)

私が昔習ったのは、バイナリーサーチを使った測定方法です。

図のようにエッジの検索範囲を適切に選んで、検索範囲の半分、そしてまたその半分と検索範囲を狭めていって、Pass/Failの境界を求める方法です。

これで、検索範囲の計算上の上限値・下限値が一致したところが測定値となります。ただ、数値の精度を不必要に高く取ると、なかなか検索が収束しないので、数値の適切な丸めを行って収束条件を検討しなければいけません。

この方法、職場の先輩がプログラムをコーディングしてくださり、自分は使うだけでしたが、これだと測定値をテストプログラム上で数値として取り扱うことができるので、データの処理が楽でした。

出荷選別のときは、この測定に使ったテストベクタを使って、特性値と目標仕様から定めたスペックのストローブタイミングでファンクションテストを行います。

入力のセットアップ/ホールド時間の測定


入力ピンのACタイミングとして重要なのは、セットアップ時間とホールド時間です。入力ピンに入力されるデータが基準タイミングのどのぐらい前に確定していなければならないか、という時間の規定がセットアップ時間、基準タイミングの後どのぐらい保持していなければならないか、という時間の規定がホールド時間です。

これらも測定の考え方は出力遅延の測定と同じで、被測定ピンの入力タイミングを動かして、期待値不一致が起こる境界のタイミングをサーチして、求めたタイミング値を測定値とします。出力遅延の測定と異なるのは、期待値比較のマスクを行わないことです。入力タイミングの測定では、LSIを誤動作させることで期待値不一致を発生させるためです。

LSIの出力ピンが基準タイミングとなっている項目は、出力遅延の測定と同様に基準ピンの出力遅延をまず測定してから入力のセットアップ/ホールド時間を測定します。

セットアップ時間もホールド時間も、クロック同期設計においては、FFのデータ入力において、クロックの立ち上がり(もしくは立ち下がり)に対して規定されるもので、LSIの外部ピンについても、実際にはLSIの一番外側、つまりピンに一番近いFFのに関してのセットアップ/ホールド時間を測定することになります。

ただ、ACタイミングスペックの表記上、回路的にはクロックに対するセットアップ/ホールド時間であっても、他の信号がスペックの基準となっていることがあります。そのような場合は、限界値を測定すると、たとえばセットアップ時間が基準タイミングより後ろになってしまって、測定値として負になってしまったりします。

ACタイミングの規定と回路構成は必ずしも一致しないので、そのような場合は回路をチェックした上で可否判断をしましょう。

出荷選別のときは、この測定に使ったテストベクタを使って、特性値と目標仕様から定めたスペックの入力タイミングでファンクションテストを行います。

動作周波数マージンの測定


標準品マイコンでは、特性評価時に動作周波数の上限を測定しておいて、出荷選別時に動作周波数ごとに製品をクラス分けして、メモリーと同じように動作周波数の実力が高い製品は高い値段で、低い製品は安い値段で販売する、というビジネスをします。

したがって、マイコン製品では動作周波数の上限は当然測定します。

しかし、私が担当していたASIC製品では、製品仕様はお客様ごとに決まっているので、使うときの動作周波数も製品仕様の策定時に決まっています。したがって、製品の動作周波数の上限値を測定することはあまりありません。

そのかわり、テストの安定性がどの程度あるか、という意味でタイミング圧縮率(αと呼んでいました)という考え方で動作周波数マージンの測定をしていました。

これは何かというと、テスターの波形定義で使っている信号の変化タイミングやストローブタイミングに、一律に1よりも小さい定数をかけ算して、テスト周期も含めた全てのタイミング設定値を一律に小さくしていきながらファンクションテストを実施する、というものです。

本来、入力のセットアップ時間やホールド時間は物性で決まる値で、動作周波数が変わっても変わりません。

逆に言うと、タイミング設定値に一律に定数をかけ算すると、タイミング条件が不必要に厳しくなってしまうことがあり、何を測っているのかわからない、ということになる可能性もあります。たとえば、ある入力ピンの入力タイミングがだんだんクロックのエッジに近づいて行くことでセットアップ時間が厳しくなり、LSI内部の動作周波数上限に達する前に入力のセットアップ不足が生じて誤動作、期待値不一致を起こす、というような可能性です。

しかし、ASIC製品ではお客様の回路の詳細はわからない場合が多いので、このようなタイミングマージンの測定をして、少なくともテスト自体に不安定なところがあるかないかを確認していました。

標準マイコンでは、内部の回路の詳細がわかるので、テスト周期、つまりクロック周波数を変えていっても、不必要にタイミング条件が厳しくならないようにタイミングを追い込んで行き、動作周波数の上限値を正しく測定することができるのです。

最後に


ACテストは他にも色々な測定項目が考えられますが、一般論としてパターンがPassする領域とFailする領域の境界のタイミングを測定するという考え方は同じです。それ以外の考え方が必要な特殊なテストに出くわしたときは、回路設計者と一緒に測定方法を検討していけば良いのです。

今回は、ACテストについてご紹介しました。

0 件のコメント:

コメントを投稿