本発明を具体的に説明する前に、その前提と概要を述べる。システムLSIメーカは、SRAM、ROM、FIFO(First-In First-Out)、およびIP(Intellectual Property)など、変更を加えずに使用する専用マクロ、ならびに独自に設計するランダムロジックなどを混載して、システムLSIを設計するのが一般的である。以下、カスタムLSIの例で説明する。本発明は、このような専用マクロと、ランダムロジックとが混在する回路のテストを行う場合に、専用マクロとランダムロジック間の接続テストを含めて、回路の機能確認を容易に行うためのものである。とくに、専用マクロがスキャンチェック非対応型の場合、専用マクロとランダムロジック間のパスのテストを行うことが難しい。本発明の実施形態では、簡単なテスト用回路を付加することにより、当該パスのテストを容易に行う。
図1は、本発明の実施形態におけるテストシステムの適用対象とすることが可能なカスタムLSI100の回路構成を示す。このカスタムLSI100は、積和器42を含む第1ランダムロジック32、減算器44を含む第2ランダムロジック34、および加算器46を含む第3ランダムロジック36を搭載する。また、専用マクロとしてSRAM50を搭載する。
第1ランダムロジック32の前段には第2スキャンFF14が接続され、後段には第4スキャンFF18が接続される。また、第2ランダムロジック34とも接続され、データの入出力が可能な構成としてある。第2ランダムロジック34の前段には第1スキャンFF12が接続され、後段には第3スキャンFF16が接続される。第3ランダムロジック36の前段には第3スキャンFF16および第5スキャンFF20が接続され、後段には第6スキャンFF22が接続される。SRAM50の前段には第4スキャンFF18が接続され、後段には第5スキャンFF20が接続される。
第1スキャンFF12〜第6スキャンFF22には、動作クロックとして、通常のシステムクロックSYCLKおよびスキャンテスト用クロックSCCLKが入力される。第1スキャンFF12〜第6スキャンFF22は、通常のデータ入力に対するラッチ機能に加えて、テスト対象とすべき回路、例えばランダムロジックにテストデータを外部から書き込んだり、読み出したりしてテストをする機能を備える。図示しない内蔵するセレクタにより、通常のシステムクロックSYCLKとスキャンテスト用クロックSCCLKとを切り替えることができる。
第1スキャンFF12〜第6スキャンFF22は、スキャン用データを前段から受けるためのスキャンデータ用端子SIをそれぞれ備える。第1スキャンFF12の出力データを第2スキャンFF14のスキャンデータ用端子SIで受け、第2スキャンFF14の出力データを第3スキャンFF16のスキャンデータ用端子SIで受けるといったように、第1スキャンFF12〜第6スキャンFF22は、順番に接続され、スキャンチェーンを構成する。第1スキャンFF12のスキャンデータ用端子SIには、外部から順次、所望の値が入力され、第1スキャンFF12は、その値に応じて所定のテストパターンを発生することができる。スキャンチェーンは、各スキャンFFに供給されるスキャンテスト用クロックSCCLKにしたがい、シフトレジスタのように動作する。
SRAM50は、スキャンFFを含まず、通常のスキャンテストに対応していない。第4スキャンFF18および第5スキャンFF20は、それぞれ第1ランダムロジック32および第3ランダムロジック36に対応しており、SRAM50のスキャンテストには対応していない。SRAM50は、BIST機能を備えることができる。BIST機能付きの専用マクロに対しては、外部からトリガ信号を与えるだけで、それ単体で自動でテストを実施させることができる。
なお、本カスタムLSI100では、図1に示す回路中のFFをすべてをスキャンFFで設計するフルスキャン方式を採用している。この点、一部のFFをスキャンFFで設計するパーシャルスキャン方式を採用してもよい。
このような回路構成のカスタムLSI100にて、通常動作させる場合、第1スキャンFF12〜第6スキャンFF22は、システムクロックSYCLKにて動作し、通常のFFとして機能する。第1スキャンFF12および第2スキャンFF14は、それぞれ入力データDINaおよび入力データDINbを受ける。そして、最終的に第6スキャンFF22は、出力データDOUTを出力する。
一方、スキャンテストを実施する場合、第1スキャンFFは、スキャンデータ用端子SIからスキャン用データSCINを受け、最終的に第6スキャンFF22は、スキャン結果を表すデータSCOUTを出力する。
このようなフルスキャンテストは、第1ランダムロジック32〜第3ランダムロジック36の不良検出率を向上させることができる。また、SRAM50では、BIST機能を用いることで、不良検出率を向上させることができる。これらのテストは、比較的容易に実施することができる。
第1ランダムロジック32の出力データをラッチする第4スキャンFF18と、SRAM50との間の信号パスP2、およびSRAM50の出力データと、第3ランダムロジック36の入力データをラッチする第5スキャンFF20との間の信号パスP4について、上述したテスト方法で接続テストを行うことは難しい。ランダムロジックと専用マクロが個別にテストされることとなるためである。以下、カスタムLSI100全体を網羅的にテストするためのテストシステムについて説明する。
図2は、本発明の実施形態におけるテストシステム200の回路構成を示す。本実施形態におけるランダムロジック60、80は、ランダムロジックと専用マクロとの間のパスの接続テストを行う機能を備えることができる。この機能を実現するため、一般的なランダムロジックに対して、テスト用回路として機能する以下に示す付加回路を有する。この付加回路は、テスト用データ生成回路62、データ用セレクタ64、テスト用メモリ制御回路72、制御信号用セレクタ76、期待値テーブル84、および比較判定回路86を含む。そして、テスト用データ生成回路62、データ用セレクタ64、テスト用メモリ制御回路72、および制御信号用セレクタ76は、SRAM90などの専用マクロの前段のランダムロジック60に内蔵されてもよく、期待値テーブル84、および比較判定回路86は、専用マクロの後段のランダムロジック80に内蔵されてもよい。
前段のランダムロジック60は、通常の機能として、外部からの二系統の入力データDINa、DINbを乗算して、SRAM90に出力する。これに実現するため、乗算器66、第1FF68、通常メモリ制御回路74、および第2FF78を備える。一般的なランダムロジックでは、二系統の入力データDINa、DINbが直接、乗算器66に入力されるが、本実施形態では、二系統の入力データDINa、DINbは、データ用セレクタ64を介して入力される。
乗算器66は、演算用のデータとして、二系統の入力データDINa、DINbを乗算し、第1FF68に出力する。なお、乗算器66は、これに限るものではなくその他の演算器でもよい。例えば、除算器、加算器、減算器、積和器、および比較器などであってもよい。第1FF68は、乗算器66の出力値をラッチし、所定のタイミングでSRAM90に書き込む。
通常メモリ制御回路74は、外部から供給される所定の制御信号に応じて、アドレス信号AD、チップセレクト信号CS、およびライト/リード信号WRを、第2FF78を介してSRAM90に出力し、SRAM90の読み出し制御、および書き込み制御を行う。通常メモリ制御回路74による制御に応じて、SRAM90から読み出されるデータは、第3FF82にてラッチ後、通常のランダムロジック88へ出力される。ここで、通常のランダムロジック88とは、テスト用回路の全部または一部が搭載される前の一般的なランダムロジックを指す。
これらの処理は通常の機能であり、この機能だけで、第1FF68とSRAM90間、第2FF78とSRAM90間、およびSRAM90と第3FF82間の接続テストを行うことは難しい。これらの接続、機能検証を実施するには、本ブロックの上位にてテスト環境を構築し、専用のテストパタンを使用する必要があり、極めて煩雑な作業となる。
本実施形態では、テスト用回路を付加したことにより、その接続、機能検証を容易に実施することができる。本テストシステム200では、テスト用データ生成回路62、データ用セレクタ64、テスト用メモリ制御回路72、および制御信号用セレクタ76に外部からテスト用制御信号TCNTが入力される。テスト用制御信号TCNTは、テスト用クロック、シリアルデータ、およびストローブ信号の3系統で構成される制御信号である。シリアルデータは、テスト用データ生成回路62の生成するテストパターンの基礎にすることができるデータである。テスト用データ生成回路62およびテスト用メモリ制御回路72の少なくとも一方は、テスト用制御信号TCNTに含まれるテスト用クロックに同期したバイト単位のシリアルデータをストローブ信号を用いて取り出す。
データ用セレクタ64には、テスト用データ生成回路62からテスト用データが入力され、外部から入力データDINa、DINbが入力される。データ用セレクタ64は、テスト制御用信号TCNTに応じて、乗算器66に出力すべきデータを、入力データDINa、DINbとテスト用データとの間で切り替える。データ用セレクタ64は、テスト用制御信号TCNTにより、テストモードへの移行を指示されると、テスト用データを選択する。
テスト用データ生成回路62は、乗算器66などの非テスト対象回路に入力すべきテストデータを生成する。テスト用データ生成回路62は、例えば、カウンタを用いて構成し、カウント値を順次出力してもよい。また、テスト制御用信号TCNTの指示にしたがい、ランダム値を出力できる構成としてもよい。テスト用データ生成回路62は、上述したバイト単位のシリアルデータを、その内部処理部にてデコードし、通常動作に使用しているシステムクロックを使用して、テスト動作を自動的に開始することができる。
テスト用データ生成回路62の生成するテスト用データのビット数は、テストする資源のアドレスや、機能試験の信頼性を考慮して、テスト用制御信号TCNTから任意に定義可能である。例えば、ビット数を4ビット程度で繰り返すことでも、接続試験のみであれば、十分に接続検証可能である。また、テスト制御用信号TCNTなどにより供給されるシリアルデータを全ビット幅分スイープするかどうかは、カスタムLSIの回路規模、動作速度などにより事前に設定することができる。大容量のSRAMなどを通す場合、カウンタのロード数を増やすことにより、メモリの全領域をテストすることができる。
メモリ制御回路70は、テスト用メモリ制御回路72と通常メモリ制御回路74を含み、それぞれアドレス信号AD、チップセレクト信号CS、およびライト/リード信号WRを制御信号用セレクタ76に出力する。テスト用メモリ制御回路72は、テスト制御用信号TCNT、およびテスト用データ生成回路62から供給されるテスト用データを基に、それらの信号を生成する。
制御信号用セレクタ76には、テスト用メモリ制御回路72および通常メモリ制御回路74から、それぞれ3系統の制御信号群が入力される。制御信号用セレクタ76は、テスト制御用信号TCNTに応じて、第2FF78を介してSRAM90に出力すべき制御信号群を切り替える。テストモードではテスト用メモリ制御回路72からの制御信号群を選択し、通常動作モードでは通常メモリ制御回路74からの制御信号群を選択する。
このような構成にて、テスト用データ生成回路62が0から255までの8ビットカウントアップデータを生成する例について説明する。テストモードでは、テスト用データ生成回路62から乗算器66の2入力端子に、クロックに同期して当該8ビットカウントアップデータが入力される。乗算器66は、0×0、1×1、2×2.......255×255の乗算処理を順次実行し、乗算結果を第1FF68に出力する。
なお、乗算器66以外の演算器の場合も、同様のデータ入力がされ、所定の演算処理が実行される。例えば、加算器の場合、0+0、1+1、2+2.....255+255の加算処理を順次実行する。積和器の場合、(0+0)×(0+0)、(1+1)×(1+1)、(2+2)×(2+2)、.......(255+255)×(255+255)の積和処理を順次実行する。
それとともに、テスト用メモリ制御回路72は、乗算器66からの出力データをSRAM90の最下位アドレスから最上位アドレスまで、順次書き込むよう制御する。その際、第1FF68および第2FF78が同期をとることにより、SRAM90に対する出力データと制御信号の入力タイミングを調整することができる。なお、テスト用データ生成回路62の生成するテスト用データのビット数により、書き込みデータがある期間について周期的となるが、データの周期性を避ける場合はビット数を増加させることにより、容易に対応可能である。
テスト用メモリ制御回路72は、SRAM90の全アドレスに対して書き込みが終了後、読み出し制御に移行する。テスト用データ生成回路62は、SRAM90への書き込み処理後に、読み出し処理に自動的に移行するシーケンスが組み込まれてもよい。SRAM90は、テスト用メモリ制御回路72からの読み出し制御にしたがい、第3FF82に読み出しデータを出力する。第3FF82は、所定のタイミングで当該読み出しデータを、比較判定回路86およびテスト用回路が付加される前のランダムロジック88に出力する。
期待値テーブル84は、テストモードにおけるSRAM90の出力データと比較するためのデータを、期待値として比較判定回路86に供給する。期待値テーブル84は、テスト用データ生成回路62からテスト用データ、またはその他のタイミング信号を受けて、第3FF82が比較判定回路86にSRAM90からのデータを出力するタイミングと同期をとってもよい。この場合、テスト用メモリ制御回路72、期待値テーブル84、および比較判定回路86はクロック同期して動作する。上述したように、テスト用データ生成回路62の生成するデータは、テスト用制御信号TCNTなどを用いて、外部から設定変更可能である。
期待値テーブル84は、接続、検証する資源が少ない場合、クランプ処理やROMなどでテーブルを固定してもよい。また、アプリケーション仕様により、カスタムLSI内部に複数の専用マクロを搭載する場合など、同様の試験を複数回行う必要がある場合、期待値テーブル84は、RAM、レジスタなどを用いて、再書き込み可能に構成されてもよい。期待値テーブル84は、試験する資源に応じて、カスタムLSIの外部または内部から、テーブルで管理すべき期待値データが入力される。このように、期待値データを再ロード可能な構成とすると、後述する時分割処理にて比較判定回路86を使用する機能を実現することができる。また、再ロード可能な構成とすることにより、ランダムロジックと専用マクロ間の接続、機能テストを複数パタンで検証することができ、テスト精度を向上させることができる。
期待値データの内容は、事前に検証する演算器の仕様や、データパスの処理機能により、アプリケーションの仕様確定時には容易に算出可能である。また、テスト対象とする演算器が非常に複雑な演算を実行する場合や、多段の演算として実施される場合、演算プログラムを利用したソフトウェア的な処理によって、期待値データを準備することも可能である。
比較判定回路86は、期待値テーブル84から供給される期待値データと、第3FF82を介してSRAM90から供給される出力データとを比較して、一致しているか否かを判定する。例えば、両者のデータが一致する場合、ハイレベルの信号を出力し、不一致の場合、ローレベルの信号を出力してもよい。比較判定回路86の判定結果は、外部にてモニタすることができる。また、アプリケーションによって、判定論理の変更、時分割共用化など、ユーザ側で容易に仕様変更して活用可能である。この時分割共用化については後述する。
以上説明したように、テストシステム200の動作モードを大別すると、通常動作モード、テストモード、テスト用データ設定モード、および期待値入力モードを備える。テスト用データ設定モードは、テスト用データ生成回路62の生成するテストパターンを外部から設定するモードである。例えば、テスト用データ生成回路62がカウントアップデータを出力する場合、カウント値の初期値、カウント幅、および最大値を設定してもよい。ユーザは、外部からコマンドなどを入力して、テストモードを設定することにより、内蔵するランダムロジックと専用マクロ間の接続、機能テストを自動で実施することができる。期待値入力モードは、期待値テーブル84に期待値データを外部から入力するモードである。期待値テーブル84のデータを固定した場合、このモードは必要ない。
以上説明したように本実施形態によれば、スキャンチェック非対応の専用マクロと、ランダムロジックを混載する回路にて、専用マクロとランダムロジックとの間の接続、機能テストを容易に実行することができる。例えば、通常実装される各種演算器を含むデータパス回路と、外部から入手するメモリなどの専用マクロ間の接続用テスト、および機能テストをスキャンFFなどの既存機能を使用することなく、簡易なテスト用回路を用いて、接続情報を含めた回路機能の自動検証を行うことができる。さらに、スキャンFFを内蔵しない専用マクロを内蔵するカスタムLSIについても、図1に示したような既存の回路構成に大幅な変更を加えることなく、ランダムロジックと専用マクロ間のパスを含めた、接続、機能検証作業を網羅的に行うことができる。しかも、カスタムLSIのテスト環境作成作業も短期間に抑えることができる。また、回路規模、動作速度などの回路性能に与える影響は軽微である。
また、LSIに内蔵する乗算、除算、加減算、積和、または比較器などのデータパスを構成する演算ブロックと、メモリなどの専用マクロを同時に動作させることで、演算器や専用マクロの機能テストも行うことができる。出力値と期待値との判定の結果、エラーが検出された場合、演算器、専用マクロ、およびそれらを接続するパスのうちの少なくとも一箇所に不良部分があることを検知することができる。
このように、本実施形態によると、LSI開発において、開発期間の短期化、開発工数の削減、およびテスト信頼性の向上に資することができる。
以上、本発明を実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
期待値テーブル84、および比較判定回路86は、複数の試験対象に対して、時分割で利用することができる。図3は、変形例におけるテストシステム300の構成を示す。変形例におけるテストシステム300は、同一回路上に複数の専用マクロを備える。図3では、SRAM90およびFIFO94を備える。FIFO94およびその前後のランダムロジック92、96以外の構成は、上述した図2の構成と同様である。FIFO94の前段には、ランダムロジック92を備え、FIFO94にデータおよび制御信号を出力する。このランダムロジック92の内部構成は、SRAM90の前段のランダムロジック60の構成と基本的に同一である。FIFO94には、制御信号としてアドレス信号が必要ないので、当該ランダムロジック60は、制御信号として、チップセレクト信号CSとライト/リード信号WRを供給する。なお当然ながら、乗算器66以外の演算器を搭載していてもよい。
FIFO94の前段のランダムロジック92内のテスト用メモリ制御回路は、FIFO94の読み出し制御を行い、FIFO94の出力データを比較判定回路86および後段のランダムロジック96に出力する。
FIFO94のテストモードでは、期待値テーブル84には、FIFO94の出力データと比較すべき期待値データが設定される。期待値テーブル84は、その期待値データを比較判定回路86に供給する。この動作クロックは、FIFO94の前段のランダムロジック92内のテスト用データ生成回路62から供給されてもよい。比較判定回路86は、期待値テーブル84から供給される期待値データと、FIFO94から供給される出力データとを比較して、一致しているか否かを判定する。このように、本テストシステム300では、SRAM90およびFIFO94の両テストモードに対して、期待値テーブル84、および比較判定回路86を共用することができる。このように、テスト用回路の一部を共用化することにより、テスト用回路として付加される回路の規模増加をさらに抑制することができる。
さらに、テスト用データ生成回路62およびテスト用メモリ制御回路72の少なくとも一方を、SRAM90の前段のランダムロジック60とFIFO94の前段のランダムロジック92で共用してもよい。これによれば、テスト用回路として付加される回路の規模増加をさらに抑制することができる。
また、乗算器66の出力データがSRAM90およびFIFO94に、パラレルに入力される構成に対しても、本変形例は適用可能である。その場合も、期待値テーブル84、比較判定回路86を時分割で共用することができる。
また、SRAM90とFIFO94とが接続されるよう構成、すなわち専用マクロ間が接続され、パスが形成される場合にも本実施形態は適用可能である。テスト用データ生成回路62から比較判定回路86までのパス中にて、専用マクロ間のパスを含め、いずれかの箇所に不良が存在するか否かを検出することができる。
上述した実施形態や変形例では、専用マクロとしてSRAM90やFIFO94の例を説明したが、スキャンFFを内蔵しないレジスタ群など、メモリストレージ機能を有している資源や、他のベンダーから供給されるIPなどに対しても、同様に適用可能である。
また、付加すべきテスト用回路の全部または一部を、LSI外またはランダムロジック外に配置してもよい。例えば、期待値テーブル84および比較判定回路86を含む判定ブロックをカスタムLSIの後段に配置してもよい。また、テスト用データ生成回路62、テスト用メモリ制御回路72、データ用セレクタ64、および制御信号用セレクタ76を含むテスト用データ入力ブロックをLSIの入力段に近いブロックに配置してもよい。これによれば、長い演算パスについても、同等の手法でテストが可能である。
60 ランダムロジック、 62 テスト用データ生成回路、 64 データ用セレクタ、 66 乗算器、 68 第1FF、 70 メモリ制御回路、 72 テスト用メモリ制御回路、 74 通常メモリ制御回路、 76 制御信号用セレクタ、 78 第2FF、 80 ランダムロジック、 82 第3FF、 84 期待値テーブル、 86 比較判定回路、 200 テストシステム。