(57)【要約】【課題】遅延を発生させることなく、高精度なテスト用クロックを提供すること。【解決手段】テスト回路設計装置１００では、テスト対象回路１１０の中からテスト対象ＦＦ１１１が指定されると、ネットリスト１０１を参照して、入力端子（クロック入力端子およびクロック制御信号入力端子）からテスト対象ＦＦ１１１までの間に構成されている論理回路を、テスト対象回路１１０に入力される各クロック（ここでは、クロックＡ，Ｂ）の中から選択されたクロックをテストクロックとしてテスト対象ＦＦ１１１に入力する機構を備えた回路であるテスト用論理回路に修正したテスト対象回路１２０を構成する。【選択図】図１
2010039611.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
テスト対象回路のネットリストの中からテスト対象となるＦＦ（フリップ・フロップ）が指定されると、当該ＦＦから、当該ＦＦへ入力されるクロックの各入力端子までの配線状態をあらわす論理式を抽出する抽出手段、
前記各入力端子の中の一の入力端子から入力されるクロックを前記ＦＦのテストクロックとして利用する場合、前記抽出手段によって抽出された論理式と前記ネットリストとを参照して前記一の入力端子から入力されるクロックを前記ＦＦまで透過させるテスト機構を構成する構成手段、
前記構成手段によって構成されたテスト機構を前記テスト対象回路のネットリストに追加したテスト用ネットリストを生成する生成手段、
前記生成手段によって生成されたテスト用ネットリストを出力する出力手段、
として機能させることを特徴とするテスト回路設計プログラム。
【請求項２】
前記構成手段は、前記コンピュータを、
前記抽出手段によって抽出された論理式において前記ＦＦへの入力と、前記一の入力端子への入力とが等しくなる条件を算出する算出手段として機能させ、前記算出手段によって算出された条件を満たすための論理素子を含んだ配線状態をテスト機構として構成することを特徴とする請求項１に記載のテスト回路設計プログラム。
【請求項３】
前記算出手段は、前記論理式にテストモード制御信号を入力するための入力端子を追加し、当該テストモード制御信号が特定の値の場合に、前記一の入力端子から入力されるクロックと前記ＦＦへ入力されるクロックとが等しくなる条件を算出することを特徴とする請求項２に記載のテスト回路設計プログラム。
【請求項４】
テスト対象回路のネットリストの中からテスト対象となるＦＦ（フリップ・フロップ）が指定されると、当該ＦＦから、当該ＦＦへ入力されるクロックの各入力端子までの配線状態をあらわす論理式を抽出する抽出手段と、
前記各入力端子の中の一の入力端子から入力されるクロックを前記ＦＦのテストクロックとして利用する場合、前記抽出手段によって抽出された論理式と前記ネットリストとを参照して前記一の入力端子から入力されるクロックを前記ＦＦまで透過させるテスト機構を構成する構成手段と、
前記構成手段によって構成されたテスト機構を前記テスト対象回路のネットリストに追加したテスト用ネットリストを生成する生成手段と、
前記生成手段によって生成されたテスト用ネットリストを出力する出力手段と、
を備えることを特徴とするテスト回路設計装置。
【請求項５】
コンピュータが、
テスト対象回路のネットリストの中からテスト対象となるＦＦ（フリップ・フロップ）が指定されると、当該ＦＦから、当該ＦＦへ入力されるクロックの各入力端子までの配線状態をあらわす論理式を抽出する抽出工程と、
前記各入力端子の中の一の入力端子から入力されるクロックを前記ＦＦのテストクロックとして利用する場合、前記抽出工程によって抽出された論理式と前記ネットリストとを参照して前記一の入力端子から入力されるクロックを前記ＦＦまで透過させるテスト機構を構成する構成工程と、
前記構成工程によって構成されたテスト機構を前記テスト対象回路のネットリストに追加したテスト用ネットリストを生成する生成工程と、
前記生成工程によって生成されたテスト用ネットリストを出力する出力工程と、
を実行することを特徴とするテスト回路設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）の動作テストを実行するためのテスト回路設計プログラム、テスト回路設計装置およびテスト回路設計方法に関する。
【背景技術】
【０００２】
従来より、ＬＳＩ設計においては、出荷テスト時に故障検出をより容易にするために「テスト設計」がおこなわれる。この「テスト設計」はＤＦＴ（Ｄｅｓｉｇｎ  Ｆｏｒ  Ｔｅｓｔａｂｉｌｉｔｙ：テスト容易化設計）とも呼ばれている。特に、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）の出荷テストにおいて、製造されたＡＳＩＣの歩留まりを向上するための技術として活用されている。
【０００３】
出荷テストには様々な手法があるが、その中の一つとしてＴＤＴ（Ｔｒａｎｓｉｔｉｏｎ  Ｄｅｌａｙ  Ｔｅｓｔ）と呼ばれる手法がある。ＴＤＴは、テスト対象となるＬＳＩを実速度に近い速度で動作させて、遅延故障を検出するものである。ＬＳＩ動作時に遅延故障が発生したパスがある場合、遅延が増大するためＬＳＩは、実速度に合わせて動作させようとすると、要求されるタイミングを満たせない。すなわち、実速度で正常な動作を実現できない場合は、ＬＳＩ内部にて遅延故障が発生していると検出される。
【０００４】
また、上述のような出荷テストを行う場合には、所定のクロックを出力可能なＬＳＩテスタを使用して所望する速度でＬＳＩを動作させる。ＬＳＩテスタを利用する場合、通常、クロックとして外部から入力できる本数に制限がある。したがって、ＴＤＴにてＬＳＩをテストする際、通常動作において使用されているクロック端子に対してクロックを与えることができない場合がある。そこで、制限されたクロック本数の中、テスト設計において各ＦＦが実速度に近い速度でテストできるように、テストモードの際にテスト対象となるＬＳＩに供給する（入力する）クロックを調整する必要がある。
【０００５】
したがって、従来は、テスト設計時において、ＬＳＩに供給するクロック（以下、「テストクロック」という）を調整するために、単純に通常動作でのクロックとテストモードでのクロックの切り替えをテストモード信号によって制御できるような機構を追加する手法がとられている（たとえば、下記特許文献１，２参照。）。
【０００６】
【特許文献１】特開平６−２０８６０３号公報
【特許文献２】特開２００８−９８２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述のようにテストモード信号によってテストクロックを調整する場合、通常動作でのクロックとテストモードでのテストクロックとを単純に切り替える機構を実現するために、テスト対象回路にセレクタが挿入される。すなわち、従来はこのセレクタをテストモード信号によって制御することによって、テスト対象となるＦＦへ確実にテストクロックを入力させていた。
【０００８】
たとえば、通常動作のクロックとテストモードのテストクロックとが全く別の場合（周波数が著しく違うなど）には、上述のようなセレクタによる切り替え手法は有効であるが、通常動作のクロックと同等の周波数のクロックをテストモード時のテストクロックとして使用する場合、テストクロックは、本来の論理設計上不必要なセレクタを経由してテスト対象となるＦＦに入力される。すなわち、ＦＦには、セレクタ分のクロックパスの遅延が増加したテストクロックが入力されることになり、結果としてＦＦの動作タイミングを悪化させる原因となるという問題があった。
【０００９】
この発明は、上述した従来技術による問題点を解消するため、遅延を発生させることなく、高精度なテスト用クロックを提供することのできるテスト回路設計プログラム、テスト回路設計装置およびテスト回路設計方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するため、このテスト回路設計プログラム、テスト回路設計装置およびテスト回路設計方法は、コンピュータが、テスト対象回路のネットリストの中からテスト対象となるＦＦ（フリップ・フロップ）が指定されると、当該ＦＦから、当該ＦＦへ入力されるクロックの各入力端子までの配線状態をあらわす論理式を抽出する処理と、前記各入力端子の中の一の入力端子から入力されるクロックを前記ＦＦのテストクロックとして利用する場合、抽出された論理式と前記ネットリストとを参照して前記一の入力端子から入力されるクロックを前記ＦＦまで透過させるテスト機構を構成する処理と、構成されたテスト機構を前記テスト対象回路に追加したネットリストを生成する処理と、生成されたネットリストを前記ＦＦの動作テスト用のネットリストとして出力する処理と、を含むことを要件とする。
【００１１】
このテスト回路設計プログラム、テスト回路設計装置およびテスト回路設計方法によれば、選択された一の入力端子から入力されるクロックを、テスト対象回路内の論理回路に影響されずにＦＦの動作テストを実行するためのクロックとして利用することができる。
【発明の効果】
【００１２】
このテスト回路設計プログラム、テスト回路設計装置およびテスト回路設計方法によれば、遅延を発生させることなく、高精度なテスト用クロックの提供を図ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１３】
以下に添付図面を参照して、このテスト回路設計プログラム、テスト回路設計装置およびテスト回路設計方法の好適な実施の形態を詳細に説明する。このテスト回路設計プログラム、テスト回路設計装置およびテスト回路設計方法は、テスト対象回路において、外部からのテストクロックの入力を利用することなく、内部供給されているクロックをテストクロックとして活用するためのテスト機構を構成し、テスト機構を含んだテスト対象回路のネットリストを提供するための技術である。
【００１４】
（テスト回路設計処理の概要）
まず、本実施の形態にかかるテスト回路設計処理の概要について説明する。図１は、本実施の形態にかかるテスト回路設計処理の概要を示す説明図である。図１のように、本実施の形態にかかるテスト回路設計処理は、ＬＳＩ設計工程における、ＤＦＴテスト容易化設計に関する処理である。
【００１５】
通常、クロックパス上にある論理素子に入力される信号は、クロックとクロックを制御するための制御信号とに分かれる。クロックは正確なタイミングでも入力が求められるため遅延の悪化を防ぐ必要がある。一方、クロックを制御する制御信号はクロックほど厳しいタイミングは要求されない。したがって、本実施の形態では、テスト対象回路内部に供給されるクロックの構成を解析して、回路内の配線状態をクロックと制御信号に分ける。そして、制御信号に対して論理素子を挿入して、テスト対象回路内部に供給されるクロックをテストクロックとして利用させ、セレクタなどによるクロックの遅延増大を防ぐことができる。
【００１６】
具体的に説明すると、設計者によって論理設計によって設計対象となるＬＳＩのネットリスト１０１が生成される（ステップＳ１）。本実施の形態にかかるテスト回路設計装置１００では、テスト対象回路１１０の中からテスト対象ＦＦ１１１が指定されると、ネットリスト１０１を参照して、入力端子（クロック入力端子およびクロック制御信号入力端子）からテスト対象ＦＦ１１１までの間に構成されている論理回路をテスト用論理回路に修正したテスト対象回路１２０を構成する。
【００１７】
本実施の形態において、テスト用論理回路とは、テスト対象回路１１０に入力される各クロック（ここでは、クロックＡ，Ｂ）の中から選択されたクロックをテストクロックとしてテスト対象ＦＦ１１１に入力する機構を備えた回路である。選択されたクロックは、テストクロックとして利用される場合、論理回路を構成する各論理素子の影響を受けずに透過した信号としてテスト対象ＦＦ１１１に入力されなければならない。したがって、テスト用論理回路は、選択されたクロックとテスト対象ＦＦ１１１に入力されるクロックとが等しくなるような論理構成がテスト対象回路１１０の論理回路に追加された構成となっている。
【００１８】
そして、テスト回路設計装置１００は、テスト対象回路１２０の構成が反映されたテスト用ネットリスト１０２を生成する。このテスト用ネットリスト１０２がＬＳＩの実機の構成となるため、以降の処理としてテスト用ネットリスト１０２を参照したレイアウト設計がおこなわれる（ステップＳ２）。
【００１９】
このように、本実施の形態にかかるテスト回路設計処理では、テスト対象回路１１０内部のクロックをテストクロックに利用することが可能なテスト機構を含んだテスト回路を設計することができる。内部のクロックを利用するため、従来のようなセレクタを挿入する必要がなくなり、クロックの遅延を増大させることなく、高精度のテストクロックによって動作テストを実行させることができる。
【００２０】
（テスト回路設計装置のハードウェア構成）
まず、テスト回路設計装置１００のハードウェア構成について説明する。図２−１は、テスト回路設計装置１００のハードウェア構成を示すブロック図である。図２−１において、テスト回路設計装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、磁気ディスクドライブ２０４と、磁気ディスク２０５と、光ディスクドライブ２０６と、光ディスク２０７と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２０８と、入力デバイス２０９と、出力デバイス２１０と、を備えている。また、各構成部はバス２００によってそれぞれ接続されている。
【００２１】
ここで、ＣＰＵ２０１は、テスト回路設計装置１００の全体の制御を司る。また、ＲＯＭ２０２は、ブートプログラムや、テスト回路設計プログラムなどのプログラムを記憶している。また、テスト回路設計装置１００において、テスト回路設計処理のみならず、ステップＳ１の論理設計やステップＳ２のレイアウト設計など、ＬＳＩ設計処理をおこなう場合には、各設計処理に応じたプログラムも記憶されている。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される。磁気ディスクドライブ２０４は、ＣＰＵ２０１の制御にしたがって磁気ディスク２０５に対するデータのリード／ライトを制御する。磁気ディスク２０５は、磁気ディスクドライブ２０４の制御で書き込まれたデータを記憶する。
【００２２】
光ディスクドライブ２０６は、ＣＰＵ２０１の制御にしたがって光ディスク２０７に対するデータのリード／ライトを制御する。光ディスク２０７は、光ディスクドライブ２０６の制御で書き込まれたデータを記憶したり、光ディスク２０７に記憶されたデータをコンピュータに読み取らせたりする。
【００２３】
インターフェース（以下、「Ｉ／Ｆ」と略する）２０８は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク２１１に接続され、このネットワーク２１１を介して他の装置（ステップＳ１の論理設計やステップＳ２のレイアウト設計をおこなう装置など）に接続される。そして、Ｉ／Ｆ２０８は、ネットワーク２１１と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ２０８には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００２４】
入力デバイス２０９は、設計者からテスト回路設計装置１００への指示を受け付けることができる。入力デバイス２０９の構成例としては、たとえば、キーボード、マウスなどが挙げられる。キーボードであれば、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなうことができる。また、キーボードは、一般的な鍵盤タイプに限らず、タッチパネル式の入力パッドやテンキーなどであってもよい。また、マウスであれば、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなうことができる。他にも、ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００２５】
出力デバイス２１０は、テスト回路設計装置１００による処理結果を設計者に対して出力することができる。出力デバイスの構成例としては、ディスプレイやプリンタが挙げられる。ディスプレイであれば、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示することができる。また、プリンタであれば、生成したテスト用ネットリストに関するデータを印刷することができる。
【００２６】
（テスト回路設計装置の機能的構成）
つぎに、テスト回路設計装置１００の機能的構成について説明する。図２−２は、テスト回路設計装置の機能的構成を示すブロック図である。テスト回路設計装置１００は、抽出部２２１と、構成部２２２と、生成部２２３と、出力部２２４と、を含む構成である。この制御部となる機能（抽出部２２１〜出力部２２４）は、具体的には、たとえば、図２−１に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０８により、その機能を実現する。
【００２７】
抽出部２２１は、テスト対象回路のネットリスト１０１の中からテスト対象となるＦＦ（フリップ・フロップ）が指定されると、指定されたＦＦから、このＦＦへ入力されるクロックの各入力端子までの配線状態をあらわす論理式を抽出する。具体的には、指定されたＦＦを起点にテスト対象回路をバックトレースして論理回路を構成する論理素子の種類に応じて論理積もしくは論理和を抽出する。この作業を各入力端子まで遡ることによって、ＦＦ〜入力端子の配線状態をあらわす論理式となる。なお、抽出された論理式に関する情報は、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００２８】
構成部２２２は、各入力端子の中の一の入力端子から入力されるクロックを、ＦＦのテストクロックとして利用する場合、抽出部２２１によって抽出された論理式とネットリスト１０１とを参照して、各入力端子の中から設定された一の入力端子から入力されるクロックをＦＦまで透過させるテスト機構を構成する。上述した抽出部２２１によってＦＦへ入力されるクロックの各入力端子が抽出されるが、これらの入力端子にそれぞれ入力されているクロックのうち、いずれか一つのクロックがテストクロックに設定される。
【００２９】
テストクロックとして利用するクロックの設定は、抽出された論理式に応じて、設計者がおこなう。また、構成部２２２に、各入力端子に入力されるクロックの中から、動作テスト用のクロック周波数に最も近い周波数のクロックの入力端子を一の入力端子に設定する設定部を備えて自動的に設定させてもよい。
【００３０】
また、構成部２２２は、抽出部２２１によって抽出された論理式においてＦＦへの入力と、選択された一の入力端子への入力とが等しくなる条件を算出する算出部（不図示）を含み、この算出部によって算出された条件を満たすための論理素子を含んだ配線状態をテスト機構として構成してもよい。なお、いずれの場合も、構成されたテスト機構に関する情報は、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００３１】
生成部２２３は、構成部２２２によって構成されたテスト機構をテスト対象回路のネットリストに追加したネットリスト、すなわち、テスト用ネットリスト１０２を生成する。そして、出力部２２４は、生成部２２３によって生成されたテスト用ネットリスト１０２を出力する。ここでも、生成されたテスト用ネットリスト１０２に関する情報は、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。また、出力されたテスト用ネットリスト１０２は、Ｉ／Ｆ２０８や出力デバイス２１０によって設計者に確認可能な情報として提供される。
【００３２】
（テスト回路設計処理の手順）
つぎに、上述したテスト回路設計装置１００によるテスト回路設計処理の手順について説明する。図３は、テスト回路設計処理の手順を示すフローチャートである。また、図４−１は、クロック定義テーブルを示す図表であり、図４−２は、テストクロック定義テーブルを示す図表であり、図４−３は、ＦＦクロックテーブルを示す図表であり、図４−４は、配線属性テーブルを示す図表である。
【００３３】
図１にて説明したように、テスト回路設計装置１００には、ネットリスト１０１が提供されている。このネットリスト１０１に基づいてＳＴＡ・合成ツールを用いることによって図４−１〜図４−４に示すようなテーブルが用意される。そして、テスト回路設計装置１００は、これら各テーブルを参照して、テスト回路設計処理をおこなう。
【００３４】
図３のフローチャートにおいて、まず、図４−１のクロック定義テーブル４１０を参照して、各クロックをテストクロックに振り分ける（ステップＳ３０１）。クロック定義テーブル４１０は、ＳＴＡ・合成ツールなどによってネットリスト１０１のタイミング制約を読み込むことにより構成される。ステップＳ３０１の処理では、クロック定義テーブル４１０を構成する情報のうち、「クロック名」と「クロックポイント」が読み込まれクロック定義として利用される。
【００３５】
また、図４−１にクロックとして定義されているもののうち、テストクロックとして使用するクロックおよび動作周波数、対象となる元のクロック周波数の上限と下限を定義した情報が、図４−２のテストクロック定義テーブル４２０である。このテストクロック定義テーブル４２０にしたがって、図４−１のクロック定義テーブル４１０に記されているクロック周波数よりテストクロックを割り当てる。ここで割り当てられたテストクロック名が、クロック定義テーブル４１０に記載されている「テストクロック名」に相当する。また、設計者が直にクロック定義テーブル４１０の「テストクロック名」に書き込むことにより任意のテストクロックを定義することもできる。
【００３６】
つぎに、クロック定義されたポイントからフォワードトレースして各ＦＦのクロック端子につながっているクロックを定義する（ステップＳ３０２）。ＦＦについてはネットリスト１０１を読み込んで各インスタンスを抽出することによって、図４−３のＦＦクロックテーブル４３０に「ＦＦ名」として書き込まれる。そして、図４−１のクロック定義テーブル４１０に定義されている「クロック名」よりフォワードトレースを実行する。
【００３７】
ステップＳ３０２におけるフォワードトレースでは、クロックポイントからネットリスト１０１の記述をトレースし、組み合わせ回路以外のセルに到達するまでトレースを実行する処理がおこなわれる。トレースした結果、ＦＦのクロック端子に到達したものについては、図４−３のＦＦクロックテーブル４３０の「クロック名」にクロック名を記載する。すでに「クロック名」にクロック名が記載されているときは、図４−１のクロック定義テーブル４１０より、クロック周波数の高いクロック名に置き換える。
【００３８】
そして、ステップＳ３０２におけるクロックの定義より、各ＦＦのテストクロックを定義し（ステップＳ３０３）、各配線の属性を設定する（ステップＳ３０４）。このステップＳ３０４における属性設定では、下記の４つのいずれかに設定される。また、Ｔ（優先順位高）→Ｏ（優先順位低）の順番で優先順位が設定されており、属性設定の際に参照される。
【００３９】
Ｔ：テストクロックに直接つながっている配線
Ｃ：テストクロックでないクロックに直接つながっている配線
Ｌ：テストクロックに組み合わせ回路を通してつながっている配線
Ｎ：テストクロックでないクロックに組み合わせ回路を通してつながっている配線
Ｏ：その他の配線
【００４０】
ステップＳ３０４において、各配線はまず、初期値である“Ｏ”に設定される。そして、各クロックからのフォワードトレースによりＦＦのクロック端子に接続されたものについて“Ｔ”または“Ｃ”または“Ｌ”に定義される（詳細な属性設定の手順については後述する）。このように定義された配線属性は、図４−４の配線属性テーブル４４０に書き込まれる。
【００４１】
その後、ＦＦからステップＳ３０３において定義されたテストクロックへバックトレースをおこない、論理式を構成する（ステップＳ３０５）。ステップＳ３０５では、具体的には、バックトレースを実施するときに到達した組み合わせセルより論理式を組み立てている。バックトレースを実施する場合、各配線の属性を調べて、“Ｏ”の属性の配線に到達した場合はその場所でバックトレースを打ち切る。“Ｔ”または“Ｃ”の属性の配線に到達した場合はクロックポイントに到達するので、バックトレースは停止する。“Ｌ”の属性の配線の場合はバックトレースを続行する。
【００４２】
そして、ステップＳ３０５によって構成された論理式とテスト条件とからテストクロック＝ＦＦ入力クロックになる条件を算出する（ステップＳ３０６）。具体的には、まず、各配線のうち“Ｏ”の属性の配線について“０”または“１”に固定する。これで、テストクロック＝ＦＦクロック端子の論理式が成り立たない場合は“Ｌ”属性の配線を“０”
または“１”に固定する。これをテストクロック＝ＦＦクロック端子の論理式が成り立つまで実行する。テストクロック＝ＦＦクロック端子の論理式が成り立つ条件を決定したら、テスト信号（ＴＥＳＴ＝“１”）により各配線を固定する。
【００４３】
さらに、ステップＳ３０６によって算出された条件に応じて各配線の属性を変更する（ステップＳ３０７）。このステップＳ３０７は、ステップＳ３０６において、バックトレース上で“Ｌ”の属性となっていた配線を“Ｔ”に置き換える処理である。これは二重に処理を行うことを防ぐためである。
【００４４】
そして、テスト対象回路１１０のすべてのＦＦについてテストクロックを調整したか否かを判断する（ステップＳ３０８）。ここで、テストクロックの調整が完了していないＦＦがある場合には（ステップＳ３０８：Ｎｏ）、ステップＳ３０５の処理に戻り、他のＦＦについてステップＳ３０５以降の処理をおこなう。
【００４５】
ステップＳ３０８において、すべてのＦＦについてのテストクロック調整が完了したと判断された場合には（ステップＳ３０８：Ｙｅｓ）、変更された論理式から修正されたネットリスト、すなわちテスト用ネットリストを作成して（ステップＳ３０９）、一連の処理を終了する。
【００４６】
（実施例）
つぎに、上述したテスト回路設計処理の実施例を、具体的なテスト対象回路を例に挙げて説明する。図５は、テスト回路設計前のテスト対象回路を示す回路図である。また、図６は、テスト回路設計後のテスト対象回路を示す回路図である。実施例では、図５の回路５００をテスト対象回路とする。そして、回路５００に入力されるクロックのうち、クロックＡ（ｃｌｏｃｋＡ）をテストクロックとして利用可能なテスト機構が追加された図６の回路６００を構成するためのテスト用ネットリスト１０２の生成手順について説明する。
【００４７】
＜論理式の構成＞
まず、ネットリストを参照して図５の回路５００の論理式を構成する手順について説明する。回路５００においてテスト対象ＦＦ５０１を起点に、つぎの論理セルまでバックトレースをおこなうと、ＯＲ１までバックトレースされ、下記（１）の論理式が求められる。
【００４８】
ｗｉｒｅ６＝ｗｉｒｅ４＋ｗｉｒｅ５  …（１）
【００４９】
さらに、ｗｉｒｅ４と、ｗｉｒｅ５とをバックトレースする。すると、ｗｉｒｅ４はＡＮＤ１、ｗｉｒｅ５はＡＮＤ２までバックトレースされ、下記（２）の論理式が求められる。
【００５０】
ｗｉｒｅ６＝（ｗｉｒｅ０・ｗｉｒｅ１）＋（ｗｉｒｅ２・ｗｉｒｅ３）  …（２）
【００５１】
ここで、図４−４の配線属性テーブル４４０から属性“Ｏ”となるｗｉｒｅ０と、ｗｉｒｅ２とに対して「１」または「０」と固定された場合にｗｉｒｅ６＝ｗｉｒｅ１となる条件を算出する。ｗｉｒｅ６＝ｗｉｒｅ１となる条件とは、すなわち、クロックＡ（ｃｌｏｃｋＡ）の入力がそのまま論理セルを透過して、テスト対象ＦＦ５０１に入力されるような条件である。ここでは、ｗｉｒｅ０＝１かつｗｉｒｅ２＝０である場合、ｗｉｒｅ６＝ｗｉｒｅ１になるという条件が導き出される。なお、このような条件の導出は公知技術であるため説明は省略する。
【００５２】
そして、テスト対象ＦＦ５０１へのテストクロックの入力を制御するためにテストモード信号（ＴＥＳＴ＝１）をｗｉｒｅ０と、ｗｉｒｅ１とに付加する。ＴＥＳＴ＝１の場合に、クロックＡ（ｃｌｏｃｋＡ）がテストクロックとして入力されるように設定するため、ｗｉｒｅ０＋ＴＥＳＴ＝１かつｗｉｒｅ２・ＴＥＳＴの反転値＝０と付加される。したがって、回路５００は、下記（３）のように変更され、図６の回路６００のようなテスト機構６０１が追加された構成となる。
【００５３】
ｗｉｒｅ６＝（（ｗｉｒｅ０＋ＴＥＳＴ）・ｗｉｒｅ１）＋（（ｗｉｒｅ２・ＴＥＳＴの反転値）・ｗｉｒｅ３）  …（３）
【００５４】
＜属性設定処理＞
つぎに、テスト対象回路を構成する各配線の属性設定について説明する。図７は、配線の属性設定手順を示す回路図である。また、図８−１は、配線の属性設定の初期状態を示す図表である。図７の回路５００の各配線（ｗｉｒｅ０〜ｗｉｒｅ６）では、初期状態では、図表８１０のように、すべての配線の属性が“Ｏ”に設定されている。
【００５５】
その後、クロックＡ（ｃｌｏｃｋＡ）よりフォワードトレースが実施され、図７のルート１の順序にそって、ＦＦに到達するまでのｗｉｒｅの属性が設定される。ここで、図８−２は、クロックＡからのフォワードトレースによる配線の属性設定を示す図表である。このとき、クロックＡがテストクロックであるとすれば、テーブル８２０にように、ｗｉｒｅ１はテストクロック端子に直接つながっているので属性“Ｔ”となり（８２１）、ＦＦに到達するまでに存在する、ｗｉｒｅ４とｗｉｒｅ６は属性“Ｌ”となる（８２２，８２３）。
【００５６】
次に、クロックＢ（ｃｌｏｃｋ  Ｂ）からフォワードトレースが実施され、図７のルート２の順序にそってＦＦに到達するまでのｗｉｒｅの属性が設定される。ここで図８−３は、クロックＢからのフォワードトレースによる配線の属性設定を示す図表である。このとき、ｗｉｒｅ３はテストクロックでないクロック端子に直接つながっているので、テーブル８３０のように、属性“Ｃ”となり（８３１）、ｗｉｒｅ５は属性“Ｎ”となる（８３２）。なお属性には上述したように優先順位がついている。そして、優先順位が高い属性のｗｉｒｅは低い属性に切り替わらないので、ｗｉｒｅ６は属性“Ｌ”のままとなる（８３３）。
【００５７】
そして、図７の場合は２つのクロックが入力されているが、さらにクロックが入力される回路の場合は、クロックを起点としたフォワードトレースを繰り返す。そして、すべてのクロックに対して実施した後に、設定した属性を図４−４の配線属性テーブル４４０に記録する。図８−４は、ネットリスト修正後の属性設定を示す図表である。図６の回路６００のように、テストモード信号の制御によってテストクロックをＦＦに入力させるか否かを制御できるようにネットリストを修正した場合は、テーブル８４０のようにテストクロックを直接入力可能なｗｉｒｅ４〜６の属性を“Ｔ”に変更する（８４１）。
【００５８】
＜ネットリストの修正処理＞
つぎに、上述した論理式の構成と、属性設定を考慮した上で、ネットリストの修正手順について、実施例の回路５００を例に挙げて詳細に説明する。図９は、ネットリスト修正の手順を示すフローチャートである。図９のフローチャートにおいて、まず、ＦＦを起点にバックトレースを開始する（ステップＳ９０１）。
【００５９】
つぎに、いずれかの論理セルに到達したか否かを判断する（ステップＳ９０２）。ここで、論理セルに到達するまで待ち（ステップＳ９０２：Ｎｏのループ）、論理セルに到達したと判断されると（ステップＳ９０２：Ｙｅｓ）、到達した論理セルから論理式を構成する（ステップＳ９０３）。図５の場合、到達した論理セルは、ＯＲ１（論理和）であるので  ｗｉｒｅ６＝ｗｉｒｅ４＋ｗｉｒｅ５となる。
【００６０】
つぎに、入力ｗｉｒｅの属性がＬまたはＮか否かを判断する（ステップＳ９０４）。ここで、入力ｗｉｒｅの属性がＬまたはＮであった場合（ステップＳ９０４：Ｙｅｓ）、到達した論理セルを起点に、さらにバックトレースをおこない（ステップＳ９０５）、テストクロックが到達する条件となる論理式を構成する（ステップＳ９０６）。なお、ステップＳ９０４において、入力ｗｉｒｅの属性がＬまたはＮでなかった場合（ステップＳ９０４：Ｎｏ）、バックトレースする必要がないため、そのままステップＳ９０７の処理に移行する。
【００６１】
図５の場合、ｗｉｒｅ４、ｗｉｒｅ５はそれぞれ属性“Ｌ”と“Ｎ”となる（図４−４参照）。したがって、ｗｉｒｅ４＝ｗｉｒｅ０・ｗｉｒｅ１、ｗｉｒｅ５＝ｗｉｒｅ２・ｗｉｒｅ３となるため、ｗｉｒｅ６＝（ｗｉｒｅ０・ｗｉｒｅ１）＋（ｗｉｒｅ２・ｗｉｒｅ３）となる。
【００６２】
つぎに、クロックＡ（ｃｌｏｃｋＡ）がテストクロックとなるので、ｗｉｒｅ６＝ｗｉｒｅ１となる。そして、テストクロックと論理積で括られた項は“１”、テストクロックと論理和で括られた項は“０”に置き換える（ステップＳ９０７）。上述のｗｉｒｅ０は、ｗｉｒｅ１と論理積で括られているのでｗｉｒｅ０＝１となる。そして、（ｗｉｒｅ２・ｗｉｒｅ３）はｗｉｒｅ１と論理和で括られているので、（ｗｉｒｅ２・ｗｉｒｅ３）＝０となる。そして、配線属性を確認するとｗｉｒｅ２は属性“Ｏ”であり、ｗｉｒｅ３は属性“Ｃ”である。したがって、属性“Ｏ”のｗｉｒｅをすべて“０”にすると、（０・ｗｉｒｅ３）＝０が成り立つので、ｗｉｒｅ２＝０となる。
【００６３】
その後、信号が固定する箇所をテストモード信号に置き換える（ステップＳ９０８）。具体的には、テストモード信号（ＴＥＳＴ）への置き換えは、“１”に固定する場合はＴＥＳＴ信号と論理和を取る。また、“０”に固定する場合は、テストモード信号（ＴＥＳＴ）の反転との論理積を取る。すなわち、ｗｉｒｅ０→ｗｉｒｅ０＋ＴＥＳＴとなり、ｗｉｒｅ１→ｗｉｒｅ１・ＴＥＳＴの反転値となる。
【００６４】
結果として、ｗｉｒｅ６＝（（ｗｉｒｅ０＋ＴＥＳＴ）・ｗｉｒｅ１）＋（（ｗｉｒｅ２・ＴＥＳＴ）・ｗｉｒｅ３）となる。すなわち、「（ｗｉｒｅ０＋ＴＥＳＴ）」と（ｗｉｒｅ２・ＴＥＳＴ）とが、図６におけるテスト機構６０１として追加された構成となる。最後に、テストモードにおいて、テストクロックと接続されたｗｉｒｅ（ｗｉｒｅ４、ｗｉｒｅ６）の属性を“Ｌ”から“Ｔ”に変更することで（ステップＳ９０９）、ネットリストの修正処理が終了する。
【００６５】
以上説明したように、本実施の形態にかかるテスト回路設計処理を適用させることによって、実施例のように、ネットリスト１０１をあらわす論理式を構成することによって、テスト機構６０１を含んだ回路６００のテスト用ネットリスト１０２を容易に生成することができる。ここで生成されたテスト用ネットリスト１０２に基づいて構成したテスト回路によって動作テストをおこなえば、内部のクロックを利用するため、従来のようなセレクタを挿入する必要がなくなり、クロックの遅延を増大させることなく、高精度のテストクロックによって動作テストを実現することができる。
【００６６】
なお、本実施の形態で説明したテスト回路設計方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、このプログラムは、インターネットなどのネットワークを介して配布することが可能な媒体であってもよい。
【００６７】
また、本実施の形態で説明したテスト回路設計装置１００は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、たとえば、上述したテスト回路設計装置１００の機能（抽出部２２１〜出力部２２４）をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、テスト回路設計装置１００を製造することができる。
【００６８】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００６９】
（付記１）コンピュータを、
テスト対象回路のネットリストの中からテスト対象となるＦＦ（フリップ・フロップ）が指定されると、当該ＦＦから、当該ＦＦへ入力されるクロックの各入力端子までの配線状態をあらわす論理式を抽出する抽出手段、
前記各入力端子の中の一の入力端子から入力されるクロックを前記ＦＦのテストクロックとして利用する場合、前記抽出手段によって抽出された論理式と前記ネットリストとを参照して前記一の入力端子から入力されるクロックを前記ＦＦまで透過させるテスト機構を構成する構成手段、
前記構成手段によって構成されたテスト機構を前記テスト対象回路のネットリストに追加したテスト用ネットリストを生成する生成手段、
前記生成手段によって生成されたテスト用ネットリストを出力する出力手段、
として機能させることを特徴とするテスト回路設計プログラム。
【００７０】
（付記２）前記構成手段は、前記コンピュータを、
前記抽出手段によって抽出された論理式において前記ＦＦへの入力と、前記一の入力端子への入力とが等しくなる条件を算出する算出手段として機能させ、前記算出手段によって算出された条件を満たすための論理素子を含んだ配線状態をテスト機構として構成することを特徴とする付記１に記載のテスト回路設計プログラム。
【００７１】
（付記３）前記算出手段は、前記論理式にテストモード制御信号を入力するための入力端子を追加し、当該テストモード制御信号が特定の値の場合に、前記一の入力端子から入力されるクロックと前記ＦＦへ入力されるクロックとが等しくなる条件を算出することを特徴とする付記２に記載のテスト回路設計プログラム。
【００７２】
（付記４）前記コンピュータをさらに、
前記各入力端子に入力されるクロックの中から、動作テスト用のクロック周波数に最も近い周波数のクロックの入力端子を前記一の入力端子に設定する設定手段として機能させることを特徴とする付記１〜３のいずれか一つに記載のテスト回路設計プログラム。
【００７３】
（付記５）前記抽出手段は、前記指定されたＦＦをバックトレースして当該ＦＦから当該ＦＦへ入力されるクロックの各入力端子までの配線状態をあらわす論理式を抽出することを特徴とする付記１〜４のいずれか一つに記載のテスト回路設計プログラム。
【００７４】
（付記６）テスト対象回路のネットリストの中からテスト対象となるＦＦ（フリップ・フロップ）が指定されると、当該ＦＦから、当該ＦＦへ入力されるクロックの各入力端子までの配線状態をあらわす論理式を抽出する抽出手段と、
前記各入力端子の中の一の入力端子から入力されるクロックを前記ＦＦのテストクロックとして利用する場合、前記抽出手段によって抽出された論理式と前記ネットリストとを参照して前記一の入力端子から入力されるクロックを前記ＦＦまで透過させるテスト機構を構成する構成手段と、
前記構成手段によって構成されたテスト機構を前記テスト対象回路のネットリストに追加したテスト用ネットリストを生成する生成手段と、
前記生成手段によって生成されたテスト用ネットリストを出力する出力手段と、
を備えることを特徴とするテスト回路設計装置。
【００７５】
（付記７）コンピュータが、
テスト対象回路のネットリストの中からテスト対象となるＦＦ（フリップ・フロップ）が指定されると、当該ＦＦから、当該ＦＦへ入力されるクロックの各入力端子までの配線状態をあらわす論理式を抽出する抽出工程と、
前記各入力端子の中の一の入力端子から入力されるクロックを前記ＦＦのテストクロックとして利用する場合、前記抽出工程によって抽出された論理式と前記ネットリストとを参照して前記一の入力端子から入力されるクロックを前記ＦＦまで透過させるテスト機構を構成する構成工程と、
前記構成工程によって構成されたテスト機構を前記テスト対象回路のネットリストに追加したテスト用ネットリストを生成する生成工程と、
前記生成工程によって生成されたテスト用ネットリストを出力する出力工程と、
を実行することを特徴とするテスト回路設計方法。
【図面の簡単な説明】
【００７６】
【図１】本実施の形態にかかるテスト回路設計処理の概要を示す説明図である。
【図２−１】テスト回路設計装置のハードウェア構成を示すブロック図である。
【図２−２】テスト回路設計装置の機能的構成を示すブロック図である。
【図３】テスト回路設計処理の手順を示すフローチャートである。
【図４−１】クロック定義テーブルを示す図表である。
【図４−２】テストクロック定義テーブルを示す図表である。
【図４−３】ＦＦクロックテーブルを示す図表である。
【図４−４】配線属性テーブルを示す図表である。
【図５】テスト回路設計前のテスト対象回路を示す回路図である。
【図６】テスト回路設計後のテスト対象回路を示す回路図である。
【図７】配線の属性設定手順を示す回路図である。
【図８−１】配線の属性設定の初期状態を示す図表である。
【図８−２】クロックＡからのフォワードトレースによる配線の属性設定を示す図表である。
【図８−３】クロックＢからのフォワードトレースによる配線の属性設定を示す図表である。
【図８−４】ネットリスト修正後の属性設定を示す図表である。
【図９】ネットリスト修正の手順を示すフローチャートである。
【符号の説明】
【００７７】
１００  テスト回路設計装置
１０１  ネットリスト
１０２  テスト用ネットリスト
１１０  テスト対象回路
１１１  テスト対象ＦＦ（フリップフロップ）
１２０  修正したテスト対象回路
２２１  抽出部
２２２  構成部
２２３  生成部
２２４  出力部
【図１】
2010039611.tif 000003
【図２−１】
2010039611.tif 000004
【図２−２】
2010039611.tif 000005
【図３】
2010039611.tif 000006
【図４−１】
2010039611.tif 000007
【図４−２】
2010039611.tif 000008
【図４−３】
2010039611.tif 000009
【図４−４】
2010039611.tif 000010
【図５】
2010039611.tif 000011
【図６】
2010039611.tif 000012
【図７】
2010039611.tif 000013
【図８−１】
2010039611.tif 000014
【図８−２】
2010039611.tif 000015
【図８−３】
2010039611.tif 000016
【図８−４】
2010039611.tif 000017
【図９】
2010039611.tif 000018