TOP > 国内特許検索 > スキャン非同期記憶素子およびそれを備えた半導体集積回路ならびにその設計方法およびテストパターン生成方法 > 明細書

明細書 :スキャン非同期記憶素子およびそれを備えた半導体集積回路ならびにその設計方法およびテストパターン生成方法

発行国 日本国特許庁(JP)
公報種別 特許公報(B2)
特許番号 特許第5761819号 (P5761819)
登録日 平成27年6月19日(2015.6.19)
発行日 平成27年8月12日(2015.8.12)
発明の名称または考案の名称 スキャン非同期記憶素子およびそれを備えた半導体集積回路ならびにその設計方法およびテストパターン生成方法
国際特許分類 G01R  31/28        (2006.01)
FI G01R 31/28 G
G01R 31/28 V
請求項の数または発明の数 15
全頁数 25
出願番号 特願2012-520292 (P2012-520292)
出願日 平成23年6月15日(2011.6.15)
国際出願番号 PCT/JP2011/003405
国際公開番号 WO2011/158500
国際公開日 平成23年12月22日(2011.12.22)
優先権出願番号 2010138609
優先日 平成22年6月17日(2010.6.17)
優先権主張国 日本国(JP)
審査請求日 平成26年6月2日(2014.6.2)
特許権者または実用新案権者 【識別番号】504143441
【氏名又は名称】国立大学法人 奈良先端科学技術大学院大学
発明者または考案者 【氏名】大竹 哲史
【氏名】岩田 大志
【氏名】井上 美智子
個別代理人の代理人 【識別番号】110001427、【氏名又は名称】特許業務法人前田特許事務所
審査官 【審査官】濱本 禎広
参考文献・文献 特開平07-202645(JP,A)
特表2004-521352(JP,A)
調査した分野 G01R 31/28-3193
G06F 11/22-277
H03K 19/00
特許請求の範囲 【請求項1】
nを2以上の整数とするn入力の非同期記憶素子と、
nビットの信号入力およびスキャン入力から前記非同期記憶素子のn入力を生成するスキャン制御論理回路とを備え、
前記スキャン制御論理回路は、与えられた制御信号が第1のビットパターンのときは前記信号入力を、第2のビットパターンのときは前記スキャン入力を、それ以外のときは前記非同期記憶素子が前の値を保持するビットパターンを、それぞれ前記非同期記憶素子のn入力として出力とする
ことを特徴とするスキャン非同期記憶素子。
【請求項2】
前記非同期記憶素子は、MullerのC素子である
ことを特徴とする請求項1のスキャン非同期記憶素子。
【請求項3】
前記制御信号はnビット信号であり、
前記スキャン制御論理回路は、
前記制御信号が前記第1および第2のビットパターン以外のときは前記制御信号を出力し、前記第2のビットパターンのときは前記スキャン入力をnビットスキャン入力にして出力する組み合わせ論理回路と、
前記信号入力および前記組み合わせ論理回路の出力の各ビットペアがそれぞれ入力され、前記制御信号が前記第1のビットパターンのときは前記信号入力を、それ以外のビットパターンときは前記組み合わせ論理回路の出力を、前記非同期記憶素子の各入力としてそれぞれ出力するn個のマルチプレクサとを有する
ことを特徴とする請求項2のスキャン非同期記憶素子。
【請求項4】
前記非同期記憶素子は、非対称C素子である
ことを特徴とする請求項1のスキャン非同期記憶素子。
【請求項5】
前記非同期記憶素子は、ラッチである
ことを特徴とする請求項1のスキャン非同期記憶素子。
【請求項6】
組み合わせ回路と、
複数の請求項1のスキャン非同期記憶素子とを備え、
前記複数のスキャン非同期記憶素子の信号入力ならびに出力は、前記組み合わせ回路に接続されており、
前記複数のスキャン非同期記憶素子は、前段の出力と次段のスキャン入力とが互いに接続されるように、縦続接続されている
ことを特徴とする半導体集積回路。
【請求項7】
前記組み合わせ回路は、一方の出力が前記スキャン非同期記憶素子を介して他方の入力となる第1および第2の部分回路から構成されており、
奇数段目のスキャン非同期記憶素子は、互いに共通の第1の制御信号で制御され、かつ、当該スキャン非同期記憶素子の信号入力は前記第1の部分回路に接続され、当該スキャン非同期記憶素子の出力は前記第2の部分回路に接続されており、
偶数段目のスキャン非同期記憶素子は、互いに共通の第2の制御信号で制御され、かつ、当該スキャン非同期記憶素子の信号入力は前記第2の部分回路に接続され、当該スキャン非同期記憶素子の出力は前記第1の部分回路に接続されている
ことを特徴とする請求項6の半導体集積回路。
【請求項8】
請求項7の半導体集積回路の設計方法において、
原非同期式回路に含まれる非同期記憶素子を前記スキャン非同期記憶素子に置き換える第1のステップと、
前記原非同期式回路に含まれる組み合わせ回路を前記第1および第2の部分回路に分割するように前記スキャン非同期記憶素子を第1および第2のラッチにグループ分けする第2のステップと、
前記第1および第2のラッチの間の入出力の依存関係を特定する第3のステップと、
入出力の依存関係がない前記第1および第2のラッチを交互に、かつ、前段の出力と次段のスキャン入力とを互いに接続する第4のステップとを備えている
ことを特徴とする半導体集積回路の設計方法。
【請求項9】
前記第2のステップにおいて、前記スキャン非同期記憶素子だけでは前記原非同期式回路の組み合わせ回路を前記第1および第2の部分回路に完全に分割できない場合、前記スキャン非同期記憶素子と共通の制御信号で動作し、前記制御信号が前記第1のビットパターンのときは信号入力を、前記第2のビットパターンのときはスキャン入力を、それぞれ出力し、それ以外のときは前の値を保持する透過スキャンラッチを、前記第1および第2の部分回路の間に挿入する
ことを特徴とする請求項8の半導体集積回路の設計方法。
【請求項10】
前記第4のステップにおいて、入出力の依存関係がない第1および第2のラッチのペアが見つからない場合、前記スキャン非同期記憶素子と共通の制御信号で動作し、前記制御信号が前記第2のビットパターンのときはスキャン入力を出力し、前記制御信号が前記第1および第2のビットパターン以外のときは前の値を保持するスキャンラッチを前記第1または第2のラッチのペアとして挿入する
ことを特徴とする請求項8の半導体集積回路の設計方法。
【請求項11】
請求項6の半導体集積回路に含まれる組み合わせ回路のテストのためのテストパターン生成方法において、
前記組み合わせ回路に印加すべき基本テストパターンを生成するステップと、
前記基本テストパターンに対する前記組み合わせ回路の応答パターンの期待値である期待応答パターンを算出するステップと、
テストパターンの一部として、前記期待応答パターンに基づいて、前記基本テストパターンに対する前記組み合わせ回路の応答パターンをキャプチャするときにおける、当該応答パターンをキャプチャするスキャン非同期記憶素子の保持動作に係る前記制御信号のビットパターンを決定するステップとを備えている
ことを特徴とするテストパターン生成方法。
【請求項12】
テストパターンの一部として、前記期待応答パターンに基づいて、前記基本テストパターンを前記組み合わせ回路に印加した際に当該基本テストパターンの検出対象故障により生じる誤りを含む応答パターンを当該誤りを失うことなくキャプチャするためのキャプチャパターンを生成するステップを備えている
ことを特徴とする請求項11のテストパターン生成方法。
【請求項13】
テストパターンの一部として、前記期待応答パターンに基づいて、前記複数のスキャン非同期記憶素子への前記基本テストパターンのスキャンイン後かつ前記基本テストパターンに対する前記組み合わせ回路の応答パターンのキャプチャ前における、前記組み合わせ回路の応答パターンをキャプチャするスキャン非同期記憶素子の保持動作に係る前記制御信号のビットパターンを決定するステップを備えている
ことを特徴とする請求項11のテストパターン生成方法。
【請求項14】
請求項7の半導体集積回路に含まれる組み合わせ回路のテストのためのテストパターン生成方法において、
前記複数のスキャン非同期記憶素子を、それぞれ、当該スキャン非同期記憶素子に含まれる非同期記憶素子を時間展開して得られる時間展開モデルであって当該スキャン非同期記憶素子の信号入力および当該スキャン非同期記憶素子の後段のスキャン非同期記憶素子の出力に該当する前記組み合わせ回路の信号入力を入力とする時間展開モデルに置き換えるとともに、前記第1および第2の部分回路の信号入力を外部入力に、前記時間展開モデルの出力を外部出力にそれぞれ置き換えた回路モデルを生成するステップと、
前記回路モデルにおける前記第1および第2の部分回路のそれぞれについてテストパターンを生成するステップとを備えている
ことを特徴とするテストパターン生成方法。
【請求項15】
請求項6の半導体集積回路に含まれるスキャン非同期記憶素子のテストのためのテストパターン生成方法において、
テスト対象のスキャン非同期記憶素子が前の値を保持する第1の状態遷移、保持値が前の値にフラッシュされる第2の状態遷移、および保持値が変化する第3の状態遷移がすべて再現されるように、当該テスト対象のスキャン非同期記憶素子のスキャン入力および制御信号のビットパターンを決定するステップを備えている
ことを特徴とするテストパターン生成方法。
発明の詳細な説明 【技術分野】
【0001】
本発明は、半導体集積回路のテスト容易化に関し、特に、MullerのC素子、非対称C素子、ラッチなどの非同期記憶素子を備えている非同期式回路のテスト容易化に関する。
【背景技術】
【0002】
近年の半導体集積回路の微細化、大規模化、低消費電力化に伴い、製造ばらつきや特性劣化や電圧変動などによる信号遅延量のばらつき、クロックスキュー、可変クロックの使用などが原因で同期式回路の処理能力が限界に近づきつつある。そこで非同期式回路の利用が見直されている。半導体集積回路の分野では、大域的には非同期動作をし、局所的には同期動作をするGALS(Globally Asynchronous Locally Synchronous)アーキテクチャが今後増加することが予想される。
【0003】
非同期式回路は、自己タイミングで動作することができるため各種信号遅延に強く、また、動作クロック信号を必要としないため安定状態で電力を消費しないという特徴がある。しかし一方で、非同期式回路ではハザードやレースを考慮した設計が必要となり、そして何よりも同期式回路よりもテストが難しくなるという欠点がある。
【0004】
非同期式回路のテスト容易化として同期式回路で広く用いられているスキャン方式を応用することができる。すなわち、スキャン方式では、テスト用のシフトレジスタ(スキャンチェーン)を構成してそれにテストパターンをスキャンインし、そのテストパターンに対する非同期式回路の応答パターンをシフトレジスタでキャプチャし、スキャンアウトすることでテストが実施される。
【0005】
同期式回路の場合、記憶素子として使用されるフリップフロップの入力側にその前段のフリップフロップの出力と同期式回路の出力のいずれか一方を選択するマルチプレクサを挿入することでシフトレジスタが容易に構成できる。これに対して、非同期式回路は、フリップフロップではなくMullerのC素子などの内部に存在する信号フィードバックによって値を保持する仕組みであるため、そのようなフィードバックパスにテスト専用のスキャンフリップフロップを挿入してシフトレジスタを構成する必要がある。したがって、非同期式回路はテスト容易化によって面積オーバーヘッドが増大するばかりか、遅延オーバーヘッドも増大してしまう。
【0006】
これまで非同期式回路のテスト容易化に伴う面積および遅延オーバーヘッドを低減するためのさまざまな手法が提案されている。例えば、互いに異なるクロック信号で動作するL1ラッチ(マスターラッチ)およびL2ラッチ(スレーブラッチ)で構成されるLSSD(Level Sensitive Scan Design)ラッチでフリップフロップを構成し、L2ラッチをフィードバックパス外に配置するLSSDシングルラッチデザインを採用することで遅延オーバーヘッドを低減している。さらに、各部分回路のフィードバックパス外のラッチを省略し、2つに分割された組み合わせ回路の一方の部分回路のラッチと他方の部分回路のラッチを交互に接続してLSSDラッチを構成する、いわゆるL1L2*シングルラッチデザインを採用することで面積オーバーヘッドを最小化している(例えば、非特許文献1参照)。
【0007】
また、L1L2*シングルラッチデザインにおいて、フィードバックパスにマルチプレクサのみを残し、ラッチをフィードバックパス外のスキャンパスに挿入することで、面積および遅延オーバーヘッドを最小化している(例えば、特許文献1参照)。一方、フィードバックパスとスキャンパスにそれぞれ独立に動作するラッチを挿入することで記憶素子の内部状態を保持したままテストパターンのスキャンイン/アウトを可能にしているものがある(例えば、特許文献2参照)。
【先行技術文献】
【0008】

