2016年6月21日火曜日

第3回〜アナログテストでごめんなさい

シングルチップマイコンには、だいぶ前からA/Dコンバーター(ADC)やD/Aコンバーター(DAC)が搭載されています。私がいた会社のマイコン製品群にも当たり前のように搭載されていました。

もっとも、性能面では、当時たとえばADCは5Vフルスイングの10bit解像度、変換時間がシステムクロックで20クロック前後、つまり10MHz動作の製品だと2μsec、変換誤差が±2LSBぐらいのスペックのものだったので、高速高性能の要求に応えられるようなものではありませんでした。今現在の製品はよく知りませんけどね。

当時やろうとしていたCPU搭載ASICでは、これらも含めてASICライブラリー化しようとしていたので、当然これらADC、DACの製造テストを考えなければなりません。

今回は、この辺のお話で、タイトルにあるように「ごめんなさい」なお話をご紹介します。ADC、DACを専門的に扱っている方から見たら、なんとレベルの低い話、と思われるかも知れません。申し訳ありません。

スペックに関する勘違い


1991年あたりから、マイコン搭載のADC、DACをライブラリー化するから、ASICとしてのテスト方式を考えなきゃ、ということになりました。入社3年目、新人研修の期間が終わって、これからバリバリ仕事をすることを期待されていた、かもしれない時期です。ペーペーであることには変わりありませんけど。

最初に取り扱うADCでは、変換精度の規定として、
絶対精度±2LSB以内
という規定がなされていまして、ASIC化した場合も、このスペックはそのままASIC製品のスペックとすることを、このASIC製品シリーズのスタンスとしていたので、製品の製造テストでもこのスペックを満足できるようなテスト方式を用いて、テストスペックを切らなければなりません。特にスペックの解釈を間違えると、テストが間違ったものになってしまいます。

半導体製品では、出荷製品は全数テスト、社外保証する項目は全て実測するのが普通ですので、スペックの解釈はとても重要です。

さてこの±2LSB以内というスペックですが、10bitの例の図をご覧頂くと、10bitの2進数の数字の並びの中で、一番重みの軽いビット(一番右のビット、LSB)の±2倍の範囲に絶対精度が収まること、というのが正しいスペックの解釈です。

言ってみれば、10ビットで表される変換値に対する±2ということなんですが、何を基準にした場合の±2なのか、ということの定義を明確化するために±2LSBという表記になっています。

ところが、これに対して私は、ビットの並びでBit0とBit1で表される数、つまり2進数表記で±11、つまり±3と理解してしまったのです。これはその後しばらくして管理職になった後、アナログのスペックの話を職場でしていて、自分の理解が間違っていた、ということに気が付いたので、どう間違っていたかは良く覚えています。素直に考えれば正しい解釈になると今は思いますけれど、当時は気が付かなかったのです。

ただ、間違いに気が付いたときに会話をしていた数人の間で、この絶対精度に関するスペック規定において、ここでLSBという単語が出てくる意味がわかりません、という人もいました。知ってる人は知ってるけど知らない人はなじみがない、という世界のものなのかもしれません

お恥ずかしい限りで大変申し訳ありません。この誤解が直接的に製品のテストに対して何か影響を与えたかどうかは、無責任ながらわかりません。

会社を辞めて5年経ちますが、今でもたまに思い出しては恥ずかしい思いをしてします。

なお、自分が直接アナログテストを担当して量産された製品は1製品ありまして、実は社外不良を出してしまいました。しかしその原因はこの誤解ではありません。それはまた別の項で書こうと思っています。

テスト方式の検討

さて、スペックの解釈を勘違いしてました、申し訳ありません、だけでは寂しいので、ADCやDACのテスト方式を検討していた頃の話を書きます。

アナログ回路のテストをするにあたっては、世の中にはアナログテスターなんていうアナログICをテストするためのLSIテスターがあるので、それを使えば良さそうですが、そういうわけにはいかない事情があって、デジタルのLSIテスターでテストしなければなりません。

シングルチップマイコン標準品ではどうやってるの?


内蔵CPUで計算すて判定するテストの概要(ADC)
ADC、DACを頂いてくるシングルチップマイコン標準品の開発部署では、LSIのテストのテストボード(LSIテスターにLSIを接続するためのテスト用基板)に、測定用の高精度DACや高精度ADC(Analog Devices社やBurr Brown社製)を搭載した外付け基板をつけて、変換結果から絶対誤差を内蔵CPUで計算して判定、というテストしていました。

ASIC化するにあたっても、この方法を踏襲、ということになったのですが、1つ大きな問題がありました。それはCPUレスの仕様を許しているため、ASICでは製品の中にCPUが必ずしもあるとは限らないこと。そして、大事なことですが、この方式検討は、製品シリーズ共通のテスト手法を検討していることなので、CPUレス仕様のテスト手法を標準手法としなければならないこと。製品個別にテスト手法が異なるのはNGなのです。

ここから先、ADCのテストを例に書いていきますが、考え方はDACも同じです。DACではマイコン側でDACで発生させた電圧を外付けのADCでデジタル変換して、その結果とDACに設定した値とで精度テストをします。

