【解決手段】実施形態によれば、半導体集積回路は、第1スキャンチェーンSC2及び第2スキャンチェーンSC3を含む論理回路10と、クロック生成回路11と、テスト制御回路12とを含む。第1スキャンチェーンは、第1スキャンデータ入力端子SI及び第1出力端子DQを有する第1フリップフロップFF2と、第1マルチプレクサMX2aとを含む。第1マルチプレクサは、テスト制御回路から受信した第1信号LMに基づいて、第1スキャンデータ入力端子と第1出力端子とを電気的に接続して第1クローズドループを構成可能である。第2スキャンチェーンは、第2スキャンデータ入力端子SIと第3出力端子DQとが接続されていない第2フリップフロップFF3を含む。
前記クロック生成回路は、前記ループ動作の前記期間に、前記第1スキャンチェーンに前記第1クロック信号を1サイクル送信し、前記第3スキャンチェーンに前記第3クロック信号を2サイクル送信する、
請求項7に記載の半導体集積回路。
第1スキャンデータ入力端子及び第1出力端子を有する第1フリップフロップと、前記第1出力端子に接続された第1入力端子、テストパタンが入力される第2入力端子、及び前記第1スキャンデータ入力端子に接続された第2出力端子を有する第1マルチプレクサとを含む第1スキャンチェーンと、第2スキャンデータ入力端子及び第3出力端子を有し且つ前記第2スキャンデータ入力端子と前記第3出力端子が接続されていない第2フリップフロップを含む第2スキャンチェーンとを含むテスト回路を生成し、半導体集積回路の第1ネットリストに前記第1及び第2スキャンチェーンを挿入した第2ネットリストを生成するスキャンチェーン挿入部と、
前記第1マルチプレクサが、前記第1スキャンデータ入力端子と前記第1出力端子とを電気的に接続して構成される第1クローズドループの情報を生成し、前記スキャンチェーン挿入部に送信するループ構成生成部と、
前記第2ネットリストを外部に出力する出力部と
を備える、
回路設計装置。
前記テスト回路は、第3スキャンデータ入力端子及び第4出力端子を有する第3フリップフロップと、前記第4出力端子に接続された第4スキャンデータ入力端子及び第5出力端子を有する第4フリップフロップと、前記第5出力端子に接続された第3入力端子、前記テストパタンが入力される第4入力端子、及び前記第3スキャンデータ入力端子に接続された第6出力端子を有する第2マルチプレクサとを含む第3スキャンチェーンを更に含む、
請求項10に記載の回路設計装置。
第1スキャンデータ入力端子及び第1出力端子を有する第1フリップフロップと、前記第1出力端子に接続された第1入力端子、テストパタンが入力される第2入力端子、及び前記第1スキャンデータ入力端子に接続された第2出力端子を有する第1マルチプレクサとを含む第1スキャンチェーンと、第2スキャンデータ入力端子及び第3出力端子を有し且つ前記第2スキャンデータ入力端子と前記第3出力端子が接続されていない第2フリップフロップを含む第2スキャンチェーンとを含むテスト回路を生成することと、
半導体集積回路の第1ネットリストに前記第1及び第2スキャンチェーンを挿入した第2ネットリストを生成することと、
前記第1マルチプレクサが、前記第1スキャンデータ入力端子と前記第1出力端子とを電気的に接続して構成される第1クローズドループの情報を生成することと、
前記第2ネットリストを外部に出力することと
を備える、
装置が実行する回路設計方法。
前記テスト回路を生成することは、第3スキャンデータ入力端子及び第4出力端子を有する第3フリップフロップと、前記第4出力端子に接続された第4スキャンデータ入力端子及び第5出力端子を有する第4フリップフロップと、前記第5出力端子に接続された第3入力端子、前記テストパタンが入力される第4入力端子、及び前記第3スキャンデータ入力端子に接続された第6出力端子を有する第2マルチプレクサとを含む第3スキャンチェーンを生成することを更に含む、
請求項16記載の回路設計方法。
【発明を実施するための形態】
【0007】
以下、図面を参照して実施形態について説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。
【0008】
1.第1実施形態
第1実施形態に係る半導体集積回路について説明する。
【0009】
1.1 構成
1.1.1 半導体集積回路の構成について
まず、半導体集積回路の構成の一例について、
図1を用いて説明する。
図1は、本実施形態に係る半導体集積回路のブロック図である。なお、
図1の例は、スキャンテストを実行する際の概略構成を示している。
【0010】
本実施形態の半導体集積回路では、例えば、外部テスタの制御に基づいて、または、半導体集積回路内に設けられた論理回路の組み込み自己テスト(LBIST:Logic Build In Self-Test)に基づいて、論理回路のスキャンテスト(以下、単に「テスト」とも表記する)が実行される。そして、スキャンテストの結果に基づいて、半導体集積回路の故障診断が行われる。以下では、外部テスタの制御に基づいてテストが実行される場合について説明する。スキャンテストでは、論理回路に予め組み込まれたスキャンパターンを用いてテストが行われる。
【0011】
テストは、大まかに、シフトイン動作と、キャプチャ動作と、シフトアウト動作とを含む。シフトイン動作は、テストパタン(スキャンデータ)を、複数のフリップフロップがシリアル接続されたスキャンチェーンに入力する動作である。キャプチャ動作は、スキャンチェーン内のフリップフロップに接続された組み合わせ回路において、シフトイン動作によりフリップフロップに設定された値に基づく演算処理を実行させ、その結果をフリップフロップに取り込む動作である。シフトアウト動作は、フリップフロップに取り込まれた処理結果を出力する動作である。テストにおいて2回目以降のシフトイン動作は、シフトアウト動作と重複して同時に行われる。以下、シフトイン動作及びシフトアウト動作を限定しない場合は、「スキャンシフト動作」と表記する。
【0012】
図1に示すように、半導体集積回路1は、論理回路10、クロック生成回路11、及びテスト制御回路12を含む。
【0013】
論理回路10は、例えば、タスクを実行するための各種演算処理を行う。テストの際、論理回路10内には、複数のスキャンチェーンSCが設けられる。また、テストの際、論理回路10は、複数の異なるクロック信号CLKを受信する。例えば、
図1の例では、論理回路10内に、3つのスキャンチェーンSC1〜SC3が設けられている。そして、スキャンチェーンSC1〜SC3は、クロック信号CLK1〜CLK3に基づいてそれぞれ動作する。各スキャンチェーンの構成の詳細については後述する。
【0014】
なお、
図1の例では、1つのクロック信号CLKに基づいて1つのスキャンチェーンSCが動作する場合が示されているが、1つのクロック信号CLKに基づいて複数のスキャンチェーンSCが動作していてもよい。
【0015】
クロック生成回路11は、クロック信号CLK1〜CLK3を生成する。クロック生成回路11は、生成したクロック信号CLK1〜CLK3を、スキャンチェーンSC1〜SC3にそれぞれ送信する。
【0016】
テスト制御回路12は、外部テスタから受信した制御信号に基づいて、半導体集積回路1におけるテスト動作を制御する。テスト制御回路12は、テストの際に、クロック生成回路11及び各スキャンチェーンSCを制御する。テスト制御回路12は、各スキャンチェーンSCに、スキャンイネーブル信号SE及びループモード信号LMを送信する。
【0017】
スキャンイネーブル信号SEは、スキャンチェーンSC内に設けられたフリップフロップFFにおいて、テストパタンTP(スキャンデータ)の入力をイネーブルにする信号である。
【0018】
ループモード信号LMは、スキャンシフト動作前に実行されるループ動作において、スキャンチェーンSC内に設けられたマルチプレクサMXを制御するための信号である。ループ動作は、クロック信号CLK1〜CLK3の供給開始のタイミングを制御することにより、クロック信号CLK毎に、対応するフリップフロップFFが動作を開始するタイミングを変える動作である。ループ動作の詳細については後述する。
【0019】
1.1.2 スキャンチェーンの構成
次に、スキャンチェーンSCの構成について、引き続き
図1を用いて説明する。
【0020】
まず、スキャンチェーンSC1の構成について説明する。以下では、説明を簡略化するため、各スキャンチェーンSCが4つのフリップフロップを含む場合について説明するが、各スキャンチェーンSCに含まれるフリップフロップの個数は、任意に設計され得る。
【0021】
スキャンチェーンSC1は、例えば、4つのフリップフロップFF1a〜FF1d及び2つのマルチプレクサMX1a及びMX1cを含む。
【0022】
フリップフロップFF1a〜FF1dの構成は、同じである。以下、フリップフロップFF1a〜FF1dのいずれかを限定しない場合は、「フリップフロップFF1」と表記する。フリップフロップFF1は、例えば、データ入力端子DI、スキャンデータ入力端子SI、制御信号入力端子SEI、クロック入力端子、及び出力端子DQを含む。
【0023】
データ入力端子DIは、例えば、図示せぬ順序回路に接続され、論理回路10の各種演算処理に対応するデータが入力される。例えば、キャプチャ動作において、対応する順序回路が処理したデータがデータ入力端子DIから入力される。
【0024】
スキャンデータ入力端子SIには、例えば、スキャンデータ(テストパタンTP)が入力される。
【0025】
制御信号入力端子SEIには、スキャンイネーブル信号SEが入力される。例えば、スキャンイネーブル信号SEが、High(“H”)レベルである場合、スキャンデータ入力端子SIのデータがフリップフロップFF1に取り込まれる。他方で、スキャンイネーブル信号SEが、Low(“L”)レベルである場合、データ入力端子DIのデータがフリップフロップFF1に取り込まれる。
【0026】
クロック入力端子には、クロック信号CLK1が入力される。例えば、クロック信号CLK1が“L”レベルから“H”レベルに立ち上がるタイミングで、データがフリップフロップFF1に取り込まれる。
【0027】
出力端子DQから、データが出力される。
【0028】
マルチプレクサMX1a及びMX1cの構成は、同じである。以下、マルチプレクサMX1a及びMX1cのいずれかを限定しない場合は、「マルチプレクサMX1」と表記する。例えば、マルチプレクサMX1は、入力端子(“1”)、入力端子(“0”)、制御信号入力端子、及び出力端子を含む。マルチプレクサMX1の制御信号入力端子には、ループモード信号LMが入力される。例えば、ループモード信号LMが“H”レベル(“1”データ)である場合、入力端子(“1”)が選択される。他方で、例えば、ループモード信号LMが“L”レベル(“0”データ)である場合、入力端子(“0”)が選択される。
【0029】
マルチプレクサMX1aの入力端子(“1”)は、フリップフロップFF1bの出力端子DQに接続される。マルチプレクサMX1aの入力端子(“0”)には、テストパタンTPが入力される。マルチプレクサMX1aの出力端子は、フリップフロップFF1aのスキャンデータ入力端子SIに接続される。フリップフロップFF1aの出力端子DQは、フリップフロップFF1bのスキャンデータ入力端子SIに接続される。
【0030】
フリップフロップFF1cとフリップフロップFF1dとマルチプレクサMX1cとの接続は、フリップフロップFF1aとフリップフロップFF1bとマルチプレクサMX1aとの接続と同じである。マルチプレクサMX1cの入力端子(“1”)は、フリップフロップFF1dの出力端子DQに接続される。マルチプレクサMX1cの入力端子(“0”)は、フリップフロップFF1bの出力端子DQが接続される。マルチプレクサMX1cの出力端子は、フリップフロップFF1cのスキャンデータ入力端子SIに接続される。フリップフロップFF1cの出力端子DQは、フリップフロップFF1dのスキャンデータ入力端子SIに接続される。フリップフロップFF1dの出力端子DQからスキャンチェーンSC1の出力データSO1が出力される。
【0031】
例えば、スキャンイネーブル信号が“H”レベルであり且つループモード信号LMが“H”レベルである場合、フリップフロップFF1a及びFF1bによるクローズドループと、フリップフロップFF1c及びFF1dによるクローズドループとが構成される。この場合、クロック信号CLK1の立ち上がりのタイミングで、フリップフロップFF1aの出力データがフリップフロップFF1bに取り込まれ、フリップフロップFF1bの出力データがフリップフロップFF1aに取り込まれる。また、フリップフロップFF1cの出力データがフリップフロップFF1dに取り込まれ、フリップフロップFF1dの出力データがフリップフロップFF1cに取り込まれる。このため、2サイクルのクロック信号CLKにより、クロック信号CLK1が2回立ち上がると、各ループが1周して、フリップフロップFF1a〜FF1dには、ループ前のデータが保持される。以下、2つのフリップフロップFFで構成されるクローズドループを「2段のループ」とも表記する。2段のループでは、2サイクルのクロック信号CLK1により、データが元のフリップフロップFFに戻る。すなわち、クローズドループの段数と同じサイクル数のクロック信号CLKを受信することにより、データが元のフリップフロップFFに戻る。
【0032】
次に、スキャンチェーンSC2の構成について説明する。
スキャンチェーンSC2は、例えば、4つのフリップフロップFF2a〜FF2d及び4つのマルチプレクサMX2a〜MX2dを含む。
【0033】
フリップフロップFF2a〜FF2dの構成は、フリップフロップFF1と同じである。以下、フリップフロップFF2a〜FF2dのいずれかを限定しない場合は、「フリップフロップFF2」と表記する。
【0034】
フリップフロップFF2のクロック入力端子には、クロック信号CLK2が入力される。例えば、クロック信号CLK2が“L”レベルから“H”レベルに立ち上がるタイミングで、データがフリップフロップFF2に取り込まれる。
【0035】
マルチプレクサMX2a〜MX2dの構成は、マルチプレクサMX1と同じである。以下、マルチプレクサMX2a〜MX2dのいずれかを限定しない場合は、「マルチプレクサMX2」と表記する。また、マルチプレクサMX1及びMX2のいずれかを限定しない場合は、「マルチプレクサMX」と表記する。
【0036】
マルチプレクサMX2aの入力端子(“1”)は、フリップフロップFF2aの出力端子DQに接続される。マルチプレクサMX2aの入力端子(“0”)には、テストパタンTPが入力される。マルチプレクサMX2aの出力端子は、フリップフロップFF2aのスキャンデータ入力端子SIに接続される。
【0037】
フリップフロップFF2bとマルチプレクサMX2bとの接続、フリップフロップFF2cとマルチプレクサMX2cとの接続、及びフリップフロップFF2dとマルチプレクサMX2dとの接続は、フリップフロップFF2aとマルチプレクサMX2aとの接続と同様である。マルチプレクサMX2bの入力端子(“0”)は、フリップフロップFF2aの出力端子DQに接続される。マルチプレクサMX2cの入力端子(“0”)は、フリップフロップFF2bの出力端子DQに接続される。マルチプレクサMX2dの入力端子(“0”)は、フリップフロップFF2cの出力端子DQに接続される。フリップフロップFF2dの出力端子DQからスキャンチェーンSC2の出力データSO2が出力される。
【0038】
例えば、スキャンイネーブル信号が“H”レベルであり且つループモード信号LMが“H”レベルである場合、フリップフロップFF2毎にクローズドループが構成される。この場合、クロック信号CLK2の立ち上がりの回数によらず、各フリップフロップFF2のデータは保持される。以下、1つのフリップフロップFFで構成されるクローズドループを「1段のループ」とも表記する。
【0039】
次に、スキャンチェーンSC3の構成について説明する。
スキャンチェーンSC2は、例えば、4つのフリップフロップFF3a〜FF3dを含む。
【0040】
フリップフロップFF3a〜FF3dの構成は、フリップフロップFF1と同じである。以下、フリップフロップFF3a〜FF3dのいずれかを限定しない場合は、「フリップフロップFF3」と表記する。また、フリップフロップFF1、FF2、及びFF3のいずれかを限定しない場合は、「フリップフロップFF」と表記する。
【0041】
フリップフロップFF3のクロック入力端子には、クロック信号CLK3が入力される。例えば、クロック信号CLK3が“L”レベルから“H”レベルに立ち上がるタイミングで、データがフリップフロップFF3に取り込まれる。
【0042】
フリップフロップFF3aのスキャンデータ入力端子SIには、テストパタンTPが入力される。フリップフロップFF3aの出力端子DQは、フリップフロップFF3bのスキャンデータ入力端子SIに接続される。フリップフロップFF3bの出力端子DQは、フリップフロップFF3cのスキャンデータ入力端子SIに接続される。フリップフロップFF3cの出力端子DQは、フリップフロップFF3dのスキャンデータ入力端子SIに接続される。フリップフロップFF3dの出力端子DQからスキャンチェーンSC3の出力データSO3が出力される。
【0043】
フリップフロップFF3は、クローズドループが構成されていない。すなわち、各フリップフロップFF3において、スキャンデータ入力端子SIと出力端子DQとは接続されていない。
【0044】
1.2 テスト
1.2.1 テストの流れ
次に、テストの流れについて、
図2を用いて説明する。
図2は、テストの流れを示すフローチャートである。以下の説明では、クロック信号CLKの番号を変数n(1≦n≦3)で表す。変数nは、例えば、テスト制御回路12が備えるカウンタによって保持される変数であり、テスト制御回路12の制御によってインクリメントされる。
【0045】
図2に示すように、テスト制御回路12は、例えば、外部テスタから制御信号を受信するとテストを開始する(ステップS11)。
【0046】
テスト制御回路12は、まず、ループ動作を開始する(ステップS12)。テスト制御回路12は、ループモード信号LM及びスキャンイネーブル信号SEを“H”レベルとする。スキャンチェーンSC1では、2つのフリップフロップFF1a及びFF1bによるクローズドループと、2つのフリップフロップFF1c及びFF1dによるクローズドループとが構成される。スキャンチェーンSC2では、各フリップフロップFF2においてクローズドループが構成される。
【0047】
テスト制御回路12は、n=1を設定する(ステップS13)。これにより、クロック生成回路11は、スキャンチェーンSC1にクロック信号CLK1の送信を開始する(ステップS14)。
【0048】
テスト制御回路12は、変数nが(上限−1)に達したか確認する(ステップS15)。より具体的には、例えば、本実施形態では、変数nの上限は3である。このため、テスト制御回路12は、変数nが2であるか確認する。
【0049】
変数nが(上限−1)に達していない場合(ステップS15_No)、すなわち変数n=1である場合、テスト制御回路12は、変数nをインクリメントして、n=n+1とし(ステップS16)、ステップS14に戻る。より具体的には、テスト制御回路12は、変数n=2とし、ステップS14に戻って、クロック信号CLK2の送信を開始する。すなわち、クロック生成回路11は、クロック信号CLK1及びCLK2をスキャンチェーンSC1及びSC2にそれぞれ送信する。
【0050】
変数nが(上限−1)に達している場合(ステップS15_Yes)、テスト制御回路12は、ループ動作を終了し、スキャンシフト動作を実行する(ステップS17)。より具体的には、テスト制御回路12は、ループモード信号LMを“L”レベルにする。クロック生成回路11は、クロック信号CLK1〜CLK3をスキャンチェーンSC1〜SC3にそれぞれ送信する。各スキャンチェーンSCでは、スキャンシフト動作が実行される。このとき、各スキャンチェーンSCの出力データSO1〜SO3は、外部テスタに送信される。
【0051】
テストが終了していない場合(ステップS18_No)、テスト制御回路12は、スキャンイネーブル信号SEを“L”レベルとし、キャプチャ動作を実行する(ステップS19)。キャプチャ動作終了後、ステップS12に戻る。
【0052】
テストが終了した場合(ステップS18_Yes)、テスト制御回路12は、ループモード信号LM及びスキャンイネーブル信号SEを“L”レベルとする。クロック生成回路11は、クロック信号CLK1〜CLK3の送信を終了する。
【0053】
1.2.2 テスト時の各信号のタイミングチャート
次に、テスト時の各信号のタイミングチャートについて、
図3を用いて説明する。
図3は、テスト時のクロック信号CLK1〜CLK3、ループモード信号LM、及びスキャンイネーブル信号SEのタイミングチャートである。なお、
図3の例では、説明を簡略化するため、ループ動作及びスキャンシフト動作時のタイミングチャートを示しており、キャプチャ動作時のタイミングチャートは省略されている。
【0054】
図3に示すように、時刻t0〜t3の期間がループ動作に相当し、時刻t4〜t5の期間がスキャンシフト動作に相当する。
【0055】
まず、時刻t0において、テスト制御回路12は、ループモード信号LM及びスキャンイネーブル信号SEを“H”レベルにする。これにより、ループ動作が開始される。
【0056】
時刻t1において、クロック生成回路11は、1サイクルのクロック信号CLK1を生成し、スキャンチェーンSC1に送信する。時刻t1〜t2の期間、スキャンチェーンSC1内のフリップフロップFF1が動作し、スキャンチェーンSC2内のフリップフロップFF2及びスキャンチェーンSC3内のフリップフロップFF3は動作しない。
【0057】
時刻t2において、クロック生成回路11は、1サイクルのクロック信号CLK1及びCLK2を生成し、スキャンチェーンSC1及びSC2にそれぞれ送信する。このとき、クロック信号CLK1及びCLK2は互いに同期している。時刻t2〜t3の期間、スキャンチェーンSC1内のフリップフロップFF1及びスキャンチェーンSC2内のフリップフロップFF2が動作し、スキャンチェーンSC3内のフリップフロップFF3は動作しない。
【0058】
クロック信号CLK1及びCLK2のパルスが“H”レベルから“L”レベルに立ち下がった後、時刻t3において、テスト制御回路12は、ループモード信号LMを“L”レベルとする。これにより、ループ動作が終了する。クロック生成回路11は、ループ動作の期間、各スキャンチェーンSCに、ループの段数に応じたサイクル数のクロック信号CLKを送信する。従って、クロック生成回路11は、ループ動作の期間、クローズドループが形成されないスキャンチェーンSC3には、クロック信号CLK3を送信しない。
【0059】
時刻t4〜t5の期間、クロック生成回路11は、互いに同期しているクロック信号CLK1〜CLK3を生成し、スキャンチェーンSC1〜SC3にそれぞれ送信する。スキャンチェーンSC1〜SC3では、クロック信号CLK1〜CLK3に基づいたスキャンシフト動作がそれぞれ実行される。時刻t4〜t5の期間、スキャンチェーンSC1内のフリップフロップFF1、スキャンチェーンSC2内のフリップフロップFF2、及びスキャンチェーンSC3内のフリップフロップFF3が動作する。
図3の例では、スキャンチェーンSC1〜SC3にそれぞれ含まれるフリップフロップFFの個数が4個であるため、時刻t4〜t5の期間に、4サイクルのクロック信号CLK1〜CLK3がそれぞれ生成される。
【0060】
1.2.3 ループ動作の具体例
次に、ループ動作の具体例について、
図4〜
図7を用いて説明する。
図4〜
図7は、ループ動作時のクロック信号及びデータの流れを示す図である。なお、
図4〜
図7の例は、
図3における時刻t0〜t3にそれぞれ対応する。
【0061】
図4に示すように、例えば、スキャンチェーンSC1において、フリップフロップFF1a及びFF1cは、“1”データを保持し、フリップフロップFF1b及びFF1dは、“0”データを保持している。例えば、スキャンチェーンSC2において、フリップフロップFF2a及びFF2cは、“1”データを保持し、フリップフロップFF2b及びFF2dは、“0”データを保持している。また、例えば、スキャンチェーンSC3において、フリップフロップFF3a及びFF3cは、“1”データを保持し、フリップフロップFF3b及びFF3dは、“0”データを保持している。すなわち、各スキャンチェーンSCは、同じ“1010”データを保持している。なお、
図4の例では、説明を簡略化するため、スキャンチェーンSC1〜SC3が同じデータを保持している場合を示しているが、各スキャンチェーンSCのデータは異なっていてもよい。
【0062】
この状態において、テスト制御回路12は、ループモード信号LM及びスキャンイネーブル信号SEを“H”レベルにする(
図3の時刻t0)。
【0063】
図5に示すように、クロック生成回路11は、クロック信号CLK1を1サイクル生成し、スキャンチェーンSC1に送信する(
図3の時刻t1)。スキャンチェーンSC1では、クロック信号CLK1の立ち上がりのタイミングで、フリップフロップFF1aがフリップフロップFF1bの“0”データを取り込む。フリップフロップFF1bは、フリップフロップFF1aの“1”データを取り込む。フリップフロップFF1cは、フリップフロップFF1dの“0”データを取り込む。フリップフロップFF1dは、フリップフロップFF1cの“1”データを取り込む。換言すれば、フリップフロップFF1aのデータとフリップフロップFF1bのデータとが入れ替わり、フリップフロップFF1cのデータとフリップフロップFF1dのデータとが入れ替わる。
【0064】
図6に示すように、クロック生成回路11は、クロック信号CLK1及びCLK2を1サイクル生成し、スキャンチェーンSC1及びSC2にそれぞれ送信する(
図3の時刻t2)。スキャンチェーンSC1では、クロック信号CLK1の立ち上がりのタイミングで、フリップフロップFF1aがフリップフロップFF1bの“1”データを取り込む。フリップフロップFF1bは、フリップフロップFF1aの“0”データを取り込む。フリップフロップFF1cは、フリップフロップFF1dの“1”データを取り込む。フリップフロップFF1dは、フリップフロップFF1cの“0”データを取り込む。換言すれば、スキャンチェーンSC1の各フリップフロップFF1は、時刻t0におけるデータを保持した状態に戻る。
【0065】
スキャンチェーンSC2では、フリップフロップFF2毎にクローズドループが構成される。このため、各フリップフロップFF2は、データを維持する。
【0066】
図7に示すように、スキャンシフト動作では、テスト制御回路12は、ループモード信号LMを“L”レベルにする。クロック生成回路11は、クロック信号CLK1〜CLK3を生成し、スキャンチェーンSC1〜SC3にそれぞれ送信する(
図3の時刻t4)。例えば、テストパタンTPの最初のデータが“0”データである場合、スキャンチェーンSC1では、クロック信号CLK1の立ち上がりのタイミングで、フリップフロップFF1aがテストパタンTPの“0”データを取り込む。フリップフロップFF1aの“1”データがフリップフロップFF1bにシフトされる。フリップフロップFF1bの“0”データがフリップフロップFF1cにシフトされる。フリップフロップFF1cの“1”データがフリップフロップFF1dにシフトされる。フリップフロップFF1dの“0”データが出力データSO1として出力される。同様に、スキャンチェーンSC2では、クロック信号CLK2の立ち上がりのタイミングで、フリップフロップFF2aがテストパタンTPの“0”データを取り込む。フリップフロップFF2aの“1”データがフリップフロップFF2bにシフトされる。フリップフロップFF2bの“0”データがフリップフロップFF2cにシフトされる。フリップフロップFF2cの“1”データがフリップフロップFF2dにシフトされる。フリップフロップFF2dの“0”データが出力データSO2として出力される。また、スキャンチェーンSC3では、クロック信号CLK3の立ち上がりのタイミングで、フリップフロップFF3aがテストパタンTPの“0”データを取り込む。フリップフロップFF3aの“1”データがフリップフロップFF3bにシフトされる。フリップフロップFF3bの“0”データがフリップフロップFF3cにシフトされる。フリップフロップFF3cの“1”データがフリップフロップFF3dにシフトされる。フリップフロップFF3dの“0”データが出力データSO3として出力される。
【0067】
1.3 本実施形態に係る効果
本実施形態に係る構成であれば、テストにおける消費電力の増加を抑制できる。本効果につき、詳述する。
【0068】
テスト時のスキャンシフト動作では、複数のスキャンチェーンに含まれる全てのフリップフロップが1種類のクロック信号に同期して一斉に動作を開始する。このため、スキャンシフト動作の開始時に消費電力が急激に増加する。消費電力が急激に増加すると、IRドロップが発生し、電源電圧が低下する(以下、「ドループ(droop)」とも表記する)場合がある。ドループが発生すると、例えば、テストの故障判定に誤りが生じる可能性がある。また、信号にノイズが生じたり、電源電圧低下による瞬時停止(瞬停)が発生したりする可能性がある。
【0069】
これに対し、本実施形態に係る構成は、スキャンシフト動作を開始する前にループ動作を実行し、複数のフリップフロップFFが動作を開始するタイミングを複数回に分けることができる。より具体的には、本実施形態に係る構成は、複数のクロック信号CLKのいずれかに基づいて動作する複数のスキャンチェーンSCを含む。本実施形態に係る構成は、スキャンシフト動作の前にループ動作を実行し、複数のクロック信号CLKの供給開始のタイミングを変えることができる。また、本実施形態に係る構成は、ループ動作におけるクロック信号CLKのサイクル数に合わせて、スキャンチェーンSC内において、1つまたは複数のフリップフロップFFによるクローズドループを形成できる。これにより、各フリップフロップFFが保持するデータの内容が変更されることなく、フリップフロップFFの動作開始のタイミングを複数回に分けることができる。従って、スキャンシフト動作開始時の急激な消費電力の増加を抑制し、ドループを低減できる。
【0070】
更に、本実施形態に係る構成であれば、スキャンシフト動作中に複数のクロック信号CLKを同期させることができる。このため、各スキャンチェーンSCのシフトイン動作及びシフトアウト動作のタイミングのずれを抑制できる。各スキャンチェーンSCのタイミングを同期させることができるため、スキャンシフト動作の安定性が向上する。
【0071】
更に、本実施形態に係る構成であれば、ループ動作中は、各クローズドループ内でデータが保持されているため、キャプチャ動作の結果(データ)を保持できる。また、ループ動作中は、データが保持されるため、テストパタンTPを変更せずに、スキャンシフト動作を実行できる。
【0072】
更に、本実施形態に係る構成であれば、テストにおける消費電力の急激な増加を抑制できる。このため、テストにおける誤判定を抑制し、テストの信頼性を向上できる。
【0073】
なお、本実施形態では、半導体集積回路1が外部テスタの制御に基づいてスキャンテストを実行する場合について説明したが、半導体集積回路1は、LBISTに対応していてもよい。この場合、半導体集積回路1は、例えば、擬似ランダムパタン生成回路(PRPG:Pseudo Random Pattern Generator)及び多入力シグネチャレジスタ(MISR:Multiple Input Signature Register)を含む。例えば、テスト制御回路12は、PRPGに初期データを送信する。PRPGでは、初期データに基づいてテストパタンTPが生成される。生成されたテストパタンTPが各スキャンチェーンSCに送信される。各スキャンチェーンSCの出力データSO1〜SO3は、MISRに送信される。例えば、テスト制御回路12は、PRPGに送信した初期データに基づく期待値(テストの結果が正常である場合に得られる値)とMISRから受信したデータとを比較した結果に基づいて、故障判定をする。
【0074】
2.第2実施形態
次に、第2実施形態について説明する。第2実施形態では、第1実施形態で説明したテスト回路が導入された半導体集積回路を設計するための回路設計装置について説明する。
【0075】
2.1 回路設計装置のハードウェア構成
まず、回路設計装置のハードウェア構成の一例について、
図8を用いて説明する。
図8は、回路設計装置のハードウェア構成を示すブロック図である。
【0076】
図8に示すように、回路設計装置100は、CPU101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、ストレージ104、ドライブ105、及びインタフェース106を備える。回路設計装置100は、LSI等の半導体チップ内の回路の設計段階において、第1実施形態で説明したスキャンテストを実行するために必要な回路及びスキャンチェーンSCの回路等を挿入してネットリストを生成する機能を有する。
【0077】
CPU101は、ROM102に記憶された各種処理プログラムを実行し、RAM103を作業領域として用いることにより、回路設計装置100全体の動作を制御する。
【0078】
ストレージ104は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)等の補助記憶装置である。ストレージ104には、回路設計装置100で実行されるスキャンチェーン挿入プログラム143が記憶される。また、ストレージ104には、スキャンチェーン挿入プログラム143が実行される際に必要な入力情報として、例えば、ネットリスト141、テスト容易化設計(DFT:Design For Testability)の仕様情報(以下、「DFT仕様」と表記する)142、及びクロック情報144が記憶される。また、ストレージ104には、回路設計装置100で実行されるATPG(Automatic Test Pattern Generator)/故障シミュレーション実行プログラム145が記憶される。
【0079】
ネットリスト141は、半導体集積回路1の回路データである。より具体的には、ネットリスト141は、半導体チップが機能を実現するために半導体チップ内に設けられた各種素子(論理積回路や、排他的論理和回路等の論理ゲート)を互いに電気的に接続する導電体(すなわち、ネット又は配線)に関する情報である。ネットリスト141には、例えば、各ネットを介して通信される信号の特性が、対応するネットに関連づけられて記憶される。
【0080】
DFT仕様142は、半導体チップ内の各種素子のテスト(スキャンテストを含む)を容易に行えるようにするためのテスト容易化設計の仕様に関する情報である。スキャンチェーンSCはDFT仕様に基づいて、設計される。
【0081】
スキャンチェーン挿入プログラム143は、DFT仕様142に基づいて、第1実施形態で説明した回路(クロック生成回路11及びテスト制御回路12)及びスキャンチェーンSCを回路データに挿入するための処理(設計)を回路設計装置100に実行させるためのプログラム(ソフトウェア)である。なお、スキャンチェーン挿入プログラム143の詳細については、後述する。
【0082】
クロック情報144は、半導体集積回路1の動作に必要な各種クロック信号の情報を含む。クロック情報144は、例えば、第1実施形態で説明した、クロック信号CLK1〜CLK3についての情報を含む。
【0083】
ATPG/故障シミュレーション実行プログラム145は、設計した回路をテストするためのテストパタンTPを生成し、故障シミュレーションを実行させるためのプログラムである。
【0084】
ドライブ105は、例えば、CD(Compact Disk)ドライブ、DVD(Digital Versatile Disk)ドライブ等であり、記憶媒体151に記憶されたプログラムを読み込むための装置である。ドライブ105の種類は、記憶媒体151の種類に応じて適宜選択されてよい。上記ネットリスト141、DFT仕様142、スキャンチェーン挿入プログラム143、クロック情報144、及びATPG/故障シミュレーション実行プログラム145は、この記憶媒体151に記憶されていてもよい。
【0085】
記憶媒体151は、コンピュータ、その他装置、機械等が記録されたプログラム等の情報を読み取り可能なように、当該プログラム等の情報を、電気的、磁気的、光学的、機械的又は化学的作用によって蓄積する媒体である。
【0086】
インタフェース106は、回路設計装置100とその外部デバイスとの間の情報の送受信を司るインタフェースである。インタフェース106は、例えば、有線又は無線による任意の通信方式を適用した通信インタフェース、プリンタ、及び表示画面(例えば、LCD(Liquid Crystal Display)またはEL(Electroluminescence)ディスプレイ、ブラウン管等)を介したGUI(Graphical User Interface)等の任意のインタフェースを含む。インタフェース106は、回路設計装置100内で実行されたスキャンチェーン挿入プログラム143によって生成されたスキャンチェーン挿入後ネットリスト201、スキャンチェーン構成情報及びプロトコル202、故障検出率レポート203、及びテストパタン204を出力し、ユーザに提示する機能を有する。すなわち、インタフェース106は、スキャンチェーン挿入後ネットリスト201、スキャンチェーン構成情報及びプロトコル202、故障検出率レポート203、及びテストパタン204の出力部として機能する。
【0087】
スキャンチェーン挿入後ネットリスト201は、スキャンチェーン挿入プログラム143実行後のネットリストに関する情報である。
【0088】
スキャンチェーン構成情報及びプロトコル202は、スキャンチェーン構成情報として、例えば、スキャンチェーンSCの本数、各スキャンチェーンSCの長さ(スキャンチェーンSCに含まれるフリップフロップFFの個数)、各スキャンチェーン内のフリップフロップFFのリスト、各フリップフロップFFの動作クロック情報、各スキャンチェーンSCの入力端子及び出力端子の情報、並びにスキャンチェーンSC内のフリップフロップFFで構成されるクローズドループについての情報を含む。なお、半導体集積回路1がLBISTに対応している場合は、PRPG及びMISRの回路情報も含む。また、スキャンチェーン構成情報及びプロトコル202は、プロトコルとして、外部デバイスから受信する入力信号のテストサイクル毎の入出力波形(例えば、1サイクルの長さと、クロック立ち上がりのタイミング情報)、及びスキャンシフト動作時の各種信号の入力波形についての情報を含む。
【0089】
故障検出率レポート203は、ATPG/故障シミュレーション実行プログラム145で実行された故障シミュレーションによる故障検出の結果についてのレポートである。
【0090】
テストパタン204は、故障シミュレーションで使用されたテストパタンTPである。
【0091】
2.2 回路設計装置の機能構成
次に、回路設計装置100の機能構成の一例について、
図9を用いて説明する。
図9は、回路設計装置100の機能構成を説明するためのブロック図である。
【0092】
回路設計装置100のCPU101は、例えば、ストレージ104に記憶されたスキャンチェーン挿入プログラム143またはATPG/故障シミュレーション実行プログラム145をRAM103に展開する。そして、CPU101は、RAM103に展開されたスキャンチェーン挿入プログラム143またはATPG/故障シミュレーション実行プログラム145を解釈及び実行して、各構成要素を制御する。
【0093】
図9に示すように、回路設計装置100は、スキャンチェーン挿入プログラム143を実行する際、クロック抽出部210、ループ構成生成部211、及びスキャンチェーン挿入部212を備えるコンピュータとして機能する。また、回路設計装置100は、スキャンチェーン挿入プログラム143を実行する際、クロック抽出部210、ループ構成生成部211、及びスキャンチェーン挿入部212によって、クロック系統情報220、及びループ構成情報221を中間生成物として生成し、最終的にスキャンチェーン挿入後ネットリスト201並びにスキャンチェーン構成情報及びプロトコル202を出力するコンピュータとして機能する。
【0094】
クロック抽出部210は、ネットリスト141、DFT仕様142、及び図示せぬクロック情報144等に基づいて、設計対象である半導体集積回路1の通常処理及びテストに用いられる各種クロック信号に関するクロック系統情報220を抽出(出力)する。クロック系統情報220には、例えば、テストに関する情報として、クロック信号CLK1〜CLK3に関する情報が含まれる。クロック抽出部210は、クロック系統情報220を、ループ構成生成部211に送信する。
【0095】
ループ構成生成部211は、ネットリスト141、DFT仕様142、及びクロック系統情報220等に基づいて、ループ構成情報221を生成する。ループ構成情報221には、スキャンチェーンSC内のフリップフロップFFで構成されるクローズドループに関する情報が含まれる。より具体的には、ループ構成情報221には、例えば、各クローズドループに含まれるフリップフロップFFのリスト及びフリップフロップFFの個数についての情報、各クローズドループに含まれるマルチプレクサMXについての情報、マルチプレクサMXに入力されるループモード信号LMについての情報、各クローズドループが属するスキャンチェーンSCの情報が含まれる。また、ループ構成情報221には、テスト制御回路12及びクロック生成回路11についての情報も含まれる。ループ構成生成部211は、ループ構成情報221をスキャンチェーン挿入部212に送信する。
【0096】
スキャンチェーン挿入部212は、ネットリスト141及びループ構成情報221に基づいて、スキャンチェーンSCの構成を生成する。スキャンチェーン挿入部212は、生成したスキャンチェーンSCをネットリスト141に挿入し、スキャンチェーン挿入後ネットリスト201並びにスキャンチェーン構成情報及びプロトコル202を生成する。スキャンチェーン挿入後ネットリスト201並びにスキャンチェーン構成情報及びプロトコル202は、後述するATPG/故障シミュレーションに用いられる。スキャンチェーン挿入部212は、スキャンチェーン挿入後ネットリスト201並びにスキャンチェーン構成情報及びプロトコル202を外部デバイスに出力する。
【0097】
また、回路設計装置100は、スキャンチェーン挿入後ネットリスト201並びにスキャンチェーン構成情報及びプロトコル202を生成した後に、ATPG/故障シミュレーション実行プログラム145を実行する際、ATPG/故障シミュレータ230を備えるコンピュータとして機能する。回路設計装置100は、故障シミュレーションを実行して、故障検出率レポート203及びテストパタン204を出力するコンピュータとして機能する。
【0098】
故障シミュレータ230は、スキャンチェーン挿入後ネットリスト201並びにスキャンチェーン構成情報及びプロトコル202に基づいて、スキャンテスト用のテストパタン204を生成し、故障シミュレーションを実行する。ATPG/故障シミュレータ230は、故障シミュレーションの結果に基づいて、故障検出率を算出する。故障シミュレータ230は、生成したテストパタン204及び故障シミュレーションの結果に基づく故障検出率レポート203を外部デバイスに出力する。
【0099】
回路設計装置100は、以上のような機能構成を実装することにより、第1実施形態で説明したループ動作を有するスキャンテストに対応した回路設計及び故障シミュレーションを実行することができる。
【0100】
なお、クロック抽出部210、ループ構成生成部211、スキャンチェーン挿入部212、及びATPG/故障シミュレータ230は、回路設計装置100に設けられた専用回路で実現されてもよい。
【0101】
2.3 回路設計の流れ
次に、回路設計の流れについて、
図10を用いて説明する。
図10は、回路設計の流れを示すフローチャートである。
【0102】
図10に示すように、まず、CPU101は、ストレージ104から読み出したスキャンチェーン挿入プログラム143をRAM103に展開する。すなわち、CPU101は、スキャンチェーン挿入プログラム143を開始する。
【0103】
CPU101は、クロック抽出部210として動作し、設計対象のネットリスト141、DFT仕様142、及びクロック情報144等からネットリスト141のクロック系統情報220を抽出する(ステップS20)。CPU101は、例えばストレージ104に、抽出したクロック系統情報220を保存する。
【0104】
次に、CPU101は、ループ構成生成部211として動作し、ネットリスト141、DFT仕様142、及びクロック系統情報220に基づいて、ループ構成情報221を生成する(ステップS21)。CPU101は、例えばストレージ104に、生成したループ構成情報221を保存する。
【0105】
次に、CPU101は、スキャンチェーン挿入部212として動作し、ネットリスト141及びループ構成情報221に基づいて、スキャンチェーンSCを生成する(ステップS22)。次に、CPU101は、生成したスキャンチェーンSCを、ネットリスト141に挿入し(ステップS23)、スキャンチェーン挿入後ネットリスト201並びにスキャンチェーン構成情報及びプロトコル202を生成する。CPU101は、例えばストレージ104に、スキャンチェーン挿入後ネットリスト201並びにスキャンチェーン構成情報及びプロトコル202を保存する。
【0106】
次に、CPU101は、ストレージ104から読み出したATPG/故障シミュレーション実行プログラム145をRAM103に展開する。すなわち、CPU101は、ATPG/故障シミュレーション実行プログラム145を開始する。
【0107】
CPU101は、スキャンチェーン挿入後ネットリスト201並びにスキャンチェーン構成情報及びプロトコル202に基づいて、テストパタン204を生成する(ステップS24)。
【0108】
次に、CPU101は、生成したテストパタン204に基づいて、故障シミュレーションを実行し(ステップS25)、故障検出率レポート203を作成する。
【0109】
CPU101は、故障シミュレーションが終了すると、スキャンチェーン挿入後ネットリスト201、スキャンチェーン構成情報及びプロトコル202、故障検出率レポート203、及びテストパタン204を外部デバイスに出力する(ステップS26)。
【0110】
2.4 本実施形態に係る効果
本実施形態に係る構成であれば、第1実施形態で説明したスキャンテストを実行可能な半導体集積回路を設計できる。
【0111】
3.変形例等
上記実施形態に係る構成であれば、半導体集積回路は、第1クロック信号(CLK2)に基づいて動作する第1スキャンチェーン(SC2)と、第2クロック信号(CLK3)に基づいて動作する第2スキャンチェーン(SC3)とを含む論理回路(10)と、第1及び第2クロック信号を生成するクロック生成回路(11)と、スキャンテストのときに、第1及び第2スキャンチェーンを制御するように構成されたテスト制御回路(12)とを含む。第1スキャンチェーンは、第1スキャンデータ入力端子(SI)及び第1出力端子(DQ)を有する第1フリップフロップ(FF2)と、第1出力端子(DQ)に接続された第1入力端子(“1”)、テストパタンが入力される第2入力端子、及び第1スキャンデータ入力端子に接続された第2出力端子を有する第1マルチプレクサ(MX2a)とを含む。第1マルチプレクサは、テスト制御回路から受信した第1信号(LM)に基づいて、第1スキャンデータ入力端子と第1出力端子とを電気的に接続して第1クローズドループを構成可能である。第2スキャンチェーンは、第2スキャンデータ入力端子(SI)及び第3出力端子(DQ)を有し且つ第2スキャンデータ入力端子と第3出力端子とが接続されていない第2フリップフロップ(FF3)を含む。
【0112】
上記実施形態により、テストにおける消費電力の増加を抑制できる半導体集積回路を提供する。
【0113】
なお、実施形態は上記で説明した形態に限られず、種々の変形が可能である。
【0114】
更に、上記実施形態における「接続」とは、間に例えばトランジスタあるいは抵抗等、他の何かを介在させて間接的に接続されている状態も含む。
【0115】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。