【特許文献1】国際公開第WO2006/013524号
【特許文献2】国際公開第WO2010/001187号
【0009】

【非特許文献1】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
【発明の概要】
【発明が解決しようとする課題】
【0010】
上述したように、非同期式回路のテスト容易化にスキャン方式を応用するとシフトレジスタの追加が必要となり、面積および遅延オーバーヘッドが増大してしまう。それを解決するためにL1L2*シングルラッチデザインを採用した場合、L1ラッチとL2*ラッチ間の入出力の依存関係があると任意のテストパターンの印加および観測が保証できなくなってしまう。すなわち、L1L2*シングルラッチデザインでは非同期式回路の完全テストができないおそれがある。特に特許文献1に開示された非同期式回路ではフィードバックパスの外にラッチが配置されているため、スキャンイン/アウトの際のマルチプレクサの状態によっては1ラッチしか介在しない信号ループが非同期式回路中に構成されると回路が発振するおそれがある。
【0011】
また、従来のいずれの手法も、非同期式回路に元々備わっている非同期記憶素子にテストパターンを記憶するのではなく、追加挿入したフリップフロップまたはラッチでテストパターンおよび非同期式回路の応答パターンを記憶している。したがって、テストパターンおよび応答パターンのスキャンイン/アウトだけではMullerのC素子などの非同期記憶素子のテストができない。すなわち、非同期記憶素子のテストが不完全である。
【0012】
上記問題に鑑み、本発明は、非同期式回路のテスト容易化に好適な改良型の非同期記憶素子(以下、「スキャン非同期記憶素子」と称する。)を提供することを課題とする。さらに、そのようなスキャン非同期記憶素子を備えたテスト容易化設計された半導体集積回路、ならびにそのような半導体集積回路の設計方法およびテストパターン生成方法を提供することを課題とする。
【課題を解決するための手段】
【0013】
例えば、スキャン非同期記憶素子は、nを2以上の整数とするn入力の非同期記憶素子と、nビットの信号入力およびスキャン入力から非同期記憶素子のn入力を生成するスキャン制御論理回路とを備えている。スキャン制御論理回路は、与えられた制御信号が第1のビットパターンのときは信号入力を、第2のビットパターンのときはスキャン入力を、それ以外のときは非同期記憶素子が前の値を保持するビットパターンを、それぞれ非同期記憶素子のn入力として出力とする。ここでいう非同期記憶素子とは、MullerのC素子、非対称C素子、ラッチなど非同期式回路において記憶素子として用いられるもの全般を意味する。
【0014】
また、半導体集積回路は、組み合わせ回路と複数の上記のスキャン非同期記憶素子とを備えている。複数のスキャン非同期記憶素子の信号入力ならびに出力は、組み合わせ回路に接続されている。そして、複数のスキャン非同期記憶素子は、前段の出力と次段のスキャン入力とが互いに接続されるように、縦続接続されている。
【0015】
具体的には、上記半導体集積回路において、組み合わせ回路は、一方の出力がスキャン非同期記憶素子を介して他方の入力となる第1および第2の部分回路から構成されている。そして、奇数段目のスキャン非同期記憶素子は、互いに共通の第1の制御信号で制御され、かつ、当該スキャン非同期記憶素子の信号入力は第1の部分回路に接続され、当該スキャン非同期記憶素子の出力は第2の部分回路に接続されている。同様に、偶数段目のスキャン非同期記憶素子は、互いに共通の第2の制御信号で制御され、かつ、当該スキャン非同期記憶素子の信号入力は第2の部分回路に接続され、当該スキャン非同期記憶素子の出力は第1の部分回路に接続されている。
【0016】
また、上記半導体集積回路の設計方法は、原非同期式回路に含まれる非同期記憶素子をスキャン非同期記憶素子に置き換える第1のステップと、原非同期式回路に含まれる組み合わせ回路を第1および第2の部分回路に分割するようにスキャン非同期記憶素子を第1および第2のラッチにグループ分けする第2のステップと、第1および第2のラッチの間の入出力の依存関係を特定する第3のステップと、入出力の依存関係がない第1および第2のラッチを交互に、かつ、前段の出力と次段のスキャン入力とを互いに接続する第4のステップとを備えている。
【0017】
また、上記半導体集積回路に含まれる組み合わせ回路のテストのためのテストパターン生成方法は、組み合わせ回路に印加すべき基本テストパターンを生成するステップと、基本テストパターンに対する組み合わせ回路の応答パターンの期待値である期待応答パターンを算出するステップと、テストパターンの一部として、期待応答パターンに基づいて、基本テストパターンに対する組み合わせ回路の応答パターンをキャプチャするときにおける、当該応答パターンをキャプチャするスキャン非同期記憶素子の保持動作に係る制御信号のビットパターンを決定するステップとを備えている。
【0018】
上記テストパターン生成方法は、テストパターンの一部として、期待応答パターンに基づいて、基本テストパターンを組み合わせ回路に印加した際に当該基本テストパターンの検出対象故障により生じる誤りを含む応答パターンを当該誤りを失うことなくキャプチャするためのキャプチャパターンを生成するステップを備えていることが好ましい。
【0019】
また、上記テストパターン生成方法は、テストパターンの一部として、期待応答パターンに基づいて、複数のスキャン非同期記憶素子への基本テストパターンのスキャンイン後かつ基本テストパターンに対する組み合わせ回路の応答パターンのキャプチャ前における、組み合わせ回路の応答パターンをキャプチャするスキャン非同期記憶素子の保持動作に係る制御信号のビットパターンを決定するステップを備えていることが好ましい。
【0020】
また、上記半導体集積回路に含まれる組み合わせ回路のテストのためのテストパターン生成方法は、複数のスキャン非同期記憶素子を、それぞれ、当該スキャン非同期記憶素子に含まれる非同期記憶素子を時間展開して得られる時間展開モデルであって当該スキャン非同期記憶素子の信号入力およびその後段のスキャン非同期記憶素子の出力に該当する組み合わせ回路の信号入力を入力とする時間展開モデルに置き換えるとともに、第1および第2の部分回路の信号入力を外部入力に、時間展開モデルの出力を外部出力にそれぞれ置き換えた回路モデルを生成するステップと、回路モデルにおける第1および第2の部分回路のそれぞれについてテストパターンを生成するステップとを備えている。
【0021】
また、上記半導体集積回路に含まれるスキャン非同期記憶素子のテストのためのテストパターン生成方法は、テスト対象のスキャン非同期記憶素子が前の値を保持する第1の状態遷移、保持値が前の値にフラッシュされる第2の状態遷移、および保持値が変化する第3の状態遷移がすべて再現されるように、当該テスト対象のスキャン非同期記憶素子のスキャン入力および制御信号のビットパターンを決定するステップを備えている。
【発明の効果】
【0022】
本発明によると、完全テストが可能な非同期式回路を、小さな面積オーバーヘッドおよび遅延オーバーヘッドで構成することができる。また、スキャンテストによってMullerのC素子、非対称C素子、ラッチなどの非同期記憶機能について完全テストが可能となる。
【図面の簡単な説明】
【0023】
【図1】図1は、本発明の一実施形態に係るスキャン非同期記憶素子の構成図である。
【図2】図2は、変形例に係るスキャン非同期記憶素子の構成図である。
【図3】図3は、別の変形例に係るスキャン非同期記憶素子の構成図である。
【図4】図4は、本発明の一実施形態に係る半導体集積回路の構成図である。
【図5】図5は、非同期記憶素子スキャンチェーンの構成図である。
【図6A】図6Aは、図4の半導体集積回路の設計方法の説明する模式図である。
【図6B】図6Bは、図6Aに続く図である。
【図7】図7は、透過スキャンラッチの構成図である。
【図8】図8は、スキャンラッチの構成図である。
【図9】図9は、L1L2シフトのタイミングチャートである。
【図10】図10は、L1キャプチャのタイミングチャートである。
【図11】図11は、L1L2シフトの別のタイミングチャートである。
【図12】図12は、図5の非同期記憶素子スキャンチェーンのテストに係るタイミングチャートである。
【図13】図13は、テストパターン生成において一時的に生成される回路モデルの模式図である。
【図14】図14は、C素子で構成された非同期記憶素子を有するスキャン非同期記憶素子に対応する時間展開モデルを説明する図である。
【図15】図15は、Dラッチで構成された非同期記憶素子を有するスキャン非同期記憶素子に対応する時間展開モデルを説明する図である。
【図16】図16は、正論理のSRラッチで構成された非同期記憶素子を有するスキャン非同期記憶素子に対応する時間展開モデルを説明する図である。
【発明を実施するための形態】
【0024】
(スキャン非同期記憶素子の実施形態)
図1は、本発明の一実施形態に係るスキャン非同期記憶素子の構成を示す。本実施形態に係るスキャン非同期記憶素子10は、非同期記憶素子(AM:Asynchronous Memory element)12およびその入力側に接続されたスキャン制御論理回路(SCL)14で構成することができる。非同期記憶素子12は、同期クロック信号を持たず、他の記憶素子とは独立に入力信号を記憶する素子である。例えば、非同期記憶素子12は入力a,bとフィードバックされた出力Zの3入力の多数決を演算する多数決関数で実現されるC素子で構成することができる。非同期記憶素子12をC素子で構成した場合、入力a,bが“11”になると出力が“1”に、“00”になると出力が“0”に遷移する。入力a,bが“01”または“10”の場合には前の値を保持する(表1参照)。

