(57)【要約】【課題】  複雑な回路や無用な外部ピンを必要とせずにＡＳＩＣのテストを行う。また、煩雑な手続きやプログラムエリアの無駄な使用をせずにＡＳＩＣのテストを行う。【解決手段】  マイクロプロセッサと記憶手段を有する集積回路の動作を試験する集積回路の試験方法。記憶手段にプログラムを格納する格納工程とプログラムに従って制御を行う制御工程と有し、前記制御工程は、前記集積回路の動作テストを行う。【選択図】  図１
2005164265.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサと記憶手段を有する集積回路の動作を試験する集積回路の試験方法であって、
前記記憶手段にプログラムを格納する格納工程と
前記プログラムに従って制御を行う制御工程と有し、
前記制御工程は、前記集積回路の動作テストを行うことを特徴とする集積回路の試験方法。
【請求項２】
前記制御工程は、前記マイクロプロセッサにより行われることを特徴とする請求項１に記載の集積回路の試験方法。
【請求項３】
前記動作テストは、バウンダリ・スキャンを用いて行うことを特徴とする集積回路の試験方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、記録ヘッドを用いて記録を行うプリンタのような電子機器を制御する集積回路（ＡＳＩＣ）の動作を検証する方法に関するものである。
【背景技術】
【０００２】
ＡＳＩＣ（集積回路）の製造技術が進歩するにつれ、単一のＡＳＩＣに、より多くの論理機能が収容されるようになっている。現代のＡＳＩＣには、１つのシリコン・チップ上に多数のゲートが配置され、このようなゲートを相互接続することによって、例えば、プリンタ画像処理のような複雑な機能を実現可能となっている。そうした大規模ＡＳＩＣの製造には、その内部にミスがないことが要求されるため、チップの製造後に各種電気的テストを行う必要性が生じている。
【０００３】
しかしながら、機能がより複雑になるにつれ、回路内の各装置の検証や電気的テストにかかるコストならびに困難さも増している。電気的テストの観点から言えば、ＡＳＩＣの各ゲートが正しく機能していることを全体的に検証するためには、原則的に、（ディジタル的に、各ゲートがスタックオープンにもスタッククローズにもなっていないと判断し、）ゲートの各々を個別的に実行できるだけでなく、回路内の他のゲートと関連性を保ちながら、想定可能なあらゆる演算の組み合わせによって実行できなければならない。
【０００４】
従来、このようなチップ・テストは、テスト・ベクタを用いて所望のテストを実行する自動検査装置（ＡＴＥ）によって行われていた。ここで、テスト・ベクタとは、一定時間中のすべてのパッケージ・ピンに対する所望のテスト入力（または信号）、関連する１クロックパルス（または複数パルス）、予想されるテスト出力（または信号）のことを言い、また、ある特定のマクロの検査を試みる場合に用いられることも多い。複雑な機能を有するＡＳＩＣでは、膨大なテスト・ベクタを有することになり、従って、テスト時間が長くなることも多かった。
【０００５】
また、このような膨大なテスト・ベクタを設計者が自ら作成することは、現状、かなり高速になった事象駆動型シミュレータが使用できるようになり、かなりの改善がなされたものの、未だ、工数上、大変な負担を強いられるものである。
【０００６】
このような問題より、近年では、テスト容易化設計（ＤＦＴ）が推進されている。ＤＦＴの目的は、外部入力・出力からＡＳＩＣの内部を観察する能力を高めることにある。すなわち、本来、ＡＳＩＣに期待される機能（例：プリンタ画像処理、など）の他に、その機能をＡＳＩＣの特定のピンを通して透過させることが可能なモヂュールをも予め内蔵させ、簡単なテスト・ベクタ入出力にてチップ・テストを行うことを可能とする。
【０００７】
ＤＦＴで良く使用される例の１つに、スキャン・パスが挙げられる。スキャン・パスは、一連の同期クロック式マスタ・スレーブラッチ、または、レジスタによって構成され、各ラッチは、論理回路の特定ノードにそれぞれ接続されている。このようなラッチは、論理回路ノードを既定の状態に予め設定し、直列データストリーム（スキャンイン）によってロードすることができる。したがって、通常の方法で、論理回路のエクササイズを行うことができるうえ、（スキャンラッチを備えた各ノードの）演算結果は、各ラッチに記憶される。ラッチの内容を直列にアンロード（スキャンアウト）することによって、関連ノードの特定のテスト演算結果を読み出して、誤ったノード演算の分析を行うことができる。
【０００８】
また、この時必要とされるテスト・ベクタは、通常、検査パターン自動生成ツール（ＡＴＰＧ）を使用することで、最も、合理的、かつ、縮小されたベクタが作成することが可能となっている。が、現状、このスキャン・パスによるＡＳＩＣテスト手法で、全てのＡＳＩＣ検査を行うことが可能かというと、そうではない。即ち、前述したように、スキャン・パスによるＡＳＩＣテスト手法は、一連の同期クロック式マスタ・スレーブラッチ、または、レジスタによって、テストされるべきモヂュール（ＤＵＴ）が観察可能となっていることが大前提である。
【０００９】
よって、（１）ＡＳＩＣ内に一連の同期クロックと非同期で動作するラッチが存在する場合、（２）（動作条件が同期式・非同期式に関わらず）非同期リセット有するラッチ場合、そして、（３）フロアプラン実施後、ＥＣＯにより新たな同期式ラッチを追加した場合、など、スキャン・パスから外れる論理コーンが存在する確率は、十分に無視できるほど低くは無いのである。
【００１０】
例えば、ＡＳＩＣの検査にて、スキャン・テストによりチップの約９０％部分のテストを行い、残りの１０％部分（＝スキャン・パスより外れたモヂュール）を設計者が作成したテスト・ベクタにて検査していく場合が多い。
【特許文献１】特開平６−１４８２８１号公報。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、上述するＡＳＩＣ検査（テスト）方法には以下のような欠点が存在した。即ち、最近の技術トレンドとして、１つのチップ内に、ＭＰＵ、ユーザ・ロジック（ＵＤＬ）、ＲＯＭ・ＲＡＭ等の各種メモリなどが含まれたシステム・オン・チップ（ＳＯＣ）と呼ばれるタイプのＡＳＩＣで、チップ内システム制御用のデータ・バスやアドレス・バスが内部で閉じている（パッケージの外部に開放されていない）場合、チップ内部のシステムバスの必要な部分を外部に出し、そこからベクタを与えて行きながらチップ・テストを行うのが通常である。
【００１２】
例えば、ＡＳＩＣのパッケージに、予め、そのバス信号を外部ピンにアサインして、いつでも操作可能な状態にしておく手法がある。この手段によると、ＡＳＩＣ通常の動作時に関係が無く、チップ・テストの時にのみ使用されるピンが、少なくともシステムバス制御信号分、ＡＳＩＣの外部ピンに存在することになる。
【００１３】
ＡＳＩＣの部品単価はパッケージサイズに大きく依存するので、外部ピンを増やし、大きな外装のパッケージ仕様で設計をするということは、簡単にコスト増に結びつくため、行うことはまれである。
【００１４】
従って、現在採用されている手法としては、チップ内部のシステムバスを、ある外部ピン（即ち、それは、通常動作モード時には、モータ制御などの他の機能がアサインさせている外部ピン）にアサインし直せるようなテストモードを作成し、チップ・テスト時にはそのテストモードに入り、アサインし直された外部ピンよりテスト・ベクタを与えて行う方法がある。
【００１５】
しかし、チップ内部のシステムバスを全て外部にアサインし直すとなると、その本数はアドレス・バス、データ・バス、制御用バスと、総計で６０本以上となる。従って、あるテストモードでシステムバスを全て外部にアサインし直すと言うことは、同数のピンの機能が変わりに使用できなくなる。そのために、その部分の機能テストは行えなくなる。例えば、テスト時にのみ、モータ制御ピンにシステムバスをアサインした場合、そのモータのテストは行えない。
【００１６】
このような場合、テストモードを何種類にも分類し、「テストモード１では、機能Ａのピンにシステムバスをアサイン、機能Ｂは使用可能としてその機能テストを行う」、「テストモード２では、機能Ｂのピンにシステムバスをアサイン、機能Ａは使用可能としてその機能テストを行う」と、モード毎に行うべき機能テストを決めて行う方法もある。しかし、必ず全ての機能ピンがテストできるように細かくテストをプラニングする場合など、各ピンが使えるモードが必ず１モードは存在するように設定される必要があるので、システムバスのアサインの方法が増加してしまう（例えば２０種類近く）。このような場合、各テストモードに応じてシステムバスの外部ピンのアサインをし直す機構などは、単なるセレクタであるので、単純な機構に見えるが、６０本以上あるシステムバスの信号線を、モードで選択できるようにすると、チップ上での回路規模が大きなものになる。この外部ピンの周辺部では、ＡＳＩＣを作成する上で、特に、内部の信号のタイミング調整が困難な所であり、この部分に大規模回路が存在すると、タイミング調整をさらに難しくなる。
【００１７】
最近では、例えば、ＡＲＭ社のＴＩＣ（ｔｅｓｔ  ｉｎｔｅｒｆａｃｅ  ｃｏｎｔｒｏｌｌｅｒ）のように独自のテスト機構を持つプラットホームなどがあり、より少ない外部ピンで（＝即ち、外部ピンへのテストバスアサインが楽になり、テスト機構回路も小さくなる）、内部の大きなシステムバスをマニピュレートできるような仕組みも存在する。
【００１８】
しかし、このテスト機構自体が、半導体ベンダのチップテストポリシに整合しておらずテストに使用できないと言う場合もある（テスト時のシステムバスのリードサイクルが他社（半導体ベンダ）の装置にマッチングしない理由のため）。もちろん、同様の仕組みをベンダの装置に整合するよう、自ら設計し直すという方法もあるが、バス集中が起こらないようなテスト機構を設計し、それがＡＳＩＣシステム内部のバスマスタとして機能するような調停回路まで組み込むとなると、大きな作業負荷になるのである。
【００１９】
さらに、もう１つ挙げられるテスト・ベクタによるテスト機構として、ＲＯＭ化オブジェクトとＭＰＵによるテストある。即ち、ＭＰＵがＲＯＭから機械コードをフェッチして、デコードし、動作を行う。この動作の中で、ＵＤＬ必要な部分をスティムレートしていくというものである。この手法の拙いところは、ＲＯＭフェッチバスがＡＳＩＣの外部ピンに出ていなければ、テストの実施が困難になることである。
【００２０】
仮に、ＲＯＭフェッチバスがＡＳＩＣの外部ピンに出ていれば、ＡＳＩＣより出力されるリクエスト信号に応じて、ＰＣに対応した機械コードをＡＳＩＣの外部ピンに与えて行くことでテストが行える。が、外部ピンが出ていない場合、ＲＯＭ化オブジェクトにテスト・ベクタを、予め実装しておく必要がある。これは、ＲＯＭ内のプログラムエリアが、チップ・テストのために使用され、少なくなる。そのコードを入れ替えて使用するには、向かない。
【００２１】
上述したように、本件は、複雑な回路や無用な外部ピンを必要とせずにＡＳＩＣのテストを行う。また、煩雑な手続きやプログラムエリアの無駄な使用をせずにＡＳＩＣのテストを行うことを目的とする。
【課題を解決するための手段】
【００２２】
上述の課題を解決し、目的を達成するために、本発明はマイクロプロセッサと記憶手段を有する集積回路の動作を試験する集積回路の試験方法であって、前記記憶手段にプログラムを格納する格納工程と前記プログラムに従って制御を行う制御工程と有し、前記制御工程は、前記集積回路の動作テストを行うの具備する。
【発明の効果】
【００２３】
以上説明したように、本発明によれば、ＡＳＩＣに元々備えている機能を有効に使うことで、ＡＳＩＣテストのための複雑な回路や、無用な外部ピンの増加を抑制し、煩雑な手続きやプログラムエリアの増加を抑制することができ、簡単な構成でチップ・テストを可能とする。
【発明を実施するための最良の形態】
【００２４】
以下に、本発明に係る実施の形態について添付図面を参照して詳細に説明する。いかに述べる実施形態では、プリンタを制御する集積回路（ＡＳＩＣ）を例にとって説明する。このＡＳＩＣには、ＭＰＵ、ＵＤＬ、及び、各種メモリ（ＲＡＭ、ＭＵＰ用のＲＯＭ、等）が含まれているものとして説明を行う。
【００２５】
［第１実施形態］
図１は、本実施の代表的な構成を示したものである。テストされるべきＡＳＩＣ１−１があり、これは、自動検査装置（ＡＴＥ）１−２に、ＡＳＩＣ１−１の外部ピン１−３で接続され、テストが行われる。この外部ピンには、ＡＳＩＣ１−１の動作に必要なＣＬＫピンやＲＥＳＥＴピンなどが、含まれている。
【００２６】
次に、ＡＳＩＣ１−１の内部であるが、これも上記で想定した通り、プリンタ全体のシステムを管理するＭＰＵ１−１１、ユーザにより設計された回路ブロックＵＤＬ１−１２、ＲＡＭ１−１３、そして、ＭＰＵ１−１１用のＲＯＭ１−１４を含んでいるものとする。ここで、ＲＡＭ１−１３は、Ｄ−ＲＡＭ、Ｓ−ＲＡＭのどちらでも構わなく、また、場合によっては、複数のＤ−ＲＡＭ、Ｓ−ＲＡＭモヂュールが幾つか組み合わさったものであっても構わない。
【００２７】
ＭＰＵ１−１１と各種モヂュールとの接続は、基本的に、アドレス・バス１−１５とデータ・バス１−１６でモヂュール間のデータ通信が行われるものとする。特に、アドレス・バス１−１５は、一旦、アドレスデコーダ１−１７に入力され、各モヂュールに対するチップセレクト信号群１−１８を生成し、それを各モヂュールにアドレス・バスとバンドルして配信することでデータ通信制御が行われているものとする。
【００２８】
例えば、ＭＰＵがＵＤＬ１−１２にアクセスする場合、チップセレクト信号群１−１８の中のＣＳ１−１８０がアクティブになり、ＭＰＵがＲＡＭ１−１３にアクセスする場合、チップセレクト信号群１−１８の中のＣＳ１−１８１がアクティブになり、ＭＰＵがＲＯＭ１−１４にアクセスする場合、チップセレクト信号群１−１８の中のＣＳ１−１８２がアクティブになる。ここでは、便宜上、３つのＣＳを用いて説明するが、通常、アクセスに不可欠な本数分のＣＳがチップセレクト信号群１−１８には含まれている。
【００２９】
次に、テスト回路機構について説明する。まず、ＡＳＩＣ１−１にＲＡＭ１−１３やＲＯＭ１−１４が内蔵される場合は、必ず、ＲＡＭ１−１３とＲＯＭ１−１４内の各セルが正常に製造されたかを確認するためのテスト機構（テストブロック）が実装される。
【００３０】
ここでは、メモリテスト手段（メモリテスト回路）１−１９と呼ぶことにする。また、テスト時は、外部ピンのアサインが通常動作時と異なるので、外部ピンの状態を決定するテスト用バスセレクタ１−２０が設けられる。さらに、ＡＳＩＣ１−１の外部ピン１−３の中には、規定のテストモードに入ったことをＡＳＩＣシステムに知らせるためのテスト制御ピン１−３１も設けられる。このテスト制御ピン１−３１は、テストモードの切り分けを行う数に応じて設けられる。
【００３１】
この実施形態では、必要なモードの数、即ち、３つのモードが切り分け可能であれば十分なので、例えば、図−３のように、テスト制御ピン１−３１を２本と決めて、（ｐｉｎ０，ｐｉｎ１）＝（０，０）：通常動作モード、（ｐｉｎ０，ｐｉｎ１）＝（１，０）：ＲＡＭテストモード、（ｐｉｎ０，ｐｉｎ１）＝（０，１）：シナリオテストモードと、ピン（ｐｉｎ０，ｐｉｎ１）の状態に応じて、モードの定義をすることにする。
【００３２】
＜メモリテスト手段についての説明＞
次に、メモリテスト手段１−１９の動作について、若干の説明をする。例えば、メモリＢＩＳＴ（ｂｕｉｌｔ−ｉｎ  ｓｅｌｆ−ｔｅｓｔ）等が、メモリテスト手段の典型で、一般的な構成としては、図２のような構成となる。
【００３３】
以下、公知の技術内容となるが、動作の概略を説明する。まず、テスト制御ピン１−３１の入力により、ＲＡＭ１−１３の分離テスト可能なモードにＡＳＩＣ１−１のシステムを入らせる（本実施形態では、（ｐｉｎ０，ｐｉｎ１）＝（１，０）：ＲＡＭテストモードと言うことになる）。
【００３４】
ここで、メモリテストに必要とされる信号線は、テスト用バスセレクタ１−２０を通って、ＡＳＩＣ１−１の外部ピン１−３からアクセス可能な状態になる。以上の動作によって、ＡＳＩＣ１−１のシステムはＲＡＭ１−１３のテストが可能な状態となる。
【００３５】
次に、ＡＳＩＣ１−１の外部ピン１−３にアサインされたメモリテスト外ピンからテスト設定２−１を行う。ここで言うテスト設定とは、例えば、検査アドレス：０ｘ−−−−、確認に使用するデータ：０ｘ−−−−、検証開始：ｏｎ、等の設定である（これらは抽象度の高いレベルでの設定である）。これらのテスト設定２−１を受けたメモリＢＩＳＴ（メモリテスト手段）１−１９は、それをＲＡＭ１−１３に合わせた形での具体的なトランザクションで検証を行う。
【００３６】
即ち、まず、メモリＢＩＳＴ１−１９は、テスト設定２−１にて指定されたアドレスに指定されたデータをＲＡＭ１−１３に書き込みを行う。この時、ＲＡＭ１−１３メカニズムに合わせた形で書き込みを行う。例えば、ＲＡＭ１−１３がＳ−ＲＡＭであればＳ−ＲＡＭ用のタイミングで、ＳＤ−ＲＡＭであればＳＤ−ＲＡＭ用のタイミングを発生させ、メモリＢＩＳＴ（メモリテスト手段）１−１９はＲＡＭ１−１３への書き込みを行う（ここでは、それを（メモリに対する）トランザクションを含めたテスト信号入力２−２と呼ぶことにする）。
【００３７】
さらに、メモリＢＩＳＴ１−１９は、この書き込みを行ったアドレスから、データのリードバックを行う。この時、ＲＡＭ１−１３メカニズムに合わせた形でデータの読み出しをする（ここでは、それを（メモリに対する）トランザクションを含めたテスト信号出力２−３と呼ぶことにする）。
【００３８】
次に、メモリＢＩＳＴ（メモリテスト手段）１−１９は、書き込みを行ったデータ値と（これはＲＡＭ１−１３に書き込む前に、メモリＢＩＳＴ（メモリテスト手段）１−１９の中のレジスタに保持されている必要がある）、読み出したデータ値を比較し、両者が同じ値の場合は、検査アドレス：０ｘ−−−−のセルは正常と判断する。両者が異なる場合は、検査アドレス：０ｘ−−−−のセルは異常と判断する。その結果を、ＡＳＩＣ１−１の外部ピンを通して伝えるのである（通常、これは１ｂｉｔの信号の“Ｈ”か”Ｌ”か、で簡単に判断可能である）。
【００３９】
以上の動作を、ＲＡＭ１−１３の全てのセル（がアサインされたアドレス）に繰り返すことで、ＲＡＭ１−１３のテストを行う。
【００４０】
前述したように、この技術は公知であり、以下の様な長所を有していると言われている。即ち、（１）メモリアクセスの部分をＢＩＳＴ（＝メモリテスト手段）が有しているために、ＡＳＩＣの外部ピンに、メモリアクセスに必要な信号を全て出す必要が無い（即ち、テスト用バスセレクタが簡素化可能である）、（２）テストがメモリのみにフォーカスされているためＡＳＩＣの外部ピンの実用途を考慮せず、テスト用のピンを外部にアサインすることが可能（即ち、メモリと共にモータのテストを行うわけではないので、モータのピンにテスト制御ピンをアサインできる）、等、である。
【００４１】
＜動作についての説明＞
図５は、本実施形態の動作の示したフローである。まず、テスト開始直後（Ｓ−１００）、ＡＳＩＣ１−１のシステムは、ＲＡＭ１−１３の分離テスト可能なモードに入る（Ｐ−１０１）。即ち、テスト制御ピン１−３１のピン（ｐｉｎ０，ｐｉｎ１）＝（１，０）：ＲＡＭテストモードとして、ＲＡＭ１−１３の分離テスト可能なモードに入る。この時、ＡＳＩＣ１−１のシステムによっては、外部リセット信号を入れないと規定のモードに入れない場合もあるので、そのような場合は、ＡＳＩＣ１−１のシステムの制約に従う。
【００４２】
次に、ＲＡＭテストモードの動作を用いて、ＲＡＭ１−１３にプログラムデータを書き込んでいく（Ｐ−１０２）。このプログラムは、ＭＰＵ１−１１で実行可能なものであり、その実行内容は、ＭＰＵ１−１１でＡＳＩＣ１−１をテスト可能な物である必要がある。例えば、それは、ＵＤＬ１−１２の中でスキャン・パスから抜けた部分でも良いし、各種分離テストにて抜けが合ったパスでも良いし、ＡＳＩＣ１−１の外部ピン１−３のＤＣテストでも良い。要は、ＡＴＰＧや分離テストから抜けてしまったテスト項目で、工場出荷時に検証しておきたいシナリオを、ＭＰＵ１−１１で実行可能なプログラムにすれば良いのである。
【００４３】
必要なプログラムをＲＡＭ１−１３に書き込み終了した後、一旦、ＲＡＭ１−１３の分離テスト可能なモードから抜け（Ｐ−１０３）、異なるテストモードに入る。この時、ＡＳＩＣ１−１のシステムによっては、外部リセット信号を入れ直さないとモード変更が出来ない場合もあるので、そのような場合は、ＡＳＩＣ１−１のシステムの制約に従う。
【００４４】
この時、次に入るべきモードは、ＡＳＩＣ１−１の外部ピン１−３のピン（ｐｉｎ０，ｐｉｎ１）＝（０，１）：シナリオテストモードである（Ｐ−１０４）。このモードは、上記でＲＡＭ１−１３に書き込んだプログラムを、実際に、ＭＰＵ１−１１で実行するモードである。この時、当然、何のメカニズムも無しで、ＭＰＵ１−１１を走らせると、ＰＣ（ｐｒｏｇｒａｍ  ｃｏｕｎｔｅｒ）は間違いなくリセットベクタに進むので（飛んでしまうので）、ＲＡＭ１−１３上のテストシナリオは実行されなくなってしまう。
【００４５】
従って、本実施形態では、ＡＳＩＣ１−１の外部ピン１−３のピン（ｐｉｎ０，ｐｉｎ１）＝（０，１）：シナリオテストモードに入った際、アドレスデコーダ１−１７と連動し、ＲＯＭ１−１４のシステム上のアドレスと、ＲＡＭ１−１３のシステム上のアドレスとを入れ替えてしまう機構（構成）とする。
【００４６】
即ち、このアドレスの入れ替えがあった後、ＭＰＵ１−１１が、ＲＯＭ１−１４上のプログラムにアクセスしようとすると、そこのアドレスは、既にＲＡＭ１−１３が存在するので、上の工程で書き込まれたＲＡＭ１−１３のオブジェクトにアクセスすることになるのである。これは、即ち、ＭＰＵ１−１１が、自らＡＳＩＣ１−１の検査をすることに他ならない。
【００４７】
このようにして、ＭＰＵ１−１１を用い、ＲＡＭ１−１３内にある実行可能なプログラム＝検証シナリオを基に、ＡＳＩＣ１−１の各所のテストを行っていく（Ｐ−１０５）。そして、必要なテスト項目の実施が終了した後、テストを終了する（Ｅ−１０６）。
【００４８】
終了の方法は、ＡＳＩＣ１−１のシステムやＭＰＵ１−１１は、ＡＳＩＣ１−１の外部ピン１−３から与えられるクロックを基準に動作していくので、検証シナリオを最後まで行うのに必要なクロック数を予め数えておいて、その数の（＋α）のクロックを与えたのを確認後、テストを終了すれば良いのである。
【００４９】
検証シナリオを最後まで行うのに必要なクロック数は、実際のＡＳＩＣ１−１をテスタに書ける前に、事象駆動型シミュレータでパターン確認を行う際に、カウントすることができる。また、テスト終了時に、実行可能なプログラム＝検証シナリオが暴走するのが心配な場合は、図７に示すプログラム（Ｃ言語での記述例）のように、ダイナミックストップルーチン（＝無限ループ）を使うことで、ＭＰＵ１−１１のＰＣは適当な位置にステイし続けるようになる。
【００５０】
まず、本例では、メモリテスト手段１−１９をＢＩＳＴであるかのように仮定して、説明を行っていたが、これは必ずしもＢＩＳＴである必要は無い。例えば、メモリテスト手段１−１９が検証すべき対象がＳ−ＲＡＭ等の場合、あまりにもメモリのインターフェイスが単純なため、ＢＩＳＴを解さず、Ｓ−ＲＡＭのバスを全てＡＳＩＣ１−１の外部ピン１−３にアサインしてしまって、直接、メモリテストを行う場合も多々ある。
【００５１】
また、Ｓ−ＲＡＭにテストシナリオを書き込むことが可能なので、本実施形態の特徴的な動作、即ち、フローチャート−１を実施することが可能である。逆に、ＢＩＳＴを使う場合、アドレスやデータも内部で自動生成してしまうタイプのＢＩＳＴを設計してしまうと、本件には使用できなくなる。アドレスについては問題ないものの、データについては自由に設計者の意思通りのコードが書けなければ、テストシナリオは実現できない。
【００５２】
さらに、ＡＳＩＣのチップ・テストの結果を、外部ピンに反映させられるような仕組みを作る。即ち、シナリオテストモードでは、テスト用のバス等を、一切、ＡＳＩＣ１−１の外部ピン１−３にアサインしていない。モータの様にテスト（＝操作）の結果がＡＳＩＣ１−１の外部ピン１−３のどれかのピンに反映される場合は、全く問題ないのだが、ＤＭＡの様な機能をチップ・テストで検証したい場合など、ＡＳＩＣ１−１の内部で完全に処理が閉じている場合は以下のように行う。
（１）ディスティネーションにあるＤＭＡの結果を順次読み出し、汎用ポートに小出しにしていく。（２）予めＤＭＡの結果の期待値をもテストシナリオ内にデータテーブル化し、それも含めてＲＡＭ１−１３にダウンロードしておく。そして、期待値比較も行えるようなシナリオ構成にし、不一致が出た場合はモータを左回転させ、正しい場合は、モータを停止させつづけるような信号をＡＳＩＣ１−１の外部ピン１−３に出力させつづける、等が挙げられる。
【００５３】
以上のように、本実施形態では、ＡＳＩＣシステムに付属している機能（ここではＭＰＵ、ＲＡＭ、ＲＡＭテスト機構、等）を利用して、ベクタ入力テストを行うことを可能としている。ここで、新たに付加された構成としてはテスト用の外部ピン２本程度とそのデコード回路程度であり、非常に単純な構成である。
【００５４】
また、ＡＳＩＣのスティムレートはＭＰＵが行っているが、プログラムはＲＡＭに書き込んでいるため、通常モードで使用すべきＲＯＭエリアを無駄にしていないことも、特徴の一つである。
【００５５】
［第２の実施形態］
次に、第２の実施形態について説明する。上記の例では、ＡＳＩＣチップ・テストを行うモードとして、シナリオテストモードと言うものを設けた。この方法が適さない場合がある。即ち、第１に、このように新たにテストモードを設けると、それを他のモードと切り分ける必要が出てくるので（今回の場合は、通常モードとＲＡＭテストモードの２つと違うシステムモードと言う扱いになっている）、それを行う手段が必要となる。上記実施形態では、それをＡＳＩＣ１−１の外部ピン１−３の一部であるテスト制御ピン１−３１の状態で判断している。ＡＳＩＣにおいてピンの数を増やすことは、コストアップの原因である。そこで、本実施形態では、上記の実施例と同等の機能を、通常モード（＝ＡＳＩＣの実使用モード）にて実現する手段を説明する。
【００５６】
＜構成についての説明＞
基本的な構成は、概略的には図１に等しい。ただ、第１の実施形態と違い、シナリオテストモードがなくなったので、図３のように、幾つかあるシステムモードの中で、切り分けるべきモードが１つ減ることになる（ただし、ＲＡＭテストモードは必要）。これにより、図１において、制御信号１−２１（点線で示した）は必要が無くなる。即ち、ＡＳＩＣ１−１の外部ピン１−３の一部であるテスト制御ピン１−３１にアサインすべき機能が１つ減り（＝テストピンを１本減らすことが出来る可能性を示唆）、モードを１つデコードする必要が無くなり、内分の信号線も減ることで、実施例−１より、構成が簡素化していることが分かる。
【００５７】
＜動作についての説明＞
図６は、第２の実施形態の動作フローを示したものである。
【００５８】
基本的に（Ｓ−２００）−（Ｐ−２０３）の間は、図５と全く同じ動作を行う。まず、テスト開始直後（Ｓ−２００）、ＡＳＩＣ１−１のシステムは、テスト制御ピン１−３１の情報にてＲＡＭ１−１３の分離テスト可能なモードに入り（Ｐ−２０１）、ＲＡＭ１−１３にテストプログラムデータを書き込んでいく（Ｐ−２０２）。必要なテストシナリオをＲＡＭ１−１３に書き込み終了した後、一旦、ＲＡＭ１−１３の分離テスト可能なモードから抜ける（Ｐ−２０３）。
【００５９】
この時、ＡＳＩＣ１−１のシステムによっては、外部リセット信号を入れ直さないとモード変更が出来ない場合もあるので、そのような場合は、ＡＳＩＣ１−１のシステムの制約に従う。（Ｐ−２０１）と（Ｐ−２０３）の時点で、ＡＳＩＣ１−１が、外部ピン１−３からのリセットを要求する場合はそれに従うと言う制約も、図５と同じである。
【００６０】
次に、図５のフローとは異なり、シナリオテストモードではなく、通常モードに入る（Ｐ−２０４）。このまま、何もせずにプログラムを走らせると、ＡＳＩＣ１−１の通常の動作に入ってしまうので、テストを行うための新たなる仕掛けが必要である。そしてそれは、まず、ＲＯＭ１−１４の中のコード内に作る。
【００６１】
通常モードに入った後、ＡＳＩＣ１−１のシステムは、ＰＣを規定のアドレスに設定し、ＲＯＭ１−１４中のスタートアップルーチンプログラムの実行を行う。ここで行われる内容は、システムの初期化、スタックの設定、バスアクセスサイクル数の設定等様々で、ＡＳＩＣ１−１のシステムに依存する。このスタートアップ終了後、ＡＳＩＣ１−１のシステムは、通常動作時のプログラムの実行に（ＭＰＵ１−１１対応のｂｒａｎｃｈ命令で）分岐する。そこで、このスタートアップルーチンプログラムの中で以下のような非常に簡単な作業を行う。
【００６２】
即ち、ＡＳＩＣ１−１のシステムが、次に、通常動作を行うのかテストシナリオを実行するのかを切り分けるのだが、それを次のような手法で行う。通常、ＡＳＩＣの外部ピンには直接その論理的数値を（即ち、電圧値ではなく、”１”、”０”のディジタル値で）読み取ることのできるポートが幾つかある。例えば、ＡＳＩＣが搭載される機器のスウィッチのＯＮ／ＯＦＦを読み取るものだったり、各種センサの値を読み取るものであったりして、そのポートの用途は様々である。要は、そのポートの入力値をもってして、状態の切り分けを行う。例えば、ＡＳＩＣ１−１の外部ピン１−３には２つの入力ポートがあり、それらは、共に、ある種類のスウィッチのＯＮ／ＯＦＦ読み取りに使用されているものとする（概略的には、図４のようになる）。そして、図−４中にある入力ポート０と入力ポート１が、通常動作中、決して、同時に（入力ポート０，入力ポート）＝（１，１）と言う状態にならないのであれば、それは、通常動作とテストシナリオ動作を分離する。
【００６３】
これは、必ずしも、（入力ポート０，入力ポート）＝（１，１）に限定する必要は無く、（０，０）、（１，０）、（０，１）等のいずれの状態でも構わない。また、２本の入力ポートで切り分けが不可能であれば、３本以上の入力ポートを用いて同じ機構を実現すればよい。逆に、１本の入力ポートで切り分けが可能であれば、１本の入力ポートを用いて同じ機構を実現すればよい。
【００６４】
さらに、この切り分けを行う場所が、スタートアップルーチン内であることも重要な意味をもっており、即ち、ＰＣがスタートアップルーチンを通過するのは、ハードリセット解除後の１度だけであるため、このタイミングに同期して、予め決められた（通常ありえない）入力パターンの組み合わせを考えればよい。
【００６５】
例えば、上記の例で言うと、（入力ポート０，入力ポート）＝（１，１）と言うものが、ＡＳＩＣ１−１のシステムの典型的な通常動作中にはあるものの、ハードリセット解除直後には、そのような入力はありえないのであれば、（入力ポート０，入力ポート）＝（１，１）は、十分、通常動作とテストシナリオ動作の分離パターンとして用いることが可能である。
【００６６】
以上のような流れを、再度、フローチャート−２に戻り、説明を行うと、即ち、ＲＯＭ１−１４中のスタートアップルーチンプログラム内に、ＰＣがそこに入った直後、（入力ポート０，入力ポート）の論理的値をポーリングする小さなプログラムを実装しておくのである（Ｐ−２０５）。
【００６７】
そして、（入力ポート０，入力ポート）＝（１，１）であれば、ＲＡＭ１−１３に書き込まれているテストシナリオルーチンに分岐し（Ｐ−２０６）、即ち、ＰＣをＲＡＭ１−１３に書き込まれているテストシナリオルーチンの先頭アドレスをポインティングする。
【００６８】
逆に、（入力ポート０，入力ポート）＝（１，１）以外の値ならば、通常動作ルーチンへと分岐する（Ｅ−２０８）ように、ＲＯＭ１−１４にプログラムを実装する。
【００６９】
この処理のプログラムとしては、入力ポート値のロード−＞パターン比較−＞フラグジャンプ、と言った処理が実行されるので、最悪でも、３ｗｏｒｄ程度の機械コードで実行可能である。つまり、ＲＯＭ１−１４内のプログラムエリアの一部をチップ・テスト用に用いるが、そのプログラムのサイズは無視できる。
【００７０】
以上で、本実施例の特徴的な部分の説明は終了であるが、幾つかの点について、補足説明を付加する。
【００７１】
上述した、スタートアップルーチンの、テストシナリオと通常動作の切り分けプログラムは、スタートアップルーチン内に入った後、なるべく早い段階で行われることが好ましい。理由は、テストシナリオに入るまでの時間が長いと、チップ・テストの時間が延びるからである。
【００７２】
スタートアップルーチンプログラムは、ＡＳＩＣ１−１システムの初期化を行うが、それは通常動作を想定しての初期化である。しかしながら、テストシナリオに必要なシステムの初期化は、それと異なるのが普通で、例えば、スタックやヒープやグローバル変数の初期化といったものは、テストシナリオがそれを用いない場合、何の意味もなさない。また、バスサイクルの決定も、通常動作では用いるもののテストシナリオで使用しない部所に関して行う必要はなかろう。要は、必要な初期化と、そうでないものを厳密に考慮して切り分けプログラムを作成しないと、無駄の多いチップ・テストになってしまうのである。これは留意すべき重要な点である。
【００７３】
以上のように、第２の実施形態は、第１の実施形態よりも簡単なテスト構成を実現できる。
【００７４】
なお、上述したＡＳＩＣのテスト機構（構成）の概要を以下に述べる。
【００７５】
テストされるべきＡＳＩＣの内部に、マイクロ・プログラムを解析し、また、その上記マイクロ・プログラムの内容に従い制御動作を行うことが可能な手段を有し、上記マイクロ・プログラムを解析し、また、その上記マイクロ・プログラムの内容に従い制御動作を行うことが可能な手段のためのプログラムを格納するための書き込み・読み出し可能な記憶装置を有し、上記マイクロ・プログラムの内容に従い制御動作を行うことが可能な手段が、上記書き込み・読み出し可能な記憶装置内にあるマイクロ・プログラムの内容に従って、上記テストされるべきＡＳＩＣに対しチップテストを自ら行うことを特徴とする。
【００７６】
また、上記マイクロ・プログラムの内容に従い制御動作を行うことが可能な手段を有し、上記マイクロ・プログラムの内容に従い制御動作を行うことが可能な手段とは、ＭＰＵであることを特徴とする。
【００７７】
また、テストされるべきＡＳＩＣの内部に、マイクロ・プログラムを解析し、また、その上記マイクロ・プログラムの内容に従い制御動作を行うことが可能なＭＰＵを有し、上記ＭＰＵのプログラムを格納するための書き込み・読み出し可能な記憶装置を有し、基本的にチップの検証は既知の技術であるバウンダリ・スキャンを用いて行う仕組みを有しながらも、そのスキャン・パスから外され、かつ、検証が必要とされる上記ＡＳＩＣ内部のロジック・モヂュールに対し、上記ＭＰＵが、上記書き込み・読み出し可能な記憶装置内にあるマイクロ・プログラムの内容に従って、上記スキャン・パスから外され、かつ、検証が必要とされる上記ＡＳＩＣ内部のロジック・モヂュールのテストを自ら行うことを特徴とする。
【００７８】
また、書き込み・読み出し可能な記憶装置に対する内部のロジック・モヂュールのテストテストプログラムの書き込みは、上記請求項−３の提案するＡＳＩＣのテスト機構とは別に設けられている、上記書き込み・読み出し可能な記憶装置専用のテスト機構を用いて行われることを特徴とする。
【００７９】
また、テストされるべきＡＳＩＣの内部に、マイクロ・プログラムを解析し、また、その上記マイクロ・プログラムの内容に従い制御動作を行うことが可能なＭＰＵを有し、上記ＭＰＵのプログラムを格納するための書き込み・読み出し可能な記憶装置を有し、上記書き込み・読み出し可能な記憶装置を、本提案が意図するテスト機構とは別の仕組みでテストすることが可能な記憶装置テスト装置を有し、基本的にチップの検証は既知の技術であるバウンダリ・スキャンを用いて行う仕組みを有しながらも、そのスキャン・パスから外され、かつ、検証が必要とされる上記ＡＳＩＣ内部のロジック・モヂュールに対し、上記記憶装置テスト装置を用い上記検証が必要とされる上記ＡＳＩＣ内部のロジック・モヂュールをテストするためのプログラムを上記書き込み・読み出し可能な記憶装置に書き込み、上記ＭＰＵが、上記書き込み・読み出し可能な記憶装置内にある上記書き込み済みのテストプログラムの内容に従って、上記スキャン・パスから外され、かつ、検証が必要とされる上記ＡＳＩＣ内部のロジック・モヂュールのテストを自ら行うことを特徴とする。
【図面の簡単な説明】
【００８０】
【図１】本発明に係る第１の実施形態のＡＳＩＣテスト機構の説明図。
【図２】第１の実施形態のメモリテスト手段の説明図
【図３】第１の実施形態のテストピン機能の説明図。
【図４】第２の実施形態の入出力ピン機能の説明図。
【図５】第１の実施形態の動作フロー。
【図６】第２の実施形態の動作フロー。
【図７】プログラム例
【符号の説明】
【００８１】
ＡＳＩＣ１−１  ＡＳＩＣ
ＡＴＥ１−２  ＡＴＥ
１−３  ＡＳＩＣの外部ピン
１−１１  ＭＰＵ
１−１２  ＵＤＬ
１−１３  ＲＡＭ
１−１４  ＲＯＭ
１−１５  アドレス・バス
１−１６  データ・バス
１−１７  アドレスデコーダ
１−１８  チップセレクト信号群
１−１９  メモリテスト手段
１−２０  テストバスセレクタ
【図１】
2005164265.tif 000003
【図２】
2005164265.tif 000004
【図３】
2005164265.tif 000005
【図４】
2005164265.tif 000006
【図５】
2005164265.tif 000007
【図６】
2005164265.tif 000008
【図７】
2005164265.tif 000009