(57)【要約】【課題】スキャンチェーンの接続試験の計算時間を短縮する。【解決手段】処理部１２は、回路情報１１ａと試験パターン情報１１ｂとを記憶部１１から取得する。処理部１２は、回路情報１１ａに基づいて、クロック源２１から、スキャンチェーン２３に含まれ直列に接続された記憶素子２３ａ１〜２３ａｎのそれぞれにクロック信号ＣＫが到達するまでに生じる遅延時間を算出する。そして処理部１２は、クロック信号ＣＫのサイクルごとに、試験パターン情報１１ｂに基づいて、記憶素子２３ａ１〜２３ａｎのうちシフト動作により出力値が変化する予定の記憶素子２３ａｉ〜２３ａｌを選択する処理と、記憶素子２３ａｉ〜２３ａｌについて算出された遅延時間（たとえば、遅延時間ｄ１，ｄ２）、クロック信号ＣＫを遅延させたクロック信号（たとえば、クロック信号ＣＫａ，ＣＫｂ）を記憶素子２３ａｉ〜２３ａｌに供給したときの出力値を算出する処理と、を行う。【選択図】図１
2018197969.tif 000002
【特許請求の範囲】
【請求項１】
スキャンチェーンを有する半導体装置に含まれる回路要素の接続先と前記回路要素により生じる伝搬遅延とに関する情報を含む回路情報と、クロック源が出力する第１のクロック信号のサイクルごとに前記スキャンチェーンのスキャンイン端子から入力する試験値を示す試験パターン情報とを記憶する記憶部と、
前記回路情報と前記試験パターン情報とを前記記憶部から取得し、前記回路情報に基づいて、前記クロック源から、前記スキャンチェーンに含まれ直列に接続された複数の記憶素子のそれぞれに前記第１のクロック信号が到達するまでに生じる遅延時間を算出し、前記サイクルごとに、前記試験パターン情報に基づいて、前記複数の記憶素子のうちシフト動作により第１の出力値が変化する予定の第１の記憶素子を選択する第１の処理と、前記複数の記憶素子のそれぞれについて算出された前記遅延時間のうち、前記第１の記憶素子について算出された第１の遅延時間、前記第１のクロック信号を遅延させた第２のクロック信号を前記第１の記憶素子に供給したときの前記第１の記憶素子の前記第１の出力値を算出する第２の処理と、を行う処理部と、
を有する半導体装置の設計検証支援装置。
【請求項２】
前記処理部は、前記第２の処理によって前記スキャンチェーンのスキャンアウト端子から出力されるスキャンアウト値と、前記スキャンアウト値の期待値とを比較した比較結果に基づいて、第１のエラーの発生の有無を検出する、
請求項１に記載の半導体装置の設計検証支援装置。
【請求項３】
前記処理部は、前記複数の記憶素子のそれぞれに前記第１のクロック信号が到達したときの、前記第１のクロック信号の信号極性を計算し、前記信号極性をもつ前記第２のクロック信号を前記第１の記憶素子に供給したときの前記第１の記憶素子の前記第１の出力値を算出する、
請求項１または２に記載の半導体装置の設計検証支援装置。
【請求項４】
前記処理部は、
前記第１のクロック信号を前記複数の記憶素子のそれぞれのクロック端子に伝搬するクロックツリー内に含まれ、前記第１のクロック信号の前記クロック端子への伝搬を制御するクロック制御回路を前記回路情報から検出し、
前記第２の処理の際に、前記クロック制御回路が前記第１のクロック信号の前記クロック端子への伝搬を止める状態に変化したか否かを判定した判定結果に基づいて、第２のエラーの発生の有無を検出する、
請求項１乃至３の何れか一項に記載の半導体装置の設計検証支援装置。
【請求項５】
前記処理部は、
前記第１のクロック信号を前記複数の記憶素子のそれぞれのクロック端子に伝搬するクロックツリー内に含まれ、前記シフト動作には影響を与えない第１の回路要素を前記回路情報から検出し、
前記回路情報に基づいて、前記クロック源から前記第１の回路要素に前記第１のクロック信号が到達するまでに生じる第２の遅延時間を算出し、
前記第２の処理の際に、前記第２の遅延時間、前記第１のクロック信号を遅延させた第３のクロック信号を前記第１の回路要素に供給したときの前記第１の回路要素に関する信号の変化を算出する、
請求項１乃至３の何れか一項に記載の半導体装置の設計検証支援装置。
【請求項６】
前記シフト動作が行われるスキャンシフト動作区間において、前記第１のクロック信号の始めの２サイクルと最後の１サイクルでは、前記処理部は、前記複数の記憶素子のそれぞれについて算出された前記遅延時間、前記第１のクロック信号を遅延させた前記第２のクロック信号に基づいて、前記複数の記憶素子のそれぞれの出力値を算出する、
請求項１乃至５の何れか一項に記載の半導体装置の設計検証支援装置。
【請求項７】
コンピュータに、
スキャンチェーンを有する半導体装置に含まれる回路要素の接続先と前記回路要素により生じる伝搬遅延とに関する情報を含む回路情報と、クロック源が出力する第１のクロック信号のサイクルごとに前記スキャンチェーンのスキャンイン端子から入力する試験値を示す試験パターン情報とを記憶部から取得し、
前記回路情報に基づいて、前記クロック源から、前記スキャンチェーンに含まれ直列に接続された複数の記憶素子のそれぞれに前記第１のクロック信号が到達するまでに生じる遅延時間を算出し、
前記サイクルごとに、前記試験パターン情報に基づいて、前記複数の記憶素子のうちシフト動作により第１の出力値が変化する予定の第１の記憶素子を選択し、前記複数の記憶素子のそれぞれについて算出された前記遅延時間のうち、前記第１の記憶素子について算出された第１の遅延時間、前記第１のクロック信号を遅延させた第２のクロック信号を前記第１の記憶素子に供給したときの前記第１の記憶素子の前記第１の出力値を算出する、
処理を実行させる半導体装置の設計検証支援プログラム。
【請求項８】
コンピュータが実行する半導体装置の設計検証支援方法であって、
スキャンチェーンを有する半導体装置に含まれる回路要素の接続先と前記回路要素により生じる伝搬遅延とに関する情報を含む回路情報と、クロック源が出力する第１のクロック信号のサイクルごとに前記スキャンチェーンのスキャンイン端子から入力する試験値を示す試験パターン情報とを記憶部から取得し、
前記回路情報に基づいて、前記クロック源から、前記スキャンチェーンに含まれ直列に接続された複数の記憶素子のそれぞれに前記第１のクロック信号が到達するまでに生じる遅延時間を算出し、
前記サイクルごとに、前記試験パターン情報に基づいて、前記複数の記憶素子のうちシフト動作により第１の出力値が変化する予定の第１の記憶素子を選択し、前記複数の記憶素子のそれぞれについて算出された前記遅延時間のうち、前記第１の記憶素子について算出された第１の遅延時間、前記第１のクロック信号を遅延させた第２のクロック信号を前記第１の記憶素子に供給したときの前記第１の記憶素子の前記第１の出力値を算出する、
半導体装置の設計検証支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置の設計検証支援装置、半導体装置の設計検証支援プログラム及び半導体装置の設計検証支援方法に関する。
【背景技術】
【０００２】
製造試験や評価を容易にするために、スキャン機構を含む半導体装置として、ＬＳＩ（Large Scale Integrated Circuit）などが知られている。ＬＳＩの内部状態の検出機構として、スキャン機構にはスキャンチェーンが含まれている。スキャンチェーンは、半導体装置の外部入力端子と外部出力端子との間に記憶素子（スキャンフリップフロップまたはラッチ回路）が直列に複数繋がれた構造をもつ。スキャンチェーンに対して、半導体装置の外部入力端子からＬＳＩテスタが信号を入力して半導体装置の内部状態を制御し、外部出力端子から出力される信号をＬＳＩテスタが検出して、その内部状態を観測することで試験を容易に行うことができる。
【０００３】
ところで、このスキャンチェーンが設計段階で正しく接続されているか検証するために半導体装置の設計検証工程において、コンピュータ上でのシミュレーションが実施される場合がある。シミュレーションの際には、クロック信号のサイクルごとに、たとえば、０と１が所定回繰り返され、その他は全て０または全て１である試験パターンが半導体装置の外部入力端子からスキャンチェーンに入力される。そして、スキャンチェーンの各記憶素子がクロック信号に同期してシフト動作を所定回数行った後に外部出力端子から出力される値が、外部入力端子に入力された期待値と等しいか否かがチェックされる。
【０００４】
なお、近年の半導体装置の回路規模の増大に伴い、スキャンチェーンに含まれる記憶素子の数も増大している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−１９４８８６号公報
【特許文献２】特開２００６−４５０９号公報
【特許文献３】特開２０１２−１４６８６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
スキャンチェーンが正しく接続されているか確認するために用いられる試験パターンの有効なビット数（たとえば、０と１を繰り返している部分のビット数）はスキャンチェーンに含まれる全記憶素子の数に対してわずかなものである。そのため、試験パターンによる一度のシフト動作で出力値が変化する記憶素子も、スキャンチェーンの全記憶素子に対してわずかなものである。それにもかかわらず、従来の手法では、シフト動作の度に各記憶素子に到達するクロック信号の伝搬遅延と、到達したクロック信号に同期した全記憶素子の出力値の計算が行われるために計算量が増加し、計算時間が長くなってしまうという問題があった。
【課題を解決するための手段】
【０００７】
１つの態様では、スキャンチェーンを有する半導体装置に含まれる回路要素の接続先と前記回路要素により生じる伝搬遅延とに関する情報を含む回路情報と、クロック源が出力する第１のクロック信号のサイクルごとに前記スキャンチェーンのスキャンイン端子から入力する試験値を示す試験パターン情報とを記憶する記憶部と、前記回路情報と前記試験パターン情報とを前記記憶部から取得し、前記回路情報に基づいて、前記クロック源から、前記スキャンチェーンに含まれ直列に接続された複数の記憶素子のそれぞれに前記第１のクロック信号が到達するまでに生じる遅延時間を算出し、前記サイクルごとに、前記試験パターン情報に基づいて、前記複数の記憶素子のうちシフト動作により第１の出力値が変化する予定の第１の記憶素子を選択する第１の処理と、前記複数の記憶素子のそれぞれについて算出された前記遅延時間のうち、前記第１の記憶素子について算出された第１の遅延時間、前記第１のクロック信号を遅延させた第２のクロック信号を前記第１の記憶素子に供給したときの前記第１の記憶素子の前記第１の出力値を算出する第２の処理と、を行う処理部と、を有する半導体装置の設計検証支援装置が提供される。
【０００８】
また、１つの態様では、半導体装置の設計検証支援プログラムが提供される。また、１つの態様では、コンピュータが実行する半導体装置の設計検証支援方法が提供される。
【発明の効果】
【０００９】
１つの側面では、スキャンチェーンの接続試験の計算時間を短縮できる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態の設計検証支援装置の一例を示す図である。
【図２】設計検証支援装置のハードウェア例を示すブロック図である。
【図３】設計検証支援装置の機能例を示すブロック図である。
【図４】スキャンチェーンの接続試験を行う際の設計検証支援処理の手順の一例を示すフローチャートである。
【図５】前処理の手順の一例を示すフローチャートである。
【図６】回路情報で表現される設計対象の半導体装置の一例を示す図である。
【図７】試験パターン情報の一例を示す図である。
【図８】クロック制御回路の例を示す図である。
【図９】シフト動作と直接関係のない回路要素の例を示す図である。
【図１０】遅延計算結果情報の一例を示す図である。
【図１１】シミュレーション処理の手順の一例を示すフローチャートである。
【図１２】高速シミュレーションと低速シミュレーションが行われるサイクルの例を示す図である。
【図１３】ＬＳＳＤラッチ回路が用いられる場合のタイミングエラーの一例を示す図である。
【図１４】１サイクル分の低速シミュレーションの手順の一例を示すフローチャートである。
【図１５】出力値が変化する予定の記憶素子を計算する処理の手順の一例を示すフローチャートである。
【図１６】出力値が変化する予定の記憶素子群の一例を示す図である。
【図１７】１サイクル分の高速シミュレーションの手順の一例を示すフローチャートである。
【図１８】クロック信号の供給対象の記憶素子群の一例を示す図である。
【図１９】レポート情報の表示例を示す図である。
【発明を実施するための形態】
【００１１】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、第１の実施の形態の設計検証支援装置の一例を示す図である。
【００１２】
第１の実施の形態の設計検証支援装置１０は、ソフトウェアによりスキャンチェーンの接続試験のシミュレーションを行うことで、半導体装置の設計検証を支援する。
設計検証支援装置１０は、記憶部１１及び処理部１２を有する。
【００１３】
記憶部１１は、ＲＡＭ（Random Access Memory）などの揮発性の記憶装置、または、フラッシュメモリ、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）やＨＤＤ（Hard Disk Drive）などの不揮発性の記憶装置である。
【００１４】
記憶部１１は、回路情報１１ａ、試験パターン情報１１ｂ、遅延計算結果情報１１ｃを記憶する。
回路情報１１ａは、スキャンチェーンを有する設計対象の半導体装置に含まれる回路要素の接続先と、その回路要素により生じる伝搬遅延とに関する情報を含む。回路要素とは、クロックツリーに含まれるクロックバッファやスキャンチェーンに含まれる記憶素子（スキャンフリップフロップやラッチ回路）、配線などである。
【００１５】
試験パターン情報１１ｂは、スキャンチェーンの接続試験を行うために、クロック源が出力するクロック信号のサイクルごとにスキャンチェーンのスキャンイン端子（半導体装置の外部入力端子）から入力する試験値を示す。以下、試験値をスキャンイン値といい、サイクルごとにスキャンイン端子に順次入力されるスキャンイン値のパターンを試験パターンという。
【００１６】
遅延計算結果情報１１ｃは後述する処理によって、処理部１２が生成する情報である。
なお、設計検証支援装置１０が、ユーザによる入力を受け付けて、その入力に基づいて、回路情報１１ａや試験パターン情報１１ｂを作成してもよいし、設計検証支援装置１０は、他の装置から回路情報１１ａや試験パターン情報１１ｂを取得してもよい。なお、ユーザは、たとえば、半導体装置の設計者または、半導体装置の設計検証担当者などである。
【００１７】
処理部１２は、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などの演算処理装置としてのプロセッサである。ただし、処理部１２は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の電子回路を含んでもよい。プロセッサは、ＲＡＭなどのメモリに記憶されたプログラムを実行する。たとえば、半導体装置の設計検証支援プログラムが実行される。なお、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」ということがある。
【００１８】
処理部１２は、回路情報１１ａと試験パターン情報１１ｂとを記憶部１１から取得する（読み出す）。そして、処理部１２は、回路情報１１ａに基づいて、スキャンチェーンに含まれ直列に接続された複数の記憶素子のそれぞれにクロック信号が到達するまでに生じる遅延時間を算出する。そして、処理部１２は、複数の記憶素子のそれぞれについての遅延時間の算出結果を含む遅延計算結果情報１１ｃを、たとえば、記憶部１１に記憶する。なお、遅延計算結果情報１１ｃには、クロック信号が複数の記憶素子のそれぞれに到達したときのクロック信号の信号極性を示す情報が含まれていてもよい。信号極性は、クロック信号の論理レベル（Ｈ（High）レベルまたはＬ（Low）レベル）である。信号極性を考慮することで、クロックツリーにおいて、クロック信号の論理レベルが反転する場合に対応できる。
【００１９】
さらに、処理部１２は、クロック源が出力するクロック信号のサイクルごとに、以下の処理を行う。処理部１２は、試験パターン情報１１ｂに基づいて複数の記憶素子のうち、そのサイクルにおいてシフト動作により出力値が変化する予定の記憶素子を選択する。そして、処理部１２は、遅延計算結果情報１１ｃに基づいて、複数の記憶素子のそれぞれについて算出された遅延時間のうち、選択した記憶素子について算出された遅延時間を取得する。そして、処理部１２は、取得した遅延時間、クロック源が出力するクロック信号を遅延させたクロック信号を、選択した記憶素子に供給したときの、その記憶素子の出力値を算出する。
【００２０】
また、処理部１２は、スキャンチェーンのスキャンアウト端子（半導体装置の外部入力端子）から出力されるスキャンアウト値と、スキャンアウト値の期待値とを比較結果に基づいてエラーの発生を検出し、そのエラーを検出した旨を示すレポート情報を出力する。
【００２１】
図１には、設計対象の半導体装置２０の一例が示されている。
設計対象の半導体装置２０は、クロック源２１、クロックバッファ２２ａ１〜２２ａｍを含むクロックツリー２２、複数の記憶素子の一例であるスキャンフリップフロップ２３ａ１〜２３ａｎを含むスキャンチェーン２３を有する。
【００２２】
クロック源２１は、スキャンチェーン２３のスキャンフリップフロップ２３ａ１〜２３ａｎをシフト動作させるためのクロック信号ＣＫを出力する。なお、クロック源２１は、クロック信号ＣＫが半導体装置２０の外部から供給される場合には、半導体装置２０の外部入力端子の１つである。
【００２３】
クロックツリー２２は、ツリー状に接続されたクロックバッファ２２ａ１〜２２ａｍを有し、クロック源２１が出力したクロック信号ＣＫを、スキャンフリップフロップ２３ａ１〜２３ａｎに伝搬（分配）する。
【００２４】
スキャンチェーン２３は、スキャンフリップフロップ２３ａ１〜２３ａｎ、スキャンイン端子２３ｂ、スキャンアウト端子２３ｃを有する。スキャンフリップフロップ２３ａ１〜２３ａｎのそれぞれは、たとえば、マルチプレクサとフリップフロップとを有する。マルチプレクサは、２つの入力値の何れか一方を、スキャンイネーブル信号に基づいて選択する。２つの入力値の一方は、半導体装置２０内の図示しない組み合わせ回路が出力する値であり、他方は、前段のスキャンフリップフロップが出力する値（初段のスキャンフリップフロップの場合は、スキャンイン端子２３ｂから入力されるスキャンイン値）である。フリップフロップは、マルチプレクサにより選択された入力値をクロック信号に同期したタイミングで取り込む。このクロック信号は、クロック源２１が出力するクロック信号ＣＫがクロックツリー２２により遅延されたものである。
【００２５】
なお、スキャンチェーンは、複数本設けられていてもよい。
上記のような半導体装置２０の回路構成は、回路情報１１ａに示されている。
以下、第１の実施の形態の設計検証支援方法の一例として、半導体装置２０のスキャンチェーン２３の接続試験をシミュレーションする方法を説明する。
【００２６】
処理部１２は、回路情報１１ａと試験パターン情報１１ｂとを記憶部１１から取得する。
そして、処理部１２は、回路情報１１ａに基づいて、スキャンチェーン２３に含まれるスキャンフリップフロップ２３ａ１〜２３ａｎのそれぞれにクロック信号ＣＫが到達するまでに生じる遅延時間を算出する。上記のように回路情報１１ａは、半導体装置に含まれる回路要素の接続先と、その回路要素により生じる伝搬遅延とに関する情報を含んでいる。そのため、処理部１２は、回路情報１１ａに基づいて、クロック源２１と、スキャンフリップフロップ２３ａ１〜２３ａｎのそれぞれのクロック端子との間に存在する各回路要素において生じる伝搬遅延を加算することで、上記遅延時間を算出できる。
【００２７】
図１には、スキャンフリップフロップ２３ａｉ，２３ａｌのクロック端子に供給されるクロック信号ＣＫａ，ＣＫｂの例が示されている。クロック信号ＣＫａは、クロック信号ＣＫが遅延時間ｄ１、遅延させたものである。また、クロック信号ＣＫｂは、クロック信号ＣＫが遅延時間ｄ２、遅延させたものである。
【００２８】
処理部１２は、上記のように算出した遅延時間を遅延計算結果情報１１ｃとして、たとえば、記憶部１１に記憶しておく。
その後、処理部１２は、クロック源２１が出力するクロック信号ＣＫのサイクルごとに、以下の処理を行う。
【００２９】
処理部１２は、試験パターン情報１１ｂに基づいて、スキャンフリップフロップ２３ａ１〜２３ａｎのうち、現在のサイクルにおいてシフト動作により出力値が変化する予定のスキャンフリップフロップを選択する。
【００３０】
図１には、試験パターン情報１１ｂの一例が示されている。
試験パターン情報１１ｂは、クロック源２１が出力するクロック信号ＣＫの各サイクルにおけるスキャンイン値と、スキャンアウト値の期待値（スキャンアウト期待値）を含む。スキャンイン値として、図１の例では、０と１が所定サイクル繰り返し設定され、その後は、０が設定される。
【００３１】
スキャンアウト期待値は、スキャンフリップフロップ２３ａ１〜２３ａｎのシフト動作により、最後段のスキャンフリップフロップ２３ａｎから１サイクル目のスキャンイン値が出力されるｎサイクル目より前までは、“Ｘ”となっている。“Ｘ”は、期待値がないことを示している。ｎサイクル目からは、１サイクル目以降のスキャンイン値と同じ値が、スキャンアウト期待値となる。
【００３２】
図１には、スキャンフリップフロップ２３ａｉ〜２３ａｌが、Ｎサイクル目にシフト動作により出力値が変化する予定のスキャンフリップとして選択された例が示されている。
処理部１２は、遅延計算結果情報１１ｃに基づいて、スキャンフリップフロップ２３ａ１〜２３ａｎのそれぞれについて算出された遅延時間のうち、選択したスキャンフリップフロップについて算出された遅延時間を取得する。たとえば、上記のように、Ｎサイクル目にスキャンフリップフロップ２３ａｉ〜２３ａｌが選択された場合、処理部１２は、スキャンフリップフロップ２３ａｉ〜２３ａｌのそれぞれについて算出された遅延時間（遅延時間ｄ１，ｄ２など）を取得する。
【００３３】
処理部１２は、取得した遅延時間、クロック源２１が出力するクロック信号ＣＫを遅延させたクロック信号（クロック信号ＣＫａ，ＣＫｂなど）を、選択したスキャンフリップフロップに供給したときの、そのスキャンフリップフロップの出力値を算出する。
【００３４】
たとえば、処理部１２は、スキャンフリップフロップ２３ａｉ〜２３ａｌのそれぞれにおいて、前段のスキャンフリップフロップの出力値の変化タイミングと、取得した遅延時間に基づくクロック信号の変化タイミングとから出力値を変化させるか否かを決定する。
【００３５】
たとえば、両変化タイミングの関係が、セットアップ時間やホールド時間（これらの時間は、たとえば、回路情報１１ａに含まれている）の制約を満たす場合には、処理部１２は、出力値を変化（０から１への変化または１から０への変化）させる。両変化タイミングの関係が、セットアップ時間やホールド時間の制約を満たさない場合には、処理部１２は、出力値を変化させない。なお、スキャンフリップフロップの出力値を変化させる場合には、処理部１２は、その出力値以外に、出力値の変化タイミングの情報を、後段のスキャンフリップフロップの出力値の変化の可否を決定するため、たとえば、記憶部１１に記憶しておく。
【００３６】
Ｎサイクル目において、処理部１２は、スキャンフリップフロップ２３ａ１〜２３ａｎのうち、シフト動作により出力値が変化する予定のスキャンフリップフロップ２３ａｉ〜２３ａｌ以外については、出力値の算出は行わない。このため、Ｎサイクル目において、出力値の変化の予定がないスキャンフリップフロップ２３ａ１，２３ａ２，２３ａｎなどは、計算対象から除外される。ただし、処理部１２は、Ｎサイクル目において、スキャンフリップフロップ２３ａｌの出力端子に接続されるスキャンフリップフロップの出力値を算出するようにしてもよい。値の取り込みを行うべきスキャンフリップフロップの後段のスキャンフリップフロップに値が取り込まれてしまうレーシング現象などの影響を考慮できるようにするためである。
【００３７】
上記のような０と１が所定サイクル繰り返される試験パターンが用いられる場合、Ｎ＋１サイクル目以降に、シフト動作により出力値が変化する予定のスキャンフリップ群は、スキャンフリップフロップ２３ａｉ〜２３ａｌを１段ずつ後段にずらしたものになる。
【００３８】
処理部１２は、スキャンアウト値とスキャンアウト期待値とを比較した比較結果に基づいて、エラーの発生の有無を検出する。たとえば、処理部１２は、スキャンアウト期待値が１サイクル目以降のスキャンイン値と同じ値となるｎサイクル目から、スキャンアウト期待値と、スキャンアウト端子２３ｃから出力されるスキャンアウト値とが異なっていれば、エラーが発生していると判定する。
【００３９】
そして、処理部１２は、試験パターン情報１１ｂに記述されている全サイクルの処理が終了した場合に、どのサイクルでエラーが生じたかを示すレポート情報を生成する。処理部１２は、記憶部１１にレポート情報を記憶してもよいし、図示しない表示装置にレポート情報を表示させてもよい。
【００４０】
以上のように、スキャンチェーンの接続試験をシミュレーションする第１の実施の形態の設計検証支援装置１０は、クロック源とスキャンチェーンの各記憶素子間で生じるクロック信号の遅延時間を予め算出する。そして、設計検証支援装置１０は、そのクロック信号が供給されたときの動作（出力値の変化）を計算する記憶素子の数を、試験パターンによって出力値が変化する予定の記憶素子数に基づいて制限する。
【００４１】
毎サイクル、クロックツリー内のクロックバッファの接続にしたがい、クロック源の信号変化を、各クロックバッファでの遅延を考慮して各クロックバッファに順次伝搬させる処理を行い、信号変化が到達する各記憶素子の動作を計算すると、計算時間が増大する。しかし、上記の手法により、計算時間を短縮できる。各サイクルにおいて動作を計算する記憶素子の数が少なくなるとともに、予め計算しておいた遅延時間を用いて、各サイクルにおいて選択された記憶素子の動作を計算するためである。
【００４２】
なお、スキャンチェーンの接続試験のシミュレーションでエラーが検出された場合、エラー解析のために繰り返しシミュレーションが行われる場合がある。上記の手法によれば計算時間（シミュレーション時間）を短縮できることから、エラー解析に関するＴＡＴ（Turn Around Time）も短縮できる。また、これにより、設計検証工程の期間を短縮でき、半導体装置の製造工程全体の期間の短縮も期待できる。
【００４３】
（第２の実施の形態）
次に、第２の実施の形態を説明する。
図２は、設計検証支援装置のハードウェア例を示すブロック図である。
【００４４】
設計検証支援装置３０は、ＣＰＵ３１、ＲＡＭ３２、ＨＤＤ３３、画像信号処理部３４、入力信号処理部３５、媒体リーダ３６及び通信インタフェース３７を有する。上記ユニットは、バスに接続されている。
【００４５】
ＣＰＵ３１は、プログラムの命令を実行する演算回路を含むプロセッサである。ＣＰＵ３１は、ＨＤＤ３３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ３２にロードし、プログラムを実行する。なお、ＣＰＵ３１は複数のプロセッサコアを備えてもよく、設計検証支援装置３０は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合（マルチプロセッサ）を「プロセッサ」と呼んでもよい。
【００４６】
ＲＡＭ３２は、ＣＰＵ３１が実行するプログラムやＣＰＵ３１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、設計検証支援装置３０は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００４７】
ＨＤＤ３３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。プログラムには、たとえば、作業スケジュールの算出を設計検証支援装置３０に実行させる作業スケジュール算出プログラムが含まれる。なお、設計検証支援装置３０は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００４８】
画像信号処理部３４は、ＣＰＵ３１からの命令にしたがって、設計検証支援装置３０に接続されたディスプレイ３４ａに画像を出力する。ディスプレイ３４ａとしては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ（ＰＤＰ：Plasma Display Panel）、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなどを用いることができる。
【００４９】
入力信号処理部３５は設計検証支援装置３０に接続された入力デバイス３５ａから入力信号を取得し、ＣＰＵ３１に出力する。入力デバイス３５ａとしては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、設計検証支援装置３０に、複数の種類の入力デバイスが接続されていてもよい。
【００５０】
媒体リーダ３６は、記録媒体３６ａに記録されたプログラムやデータを読み取る読み取り装置である。記録媒体３６ａとして、たとえば、磁気ディスク、光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤが含まれる。光ディスクには、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）が含まれる。
【００５１】
媒体リーダ３６は、たとえば、記録媒体３６ａから読み取ったプログラムやデータを、ＲＡＭ３２やＨＤＤ３３などの他の記録媒体にコピーする。読み取られたプログラムは、たとえば、ＣＰＵ３１によって実行される。なお、記録媒体３６ａは、可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体３６ａやＨＤＤ３３を、コンピュータ読み取り可能な記録媒体ということがある。
【００５２】
通信インタフェース３７は、ネットワーク３７ａに接続され、ネットワーク３７ａを介して他の情報処理装置と通信を行うインタフェースである。通信インタフェース３７は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【００５３】
次に、設計検証支援装置３０の機能及び処理手順を説明する。
図３は、設計検証支援装置の機能例を示すブロック図である。
設計検証支援装置３０は、回路情報記憶部４０、試験パターン情報記憶部４１、前処理結果記憶部４２、計算途中データ記憶部４３、計算結果記憶部４４、前処理部４５、シミュレーション部４６、結果出力部４７を有する。
【００５４】
回路情報記憶部４０、試験パターン情報記憶部４１、前処理結果記憶部４２、計算途中データ記憶部４３、計算結果記憶部４４は、たとえば、ＲＡＭ３２またはＨＤＤ３３に確保した記憶領域を用いて実装できる。前処理部４５、シミュレーション部４６、結果出力部４７は、たとえば、ＣＰＵ３１が実行するプログラムモジュールを用いて実装できる。
【００５５】
回路情報記憶部４０は、スキャンチェーンを有する設計対象の半導体装置に含まれる回路要素の接続先とその回路要素により生じる伝搬遅延とに関する情報を含む回路情報を記憶する。
【００５６】
試験パターン情報記憶部４１は、試験パターン情報を記憶する。
前処理結果記憶部４２は、前処理部４５で行われる前処理結果を記憶する。前処理結果には、スキャンチェーンに含まれ直列に接続された複数の記憶素子のそれぞれにクロック信号が到達するまでに生じる遅延時間の算出結果が含まれる。さらに前処理結果には、回路情報から抽出されるスキャン制御回路やスキャンチェーンに関する情報が含まれる。
【００５７】
計算途中データ記憶部４３は、シミュレーション部４６による計算の途中で生成されるデータを記憶する。
計算結果記憶部４４は、結果出力部４７が生成し出力するレポート情報などを記憶する。
【００５８】
前処理部４５は、回路情報や試験パターン情報を取得するとともに、スキャンチェーンに含まれ直列に接続された複数の記憶素子のそれぞれにクロック信号が到達するまでに生じる遅延時間や到達したときのクロック信号の信号極性の算出を行う。さらに前処理部４５は、回路情報からスキャン制御回路やスキャンチェーンの情報の抽出を行う。
【００５９】
シミュレーション部４６は、試験パターン情報に基づいて、スキャンチェーンの接続試験をシミュレーションする。
結果出力部４７は、スキャンチェーンの接続試験の結果を示すレポート情報を出力する。たとえば、結果出力部４７は、レポート情報を計算結果記憶部４４に記憶する。また、結果出力部４７は、レポート情報をディスプレイ３４ａに表示させてもよい。
【００６０】
図４は、スキャンチェーンの接続試験を行う際の設計検証支援処理の手順の一例を示すフローチャートである。
設計検証支援処理は、前処理（Ｓ１）、シミュレーション処理（Ｓ２）、レポート出力処理（Ｓ３）の順で行われる。以下、各処理の例を説明する。
【００６１】
図５は、前処理の手順の一例を示すフローチャートである。
（Ｓ１０）前処理部４５は、回路情報記憶部４０に記憶されている回路情報と試験パターン情報を読み出す。
【００６２】
図６は、回路情報で表現される設計対象の半導体装置の一例を示す図である。
半導体装置５０は、複数本のスキャンチェーン５１ａ，５１ｂ，…，５１ｐを有する。
スキャンチェーン５１ａ〜５１ｐのそれぞれは、スキャンイン端子とスキャンアウト端子との間に直列に接続された複数の記憶素子（スキャンフリップフロップまたはラッチ回路）を有する。
【００６３】
たとえば、スキャンチェーン５１ａは、スキャンイン端子５２ａとスキャンアウト端子５３ａとの間に直列に接続された記憶素子５１ａ１，５１ａ２，…，５１ａｎを有する。スキャンチェーン５１ｂは、スキャンイン端子５２ｂとスキャンアウト端子５３ｂとの間に直列に接続された記憶素子５１ｂ１，５１ｂ２，…，５１ｂｎを有する。スキャンチェーン５１ｐは、スキャンイン端子５２ｐとスキャンアウト端子５３ｐとの間に直列に接続された記憶素子５１ｐ１，５１ｐ２，…，５１ｐｎを有する。
【００６４】
また、半導体装置５０は、組み合わせ回路５４ａ１，５４ａ２を有する。図６では、図示を簡略化するため、２つの組み合わせ回路５４ａ１，５４ａ２を示したが、たとえば、スキャンチェーン５１ａ〜５１ｐの各記憶素子に、組み合わせ回路が接続される。
【００６５】
さらに、半導体装置５０は、クロックツリー５５とスキャン制御回路５６を有する。
クロックツリー５５は、ツリー状に接続されたクロックバッファ５５ａ１〜５５ａｍを有し、クロック信号を、スキャンチェーン５１ａ〜５１ｐの各記憶素子に分配する。なお、クロックツリー５５には、クロックバッファ５５ａ１〜５５ａｍ以外の回路要素（図８、図９参照）を含んでいてもよい。
【００６６】
スキャン制御回路５６は、クロック源５６ａ１，５６ａ２、状態設定レジスタ５６ｂを有する。
クロック源５６ａ１，５６ａ２は、スキャンチェーン５１ａ〜５１ｐの各記憶素子をシフト動作させるためのクロック信号を出力する。たとえば、クロック源５６ａ１は、あるスキャンチェーンに含まれる各記憶素子をシフト動作させるためのクロック信号を出力したとき、クロック源５６ａ１は、別のスキャンチェーンに含まれる各記憶素子をシフト動作させるためのクロック信号を出力する。
【００６７】
また、各記憶素子が、後述するスキャン方式の１つであるＬＳＳＤ（Level Sensitive Scan Design）方式に対応した記憶素子である場合には、その記憶素子にシフト動作をさせるために異なる２つのクロック信号が用いられる。クロック源５６ａ１，５６ａ２は、その異なる２つのクロック信号を出力するクロック源であってもよい。
【００６８】
なお、クロック源５６ａ１，５６ａ２は、クロック信号が半導体装置５０の外部から供給される場合には、半導体装置５０の外部入力端子の１つである。また、クロック源は１つでもよいし、３つ以上でもよい。
【００６９】
状態設定レジスタ５６ｂは、スキャンテストを行うモードであるか否かを示す状態値や、スキャンテストが行われるスキャンチェーンが選択されているか否かを示す状態値が設定される。この状態値にしたがって、たとえば、記憶素子５１ａ１は、スキャンイン端子５２ａから供給されるスキャンイン値を取り込むか、組み合わせ回路５４ａ１が出力する値を取り込むか決定する。また、状態設定レジスタ５６ｂには、スキャンチェーン５１ａ〜５１ｐの各記憶素子のシフト動作の現在の回数（スキャンシフト回数）や、スキャンテストにおける全スキャンシフト回数が設定されてもよい。
【００７０】
ステップＳ１０の処理で読み出される回路情報は、上記のような半導体装置５０に含まれる各回路要素の接続先、各回路要素により生じる伝搬遅延、及び各回路要素の種類（セルタイプ）に関する情報を含む。また、回路情報は、回路要素の識別情報（以下素子ＩＤという）、クロック端子やクロックツリーに接続される端子の識別情報（以下クロック端子ＩＤ、クロックツリー端子ＩＤという）などを含む。
【００７１】
一方、ステップＳ１０の処理で読み出される試験パターン情報は、たとえば、以下のような情報である。
図７は、試験パターン情報の一例を示す図である。
【００７２】
試験パターン情報４１ａには、クロック源（たとえば、図６のクロック源５６ａ１，５６ａ２）が出力するクロック信号の各サイクルにおけるスキャンイン値と、スキャンアウト値の期待値（スキャンアウト期待値）を含む。各クロック源が出力するクロック信号のパルスの種類が“Ｐ”と表記されている。なお、“Ｐ”の後の“１”や“０”は、他のＬＳＩ外部端子（診断用端子）に入力するパターン（１か０の値）を表す。なお、クロック源が２つあれば、２つのクロック源が出力するそれぞれのクロック信号のパルスの種類と上記他のＬＳＩ外部端子に対するパターンが組み合わされて“ＰＰ０１”，“ＰＰ１１”と表記される。なお、端子の記述順は、予めＬＳＩごとに決められており、何文字目が何の端子のパターンかが判るようになっている。ちなみに、“Ｐ”は、ｐｏｓｉｔｉｖｅ  ｐｕｌｓｅを示し、“Ｐ”の代わりに、ｎｅｇａｔｉｖｅ  ｐｕｌｓｅを示す“Ｎ”となる場合もある。
【００７３】
スキャンイン値として、図７の例では、図６のスキャンイン端子５２ａ〜５２ｐに、００…０と１１…１が所定サイクル繰り返し入力され、その後は、００…０が入力される。
スキャンアウト期待値は、スキャンチェーン５１ａ〜５１ｐの各記憶素子のシフト動作により、スキャンアウト端子５３ａ〜５３ｐからＮ＋０サイクル目のスキャンイン値が出力されるＭ＋１サイクル目より前までは、“ＸＸ…Ｘ”となっている。“Ｘ”は、期待値がないことを示している。Ｍ＋１サイクル目からは、１サイクル目以降のスキャンイン値と同じ値が、スキャンアウト期待値となる。なお、図７では、“０”が論理レベルの“Ｌ”で示されており、“１”が論理レベルの“Ｈ”で示されている。
【００７４】
（Ｓ１１）回路情報と試験パターン情報の読み出し後、前処理部４５は、回路情報からスキャン制御回路情報を抽出する。前処理部４５は、前処理部４５は、たとえば、図６に示したような、状態設定レジスタ５６ｂに設定されている状態値をスキャン制御回路情報として取得し、前処理結果記憶部４２に記憶する。
【００７５】
（Ｓ１２）その後、前処理部４５は、回路情報からスキャンチェーン情報を抽出する。前処理部４５は、たとえば、スキャンチェーン５１ａ〜５１ｐのスキャン方式に応じて、スキャンチェーン５１ａ〜５１ｐのそれぞれと外部端子との対応関係や、記憶素子の接続順、セルタイプの情報を回路情報から取得し、前処理結果記憶部４２に記憶する。
【００７６】
なお、スキャン方式には、ＭＵＸＤ（MUltipleXed Data）方式と、ＬＳＳＤがある。ＭＵＸＤ方式は、前述したマルチプレクサとフリップフロップとを有するスキャンフリップフロップを記憶素子として用いる方式である。
【００７７】
一方、ＬＳＳＤ方式は、マスターラッチとスレーブラッチとを有する記憶素子を用い、半導体装置の通常動作で使用するクロック信号とは別に、マスターラッチとスレーブラッチとにそれぞれ異なるスキャンテスト専用のクロック信号を供給する方式である。
【００７８】
（Ｓ１３）さらに、前処理部４５は、回路情報からスキャンテストに用いられるクロック信号の全クロック源を抽出する。クロック源が、外部端子であるか半導体装置の内部素子であるかについては、半導体装置の種類やスキャン方式などにより異なる。クロック源が内部素子で複数ある場合には、前処理部４５は、たとえば、ユーザによる入力を受け付け、スキャンテストに用いるクロック信号のクロック源を適宜選択できるようにしてもよい。
【００７９】
（Ｓ１４）前処理部４５は、抽出した全クロック源から、クロック源を１つ選択する。たとえば、図６に示した半導体装置５０では、２つのクロック源５６ａ１，５６ａ２が含まれるので、その一方が選択される。
【００８０】
（Ｓ１５）その後、前処理部４５は、回路情報に基づいて、スキャンチェーンに含まれる各記憶素子に到達するクロック信号の遅延時間、信号極性を算出して前処理結果記憶部４２に記憶する。
【００８１】
前処理部４５は、たとえば、ステップＳ１４の処理で図６のクロック源５６ａ１を選択した場合、クロック源５６ａ１から各記憶素子に至るクロックツリー５５上の経路に含まれる各回路要素（配線やクロックバッファ）で生じる遅延時間を積算する。これらの遅延時間は、クロック信号の伝搬方向に対して固定の値である。これにより、スキャンチェーンに含まれる各記憶素子に到達するクロック信号の遅延時間が算出される。さらに、前処理部４５は、クロックバッファとしてインバータ回路が用いられる場合を考慮して、各記憶素子に到達するクロック信号の信号極性（ＨレベルかＬレベルか）を算出する。
【００８２】
（Ｓ１６）その後、前処理部４５は、回路情報に基づいて、クロックツリー内のクロック制御回路を検出し、前処理結果記憶部４２に記憶する。クロックツリー内にはクロックバッファの他にもクロック信号の伝搬を制御するクロック制御回路が含まれる場合がある。
【００８３】
図８は、クロック制御回路の例を示す図である。
クロックツリー５５には、クロック制御回路として、ＡＮＤ回路５５ｂやセレクタ５５ｃが含まれている。
【００８４】
ＡＮＤ回路５５ｂの一方の入力端子には、記憶素子５１ａ１にも与えられるクロック信号ＣＫ１が供給され、ＡＮＤ回路５５ｂの他方の入力端子には、制御値ｃｎｔ１が供給される。ＡＮＤ回路５５ｂの出力端子は、記憶素子５１ａ２のクロック端子及びセレクタ５５ｃの第１の入力端子に接続されている。セレクタ５５ｃの第２の入力端子には、クロック信号ＣＫ１とは別のクロック信号ｃｋが供給され、セレクタ５５ｃの第３の入力端子（選択端子）には、選択信号ｓｅｌが供給される。セレクタ５５ｃの出力端子は、記憶素子５１ａ３のクロック端子に接続される。
【００８５】
制御値ｃｎｔ１、クロック信号ｃｋや選択信号ｓｅｌは、たとえば、図６に示したスキャン制御回路５６から供給される。なお、クロック信号ｃｋは、外部端子から供給されてもよい。
【００８６】
ＡＮＤ回路５５ｂの制御値ｃｎｔ１が０のとき、ＡＮＤ回路５５ｂの出力値は常に０になるため、クロック信号ＣＫ１は、記憶素子５１ａ２，５１ａ３に伝搬されない。また、制御値ｃｎｔ１が１のとき、選択信号ｓｅｌがクロック信号ｃｋを選択する信号である場合には、クロック信号ＣＫ１は、記憶素子５１ａ３に伝搬されない。このように、ＡＮＤ回路５５ｂやセレクタ５５ｃは、クロック信号ＣＫ１の伝搬の制御や、使用するクロック信号の切り替えを行うクロック制御回路として機能する。
【００８７】
このようなクロック制御回路を検出し、記憶しておき、後述の高速シミュレーションの際にそのクロック制御回路の信号変化（制御値などの変化）も検出することで、クロック信号が記憶素子に伝搬されなくなるエラーを検出できる。
【００８８】
（Ｓ１７）前処理部４５は、回路情報に基づいて、クロックツリー内において、記憶素子のシフト動作と直接関係のない回路要素を検出する。クロックツリー内にはクロックバッファやクロック制御回路の他にもシフト動作と直接関係のない（シフト動作に影響を与えない）回路が含まれる場合がある。
【００８９】
図９は、シフト動作と直接関係のない回路要素の例を示す図である。
クロックツリー５５には、クロックバッファ５５ａｉ，５５ａｊ，５５ａｋの他に、シフト動作と直接関係のない回路要素として、ＲＯＭ（Read Only Memory）５５ｄが含まれている。
【００９０】
スキャンテストで用いられるクロック信号ＣＫ２は、記憶素子５１ｂ１のクロック端子に供給される。また、クロック信号ＣＫ２は、クロックバッファ５５ａｉを介して記憶素子５１ｂ２のクロック端子、クロックバッファ５５ａｉ，５５ａｊを介して記憶素子５１ｂ３のクロック端子に供給される。さらに、クロック信号ＣＫ２は、クロックバッファ５５ａｋを介して、ＲＯＭ５５ｄのクロック端子に供給される。
【００９１】
シフト動作と直接関係のない回路要素として、ＲＯＭ５５ｄの他に、ＲＡＭなどがある。
（Ｓ１８）その後、前処理部４５は、検出したシフト動作と直接関係のない回路要素に到達するクロック信号の遅延時間、信号極性を、ステップＳ１５の処理と同様に算出し、前処理結果記憶部４２に記憶する。
【００９２】
このような情報を記憶しておくことで、高速シミュレーションの際に、その回路要素にも遅延時間や信号極性を考慮したクロック信号を与え、その回路要素に関する信号の変化などを算出することができる。
【００９３】
（Ｓ１９）前処理部４５は、未選択のクロック源があるか否かを判定し、未選択のクロック源がある場合には、ステップＳ１４からの処理を繰り返す。未選択のクロック源がない場合には、前処理が終了する。
【００９４】
以上のような前処理によって、前処理結果記憶部４２に記憶される遅延計算結果情報の例を以下に示す。
図１０は、遅延計算結果情報の一例を示す図である。
【００９５】
遅延計算結果情報４２ａには、上記前処理で検出または算出された各情報が含まれている。たとえば、遅延計算結果情報４２ａは、図６に示したクロック源５６ａ１（素子ＩＤ：ｓｏｕｒｃｅ１）が出力するクロック信号によってシフト動作する記憶素子５１ａ１〜５１ａｎのそれぞれの素子ＩＤ（ｆｆａ１〜ｆｆａｎ）を含む。また、遅延計算結果情報４２ａは、記憶素子５１ａ１〜５１ａｎのそれぞれのクロック端子ＩＤ（ｃｋａ１〜ｃｋａｎ）を含む。また、遅延計算結果情報４２ａは、記憶素子５１ａ１〜５１ａｎのそれぞれに到達するクロック信号の立ち上がり遅延（ｔｄｒａ１〜ｔｄｒａｎ）、立ち下がり遅延（ｔｄｆａ１〜ｔｄｆａｎ）と、クロック信号の信号極性（図１０の例では“Ｈ”）を含む。
【００９６】
さらに遅延計算結果情報４２ａは、クロック制御回路の情報として、たとえば、図８に示したＡＮＤ回路５５ｂ、セレクタ５５ｃのそれぞれの素子ＩＤ（ｃｎｔｒ１，ｃｎｔｒ２）、クロックツリー端子ＩＤ（ｃｋｔ１，ｃｋｔ２）を含む。また、遅延計算結果情報４２ａは、シフト動作と直接関係のない回路要素の情報として、たとえば、図９に示したＲＯＭ５５ｄの素子ＩＤ（ｉｇ１）、クロック端子ＩＤ（ｃｋｂ１）を含む。さらに遅延計算結果情報４２ａは、シフト動作と直接関係のない回路要素の情報として、ＲＯＭ５５ｄのクロック端子に到達するクロック信号の立ち上がり遅延（ｔｄｒｂ１）、立ち下がり遅延（ｔｄｆｂ１）、信号極性（図１０の例では“Ｈ”）を含む。
【００９７】
図６に示したクロック源５６ａ２（素子ＩＤ：ｓｏｕｒｃｅ２）に関しても同様の情報が遅延計算結果情報４２ａに含まれる。
なお、図５に示した前処理の手順は一例であり、各処理の順序は適宜入れ替えてもよい。たとえば、ステップＳ１１，Ｓ１２の処理などは順序を入れ替えてもよい。
【００９８】
図１１は、シミュレーション処理の手順の一例を示すフローチャートである。
（Ｓ２０）シミュレーション部４６は、たとえば、設計対象の半導体装置に含まれる各回路要素の入出力信号や、スキャン制御回路の状態値などに初期値を設定することで、初期化を行う。
【００９９】
（Ｓ２１）シミュレーション部４６は、試験パターン情報を１サイクル分抽出する。
（Ｓ２２）シミュレーション部４６は、スキャン制御回路の状態値を計算する。試験パターン情報にはスキャン制御回路５６を動作させる情報（たとえば、前述した０か１のパターン）が含まれている。シミュレーション部４６は、この情報に基づいて状態値を計算し、計算途中データ記憶部４３に記憶する。
【０１００】
（Ｓ２３）シミュレーション部４６は、計算途中データ記憶部４３に記憶されている状態値を取得し、その状態値がスキャンテストを行うモードを示す場合、現在のサイクルが、高速シミュレーション対象サイクルであるか否かを判定する。シミュレーション部４６は、現在のスキャンシフト回数（シフト動作を行った回数）に基づいて現在のサイクルが、高速シミュレーション対象サイクルであるか否かを判定する。シミュレーション部４６は、試験パターン情報に基づいて得られるクロック信号の動作回数をカウントし計算途中データ記憶部４３に記憶する。そして、シミュレーション部４６は、その動作回数を読み出して、スキャンシフト回数として用いることができる。
【０１０１】
高速シミュレーションとは、出力値が変化する予定の記憶素子を選択して、クロック信号を与えてその記憶素子の動作を計算するシミュレーションである。また、以下では、クロック源の信号変化を、各クロックバッファでの遅延を考慮して各クロックバッファに順次伝搬させる処理を行い、クロック端子に信号変化が到達する各記憶素子の動作を計算するシミュレーションを低速シミュレーションという。
【０１０２】
第２の実施の形態のスキャンチェーンの接続試験では、シミュレーション部４６は、始めの２サイクルと最後の１サイクルは低速シミュレーションを行う。
図１２は、高速シミュレーションと低速シミュレーションが行われるサイクルの例を示す図である。
【０１０３】
図１２には、あるスキャンチェーンに含まれる各記憶素子をシフト動作させるために、あるクロック源が出力するクロック信号ＣＫＡの例が示されている。タイミングｔ１からｔ４までがスキャンシフト動作区間であり、図７に示したような試験パターン情報４１ａの全スキャンシフトサイクル数にクロック信号ＣＫＡの周期を乗じた期間に相当する。
【０１０４】
タイミングｔ１からタイミングｔ２までのクロック信号ＣＫＡの２周期分（２サイクル分）と、タイミングｔ３からタイミングｔ４のスキャンシフト動作区間が終わる最後の１周期分（１サイクル分）が、低速シミュレーションが行われる区間である。それ以外の区間は高速シミュレーションが行われる区間である。
【０１０５】
始めの２サイクルでは、低速シミュレーションが行われ、スキャンチェーンに含まれる全記憶素子においてタイミング検証やレーシング検証が行われる。
図１３は、ＬＳＳＤラッチ回路が用いられる場合のタイミングエラーの一例を示す図である。
【０１０６】
ＬＳＳＤラッチ回路５１ｄは、図示を省略しているが、マスターラッチとスレーブラッチを有し、それぞれに異なるスキャンテスト専用のクロック信号ｃｋｍ，ｃｋｓが供給される。また、ＬＳＳＤラッチ回路５１ｄには、スキャンイン値ｓｉが供給される。なお、ＬＳＳＤラッチ回路５１ｄには、半導体装置の通常動作で使用するクロック信号や、組み合わせ回路の出力値が供給されるが、図示を省略している。ＬＳＳＤラッチ回路５１ｄは、スキャンアウト値ｓｏを出力する。
【０１０７】
ＬＳＳＤラッチ回路５１ｄにおいて、クロック信号ｃｋｍの立ち上がりタイミングとクロック信号ｃｋｓの立ち下がりタイミングの間の時間が所定の閾値よりも短いとタイミングエラーが生じる。たとえば、クロック信号ｃｋｍの立ち上がりタイミングとクロック信号ｃｋｓの立ち下がりタイミングの間の時間が所定の閾値よりも長い時間ｄａの場合、タイミングエラーは生じない。クロック信号ｃｋｍの立ち上がりタイミングとクロック信号ｃｋｓの立ち下がりタイミングの間の時間が所定の閾値よりも短い時間ｄｂの場合、タイミングエラーが生じる。
【０１０８】
２サイクル分の試験パターン情報が用いられる理由は、レーシング検証を可能とするためである。
一方、最後の１サイクル分、低速シミュレーションを行う理由は、全記憶素子の状態などを、スキャンシフト動作区間の全区間を低速シミュレーションで行った場合と同等とするためである。これによりスキャンシフト動作区間の全区間を低速シミュレーションで行った場合と同等のシミュレーション品質が保証される。
【０１０９】
高速シミュレーションが行われる図１２のタイミングｔ２からタイミングｔ３の区間は、大規模回路の場合、たとえば、数１００×１０３サイクル分から数１０００×１０３サイクル分となる。そのため、スキャンシフト動作区間のほとんどが、高速シミュレーションが行われる区間となる。
【０１１０】
ステップＳ２３の処理で、現在のサイクルが高速シミュレーション対象サイクルではないと判定された場合には、ステップＳ２４の処理が行われ、高速シミュレーション対象サイクルであると判定された場合には、ステップＳ２５の処理が行われる。
【０１１１】
（Ｓ２４）シミュレーション部４６は、１サイクル分、低速シミュレーションを行い、その後、ステップＳ２７の処理を行う。
（Ｓ２５）シミュレーション部４６は、試験パターン情報に基づいて、スキャンチェーンに含まれる複数の記憶素子のうち、そのサイクルにおいて出力値が変化する予定の記憶素子を計算する。
【０１１２】
（Ｓ２６）その後、シミュレーション部４６は、１サイクル分、高速シミュレーションを行う。その後、シミュレーション部４６は、ステップＳ２７の処理を行う。
（Ｓ２７）シミュレーション部４６は、ステップＳ２４〜Ｓ２６の処理でエラーが検出されたか否か、または全サイクルの試験パターン情報が抽出されたか否かを判定する。そして、エラーが検出された場合、または、全サイクルの試験パターン情報が抽出された場合、シミュレーション処理を終了する。シミュレーション部４６は、エラーが検出されず、全サイクルの試験パターン情報が抽出されていない場合、ステップＳ２１からの処理を繰り返す。
【０１１３】
なお、エラーが検出された場合でも全サイクルの試験パターン情報の抽出が終わるまでは、ステップＳ２１からの処理が繰り返されるようにしてもよい。
次に、１サイクル分の低速シミュレーションの手順の一例を説明する。
【０１１４】
図１４は、１サイクル分の低速シミュレーションの手順の一例を示すフローチャートである。
（Ｓ３０）シミュレーション部４６は、現在のサイクルにおいて生じる信号変化イベントを１つ選択する。信号変化イベントは、スキャンイン値の変化や、遅延計算結果情報に基づいて算出できるクロック信号の論理レベルの変化のほか、前述した、クロック制御回路の制御値や、組み合わせ回路の入出力値の変化なども含まれる。
【０１１５】
（Ｓ３１）その後、シミュレーション部４６は、現在のスキャンシフト回数を示す状態値に基づいて、スキャンシフト回数が１回目または２回目であるか否かを判定する。シミュレーション部４６は、スキャンシフト回数が１回目または２回目であると判定した場合には、ステップＳ３２の処理を行う。シミュレーション部４６は、スキャンシフト回数が１回目または２回目以外の場合（低速シミュレーションは始めの２サイクルと最後の１サイクル行われるため、スキャンシフト回数が最後の場合）であると判定した場合には、ステップＳ３６の処理を行う。
【０１１６】
（Ｓ３２）シミュレーション部４６は、選択した信号変化イベントが、スキャンチェーンに含まれるある記憶素子のクロック端子の信号変化であるか否かを判定する。シミュレーション部４６は、選択した信号変化イベントが、スキャンチェーンに含まれるある記憶素子のクロック端子の信号変化であると判定した場合には、ステップＳ３３の処理を行う。シミュレーション部４６は、選択した信号変化イベントが、スキャンチェーンに含まれる記憶素子のクロック端子の信号変化ではないと判定した場合には、ステップＳ３４の処理を行う。
【０１１７】
（Ｓ３３）シミュレーション部４６は、その記憶素子のクロック端子に信号変化があった旨を示すクロック信号伝搬情報を計算途中データ記憶部４３に記憶する。その後、シミュレーション部４６は、ステップＳ３６の処理を行う。
【０１１８】
（Ｓ３４）シミュレーション部４６は、選択した信号変化イベントが、シフト動作と直接関係のないクロックツリー内の回路要素のクロック端子の信号変化であるか否かを判定する。シミュレーション部４６は、選択した信号変化イベントが、そのような回路要素のクロック端子の信号変化であると判定した場合には、ステップＳ３５の処理を行う。シミュレーション部４６は、選択した信号変化イベントが、そのような回路要素のクロック端子の信号変化ではないと判定した場合には、ステップＳ３６の処理を行う。
【０１１９】
シフト動作と直接関係のないクロックツリー内の回路要素としては、前述のようにクロックツリーに含まれるＲＯＭやＲＡＭなどがある。
（Ｓ３５）シミュレーション部４６は、シフト動作と直接関係のないクロックツリー内の回路要素のクロック端子に信号変化があった旨を示すクロック信号伝搬情報を計算途中データ記憶部４３に記憶する。その後、シミュレーション部４６は、ステップＳ３６の処理を行う。
【０１２０】
（Ｓ３６）シミュレーション部４６は、信号変化シミュレーションを行う。信号変化シミュレーションは、たとえば、記憶素子においてスキャンイン値とクロック信号の変化に応じたスキャンアウト値の変化や、組み合わせ回路の入力値の変化に応じた出力値の変化などが計算される処理である。また、記憶素子の、セットアップ時間やホールド時間に関してのタイミング検証が行われる。たとえば、前述したＬＳＳＤラッチ回路が用いられる場合のタイミングエラーの検出は、２回分のスキャンシフト時の、信号変化シミュレーションにて行われる。
【０１２１】
さらに、信号変化シミュレーションでは、スキャンチェーンのスキャンアウト端子（外部端子）から出力されるスキャンアウト値と、その期待値との比較が行われ、期待値エラーが発生しているか否かの検出が行われる。
【０１２２】
信号変化シミュレーション結果は、計算途中データ記憶部４３に記憶される。その後、シミュレーション部４６は、ステップＳ３７の処理を行う。
（Ｓ３７）シミュレーション部４６は、サイクルが終了（１サイクル分の時間が経過）したか否かを判定する。シミュレーション部４６は、サイクルが終了したと判定した場合には、１サイクル分の低速シミュレーションを終了し、サイクルが終了していないと判定した場合には、ステップＳ３０からの処理を繰り返す。
【０１２３】
次に、出力値が変化する予定の記憶素子を計算する処理の手順の一例を説明する。
図１５は、出力値が変化する予定の記憶素子を計算する処理の手順の一例を示すフローチャートである。
【０１２４】
（Ｓ４０）シミュレーション部４６は、現在のサイクルの試験パターン情報に基づいて、スキャンチェーン内の全記憶素子のうち、出力値が変化予定の記憶素子群の先頭を特定する。
【０１２５】
たとえば、図６に示した半導体装置５０のスキャンチェーン５１ａ〜５１ｐのうち、外部端子であるスキャンイン端子５２ａ〜５２ｐにスキャンイン値が入力されるスキャンチェーンと、その値が、試験パターン情報から検出される。スキャンイン値に変化があるスキャンチェーンの先頭の記憶素子の出力値が現在のサイクルで変化する可能性があるため、その記憶素子が特定される。
【０１２６】
（Ｓ４１）その後、シミュレーション部４６は、現在のスキャンシフト回数を示す状態値に基づいて、スキャンシフト回数が３回目であるか否かを判定する。シミュレーション部４６は、スキャンシフト回数が３回目であると判定した場合には、ステップＳ４２の処理を行い、スキャンシフト回数が３回目でないと判定した場合には、ステップＳ４６の処理を行う。
【０１２７】
（Ｓ４２）シミュレーション部４６は、出力値が変化予定の記憶素子群を特定する。
たとえば、図６のスキャンチェーン５１ａ〜５１ｐの先頭の記憶素子５１ａ１〜５１ｐ１が、ステップＳ４０の処理で特定されたとする。このとき、その後段の記憶素子５１ａ２〜５１ａｎ，５１ｂ２〜５１ｂｎ，…，５１ｐ２〜５１ｐｎのうち、現在の出力値（保持値）と入力値とが異なっている記憶素子群が、現在のサイクルで出力値が変化予定の記憶素子群として特定される。
【０１２８】
（Ｓ４３）その後、シミュレーション部４６は、図１４のステップＳ３３の処理で記憶されたクロック信号伝搬情報に基づいて、シフト動作が行われる記憶素子を含む全スキャンチェーンの全記憶素子に、クロック信号が伝搬しているか否かを判定する。シミュレーション部４６は、シフト動作が行われる記憶素子を含む全スキャンチェーンの全記憶素子に、クロック信号が伝搬していると判定した場合には、ステップＳ４４の処理を行う。シミュレーション部４６は、シフト動作が行われる記憶素子を含む全スキャンチェーンの全記憶素子に、クロック信号が伝搬していないと判定した場合には、ステップＳ４５の処理を行う。
【０１２９】
（Ｓ４４）シミュレーション部４６は、図１４のステップＳ３５の処理で記憶されたクロック信号伝搬情報に基づいて、スキャンシフトに直接関係ないクロックツリー内の回路素子にクロック信号が伝搬しているか否かを判定する。シミュレーション部４６は、スキャンシフトに直接関係ないクロックツリー内の回路素子にクロック信号が伝搬していると判定した場合には、出力値が変化する予定の記憶素子を計算する処理を終了する。シミュレーション部４６は、スキャンシフトに直接関係ないクロックツリー内の回路素子にクロック信号が伝搬していないと判定した場合には、ステップＳ４５の処理を行う。
【０１３０】
（Ｓ４５）シミュレーション部４６は、エラーが発生したことを判定し、エラーの内容を示すエラー情報を、計算途中データ記憶部４３に記憶し、出力値が変化する予定の記憶素子を計算する処理を終了する。
【０１３１】
（Ｓ４６）シミュレーション部４６は、前サイクルにおいて出力値が変化する予定の記憶素子群を１ビット分シフトさせて現在のサイクルにおいて出力値が変化する予定の記憶素子群を特定する。その後、シミュレーション部４６は、出力値が変化する予定の記憶素子を計算する処理を終了する。
【０１３２】
図１６は、出力値が変化する予定の記憶素子群の一例を示す図である。
たとえば、あるサイクルＡにおいて、スキャンチェーン５１ａ内の記憶素子５１ａｉ〜５１ａｊが、出力値が変化する予定の記憶素子群であるとする。次のサイクルＡ＋１では、記憶素子５１ａｉ〜５１ａｊを１ビット分（記憶素子１つ分）、スキャンアウト端子５３ａの方向にシフトさせた記憶素子群である記憶素子５１ａｉ＋１〜５１ａｊ＋１が、出力値が変化する予定の記憶素子群として特定される。
【０１３３】
さらに次のサイクルＡ＋２では、同様に、記憶素子５１ａｉ＋１〜５１ａｊ＋１を１ビット分、スキャンアウト端子５３ａの方向にシフトさせた記憶素子群である記憶素子５１ａｉ＋２〜５１ａｊ＋２が、出力値が変化する予定の記憶素子群として特定される。
【０１３４】
なお、図１５に示した処理の手順は一例であり、各処理の順序は適宜入れ替えてもよい。たとえば、ステップＳ４３，Ｓ４４の処理などは順序を入れ替えてもよい。
次に、１サイクル分の高速シミュレーションの手順の一例を説明する。
【０１３５】
図１７は、１サイクル分の高速シミュレーションの手順の一例を示すフローチャートである。
（Ｓ５０）シミュレーション部４６は、現在のサイクルにおいて生じる信号変化イベントを１つ選択する。
【０１３６】
（Ｓ５１）シミュレーション部４６は、選択した信号変化イベントが、クロック制御回路の信号変化であるか否か（クロック信号の伝搬が停止される状態か否か）を判定する。シミュレーション部４６は、選択した信号変化イベントが、クロック制御回路の信号変化である場合には、ステップＳ５２の処理を行い、選択した信号変化イベントが、クロック制御回路の信号変化ではない場合には、ステップＳ５３の処理を行う。
【０１３７】
（Ｓ５２）シミュレーション部４６は、エラーが発生したことを判定し、エラーの内容を示すエラー情報を、計算途中データ記憶部４３に記憶し、その後ステップＳ５７の処理を行う。たとえば、図８に示したようなＡＮＤ回路５５ｂやセレクタ５５ｃなどのクロック制御回路において、制御値ｃｎｔ１が１から０に変化する場合や、選択信号ｓｅｌがクロック信号ｃｋを選択するように変化する場合、クロック信号が伝搬されない記憶素子が生じる。このような場合には、エラーが発生したと判定される。
【０１３８】
（Ｓ５３）次にシミュレーション部４６は、選択した信号変化イベントが、クロック源の信号変化であるか否かを判定する。シミュレーション部４６は、選択した信号変化イベントが、クロック源の信号変化である場合には、ステップＳ５４の処理を行い、選択した信号変化イベントが、クロック源の信号変化ではない場合には、ステップＳ５６の処理を行う。
【０１３９】
（Ｓ５４）シミュレーション部４６は、クロック信号の供給対象の記憶素子群にクロック信号を供給し、信号変化シミュレーションを行う。クロック信号の供給対象の記憶素子群は、出力値が変化予定の記憶素子群に対して、スキャンアウト端子方向に１つ記憶素子を追加したものである。これは、前述したレーシング現象などの影響を考慮できるようにするためである。
【０１４０】
図１８は、クロック信号の供給対象の記憶素子群の一例を示す図である。
あるサイクルＡにおいて、記憶素子５１ａｉ〜５１ａｊが、出力値が変化予定の記憶素子群であると特定されている場合、クロック信号の供給対象の記憶素子群は、記憶素子５１ａｉ〜５１ａｊ＋１となる。
【０１４１】
シミュレーション部４６は、前処理結果記憶部４２に記憶されている遅延計算結果情報から、たとえば、記憶素子５１ａｉ〜５１ａｊ＋１のそれぞれについて予め算出されている遅延時間（立ち上がり遅延と立ち下がり遅延）と信号極性を取得する。
【０１４２】
そして、クロック源が出力するクロック信号を各遅延時間、遅延させたクロック信号であり、取得した信号極性のクロック信号を、記憶素子５１ａｉ〜５１ａｊ＋１のそれぞれのクロック端子に供給（設定）する。そして、シミュレーション部４６は、クロック信号が供給される各記憶素子においてスキャンイン値とクロック信号の変化に応じたスキャンアウト値の変化を計算する。また、クロック信号が供給される各記憶素子の、セットアップ時間やホールド時間に関してのタイミング検証が行われる。
【０１４３】
さらに、信号変化シミュレーションでは、スキャンチェーンのスキャンアウト端子（外部端子）から出力されるスキャンアウト値と、その期待値との比較が行われ、期待値エラーが発生していないか否かの検出が行われる。
【０１４４】
信号変化シミュレーション結果は、計算途中データ記憶部４３に記憶される。
（Ｓ５５）シミュレーション部４６は、スキャンシフトに直接関係ないクロックツリー内の回路素子にクロック信号を供給し、信号変化シミュレーションを行う。シミュレーション部４６は、前処理結果記憶部４２に記憶されている遅延計算結果情報から、たとえば、クロックツリー内のＲＯＭやＲＡＭなどの回路素子について予め算出されている遅延時間（立ち上がり遅延と立ち下がり遅延）と信号極性を取得する。そして、クロック源が出力するクロック信号をその遅延時間、遅延させたクロック信号であり、取得した信号極性のクロック信号を、その回路素子のクロック端子に供給（設定）する。そして、シミュレーション部４６は、クロック信号が供給されるその回路素子において入力値とクロック信号の変化に応じた出力値の変化を計算（シミュレーション）する。シミュレーション結果は、計算途中データ記憶部４３に記憶される。
【０１４５】
（Ｓ５６）シミュレーション部４６は、信号変化シミュレーションを行う。ここでの信号変化シミュレーションは、たとえば、クロック源が出力するクロック信号の変化とは無関係な、組み合わせ回路の入力値の変化に応じた出力値の変化などが計算される処理である。信号変化シミュレーション結果は、計算途中データ記憶部４３に記憶される。その後ステップＳ５７の処理が行われる。
【０１４６】
（Ｓ５７）シミュレーション部４６は、サイクルが終了（１サイクル分の時間が経過）したか否かを判定する。シミュレーション部４６は、サイクルが終了したと判定した場合には、１サイクル分の高速シミュレーションを終了し、サイクルが終了していないと判定した場合には、ステップＳ５０からの処理を繰り返す。
【０１４７】
なお、図１７に示した高速シミュレーション処理の手順は一例であり、各処理の順序は適宜入れ替えてもよい。たとえば、ステップＳ５４，Ｓ５５の処理などは順序を入れ替えてもよい。
【０１４８】
以上のようなシミュレーション処理後、図４に示したようにレポート出力処理が行われる。結果出力部４７は、シミュレーション部４６でのシミュレーション処理結果に基づいて、レポート情報を出力する。たとえば、結果出力部４７は、レポート情報を計算結果記憶部４４に記憶してもよいし、レポート情報をディスプレイ３４ａに表示させてもよい。
【０１４９】
図１９は、レポート情報の表示例を示す図である。
たとえば、レポート情報として、シミュレーション開始時刻のほか、タイミングエラーの情報、期待値エラーの情報が表示される。
【０１５０】
タイミングエラーの情報としては、タイミングエラーが発生したシミュレーション時刻やサイクル、セットアップ時間についてのタイミングエラーかホールド時間についてのタイミングエラーかを示す情報が表示される。さらに、タイミングエラーが生じた回路要素の素子ＩＤが、たとえば、“ｇａｔｅ（／ＥＯ／ＪＢＡ９Ｂ／Ｉ０２５Ｈ）”などと表示され、回路要素の種類が、たとえば、“ｔｙｐｅ（ＫＯＢＳＣ）”などと表示される。さらに、どの端子間の信号のタイミングエラーかを示す情報として、たとえば、クロック端子とスキャンイン端子の信号のタイミングエラーの場合には、“ｐｉｎ（ＣＬＫ  ＳＩ）”などと表示される。
【０１５１】
期待値エラー（“ｓｔｒｏｂｅ  ｅｒｒｏｒ”と表記されている）の情報としては、期待値エラーが発生したシミュレーション時刻やサイクルの情報が表示される。さらに、どのスキャンアウト端子で期待値エラーが生じたかを示す情報が、たとえば、“ｐｉｎ（ＣＲ７４）”などと表示される。また、シミュレーションで得られたスキャンアウト値と、期待値とが、たとえば、“ｓｔａｔｕｓ（ｓｉｍ：Ｘ  ｐａｔ：Ｌ）”などと表示される。
【０１５２】
さらに、回路情報名や、試験パターン情報名、シミュレーションの単位時間、シミュレーション実行時間、期待値エラー数、タイミングエラー数などが表示される。
以上のように、スキャンチェーンの接続試験を設計検証工程でシミュレーションする第２の実施の形態の設計検証支援装置３０は、クロック源とスキャンチェーンの各記憶素子間で生じるクロック信号の遅延時間を予め算出する。そして、設計検証支援装置３０は、そのクロック信号が供給されたときの動作（出力値の変化）を計算する記憶素子の数を、試験パターンによって出力値が変化する予定の記憶素子数に基づいて制限する。これにより、計算時間を短縮できる。
【０１５３】
また、スキャンチェーンの接続試験のシミュレーションでエラーが検出された場合、エラー解析のために繰り返しシミュレーションが行われる場合があるが、上記の手法によれば計算時間を短縮できることから、エラー解析に関するＴＡＴも短縮できる。また、これにより、設計検証工程の期間を短縮でき、半導体装置の製造工程全体の期間の短縮も期待できる。
【０１５４】
なお、前述のように、上記の処理内容は、設計検証支援装置３０にプログラムを実行させることで実現できる。
プログラムは、コンピュータ読み取り可能な記録媒体（たとえば、記録媒体３６ａ）に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、ＦＤおよびＨＤＤが含まれる。光ディスクには、ＣＤ、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）、ＤＶＤおよびＤＶＤ−Ｒ／ＲＷが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体（たとえば、ＨＤＤ３３）にプログラムをコピーして実行してもよい。
【０１５５】
以上、実施の形態に基づき、本発明の半導体装置の設計検証支援装置、半導体装置の設計検証支援プログラム及び半導体装置の設計検証支援方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【０１５６】
１０  設計検証支援装置
１１  記憶部
１１ａ  回路情報
１１ｂ  試験パターン情報
１１ｃ  遅延計算結果情報
１２  処理部
２０  半導体装置
２１  クロック源
２２  クロックツリー
２２ａ１〜２２ａｍ  クロックバッファ
２３  スキャンチェーン
２３ａ１〜２３ａｎ  記憶素子
２３ｂ  スキャンイン端子
２３ｃ  スキャンアウト端子
ＣＫ，ＣＫａ，ＣＫｂ  クロック信号
ｄ１，ｄ２  遅延時間
【図１】
2018197969.tif 000003
【図２】
2018197969.tif 000004
【図３】
2018197969.tif 000005
【図４】
2018197969.tif 000006
【図５】
2018197969.tif 000007
【図６】
2018197969.tif 000008
【図７】
2018197969.tif 000009
【図８】
2018197969.tif 000010
【図９】
2018197969.tif 000011
【図１０】
2018197969.tif 000012
【図１１】
2018197969.tif 000013
【図１２】
2018197969.tif 000014
【図１３】
2018197969.tif 000015
【図１４】
2018197969.tif 000016
【図１５】
2018197969.tif 000017
【図１６】
2018197969.tif 000018
【図１７】
2018197969.tif 000019
【図１８】
2018197969.tif 000020
【図１９】
2018197969.tif 000021