一体どうしたものか・・・

特性評価におけるデータ取得は、特性評価時に一度だけのことだからともかくとして、製造テストにおける選別を考えた場合、一体どうしたらいいのか、なんとか期待値比較でテストすることは出来ないかと色々考えました。

しかし精度をスペックとしているからには、測定値と理想値から変換精度を計算しなければいけないわけで、誰かにCPUのかわりをしてもらう必要があるわけです。誰かって言ったって、使えるものはテスターが持っている演算機能以外にないのは明白。

というわけで、大きな課題は、

  • CPUが内蔵されていない製品で、ADCの変換結果をどうやってテスターに取り込むか

ということになります。内蔵CPUでテストするなら、ADCの変換結果が入るレジスターをリードするだけですが、CPUはありませんからね。

テスターが持っている情報には何があるかと言えば、
  • 外付けのDACに設定するテスト値(ただし、テストするADCよりも2bit分解像度が高い値なのですが、なぜ2bit高いかは今回は省略)
  • テストするデバイスのどの端子に期待値不一致が起こったか

テスターには、デバイスの何かの状態を積極的に見に行って読み出す機能はありませんから、この2つの情報からADCの変換結果がいくつだったかを分析しなければなりません。

LSIテスターのフェイル情報メモリーを活用


使っていたテスターでは、DFM(Data Fail Memory)という名前が付いたメモリー(期待値不一致発生ステップ1ステップあたり、LSIの端子1本に1ビットの情報が割り振られる)に期待値比較結果が格納されることになっていて、期待値不一致が発生したピンに対応したビットには1が立ちます。

これを調べれば、どのピンに期待値不一致が発生しているかがわかります。

DAC設定値、期待値不一致発生ビット、変換結果の関係
ということは、外付けDACに設定する値に対して、期待値不一致が起きているピンに当たるビットを反転させれば、デバイスのレジスターから読み出した値になりますね!

図のように、DFMで1が立っているビットはDAC設定値のビットを反転、つまり0は1、1は0になるというわけで、DFMで0となっているビットはそのまま。

これ、何かに似ています。こういう真理値表、見たことありませんか?

そう、DACの設定値とDFMの値の排他的論理和が変換結果の算出値になっているんです。これでADCの変換結果が算出できることになったので、DACの設定値と変換結果から絶対精度を計算できることになりました。最初に書いたコードでは、ビット操作命令を色々とこねくり回して計算していましたが、XOR一発で終了。

ビット演算になれていたおかげで、気が付いたように思います。学生時代から趣味でいじってたコンピューターの知識がここでも役に立ちました。

しかし・・・


なんとか色々と工夫して、CPUがなくてもADCの精度を計算することができるようにはなったのですが、この方法はテスト時間がものすごくかかるんです。

テスターの中に入っているプロセッサーは、テスターの制御に特化した構造になっているんだそうで、演算処理を沢山させると、てきめんにテスト時間が延びるということで、技術的にやりたいことが出来ることは確認できましたが、私はこれ以降ADC、DACのテストから離れてしまったので、この方法で量産品が流れたかどうかはわかりません。

プログラムが特殊なものになるし、テストパターンの作り方も特殊だから、製品展開に使われることはなかったんじゃないかと思います。

他にもっとシンプルな方法があればよかったのでしょうが、CPUレスをカバーしようとすると、当時はこの方法しかなかったのではないかと思っています。DACやADCが乗った外付け基板がもっと高機能なものであれば話は別ですけれど。

そもそも


今になって思うと、CPUレスでADCやDACが入った製品って、需要があったのだろうか?という気がしています。

CPUレス、ADC、DACは搭載されている、という状況は、シングルチップマイコンのCPUだけ要りません、と言っているのと同じで、CPUだけは自社の他のマイコンもしくは他社製、ADCやDAC(そしてお客様の回路)だけ欲しい、ということですよね。高性能なADC、DACならいざ知らず、この程度の性能のものに対してそういうお客さんが果たしているのかどうか・・・

あるべき姿はどうだったのか?


標準品のテスト手法を踏襲して、そのテスト手法を標準化するのであれば、ADCやDACが搭載される仕様の製品においては、CPUレスを許さない、そしてADCやDAC、内蔵RAMのアドレスマップも固定にする、というところまで標準品と共通化しなければダメでしょう。

だって、標準品がテストにCPUを使うことを前提にしているんですから、前提が崩れるような製品仕様を許した時点で踏襲はできませんね。

そうでなければ、外付けのDAC、ADCが搭載された外付け基板をもっと高機能にして、外付け基板上にCPUを搭載し、このCPUがアナログテストを司るような構造にする、ということになるでしょう。

どちらを選ぶかは、お客様に近いところにいる営業系で技術がわかる方々と相談のうえで決めるのでしょうね。

この製品シリーズは20年以上前に無くなり、いまやSoCを事業をやっている半導体メーカーも日本にはほとんど無くなってしまったので、こういう話は今更の感もありますが、反省は必要ですよね。

0 件のコメント:

コメントを投稿