【0025】
【表1】
JP0005761819B2_000002t.gif

【0026】
非同期記憶素子12はDラッチで構成することもできる。例えば、非同期記憶素子12を、入力aをデータ入力、入力bをストローブパルス入力とするDラッチで構成した場合、入力bが“1”である間は入力aがそのまま出力され、入力bが“0”である間は非同期記憶素子12は前の値を保持する(表2参照)。

【0027】
【表2】
JP0005761819B2_000003t.gif

【0028】
非同期記憶素子12はSRラッチで構成することもできる。例えば、非同期記憶素子12を、入力aをセット入力、入力bをリセット入力とする正論理のSRラッチで構成した場合、入力a,bが“10”になると出力が“1”に、“01”になると出力が“0”に遷移する。入力a,bが“00”の場合には前の値を保持し、“11”は禁止入力である。負論理のSRラッチの場合には、入力a,bが“01”になると出力が“1”に、“10”になると出力が“0”に遷移する。入力a,bが“11”の場合には前の値を保持し、“00”は禁止入力である(表3参照)。

【0029】
【表3】
JP0005761819B2_000004t.gif

【0030】
なお、非同期記憶素子12をラッチで構成した場合、非同期記憶素子12は出力Zの反転も出力することがある。

【0031】
スキャン制御論理回路14は、信号入力A,Bおよびスキャン入力SIから非同期記憶素子12の入力a,bを生成する論理回路である。例えば、スキャン制御論理回路14は、組み合わせ論理回路141および2つのマルチプレクサ142,143で構成することができる。組み合わせ論理回路141は、SCのビットパターンに応じて、SIを2ビットスキャン入力SA,SBとして出力するとともにスキャンイネーブル信号SEを出力する。マルチプレクサ142は、SEに応じてAおよびSAのいずれか一方をaとして出力する。マルチプレクサ143は、SEに応じてBおよびSBのいずれか一方をbとして出力する。

