(57)【要約】  スキャン非同期記憶素子は、ｎ入力の非同期記憶素子（１２）と、ｎビットの信号入力およびスキャン入力から非同期記憶素子（１２）のｎ入力を生成するスキャン制御論理回路（１４）とを備えている。スキャン制御論理回路（１４）は、与えられた制御信号が第１のビットパターンのときは信号入力を、第２のビットパターンのときはスキャン入力を、それ以外のときは非同期記憶素子（１２）が前の値を保持するビットパターンを、それぞれ非同期記憶素子（１２）のｎ入力として出力とする。
2011158500.tif 000002
【特許請求の範囲】
【請求項１】
ｎを２以上の整数とするｎ入力の非同期記憶素子と、
ｎビットの信号入力およびスキャン入力から前記非同期記憶素子のｎ入力を生成するスキャン制御論理回路とを備え、
前記スキャン制御論理回路は、与えられた制御信号が第１のビットパターンのときは前記信号入力を、第２のビットパターンのときは前記スキャン入力を、それ以外のときは前記非同期記憶素子が前の値を保持するビットパターンを、それぞれ前記非同期記憶素子のｎ入力として出力とする
ことを特徴とするスキャン非同期記憶素子。
【請求項２】
前記非同期記憶素子は、MullerのＣ素子である
ことを特徴とする請求項１のスキャン非同期記憶素子。
【請求項３】
前記制御信号はｎビット信号であり、
前記スキャン制御論理回路は、
前記制御信号が前記第１および第２のビットパターン以外のときは前記制御信号を出力し、前記第２のビットパターンのときは前記スキャン入力をｎビットスキャン入力にして出力する組み合わせ論理回路と、
前記信号入力および前記組み合わせ論理回路の出力の各ビットペアがそれぞれ入力され、前記制御信号が前記第１のビットパターンのときは前記信号入力を、それ以外のビットパターンときは前記組み合わせ論理回路の出力を、前記非同期記憶素子の各入力としてそれぞれ出力するｎ個のマルチプレクサとを有する
ことを特徴とする請求項２のスキャン非同期記憶素子。
【請求項４】
前記非同期記憶素子は、非対称Ｃ素子である
ことを特徴とする請求項１のスキャン非同期記憶素子。
【請求項５】
前記非同期記憶素子は、ラッチである
ことを特徴とする請求項１のスキャン非同期記憶素子。
【請求項６】
組み合わせ回路と、
複数の請求項１のスキャン非同期記憶素子とを備え、
前記複数のスキャン非同期記憶素子の信号入力ならびに出力は、前記組み合わせ回路に接続されており、
前記複数のスキャン非同期記憶素子は、前段の出力と次段のスキャン入力とが互いに接続されるように、縦続接続されている
ことを特徴とする半導体集積回路。
【請求項７】
前記組み合わせ回路は、一方の出力が前記スキャン非同期記憶素子を介して他方の入力となる第１および第２の部分回路から構成されており、
奇数段目のスキャン非同期記憶素子は、互いに共通の第１の制御信号で制御され、かつ、当該スキャン非同期記憶素子の信号入力は前記第１の部分回路に接続され、当該スキャン非同期記憶素子の出力は前記第２の部分回路に接続されており、
偶数段目のスキャン非同期記憶素子は、互いに共通の第２の制御信号で制御され、かつ、当該スキャン非同期記憶素子の信号入力は前記第２の部分回路に接続され、当該スキャン非同期記憶素子の出力は前記第１の部分回路に接続されている
ことを特徴とする請求項６の半導体集積回路。
【請求項８】
請求項７の半導体集積回路の設計方法において、
原非同期式回路に含まれる非同期記憶素子を前記スキャン非同期記憶素子に置き換える第１のステップと、
前記スキャン非同期記憶素子を第１および第２のラッチにグループ分けして、前記原非同期式回路に含まれる組み合わせ回路を前記第１および第２の部分回路に分割する第２のステップと、
前記第１および第２のラッチの間の入出力の依存関係を特定する第３のステップと、
入出力の依存関係がない前記第１および第２のラッチを交互に、かつ、前段の出力と次段のスキャン入力とを互いに接続する第４のステップとを備えている
ことを特徴とする半導体集積回路の設計方法。
【請求項９】
前記第２のステップにおいて、前記スキャン非同期記憶素子だけでは前記原非同期式回路の組み合わせ回路を前記第１および第２の部分回路に完全に分割できない場合、前記スキャン非同期記憶素子と共通の制御信号で動作し、前記制御信号が前記第１のビットパターンのときは信号入力を、前記第２のビットパターンのときはスキャン入力を、それぞれ出力し、それ以外のときは前の値を保持する透過スキャンラッチを、前記第１および第２の部分回路の間に挿入する
ことを特徴とする請求項８の半導体集積回路の設計方法。
【請求項１０】
前記第４のステップにおいて、入出力の依存関係がない第１および第２のラッチのペアが見つからない場合、前記スキャン非同期記憶素子と共通の制御信号で動作し、前記制御信号が前記第２のビットパターンのときはスキャン入力を出力し、前記制御信号が前記第１および第２のビットパターン以外のときは前の値を保持するスキャンラッチを前記第１または第２のラッチのペアとして挿入する
ことを特徴とする請求項８の半導体集積回路の設計方法。
【請求項１１】
請求項６の半導体集積回路に含まれる組み合わせ回路のテストのためのテストパターン生成方法において、
前記組み合わせ回路に印加すべき基本テストパターンを生成するステップと、
前記基本テストパターンに対する前記組み合わせ回路の応答パターンの期待値である期待応答パターンを算出するステップと、
テストパターンの一部として、前記期待応答パターンに基づいて、前記基本テストパターンに対する前記組み合わせ回路の応答パターンをキャプチャするときにおける、当該応答パターンをキャプチャするスキャン非同期記憶素子の保持動作に係る前記制御信号のビットパターンを決定するステップとを備えている
ことを特徴とするテストパターン生成方法。
【請求項１２】
テストパターンの一部として、前記期待応答パターンに基づいて、前記基本テストパターンを前記組み合わせ回路に印加した際に当該基本テストパターンの検出対象故障により生じる誤りを含む応答パターンを当該誤りを失うことなくキャプチャするためのキャプチャパターンを生成するステップを備えている
ことを特徴とする請求項１１のテストパターン生成方法。
【請求項１３】
テストパターンの一部として、前記期待応答パターンに基づいて、前記複数のスキャン非同期記憶素子への前記基本テストパターンのスキャンイン後かつ前記基本テストパターンに対する前記組み合わせ回路の応答パターンのキャプチャ前における、前記組み合わせ回路の応答パターンをキャプチャするスキャン非同期記憶素子の保持動作に係る前記制御信号のビットパターンを決定するステップを備えている
ことを特徴とする請求項１１のテストパターン生成方法。
【請求項１４】
請求項７の半導体集積回路に含まれる組み合わせ回路のテストのためのテストパターン生成方法において、
前記複数のスキャン非同期記憶素子を、それぞれ、当該スキャン非同期記憶素子に含まれる非同期記憶素子を時間展開して得られる時間展開モデルであって当該スキャン非同期記憶素子の信号入力および当該スキャン非同期記憶素子の後段のスキャン非同期記憶素子の出力に該当する前記組み合わせ回路の信号入力を入力とする時間展開モデルに置き換えるとともに、前記第１および第２の部分回路の信号入力を外部入力に、前記時間展開モデルの出力を外部出力にそれぞれ置き換えた回路モデルを生成するステップと、
前記回路モデルにおける前記第１および第２の部分回路のそれぞれについてテストパターンを生成するステップとを備えている
ことを特徴とするテストパターン生成方法。
【請求項１５】
請求項６の半導体集積回路に含まれるスキャン非同期記憶素子のテストのためのテストパターン生成方法において、
テスト対象のスキャン非同期記憶素子が前の値を保持する第１の状態遷移、保持値が前の値にフラッシュされる第２の状態遷移、および保持値が変化する第３の状態遷移がすべて再現されるように、当該テスト対象のスキャン非同期記憶素子のスキャン入力および制御信号のビットパターンを決定するステップを備えている
ことを特徴とするテストパターン生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路のテスト容易化に関し、特に、MullerのＣ素子、非対称Ｃ素子、ラッチなどの非同期記憶素子を備えている非同期式回路のテスト容易化に関する。
【背景技術】
【０００２】
近年の半導体集積回路の微細化、大規模化、低消費電力化に伴い、製造ばらつきや特性劣化や電圧変動などによる信号遅延量のばらつき、クロックスキュー、可変クロックの使用などが原因で同期式回路の処理能力が限界に近づきつつある。そこで非同期式回路の利用が見直されている。半導体集積回路の分野では、大域的には非同期動作をし、局所的には同期動作をするＧＡＬＳ（Globally Asynchronous Locally Synchronous）アーキテクチャが今後増加することが予想される。【０００３】
非同期式回路は、自己タイミングで動作することができるため各種信号遅延に強く、また、動作クロック信号を必要としないため安定状態で電力を消費しないという特徴がある。しかし一方で、非同期式回路ではハザードやレースを考慮した設計が必要となり、そして何よりも同期式回路よりもテストが難しくなるという欠点がある。【０００４】
非同期式回路のテスト容易化として同期式回路で広く用いられているスキャン方式を応用することができる。すなわち、スキャン方式では、テスト用のシフトレジスタ（スキャンチェーン）を構成してそれにテストパターンをスキャンインし、そのテストパターンに対する非同期式回路の応答パターンをシフトレジスタでキャプチャし、スキャンアウトすることでテストが実施される。【０００５】
同期式回路の場合、記憶素子として使用されるフリップフロップの入力側にその前段のフリップフロップの出力と同期式回路の出力のいずれか一方を選択するマルチプレクサを挿入することでシフトレジスタが容易に構成できる。これに対して、非同期式回路は、フリップフロップではなくMullerのＣ素子などの内部に存在する信号フィードバックによって値を保持する仕組みであるため、そのようなフィードバックパスにテスト専用のスキャンフリップフロップを挿入してシフトレジスタを構成する必要がある。したがって、非同期式回路はテスト容易化によって面積オーバーヘッドが増大するばかりか、遅延オーバーヘッドも増大してしまう。【０００６】
これまで非同期式回路のテスト容易化に伴う面積および遅延オーバーヘッドを低減するためのさまざまな手法が提案されている。例えば、互いに異なるクロック信号で動作するＬ１ラッチ（マスターラッチ）およびＬ２ラッチ（スレーブラッチ）で構成されるＬＳＳＤ（Level Sensitive Scan Design）ラッチでフリップフロップを構成し、Ｌ２ラッチをフィードバックパス外に配置するＬＳＳＤシングルラッチデザインを採用することで遅延オーバーヘッドを低減している。さらに、各部分回路のフィードバックパス外のラッチを省略し、２つに分割された組み合わせ回路の一方の部分回路のラッチと他方の部分回路のラッチを交互に接続してＬＳＳＤラッチを構成する、いわゆるＬ１Ｌ２＊シングルラッチデザインを採用することで面積オーバーヘッドを最小化している（例えば、非特許文献１参照）。【０００７】
また、Ｌ１Ｌ２＊シングルラッチデザインにおいて、フィードバックパスにマルチプレクサのみを残し、ラッチをフィードバックパス外のスキャンパスに挿入することで、面積および遅延オーバーヘッドを最小化している（例えば、特許文献１参照）。一方、フィードバックパスとスキャンパスにそれぞれ独立に動作するラッチを挿入することで記憶素子の内部状態を保持したままテストパターンのスキャンイン／アウトを可能にしているものがある（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】国際公開第ＷＯ２００６／０１３５２４号
【特許文献２】国際公開第ＷＯ２０１０／００１１８７号
【非特許文献】
【０００９】
【非特許文献１】F. te Beest, A. Peeters, K. Van Berkel, and H. Kerkhoff, "Synchronous full-scan for asynchronous handshake circuits," J. Electron. Test., vol. 19, no. 4, pp. 397-406, 2003
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述したように、非同期式回路のテスト容易化にスキャン方式を応用するとシフトレジスタの追加が必要となり、面積および遅延オーバーヘッドが増大してしまう。それを解決するためにＬ１Ｌ２＊シングルラッチデザインを採用した場合、Ｌ１ラッチとＬ２＊ラッチ間の入出力の依存関係があると任意のテストパターンの印加および観測が保証できなくなってしまう。すなわち、Ｌ１Ｌ２＊シングルラッチデザインでは非同期式回路の完全テストができないおそれがある。特に特許文献１に開示された非同期式回路ではフィードバックパスの外にラッチが配置されているため、スキャンイン／アウトの際のマルチプレクサの状態によっては１ラッチしか介在しない信号ループが非同期式回路中に構成されると回路が発振するおそれがある。【００１１】
また、従来のいずれの手法も、非同期式回路に元々備わっている非同期記憶素子にテストパターンを記憶するのではなく、追加挿入したフリップフロップまたはラッチでテストパターンおよび非同期式回路の応答パターンを記憶している。したがって、テストパターンおよび応答パターンのスキャンイン／アウトだけではMullerのＣ素子などの非同期記憶素子のテストができない。すなわち、非同期記憶素子のテストが不完全である。【００１２】
上記問題に鑑み、本発明は、非同期式回路のテスト容易化に好適な改良型の非同期記憶素子（以下、「スキャン非同期記憶素子」と称する。）を提供することを課題とする。さらに、そのようなスキャン非同期記憶素子を備えたテスト容易化設計された半導体集積回路、ならびにそのような半導体集積回路の設計方法およびテストパターン生成方法を提供することを課題とする。
【課題を解決するための手段】
【００１３】
例えば、スキャン非同期記憶素子は、ｎを２以上の整数とするｎ入力の非同期記憶素子と、ｎビットの信号入力およびスキャン入力から非同期記憶素子のｎ入力を生成するスキャン制御論理回路とを備えている。スキャン制御論理回路は、与えられた制御信号が第１のビットパターンのときは信号入力を、第２のビットパターンのときはスキャン入力を、それ以外のときは非同期記憶素子が前の値を保持するビットパターンを、それぞれ非同期記憶素子のｎ入力として出力とする。ここでいう非同期記憶素子とは、MullerのＣ素子、非対称Ｃ素子、ラッチなど非同期式回路において記憶素子として用いられるもの全般を意味する。【００１４】
また、半導体集積回路は、組み合わせ回路と複数の上記のスキャン非同期記憶素子とを備えている。複数のスキャン非同期記憶素子の信号入力ならびに出力は、組み合わせ回路に接続されている。そして、複数のスキャン非同期記憶素子は、前段の出力と次段のスキャン入力とが互いに接続されるように、縦続接続されている。【００１５】
具体的には、上記半導体集積回路において、組み合わせ回路は、一方の出力がスキャン非同期記憶素子を介して他方の入力となる第１および第２の部分回路から構成されている。そして、奇数段目のスキャン非同期記憶素子は、互いに共通の第１の制御信号で制御され、かつ、当該スキャン非同期記憶素子の信号入力は第１の部分回路に接続され、当該スキャン非同期記憶素子の出力は第２の部分回路に接続されている。同様に、偶数段目のスキャン非同期記憶素子は、互いに共通の第２の制御信号で制御され、かつ、当該スキャン非同期記憶素子の信号入力は第２の部分回路に接続され、当該スキャン非同期記憶素子の出力は第１の部分回路に接続されている。【００１６】
また、上記半導体集積回路の設計方法は、原非同期式回路に含まれる非同期記憶素子をスキャン非同期記憶素子に置き換える第１のステップと、スキャン非同期記憶素子を第１および第２のラッチにグループ分けして、原非同期式回路に含まれる組み合わせ回路を第１および第２の部分回路に分割する第２のステップと、第１および第２のラッチの間の入出力の依存関係を特定する第３のステップと、入出力の依存関係がない第１および第２のラッチを交互に、かつ、前段の出力と次段のスキャン入力とを互いに接続する第４のステップとを備えている。【００１７】
また、上記半導体集積回路に含まれる組み合わせ回路のテストのためのテストパターン生成方法は、組み合わせ回路に印加すべき基本テストパターンを生成するステップと、基本テストパターンに対する組み合わせ回路の応答パターンの期待値である期待応答パターンを算出するステップと、テストパターンの一部として、期待応答パターンに基づいて、基本テストパターンに対する組み合わせ回路の応答パターンをキャプチャするときにおける、当該応答パターンをキャプチャするスキャン非同期記憶素子の保持動作に係る制御信号のビットパターンを決定するステップとを備えている。【００１８】
上記テストパターン生成方法は、テストパターンの一部として、期待応答パターンに基づいて、基本テストパターンを組み合わせ回路に印加した際に当該基本テストパターンの検出対象故障により生じる誤りを含む応答パターンを当該誤りを失うことなくキャプチャするためのキャプチャパターンを生成するステップを備えていることが好ましい。【００１９】
また、上記テストパターン生成方法は、テストパターンの一部として、期待応答パターンに基づいて、複数のスキャン非同期記憶素子への基本テストパターンのスキャンイン後かつ基本テストパターンに対する組み合わせ回路の応答パターンのキャプチャ前における、組み合わせ回路の応答パターンをキャプチャするスキャン非同期記憶素子の保持動作に係る制御信号のビットパターンを決定するステップを備えていることが好ましい。【００２０】
また、上記半導体集積回路に含まれる組み合わせ回路のテストのためのテストパターン生成方法は、複数のスキャン非同期記憶素子を、それぞれ、当該スキャン非同期記憶素子に含まれる非同期記憶素子を時間展開して得られる時間展開モデルであって当該スキャン非同期記憶素子の信号入力およびその後段のスキャン非同期記憶素子の出力に該当する組み合わせ回路の信号入力を入力とする時間展開モデルに置き換えるとともに、第１および第２の部分回路の信号入力を外部入力に、時間展開モデルの出力を外部出力にそれぞれ置き換えた回路モデルを生成するステップと、回路モデルにおける第１および第２の部分回路のそれぞれについてテストパターンを生成するステップとを備えている。【００２１】
また、上記半導体集積回路に含まれるスキャン非同期記憶素子のテストのためのテストパターン生成方法は、テスト対象のスキャン非同期記憶素子が前の値を保持する第１の状態遷移、保持値が前の値にフラッシュされる第２の状態遷移、および保持値が変化する第３の状態遷移がすべて再現されるように、当該テスト対象のスキャン非同期記憶素子のスキャン入力および制御信号のビットパターンを決定するステップを備えている。
【発明の効果】
【００２２】
本発明によると、完全テストが可能な非同期式回路を、小さな面積オーバーヘッドおよび遅延オーバーヘッドで構成することができる。また、スキャンテストによってMullerのＣ素子、非対称Ｃ素子、ラッチなどの非同期記憶機能について完全テストが可能となる。
【図面の簡単な説明】
【００２３】
【図１】図１は、本発明の一実施形態に係るスキャン非同期記憶素子の構成図である。
【図２】図２は、変形例に係るスキャン非同期記憶素子の構成図である。
【図３】図３は、別の変形例に係るスキャン非同期記憶素子の構成図である。
【図４】図４は、本発明の一実施形態に係る半導体集積回路の構成図である。
【図５】図５は、非同期記憶素子スキャンチェーンの構成図である。
【図６Ａ】図６Ａは、図４の半導体集積回路の設計方法の説明する模式図である。
【図６Ｂ】図６Ｂは、図６Ａに続く図である。
【図７】図７は、透過スキャンラッチの構成図である。
【図８】図８は、スキャンラッチの構成図である。
【図９】図９は、Ｌ１Ｌ２シフトのタイミングチャートである。
【図１０】図１０は、Ｌ１キャプチャのタイミングチャートである。
【図１１】図１１は、Ｌ１Ｌ２シフトの別のタイミングチャートである。
【図１２】図１２は、図５の非同期記憶素子スキャンチェーンのテストに係るタイミングチャートである。
【図１３】図１３は、テストパターン生成において一時的に生成される回路モデルの模式図である。
【図１４】図１４は、Ｃ素子で構成された非同期記憶素子を有するスキャン非同期記憶素子に対応する時間展開モデルを説明する図である。
【図１５】図１５は、Ｄラッチで構成された非同期記憶素子を有するスキャン非同期記憶素子に対応する時間展開モデルを説明する図である。
【図１６】図１６は、正論理のＳＲラッチで構成された非同期記憶素子を有するスキャン非同期記憶素子に対応する時間展開モデルを説明する図である。
【発明を実施するための形態】
【００２４】
（スキャン非同期記憶素子の実施形態）
図１は、本発明の一実施形態に係るスキャン非同期記憶素子の構成を示す。本実施形態に係るスキャン非同期記憶素子１０は、非同期記憶素子（ＡＭ：Asynchronous Memory element）１２およびその入力側に接続されたスキャン制御論理回路（ＳＣＬ）１４で構成することができる。非同期記憶素子１２は、同期クロック信号を持たず、他の記憶素子とは独立に入力信号を記憶する素子である。例えば、非同期記憶素子１２は入力ａ，ｂとフィードバックされた出力Ｚの３入力の多数決を演算する多数決関数で実現されるＣ素子で構成することができる。非同期記憶素子１２をＣ素子で構成した場合、入力ａ，ｂが“１１”になると出力が“１”に、“００”になると出力が“０”に遷移する。入力ａ，ｂが“０１”または“１０”の場合には前の値を保持する（表１参照）。
【００２５】
【表１】
2011158500.tif 000003
【００２６】
非同期記憶素子１２はＤラッチで構成することもできる。例えば、非同期記憶素子１２を、入力ａをデータ入力、入力ｂをストローブパルス入力とするＤラッチで構成した場合、入力ｂが“１”である間は入力ａがそのまま出力され、入力ｂが“０”である間は非同期記憶素子１２は前の値を保持する（表２参照）。
【００２７】
【表２】
2011158500.tif 000004
【００２８】
非同期記憶素子１２はＳＲラッチで構成することもできる。例えば、非同期記憶素子１２を、入力ａをセット入力、入力ｂをリセット入力とする正論理のＳＲラッチで構成した場合、入力ａ，ｂが“１０”になると出力が“１”に、“０１”になると出力が“０”に遷移する。入力ａ，ｂが“００”の場合には前の値を保持し、“１１”は禁止入力である。負論理のＳＲラッチの場合には、入力ａ，ｂが“０１”になると出力が“１”に、“１０”になると出力が“０”に遷移する。入力ａ，ｂが“１１”の場合には前の値を保持し、“００”は禁止入力である（表３参照）。
【００２９】
【表３】
2011158500.tif 000005
【００３０】
なお、非同期記憶素子１２をラッチで構成した場合、非同期記憶素子１２は出力Ｚの反転も出力することがある。
【００３１】
スキャン制御論理回路１４は、信号入力Ａ，Ｂおよびスキャン入力ＳＩから非同期記憶素子１２の入力ａ，ｂを生成する論理回路である。例えば、スキャン制御論理回路１４は、組み合わせ論理回路１４１および２つのマルチプレクサ１４２，１４３で構成することができる。組み合わせ論理回路１４１は、ＳＣのビットパターンに応じて、ＳＩを２ビットスキャン入力ＳＡ，ＳＢとして出力するとともにスキャンイネーブル信号ＳＥを出力する。マルチプレクサ１４２は、ＳＥに応じてＡおよびＳＡのいずれか一方をａとして出力する。マルチプレクサ１４３は、ＳＥに応じてＢおよびＳＢのいずれか一方をｂとして出力する。
【００３２】
例えば、非同期記憶素子１２をＣ素子で構成した場合においてＳＣが“００”のとき、スキャン制御論理回路１４はＡ，Ｂをそのまま出力する。この場合、スキャン非同期記憶素子１０はＡ，Ｂが入力されるMullerのＣ素子として動作する。ＳＣが“１１”のとき、スキャン制御論理回路１４はＳＩをａ，ｂとして出力する。この場合、スキャン非同期記憶素子１０の出力はＳＩに遷移する。すなわち、スキャン非同期記憶素子１０にスキャンインしたＳＩを記憶させることができる。ＳＣが“０１”または“１０”のとき、スキャン制御論理回路１４は“０１”または“１０”を出力する。この場合、スキャン非同期記憶素子１０は前の値を保持する（表４参照）。ただし、表４および以降の各表中の“Ｘ”はドントケアである。
【００３３】
【表４】
2011158500.tif 000006
【００３４】
また、例えば、非同期記憶素子１２を、入力ａをデータ入力、入力ｂをストローブパルス入力とするＤラッチで構成した場合においてＳＣが“００”のとき、スキャン制御論理回路１４はＡ，Ｂをそのまま出力する。この場合、スキャン非同期記憶素子１０はＡ，Ｂが入力されるＤラッチとして動作する。ＳＣが“１１”のとき、スキャン制御論理回路１４はＳＩをａとして出力し、ｂとして“１”を出力する。この場合、スキャン非同期記憶素子１０の出力はＳＩに遷移する。すなわち、スキャン非同期記憶素子１０にスキャンインしたＳＩを記憶させることができる。ＳＣが“０１”または“１０”のとき、スキャン制御論理回路１４は“Ｘ０”を出力する。ただし、“Ｘ”はドントケアである。この場合、スキャン非同期記憶素子１０は前の値を保持する（表５参照）。なお、後述するように半導体集積回路のテストにおいて組み合わせ回路の期待応答パターンに応じてスキャン非同期記憶素子１０の保持動作に係るＳＣのビットパターンを最適なものに選択可能にするために、スキャン制御論理回路１４は、例えば、ＳＣが“０１”のときは“００”を出力し、ＳＣが“１０”のときは“１０”を出力するといったように、互いに異なるビットパターンを出力することが望ましい。
【００３５】
【表５】
2011158500.tif 000007
【００３６】
また、例えば、非同期記憶素子１２を、入力ａをセット入力、入力ｂをリセット入力とする正論理のＳＲラッチで構成した場合においてＳＣが“００”のとき、スキャン制御論理回路１４はＡ，Ｂをそのまま出力する。この場合、スキャン非同期記憶素子１０はＡ，Ｂが入力されるＳＲラッチとして動作する。ＳＣが“１１”のとき、スキャン制御論理回路１４はＳＩをａとして出力し、ＳＩの反転をｂとして出力する。この場合、スキャン非同期記憶素子１０の出力はＳＩに遷移する。すなわち、スキャン非同期記憶素子１０にスキャンインしたＳＩを記憶させることができる。ＳＣが“０１”または“１０”のとき、スキャン制御論理回路１４は“００”を出力する。この場合、スキャン非同期記憶素子１０は前の値を保持する。負論理のＳＲラッチの場合には、ＳＣが“１１”のとき、スキャン制御論理回路１４はＳＩの反転をａとして出力し、ＳＩをｂとして出力し、ＳＣが“０１”または“１０”のとき、スキャン制御論理回路１４は“１１”を出力する（表６参照）。
【００３７】
【表６】
2011158500.tif 000008
【００３８】
以上のように本実施形態に係るスキャン非同期記憶素子は、一般的な非同期記憶素子１２に２つのマルチプレクサ１４２，１４３と簡単な回路構成のスキャン制御論理回路１４を追加するだけで構成することができるため、面積オーバーヘッドは比較的小さい。また、信号パスに挿入されるのはマルチプレクサ１４２または１４３の１段だけであるから遅延オーバーヘッドを最小にすることができる。
【００３９】
さらに、非同期記憶素子１２自体でスキャン入力を記憶するため、後述するようにスキャンテストによって非同期記憶素子１２の記憶機能について完全テストが可能である。また、後述するように、内部のレースを考慮してＳＣのビットパターンを決定することにより、レースのない制御が可能となる。
【００４０】
なお、スキャン制御論理回路１４は上記構成に限定されない。表４、表５、および表６に示した入出力が実現できるのであれば別構成であってもよい。
【００４１】
また、非同期記憶素子１２がセット機能またはリセット機能を有する場合、ＳＥが“１”のときにセットまたはリセットが働かないようにするために、図２に示したように、ＳＥとセット信号またはリセット信号ＲＤとの論理演算を行う組み合わせ回路１７を追加して、組み合わせ回路１７の出力をセット信号またはリセット信号ｒｄとして非同期記憶素子１２に与えればよい。
【００４２】
また、非同期記憶素子１２としてＣ素子を用いる場合、スキャン非同期記憶素子１０の信号入力は２ビットに限定されない。スキャン非同期記憶素子１０の信号入力は３ビット以上であってもよい。図２は、変形例に係るスキャン非同期記憶素子１０の構成を示す。当該スキャン非同期記憶素子１０にはＡ［１］からＡ［ｎ］までのｎビットの信号が入力される。信号入力がｎビットの場合、スキャン非同期記憶素子１０に含まれるマルチプレクサ１４４の個数はｎ個となり、スキャン制御論理回路１４はｎビットのＳＣに応じてＳＡ［１］からＳＡ［ｎ］までのｎビットスキャン入力を生成する。非同期記憶素子１２は、入力信号の全ビットが“１”になると出力が“１”に、全ビットが“０”になると出力が“０”に遷移し、それ以外の場合には前の値を保持する。基本的にｎビットスキャン入力はＳＣと同じにすればよい。なお、非同期記憶素子１２の記憶機能の完全テストができなくなるが、スキャン非同期記憶素子１０が前の値を保持するためのＳＣのビットパターンの種類を削減することでＳＣをｎ−１ビット以下にすることもできる。
【００４３】
さらに、非同期記憶素子１２は２入力以上の非対称Ｃ素子であってもよい。非対称Ｃ素子では信号入力の全ビットが“１”（または“０”）にならなくても出力が“１”（または“０”）に遷移する。この場合もスキャン非同期記憶素子１０に含まれるマルチプレクサの個数はｎ個となり、スキャン制御論理回路１４はｎビットのＳＣに応じてｎビットスキャン入力を生成する。ただし、MullerのＣ素子の場合と違って、スキャン非同期記憶素子１０が前の値を保持するためのｎビットスキャン入力はＳＣにかかわらず特定のビットパターンにする必要がある。
【００４４】
（半導体集積回路の実施形態）
図４は、本発明の一実施形態に係る半導体集積回路の構成を示す。本実施形態に係る半導体集積回路は、信号入力ＰＩから信号出力ＰＯを生成する組み合わせ回路（ＣＣ）２０と複数のスキャン非同期記憶素子（ＳＡＭ：Scan Asynchronous Memory element）１０とを備えている。各スキャン非同期記憶素子１０の信号入力Ａ，Ｂおよび出力Ｚは組み合わせ回路２０に接続されている。ここで、組み合わせ回路２０はフィードバックパスを有しておらず、各スキャン非同期記憶素子１０を記憶素子として使用するものとする。なお、組み合わせ回路２０は後述するテストを実施する際にフィードパックパスを有していない組み合わせ回路とみなすことができればよいので、これを実現する機構を備えた非同期式回路であってもよい。
【００４５】
各スキャン非同期記憶素子１０は、前段の出力と次段のスキャン入力が互いに接続されるように縦続接続されて（図５参照）、非同期記憶素子スキャンチェーン１００を構成している。非同期記憶素子スキャンチェーン１００は、初段のスキャン非同期記憶素子１０のスキャン入力ＳＩを後段の各スキャン非同期記憶素子１０にスキャンシフトすることができる。また、各スキャン非同期記憶素子１０が保持する値をスキャンシフトして最終段のスキャン非同期記憶素子１０からスキャン出力ＳＯとして取り出すことができる。
【００４６】
非同期記憶素子スキャンチェーン１００において、奇数段目のスキャン非同期記憶素子１０は制御信号ＳＣ１で制御され、偶数段目のスキャン非同期記憶素子１０は制御信号ＳＣ２で制御される。すなわち、互いに隣接する２つのスキャン非同期記憶素子１０でＬＳＳＤラッチが構成されている。したがって、本実施形態に係る半導体集積回路は、各スキャン非同期記憶素子１０による遅延オーバーヘッドの低減効果に加えて、Ｌ１Ｌ２＊シングルラッチデザインを適用することで面積オーバーヘッドも最小化することができる。なお、ＬＳＳＤダブルラッチデザインやＬＳＳＤシングルラッチデザインを適用することも可能である。
【００４７】
なお、上述したようにスキャン非同期記憶素子１０の信号入力は２ビットに限定されない。また、非同期記憶素子スキャンチェーン１００を構成するスキャン非同期記憶素子１０は４個に限定されない。５個以上のスキャン非同期記憶素子１０についてＳＣ１で制御されるものとＳＣ２で制御されるものを交互に接続して非同期記憶素子スキャンチェーン１００を構成してもよい。
【００４８】
＜半導体集積回路の設計＞
次に、本実施形態に係る半導体集積回路の設計について、図６Ａおよび図６Ｂを参照しながら説明する。なお、本実施形態に係る半導体集積回路の設計は、下記の各ステップをコンピュータに実行させることにより実施することができる。図４の半導体集積回路は既存の非同期式回路を変形して得ることができる。まず、ステップ１として、原非同期式回路に含まれる非同期記憶素子１２をスキャン非同期記憶素子１０に置き換える。次に、ステップ２として、スキャン非同期記憶素子１０をＬ１ラッチおよびＬ２ラッチにグループ分けして、原非同期式回路に含まれる組み合わせ回路２０を部分回路２１，２２に分割する。部分回路２１は、組み合わせ回路２０の信号入力ＰＩの一部である信号入力ＰＩ１から信号出力ＰＯの一部である信号出力ＰＯ１を生成する。部分回路２２は、組み合わせ回路２０の信号入力ＰＩの残りである信号入力ＰＩ２から信号出力ＰＯの残りである信号出力ＰＯ２を生成する。Ｌ１ラッチであるスキャン非同期記憶素子１０の信号入力は部分回路２１に接続され、出力は部分回路２２に接続されている。Ｌ２ラッチであるスキャン非同期記憶素子１０の信号入力は部分回路２２に接続され、出力は部分回路２１に接続されている。
【００４９】
なお、スキャン非同期記憶素子１０だけでは組み合わせ回路２０を完全に分割できない場合には、透過スキャンラッチ（ＴＳＬ）３０をＬ１ラッチまたはＬ２ラッチとして部分回路２１，２２間に適宜挿入してもよい。図７は、透過スキャンラッチ３０の一構成例を示す。透過スキャンラッチ３０は、組み合わせ論理回路３２、マルチプレクサ３４、およびラッチ３６で構成することができる。組み合わせ論理回路３２は、スキャン非同期記憶素子１０と同じ制御信号ＳＣのビットパターンに応じて、スキャンイネーブル信号ＳＥおよびロードイネーブル信号ＬＥを出力する。マルチプレクサ３４は、ＳＥに応じて信号入力Ａおよびスキャン入力ＳＩのいずれか一方を出力する。ラッチ３６は、ＬＥに応じてマルチプレクサ３４の出力をラッチする。
【００５０】
例えば、ＳＣが“００”のとき、透過スキャンラッチ３０はＡをそのまま出力する。この場合、透過スキャンラッチ３０は単なる信号線として動作する。ＳＣが“１１”のとき、透過スキャンラッチ３０はＳＩを出力する。ＳＣが“０１”または“１０”のとき、透過スキャンラッチ３０は前の値を保持する（表７参照）。
【００５１】
【表７】
2011158500.tif 000009
【００５２】
組み合わせ回路２０が分割できたなら、後はＬ１ラッチおよびＬ２ラッチを交互に接続して非同期記憶素子スキャンチェーンを構成すればよいのだが、ここで故障検出可能性を考慮する必要がある。例えば、非同期記憶素子１２をＣ素子で構成した場合においてスキャン非同期記憶素子１０に“００”が入力されるべきところが故障により“０１”が入力された場合にはスキャン非同期記憶素子１０は前の値を保持する。ここで、スキャン非同期記憶素子１０の前の値が“０”であったなら正常値および故障値のいずれが入力されても出力は“０”を保持するため故障が検出できない。これに対して、前の値を“１”にしておけば、正常値“００”が入力されたなら出力は“０”に遷移し、故障値“０１”が入力されたなら出力は“１”を保持するため、故障を検出することができる。非同期記憶素子１２をＣ素子で構成した場合のスキャン非同期記憶素子１０の入出力と故障検出可能性の関係は表８の通りである。なお、この関係はMullerのＣ素子などについても当てはまる。
【００５３】
【表８】
2011158500.tif 000010
【００５４】
また、例えば、非同期記憶素子１２を、入力ａをデータ入力、入力ｂをストローブパルス入力とするＤラッチで構成した場合においてスキャン非同期記憶素子１０に“００”が入力されるべきところが故障により“０１”が入力された場合にはスキャン非同期記憶素子１０の出力は“０”に遷移する。ここで、スキャン非同期記憶素子１０の前の値が“０”であったなら正常値および故障値のいずれが入力されても出力は“０”のまま変わらないため故障が検出できない。これに対して、前の値を“１”にしておけば、正常値“００”が入力されたなら出力は“１”を保持し、故障値“０１”が入力されたなら出力は“０”に遷移するため、故障を検出することができる。非同期記憶素子１２を、入力ａをデータ入力、入力ｂをストローブパルス入力とするＤラッチで構成した場合のスキャン非同期記憶素子１０の入出力と故障検出可能性の関係は表９の通りである。
【００５５】
【表９】
2011158500.tif 000011
【００５６】
また、例えば、非同期記憶素子１２を、入力ａをセット入力、入力ｂをリセット入力とする正論理のＳＲラッチで構成した場合においてスキャン非同期記憶素子１０に“００”が入力されるべきところが故障により“０１”が入力された場合にはスキャン非同期記憶素子１０の出力は“０”に遷移する。ここで、スキャン非同期記憶素子１０の前の値が“０”であったなら正常値および故障値のいずれが入力されても出力は“０”のまま変わらないため故障が検出できない。これに対して、前の値を“１”にしておけば、正常値“００”が入力されたなら出力は“１”を保持し、故障値“０１”が入力されたなら出力は“０”に遷移するため、故障を検出することができる。非同期記憶素子１２を、入力ａをセット入力、入力ｂをリセット入力とする正論理のＳＲラッチで構成した場合のスキャン非同期記憶素子１０の入出力と故障検出可能性の関係は表１０の通りである。
【００５７】
【表１０】
2011158500.tif 000012
【００５８】
したがって、スキャン非同期記憶素子１０の故障検出可能性を考慮すると、Ｌ１ラッチおよびＬ２ラッチのペアからなる各ＬＳＳＤラッチは互いに影響を与えないテストパターンの保持およびそれに対する応答パターンの保持ができなければならない。そこで、下記のステップに従って非同期記憶素子スキャンチェーンを構成することでテストパターンと応答パターンの相互独立性を保証する。
【００５９】
図６Ｂに移り、組み合わせ回路２０が部分回路２１，２２に分割できたなら、次にステップ３として、各スキャン非同期記憶素子１０および各透過スキャンラッチ３０について、Ｌ１ラッチおよびＬ２ラッチの間の入出力の依存関係を特定する。具体的には、各スキャン非同期記憶素子１０および透過スキャンラッチ３０について、それを頂点としてその入力に繋がる他グループに属するスキャン非同期記憶素子１０および透過スキャンラッチ３０の出力の集合である疑似出力錐を特定する。図中に示したように、任意のＬ１ラッチおよびＬ２ラッチについて、一方を頂点とする疑似出力錐の入力部分に他方の出力が含まれていなければ、それら２つのラッチに入出力の依存関係はないと言える。
【００６０】
Ｌ１ラッチおよびＬ２ラッチの間の入出力の依存関係が特定できたなら、次にステップ４として、入出力の依存関係がないＬ１ラッチおよびＬ２ラッチを交互に、かつ、前段の出力と後段のスキャン入力とを互いに接続して、非同期記憶素子スキャンチェーン１００を構成する。疑似出力錐の入力部分が大きいほど入出力の依存関係がないＬ１ラッチおよびＬ２ラッチのペアを見つけにくいため、疑似出力錐の入力部分が大きなものから優先的に選択して接続していけばよい。しかし、入出力の依存関係がないＬ１ラッチおよびＬ２ラッチのペアがまったく見つからないこともある。その場合には、スキャンラッチ（ＳＬ）４０をＬ１ラッチまたはＬ２ラッチのペアの代用として挿入するとよい。図８は、スキャンラッチ４０の一構成例を示す。スキャンラッチ４０は、組み合わせ論理回路４２およびラッチ４４で構成することができる。組み合わせ論理回路４２は、スキャン非同期記憶素子１０と同じ制御信号ＳＣのビットパターンに応じて、ロードイネーブル信号ＬＥを出力する。ラッチ４４、ＬＥに応じてスキャン入力ＳＩをラッチする。スキャンラッチ４０には信号入力はない。
【００６１】
例えば、ＳＣが“００”のとき、スキャンラッチ４０はドントケアとなる。ＳＣが“１１”のとき、スキャンラッチ４０はＳＩを出力する。ＳＣが“０１”または“１０”のとき、スキャンラッチ４０は前の値を保持する（表１１参照）。
【００６２】
【表１１】
2011158500.tif 000013
【００６３】
以上のように、本設計方法によると、特にステップ３およびステップ４によって、入出力の依存関係がないＬ１ラッチおよびＬ２ラッチのペアでＬＳＳＤラッチが構成される。これにより、テストパターンと応答パターンの相互独立性が保証され、組み合わせ回路２０の完全な故障検出が可能となる。
【００６４】
なお、上記設計手法はスキャン非同期記憶素子１０を備えていない従来の非同期式回路についても適用可能である。従来の非同期式回路の場合、原非同期式回路に含まれるＣ素子などの非同期記憶素子をスキャン非同期記憶素子に置き換えるステップ１に代えて、例えば、Ｃ素子のフィードパックパス中にマルチプレクサおよびラッチを挿入してＬ１Ｌ２＊シングルラッチデザインの非同期式回路に変形すればよい。
【００６５】
＜半導体集積回路のテスト＞
次に、半導体集積回路に含まれる組み合わせ回路２０のテストについて説明する。図６Ｂに示した非同期記憶素子スキャンチェーン１００はＬ１ラッチおよびＬ２ラッチからなるＬＳＳＤラッチで構成されている。したがって、部分回路２１，２２のそれぞれについて互いに独立にテストを行う必要がある。すなわち、部分回路２１のテストでは、Ｌ１ラッチをマスターラッチ、Ｌ２ラッチをスレーブラッチとしてテストパターンをスキャンシフトするＬ１Ｌ２シフト、およびＬ２ラッチをマスターラッチ、Ｌ１ラッチをスレーブラッチとしてテストパターンをスキャンシフトするＬ２Ｌ１シフトを交互に繰り返し、Ｌ２ラッチから部分回路２１にテストパターンを印加し、Ｌ１ラッチで部分回路２１の応答パターンをキャプチャ（以下、この動作を「Ｌ１キャプチャ」と称する）する。一方、部分回路２２のテストでは、Ｌ２Ｌ１シフトおよびＬ１Ｌ２シフトを交互に繰り返し、Ｌ１ラッチから部分回路２２にテストパターンを印加し、Ｌ２ラッチで部分回路２２の応答パターンをキャプチャ（以下、この動作を「Ｌ２キャプチャ」と称する）する。
【００６６】
図９は、Ｌ１Ｌ２シフトのタイミングチャートである。図中のＳＣ１，ＳＣ２の値“Ｈ”は、スキャン非同期記憶素子１０が前の値を保持するときのビットパターン“０１”または“１０”を表し、値“Ｌ”は、スキャン非同期記憶素子１０がスキャン入力を保持するときのビットパターン“１１”を表す。ＳＣ１，ＳＣ２を“Ｈ”および“Ｌ”に交互に変化させることで、スキャン入力ＳＩに印加されたテストパターンがスキャンインされ、Ｌ１ラッチおよびＬ２ラッチのペアによって“ｔ２”および“ｔ１”が保持される。Ｌ２Ｌ１シフトの説明は省略するが、基本的にはＬ１Ｌ２シフトにおけるＳＣ１，ＳＣ２を入れ替えたものがＬ２Ｌ１シフトの動作となる。
【００６７】
図１０は、Ｌ１キャプチャのタイミングチャートである。図に示したＳＣ１の値“Ｎ”は、組み合わせ回路２０からスキャン非同期記憶素子１０にＡ，Ｂが入力されるときのビットパターン“００”を表す。ＳＣ２を“Ｈ”にしたままでＳＣ１を“Ｎ”→“Ｈ”に変化させることで、Ｌ１ラッチは組み合わせ回路２０の応答パターン“ｒ２”および“ｒ１”をキャプチャする。Ｌ２キャプチャの説明は省略するが、基本的にはＬ１キャプチャにおけるＳＣ１，ＳＣ２を入れ替えたものがＬ２キャプチャの動作となる。
【００６８】
ここで、Ｌ１またはＬ２キャプチャでは組み合わせ回路２０の応答パターンをキャプチャするとき、また、Ｌ１Ｌ２またはＬ２Ｌ１シフトではテストパターンのスキャンイン後かつ組み合わせ回路２０の応答パターンのキャプチャ前に、ＳＣ１またはＳＣ２は“Ｈ”となるが（図９および図１０中の丸で囲んだ“Ｈ”）、そのビットパターンが適切でないと、スキャン非同期記憶素子１０の内部でレースが発生する。例えば、非同期記憶素子１２をＣ素子で構成した場合においてＳＣ１を“００”にしてスキャン非同期記憶素子１０が組み合わせ回路２０の応答パターン“０１”を保持している場合にＳＣ１を“１０”にすると、スキャン非同期記憶素子１０の内部において非同期記憶素子１２の入力ａ，ｂが“０１”から“１０”に変化する。その際、入力ａ，ｂの各変化のタイミングによっては入力ａ，ｂが“００”または“１１”となり、スキャン非同期記憶素子１０の保持値が変わってしまうおそれがある。したがって、組み合わせ回路２０の応答パターンが“０１”の場合にはＳＣ１を“０１”にしてスキャン非同期記憶素子１０を制御すべきである。
【００６９】
また、例えば、非同期記憶素子１２を、入力ａをデータ入力、入力ｂをストローブパルス入力とするＤラッチで構成した場合（ただし、表５において入力ａ，ｂは、ＳＣが“０１”のとき“００”となり、ＳＣが“１０”のとき“１０”となるものとする。）においてＳＣ１を“００”にしてスキャン非同期記憶素子１０が組み合わせ回路２０の応答パターン“０１”を保持している場合にＳＣ１を“１０”にすると、スキャン非同期記憶素子１０の内部において非同期記憶素子１２の入力ａ，ｂが“０１”から“１０”に変化する。その際、入力ａ，ｂの各変化のタイミングによっては入力ａ，ｂが“１１”となり、スキャン非同期記憶素子１０の保持値が変わってしまうおそれがある。したがって、組み合わせ回路２０の応答パターンが“０１”の場合にはＳＣ１を“０１”にしてスキャン非同期記憶素子１０を制御すべきである。
【００７０】
すなわち、スキャン非同期記憶素子１０の保持動作に係るＳＣ１のビットパターンは組み合わせ回路２０の期待応答パターンに応じて決定すべきである。ＳＣ２についても同様のことが言える。
【００７１】
なお、図１１に示したように、Ｌ１Ｌ２シフトにおいて、テストパターンのスキャンイン後かつ組み合わせ回路２０の応答パターンのキャプチャ前にＳＣ１を“Ｌ”にすることで、その直前の“Ｈ”のビットパターンについての制約がなくなる。これは、組み合わせ回路２０の応答パターンのキャプチャ前にＳＣ１が“Ｌ”になると、Ｌ１ラッチに前段のＬ２ラッチの出力がスキャン入力されてＬ１ラッチは前の値を保持し続けるため、レースによる保持値の変化が発生しなくなるからである。ただし、ＳＣ１が“Ｌ”から“Ｎ”に、すなわち、“１１”から“００”に変化するため、変化の途中で一時的にＳＣ１は“０１”または“１０”となるとスキャン非同期記憶素子１０を“Ｈ”で制御したのと同じ効果を生じるので、この点に注意が必要である。Ｌ２Ｌ１シフトについても同様のことが言える。
【００７２】
以上のことを踏まえて、組み合わせ回路２０のテストパターンは次のような手順で生成することができる。なお、テストパターンの生成は、下記の手順をコンピュータに実行させることにより実施することができる。まず、自動テストパターン生成ツール（ＡＴＰＧ）などを用いて組み合わせ回路２０に印加すべき基本テストパターンを生成する。そして、シミュレーションにより当該基本テストパターンに対する組み合わせ回路２０の期待応答パターンを算出する。期待応答パターンが得られたなら、その値に基づいて、上記のレースが発生するタイミングにおけるスキャン非同期記憶素子１０の保持動作に係るＳＣ１，ＳＣ２のビットパターンを決定する。そして、ＡＴＰＧで生成した基本テストパターンにＳＣ１，ＳＣ１のビットパターンを付加して、最終的なテストパターンを得る。なお、Ｌ１Ｌ２＊シングルラッチデザインの場合、部分回路２１，２２のそれぞれについて基本テストパターンを生成し、期待応答パターンを算出する必要がある。
【００７３】
組み合わせ回路２０の故障を完全に検出するには、テストパターンのスキャンインが完了したときの各スキャン非同期記憶素子１０の保持値が、組み合わせ回路２０の応答パターンに応じた値となっている必要がある（表８、表９、および表１０参照）。したがって、故障シミュレーションなどによって算出された期待応答パターンに基づいて、基本テストパターンを組み合わせ回路２０に印加した際に検出対象とする誤りを含む応答パターンをその誤りを失うことなくキャプチャするためのキャプチャパターンを生成し、それをテストパターンの一部として用いることが好ましい。
【００７４】
＜スキャン非同期記憶素子のテスト＞
次に、スキャン非同期記憶素子１０のテストについて説明する。スキャン非同期記憶素子１０に含まれる非同期記憶素子１２は、通常時には組み合わせ回路２０の記憶素子として使用され、テスト時にはラッチとして使用される。したがって、図５の非同期記憶素子スキャンチェーン１００のＳＩに適当なテストパターンを印加してそれをスキャンシフトして取り出したＳＯを検証することで、スキャン非同期記憶素子１０の記憶機能のテストを行うことができる。さらに、印加するテストパターンを工夫することで記憶機能の完全テストが可能となる。
【００７５】
スキャン非同期記憶素子１０の信号入力をａ，ｂ、出力をｃとすると、非同期記憶素子１２がＣ素子、Ｄラッチ、およびＳＲラッチのいずれで構成されているかに応じて（ａ，ｂ，ｃ）が取り得る状態は異なるものの、状態遷移は次の３タイプに分けることができる。第１のタイプは前の値を保持する状態遷移である。第２のタイプは保持値が前の値にフラッシュされる状態遷移である。第３のタイプは保持値が変化する状態遷移である。
【００７６】
例えば、非同期記憶素子１２をＣ素子で構成した場合、（ａ，ｂ，ｃ）は、（０，０，０）、（１，０，０）、（０，１，０）、（１，１，１）、（０，１，１）、および（１，０，１）の６状態のいずれかである。第１のタイプとして（０，０，０）→（０，１，０）、（０，０，０）→（１，０，０）、（１，１，１）→（０，１，１）、および（１，１，１）→（１，０，１）の４つが該当する。第２のタイプとして（０，１，０）→（０，０，０）、（１，０，０）→（０，０，０）、（０，１，１）→（１，１，１）、および（１，０，１）→（１，１，１）の４つが該当する。第３のタイプとして（０，１，０）→（１，１，１）、（１，０，０）→（１，１，１）、（０，１，１）→（０，０，０）、および（１，０，１）→（０，０，０）の４つが該当する。したがって、テスト対象のスキャン非同期記憶素子１０についてこれら３タイプの状態遷移をすべて再現されるようにスキャン入力およびＳＣ１，ＳＣ２のビットパターンを決定してテストパターンを生成する。このように生成されたテストパターンを用いることでスキャン非同期記憶素子１０の記憶機能の完全テストを実施することができる。
【００７７】
図１２は、非同期記憶素子１２をＣ素子で構成した場合の非同期記憶素子スキャンチェーン１００のテストに係るタイミングチャートである。図中のＳＣ１，ＳＣ２の値“Ｈ１”および“Ｈ２”は、それぞれ、スキャン非同期記憶素子１０が前の値を保持するときのビットパターン“０１”および“１０”を表す。まず、ＳＩを“１”にしてＳＣ１，ＳＣ２を“Ｌ”および“Ｈ１”に交互に変化させることで、各スキャン非同期記憶素子１０の状態は（１，１，１）→（０，１，１）→（１，１，１）を繰り返し、第１および第２のタイプの状態遷移が再現される。次に、ＳＩを“０”に変えることで、各スキャン非同期記憶素子１０において第３のタイプの状態遷移が再現され、その後ＳＣ１，ＳＣ２を“Ｌ”および“Ｈ２”に交互に変化させることで、各スキャン非同期記憶素子１０の状態は（０，０，０）→（１，０，０）→（０，０，０）を繰り返し、第１および第２のタイプの状態遷移が再現される。各スキャン非同期記憶素子１０が正常に動作しているかどうかは、最終段のスキャン非同期記憶素子１０からスキャンアウトされるＳＯを検証することで判定することができる。
【００７８】
なお、非同期記憶素子１２をＤラッチまたはＳＲラッチで構成した場合についての例示は省略するが、（ａ，b，ｃ）が取り得る状態、および第１から第３のタイプに該当する状態遷移が非同期記憶素子１２をＣ素子で構成した場合と異なるのみで、基本的には上述した方法でスキャン非同期記憶素子１０のテストを行うことができる。
【００７９】
＜半導体集積回路のテストパターン生成＞
図６Ｂのステップ４後の半導体集積回路に含まれる組み合わせ回路２０のテストパターン生成は基本的に次のように行う。なお、テストパターンの生成は、下記の手順をコンピュータに実行させることにより実施することができる。まず、半導体集積回路からスキャン非同期記憶素子１０を削除して組み合わせ回路２０をそれぞれ独立した入出力を有する部分回路２１，２２に分割した回路モデルを生成する。当該回路モデルでは、削除されたスキャン非同期記憶素子１０の出力が部分回路２１，２２の疑似外部入力となり、また、削除されたスキャン非同期記憶素子１０の入力が部分回路２１，２２の疑似外部出力となる（図１３において破線で描いた要素を除く構成を参照）。次に、回路モデルにおける部分回路２１，２２のそれぞれについて、ＡＴＰＧなどを用いて、テストパターンと応答パターンとの間に論理矛盾が生じないように、各故障に対して個別のテストパターンを生成する。なお、応答パターンをキャプチャするスキャン非同期記憶素子１０に故障値が伝搬するには、部分回路２１，２２にそのスキャン非同期記憶素子１０を頂点とする疑似出力錐の入力部分についてのテストパターンを印加すれば十分である。したがって、必要最小限の入力部分のみをテストパターンとして採用する。
【００８０】
一般に、ＡＴＰＧは、一つの故障について個別のテストパターンを生成するのではなく複数の故障を同時に検出できるようなテストパターンを生成する。具体的には、ある故障についてテストパターンを生成すると、その故障の検出に不要な入力にランダムな値を与えて故障シミュレーションを行う。その結果、別の故障も同時に検出できることがわかると新たに生成したテストパターンを採用し、当該別の故障に対するテストパターン生成を省略する。このようなルールの下で生成されたテストパターンを用いることで組み合わせ回路２０の完全テストを効率的に行うことができる。しかし、Ｌ１Ｌ２＊シングルラッチデザインでは、ＬＳＳＤラッチにおいてテストパターンを保持するラッチと応答パターンを保持するラッチのペアの間で論理矛盾が生じることがある。すなわち、Ｌ１Ｌ２＊シングルラッチデザインでは、複数故障が検出可能な任意のテストパターンの印加に対して所望の任意の応答パターンがキャプチャできることが保証されていない。
【００８１】
そこで、下記の手法でテストパターンを生成するとよい。まず、図１３に示したような、部分回路２１，２２の入出力依存関係をなくした回路モデルを生成する。具体的には、非同期式回路に含まれる各スキャン非同期記憶素子１０を、当該スキャン非同期記憶素子１０に含まれる非同期記憶素子１２を時間展開して得られる時間展開モデルであって当該スキャン非同期記憶素子１０の信号入力およびその後段のスキャン非同期記憶素子１０の出力に該当する部分回路２１または２２の信号入力を入力とする時間展開モデル５０に置き換えるとともに、部分回路２１，２２の信号入力を外部入力に、時間展開モデル５０の出力を外部出力にそれぞれ置き換えることで、図１３の回路モデルを生成することができる。
【００８２】
なお、半導体集積回路に透過スキャンラッチ３０が含まれている場合、上記回路モデル上では透過スキャンラッチ３０を省略し、当該省略した透過スキャンラッチ３０の出力に対応する部分回路２１，２２の信号入力を外部入力に、入力に対応する信号出力を外部出力に置き換えるとよい。
【００８３】
図１４は、Ｃ素子で構成された非同期記憶素子１２を有するスキャン非同期記憶素子１０に対応する時間展開モデル５０を示す。例えば、非同期記憶素子１２が図１４の左側に示したようなＣ素子で構成されている場合、スキャン制御論理回路１４を省略し、出力Ｚの帰還閉路（フィードバックパス）１２１を切断して、図１４の右側に示したように、後段のスキャン非同期記憶素子１０の出力に該当する部分回路２１または２２の入力信号１２２を接続してできる組み合わせ回路が時間展開モデル５０に相当する。
【００８４】
図１５は、Ｄラッチで構成された非同期記憶素子１２を有するスキャン非同期記憶素子１０に対応する時間展開モデル５０を示す。例えば、非同期記憶素子１２が図１５の左側に示したようなＤラッチで構成されている場合、スキャン制御論理回路１４を省略し、出力Ｚの帰還閉路（フィードバックパス）１２１を切断して、図１５の右側に示したように、後段のスキャン非同期記憶素子１０の出力に該当する部分回路２１または２２の入力信号１２２を接続してできる組み合わせ回路が時間展開モデル５０に相当する。
【００８５】
図１６は、正論理のＳＲラッチで構成された非同期記憶素子１２を有するスキャン非同期記憶素子１０に対応する時間展開モデル５０を示す。例えば、非同期記憶素子１２が図１６の左側に示したような正論理のＳＲラッチで構成されている場合、スキャン制御論理回路１４を省略し、出力Ｚの帰還閉路（フィードバックパス）１２１を切断して、図１６の右側に示したように、後段のスキャン非同期記憶素子１０の出力に該当する部分回路２１または２２の入力信号１２２を接続してできる組み合わせ回路が時間展開モデル５０に相当する。
【００８６】
このように、非同期記憶素子１２は時間展開によっていずれも組み合わせ回路に変形される。特に、Ｃ素子は時間展開によって多数決関数を実現する組み合わせ回路に変形される。
【００８７】
以上のようにして回路モデルが生成できたなら、次は、回路モデルの部分回路２１，２２のそれぞれについて、複数の故障を同時に検出可能なテストパターンを生成する。
【００８８】
時間展開モデル５０の出力は、元のスキャン非同期記憶素子１０の出力がスキャンインされる後段のスキャン非同期記憶素子１０の出力によって制約を受けるため、ＬＳＳＤラッチにおいてテストパターンを保持するラッチと応答パターンを保持するラッチのペアの間で論理矛盾が生じるようなテストパターンは生成されなくなる。すなわち、上記回路モデルについて生成されたテストパターンでは、ＬＳＳＤラッチにおいてテストパターンを保持するラッチと応答パターンを保持するラッチのペアの間の論理整合性が保証されている。したがって、Ｌ１Ｌ２＊シングルラッチデザインの非同期式回路に対して、複数の故障を同時に検出可能なテストパターンを論理矛盾なくスキャンインすることができる。
【００８９】
なお、上記テストパターン生成はスキャン非同期記憶素子１０を備えていない従来のＬ１Ｌ２＊シングルラッチデザインの非同期式回路についても適用可能である。従来の非同期式回路の場合、原非同期式回路に含まれる非同期記憶素子ならびにそのフィードパックパスに挿入されたマルチプレクサおよびラッチからなる部分を時間展開モデル５０に置き換えればよい。
【産業上の利用可能性】
【００９０】
本発明に係るスキャン非同期記憶素子は、非同期式回路のテスト容易化に寄与するものであるため、今後増加が予想されるＧＡＬＳアーキテクチャを採用した半導体集積回路に有用である。
【符号の説明】
【００９１】
１０    スキャン非同期記憶素子
１２    非同期記憶素子
１４    スキャン制御論理回路
１４１  組み合わせ論理回路
１４２  マルチプレクサ
１４３  マルチプレクサ
１４４  マルチプレクサ
２０    組み合わせ回路
２１    部分回路（第１の部分回路）
２２    部分回路（第２の部分回路）
３０    透過スキャンラッチ
４０    スキャンラッチ
５０    時間展開モデル
【図１】
2011158500.tif 000014
【図２】
2011158500.tif 000015
【図３】
2011158500.tif 000016
【図４】
2011158500.tif 000017
【図５】
2011158500.tif 000018
【図６Ａ】
2011158500.tif 000019
【図６Ｂ】
2011158500.tif 000020
【図７】
2011158500.tif 000021
【図８】
2011158500.tif 000022
【図９】
2011158500.tif 000023
【図１０】
2011158500.tif 000024
【図１１】
2011158500.tif 000025
【図１２】
2011158500.tif 000026
【図１３】
2011158500.tif 000027
【図１４】
2011158500.tif 000028
【図１５】
2011158500.tif 000029
【図１６】
2011158500.tif 000030
【国際調査報告】
2011158500.tif 000031
2011158500.tif 000032
2011158500.tif 000033
2011158500.tif 000034