複数のテストをまとめて実行可能とする「Flow Execution」

前回はファンクション試験の手順を説明しました。パターンを定義するのはちょっと骨かもしれませんが、一度設定すればあとは簡単にテストが行えることがわかっていただけたかと思います。

さて、これらを毎回手動でいちいち起動するのは面倒です。たとえば製造から上がってきた製品を全部テストする、あるいはメーカーから納品されたMCUを検証するといったケースでは、こうしたテストをまとめて行う方法が欲しくなります。

こうしたケースで用意されているのが「Flow Execution」の仕組みです。前回までのテストが終わった段階で、左の「Flow Execution」のボタンを押すとPhoto01の様な画面になります。ここには前回まで実施した、「PinContact」と「Funtion Test」の2つがラインアップされています。

Photo01:これはまだ実施前です。未実行のテストは白で示されます

この状態で中央上の実行ボタンを押すと、それぞれのテストが連続的に実行されます。この際に、それぞれのテストが正常に終了する/しないで次の動作を選択することが出来ます。たとえばPinContactでFailだったら物理的に内部が壊れている可能性があるので、Function Testを実施するのは無駄だし、長時間通電させるのは危険でもあるから、即座にテストを打ち切る事が好ましい訳です。Photo02の設定では、まずPinContact試験を行い、そこで正常なら次のテスト(Pass Action = Next)、異常があれば停止(Fail Action = Stop)とすることで安全にテストが行えます。

Photo02:テスト実施後は、下側のログ領域に各テスト結果が示され、さらにテスト一覧で正常に終了した項目が緑で示されることで、容易に判断できます

半導体デバイスの動作電圧範囲を詳細に調べてくれるIP「Shmoo Plot」

さて、次にこれらの結果をもう少し詳しく分析する手順について説明します。

前回まで紹介したテストは、いずれもCTSの提供するアルゴリズムIPと呼ばれるものを利用して(Photo03)、コンタクト試験やファンクション試験を実施しました。これとは別に、CTSからはアナリシスIPと呼ばれるものが提供されています(Photo04)。前者は様々な条件を設定して測定を行うもので、後者はその測定結果を分析するもの、と考えればよいでしょう。

Photo03:これとは別に基本ソフトウェアが必要ですが、これはすでに説明したので割愛します

Photo04:分析ツール各種。様々な機能が用意されているのが判ります

まず代表的なツールの1つとして、「2次元特性評価ツール(Shmoo Plot)」をちょっと実施してみたいと思います。たとえばMCUの場合、定格の動作電圧範囲というのは製品ごとにきちんと定まっています。今回利用したPIC12F1822の場合、

16MHz駆動: 1.8V ≦ VDD ≦ 5.5V
32MHz駆動: 2.5V ≦ VDD ≦ 5.5V

とされており、この範囲に収まっていれば16MHzなり32MHzの定格動作が保障されています。ただこれは多分にマージンを含んだ値でもあり、こうしたマージン抜きに、どの程度の動作電圧でどの程度の速度で動作するか、という事を確認したい場合は、電圧と速度を変化させながらファンクション試験を行いつつ、どこからどこまで動作するのか、を確認する必要があります。これを簡単に行ってくれるのがShmoo Plotです。

今回は、前回説明したFunction Testをそのまま流用して電圧/速度条件を調べてみることにします。

まず、あらかじめ必要なIPを入手します。ここで必要になるのは、「2次元特性評価用ツール」です。これを他のIPと同様に入手、インストールをまずは行ってください。これが済んだ状態で、「Analysis Tools」を選ぶと、Analysis Toolとして「Shmoo Plot」が選択できるようになります(Photo05)。この際に、上段の「Measure Item」で、「Function Test」を選んでおいてください。

Photo05:ここで「Shmoo Plot」をダブルクリックすると、次の画面に移動します

次の画面(Photo06)では、実際に設定を行います。Shmoo Plotは2次元の形でパラメータを変化させて結果をみるツールなので、まずはX軸方向のパラメータを選ぶ必要があります。今回はX軸のパラメータを速度にするので、Periodを選びます(Photo07)。これでX軸方向のパラメータが決まりました。ちなみに、パラメータ選択時にタイミングセットを選ぶ必要があります。デフォルトはTS1が選ばれているはずですが、確認しておく必要があります。

Photo06:画面は前回のFunction Test画面に近いものですが、ほとんどの箇所がグレーアウトされており、選択可能な項目だけが青のリンクで示されます

Photo07:Periodをクリックすると色が変わり、選択されたことが判ります

次はY軸のパラメータです。今回は電圧と速度の関係なので、Y軸にはVDDを選ぶ必要があります。そこで、Power Supplyタブを選び(Photo08)、Source Valueを選びます(Photo09)。

Photo08:こちらでは唯一Source Valueだけが選択可能です

Photo09:これでVDDがY軸に選ばれました

次に、それぞれの値の範囲を選びます(Photo10)。現在はX軸が31.25ns、Y軸が5Vになっているのが右の表で見て取れますが、これは元々の設定値です。そこで、もう少しレンジを広げてみます。X軸の方は10ns(100MHz)~40ns(25MHz)まで、5ns刻みに7ステップ、Y軸の方は1Vから5Vまで、250ms刻みに設定をしてみました(Photo11)。定格は32MHz、つまり31.25ns動作になるわけですが、もう少し上まで動作周波数が引っ張れないか、というのとついでに動作電圧を下げられないか、という虫の良いテストを行ってみたわけです。