【0032】
例えば、非同期記憶素子12をC素子で構成した場合においてSCが“00”のとき、スキャン制御論理回路14はA,Bをそのまま出力する。この場合、スキャン非同期記憶素子10はA,Bが入力されるMullerのC素子として動作する。SCが“11”のとき、スキャン制御論理回路14はSIをa,bとして出力する。この場合、スキャン非同期記憶素子10の出力はSIに遷移する。すなわち、スキャン非同期記憶素子10にスキャンインしたSIを記憶させることができる。SCが“01”または“10”のとき、スキャン制御論理回路14は“01”または“10”を出力する。この場合、スキャン非同期記憶素子10は前の値を保持する(表4参照)。ただし、表4および以降の各表中の“X”はドントケアである。

【0033】
【表4】
JP0005761819B2_000005t.gif

【0034】
また、例えば、非同期記憶素子12を、入力aをデータ入力、入力bをストローブパルス入力とするDラッチで構成した場合においてSCが“00”のとき、スキャン制御論理回路14はA,Bをそのまま出力する。この場合、スキャン非同期記憶素子10はA,Bが入力されるDラッチとして動作する。SCが“11”のとき、スキャン制御論理回路14はSIをaとして出力し、bとして“1”を出力する。この場合、スキャン非同期記憶素子10の出力はSIに遷移する。すなわち、スキャン非同期記憶素子10にスキャンインしたSIを記憶させることができる。SCが“01”または“10”のとき、スキャン制御論理回路14は“X0”を出力する。ただし、“X”はドントケアである。この場合、スキャン非同期記憶素子10は前の値を保持する(表5参照)。なお、後述するように半導体集積回路のテストにおいて組み合わせ回路の期待応答パターンに応じてスキャン非同期記憶素子10の保持動作に係るSCのビットパターンを最適なものに選択可能にするために、スキャン制御論理回路14は、例えば、SCが“01”のときは“00”を出力し、SCが“10”のときは“10”を出力するといったように、互いに異なるビットパターンを出力することが望ましい。

【0035】
【表5】
JP0005761819B2_000006t.gif

【0036】
また、例えば、非同期記憶素子12を、入力aをセット入力、入力bをリセット入力とする正論理のSRラッチで構成した場合においてSCが“00”のとき、スキャン制御論理回路14はA,Bをそのまま出力する。この場合、スキャン非同期記憶素子10はA,Bが入力されるSRラッチとして動作する。SCが“11”のとき、スキャン制御論理回路14はSIをaとして出力し、SIの反転をbとして出力する。この場合、スキャン非同期記憶素子10の出力はSIに遷移する。すなわち、スキャン非同期記憶素子10にスキャンインしたSIを記憶させることができる。SCが“01”または“10”のとき、スキャン制御論理回路14は“00”を出力する。この場合、スキャン非同期記憶素子10は前の値を保持する。負論理のSRラッチの場合には、SCが“11”のとき、スキャン制御論理回路14はSIの反転をaとして出力し、SIをbとして出力し、SCが“01”または“10”のとき、スキャン制御論理回路14は“11”を出力する(表6参照)。

【0037】
【表6】
JP0005761819B2_000007t.gif

【0038】
以上のように本実施形態に係るスキャン非同期記憶素子は、一般的な非同期記憶素子12に2つのマルチプレクサ142,143と簡単な回路構成のスキャン制御論理回路14を追加するだけで構成することができるため、面積オーバーヘッドは比較的小さい。また、信号パスに挿入されるのはマルチプレクサ142または143の1段だけであるから遅延オーバーヘッドを最小にすることができる。

【0039】
さらに、非同期記憶素子12自体でスキャン入力を記憶するため、後述するようにスキャンテストによって非同期記憶素子12の記憶機能について完全テストが可能である。また、後述するように、内部のレースを考慮してSCのビットパターンを決定することにより、レースのない制御が可能となる。

【0040】
なお、スキャン制御論理回路14は上記構成に限定されない。表4、表5、および表6に示した入出力が実現できるのであれば別構成であってもよい。

【0041】
また、非同期記憶素子12がセット機能またはリセット機能を有する場合、SEが“1”のときにセットまたはリセットが働かないようにするために、図2に示したように、SEとセット信号またはリセット信号RDとの論理演算を行う組み合わせ回路17を追加して、組み合わせ回路17の出力をセット信号またはリセット信号rdとして非同期記憶素子12に与えればよい。

【0042】
また、非同期記憶素子12としてC素子を用いる場合、スキャン非同期記憶素子10の信号入力は2ビットに限定されない。スキャン非同期記憶素子10の信号入力は3ビット以上であってもよい。図2は、変形例に係るスキャン非同期記憶素子10の構成を示す。当該スキャン非同期記憶素子10にはA[1]からA[n]までのnビットの信号が入力される。信号入力がnビットの場合、スキャン非同期記憶素子10に含まれるマルチプレクサ144の個数はn個となり、スキャン制御論理回路14はnビットのSCに応じてSA[1]からSA[n]までのnビットスキャン入力を生成する。非同期記憶素子12は、入力信号の全ビットが“1”になると出力が“1”に、全ビットが“0”になると出力が“0”に遷移し、それ以外の場合には前の値を保持する。基本的にnビットスキャン入力はSCと同じにすればよい。なお、非同期記憶素子12の記憶機能の完全テストができなくなるが、スキャン非同期記憶素子10が前の値を保持するためのSCのビットパターンの種類を削減することでSCをn-1ビット以下にすることもできる。

