わが師はシミュレーター
LSI設計をされた方でこの「わが師はシミュレーター」と思われている方は多いのではないかと思います。
LSI設計においては、LSIを製品としての合否判定を行わねばなりません。
この合否判定はLSIの入力端子にデータを入力し、それによる出力端子のデータとを比較することで製品の合否を判定します。
そしてVHDLなどの論理言語が登場する前は、テキストエディタを用いて自ら”HLHHLHHHLHHLHHHLHHHLH….”と作成していました。
これ実際にやってみると結構大変です。
なぜならLSIの入出力端子は無限に用意できるわけではなく、たとえば
「QFP64パッケージでこのICを設計しよう」
「入力は20本・出力は32本」
と決めたらそれがテストで許可された端子となります。
実際QFP64パッケージでは電源端子を除けば56本くらいしかI/O端子に使用できませんので、テスト専用に追加端子を設けたとしても残り数本程度。 これでLSI内部のすべての論理の検証データを作成することになります。
搭載するトランジスタ数 or ゲート数が多くなるほど内部は複雑になり、それだけテスタ用のパターンテータを作成せねばなりません。
ICとはどのくらいの歩留まりが必要?
一般に商用LSIの歩留まりは90~95%が採算ベースといわれますので、テストパターンを準備しないでそのまま製造すると5-10%が不良品ということになります。 なんとなく95%の歩留まりってすごそうですが、こんなLSIを製品に搭載することは出来ません。
たとえ95%の歩留まりでも、1万個作れば500個の不良です。LSI単体で…
実際には複数のLSIや、アナログ部品、基板に部品を搭載するロボット、半田づけのための熱処理工程。
これらそれぞれが95%の歩留まりで作られたら…95% x 95% x 95% x ….部品数・工程数分の掛け算になりますので、おそらく製品としての歩留まりは0.00….1%とかそういう世界になってきます。ようは良品が出来ないということです。
なので、たとえ構成要素のひとつであるLSIでも極限まで歩留まりを上げないといけません。
目指すは歩留まり率99.99%以上。ここまで行ってやっとまともな工業製品を作れるLSIを世に出荷できるレベルです。
そのために論理シミュレーターでテストパターンから内部回路の動きをすべてトレースして、それぞれの信号ラインの動きが出力にどのように反映されて、それがテストパターンで確認できるか。 これらをチェックしないといけません。
最終的には、論理のテストとしては99%以上。(普通は100%があたりまえ)、故障検出が90%以上を目指してテストパターンを作成します。
シミュレーションってどんなのさ?
LSIを作るうえで実行するシミュレーションは3パターンあります。
作成するシミュレーション用のテストパターンは複数個作成できますが、3種類のテスト通しで使用します。
LSIメーカーにより用語や実施可否は多少異なりますが、一般には下記の呼び名と検査内容となります。
LSIM(論理シミュレーター)
その名の通り、論理回路として機能しているかどうかのテスト。
内部回路の遅延計算は対象にならない。
遅延を考慮しないので、シミュレーションは高速に処理される。
入力に対して出力の結果を比較して、合致することがマスト条件。
シミュレーション達成率の計算は内部ロジックの信号線(ネットリスト)がL→H / H→Lと変移して初めてカウントアップされる。
最終的には100%達成が(つまりすべての内部回路が動く)合格の条件となります。
まぁ、それほど難易度は高くはないと思います。
動く回路を作ったのなら、それをチェックする方法も作れるでしょ? ですから。
ASIM(遅延考慮シミュレーター)
LSIMが合格したあと、LSIは回路情報をもとにシリコンダイを想定して回路・配線の配置が実施されます。
基本的には配置は自動処理で行われ、極力データシートに記載されている遅延データ以上に悪くならないよう配置されます。
そして配置情報から、論理ゲートの遅延データと、配線長の長さから算出される遅延情報、配線にぶら下がる分岐情報からの遅延情報が加味されて、すべての信号の遅延データが作成された後にLSIMで合格したパターンを通してテストします。
ここでは、テストパターン1行を一周期として時間を指定し、入力は周期の初めからどの位置で入力確定するか、出力はどの位置でサンプリングするかを指定して実行します。
このシミュレーションではすべてのネットリストに遅延データを持っていますので非常に時間が掛かります。
おとよが20年前に設計していたときは、3日ほど必要だったことがざらでした。
そして長い長い論理を作ってしまって、遅延計算してみたら一周期を超える遅延になっていたりすると最悪です。
結果が間に合わないのですから、テストで確実にエラーとなります。
このため遅延が遅延を生む非同期回路というのはLSI設計では御法度。
必ずテストパターンを一周期とするクロックでD-FF(レジスタ)で信号を確定し、次のフェーズにつないでいく同期回路が鉄則になります。
求める性能が高い(周期が短い)、求める計算が複雑(遅延が発生しやすい)なほど、ASIMは困難を極めます。
場合によっては遅延回避のために回路を分解して多段パイプライン構成にして、それにあわせたテストパターンを準備して、LSIMからやり直し…というのはごくごく普通の光景。
たまにメーカーのLSI技術者さんに個別相談して「この配線をあと0.2ns分ほど短く出来ないか」とかお願いすることもありますが、これは最後の手段。多くの場合はそういう遅延によるエラーが数千各所同時に発生して涙目で回路修正することになるので、そんなのでメーカーの技術者さんにすがるわけには行かないからです。
このシミュレーションも合否判定は100%達成が条件となります。
回路のひとつたりとも遅延予想が間に合っていなのはそれ自体が設計不良なので、当然です。
FSIM(故障検出シミュレーター)
FSIMはメーカーさんによっては実施されないところもあるのでマストなシミュレーションではないですが、国内メーカーは大体実施されています。 おとよ的にはLSI設計におけるラスボス・無限地獄スパイラルに陥るシミュレーションです。
このFSIMはなにを見ているかというと、どこか回路が故障して、信号がHもしくはLに固定化している場合に検出できるかをテストするのが目的です。
簡単そうに聞こえますが、実は非常に厄介です。
というのも回路というのは常にすべての信号が何かしらの論理に変移しているのですが、特定の回路の特定の信号がちゃんとH/Lと動いていることをテストパターンで証明する必要があるためです。
極力他の回路の変移を抑えて、特定の信号だけを動くようにテストパターンを作成して、チェックする必要があります。
同時変化した信号がひとつの大きな回路に入っている場合はFSIMがものすごく困難になります。
このFSIMの達成率をあげるために、特定の信号をわざと固定化するためにテスト端子を増設してそれに対応する回路を内部に仕込むこともあります。 テストのためだけの回路を組み込んでもう一度LSIM/ASIMを実施してFSIM・・・と繰り返します。
特にフィルター回路を設計した場合は、ある条件で発生するイレギュラーな信号変移をマスクする論理なんて入っていると、「内部で押さえ込んで見えないようにしている信号変化をどうやって外部に引っ張り出すねん・・・」と自己矛盾に頭を抱えることになります。
このテストの達成率は意外に延びなくて、90%以上達成できれば御の字といわれます。
執念で95%とか達成できたときは感涙のきわみですが、その引き換えの徹夜の日々、必死にテストパターンを直しても一向に上がらない故障検出率からくるストレスでぼろぼろになっていたりします。
ここまでシミュレーションが実施されると、データ上で存在していたLSIは実際にマスク工程にまわされて早ければ2-3週間ほど、遅くとも2ヶ月程度でES(エンジニアリングサンプル)品が納入されます。
それまでにこのLSIを実際に動作させる基板やブレットボードを作成して待ち受けるわけですが、この最初に火を入れる(電源を入れる)瞬間はまさにドキドキもの。 シミュレーションでOKとなっているのですから、まず間違いない・・・と思いながらも、時として人間は動く回路のためのテストパターンを作成しているのではなく、通すためのテストパターンを作成していたりするという、目的のために手段を忘れるという愚を冒すことはままあります。
その総決算が火を入れる瞬間です。
多くの場合は評価基板のバグで動かないということはありますが、まぁ原理原則を守って作っていれば問題なく動くということが殆どだと思います。(たまーにプロセスミスで不具合を発生するということもあったりしますが…こういうときはほんと泣きたくなります)
そしてこういうシミュレーションを幾度となく実施しいると、自分がいかに冗長な回路を書いていたり、無駄な信号を作り出していることをシミュレーターに教えられます。無駄が多いほどテストパターンで動きをトレースするのが困難になってくるのですから、シミュレーターに「ここの回路動いていないぞ」と指摘を喰らうと、あぁ・・・必要のない回路を埋め込んでる・・・と自分不振になってきます。
そして無慈悲なまでに遅延計算の結果を突きつけられ、その対応のために自らの回路設計技術は磨きをかけられていくわけです。
論理言語で設計するとこういう最適化はコンパイラが行ってくれるので最近はそういう苦労話も聞かなくなりましたが、おとよの世代のLSI設計者にとってはまさに「わが師はシミュレーター」と言えると思います。