"nを2以上の整数とするn入力の非同期記憶素子と、nビットの信号入力およびスキャン入力から前記非同期記憶素子のn入力を生成するスキャン制御論理回路とを備え、前記スキャン制御論理回路は、与えられた制御信号が第1のビットパターンのときは前記信号入力を、第2のビットパターンのときは前記スキャン入力を、それ以外のときは前記非同期記憶素子が前の値を保持するビットパターンを、それぞれ前記非同期記憶素子のn入力として出力とすることを特徴とするスキャン非同期記憶素子。前記非同期記憶素子は、MullerのC素子であることを特徴とする請求項1のスキャン非同期記憶素子。前記制御信号はnビット信号であり、前記スキャン制御論理回路は、前記制御信号が前記第1および第2のビットパターン以外のときは前記制御信号を出力し、前記第2のビットパターンのときは前記スキャン入力をnビットスキャン入力にして出力する組み合わせ論理回路と、前記信号入力および前記組み合わせ論理回路の出力の各ビットペアがそれぞれ入力され、前記制御信号が前記第1のビットパターンのときは前記信号入力を、それ以外のビットパターンときは前記組み合わせ論理回路の出力を、前記非同期記憶素子の各入力としてそれぞれ出力するn個のマルチプレクサとを有することを特徴とする請求項2のスキャン非同期記憶素子。前記非同期記憶素子は、非対称C素子であることを特徴とする請求項1のスキャン非同期記憶素子。前記非同期記憶素子は、ラッチであることを特徴とする請求項1のスキャン非同期記憶素子。組み合わせ回路と、複数の請求項1のスキャン非同期記憶素子とを備え、前記複数のスキャン非同期記憶素子の信号入力ならびに出力は、前記組み合わせ回路に接続されており、前記複数のスキャン非同期記憶素子は、前段の出力と次段のスキャン入力とが互いに接続されるように、縦続接続されていることを特徴とする半導体集積回路。前記組み合わせ回路は、一方の出力が前記スキャン非同期記憶素子を介して他方の入力となる第1および第2の部分回路から構成されており、奇数段目のスキャン非同期記憶素子は、互いに共通の第1の制御信号で制御され、かつ、当該スキャン非同期記憶素子の信号入力は前記第1の部分回路に接続され、当該スキャン非同期記憶素子の出力は前記第2の部分回路に接続されており、偶数段目のスキャン非同期記憶素子は、互いに共通の第2の制御信号で制御され、かつ、当該スキャン非同期記憶素子の信号入力は前記第2の部分回路に接続され、当該スキャン非同期記憶素子の出力は前記第1の部分回路に接続されていることを特徴とする請求項6の半導体集積回路。請求項7の半導体集積回路の設計方法において、原非同期式回路に含まれる非同期記憶素子を前記スキャン非同期記憶素子に置き換える第1のステップと、前記スキャン非同期記憶素子を第1および第2のラッチにグループ分けして、前記原非同期式回路に含まれる組み合わせ回路を前記第1および第2の部分回路に分割する第2のステップと、前記第1および第2のラッチの間の入出力の依存関係を特定する第3のステップと、入出力の依存関係がない前記第1および第2のラッチを交互に、かつ、前段の出力と次段のスキャン入力とを互いに接続する第4のステップとを備えていることを特徴とする半導体集積回路の設計方法。前記第2のステップにおいて、前記スキャン非同期記憶素子だけでは前記原非同期式回路の組み合わせ回路を前記第1および第2の部分回路に完全に分割できない場合、前記スキャン非同期記憶素子と共通の制御信号で動作し、前記制御信号が前記第1のビットパターンのときは信号入力を、前記第2のビットパターンのときはスキャン入力を、それぞれ出力し、それ以外のときは前の値を保持する透過スキャンラッチを、前記第1および第2の部分回路の間に挿入することを特徴とする請求項8の半導体集積回路の設計方法。前記第4のステップにおいて、入出力の依存関係がない第1および第2のラッチのペアが見つからない場合、前記スキャン非同期記憶素子と共通の制御信号で動作し、前記制御信号が前記第2のビットパターンのときはスキャン入力を出力し、前記制御信号が前記第1および第2のビットパターン以外のときは前の値を保持するスキャンラッチを前記第1または第2のラッチのペアとして挿入することを特徴とする請求項8の半導体集積回路の設計方法。請求項6の半導体集積回路に含まれる組み合わせ回路のテストのためのテストパターン生成方法において、前記組み合わせ回路に印加すべき基本テストパターンを生成するステップと、前記基本テストパターンに対する前記組み合わせ回路の応答パターンの期待値である期待応答パターンを算出するステップと、テストパターンの一部として、前記期待応答パターンに基づいて、前記基本テストパターンに対する前記組み合わせ回路の応答パターンをキャプチャするときにおける、当該応答パターンをキャプチャするスキャン非同期記憶素子の保持動作に係る前記制御信号のビットパターンを決定するステップとを備えていることを特徴とするテストパターン生成方法。テストパターンの一部として、前記期待応答パターンに基づいて、前記基本テストパターンを前記組み合わせ回路に印加した際に当該基本テストパターンの検出対象故障により生じる誤りを含む応答パターンを当該誤りを失うことなくキャプチャするためのキャプチャパターンを生成するステップを備えていることを特徴とする請求項11のテストパターン生成方法。テストパターンの一部として、前記期待応答パターンに基づいて、前記複数のスキャン非同期記憶素子への前記基本テストパターンのスキャンイン後かつ前記基本テストパターンに対する前記組み合わせ回路の応答パターンのキャプチャ前における、前記組み合わせ回路の応答パターンをキャプチャするスキャン非同期記憶素子の保持動作に係る前記制御信号のビットパターンを決定するステップを備えていることを特徴とする請求項11のテストパターン生成方法。請求項7の半導体集積回路に含まれる組み合わせ回路のテストのためのテストパターン生成方法において、前記複数のスキャン非同期記憶素子を、それぞれ、当該スキャン非同期記憶素子に含まれる非同期記憶素子を時間展開して得られる時間展開モデルであって当該スキャン非同期記憶素子の信号入力および当該スキャン非同期記憶素子の後段のスキャン非同期記憶素子の出力に該当する前記組み合わせ回路の信号入力を入力とする時間展開モデルに置き換えるとともに、前記第1および第2の部分回路の信号入力を外部入力に、前記時間展開モデルの出力を外部出力にそれぞれ置き換えた回路モデルを生成するステップと、前記回路モデルにおける前記第1および第2の部分回路のそれぞれについてテストパターンを生成するステップとを備えていることを特徴とするテストパターン生成方法。請求項6の半導体集積回路に含まれるスキャン非同期記憶素子のテストのためのテストパターン生成方法において、テスト対象のスキャン非同期記憶素子が前の値を保持する第1の状態遷移、保持値が前の値にフラッシュされる第2の状態遷移、および保持値が変化する第3の状態遷移がすべて再現されるように、当該テスト対象のスキャン非同期記憶素子のスキャン入力および制御信号のビットパターンを決定するステップを備えていることを特徴とするテストパターン生成方法。上述したように、非同期式回路のテスト容易化にスキャン方式を応用するとシフトレジスタの追加が必要となり、面積および遅延オーバーヘッドが増大してしまう。それを解決するためにL1L2シングルラッチデザインを採用した場合、L1ラッチとL2ラッチ間の入出力の依存関係があると任意のテストパターンの印加および観測が保証できなくなってしまう。すなわち、L1L2シングルラッチデザインでは非同期式回路の完全テストができないおそれがある。特に特許文献1に開示された非同期式回路ではフィードバックパスの外にラッチが配置されているため、スキャンイン/アウトの際のマルチプレクサの状態によっては1ラッチしか介在しない信号ループが非同期式回路中に構成されると回路が発振するおそれがある。また、従来のいずれの手法も、非同期式回路に元々備わっている非同期記憶素子にテストパターンを記憶するのではなく、追加挿入したフリップフロップまたはラッチでテストパターンおよび非同期式回路の応答パターンを記憶している。したがって、テストパターンおよび応答パターンのスキャンイン/アウトだけではMullerのC素子などの非同期記憶素子のテストができない。すなわち、非同期記憶素子のテストが不完全である。上記問題に鑑み、本発明は、非同期式回路のテスト容易化に好適な改良型の非同期記憶素子以下、スキャン非同期記憶素子と称する。を提供することを課題とする。さらに、そのようなスキャン非同期記憶素子を備えたテスト容易化設計された半導体集積回路、ならびにそのような半導体集積回路の設計方法およびテストパターン生成方法を提供することを課題とする。例えば、スキャン非同期記憶素子は、nを2以上の整数とするn入力の非同期記憶素子と、nビットの信号入力およびスキャン入力から非同期記憶素子のn入力を生成するスキャン制御論理回路とを備えている。スキャン制御論理回路は、与えられた制御信号が第1のビットパターンのときは信号入力を、第2のビットパターンのときはスキャン入力を、それ以外のときは非同期記憶素子が前の値を保持するビットパターンを、それぞれ非同期記憶素子のn入力として出力とする。ここでいう非同期記憶素子とは、MullerのC素子、非対称C素子、ラッチなど非同期式回路において記憶素子として用いられるもの全般を意味する。また、半導体集積回路は、組み合わせ回路と複数の上記のスキャン非同期記憶素子とを備えている。複数のスキャン非同期記憶素子の信号入力ならびに出力は、組み合わせ回路に接続されている。そして、複数のスキャン非同期記憶素子は、前段の出力と次段のスキャン入力とが互いに接続されるように、縦続接続されている。具体的には、上記半導体集積回路において、組み合わせ回路は、一方の出力がスキャン非同期記憶素子を介して他方の入力となる第1および第2の部分回路から構成されている。そして、奇数段目のスキャン非同期記憶素子は、互いに共通の第1の制御信号で制御され、かつ、当該スキャン非同期記憶素子の信号入力は第1の部分回路に接続され、当該スキャン非同期記憶素子の出力は第2の部分回路に接続されている。同様に、偶数段目のスキャン非同期記憶素子は、互いに共通の第2の制御信号で制御され、かつ、当該スキャン非同期記憶素子の信号入力は第2の部分回路に接続され、当該スキャン非同期記憶素子の出力は第1の部分回路に接続されている。また、上記半導体集積回路の設計方法は、原非同期式回路に含まれる非同期記憶素子をスキャン非同期記憶素子に置き換える第1のステップと、スキャン非同期記憶素子を第1および第2のラッチにグループ分けして、原非同期式回路に含まれる組み合わせ回路を第1および第2の部分回路に分割する第2のステップと、第1および第2のラッチの間の入出力の依存関係を特定する第3のステップと、入出力の依存関係がない第1および第2のラッチを交互に、かつ、前段の出力と次段のスキャン入力とを互いに接続する第4のステップとを備えている。また、上記半導体集積回路に含まれる組み合わせ回路のテストのためのテストパターン生成方法は、組み合わせ回路に印加すべき基本テストパターンを生成するステップと、基本テストパターンに対する組み合わせ回路の応答パターンの期待値である期待応答パターンを算出するステップと、テストパターンの一部として、期待応答パターンに基づいて、基本テストパターンに対する組み合わせ回路の応答パターンをキャプチャするときにおける、当該応答パターンをキャプチャするスキャン非同期記憶素子の保持動作に係る制御信号のビットパターンを決定するステップとを備えている。上記テストパターン生成方法は、テストパターンの一部として、期待応答パターンに基づいて、基本テストパターンを組み合わせ回路に印加した際に当該基本テストパターンの検出対象故障により生じる誤りを含む応答パターンを当該誤りを失うことなくキャプチャするためのキャプチャパターンを生成するステップを備えていることが好ましい。また、上記テストパターン生成方法は、テストパターンの一部として、期待応答パターンに基づいて、複数のスキャン非同期記憶素子への基本テストパターンのスキャンイン後かつ基本テストパターンに対する組み合わせ回路の応答パターンのキャプチャ前における、組み合わせ回路の応答パターンをキャプチャするスキャン非同期記憶素子の保持動作に係る制御信号のビットパターンを決定するステップを備えていることが好ましい。また、上記半導体集積回路に含まれる組み合わせ回路のテストのためのテストパターン生成方法は、複数のスキャン非同期記憶素子を、それぞれ、当該スキャン非同期記憶素子に含まれる非同期記憶素子を時間展開して得られる時間展開モデルであって当該スキャン非同期記憶素子の信号入力およびその後段のスキャン非同期記憶素子の出力に該当する組み合わせ回路の信号入力を入力とする時間展開モデルに置き換えるとともに、第1および第2の部分回路の信号入力を外部入力に、時間展開モデルの出力を外部出力にそれぞれ置き換えた回路モデルを生成するステップと、回路モデルにおける第1および第2の部分回路のそれぞれについてテストパターンを生成するステップとを備えている。また、上記半導体集積回路に含まれるスキャン非同期記憶素子のテストのためのテストパターン生成方法は、テスト対象のスキャン非同期記憶素子が前の値を保持する第1の状態遷移、保持値が前の値にフラッシュされる第2の状態遷移、および保持値が変化する第3の状態遷移がすべて再現されるように、当該テスト対象のスキャン非同期記憶素子のスキャン入力および制御信号のビットパターンを決定するステップを備えている。本発明によると、完全テストが可能な非同期式回路を、小さな面積オーバーヘッドおよび遅延オーバーヘッドで構成することができる。また、スキャンテストによってMullerのC素子、非対称C素子、ラッチなどの非同期記憶機能について完全テストが可能となる。スキャン非同期記憶素子の実施形態図1は、本発明の一実施形態に係るスキャン非同期記憶素子の構成を示す。本実施形態に係るスキャン非同期記憶素子10は、非同期記憶素子AM:AsynchronousMemoryelement12およびその入力側に接続されたスキャン制御論理回路SCL14で構成することができる。非同期記憶素子12は、同期クロック信号を持たず、他の記憶素子とは独立に入力信号を記憶する素子である。例えば、非同期記憶素子12は入力a,bとフィードバックされた出力Zの3入力の多数決を演算する多数決関数で実現されるC素子で構成することができる。非同期記憶素子12をC素子で構成した場合、入力a,bが11になると出力が1に、00になると出力が0に遷移する。入力a,bが01または10の場合には前の値を保持する表1参照。非同期記憶素子12はDラッチで構成することもできる。例えば、非同期記憶素子12を、入力aをデータ入力、入力bをストローブパルス入力とするDラッチで構成した場合、入力bが1である間は入力aがそのまま出力され、入力bが0である間は非同期記憶素子12は前の値を保持する表2参照。非同期記憶素子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参照。なお、非同期記憶素子12をラッチで構成した場合、非同期記憶素子12は出力Zの反転も出力することがある。スキャン制御論理回路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として出力する。例えば、非同期記憶素子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はドントケアである。また、例えば、非同期記憶素子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を出力するといったように、互いに異なるビットパターンを出力することが望ましい。また、例えば、非同期記憶素子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参照。以上のように本実施形態に係るスキャン非同期記憶素子は、一般的な非同期記憶素子12に2つのマルチプレクサ142,143と簡単な回路構成のスキャン制御論理回路14を追加するだけで構成することができるため、面積オーバーヘッドは比較的小さい。また、信号パスに挿入されるのはマルチプレクサ142または143の1段だけであるから遅延オーバーヘッドを最小にすることができる。さらに、非同期記憶素子12自体でスキャン入力を記憶するため、後述するようにスキャンテストによって非同期記憶素子12の記憶機能について完全テストが可能である。また、後述するように、内部のレースを考慮してSCのビットパターンを決定することにより、レースのない制御が可能となる。なお、スキャン制御論理回路14は上記構成に限定されない。表4、表5、および表6に示した入出力が実現できるのであれば別構成であってもよい。また、非同期記憶素子12がセット機能またはリセット機能を有する場合、SEが1のときにセットまたはリセットが働かないようにするために、図2に示したように、SEとセット信号またはリセット信号RDとの論理演算を行う組み合わせ回路17を追加して、組み合わせ回路17の出力をセット信号またはリセット信号rdとして非同期記憶素子12に与えればよい。また、非同期記憶素子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ビット以下にすることもできる。さらに、非同期記憶素子12は2入力以上の非対称C素子であってもよい。非対称C素子では信号入力の全ビットが1または0にならなくても出力が1または0に遷移する。この場合もスキャン非同期記憶素子10に含まれるマルチプレクサの個数はn個となり、スキャン制御論理回路14はnビットのSCに応じてnビットスキャン入力を生成する。ただし、MullerのC素子の場合と違って、スキャン非同期記憶素子10が前の値を保持するためのnビットスキャン入力はSCにかかわらず特定のビットパターンにする必要がある。半導体集積回路の実施形態図4は、本発明の一実施形態に係る半導体集積回路の構成を示す。本実施形態に係る半導体集積回路は、信号入力PIから信号出力POを生成する組み合わせ回路CC20と複数のスキャン非同期記憶素子SAM:ScanAsynchronousMemoryelement10とを備えている。各スキャン非同期記憶素子10の信号入力A,Bおよび出力Zは組み合わせ回路20に接続されている。ここで、組み合わせ回路20はフィードバックパスを有しておらず、各スキャン非同期記憶素子10を記憶素子として使用するものとする。なお、組み合わせ回路20は後述するテストを実施する際にフィードパックパスを有していない組み合わせ回路とみなすことができればよいので、これを実現する機構を備えた非同期式回路であってもよい。各スキャン非同期記憶素子10は、前段の出力と次段のスキャン入力が互いに接続されるように縦続接続されて図5参照、非同期記憶素子スキャンチェーン100を構成している。非同期記憶素子スキャンチェーン100は、初段のスキャン非同期記憶素子10のスキャン入力SIを後段の各スキャン非同期記憶素子10にスキャンシフトすることができる。また、各スキャン非同期記憶素子10が保持する値をスキャンシフトして最終段のスキャン非同期記憶素子10からスキャン出力SOとして取り出すことができる。非同期記憶素子スキャンチェーン100において、奇数段目のスキャン非同期記憶素子10は制御信号SC1で制御され、偶数段目のスキャン非同期記憶素子10は制御信号SC2で制御される。すなわち、互いに隣接する2つのスキャン非同期記憶素子10でLSSDラッチが構成されている。したがって、本実施形態に係る半導体集積回路は、各スキャン非同期記憶素子10による遅延オーバーヘッドの低減効果に加えて、L1L2シングルラッチデザインを適用することで面積オーバーヘッドも最小化することができる。なお、LSSDダブルラッチデザインやLSSDシングルラッチデザインを適用することも可能である。なお、上述したようにスキャン非同期記憶素子10の信号入力は2ビットに限定されない。また、非同期記憶素子スキャンチェーン100を構成するスキャン非同期記憶素子10は4個に限定されない。5個以上のスキャン非同期記憶素子10についてSC1で制御されるものとSC2で制御されるものを交互に接続して非同期記憶素子スキャンチェーン100を構成してもよい。<半導体集積回路の設計>次に、本実施形態に係る半導体集積回路の設計について、図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に接続されている。なお、スキャン非同期記憶素子10だけでは組み合わせ回路20を完全に分割できない場合には、透過スキャンラッチTSL30をL1ラッチまたはL2ラッチとして部分回路21,22間に適宜挿入してもよい。図7は、透過スキャンラッチ30の一構成例を示す。透過スキャンラッチ30は、組み合わせ論理回路32、マルチプレクサ34、およびラッチ36で構成することができる。組み合わせ論理回路32は、スキャン非同期記憶素子10と同じ制御信号SCのビットパターンに応じて、スキャンイネーブル信号SEおよびロードイネーブル信号LEを出力する。マルチプレクサ34は、SEに応じて信号入力Aおよびスキャン入力SIのいずれか一方を出力する。ラッチ36は、LEに応じてマルチプレクサ34の出力をラッチする。例えば、SCが00のとき、透過スキャンラッチ30はAをそのまま出力する。この場合、透過スキャンラッチ30は単なる信号線として動作する。SCが11のとき、透過スキャンラッチ30はSIを出力する。SCが01または10のとき、透過スキャンラッチ30は前の値を保持する表7参照。組み合わせ回路20が分割できたなら、後はL1ラッチおよびL2ラッチを交互に接続して非同期記憶素子スキャンチェーンを構成すればよいのだが、ここで故障検出可能性を考慮する必要がある。例えば、非同期記憶素子12をC素子で構成した場合においてスキャン非同期記憶素子10に00が入力されるべきところが故障により01が入力された場合にはスキャン非同期記憶素子10は前の値を保持する。ここで、スキャン非同期記憶素子10の前の値が0であったなら正常値および故障値のいずれが入力されても出力は0を保持するため故障が検出できない。これに対して、前の値を1にしておけば、正常値00が入力されたなら出力は0に遷移し、故障値01が入力されたなら出力は1を保持するため、故障を検出することができる。非同期記憶素子12をC素子で構成した場合のスキャン非同期記憶素子10の入出力と故障検出可能性の関係は表8の通りである。なお、この関係はMullerのC素子などについても当てはまる。また、例えば、非同期記憶素子12を、入力aをデータ入力、入力bをストローブパルス入力とするDラッチで構成した場合においてスキャン非同期記憶素子10に00が入力されるべきところが故障により01が入力された場合にはスキャン非同期記憶素子10の出力は0に遷移する。ここで、スキャン非同期記憶素子10の前の値が0であったなら正常値および故障値のいずれが入力されても出力は0のまま変わらないため故障が検出できない。これに対して、前の値を1にしておけば、正常値00が入力されたなら出力は1を保持し、故障値01が入力されたなら出力は0に遷移するため、故障を検出することができる。非同期記憶素子12を、入力aをデータ入力、入力bをストローブパルス入力とするDラッチで構成した場合のスキャン非同期記憶素子10の入出力と故障検出可能性の関係は表9の通りである。また、例えば、非同期記憶素子12を、入力aをセット入力、入力bをリセット入力とする正論理のSRラッチで構成した場合においてスキャン非同期記憶素子10に00が入力されるべきところが故障により01が入力された場合にはスキャン非同期記憶素子10の出力は0に遷移する。ここで、スキャン非同期記憶素子10の前の値が0であったなら正常値および故障値のいずれが入力されても出力は0のまま変わらないため故障が検出できない。これに対して、前の値を1にしておけば、正常値00が入力されたなら出力は1を保持し、故障値01が入力されたなら出力は0に遷移するため、故障を検出することができる。非同期記憶素子12を、入力aをセット入力、入力bをリセット入力とする正論理のSRラッチで構成した場合のスキャン非同期記憶素子10の入出力と故障検出可能性の関係は表10の通りである。したがって、スキャン非同期記憶素子10の故障検出可能性を考慮すると、L1ラッチおよびL2ラッチのペアからなる各LSSDラッチは互いに影響を与えないテストパターンの保持およびそれに対する応答パターンの保持ができなければならない。そこで、下記のステップに従って非同期記憶素子スキャンチェーンを構成することでテストパターンと応答パターンの相互独立性を保証する。図6Bに移り、組み合わせ回路20が部分回路21,22に分割できたなら、次にステップ3として、各スキャン非同期記憶素子10および各透過スキャンラッチ30について、L1ラッチおよびL2ラッチの間の入出力の依存関係を特定する。具体的には、各スキャン非同期記憶素子10および透過スキャンラッチ30について、それを頂点としてその入力に繋がる他グループに属するスキャン非同期記憶素子10および透過スキャンラッチ30の出力の集合である疑似出力錐を特定する。図中に示したように、任意のL1ラッチおよびL2ラッチについて、一方を頂点とする疑似出力錐の入力部分に他方の出力が含まれていなければ、それら2つのラッチに入出力の依存関係はないと言える。L1ラッチおよびL2ラッチの間の入出力の依存関係が特定できたなら、次にステップ4として、入出力の依存関係がないL1ラッチおよびL2ラッチを交互に、かつ、前段の出力と後段のスキャン入力とを互いに接続して、非同期記憶素子スキャンチェーン100を構成する。疑似出力錐の入力部分が大きいほど入出力の依存関係がないL1ラッチおよびL2ラッチのペアを見つけにくいため、疑似出力錐の入力部分が大きなものから優先的に選択して接続していけばよい。しかし、入出力の依存関係がないL1ラッチおよびL2ラッチのペアがまったく見つからないこともある。その場合には、スキャンラッチSL40をL1ラッチまたはL2ラッチのペアの代用として挿入するとよい。図8は、スキャンラッチ40の一構成例を示す。スキャンラッチ40は、組み合わせ論理回路42およびラッチ44で構成することができる。組み合わせ論理回路42は、スキャン非同期記憶素子10と同じ制御信号SCのビットパターンに応じて、ロードイネーブル信号LEを出力する。ラッチ44、LEに応じてスキャン入力SIをラッチする。スキャンラッチ40には信号入力はない。例えば、SCが00のとき、スキャンラッチ40はドントケアとなる。SCが11のとき、スキャンラッチ40はSIを出力する。SCが01または10のとき、スキャンラッチ40は前の値を保持する表11参照。以上のように、本設計方法によると、特にステップ3およびステップ4によって、入出力の依存関係がないL1ラッチおよびL2ラッチのペアでLSSDラッチが構成される。これにより、テストパターンと応答パターンの相互独立性が保証され、組み合わせ回路20の完全な故障検出が可能となる。なお、上記設計手法はスキャン非同期記憶素子10を備えていない従来の非同期式回路についても適用可能である。従来の非同期式回路の場合、原非同期式回路に含まれるC素子などの非同期記憶素子をスキャン非同期記憶素子に置き換えるステップ1に代えて、例えば、C素子のフィードパックパス中にマルチプレクサおよびラッチを挿入してL1L2シングルラッチデザインの非同期式回路に変形すればよい。<半導体集積回路のテスト>次に、半導体集積回路に含まれる組み合わせ回路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キャプチャと称するする。図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シフトの動作となる。図10は、L1キャプチャのタイミングチャートである。図に示したSC1の値Nは、組み合わせ回路20からスキャン非同期記憶素子10にA,Bが入力されるときのビットパターン00を表す。SC2をHにしたままでSC1をN→Hに変化させることで、L1ラッチは組み合わせ回路20の応答パターンr2およびr1をキャプチャする。L2キャプチャの説明は省略するが、基本的にはL1キャプチャにおけるSC1,SC2を入れ替えたものがL2キャプチャの動作となる。ここで、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を制御すべきである。また、例えば、非同期記憶素子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を制御すべきである。すなわち、スキャン非同期記憶素子10の保持動作に係るSC1のビットパターンは組み合わせ回路20の期待応答パターンに応じて決定すべきである。SC2についても同様のことが言える。なお、図11に示したように、L1L2シフトにおいて、テストパターンのスキャンイン後かつ組み合わせ回路20の応答パターンのキャプチャ前にSC1をLにすることで、その直前のHのビットパターンについての制約がなくなる。これは、組み合わせ回路20の応答パターンのキャプチャ前にSC1がLになると、L1ラッチに前段のL2ラッチの出力がスキャン入力されてL1ラッチは前の値を保持し続けるため、レースによる保持値の変化が発生しなくなるからである。ただし、SC1がLからNに、すなわち、11から00に変化するため、変化の途中で一時的にSC1は01または10となるとスキャン非同期記憶素子10をHで制御したのと同じ効果を生じるので、この点に注意が必要である。L2L1シフトについても同様のことが言える。以上のことを踏まえて、組み合わせ回路20のテストパターンは次のような手順で生成することができる。なお、テストパターンの生成は、下記の手順をコンピュータに実行させることにより実施することができる。まず、自動テストパターン生成ツールATPGなどを用いて組み合わせ回路20に印加すべき基本テストパターンを生成する。そして、シミュレーションにより当該基本テストパターンに対する組み合わせ回路20の期待応答パターンを算出する。期待応答パターンが得られたなら、その値に基づいて、上記のレースが発生するタイミングにおけるスキャン非同期記憶素子10の保持動作に係るSC1,SC2のビットパターンを決定する。そして、ATPGで生成した基本テストパターンにSC1,SC1のビットパターンを付加して、最終的なテストパターンを得る。なお、L1L2シングルラッチデザインの場合、部分回路21,22のそれぞれについて基本テストパターンを生成し、期待応答パターンを算出する必要がある。組み合わせ回路20の故障を完全に検出するには、テストパターンのスキャンインが完了したときの各スキャン非同期記憶素子10の保持値が、組み合わせ回路20の応答パターンに応じた値となっている必要がある表8、表9、および表10参照。したがって、故障シミュレーションなどによって算出された期待応答パターンに基づいて、基本テストパターンを組み合わせ回路20に印加した際に検出対象とする誤りを含む応答パターンをその誤りを失うことなくキャプチャするためのキャプチャパターンを生成し、それをテストパターンの一部として用いることが好ましい。<スキャン非同期記憶素子のテスト>次に、スキャン非同期記憶素子10のテストについて説明する。スキャン非同期記憶素子10に含まれる非同期記憶素子12は、通常時には組み合わせ回路20の記憶素子として使用され、テスト時にはラッチとして使用される。したがって、図5の非同期記憶素子スキャンチェーン100のSIに適当なテストパターンを印加してそれをスキャンシフトして取り出したSOを検証することで、スキャン非同期記憶素子10の記憶機能のテストを行うことができる。さらに、印加するテストパターンを工夫することで記憶機能の完全テストが可能となる。スキャン非同期記憶素子10の信号入力をa,b、出力をcとすると、非同期記憶素子12がC素子、Dラッチ、およびSRラッチのいずれで構成されているかに応じてa,b,cが取り得る状態は異なるものの、状態遷移は次の3タイプに分けることができる。第1のタイプは前の値を保持する状態遷移である。第2のタイプは保持値が前の値にフラッシュされる状態遷移である。第3のタイプは保持値が変化する状態遷移である。例えば、非同期記憶素子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の記憶機能の完全テストを実施することができる。図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を検証することで判定することができる。なお、非同期記憶素子12をDラッチまたはSRラッチで構成した場合についての例示は省略するが、a,b,cが取り得る状態、および第1から第3のタイプに該当する状態遷移が非同期記憶素子12をC素子で構成した場合と異なるのみで、基本的には上述した方法でスキャン非同期記憶素子10のテストを行うことができる。<半導体集積回路のテストパターン生成>図6Bのステップ4後の半導体集積回路に含まれる組み合わせ回路20のテストパターン生成は基本的に次のように行う。なお、テストパターンの生成は、下記の手順をコンピュータに実行させることにより実施することができる。まず、半導体集積回路からスキャン非同期記憶素子10を削除して組み合わせ回路20をそれぞれ独立した入出力を有する部分回路21,22に分割した回路モデルを生成する。当該回路モデルでは、削除されたスキャン非同期記憶素子10の出力が部分回路21,22の疑似外部入力となり、また、削除されたスキャン非同期記憶素子10の入力が部分回路21,22の疑似外部出力となる図13において破線で描いた要素を除く構成を参照。次に、回路モデルにおける部分回路21,22のそれぞれについて、ATPGなどを用いて、テストパターンと応答パターンとの間に論理矛盾が生じないように、各故障に対して個別のテストパターンを生成する。なお、応答パターンをキャプチャするスキャン非同期記憶素子10に故障値が伝搬するには、部分回路21,22にそのスキャン非同期記憶素子10を頂点とする疑似出力錐の入力部分についてのテストパターンを印加すれば十分である。したがって、必要最小限の入力部分のみをテストパターンとして採用する。一般に、ATPGは、一つの故障について個別のテストパターンを生成するのではなく複数の故障を同時に検出できるようなテストパターンを生成する。具体的には、ある故障についてテストパターンを生成すると、その故障の検出に不要な入力にランダムな値を与えて故障シミュレーションを行う。その結果、別の故障も同時に検出できることがわかると新たに生成したテストパターンを採用し、当該別の故障に対するテストパターン生成を省略する。このようなルールの下で生成されたテストパターンを用いることで組み合わせ回路20の完全テストを効率的に行うことができる。しかし、L1L2シングルラッチデザインでは、LSSDラッチにおいてテストパターンを保持するラッチと応答パターンを保持するラッチのペアの間で論理矛盾が生じることがある。すなわち、L1L2シングルラッチデザインでは、複数故障が検出可能な任意のテストパターンの印加に対して所望の任意の応答パターンがキャプチャできることが保証されていない。そこで、下記の手法でテストパターンを生成するとよい。まず、図13に示したような、部分回路21,22の入出力依存関係をなくした回路モデルを生成する。具体的には、非同期式回路に含まれる各スキャン非同期記憶素子10を、当該スキャン非同期記憶素子10に含まれる非同期記憶素子12を時間展開して得られる時間展開モデルであって当該スキャン非同期記憶素子10の信号入力およびその後段のスキャン非同期記憶素子10の出力に該当する部分回路21または22の信号入力を入力とする時間展開モデル50に置き換えるとともに、部分回路21,22の信号入力を外部入力に、時間展開モデル50の出力を外部出力にそれぞれ置き換えることで、図13の回路モデルを生成することができる。なお、半導体集積回路に透過スキャンラッチ30が含まれている場合、上記回路モデル上では透過スキャンラッチ30を省略し、当該省略した透過スキャンラッチ30の出力に対応する部分回路21,22の信号入力を外部入力に、入力に対応する信号出力を外部出力に置き換えるとよい。図14は、C素子で構成された非同期記憶素子12を有するスキャン非同期記憶素子10に対応する時間展開モデル50を示す。例えば、非同期記憶素子12が図14の左側に示したようなC素子で構成されている場合、スキャン制御論理回路14を省略し、出力Zの帰還閉路フィードバックパス121を切断して、図14の右側に示したように、後段のスキャン非同期記憶素子10の出力に該当する部分回路21または22の入力信号122を接続してできる組み合わせ回路が時間展開モデル50に相当する。図15は、Dラッチで構成された非同期記憶素子12を有するスキャン非同期記憶素子10に対応する時間展開モデル50を示す。例えば、非同期記憶素子12が図15の左側に示したようなDラッチで構成されている場合、スキャン制御論理回路14を省略し、出力Zの帰還閉路フィードバックパス121を切断して、図15の右側に示したように、後段のスキャン非同期記憶素子10の出力に該当する部分回路21または22の入力信号122を接続してできる組み合わせ回路が時間展開モデル50に相当する。図16は、正論理のSRラッチで構成された非同期記憶素子12を有するスキャン非同期記憶素子10に対応する時間展開モデル50を示す。例えば、非同期記憶素子12が図16の左側に示したような正論理のSRラッチで構成されている場合、スキャン制御論理回路14を省略し、出力Zの帰還閉路フィードバックパス121を切断して、図16の右側に示したように、後段のスキャン非同期記憶素子10の出力に該当する部分回路21または22の入力信号122を接続してできる組み合わせ回路が時間展開モデル50に相当する。このように、非同期記憶素子12は時間展開によっていずれも組み合わせ回路に変形される。特に、C素子は時間展開によって多数決関数を実現する組み合わせ回路に変形される。以上のようにして回路モデルが生成できたなら、次は、回路モデルの部分回路21,22のそれぞれについて、複数の故障を同時に検出可能なテストパターンを生成する。時間展開モデル50の出力は、元のスキャン非同期記憶素子10の出力がスキャンインされる後段のスキャン非同期記憶素子10の出力によって制約を受けるため、LSSDラッチにおいてテストパターンを保持するラッチと応答パターンを保持するラッチのペアの間で論理矛盾が生じるようなテストパターンは生成されなくなる。すなわち、上記回路モデルについて生成されたテストパターンでは、LSSDラッチにおいてテストパターンを保持するラッチと応答パターンを保持するラッチのペアの間の論理整合性が保証されている。したがって、L1L2シングルラッチデザインの非同期式回路に対して、複数の故障を同時に検出可能なテストパターンを論理矛盾なくスキャンインすることができる。なお、上記テストパターン生成はスキャン非同期記憶素子10を備えていない従来のL1L2シングルラッチデザインの非同期式回路についても適用可能である。従来の非同期式回路の場合、原非同期式回路に含まれる非同期記憶素子ならびにそのフィードパックパスに挿入されたマルチプレクサおよびラッチからなる部分を時間展開モデル50に置き換えればよい。"