【0043】
さらに、非同期記憶素子12は2入力以上の非対称C素子であってもよい。非対称C素子では信号入力の全ビットが“1”(または“0”)にならなくても出力が“1”(または“0”)に遷移する。この場合もスキャン非同期記憶素子10に含まれるマルチプレクサの個数はn個となり、スキャン制御論理回路14はnビットのSCに応じてnビットスキャン入力を生成する。ただし、MullerのC素子の場合と違って、スキャン非同期記憶素子10が前の値を保持するためのnビットスキャン入力はSCにかかわらず特定のビットパターンにする必要がある。

【0044】
(半導体集積回路の実施形態)
図4は、本発明の一実施形態に係る半導体集積回路の構成を示す。本実施形態に係る半導体集積回路は、信号入力PIから信号出力POを生成する組み合わせ回路(CC)20と複数のスキャン非同期記憶素子(SAM:Scan Asynchronous Memory element)10とを備えている。各スキャン非同期記憶素子10の信号入力A,Bおよび出力Zは組み合わせ回路20に接続されている。ここで、組み合わせ回路20はフィードバックパスを有しておらず、各スキャン非同期記憶素子10を記憶素子として使用するものとする。なお、組み合わせ回路20は後述するテストを実施する際にフィードパックパスを有していない組み合わせ回路とみなすことができればよいので、これを実現する機構を備えた非同期式回路であってもよい。

【0045】
各スキャン非同期記憶素子10は、前段の出力と次段のスキャン入力が互いに接続されるように縦続接続されて(図5参照)、非同期記憶素子スキャンチェーン100を構成している。非同期記憶素子スキャンチェーン100は、初段のスキャン非同期記憶素子10のスキャン入力SIを後段の各スキャン非同期記憶素子10にスキャンシフトすることができる。また、各スキャン非同期記憶素子10が保持する値をスキャンシフトして最終段のスキャン非同期記憶素子10からスキャン出力SOとして取り出すことができる。

【0046】
非同期記憶素子スキャンチェーン100において、奇数段目のスキャン非同期記憶素子10は制御信号SC1で制御され、偶数段目のスキャン非同期記憶素子10は制御信号SC2で制御される。すなわち、互いに隣接する2つのスキャン非同期記憶素子10でLSSDラッチが構成されている。したがって、本実施形態に係る半導体集積回路は、各スキャン非同期記憶素子10による遅延オーバーヘッドの低減効果に加えて、L1L2*シングルラッチデザインを適用することで面積オーバーヘッドも最小化することができる。なお、LSSDダブルラッチデザインやLSSDシングルラッチデザインを適用することも可能である。

【0047】
なお、上述したようにスキャン非同期記憶素子10の信号入力は2ビットに限定されない。また、非同期記憶素子スキャンチェーン100を構成するスキャン非同期記憶素子10は4個に限定されない。5個以上のスキャン非同期記憶素子10についてSC1で制御されるものとSC2で制御されるものを交互に接続して非同期記憶素子スキャンチェーン100を構成してもよい。

【0048】
<半導体集積回路の設計>
次に、本実施形態に係る半導体集積回路の設計について、図6Aおよび図6Bを参照しながら説明する。なお、本実施形態に係る半導体集積回路の設計は、下記の各ステップをコンピュータに実行させることにより実施することができる。図4の半導体集積回路は既存の非同期式回路を変形して得ることができる。まず、ステップ1として、原非同期式回路に含まれる非同期記憶素子12をスキャン非同期記憶素子10に置き換える。次に、ステップ2として、スキャン非同期記憶素子10をL1ラッチおよびL2ラッチにグループ分けして、原非同期式回路に含まれる組み合わせ回路20を部分回路21,22に分割する。部分回路21は、組み合わせ回路20の信号入力PIの一部である信号入力PI1から信号出力POの一部である信号出力PO1を生成する。部分回路22は、組み合わせ回路20の信号入力PIの残りである信号入力PI2から信号出力POの残りである信号出力PO2を生成する。L1ラッチであるスキャン非同期記憶素子10の信号入力は部分回路21に接続され、出力は部分回路22に接続されている。L2ラッチであるスキャン非同期記憶素子10の信号入力は部分回路22に接続され、出力は部分回路21に接続されている。

【0049】
なお、スキャン非同期記憶素子10だけでは組み合わせ回路20を完全に分割できない場合には、透過スキャンラッチ(TSL)30をL1ラッチまたはL2ラッチとして部分回路21,22間に適宜挿入してもよい。図7は、透過スキャンラッチ30の一構成例を示す。透過スキャンラッチ30は、組み合わせ論理回路32、マルチプレクサ34、およびラッチ36で構成することができる。組み合わせ論理回路32は、スキャン非同期記憶素子10と同じ制御信号SCのビットパターンに応じて、スキャンイネーブル信号SEおよびロードイネーブル信号LEを出力する。マルチプレクサ34は、SEに応じて信号入力Aおよびスキャン入力SIのいずれか一方を出力する。ラッチ36は、LEに応じてマルチプレクサ34の出力をラッチする。

【0050】
例えば、SCが“00”のとき、透過スキャンラッチ30はAをそのまま出力する。この場合、透過スキャンラッチ30は単なる信号線として動作する。SCが“11”のとき、透過スキャンラッチ30はSIを出力する。SCが“01”または“10”のとき、透過スキャンラッチ30は前の値を保持する(表7参照)。

【0051】
【表7】
JP0005761819B2_000008t.gif

【0052】
組み合わせ回路20が分割できたなら、後はL1ラッチおよびL2ラッチを交互に接続して非同期記憶素子スキャンチェーンを構成すればよいのだが、ここで故障検出可能性を考慮する必要がある。例えば、非同期記憶素子12をC素子で構成した場合においてスキャン非同期記憶素子10に“00”が入力されるべきところが故障により“01”が入力された場合にはスキャン非同期記憶素子10は前の値を保持する。ここで、スキャン非同期記憶素子10の前の値が“0”であったなら正常値および故障値のいずれが入力されても出力は“0”を保持するため故障が検出できない。これに対して、前の値を“1”にしておけば、正常値“00”が入力されたなら出力は“0”に遷移し、故障値“01”が入力されたなら出力は“1”を保持するため、故障を検出することができる。非同期記憶素子12をC素子で構成した場合のスキャン非同期記憶素子10の入出力と故障検出可能性の関係は表8の通りである。なお、この関係はMullerのC素子などについても当てはまる。

【0053】
【表8】
JP0005761819B2_000009t.gif

【0054】
また、例えば、非同期記憶素子12を、入力aをデータ入力、入力bをストローブパルス入力とするDラッチで構成した場合においてスキャン非同期記憶素子10に“00”が入力されるべきところが故障により“01”が入力された場合にはスキャン非同期記憶素子10の出力は“0”に遷移する。ここで、スキャン非同期記憶素子10の前の値が“0”であったなら正常値および故障値のいずれが入力されても出力は“0”のまま変わらないため故障が検出できない。これに対して、前の値を“1”にしておけば、正常値“00”が入力されたなら出力は“1”を保持し、故障値“01”が入力されたなら出力は“0”に遷移するため、故障を検出することができる。非同期記憶素子12を、入力aをデータ入力、入力bをストローブパルス入力とするDラッチで構成した場合のスキャン非同期記憶素子10の入出力と故障検出可能性の関係は表9の通りである。