Photo10:この画面は左の"Setup Axis Value and Execute"を押すことで出現します

Photo11:表のStart/Stop/Step/Countは、それぞれ3つを入力すると残り1つを自動計算して入力してくれます。下のグラフの中の黒丸は定格値を示しています

なおこの画面で注意は、

"Timing values track Period"
"Level values tack Power Supply"

にチェックを入れることです。前者は、諸々のタイミングパラメータをPeriod(X軸のパラメータ)にあわせて自動的に変化させる指定、後者は信号電圧を電源電圧(Y軸のパラメータ)に連動させる指定になります。これをチェックしないと、Periodを上回る速度で信号が入ってしまったり、あるいはVDDを上回る電圧で信号が印加されてしまったりして、最悪MCUが破壊されるので注意してください。

さて、ここまでの設定が終わったら実行してみましょう。上の実行ボタンを押すと動作が始まります。ここでは合計で7×17=119回、細かくPeriodとVDDを変化させながらFunction Testを行うので、少々時間がかかりますが、その結果がリアルタイムでグラフに反映されます(Photo12)。

Photo12:右の凡例にあるように、緑は正常動作、赤がエラー、黒はそもそも動作しないことを意味します

結果で言うと、

  1. VDDを2.75V以上にすれば、10ns(100MHz)でも動作する。
  2. 1.75V~2.5Vの範囲では、正常動作する周波数範囲が変化する。
  3. VDDが1.75V未満だと、どの周波数でも動作しない。

といった事が判ります。元々の定格を考えれば、ずいぶん上まで引っ張れる事がわかります。

ステップをもう少し細かくすることで、動作するぎりぎりの領域をもっと絞り込むことも容易です。Photo13ではPeriodを10ns~20nsまで1ns刻みで、VDDを1.5Vから3Vまで0.1V刻みで変更してみました。

Photo13:今回は電圧を抑えつつどこまで動作周波数を上げられるかという形でパラメータを設定しましたが、逆にどこまで電圧を下げても動作するか、あるいは定格以上に電圧を上げてどこまで動作周波数を上げられるかといったテストもパラメータ次第で簡単に行えます

この範囲で見ると、

  1. 10ns(100MHz)動作には2.8Vが必要。11ns(90.9MHz)も2.7V以上が必要で、あまり変化しない。
  2. 12ns(83.3MHz)になると2.5Vまで電圧が下げられる。14ns(71.4MHz)では2.3Vまで下げられるが、ここまではなだらか。
  3. 15ns(66.7MHz)~17ns(58.8MHz)は全部2.1Vで動作する。
  4. 19ns(52.6MHz)以下は全部1.9Vで動作する。これ以下には下げられない。

といったわけで、テストに使った「PIC12F1822」の個体は、ぎりぎり追い込めば52.6MHz@1.9Vあたりで動作することがこのテストで判明したわけです。これがこの個体の一番エネルギー効率が良い数値で、次が66.7MHz@2.1Vあたりでしょうか。もっともこれらは、本当にマージンぎりぎりの値ですし、動作温度によってこの特性は当然変化するわけですが、逆に言えばそうした検証が簡単に実施できるのがこのShmooという訳です。

GUIベースでエラー箇所の参照と確認が可能なIP「Pattern Viewer」

次に、デバッグとか検証に便利な「Pattern Viewer」をご紹介します。Function Testの結果はコンソールの他、CSVフォーマットのログファイルに出力されますが、小規模なパターンファイルはともかく、大規模とかエラー箇所が複数あるといった場合、後でCSVとパターンファイルを照らし合わせながら問題点を特定するのはなかなか面倒です。そこで用意されているのがPattern Viewerで、GUIベースで参照と確認が可能です。

こちらに必要なIPは「動作パターンデータ比較判定表示ツール」で、他に必須ではありませんが「オンラインパターン変更機能」があると有用です。これらのIPもインストールしておいてください。

さて、Function Testが終わった段階でAnalysis Toolsを選び、ここで「Pattern Viewer」を選びます(Photo14)。

Photo14:ここで真ん中の選択項目から"Pattern Viewer"をダブルクリックします。ちなみに一度もFunction Testを実行しないと、ここでエラーダイアログが表示されて先に進まないので注意してください

Pattern Viewerは直前のFunction Testの結果を取り込んで、こんな具合に表示します(Photo15)。今はまったくエラーが無い状態の結果なので、特に異常は示されていません。ところが、もしエラーがあるとこんな具合にその場所を赤で表示してくれます(Photo16)。

Photo15:この場合は、別にPattern Viewerの出番はありません

Photo16:これは前回説明した、故意にエラーを起こすパターンファイルを使った場合の結果です

本来RA0はLであるべきなのに、パターンファイルにはHと記載しているので異常ありと判断されたわけです。このように問題箇所を簡単に確認することが出来ます。さらに、「オンラインパターン変更機能」もインストールしておくと、マウスの右クリックでこのパターンをその場で書き換えることが出来ます(Photo17)。ここで書き換えて保存すれば、エディタで再びパターンファイルを編集する手間が省けるというわけで、大規模なパターンを扱う場合には非常に便利な機能になっています。

Photo17:「ロジックアナライザ」の話は次回ご紹介します

さて、この連載の最後となる次回は、アナリシスIPをもう少しご紹介したいと思います。