(57)【要約】【課題】ＡＳＩＣ又は、ＦＰＧＡの全体又は、部分の回路から直接動作したかどうかのカバレッジ情報を抽出する。【解決手段】アプリケーション回路を構成する機能フリップフロップ１の出力をラッチするモニタ用フリップフロップ２，３を設け、このフリップフロップの値を選択的に出力するための選択回路を設けた。このため、機能フリップフロップ１を動作させると、その動作に応じてフリップフロップ２，３にＨレベルが保持される。そして、その値を、Ｘ、Ｙ入力信号により基本ブロックを選択して、選択した基本ブロックについて読み出す。両フリップフロップの値がともにＨレベルであれば、対応する機能フリップフロップ１は試験済みである。これを全フリップフロップについて走査し、設計時にマップと対比して、不動作のフリップフロップやカバレッジ率を得ることが出来る。【選択図】図１
2007033135.tif 000002
【特許請求の範囲】
【請求項１】
一定のアプリケーション用回路に含まれ、前記アプリケーションのために機能する機能フリップフロップの動作を試験する試験回路であって、
前記機能フリップフロップの出力信号の信号レベルの変化を示す信号を保持する保持ブロックと、
前記保持ブロックの保持する値を、指定した機能フリップフロップについて出力させるための選択ブロックと
を備えることを特徴とする試験回路。
【請求項２】
前記保持ブロックは、第１の信号レベルから第２の信号レベルへの前記信号レベルの変化と、第２の信号レベルから第１の信号レベルへの前記信号レベルの変化とを示す信号をそれぞれ保持するためのフリップフロップ対を有し、
前記選択ブロックは、指定した機能フリップフロップについて、前記フリップフロップ対の一方をさらに指定して、当該フリップフロップが保持する値を出力させることを特徴とする請求項１に記載の試験回路。
【請求項３】
前記アプリケーション用回路には複数の前記機能フリップフロップが含まれており、複数の前記機能ブロックは同期動作することを特徴とする請求項１または２に記載の試験回路。
【請求項４】
前記アプリケーション用回路は、複数の前記機能フリップフロップを含むプログラム可能集積回路のうち、選択された機能フリップフロップにより構成されていることを特徴とする請求項１乃至３のいずれか１項に記載の試験回路。
【請求項５】
一定のアプリケーション用回路に含まれ、前記アプリケーションのために機能する機能フリップフロップと、前記機能フリップフロップに対応し、その出力信号の信号レベルの変化を示す信号を保持する保持ブロックと、前記保持ブロックの保持する値を、指定した機能フリップフロップについて出力させるための選択ブロックとを備えた論理回路の動作を試験するための試験方法であって、
動作させた前記アプリケーション用回路から、指定された範囲内の機能フリップフロップに対応する前記保持ブロックの値を読み出して、試験マップ情報として保存する読み出し工程と、
前記アプリケーション用回路において、前記範囲内にあって動作すべき前記機能フリップフロップに対応する設計マップ情報と前記試験マップ情報とを対比して前記機能フリップフロップの動作の状態を判定する工程と
を含むことを特徴とする試験方法。
【請求項６】
検査回路付きのプログラム可能な集積回路であって、
複数の機能ブロックと、
前記複数の機能ブロックから一の機能ブロックを選択するためのカウンタ回路とを備え、
前記機能ブロックは、
プログラムの対象となる機能フリップフロップと、
クロック入力端子が前記機能フリップフロップの出力端子に、データ入力端子がハイレベル端子に接続された第１のモニタ用フリップフロップと、
反転クロック入力端子が前記機能フリップフロップの出力端子に、データ入力端子がハイレベル端子に接続された第２のモニタ用フリップフロップと、
前記カウンタ回路のデコード済み出力信号をブロック選択信号とし、フリップフロップ選択信号に応じて前記第１のモニタ用フリップフロップと前記第２のモニタ用フリップフロップのいずれかに保持された信号値を出力する選択回路と
を備えることを特徴とする集積回路。
【請求項７】
プログラムの対象となる機能フリップフロップと、
同期信号端子が前記機能フリップフロップの出力端子に、入力端子がハイレベル端子に接続された第１のモニタ用フリップフロップと、
反転同期信号端子が前記機能フリップフロップの出力端子に、入力端子がハイレベル端子に接続された第２のモニタ用フリップフロップと、
選択信号に応じて前記第１のモニタ用フリップフロップと前記第２のモニタ用フリップフロップのいずれかに保持された信号値を出力する選択回路とを有する複数の機能ブロックと、
前記複数の機能ブロックから一の機能ブロックをイネーブル状態にするためのカウンタ回路とを備えた集積回路を検査する方法であって、
動作させた前記集積回路内の、前記カウンタの値に応じてイネーブルにされた機能ブロックから、前記第１または第２のモニタ用フリップフロップの値を読み出して、試験マップ情報として保存する読み出し工程と、
前記集積回路において、前記範囲内にあって動作すべき前記機能ブロックに対応する設計マップ情報と前記試験マップ情報とを対比して前記機能フリップフロップの動作の状態を判定する工程と
を含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえばプログラム可能な集積回路等に関し、特に検査機能を有する集積回路及びその検査方法に関する。
【背景技術】
【０００２】
ＡＳＩＣ（特定用途集積回路）のテスト手法として、試験対象のシステムＬＳＩ中にｎ段の分周器を組み込んでおき、各段から出力されるクロックを用いたテスト方法が提案されている。この方法を用いたシステムＬＳＩは、これらクロックを用いて、システムＬＳＩに含まれる各種クロックタイミングで動作する機能モジュールを試験する（特許文献１等参照）。このようなＬＳＩを用いたり、あるいは従来のスキャンによるテスト手法を用いた半導体検査装置による検査によって、検査対象の回路のカバレッジ（故障検出率）を算出することができる。しかしこのような検査方法では、回路の故障検出率は検出できるものの、機能のカバレッジは検出することが出来ない。回路上の機能が動作することを確認しながらすべてのフリップフロップ（ＦＦ）が動作したことを検証するために、通常回路のシミュレーションが用いられる。
【特許文献１】特開２００２−９０４１８号公報（段落００１７〜００２３）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、数万ゲートを越えるゲートを有するＡＳＩＣをシミュレーションで検査するためには、数ヶ月という長期間を要する。そこで短時間で検証を行うために、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）で回路を作り、その回路で動作を検証する手法が用いられる。この方法では、たとえば１日〜２日という短期間で機能を確認できる反面、回路が持つ全機能に対してどの程度機能が確認されているか評価することが出来なかった。
【０００４】
本発明は上記従来例に鑑みてなされたもので、フリップフロップ、特に多数のフリップフロップを有する集積回路の機能検査を高速に行うことができる試験回路と試験方法および集積回路とその検査方法を提供することを目的とする。それに加えて、機能が確認された回路を確認すること即ち機能検査のカバレッジを求めることが容易な試験回路と試験方法および集積回路とその検査方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために本発明は以下の構成を備える。すなわち、一定のアプリケーション用回路に含まれ、前記アプリケーションのために機能する機能フリップフロップの動作を試験する試験回路であって、前記機能フリップフロップの出力信号の信号レベルの変化を示す信号を保持する保持ブロックと、前記保持ブロックの保持する値を、指定した機能フリップフロップについて出力させるための選択ブロックとを備えることを特徴とする。
【０００６】
あるいは、検査回路付きのプログラム可能な集積回路であって、複数の機能ブロックと、前記複数の機能ブロックから一の機能ブロックを選択するためのカウンタ回路とを備え、前記機能ブロックは、プログラムの対象となる機能フリップフロップと、クロック入力端子が前記機能フリップフロップの出力端子に、データ入力端子がハイレベル端子に接続された第１のモニタ用フリップフロップと、反転クロック入力端子が前記機能フリップフロップの出力端子に、データ入力端子がハイレベル端子に接続された第２のモニタ用フリップフロップと、前記カウンタ回路のデコード済み出力信号をイネーブル信号とし、選択信号に応じて前記第１のモニタ用フリップフロップと前記第２のモニタ用フリップフロップのいずれかに保持された信号値を出力する選択回路とを備えることを特徴とする。
【０００７】
あるいは、一定のアプリケーション用回路に含まれ、前記アプリケーションのために機能する機能フリップフロップと、前記機能フリップフロップに対応し、その出力信号の信号レベルの変化を示す信号を保持する保持ブロックと、前記保持ブロックの保持する値を、指定した機能フリップフロップについて出力させるための選択ブロックとを備えた論理回路の動作を試験するための試験方法であって、
動作させた前記アプリケーション用回路から、指定された範囲内の機能フリップフロップに対応する前記保持ブロックの値を読み出して、試験マップ情報として保存する読み出し工程と、前記アプリケーション用回路において、前記範囲内にあって動作すべき前記機能フリップフロップに対応する設計マップ情報と前記試験マップ情報とを対比して前記機能フリップフロップの動作の状態を判定する工程とを含むことを特徴とする。
【０００８】
あるいは、プログラムの対象となる機能フリップフロップと、クロック入力端子が前記機能フリップフロップの出力端子に、データ入力端子がハイレベル端子に接続された第１のモニタ用フリップフロップと、反転クロック入力端子が前記機能フリップフロップの出力端子に、データ入力端子がハイレベル端子に接続された第２のモニタ用フリップフロップと、選択信号に応じて前記第１のモニタ用フリップフロップと前記第２のモニタ用フリップフロップのいずれかに保持された信号値を出力する選択回路とを有する複数の機能ブロックと、前記複数の機能ブロックから一の機能ブロックをイネーブル状態ににするためのカウンタ回路とを備えた集積回路を検査する方法であって、
動作させた前記集積回路内の、前記カウンタの値に応じてイネーブルにされた機能ブロックから、前記第１または第２のモニタ用フリップフロップの値を読み出して、試験マップ情報として保存する読み出し工程と、前記集積回路において、前記範囲内にあって動作すべき前記機能ブロックに対応する設計マップ情報と前記試験マップ情報とを対比して前記機能フリップフロップの動作の状態を判定する工程とを含むことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、多数のフリップフロップを有する集積回路の機能検査を高速に行うことができ、しかも機能が確認された回路を容易に確認することができる。また、検査されていないフリップフロップや、機能していないフリップフロップの抽出を容易に行うことが出来る。
【発明を実施するための最良の形態】
【００１０】
［第二の実施形態］
＜基本ブロックの構成＞
図１は、ＦＰＧＡまたはＡＳＩＣなどのプログラム可能な集積回路を構成する１つの基本単位（基本ブロックと呼ぶ。）を構成する回路のブロック図である。ひとつの基本ブロックは、ひとつのフリップフロップに、本発明に係るカバレッジ情報を抽出するための回路（モニタ回路と呼ぶ。）を付加した構成を有する。基本ブロックからモニタ回路を取り除いて残されるフリップフロップは、プログラム可能な集積回路において、特定用途の回路を構成するための回路要素となる。このフリップフロップを、モニタ回路に含まれるフリップフロップ（モニタ用フリップフロップと呼ぶ。）と区別するために、本実施形態では機能フリップフロップと呼ぶ。モニタ回路はその特定用途のための回路要素ではなく、検査を目的とする回路要素である。プログラム可能な集積回路の回路要素はフリップフロップだけではないが、本実施形態ではフリップフロップに着目し、その検査用回路について説明する。
【００１１】
図１に示す基本ブロックにおいて、フリップフロップ１は、ＦＰＧＡ又はＡＳＩＣを構成する１つの基本単位を構成するＦＦ、すなわち上述した機能フリップフロップである。機能フリップフロップ１は、ＦＰＧＡやＡＳＩＣを用いて合成される回路にマッピングされるレジスタであり、Ｄ入力端子４、クロック入力端子５、Ｑ出力端子６を備えるＤフリップフロップである。Ｄ入力端子４、クロック入力端子５、Ｑ出力端子６が他の基本ブロックや素子と接続されて、特定用途すなわちアプリケーション用回路が構成される。
【００１２】
フリップフロップ２は、機能フリップフロップ１のＱ出力がローレベル（Ｌ）からハイレベル（Ｈ）に変化した事を検出するためのモニタ用フリップフロップである。フリップフロップ３は、機能フリップフロップ１のＱ出力がハイレベル（Ｈ）からローレベル（Ｌ）に変化した事を検出するためのモニタ用フリップフロップである。モニタ用フリップフロップ２のクロックは正論理であるのに対して、モニタ用フリップフロップ３のクロックは負論理である。モニタ用フリップフロップ２，３のクロック入力端子は、いずれも機能フリップフロップ１のＱ出力端子に接続され、Ｄ入力端子はいずれもＶＤＤ（ハイレベル）にプルアップされている。また、モニタ用フリップフロップ２，３のＱ出力端子は、それぞれアナログスイッチ１０、１１の一方の入力端子に接続されている。アナログスイッチ１０、１１は、モニタ用フリップフロップ２，３のゲーティングのために用いられているので、コントロール端子から入力されるゲート信号に応じて動作するスイッチが構成されていれば他のスイッチ素子でもよい。また、フリップフロップのリセットの変わりにセット端子を用いる場合は,前記論理を負論理にして、同等の制御が可能である。
【００１３】
アナログスイッチ１０、１１の出力端子は共に出力端子１７に接続されている。またそのコントロール端子は、それぞれ２入力ＡＮＤゲート８，９の出力端子に接続される。
【００１４】
２入力ＡＮＤゲート８，９の一方の入力端子は共に２入力ＡＮＤゲート７の出力端子に接続されている。２入力ＡＮＤゲート８，９の他方の入力端子は、それぞれＬＨ入力端子１４、ＨＬ入力端子１５に接続されている。ＬＨ入力端子１４およびＨＬ入力端子１５は、基本ブロックの外部からの入力信号である。２入力ＡＮＤゲート７の入力端子は、それぞれＸ入力端子１２、Ｙ入力端子１３に接続されている。Ｘ入力端子１２、Ｙ入力端子１３はいずれも基本ブロックの外部からの入力信号である。リセット入力端子１６は、フリップフロップ１，２，３のリセット端子に接続される。リセット入力端子１６も基本ブロックの外部からの入力信号である。
【００１５】
上記構成により、機能フリップフロップ１の保持する値がＬ→Ｈに変化すると、モニタ用フリップフロップ２は、その立ち上がりに同期してＤ入力端子の値ＨをＱ出力端子にラッチする。また、機能フリップフロップ１の保持する値がＨ→Ｌに変化すると、モニタ用フリップフロップ３は、その立ち下がりに同期してＤ入力端子の値ＨをＱ出力端子にラッチする。フリップフロップのその値はそのフリップフロップがリセットされるまで保持される。
【００１６】
また、２入力ＡＮＤゲート７，８，９およびスイッチ１０，１１により選択回路が構成されている。すなわち、入力端子Ｘ、ＹがいずれもＨレベルであるときに、ＬＨ入力１４がＨレベルとなればスイッチ１０が開き、モニタ用フリップフロップ２のＱ出力が出力端子ＣＯＵＴ１７に出力される。また、入力端子Ｘ、ＹがいずれもＨレベルであるときに、ＨＬ入力１５がＨレベルとなればスイッチ１１が開き、モニタ用フリップフロップ３のＱ出力が出力端子ＣＯＵＴ１７に出力される。すなわち、入力端子Ｘ１２，Ｙ１３の入力信号は、基本ブロックを選択するための基本ブロック選択信号であり、ＬＨ入力端子１４，ＨＬ入力端子１５の入力信号は、モニタ用フリップフロップを選択するためのフリップフロップ選択信号として機能する。
【００１７】
＜基本ブロックの全体配置＞
図２に複数の基本ブロックを含む集積回路の部分的な構成図を示す。これは、Ｍ×Ｎ個のＤフリップフロップを使うことができるＦＰＧＡ又はＡＳＩＣの、モニタ回路（すなわちカバレッジ制御部）に着目した図である。したがって機能フリップフロップは、図２には記載されていない。最も簡単には、図１の基本ブロックがｍ×ｎ個配置された基本エリアをさらにマトリクス状等に配置して、Ｍ×Ｎ個の基本ブロックを備えたＡＳＩＣ又はＦＰＧＡを構成できる。図２はそのうちのひとつの基本エリアのさらに一部を示す図である。説明のために、そのＡＳＩＣ又はＦＰＧＡの長さを規格化し、縦ｍ番目、横ｎ番目で指定された基本ブロック（セルとも呼ぶ。）の位置をＹｍＸｎと呼ぶことにする。図２にはＸｎ−１列目、とＸｎ列目のブロックを示してある。ＦＰＧＡ又はＡＳＩＣ全体にわたって同じ構成を持つ。
【００１８】
図２において、基本ブロック２−３から基本ブロック２−８が図１に示した基本ブロックである。基本ブロック２−３がＹ０Ｘｎ−１、基本ブロック２−４がＹ１Ｘｎ−１、基本ブロック２−５がＹｍＸｎ−１、基本ブロック２−６がＹ０Ｘｎ、基本ブロック２−７がＹ１Ｘｎ、基本ブロック２−８がＹｍＸｎの位置にある。
【００１９】
基本ブロック２−３から基本ブロック２−８の全ての出力端子１７がＣＯＵＴ端子２−１３に接続されている。基本ブロック２−３から基本ブロック２−８の全てのＬＨ入力端子１４がＬＨ入力端子２−９に接続されており、全てのＨＬ入力端子１５がＨＬ入力端子２−１０に接続されている。また基本ブロック２−３から基本ブロック２−８の全てのリセット信号入力端子１６が、リセット入力端子２−１４に接続されている。
【００２０】
Ｙカウンタ２−１は、行を選択するための行カウンタ（Ｙカウンタ）であり、その出力はｍ本にデコードされている。したがって、Ｙカウンタ２−１は、デコード出力が少なくともＹ０〜Ｙｍのｍ本となる桁数のカウンタである。出力端子Ｙｉはｉ行目の基本ブロックのＹ入力端子に接続される。すなわちＹ０は０行目の、Ｙｍはｍ行目の基本ブロックのＹ入力端子に接続される。また望ましくは、Ｙカウンタ２−１は、カウント値がｍ＋１に達するタイミングで０に戻る。
【００２１】
同様に、Ｘカウンタ２−２は、列を選択するための列カウンタ（Ｘカウンタ）であり、その出力はｎ本にデコードされている。したがって、Ｘカウンタ２−２は、デコード出力が少なくともＸ０〜Ｘｎのｎ本となる桁数のカウンタである。出力端子Ｘｉはｉ列目の基本ブロックのＸ入力端子に接続される。すなわちＸ０は０列目の、Ｘｎはｎ列目の基本ブロックのＸ入力端子に接続される。また望ましくは、Ｘカウンタ２−２は、カウント値がｎ＋１に達するタイミングで０に戻る。
【００２２】
Ｙカウンタ２−１およびＸカウンタ２−２は、簡単のためにそれぞれクロック入力端子２−１１、２−１２に入力されるクロックに同期してカウントアップされるカウンタを用いて説明する。また、リセット回路は図示していないがカウンタ内に内蔵している物とする。
【００２３】
このＸカウンタおよびＹカウンタにより、クロックに同期して行は１行ずつ、列は１列ずつ更新（インクリメント）されつつ順次選択される。すなわち、全基本ブロックが走査される。たとえば、Ｙカウンタ２−１がＹｍ、Ｘカウンタ２−２がＸｎのときは、ＹｍＸｎの基本ブロックが選択される。ここで、ｍは０〜ｍの正の整数、ｎは０〜ｎの正の整数である。このように、ｍとｎの任意の組み合わせでマクロセル（基本ブロック）が選択される。
【００２４】
例えば図２の場合には、Ｙカウンタ２−１のＹ０出力端子は、基本ブロック２−３と基本ブロック２−６のＹ入力端子１３に接続される。これら基本ブロックはＹ０＝１（Ｈレベル）のとき選択される。同様にＹカウンタ２−１のＹ１出力端子は基本ブロック２−４および２−７のＹ入力端子１３に接続される。これら基本ブロックはＹ１＝１（Ｈレベル）のとき選択される。そして、全ては図示していないが、それ以外の出力端子Ｙｉ（ｉ＝２〜ｍ）はそれぞれ、ｉ行目の基本ブロックのＹ入力端子１３に接続されている。図２では、ｍ行目の基本ブロック２−５と基本ブロック２−８のＹ入力端子１３がＹカウンタ２−１のＹｍ端子に接続されている。
【００２５】
同様にＸカウンタ２−２の出力端子Ｘｎ−１は基本ブロック２−３、基本ブロック２−４、基本ブロック２−５のＸ入力端子１２に接続され、これら基本ブロックはＸｎ−１＝１（Ｈレベル）のとき選択される。全ては図示していないがそれ以外の出力端子Ｘｊ（ｊ＝０〜ｎ）の出力端子はそれぞれ、ｊ列目の基本ブロックのＸ入力端子１２に接続されている。図２では、ｎ行目の基本ブロック２−６と基本ブロック２−７、基本ブロック２−８のＸ入力端子１２が、Ｘカウンタ２−２のＸｎ端子に接続されている。
【００２６】
リセット入力端子２−１５がＹカウンタ２−１とＸカウンタ２−２のリセット端子に入力されており、リセット入力によってカウンタ２−１，２−２がリセットされる。
【００２７】
＜基本ブロックの動作＞
次に図２の回路の使用方法及び動作について説明する。リセット入力端子２−１４，２−１５にリセット信号（Ｈレベル）がはいると、基本ブロック２−３〜２−８及び、Ｙカウンタ２−１、Ｘカウンタ２−２を構成しているフリップフロップは全てリセットされる。そして、そのＱ出力端子及び、Ｙ０〜Ｙｍ端子、Ｘ０〜Ｘｎ端子はＬ（ローレベル）にリセットされる。その場合２−１３も当然Ｌとなっている。なおリセット入力端子２−１４，２−１５を共通化してもよい。
【００２８】
次に、動作させる回路をハードウエア記述言語（ＨＤＬ）で記述し、合成ツールで合成した回路を配置配線ツールで配置配線を行う。配置配線処理により、基本セルＹ０Ｘ０〜ＹｍＸｎのそれぞれの機能フリップフロップ１および図示していない組み合わせ回路部分の基本ブロックがプレーシングされ、配線される。なお、ＨＤＬで記述され論理合成された回路を本実施形態ではアプリケーション回路と呼ぶ。これは特定の機能を果たすために設計された回路であり、モニタ回路を含む集積回路からモニタ回路を除いた部分を指す。
【００２９】
配置配線ツールは、合成された回路におけるフリップフロップのロケーションと、そのフリップフロップとしてプレーシングされた機能フリップフロップ１を含む基本ブロックの位置とを対応付けて正しく記憶する記憶手段を有している。配置配線ツールは、合成した回路をＦＰＧＡ等のプログラム可能集積回路にマッピングしたうえで配線を行うツールであるので、設計上のフリップフロップと集積回路上の機能フリップフロップとの対応付けは当然に行われる。したがって前記記憶手段はこの対応付け情報を保存しておけばよい。たとえば配置配線ツールが汎用コンピュータで実行されるプログラムであれば、当該コンピュータのメモリ手段により前記記憶手段は実現される。
【００３０】
つぎに、このようにプレーシングされた集積回路の、ＬＨ入力端子２−９、ＨＬ入力端子２−１０及び、クロック２−１１，クロック２−１２をＬレベルにする。その状態で、リセット入力端子２−１４、２−１５にリセット信号Ｈを入力して、カウンタ及びフリップフロップをリセットする。すなわち、機能フリップフロップ１をリセットすると共に、機能フリップフロップ１に対応するモニタ回路もリセットする。それからアプリケーション回路を動作させる。
【００３１】
アプリケーション回路の動作の際、各基本ブロック中の機能フリップフロップ１のＱ出力端子がＬからＨになった場合には、モニタ用フリップフロップ２がＨレベルとなり、そのＱ出力端子もＨになる。一方、機能フリップフロップ１のＱ出力端子がＨからＬになった場合には、モニタ用フリップフロップ３がＨレベルとなり、そのＱ出力端子もＨになる。即ち、モニタ用フリップフロップ２，３の両方が実動作中にＨレベルになることは、機能フリップフロップ１のトグル動作が実行されたことを意味する。したがって、モニタ用フリップフロップ２，３を読み出して、その値がともにＨであれば、トグル動作が実行されたと判定できる。
【００３２】
次にそのように回路動作が実行された後、その動作カバレッジを抽出する方法を説明する。図３のようなクロックをＹカウンタ２−１とＸカウンタ２−２に加えることで、基本ブロックＹ０Ｘ０〜ＹｍＸｎが、ひとつずつ順次走査される。すなわち、カウンタの進行に従って、ｍ×ｎマトリクスに配置された基本ブロックの入力端子Ｘ、ＹがともにＨレベルとなり、該当する基本ブロックが選択されることとなる。
【００３３】
Ｘ入力端子１２、Ｙ入力端子１３がともにＨとなれば、ゲート７の出力がＨレベルとなる。カウンタの進行に従って、選択される基本ブロックは順次移り変わる。図３では、Ｘカウンタ２−１０が０〜ｎまで１周する間にＹカウンタ２−１の値は一定である。図３の欄３０３は、ＣＯＵＴに出力される基本ブロックの位置（Ｙ，Ｘ）を示す。すなわち、ＣＯＵＴには、カウンタの試行に従って選択された基本ブロックのモニタ用フリップフロップ２または３の値が出力される。いずれのモニタ用フリップフロップの値が出力されるかは、ＬＨ入力端子２−９およびＨＬ入力端子２−１０の値に応じて決まる。
【００３４】
ＬＨ入力端子２−９がＨレベルでＨＬ入力端子２−１０がＬレベルであればゲート８が、ＨＬ入力端子２−１０がＨレベルでＬＨ入力端子２−９がＬレベルであればゲート９の出力がＨレベルとなる。ゲート８，９の出力は、スイッチ１０，１１のゲート入力である。そのため、スイッチ１０が閉じれば（オンになれば）フリップフロップ２のＱ出力が出力端子２−１３に出力される。また、スイッチ１１が閉じれば（オンになれば）フリップフロップ３のＱ出力が出力端子２−１３に出力される。
【００３５】
そこで、まずＬＨ入力端子２−９をＨレベルとし、ＨＬ入力端子２−１０をＬレベルとして（もちろん逆でも良い）、Ｘ，Ｙ各カウンタをスタートする。これによって全基本ブロックを順次走査し、モニタ用フリップフロップ２（すなわち機能フリップフロップ１がＬ→Ｈとなったことを示す。）の値を順次読み出す。読み出した値は出力端子２−１３に接続した入力ポートからコンピュータに入力して保存する。この情報をＬＨ動作情報と呼ぶ。全基本ブロックについて走査を終了したら、Ｙカウンタが初期値に戻る前にＬＨ入力端子２−９およびＨＬ入力端子２−１０の値を逆転させる。そしてＸ，Ｙ各カウンタをスタートさせる。これによって全基本ブロックを順次走査し、モニタ用フリップフロップ３（すなわち機能フリップフロップ１がＨ→Ｌとなったことを示す。）の値を順次読み出す。読み出した値は出力端子２−１３に接続した入力ポートからコンピュータに入力して保存する。この情報をＨＬ動作情報と呼ぶ。
【００３６】
こうして読み出した各基本ブロックのモニタ用フリップフロップの値と、配置配線実施例のプレーシング時に保存した対応付け情報とを対比することで、検査済み機能フリップフロップを特定できる。モニタ用フリップフロップ２，３ともにＨレベルとなっている基本ブロックに属する機能フリップフロップは、その動作確認がされている。したがって、保存したＨＬ動作情報およびＬＨ動作情報を参照して、モニタ用フリップフロップ２，３の値がともにＨレベルとなっている基本ブロックを、対応付け情報に従って、アプリケーション回路上のフリップフロップに関連づけることが出来る。対応付け情報は、配置配線処理時に保存したものである。このようにして、アプリケーション回路に利用されているフリップフロップのうち、動作確認されているフリップフロップあるいは逆に動作確認されていないフリップフロップを特定できる。すなわち、アプリケーション回路に割り当てられているフリップフロップ全体に対して、動作確認されたフリップフロップの割合を求める事によって、ＡＳＩＣ又はＦＰＧＡに実動作における検査のカバレッジを求めることができる。
【００３７】
逆に、モニタ用フリップフロップ２又は３の少なくとも一方がＬであるアプリケーション回路に割り当てられたフリップフロップのロケーションと、ＨＤＬのソースをクロスプロービングしてもよい。この場合は、動作の未評価のフリップフロップの場所、ロジックを容易に検出する事が可能となる。
【００３８】
モニタ用フリップフロップの読み出しはアプリケーション回路の動作に関係しないため、十分時間をかけた読み出しも可能である。
【００３９】
＜カバレッジ算出手順＞
図５に、ＦＰＧＡやＡＳＩＣの設計から、その動作からのカバレッジ算出の全体の手順の概略を示す。なお図５はシステムフローであり、オペレータ等による作業も含む手順である。
【００４０】
ステップ５−１に示すＦＰＧＡ，ＡＳＩＣの設計は、最近ではＶＨＤＬ等の言語での設計になっている。アプリケーション回路の仕様に基づき、所定の設計言語で記述した回路データをシミュレーションで確認した後、合成ツールで回路にマッピングして回路情報を作成する（ステップ５−２）。
【００４１】
この回路情報を、配置配線ツールにダウンロードし、配置配線ツールでの配置配線を実行する（ステップ５−３）。この工程は、最初に回路情報を内部のフリップフロップやゲート要素のアドレス情報へ変換するプレーシング工程と、配線情報、タイミング情報に基づくルーテイング工程に分かれる。
【００４２】
回路のプレーシングにより、全体のＡＳＩＣ又はＦＰＧＡのどのフリップフロップ部分（すなわち基本ブロック）を使うかが決められる。その情報で、どのフリップフロップ（すなわち基本ブロック）をつかっているかのロケーションマップ（設計マップ情報）をコンピュータ等で、作成する（ステップ５−５）。
【００４３】
このようにして作成された配置配線情報を基に、図１の基本ブロックにより構成されるＡＳＩＣやＦＰＧＡの上でアプリケーション回路が作られる。このアプリケーション回路においては、図１の基本ブロックの機能フリップフロップ１のクロックや入力端子、出力端子が結線される。それらの工程は、一般的であるので省略する（ステップ５−６）。
【００４４】
完成したＦＰＧＡやＡＳＩＣを基板上に実装し、図２に示すＬＨ入力端子、ＨＬ入力端子、リセット入力端子、クロック信号等を制御できるよう、制御回路に接続しておく。
【００４５】
次に、実際にＡＳＩＣやＦＰＧＡを用いて検査のための処理を実行させる（ステップ５−７）。
【００４６】
その結果、モニタ用フリップフロップ２，３に、検査済みの機能フリップフロップ１についてはＨレベルの値が保持される。そのモニタ用フリップフロップ２，３から、上述した方法で値（カバレッジ情報との呼ぶ。）を読み出す（ステップ５−８）。読み出したカバレッジ情報から、ＬＨ入力信号がＨのときと、ＨＬ入力信号がＨのときの動作状態を区別して、ＨＬ動作情報およびＬＨ動作情報を、外部のコンピュータ等で生成する（ステップ５−９）。ＨＬ動作情報およびＬＨ動作情報は、検査された基本ブロックのマップを示すことから、試験マップ情報とも呼ぶ。
【００４７】
得られた試験マップ情報と、ステップ５−５で作成したフリップフロップのロケーションマップ（設計マップ情報）とを比較して（ステップ５−１０）、カバレッジを算出する。（５−１１）
具体的には、ステップ５−５で作成した設計マップ情報に基づいて、アプリケーション回路に割り付けられたフリップフロップに対応するフリップフロップ（すなわち基本ブロック）を探し、そのフリップフロップに着目する。そして着目したフリップフロップが
ＬからＨへ、またＨからＬへと両方向の変化をしていることを、ステップ５−９で作成した試験マップ情報で検証する。もし両方向の変化が生じていたなら、着目フリップフロップは動作検証されている。
【００４８】
そして、アプリケーション回路に割り付けられた全フリップフロップに対して同じ処理を行い、（動作していないフリップフロップの数／回路全体のフリップフロップの数）を計算する。これがカバレッジを示す値となる。
【００４９】
また、変化しない（すなわちＬＨ動作情報またはＨＬ動作情報の少なくともいずれかがＬレベル）フリップフロップのロケーションをコンピュータで抽出する。そして、そのロケーションから、ＨＤＬのソースへクロスプロービングすることにより、どの回路、仕様部分が動作していないか、容易に判断可能となる。クロスプロービングとは、プレーシングの逆動作であり、集積回路上の素子の位置から、設計データ上の素子を特定する動作を示す。
【００５０】
＜回路例＞
図６に図７の回路を基に作成したＬＨ動作情報６０２およびＨＬ動作情報６０３（試験マップ情報）と、フリップフロップのロケーションマップ（設計マップ情報）６０１の例を示す。図７のアプリケーション回路は、図２とは逆にモニタ回路を省略し、機能フリップフロップのみの結線状態を示している。設計マップ情報を参照すれば、集積回路においてアプリケーション回路のために使用されている基本ブロックは、Ｙ１Ｘ０，Ｙ１Ｘ１，Ｙ２Ｘ０の３つである。それぞれ図７におけるフリップフロップ７−１、７−２、７−３にマッピングされている。この情報は設計マップ情報６０１から得られる。
【００５１】
図７の回路は、フリップフロップ７−１〜７−３と２入力ＡＮＤゲート７−４で構成されている。配置配線ツールはフリップフロップ７−１をＦ１，フリップフロップ７−２をＦ２，フリップフロップ７−３をＦ３に割り付ける。そして、信号ＩＮ１をフリップフロップ７−１のＤ入力端子に、信号ＣＬＫをフリップフロップ７−１，７−２，７−３のクロック入力端子に接続する。また、フリップフロップ７−１のＱ出力端子をフリップフロップ７−２のＤ入力端子及びＡＮＤゲート７−４の一方の入力端子に、信号ＩＮ２をゲート７−４の他方の入力端子に、ゲート７−４の出力端子をフリップフロップ７−３のＤ入力端子に接続する。また、フリップフロップ７−２のＱ出力端子をＯＵＴ１端子に、フリップフロップ７−３のＱ出力端子をＯＵＴ２端子に接続する。
【００５２】
このような回路から作ったフリップフロップのロケーションマップと、その回路をＦＰＧＡ又はＡＳＩＣを作成し、動作させた結果の設計マップ６０１及び試験マップ６０２，ｍ６０３が図６である。
【００５３】
試験マップにおいては、基本ブロックＹ２Ｘ０の値が０（＝Ｌ）のため、カバレッジとしては、（３−１）×１００／３＝６６％のカバレッジという結果を得る事ができる。
【００５４】
同時に、（Ｙ２，Ｘ０）のロケーションのフリップフロップが動いていない事を、コンピュータはこのマップより即座に判定できる。そして、クロスプロービング手法により、図７のフリップフロップ７−３が動作していないことを判定できる。
この結果、カバレッジが１００％にならない原因としては、ＩＮ２がＬのままであると推定する事が可能である。
【００５５】
このように、試験マップにおいて、内容がＬであるようなフリップフロップを、設計マップ情報に対応付けることで特定できる。また、必要に応じて、ＡＳＩＣの場合、ある特定な回路部分に対する割り当てられたＦＦを抽出することもコンピュータで簡単にできる。そのためにはプレーシング情報より、特定ソース部分のみロケーションを抽出すればよい。具体的にいえば、図６において、ロケーションマップ６０１の内容が「−」の場合は、対応するフリップフロップは割り付けられていない。そこでそれを除外する。そして、ロケーションマップ６０１でＦｘと入っている部分のうち、試験マップ６０２，６０３のうち０である場所を、不動作フリップフロップの場所として抽出する。その部分が動作していないフリップフロップの場所であり、これをコンピュータは別ファイルに出力して記憶しておく。この情報を基に、特定の回路部分だけのカバレッジ情報も計算できる。即ち、（全体のＦＦ数―非動作ＦＦ数）×１００／全体のＦＦ数でトグルカバレッジを計算できる。
【００５６】
この場合、ＨＬ入力信号＝Ｈの動作マップのみ使う場合と、ＬＨ入力信号＝Ｈの動作マップを使う場合も可能である。ただし、両者のＨレベルの数が異なる場合、両者のマップの対応するロケーション（Ｙｍ，Ｘｎ）における値のＡＮＤをとったものを試験マップとして用いることで、双方向に変化可能なレジスタのトグルカバレッジを求められる。
【００５７】
また、ＨＬ入力信号＝Ｈの試験マップと、ＬＨ入力信号＝Ｈの試験マップが異なるときは、両者のＡＮＤをとった結果を反転させ、その結果１となったフリップフロップは、一方向にしかトグル動作していないフリップフロップとして抽出可能である。
【００５８】
以上のようにして、
［第二の実施形態］
図４に第二の実施形態を示す。第一の実施形態である図２に対して、アナログスイッチ３−１、３−２が付加されているだけなので、その違いに関してのみ説明し、その他は省略する。
【００５９】
アナログスイッチ３−１は、Ｘのｎ列目のセルのＣＯＵＴ出力とＣＯＵＴ出力端子２−１３との間に挿入されているアナログスイッチである。Ｘカウンタ２−２がＸｎラインを選択したときのみＯＮとなるように動作する。同様にアナログスイッチ３−２は、Ｘのｎ−１列目のセルのＣＯＵＴ出力とＣＯＵＴ出力端子２−１３との間に挿入されているアナログスイッチである。Ｘカウンタ２−２がＸｎ−１ラインを選択したときのみＯＮとなるように動作する。同様に、全てのＸｎ（ｎ＝１〜ｎ）のライン毎に、同様のアナログスイッチが挿入されており、そのラインがＸカウンタ２−２で選択されたときそのラインの信号のみＣＯＵＴに出力するように動作する。このように構成されているので、端子ＣＯＵＴで読み出す場合、行毎にデータを読み出す事になるので、付加容量が小さくなり、高速読み出しが可能となる。
【００６０】
［変形例］
図１の例ではＬＨ信号とＨＬ信号が同時にＨレベルになることはないものとしている。しかしＬＨ信号とＨＬ信号が同時にＨレベルになる可能性があれば、それに対処する必要がある。そのために、たとえばＬＨ信号がＨレベルかつＨＬ信号がＬレベルの場合にＨレベルを出力する第１のゲートと、ＨＬ信号がＨレベルかつＬＨ信号がＬレベルの場合にＨレベルを出力する第２のゲートを用意する。そして、第１のゲートの出力をＬＨ信号に代えてゲート８に入力し、第２のゲートの出力をＨＬ信号に代えてゲート９に入力するように構成する。こうすることで、スイッチ１０，１１が同時に開くことを防止できる。
【００６１】
また、一部のフリップフロップは、カバレッジを検出したい機能モジュール部分のフリップフロップだけで、構成できるようにしてもよい。
【００６２】
以上説明したように、ＡＳＩＣまたはＦＰＧＡのデジタル回路の構成可能な全ての同期フリップフロップの個々のフリップフロップのＱ出力端子に複数のラッチ手段が接続されている。このラッチ手段には、Ｑ出力レベルがＬからＨに変化した場合、又は、ＨからＬに変化した場合が少なくとも１回生じると、それらの信号を独立にラッチする。そして、それらのラッチは、そのＱ出力端子の状態を、逐次スイッチを切り替えながらＡＳＩＣ又はＦＰＧＡの外部で読み出せるように構成されている。
【００６３】
また、ＡＳＩＣまたはＦＰＧＡのデジタル回路を構成可能な全ての同期フリップフロップのうちの、一部のフリップフロップのＱ出力端子に、複数のラッチ手段を接続した。このラッチ手段には、Ｑ出力レベルがＬからＨに変化した場合とＨからＬに変化した場合が少なくとも１回生じると、それらの信号を独立にラッチする。そして、それらのラッチは、そのＱ出力端子の状態を、逐次スイッチを切り替えながらＡＳＩＣ又はＦＰＧＡの外部で読み出せるように構成した。
【００６４】
また、一部のフリップフロップは、カバレッジを検出したい機能モジュール部分のフリップフロップだけで、構成できるようにした。
【００６５】
また、ラッチの出力を読み出して、実際の回路に供されているフリップフロップのマッピング位置と比較し、その回路部分との一致を取る手段を有している。それにより、実回路に供されている回路部分のフリップフロップのうち、どのぐらいの割合で前記ラッチに変化が生じたかを解析する手段を具備するように構成した。
【図面の簡単な説明】
【００６６】
【図１】第一の実施形態の基本ブロック図である。
【図２】第一の実施形態の集積回路の全体配置例を示す図である。
【図３】第一の実施形態のタイムチャートである。
【図４】第二の実施形態の基本ブロック図である。
【図５】本発明に係る集積回路を用いた回路設計から試験までの手順を示す図である。
【図６】フリップフロップのロケーションマップおよび試験マップ例を示す図である。
【図７】集積回路を用いた回路の例を示す図である。
【符号の説明】
【００６７】
１〜３、７−１，７−２，７−３  Ｄタイプ  フリップフロップ（ＤＦＦ）
７〜９、７−４  ゲート回路
１０，１１、３−１，３−２  アナログスイッチ
２−３〜２−８  基本セル（アレー構造の）
２−１，２−２  カウンタ
【図１】
2007033135.tif 000003
【図２】
2007033135.tif 000004
【図３】
2007033135.tif 000005
【図４】
2007033135.tif 000006
【図５】
2007033135.tif 000007
【図６】
2007033135.tif 000008
【図７】
2007033135.tif 000009