【0055】
【表9】
JP0005761819B2_000010t.gif

【0056】
また、例えば、非同期記憶素子12を、入力aをセット入力、入力bをリセット入力とする正論理のSRラッチで構成した場合においてスキャン非同期記憶素子10に“00”が入力されるべきところが故障により“01”が入力された場合にはスキャン非同期記憶素子10の出力は“0”に遷移する。ここで、スキャン非同期記憶素子10の前の値が“0”であったなら正常値および故障値のいずれが入力されても出力は“0”のまま変わらないため故障が検出できない。これに対して、前の値を“1”にしておけば、正常値“00”が入力されたなら出力は“1”を保持し、故障値“01”が入力されたなら出力は“0”に遷移するため、故障を検出することができる。非同期記憶素子12を、入力aをセット入力、入力bをリセット入力とする正論理のSRラッチで構成した場合のスキャン非同期記憶素子10の入出力と故障検出可能性の関係は表10の通りである。

【0057】
【表10】
JP0005761819B2_000011t.gif

【0058】
したがって、スキャン非同期記憶素子10の故障検出可能性を考慮すると、L1ラッチおよびL2ラッチのペアからなる各LSSDラッチは互いに影響を与えないテストパターンの保持およびそれに対する応答パターンの保持ができなければならない。そこで、下記のステップに従って非同期記憶素子スキャンチェーンを構成することでテストパターンと応答パターンの相互独立性を保証する。

【0059】
図6Bに移り、組み合わせ回路20が部分回路21,22に分割できたなら、次にステップ3として、各スキャン非同期記憶素子10および各透過スキャンラッチ30について、L1ラッチおよびL2ラッチの間の入出力の依存関係を特定する。具体的には、各スキャン非同期記憶素子10および透過スキャンラッチ30について、それを頂点としてその入力に繋がる他グループに属するスキャン非同期記憶素子10および透過スキャンラッチ30の出力の集合である疑似出力錐を特定する。図中に示したように、任意のL1ラッチおよびL2ラッチについて、一方を頂点とする疑似出力錐の入力部分に他方の出力が含まれていなければ、それら2つのラッチに入出力の依存関係はないと言える。

【0060】
L1ラッチおよびL2ラッチの間の入出力の依存関係が特定できたなら、次にステップ4として、入出力の依存関係がないL1ラッチおよびL2ラッチを交互に、かつ、前段の出力と後段のスキャン入力とを互いに接続して、非同期記憶素子スキャンチェーン100を構成する。疑似出力錐の入力部分が大きいほど入出力の依存関係がないL1ラッチおよびL2ラッチのペアを見つけにくいため、疑似出力錐の入力部分が大きなものから優先的に選択して接続していけばよい。しかし、入出力の依存関係がないL1ラッチおよびL2ラッチのペアがまったく見つからないこともある。その場合には、スキャンラッチ(SL)40をL1ラッチまたはL2ラッチのペアの代用として挿入するとよい。図8は、スキャンラッチ40の一構成例を示す。スキャンラッチ40は、組み合わせ論理回路42およびラッチ44で構成することができる。組み合わせ論理回路42は、スキャン非同期記憶素子10と同じ制御信号SCのビットパターンに応じて、ロードイネーブル信号LEを出力する。ラッチ44、LEに応じてスキャン入力SIをラッチする。スキャンラッチ40には信号入力はない。

【0061】
例えば、SCが“00”のとき、スキャンラッチ40はドントケアとなる。SCが“11”のとき、スキャンラッチ40はSIを出力する。SCが“01”または“10”のとき、スキャンラッチ40は前の値を保持する(表11参照)。

【0062】
【表11】
JP0005761819B2_000012t.gif

【0063】
以上のように、本設計方法によると、特にステップ3およびステップ4によって、入出力の依存関係がないL1ラッチおよびL2ラッチのペアでLSSDラッチが構成される。これにより、テストパターンと応答パターンの相互独立性が保証され、組み合わせ回路20の完全な故障検出が可能となる。

【0064】
なお、上記設計手法はスキャン非同期記憶素子10を備えていない従来の非同期式回路についても適用可能である。従来の非同期式回路の場合、原非同期式回路に含まれるC素子などの非同期記憶素子をスキャン非同期記憶素子に置き換えるステップ1に代えて、例えば、C素子のフィードパックパス中にマルチプレクサおよびラッチを挿入してL1L2*シングルラッチデザインの非同期式回路に変形すればよい。

【0065】
<半導体集積回路のテスト>
次に、半導体集積回路に含まれる組み合わせ回路20のテストについて説明する。図6Bに示した非同期記憶素子スキャンチェーン100はL1ラッチおよびL2ラッチからなるLSSDラッチで構成されている。したがって、部分回路21,22のそれぞれについて互いに独立にテストを行う必要がある。すなわち、部分回路21のテストでは、L1ラッチをマスターラッチ、L2ラッチをスレーブラッチとしてテストパターンをスキャンシフトするL1L2シフト、およびL2ラッチをマスターラッチ、L1ラッチをスレーブラッチとしてテストパターンをスキャンシフトするL2L1シフトを交互に繰り返し、L2ラッチから部分回路21にテストパターンを印加し、L1ラッチで部分回路21の応答パターンをキャプチャ(以下、この動作を「L1キャプチャ」と称する)する。一方、部分回路22のテストでは、L2L1シフトおよびL1L2シフトを交互に繰り返し、L1ラッチから部分回路22にテストパターンを印加し、L2ラッチで部分回路22の応答パターンをキャプチャ(以下、この動作を「L2キャプチャ」と称する)する。

【0066】
図9は、L1L2シフトのタイミングチャートである。図中のSC1,SC2の値“H”は、スキャン非同期記憶素子10が前の値を保持するときのビットパターン“01”または“10”を表し、値“L”は、スキャン非同期記憶素子10がスキャン入力を保持するときのビットパターン“11”を表す。SC1,SC2を“H”および“L”に交互に変化させることで、スキャン入力SIに印加されたテストパターンがスキャンインされ、L1ラッチおよびL2ラッチのペアによって“t2”および“t1”が保持される。L2L1シフトの説明は省略するが、基本的にはL1L2シフトにおけるSC1,SC2を入れ替えたものがL2L1シフトの動作となる。

【0067】
図10は、L1キャプチャのタイミングチャートである。図に示したSC1の値“N”は、組み合わせ回路20からスキャン非同期記憶素子10にA,Bが入力されるときのビットパターン“00”を表す。SC2を“H”にしたままでSC1を“N”→“H”に変化させることで、L1ラッチは組み合わせ回路20の応答パターン“r2”および“r1”をキャプチャする。L2キャプチャの説明は省略するが、基本的にはL1キャプチャにおけるSC1,SC2を入れ替えたものがL2キャプチャの動作となる。

【0068】
ここで、L1またはL2キャプチャでは組み合わせ回路20の応答パターンをキャプチャするとき、また、L1L2またはL2L1シフトではテストパターンのスキャンイン後かつ組み合わせ回路20の応答パターンのキャプチャ前に、SC1またはSC2は“H”となるが(図9および図10中の丸で囲んだ“H”)、そのビットパターンが適切でないと、スキャン非同期記憶素子10の内部でレースが発生する。例えば、非同期記憶素子12をC素子で構成した場合においてSC1を“00”にしてスキャン非同期記憶素子10が組み合わせ回路20の応答パターン“01”を保持している場合にSC1を“10”にすると、スキャン非同期記憶素子10の内部において非同期記憶素子12の入力a,bが“01”から“10”に変化する。その際、入力a,bの各変化のタイミングによっては入力a,bが“00”または“11”となり、スキャン非同期記憶素子10の保持値が変わってしまうおそれがある。したがって、組み合わせ回路20の応答パターンが“01”の場合にはSC1を“01”にしてスキャン非同期記憶素子10を制御すべきである。

【0069】
また、例えば、非同期記憶素子12を、入力aをデータ入力、入力bをストローブパルス入力とするDラッチで構成した場合(ただし、表5において入力a,bは、SCが“01”のとき“00”となり、SCが“10”のとき“10”となるものとする。)においてSC1を“00”にしてスキャン非同期記憶素子10が組み合わせ回路20の応答パターン“01”を保持している場合にSC1を“10”にすると、スキャン非同期記憶素子10の内部において非同期記憶素子12の入力a,bが“01”から“10”に変化する。その際、入力a,bの各変化のタイミングによっては入力a,bが“11”となり、スキャン非同期記憶素子10の保持値が変わってしまうおそれがある。したがって、組み合わせ回路20の応答パターンが“01”の場合にはSC1を“01”にしてスキャン非同期記憶素子10を制御すべきである。

【0070】
すなわち、スキャン非同期記憶素子10の保持動作に係るSC1のビットパターンは組み合わせ回路20の期待応答パターンに応じて決定すべきである。SC2についても同様のことが言える。

【0071】
なお、図11に示したように、L1L2シフトにおいて、テストパターンのスキャンイン後かつ組み合わせ回路20の応答パターンのキャプチャ前にSC1を“L”にすることで、その直前の“H”のビットパターンについての制約がなくなる。これは、組み合わせ回路20の応答パターンのキャプチャ前にSC1が“L”になると、L1ラッチに前段のL2ラッチの出力がスキャン入力されてL1ラッチは前の値を保持し続けるため、レースによる保持値の変化が発生しなくなるからである。ただし、SC1が“L”から“N”に、すなわち、“11”から“00”に変化するため、変化の途中で一時的にSC1は“01”または“10”となるとスキャン非同期記憶素子10を“H”で制御したのと同じ効果を生じるので、この点に注意が必要である。L2L1シフトについても同様のことが言える。

【0072】
以上のことを踏まえて、組み合わせ回路20のテストパターンは次のような手順で生成することができる。なお、テストパターンの生成は、下記の手順をコンピュータに実行させることにより実施することができる。まず、自動テストパターン生成ツール(ATPG)などを用いて組み合わせ回路20に印加すべき基本テストパターンを生成する。そして、シミュレーションにより当該基本テストパターンに対する組み合わせ回路20の期待応答パターンを算出する。期待応答パターンが得られたなら、その値に基づいて、上記のレースが発生するタイミングにおけるスキャン非同期記憶素子10の保持動作に係るSC1,SC2のビットパターンを決定する。そして、ATPGで生成した基本テストパターンにSC1,SC1のビットパターンを付加して、最終的なテストパターンを得る。なお、L1L2*シングルラッチデザインの場合、部分回路21,22のそれぞれについて基本テストパターンを生成し、期待応答パターンを算出する必要がある。

【0073】
組み合わせ回路20の故障を完全に検出するには、テストパターンのスキャンインが完了したときの各スキャン非同期記憶素子10の保持値が、組み合わせ回路20の応答パターンに応じた値となっている必要がある(表8、表9、および表10参照)。したがって、故障シミュレーションなどによって算出された期待応答パターンに基づいて、基本テストパターンを組み合わせ回路20に印加した際に検出対象とする誤りを含む応答パターンをその誤りを失うことなくキャプチャするためのキャプチャパターンを生成し、それをテストパターンの一部として用いることが好ましい。

【0074】
<スキャン非同期記憶素子のテスト>
次に、スキャン非同期記憶素子10のテストについて説明する。スキャン非同期記憶素子10に含まれる非同期記憶素子12は、通常時には組み合わせ回路20の記憶素子として使用され、テスト時にはラッチとして使用される。したがって、図5の非同期記憶素子スキャンチェーン100のSIに適当なテストパターンを印加してそれをスキャンシフトして取り出したSOを検証することで、スキャン非同期記憶素子10の記憶機能のテストを行うことができる。さらに、印加するテストパターンを工夫することで記憶機能の完全テストが可能となる。

【0075】
スキャン非同期記憶素子10の信号入力をa,b、出力をcとすると、非同期記憶素子12がC素子、Dラッチ、およびSRラッチのいずれで構成されているかに応じて(a,b,c)が取り得る状態は異なるものの、状態遷移は次の3タイプに分けることができる。第1のタイプは前の値を保持する状態遷移である。第2のタイプは保持値が前の値にフラッシュされる状態遷移である。第3のタイプは保持値が変化する状態遷移である。

【0076】
例えば、非同期記憶素子12をC素子で構成した場合、(a,b,c)は、(0,0,0)、(1,0,0)、(0,1,0)、(1,1,1)、(0,1,1)、および(1,0,1)の6状態のいずれかである。第1のタイプとして(0,0,0)→(0,1,0)、(0,0,0)→(1,0,0)、(1,1,1)→(0,1,1)、および(1,1,1)→(1,0,1)の4つが該当する。第2のタイプとして(0,1,0)→(0,0,0)、(1,0,0)→(0,0,0)、(0,1,1)→(1,1,1)、および(1,0,1)→(1,1,1)の4つが該当する。第3のタイプとして(0,1,0)→(1,1,1)、(1,0,0)→(1,1,1)、(0,1,1)→(0,0,0)、および(1,0,1)→(0,0,0)の4つが該当する。したがって、テスト対象のスキャン非同期記憶素子10についてこれら3タイプの状態遷移をすべて再現されるようにスキャン入力およびSC1,SC2のビットパターンを決定してテストパターンを生成する。このように生成されたテストパターンを用いることでスキャン非同期記憶素子10の記憶機能の完全テストを実施することができる。

【0077】
図12は、非同期記憶素子12をC素子で構成した場合の非同期記憶素子スキャンチェーン100のテストに係るタイミングチャートである。図中のSC1,SC2の値“H1”および“H2”は、それぞれ、スキャン非同期記憶素子10が前の値を保持するときのビットパターン“01”および“10”を表す。まず、SIを“1”にしてSC1,SC2を“L”および“H1”に交互に変化させることで、各スキャン非同期記憶素子10の状態は(1,1,1)→(0,1,1)→(1,1,1)を繰り返し、第1および第2のタイプの状態遷移が再現される。次に、SIを“0”に変えることで、各スキャン非同期記憶素子10において第3のタイプの状態遷移が再現され、その後SC1,SC2を“L”および“H2”に交互に変化させることで、各スキャン非同期記憶素子10の状態は(0,0,0)→(1,0,0)→(0,0,0)を繰り返し、第1および第2のタイプの状態遷移が再現される。各スキャン非同期記憶素子10が正常に動作しているかどうかは、最終段のスキャン非同期記憶素子10からスキャンアウトされるSOを検証することで判定することができる。

【0078】
なお、非同期記憶素子12をDラッチまたはSRラッチで構成した場合についての例示は省略するが、(a,b,c)が取り得る状態、および第1から第3のタイプに該当する状態遷移が非同期記憶素子12をC素子で構成した場合と異なるのみで、基本的には上述した方法でスキャン非同期記憶素子10のテストを行うことができる。

【0079】
<半導体集積回路のテストパターン生成>
図6Bのステップ4後の半導体集積回路に含まれる組み合わせ回路20のテストパターン生成は基本的に次のように行う。なお、テストパターンの生成は、下記の手順をコンピュータに実行させることにより実施することができる。まず、半導体集積回路からスキャン非同期記憶素子10を削除して組み合わせ回路20をそれぞれ独立した入出力を有する部分回路21,22に分割した回路モデルを生成する。当該回路モデルでは、削除されたスキャン非同期記憶素子10の出力が部分回路21,22の疑似外部入力となり、また、削除されたスキャン非同期記憶素子10の入力が部分回路21,22の疑似外部出力となる(図13において破線で描いた要素を除く構成を参照)。次に、回路モデルにおける部分回路21,22のそれぞれについて、ATPGなどを用いて、テストパターンと応答パターンとの間に論理矛盾が生じないように、各故障に対して個別のテストパターンを生成する。なお、応答パターンをキャプチャするスキャン非同期記憶素子10に故障値が伝搬するには、部分回路21,22にそのスキャン非同期記憶素子10を頂点とする疑似出力錐の入力部分についてのテストパターンを印加すれば十分である。したがって、必要最小限の入力部分のみをテストパターンとして採用する。

【0080】
一般に、ATPGは、一つの故障について個別のテストパターンを生成するのではなく複数の故障を同時に検出できるようなテストパターンを生成する。具体的には、ある故障についてテストパターンを生成すると、その故障の検出に不要な入力にランダムな値を与えて故障シミュレーションを行う。その結果、別の故障も同時に検出できることがわかると新たに生成したテストパターンを採用し、当該別の故障に対するテストパターン生成を省略する。このようなルールの下で生成されたテストパターンを用いることで組み合わせ回路20の完全テストを効率的に行うことができる。しかし、L1L2*シングルラッチデザインでは、LSSDラッチにおいてテストパターンを保持するラッチと応答パターンを保持するラッチのペアの間で論理矛盾が生じることがある。すなわち、L1L2*シングルラッチデザインでは、複数故障が検出可能な任意のテストパターンの印加に対して所望の任意の応答パターンがキャプチャできることが保証されていない。

【0081】
そこで、下記の手法でテストパターンを生成するとよい。まず、図13に示したような、部分回路21,22の入出力依存関係をなくした回路モデルを生成する。具体的には、非同期式回路に含まれる各スキャン非同期記憶素子10を、当該スキャン非同期記憶素子10に含まれる非同期記憶素子12を時間展開して得られる時間展開モデルであって当該スキャン非同期記憶素子10の信号入力およびその後段のスキャン非同期記憶素子10の出力に該当する部分回路21または22の信号入力を入力とする時間展開モデル50に置き換えるとともに、部分回路21,22の信号入力を外部入力に、時間展開モデル50の出力を外部出力にそれぞれ置き換えることで、図13の回路モデルを生成することができる。

【0082】
なお、半導体集積回路に透過スキャンラッチ30が含まれている場合、上記回路モデル上では透過スキャンラッチ30を省略し、当該省略した透過スキャンラッチ30の出力に対応する部分回路21,22の信号入力を外部入力に、入力に対応する信号出力を外部出力に置き換えるとよい。

【0083】
図14は、C素子で構成された非同期記憶素子12を有するスキャン非同期記憶素子10に対応する時間展開モデル50を示す。例えば、非同期記憶素子12が図14の左側に示したようなC素子で構成されている場合、スキャン制御論理回路14を省略し、出力Zの帰還閉路(フィードバックパス)121を切断して、図14の右側に示したように、後段のスキャン非同期記憶素子10の出力に該当する部分回路21または22の入力信号122を接続してできる組み合わせ回路が時間展開モデル50に相当する。

【0084】
図15は、Dラッチで構成された非同期記憶素子12を有するスキャン非同期記憶素子10に対応する時間展開モデル50を示す。例えば、非同期記憶素子12が図15の左側に示したようなDラッチで構成されている場合、スキャン制御論理回路14を省略し、出力Zの帰還閉路(フィードバックパス)121を切断して、図15の右側に示したように、後段のスキャン非同期記憶素子10の出力に該当する部分回路21または22の入力信号122を接続してできる組み合わせ回路が時間展開モデル50に相当する。

【0085】
図16は、正論理のSRラッチで構成された非同期記憶素子12を有するスキャン非同期記憶素子10に対応する時間展開モデル50を示す。例えば、非同期記憶素子12が図16の左側に示したような正論理のSRラッチで構成されている場合、スキャン制御論理回路14を省略し、出力Zの帰還閉路(フィードバックパス)121を切断して、図16の右側に示したように、後段のスキャン非同期記憶素子10の出力に該当する部分回路21または22の入力信号122を接続してできる組み合わせ回路が時間展開モデル50に相当する。

【0086】
このように、非同期記憶素子12は時間展開によっていずれも組み合わせ回路に変形される。特に、C素子は時間展開によって多数決関数を実現する組み合わせ回路に変形される。

【0087】
以上のようにして回路モデルが生成できたなら、次は、回路モデルの部分回路21,22のそれぞれについて、複数の故障を同時に検出可能なテストパターンを生成する。

【0088】
時間展開モデル50の出力は、元のスキャン非同期記憶素子10の出力がスキャンインされる後段のスキャン非同期記憶素子10の出力によって制約を受けるため、LSSDラッチにおいてテストパターンを保持するラッチと応答パターンを保持するラッチのペアの間で論理矛盾が生じるようなテストパターンは生成されなくなる。すなわち、上記回路モデルについて生成されたテストパターンでは、LSSDラッチにおいてテストパターンを保持するラッチと応答パターンを保持するラッチのペアの間の論理整合性が保証されている。したがって、L1L2*シングルラッチデザインの非同期式回路に対して、複数の故障を同時に検出可能なテストパターンを論理矛盾なくスキャンインすることができる。

【0089】
なお、上記テストパターン生成はスキャン非同期記憶素子10を備えていない従来のL1L2*シングルラッチデザインの非同期式回路についても適用可能である。従来の非同期式回路の場合、原非同期式回路に含まれる非同期記憶素子ならびにそのフィードパックパスに挿入されたマルチプレクサおよびラッチからなる部分を時間展開モデル50に置き換えればよい。
【産業上の利用可能性】
【0090】
本発明に係るスキャン非同期記憶素子は、非同期式回路のテスト容易化に寄与するものであるため、今後増加が予想されるGALSアーキテクチャを採用した半導体集積回路に有用である。
【符号の説明】
【0091】
10 スキャン非同期記憶素子
12 非同期記憶素子
14 スキャン制御論理回路
141 組み合わせ論理回路
142 マルチプレクサ
143 マルチプレクサ
144 マルチプレクサ
20 組み合わせ回路
21 部分回路(第1の部分回路)
22 部分回路(第2の部分回路)
30 透過スキャンラッチ
40 スキャンラッチ
50 時間展開モデル
図面
【図1】
0
【図2】
1
【図3】
2
【図4】
3
【図5】
4
【図6A】
5
【図6B】
6
【図7】
7
【図8】
8
【図9】
9
【図10】
10
【図11】
11
【図12】
12
【図13】
13
【図14】
14
【図15】
15
【図16】
16