(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-12
(45)【発行日】2024-07-23
(54)【発明の名称】半導体集積回路
(51)【国際特許分類】
G01R 31/28 20060101AFI20240716BHJP
G01R 31/3187 20060101ALI20240716BHJP
H01L 21/822 20060101ALI20240716BHJP
H01L 27/04 20060101ALI20240716BHJP
【FI】
G01R31/28 G
G01R31/28 V
G01R31/3187
H01L27/04 T
(21)【出願番号】P 2023073368
(22)【出願日】2023-04-27
(62)【分割の表示】P 2020037554の分割
【原出願日】2020-03-05
【審査請求日】2023-04-27
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(73)【特許権者】
【識別番号】317011920
【氏名又は名称】東芝デバイス&ストレージ株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】長谷川 哲
【審査官】田口 孝明
(56)【参考文献】
【文献】国際公開第2006/075374(WO,A1)
【文献】特開2014-185981(JP,A)
【文献】特開2004-309174(JP,A)
【文献】特開2006-322904(JP,A)
【文献】特開平11-094913(JP,A)
【文献】特開2010-223793(JP,A)
【文献】米国特許出願公開第2016/0349318(US,A1)
【文献】米国特許出願公開第2019/0018910(US,A1)
【文献】特開2021-124371(JP,A)
【文献】特開2016-176843(JP,A)
【文献】特開2010-038874(JP,A)
【文献】特開2005-135527(JP,A)
【文献】特開2005-331480(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G01R 31/28-31/3193、
H01L 27/04
(57)【特許請求の範囲】
【請求項1】
第1クロック信号に基づいて動作する第1スキャンチェーンと、第2クロック信号に基づいて動作する第2スキャンチェーンとを含む論理回路と、
前記第1及び第2クロック信号の1つを選択して、対応する前記第1及び第2スキャンチェーンの1つに送信するクロック選択回路と、
テストパタンに基づいて前記クロック選択回路に第2データを送信する第3スキャンチェーンと
を備え、
前記クロック選択回路は、前記第3スキャンチェーンから受信した前記第2データに基づいて前記第1及び第2クロック信号の前記1つを選択可能であり、
テストは、キャプチャ動作とスキャンシフト動作とを含み、
前記テストのときに、第1期間に前記第1スキャンチェーンの前記キャプチャ動作及び前記スキャンシフト動作が連続して実行され、前記第1期間と異なる第2期間に前記第2スキャンチェーンの前記キャプチャ動作及び前記スキャンシフト動作が連続して実行される、
半導体集積回路。
【請求項2】
前記クロック選択回路は、前記第2データに基づいて第3データを生成するエンコーダを含み、
前記クロック選択回路は、前記第3データに基づいて、前記第1及び第2クロック信号の前記1つを選択可能である、
請求項1に記載の半導体集積回路。
【請求項3】
前記第3データは、少なくとも2ビット以上のデータであり、いずれか1つのビットが“1”データであり且つ他のビットが“0”データである、
請求項2に記載の半導体集積回路。
【請求項4】
前記第1スキャンチェーンは、シリアル接続された複数のフリップフロップを含む、
請求項1乃至3のいずれか1項に記載の半導体集積回路。
【請求項5】
前記第1クロック信号は、前記第1スキャンチェーンの前記キャプチャ動作時における第1周波数と前記第1スキャンチェーンの前記スキャンシフト動作時における第2周波数とが異なる、
請求項1に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、半導体集積回路に関する。
【背景技術】
【0002】
半導体集積回路には、組み込み自己テスト(BIST:Built In Self-Test)を行う機能を有しているものがある。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
テストによる消費電力を低減できる半導体集積回路を提供する。
【課題を解決するための手段】
【0005】
実施形態に係る半導体集積回路は、第1クロック信号に基づいて動作する第1スキャンチェーンと、第2クロック信号に基づいて動作する第2スキャンチェーンとを含む論理回路と、第1及び第2クロック信号の1つを選択して、対応する第1及び第2スキャンチェーンの1つに送信するクロック選択回路と、テストパタンに基づいてクロック選択回路に第1データを送信する第3スキャンチェーンとを含む。クロック選択回路は、第3スキャンチェーンから受信した第1データに基づいて第1及び第2クロック信号の1つを選択可能である。テストは、キャプチャ動作とスキャンシフト動作とを含む。テストのときに、第1期間に第1スキャンチェーンのキャプチャ動作及びスキャンシフト動作が連続して実行され、第1期間と異なる第2期間に第2スキャンチェーンのキャプチャ動作及びスキャンシフト動作が連続して実行される。
【図面の簡単な説明】
【0006】
【
図1】
図1は、第1実施形態に係る半導体集積回路のブロック図である。
【
図2】
図2は、第1実施形態に係る半導体集積回路の備えるクロック選択回路の回路図である。
【
図3】
図3は、第1実施形態に係る半導体集積回路におけるLBISTのフローチャートである。
【
図4】
図4は、第1実施形態に係る半導体集積回路におけるLBIST中の状態を示す図である。
【
図5】
図5は、第1実施形態に係る半導体集積回路におけるLBIST中の状態を示す図である。
【
図6】
図6は、第1実施形態に係る半導体集積回路におけるLBIST中の状態を示す図である。
【
図7】
図7は、第1実施形態に係る半導体集積回路におけるLBIST中の状態を示す図である。
【
図8】
図8は、第1実施形態に係る半導体集積回路におけるLBIST中の状態を示す図である。
【
図9】
図9は、第1実施形態に係る半導体集積回路におけるLBIST中の状態を示す図である。
【
図10】
図10は、第1実施形態に係る半導体集積回路におけるLBIST中の各信号線のタイミングチャートである。
【
図11】
図11は、第2実施形態に係る回路設計装置のハードウェア構成を示すブロック図である。
【
図12】
図12は、第2実施形態に係る回路設計装置の機能構成を示すブロック図である。
【
図13】
図13は、第2実施形態に係る回路設計装置における回路設計のフローチャートである。
【発明を実施するための形態】
【0007】
以下、図面を参照して実施形態について説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。
【0008】
1.第1実施形態
第1実施形態に係る半導体集積回路について説明する。
【0009】
1.1 構成
1.1.1 半導体集積回路の構成について
まず、半導体集積回路の構成の一例について、
図1を用いて説明する。
図1は、本実施形態に係る半導体集積回路のブロック図である。なお、
図1の例は、LBIST(Logic Built In Self-Test)を実行する際の概略構成を示している。
【0010】
本実施形態の半導体集積回路は、例えば、外部デバイスからの命令に基づいて、あるいは、装置起動時、または、定期的に、半導体集積回路内の論理回路の組み込み自己テスト(以下、「LBIST」、あるいは単に「テスト」とも表記する)を実行し、故障検出を行う。LBISTでは、予め論理回路に組み込まれたテスト用の回路パタン(以下、「スキャンチェーン」とも表記する)を用いて、論理回路内の故障検出が行われる。
【0011】
テストは、大まかに、シフトイン動作と、キャプチャ動作と、シフトアウト動作とを含む。シフトイン動作は、テストパタン(テストデータ)を、複数のスキャンフリップフロップ(以下、「スキャンFF」とも表記する)がシリアル接続されたスキャンチェーンに入力する動作である。スキャンFFは、データの入力端子にマルチプレクサが接続されたフリップフロップである。キャプチャ動作は、スキャンチェーン内のスキャンFFに接続された図示せぬ組み合わせ回路において、シフトイン動作によりスキャンFFに設定された値に基づく演算処理を実行させ、その結果をスキャンFFに取り込む動作である。シフトアウト動作は、スキャンFFに取り込まれた処理結果を出力する動作である。テストにおいて2回目以降のシフトイン動作は、シフトアウト動作と重複して同時に行われる。以下、シフトイン動作及びシフトアウト動作を限定しない場合は、「スキャンシフト動作」と表記する。
【0012】
例えば、半導体集積回路には、複数の論理回路(論理ブロック)が存在する。このような場合、半導体集積回路は、通常処理と並行して、使用しない論理ブロック(被テストブロック)のテストを実行できる。なお、論理回路は、例えば、CPU(Central Processing Unit)に含まれていてもよい。
【0013】
図1に示すように、半導体集積回路1は、論理回路10、擬似ランダムパタン生成回路11(PRPG:Pseudo Random Pattern Generator)、多入力シグネチャレジスタ12(MISR:Multiple Input Signature Register)、クロックチェーン13、クロック選択回路14、クロック生成回路15、及びロジックBIST制御回路16を含む。
【0014】
論理回路10は、例えば、タスクを実行するための各種演算処理を行う。論理回路10内には、テストの際、異なるクロック信号gclk(gclk1~gclk3)に基づいてそれぞれ動作する複数のシフトグループ20(20a、20b、20c)が設けられる。換言すれば、各シフトグループ20におけるスキャンシフト動作及びキャプチャ動作は、対応するクロック信号gclkにより制御される。そして、各シフトグループ20内には、各々の入力がPRPG11に接続され、出力がMISR12に接続された複数のスキャンチェーンSCが設けられている。換言すれば、複数のスキャンチェーンSCは、対応するクロック信号gclk毎にグルーピングされている。なお、
図1の例は、説明を簡略化するために、3つシフトグループ20a~20cの各々が、1つのスキャンチェーンSCを含む場合を示している。また、各フリップフロップ21のデータ入力端子に接続されたマルチプレクサは省略されている。
【0015】
各スキャンチェーンSCは、シリアル接続された複数(
図1の例では、6個)のフリップフロップ21を含む。換言すれば、スキャンチェーンSCは、複数のフリップフロップ21がシリアル接続されたシフトレジスタとも言える。
【0016】
シフトグループ20a内の各フリップフロップ21のクロック入力端子にはクロック信号gclk1が入力される。シフトグループ20b内の各フリップフロップ21のクロック入力端子にはクロック信号gclk2が入力される。シフトグループ20c内の各フリップフロップ21のクロック入力端子にはクロック信号gclk3が入力される。
【0017】
なお、論理回路10に含まれるシフトグループ20の個数、シフトグループ20に含まれるスキャンチェーンSCの個数、及びスキャンチェーンSCに含まれるフリップフロップ21の個数は任意である。但し、各スキャンチェーンSCに含まれるフリップフロップ21の個数は、同じである方が好ましい。
【0018】
本実施形態の半導体集積回路1は、複数のシフトグループ20の1つを順次選択しながらテストを実行する。すなわち、半導体集積回路1は、LBISTにおいて、シフトグループ20を制御する機構(以下、「シフトグループ制御機構」とも表記する)を有する。シフトグループ制御機構は、後述するクロックチェーン13、クロック選択回路14、及びロジックBIST制御回路16を含む。
【0019】
例えば、シフトグループ20a内のスキャンチェーンSC(フリップフロップ21)は、クロック信号gclk1に基づいてテストが実行される。より具体的には、シフトグループ20a内のフリップフロップ21は、クロック入力端子にクロック信号gclk1が入力される。そして、フリップフロップ21は、例えば、クロック信号gclk1がLow(“L”)レベルからHigh(“H”)レベルに立ち上がるタイミングに合わせて、データがセット(格納)される。同様に、シフトグループ20b内のスキャンチェーンSCは、クロック信号gclk2に基づいて、テストが実行される。シフトグループ20c内のスキャンチェーンSCは、クロック信号gclk3に基づいて、テストが実行される。
【0020】
PRPG11は、テスト時に、ロジックBIST制御回路16から与えられた初期データに基づいて、テストパタンを擬似ランダムに生成する。PRPG11は、生成したテストパタンを、各スキャンチェーンSCに送信する。例えば、PRPG11は、6つのフリップフロップ21が接続されたスキャンチェーンSCに対して、6ビットのテストパタンを生成する。生成されたテストパタンは、6つのフリップフロップ21に順次入力される。
【0021】
MISR12は、テスト時に、スキャンチェーンSCから受信したデータの圧縮動作を行う。MISR12は、圧縮したデータ(シグネチャ)をロジックBIST制御回路16に送信する。
【0022】
クロックチェーン13は、テスト時に、PRPG11から入力されたテストパタンに基づく信号をクロック選択回路14に送信する。クロックチェーン13は、スキャンチェーンSCと同様のチェーン構造を有しており、シリアル接続された複数のフリップフロップ21を含む。クロックチェーン13の入力はPRPG11に接続され、出力はMIS12に接続される。クロックチェーン13内のフリップフロップ21は、クロック入力端子にクロック生成回路15から受信したクロック信号bist_clkが入力される。そして、フリップフロップ21には、クロック信号bist_clkに基づいて、データがセットされる。
図1の例では、クロックチェーン13は、3つのフリップフロップ21を含む。そして、3つのフリップフロップ21の出力データは、それぞれノードN1~N3を介してクロック選択回路14に送信されている。なお、クロックチェーン13に含まれるフリップフロップ21の個数は、シフトグループ20のスキャンチェーンSCに含まれるフリップフロップ21の個数とは異なっていてもよい。また、クロックチェーン13は、論理回路10内に設けられていてもよい。
【0023】
クロック選択回路14は、クロック信号gclk1~gclk3のいずれかを選択して論理回路10の対応するシフトグループ20に送信する。すなわち、クロック選択回路14は、クロック信号gclk1~gclk3のクロックゲーティングとして機能する。より具体的には、クロック選択回路14は、テスト時に、ロジックBIST制御回路16から受信した各種制御信号、クロック生成回路15から受信した各種クロック信号(クロック信号bist_clkを含む)、及びクロックチェーン13から受信したデータ等に基づいて、クロック信号gclk1~gclk3の1つを選択する。そして、クロック選択回路14は、クロック信号gclk1~gclk3として、クロック生成回路15から受信したクロック信号bist_clk、cp_clk1、cp_clk2、及びcp_clk3のいずれかを対応するシフトグループ20に送信する。
【0024】
より具体的には、例えば、シフトグループ20aにおいてスキャンシフト動作が実行される場合、クロック選択回路14は、シフトグループ20aに、クロック信号gclk1としてクロック信号bist_clkを送信する。また、シフトグループ20aにおいてキャプチャ動作が実行される場合、クロック選択回路14は、シフトグループ20aに、クロック信号gclk1としてクロック信号cp_clk1を送信する。同様に、例えば、シフトグループ20bにおいてスキャンシフト動作が実行される場合、クロック選択回路14は、シフトグループ20bに、クロック信号gclk2としてクロック信号bist_clkを送信する。また、シフトグループ20bにおいてキャプチャ動作が実行される場合、クロック選択回路14は、シフトグループ20bに、クロック信号gclk2としてクロック信号cp_clk2を送信する。例えば、シフトグループ20cにおいてスキャンシフト動作が実行される場合、クロック選択回路14は、シフトグループ20cに、クロック信号gclk3としてクロック信号bist_clkを送信する。また、シフトグループ20cにおいてキャプチャ動作が実行される場合、クロック選択回路14は、シフトグループ20cに、クロック信号gclk3としてクロック信号cp_clk3を送信する。クロック選択回路14の詳細については、後述する。
【0025】
クロック生成回路15は、例えば、図示せぬPLL(Phase Locked Loop)またはOCC(On-chip Clock Controller)等を含み、半導体集積回路1内で使用される各種クロック信号を生成する。クロック生成回路15は、例えば、テストの際に用いられるクロック信号bist_clk、cp_clk1、cp_clk2、及びcp_clk3を生成する。例えば、クロック信号bist_clkは、スキャンシフト動作の際に用いられる。クロック信号cp_clk1、cp_clk2、及びcp_clk3の各々は、対応するシフトグループ20a、20b、及び20cのキャプチャ動作の際に用いられる。なお、クロック信号bist_clk、cp_clk1、cp_clk2、及びcp_clk3は、それぞれ異なる周波数であってもよい。
【0026】
クロック生成回路15は、テストの際、生成したクロック信号をクロックチェーン13、クロック選択回路14、ロジックBIST制御回路16等に送信する。
【0027】
ロジックBIST制御回路16は、テストの際に、論理回路10、PRPG11、MISR12、クロックチェーン13、クロック選択回路14、及びクロック生成回路15を制御する。
【0028】
ロジックBIST制御回路16は、比較器30及び有限状態機械31(FSM:finite state machine)を含む。
【0029】
比較器30は、MISR12から受信したデータとPRPG11に送信した初期データに基づく期待値(テストの結果が正常である場合に得られる値)とを比較する。ロジックBIST制御回路16は、比較器30の結果に基づいて、テストが正常に終了したか否か、すなわち、論理回路10が故障をしていないか判定する。ロジックBIST制御回路16は、故障の判定結果を、例えば、外部デバイスに出力する。
【0030】
FSM31は、テストのステートに応じた制御信号をクロック選択回路に送信する。各ステートと制御信号の詳細については後述する。
【0031】
1.1.2 クロックチェーン及びクロック選択回路の構成
次に、クロックチェーン13及びクロック選択回路14の構成の一例について、
図2を用いて説明する。
図2は、クロックチェーン13及びクロック選択回路14の回路図である。なお、
図2の例は、クロックチェーン13が5つのフリップフロップ21を含む場合を示している。更に、
図2の例は、LBISTを実行する際の概略構成を示している。
【0032】
図2に示すように、クロックチェーン13は、例えば、5つのスキャンFF22(22a~22e)を含む。
【0033】
スキャンFF22a~22eは、シリアル接続されている。スキャンFF22aの入力は、PRPG11に接続され、スキャンFF22eの出力は、MISR12に接続されている。
【0034】
各スキャンFF22は、フリップフロップ21及びマルチプレクサ23を含む。すなわち、クロックチェーン13は、5つのフリップフロップ21(21a~21e)及び5つのマルチプレクサ23(23a~23e)を含む。
【0035】
なお、以下の説明において、マルチプレクサの制御信号が“1”データの場合に選択される入力端子を「入力端子(“1”)」と表記し、制御信号が“0”データの場合に選択される入力端子を「入力端子(“0”)」と表記する。
【0036】
スキャンFF22aのマルチプレクサ23aの入力端子(“1”)は、PRPG11の出力端子に接続され、入力端子(“0”)は、同じスキャンFF22a内のフリップフロップ21aの出力端子に接続される。マルチプレクサ23aの出力端子は、フリップフロップ21aの入力端子に接続される。マルチプレクサ23aの制御信号入力端子には、ロジックBIST制御回路16内のFSM31から受信したシフトイネーブル信号shift_enが入力される。シフトイネーブル信号shift_enは、スキャンシフト動作を実行する場合に“H”レベル(“1”データ)とされる。すなわち、シフトイネーブル信号shift_enが“H”レベルの場合、フリップフロップ21は、テストパタンを取り込み可能な状態とされる。例えば、マルチプレクサ23aは、シフトイネーブル信号shift_enが“H”レベル(“1”データ)の場合、入力端子(“1”)を選択し、PRPG11から受信したデータ(テストパタン)を出力する。また、マルチプレクサ23aは、シフトイネーブル信号shift_enが“L”レベル(“0”データ)の場合、入力端子(“0”)を選択し、フリップフロップ21aの出力データを出力する。すなわち、フリップフロップ21aの出力データは、フリップフロップ21aに入力されるクロック信号bist_clkによらず維持される。
【0037】
フリップフロップ21aのクロック入力端子には、クロック生成回路15から受信したクロック信号bist_clkが入力される。フリップフロップ21aの出力端子は、マルチプレクサ23aの入力端子(“0”)、スキャンFF22bのマルチプレクサ23bの入力端子(“1”)、及びクロック選択回路14内に設けられたワンホットエンコーダ41に接続される。
【0038】
スキャンFF22b~22eの構成もスキャンFF22aと同様であるが、マルチプレクサ23の入力端子(“1”)及びフリップフロップ21の出力端子の接続先がそれぞれ異なる。より具体的には、スキャンFF22bのマルチプレクサ23bの入力端子(“1”)は、スキャンFF22aのフリップフロップ21aの出力端子に接続される。スキャンFF22cのマルチプレクサ23cの入力端子(“1”)は、スキャンFF22bのフリップフロップ21bの出力端子に接続される。スキャンFF22dのマルチプレクサ23dの入力端子(“1”)は、スキャンFF22cのフリップフロップ21cの出力端子に接続される。スキャンFF22eのマルチプレクサ23eの入力端子(“1”)は、スキャンFF22dのフリップフロップ21dの出力端子に接続される。フリップフロップ21eの出力端子は、MISR12に接続される。
【0039】
次に、クロック選択回路14について説明する。
クロック選択回路14は、ワンホットエンコーダ41、AND回路42、43、46、及び49、OR回路44及び47、NAND回路45、ラッチ回路48、gclk1生成部50、gclk2生成部60、並びにgclk3生成部70を含む。
【0040】
ワンホットエンコーダ41は、例えば、クロックチェーン13のフリップフロップ21a~21eから受信した5ビットのデータをエンコードして、“1”データを1つ含む“001”、“010”、または“100”のいずかの3ビットデータを生成し、これを出力する。すなわち、ワンホットエンコーダ41は、PRPG11が生成した擬似ランダムなデータに基づいて、“001”データ、“010”データ、または“100”データのいずかの3ビットデータを生成する。本実施形態では、“100”データはクロック信号gclk1に対応し、“010”データはクロック信号gclk2に対応し、“001”データはクロック信号gclk3に対応する。なお、ワンホットエンコーダ41が出力するデータのビット数は、3ビットに限定されない。ワンホットエンコーダ41が出力するデータのビット数は、クロック信号gclk(シフトグループ20)の個数に対応する。
【0041】
AND回路42の一方の入力端子には、FSM31から受信したアップデートリセット信号update_rstの反転信号が入力され、他方の入力端子には、ワンホットエンコーダ41が出力する3ビットデータの上位ビットのデータが入力される。アップデートリセット信号update_rstは、例えば、テストを開始時、後述するアップデートレジスタの初期値(例えば、“100”データ)を設定する際に、“H”レベルとされる。AND回路42の出力端子は、gclk3生成部70内のマルチプレクサ71の入力端子(“1”)に接続される。
【0042】
AND回路43の一方の入力端子には、アップデートリセット信号update_rstの反転信号が入力され、他方の入力端子には、ワンホットエンコーダ41が出力する3ビットデータの中位ビットのデータが入力される。AND回路43の出力端子は、gclk2生成部60内のマルチプレクサ61の入力端子(“1”)に接続される。
【0043】
OR回路44の一方の入力端子には、FSM31から受信したアップデートリセット信号update_rstの反転信号が入力され、他方の入力端子には、ワンホットエンコーダ41が出力する3ビットデータの下位ビットのデータが入力される。OR回路44の出力端子は、gclk1生成部50内のマルチプレクサ51の入力端子(“1”)に接続される。
【0044】
NAND回路45の一方の入力端子には、FSM31から受信したファーストロード信号first_loadの反転信号が入力され、他方の入力端子には、FSM31から受信したラストシフト信号last_shiftが入力される。ファーストロード信号first_loadは、例えば、テスト開始の際、各シフトグループ20が1回目のスキャンシフト動作(シフトイン動作)を実行している間、“H”レベルとされる。1回目のスキャンシフト動作では、ワンホットエンコーダの出力データに関わらず、シフトグループ20a~20cが順次選択されてシフトイン動作が実行される。ラストシフト信号last_shiftは、例えば、スキャンシフト動作における最後のスキャン(シフト)のタイミングに合わせて“H”レベルとされる。NAND回路45の出力端子は、gclk2生成部60内のAND回路67の一方の入力端子及びgclk3生成部70内のAND回路77の一方の入力端子に接続される。
【0045】
AND回路46の一方の入力端子には、ファーストロード信号first_loadが入力され、他方の入力端子には、ラストシフト信号last_shiftが入力される。AND回路46の出力端子は、OR回路47の一方の入力端子に接続される。
【0046】
OR回路47の他方の入力端子には、FSM31から受信したアップデートイネーブル信号update_enが入力される。アップデートイネーブル信号update_enは、例えば、クロック信号gclk1~gclk3、すなわちシフトグループ20a~20cの選択信号を更新する際に、“H”レベルとされる信号である。OR回路47の出力端子は、ラッチ回路48の入力端子に接続される。
【0047】
ラッチ回路48のクロック入力端子には、クロック信号bist_clkの反転信号が入力される。例えば、ラッチ回路48は、クロック信号bist_clkが“H”レベルから“L”レベルに立ち下がるタイミングに合わせて、OR回路47の出力データをラッチする。ラッチ回路48の出力端子は、AND回路49の一方の入力端子に接続される。
【0048】
AND回路49の他方の入力端子には、クロック信号bist_clkが入力される。AND回路49の出力端子は、gclk1生成部50に含まれるフリップフロップ53のクロック入力端子、gclk2生成部60に含まれるフリップフロップ63のクロック入力端子、及びgclk3生成部70に含まれるフリップフロップ73のクロック入力端子に接続される。すなわち、AND回路49の出力データ(クロック信号)が、フリップフロップ53、63、及び73のデータの更新のタイミングを制御するアップデートクロック信号update_clkとして機能する。
【0049】
gclk1生成部50は、クロック信号gclk1を生成する。gclk1生成部50は、マルチプレクサ51、52、及び56、フリップフロップ53、ラッチ回路54、並びにAND回路55を含む。
【0050】
マルチプレクサ51の入力端子(“1”)は、OR回路44の出力端子が接続され、入力端子(“0”)は、フリップフロップ53の出力端子に接続される。マルチプレクサ51の出力端子は、マルチプレクサ52の入力端子(“0”)に接続される。マルチプレクサ51の制御信号入力端子には、アップデートイネーブル信号update_enが入力される。マルチプレクサ51は、例えば、アップデートイネーブル信号update_enが“H”レベル(“1”データ)の場合、OR回路44から受信したデータを出力する。また、マルチプレクサ51は、アップデートイネーブル信号update_enが“L”レベル(“0”データ)の場合、フリップフロップ53の出力データを出力する。
【0051】
マルチプレクサ52の入力端子(“1”)には、“0”データ(1‘b0)が入力される。マルチプレクサ52の出力端子は、フリップフロップ53の入力端子に接続される。マルチプレクサ52の制御信号入力端子には、シフトイネーブル信号shift_enが入力される。マルチプレクサ52は、例えば、シフトイネーブル信号shift_enが“H”レベル(“1”データ)の場合、“0”データを出力する。また、マルチプレクサ52は、シフトイネーブル信号shift_enが“L”レベル(“0”データ)の場合、マルチプレクサ51の出力データを出力する。
【0052】
フリップフロップ53の出力端子は、マルチプレクサ51の入力端子(“0”)、ラッチ回路54の入力端子、及びgclk2生成部60内のAND回路67の他方の入力端子に接続される。
【0053】
ラッチ回路54のクロック入力端子には、マルチプレクサ56の出力データ(クロック信号)の反転データ(信号)が入力される。ラッチ回路54の出力端子は、AND回路55の一方の入力端子に接続される。
【0054】
AND回路55の他方の入力端子は、マルチプレクサ56の出力端子に接続される。AND回路55の出力端子からクロック信号gclk1が出力される。
【0055】
マルチプレクサ56の入力端子(“0”)には、クロック信号cp_clk1が入力され、入力端子(“1”)には、クロック信号bist_clkが入力される。マルチプレクサ56の制御信号入力端子には、シフトイネーブル信号shift_enが入力される。マルチプレクサ56は、例えば、シフトイネーブル信号shift_enが“H”レベル(“1”データ)の場合、クロック信号bist_clkを出力する。また、マルチプレクサ56は、例えば、シフトイネーブル信号shift_enが“L”レベル(“0”データ)の場合、クロック信号cp_clk1を出力する。
【0056】
gclk2生成部60は、クロック信号gclk2を生成する。gclk2生成部60は、マルチプレクサ61、62、及び66、フリップフロップ63、ラッチ回路64、並びにAND回路65及び67を含む。
【0057】
マルチプレクサ61の入力端子(“1”)は、AND回路43の出力端子が接続され、入力端子(“0”)は、フリップフロップ63の出力端子に接続される。マルチプレクサ61の出力端子は、マルチプレクサ62の入力端子(“0”)に接続される。マルチプレクサ61の制御信号入力端子には、アップデートイネーブル信号update_enが入力される。マルチプレクサ61は、例えば、アップデートイネーブル信号update_enが“H”レベル(“1”データ)の場合、AND回路43から受信したデータを出力する。また、マルチプレクサ61は、アップデートイネーブル信号update_enが“L”レベル(“0”データ)の場合、フリップフロップ63の出力データを出力する。
【0058】
マルチプレクサ62の入力端子(“1”)は、AND回路67の出力端子に接続される。マルチプレクサ62の出力端子は、フリップフロップ63の入力端子に接続される。マルチプレクサ62の制御信号入力端子には、シフトイネーブル信号shift_enが入力される。マルチプレクサ62は、例えば、シフトイネーブル信号shift_enが“H”レベル(“1”データ)の場合、AND回路67の出力データを出力する。また、マルチプレクサ62は、シフトイネーブル信号shift_enが“L”レベル(“0”データ)の場合、マルチプレクサ61の出力データを出力する。
【0059】
AND回路67の一方の入力端子は、gclk1生成部50のフリップフロップ53の出力端子に接続され、他方の入力端子は、NAND回路45の出力端子に接続される。AND回路67の出力端子は、マルチプレクサ62の入力端子(“1”)に接続される。
【0060】
フリップフロップ63の出力端子は、マルチプレクサ61の入力端子(“0”)、ラッチ回路64の入力端子、及びgclk3生成部70内のAND回路77の他方の入力端子に接続される。
【0061】
ラッチ回路64のクロック入力端子には、マルチプレクサ66の出力データ(クロック信号)の反転データ(信号)が入力される。ラッチ回路64の出力端子は、AND回路65の一方の入力端子に接続される。
【0062】
AND回路65の他方の入力端子は、マルチプレクサ66の出力端子に接続される。AND回路65の出力端子からクロック信号gclk2が出力される。
【0063】
マルチプレクサ66の入力端子(“0”)には、クロック信号cp_clk2が入力され、入力端子(“1”)には、クロック信号bist_clkが入力される。マルチプレクサ66の制御信号入力端子には、シフトイネーブル信号shift_enが入力される。マルチプレクサ66は、例えば、シフトイネーブル信号shift_enが“H”レベル(“1”データ)の場合、クロック信号bist_clkを出力する。また、マルチプレクサ66は、例えば、シフトイネーブル信号shift_enが“L”レベル(“0”データ)の場合、クロック信号cp_clk2を出力する。
【0064】
gclk3生成部70は、クロック信号gclk3を生成する。gclk3生成部70は、マルチプレクサ71、72、及び76、フリップフロップ73、ラッチ回路74、並びにAND回路75及び77を含む。
【0065】
マルチプレクサ71の入力端子(“1”)は、AND回路42の出力端子が接続され、入力端子(“0”)は、フリップフロップ73の出力端子に接続される。マルチプレクサ71の出力端子は、マルチプレクサ72の入力端子(“0”)に接続される。マルチプレクサ71の制御信号入力端子には、アップデートイネーブル信号update_enが入力される。マルチプレクサ71は、例えば、アップデートイネーブル信号update_enが“H”レベル(“1”データ)の場合、AND回路42から受信したデータを出力する。また、マルチプレクサ71は、アップデートイネーブル信号update_enが“L”レベル(“0”データ)の場合、フリップフロップ73の出力データを出力する。
【0066】
マルチプレクサ72の入力端子(“1”)は、AND回路77の出力端子に接続される。マルチプレクサ72の出力端子は、フリップフロップ73の入力端子に接続される。マルチプレクサ72の制御信号入力端子には、シフトイネーブル信号shift_enが入力される。マルチプレクサ72は、例えば、シフトイネーブル信号shift_enが“H”レベル(“1”データ)の場合、AND回路77の出力データを出力する。また、マルチプレクサ72は、シフトイネーブル信号shift_enが“L”レベル(“0”データ)の場合、マルチプレクサ71の出力データを出力する。
【0067】
AND回路77の一方の入力端子は、gclk2生成部60のフリップフロップ63の出力端子に接続され、他方の入力端子は、NAND回路45の出力端子に接続される。AND回路77の出力端子は、マルチプレクサ72の入力端子(“1”)に接続される。
【0068】
フリップフロップ73の出力端子は、マルチプレクサ71の入力端子(“0”)、及びラッチ回路74の入力端子に接続される。
【0069】
ラッチ回路74のクロック入力端子には、マルチプレクサ76の出力データ(クロック信号)の反転データ(信号)が入力される。ラッチ回路74の出力端子は、AND回路75の一方の入力端子に接続される。
【0070】
AND回路75の他方の入力端子は、マルチプレクサ76の出力端子に接続される。AND回路75の出力端子からクロック信号gclk3が出力される。
【0071】
マルチプレクサ76の入力端子(“0”)には、クロック信号cp_clk3が入力され、入力端子(“1”)には、クロック信号bist_clkが入力される。マルチプレクサ76の制御信号入力端子には、シフトイネーブル信号shift_enが入力される。マルチプレクサ76は、例えば、シフトイネーブル信号shift_enが“H”レベル(“1”データ)の場合、クロック信号bist_clkを出力する。また、マルチプレクサ76は、例えば、シフトイネーブル信号shift_enが“L”レベル(“0”データ)の場合、クロック信号cp_clk3を出力する。
【0072】
上記構成において、フリップフロップ53、63、及び73は、シリアル接続されたシフトレジスタとして機能する。すなわち、アップデートクロック信号update_clkに基づいて、フリップフロップ53からフリップフロップ63、フリップフロップ73の順にデータがシフトされる。以下の説明では、フリップフロップ53、63、及び73を一括して「アップデートレジスタ」とも表記する。例えば、フリップフロップ53が“1”データを保持し、フリップフロップ63及び73が“0”データを保持する場合、アップデートレジスタは“100”データを保持すると表記する。
【0073】
例えば、アップデートリセット信号update_rstが“H”レベルとされると、ワンホットエンコーダ41が出力するデータに関わらず、AND回路42及び43は、“0”データを出力し、OR回路44は“1”データを出力する。すなわち“100”データが出力される。そして、アップデートイネーブル信号update_enが“H”レベル(“1”データ)とされると、マルチプレクサ52の入力端子(“0”)には、“1”データが入力され、マルチプレクサ62及び72の入力端子(“0”)には、”0”データが入力される。シフトイネーブル信号shift_enが“L”レベル(“0”データ)とされると、マルチプレクサ52は、“1”データを出力し、マルチプレクサ62及び72は、”0”データを出力する。この状態において、アップデートクロック信号update_clkが“H”レベルに立ち上がるタイミングに合わせて、フリップフロップ53には、“1”データが格納され、フリップフロップ63及び73には、“0”データが格納される。すなわち、アップデートレジスタには“100”データが格納される。この結果、クロック信号gclk1が選択される。このとき、シフトイネーブル信号shift_enは“H”レベル(“1”データ)のため、クロック選択回路14からクロック信号gclk1としてクロック信号bist_clkが出力される。
【0074】
シフトイネーブル信号shift_enが“H”レベルのため、マルチプレクサ52の入力端子(“1”)には、“0”データが入力されている。また、ファーストロード信号first_loadが“H”レベルの状態の場合、AND回路67は、フリップフロップ53の出力データ(“1”データ)をマルチプレクサ62の入力端子に入力する。AND回路77も同様に、フリップフロップ63の出力データ(“0”データ)をマルチプレクサ72の入力端子に入力する。この状態で、アップデートクロック信号update_clkが“H”レベルに立ち上がると、アップデートレジスタには“010”データが格納される。この結果、クロック信号gclk2が選択される。
【0075】
同様にして、次にアップデートクロック信号update_clkが“H”に立ち上がるタイミングに合わせて、アップデートレジスタには“001”データが格納される。この結果、クロック信号gclk3が選択される。
【0076】
従って、ファーストロード信号first_loadが“H”レベルの場合、アップデートクロック信号update_clkが“H”レベルに立ち上がるタイミングに合わせてフリップフロップ53からフリップフロップ63、フリップフロップ73の順に“1”データがシフトされる。
【0077】
アップデートリセット信号update_rst及びファーストロード信号first_loadが“L”レベルの場合、フリップフロップ53、63、及び73の間でデータのシフトは行われない。この場合、フリップフロップ53、63、及び73は、ワンホットエンコーダ41が出力するデータを格納する。従って、ワンホットエンコーダ41が出力するデータに基づいて、すなわち、PRPG11が生成する擬似ランダムなテストパタンに基づいてクロック信号gclk1~gclk3のいずれかが選択される。
【0078】
なお、本実施形態では、クロック選択回路14、ワンホットエンコーダ41を用いて、いずれか1つのクロック信号gclk、すなわち、いずれか1つのシフトグループ20を選択する場合について説明したが、これに限定されない。例えば、ワンホットエンコーダ41は廃されてもよい。この場合、クロック選択回路14は、クロックチェーン13から、3つのクロック信号gclk1~gclk3に対応する3ビットデータを入手して、この3ビットデータに基づいてクロック信号gclkを選択してもよい。更に、この場合、3ビットデータの複数ビットが“1”データであってもよい。すなわち、複数のクロック信号gclk(シフトグループ20)が選択されてもよい。
【0079】
1.2 テスト
1.2.1 テストの流れ
次に、テストの流れについて、
図3を用いて説明する。
図3はテストの流れを示すフローチャートである。以下の説明では、説明を簡便にするためにクロック信号gclkの番号に変数n(1≦n≦3)を用いる。変数nは、例えば、ロジックBIST制御回路16が備えるカウンタによって保持される変数であり、ロジックBIST制御回路16の制御によってインクリメントされる。
【0080】
図3に示すように、ロジックBIST制御回路16は、テストを開始すると、n=1を設定する(ステップS11)。すなわち、クロック選択回路14は、シフトグループ20aにクロック信号gclk1を送信する。
【0081】
論理回路10では、受信したクロック信号gclk(n)に対応するシフトグループ20において、1回目のシフトイン動作(スキャンシフト動作)が行われる(ステップS12)。
【0082】
シフトイン動作が終了すると、変数nが上限数(本例はn=3)に達したか確認する(ステップS13)。
【0083】
変数nが上限数に達していない場合(ステップS13_No)、すなわち、全てのシフトグループ20において1回目のシフトイン動作が終了していない場合、ロジックBIST制御回路16は、変数nをインクリメントしてn=n+1とする(ステップS14)。そして、ロジックBIST制御回路16は、ステップS12に戻り、シフトイン動作を繰り返す。
【0084】
変数nが上限数に達している場合(ステップS13_Yes)、ロジックBIST制御回路16は、各シフトグループ20における1回目のシフトイン動作を終了する。次に、ロジックBIST制御回路16は、キャプチャ動作及びスキャンシフト動作を実行するシフトグループ20を選択する。すなわち、クロック選択回路14は、ワンホットエンコーダ41が出力するデータに基づいてランダムに変数nを選択する(ステップS15)。
【0085】
論理回路10では、クロック信号gclk(n)に対応するシフトグループ20において、キャプチャ動作が行われる(ステップS16)。
【0086】
キャプチャ動作が終了すると、引き続き、クロック信号gclk(n)に対応するシフトグループ20において、スキャンシフト動作が行われる(ステップS17)。
【0087】
ロジックBIST制御回路16は、テスト(LBIST)が終了していない場合(ステップS18_No)、ステップS15に戻り、テストを継続する。
【0088】
ロジックBIST制御回路16は、テスト(LBIST)が終了した場合(ステップS18_Yes)、故障判定の結果を外部デバイスに出力する。
【0089】
1.2.2 テストの具体例
次に、テストの具体例について、
図4~
図9を用いて説明する。
図4~
図9は、テスト時のクロック信号及びデータの流れを示す図である。なお、
図4~
図9の例では、説明を簡略化するため、論理回路10、PRPG11、MISR12、クロックチェーン13、及びクロック選択回路14を示し、他の回路は省略している。また、クロック選択回路14の構成において、gclk1生成部50内のフリップフロップ53、gclk2生成部60内のフリップフロップ63、及びgclk3生成部70内のフリップフロップ73を示し、他の素子は省略している。
【0090】
まず、ロジックBIST制御回路16は、シフトグループ20aに対して1回目のスキャンシフト動作(シフトイン動作)を実行する。
【0091】
図4に示すように、まず、アップデートクロック信号update_clkが“H”レベルに立ち上がるタイミングに合わせて、クロック選択回路14のフリップフロップ53には“1”データが格納され、フリップフロップ63及び73には、“0”データが格納される。すなわち、アップデートレジスタに“100”データが格納される。この状態において、クロック選択回路14は、シフトグループ20a内のスキャンチェーンSCにクロック信号gclk1(クロック信号bist_clk)を送信する。また、このとき、クロックチェーン13にはクロック生成回路15からクロック信号bist_clkが送信される。この結果、シフトグループ20a及びクロックチェーン13を対象としたシフトイン動作が実行される。
【0092】
次に、ロジックBIST制御回路16は、シフトグループ20bに対して1回目のスキャンシフト動作(シフトイン動作)を実行する。
【0093】
図5に示すように、シフトグループ20aにおけるシフトイン動作が終了すると、フリップフロップ53、63、及び73の保持データが更新される。より具体的には、アップデートクロック信号update_clkが“H”レベルに立ち上がるタイミングに合わせて、フリップフロップ53及び73に”0”データが格納され、フリップフロップ63に“1”データが格納される。すなわち、アップデートレジスタに“010”データが格納される。この状態において、クロック選択回路14は、シフトグループ20b内のスキャンチェーンSCにクロック信号gclk2(クロック信号bist_clk)を送信する。また、このとき、クロックチェーン13にはクロック生成回路15からクロック信号bist_clkが送信される。この結果、シフトグループ20b及びクロックチェーン13を対象としたシフトイン動作が実行される。
【0094】
次に、ロジックBIST制御回路16は、シフトグループ20cに対して1回目のスキャンシフト動作(シフトイン動作)を実行する。
【0095】
図6に示すように、シフトグループ20bにおけるシフトイン動作が終了すると、フリップフロップ53、63、及び73の保持データが更新される。より具体的には、アップデートクロック信号update_clkが“H”レベルに立ち上がるタイミングに合わせて、フリップフロップ53及び63に”0”データが格納され、フリップフロップ73に“1”データが格納される。すなわち、アップデートレジスタに“001”データが格納される。この状態において、クロック選択回路14は、シフトグループ20c内のスキャンチェーンSCにクロック信号gclk3(クロック信号bist_clk)を送信する。また、このとき、クロックチェーン13にはクロック生成回路15からクロック信号bist_clkが送信される。この結果、シフトグループ20c及びクロックチェーン13を対象としたシフトイン動作が実行される。
【0096】
次に、ロジックBIST制御回路16は、ランダムに選択されたシフトグループ20に対してキャプチャ動作と2回目のスキャンシフト動作を実行する。
【0097】
図7に示すように、シフトグループ20a~20cにおける1回目のスキャンシフト動作(シフトイン動作)が終了すると、キャプチャ動作を実行するシフトグループ20がクロックチェーン13の出力データに基づいてランダムに選択される。より具体的には、
図7の例では、クロックチェーン13の値に基づいて、クロック選択回路14のワンホットエンコーダ41は、“010”データを出力する。この結果、フリップフロップ53及び73に”0”データが格納され、フリップフロップ63に“1”データが格納される。すなわち、アップデートレジスタに“010”データが格納される。
【0098】
図8に示すように、アップデートレジスタに“010”データが格納されている状態において、クロック選択回路14は、キャプチャ動作を実行するために、シフトグループ20bのスキャンチェーンSCに、クロック信号gclk2として、クロック信号cp_clk2を送信する。このとき、クロックチェーン13にはクロック生成回路15からクロック信号bist_clkが送信される。なお、
図8の例では、1パルスのクロック信号gclk2及びクロック信号bist_clkが送信されているが、各々のパルス数は1パルスに限定されない。例えば、テストにおける遅延故障に対応するために、クロック信号gclk2を2パルス以上送信してもよい。
【0099】
なお、キャプチャ動作において、例えば、複数のシフトグループ20が選択されている場合、各々のクロック信号gclk(すなわちクロック信号cp_clk)は異なるタイミングで順次に送信されてもよい。
【0100】
図9に示すように、アップデートレジスタに“010”データが格納されている状態において、クロック選択回路14は、スキャンシフト動作を実行するために、シフトグループ20bのスキャンチェーンSCに、クロック信号gclk2として、クロック信号bist_clkを送信する。このとき、クロックチェーン13にはクロック生成回路15からクロック信号bist_clkが送信される。MISR12は、シフトグループ20bのスキャンチェーンSCからシフトアウトしたデータを圧縮してロジックBIST制御回路16の比較器30に送信する。
【0101】
1.2.3 テスト時の各信号のタイミングチャート
次に、テスト時の各信号のタイミングチャートについて、
図10を用いて説明する。
図10は、テスト時の各クロック信号及びFSM31から出力された制御信号のタイミングチャートである。
【0102】
図10に示すように、FSM31は、テストの期間を大まかに4つのステートS0~S3に分けて制御している。まず、時刻t0からt1までのステートS0は、例えば、ロジックBIST制御回路16の初期化期間を示している。時刻t1からt2までのステートS1は、1回目のスキャンシフト動作(シフトイン動作)を実行する前に、アップデートレジスタに初期値(例えば“100”データ)を入力するための準備期間を示している。時刻t2からt20までのステートS2は、シフトグループ20a~20cへの1回目のスキャンシフト動作(シフトイン動作)の期間を示している。従って、ステートS2では、キャプチャ動作は実行されない。時刻t20以降のステートS3は、1回目のシフトイン動作後に実行されるキャプチャ動作及び2回目以降のスキャンシフト動作の期間を示している。ステートS3では、アップデートレジスタに“100”、“010”、または“001”データのいずれかが格納されると、対応するスキャンチェーンSCにおいて、キャプチャ動作とスキャンシフト動作が連続して実行される。キャプチャ動作とスキャンシフト動作が連続して実行される期間、クロック選択回路14は、対応するスキャンチェーンSCに、クロック信号gclkを送信する。このとき、クロック信号gclkは、キャプチャ動作とスキャンシフト動作とで周波数が異なっていてもよい。
【0103】
まず、ステートS0の時刻t0において、クロック生成回路15は、クロック信号bist_clkの送信を開始する。FSM31は、ファーストロード信号first_load、アップデートリセット信号update_rst、アップデートイネーブル信号update_en、ラストシフト信号last_shift、シフトイネーブル信号shift_enを“L”レベルにする。
【0104】
次に、FSM31は、ステートをS0からS1に移行させる。時刻t1~t2の期間、FSM31は、アップデートリセット信号update_rst及びアップデートイネーブル信号update_enを“H”レベルとする。これにより、クロック選択回路14のマルチプレクサ52の入力端子(“1”)には、“1”データが入力され、マルチプレクサ62及び72の入力端子(“1”)には、“0”データが入力される。
【0105】
次に、FSM31は、ステートをS1からS2に移行させる。時刻t2において、FSM31は、ファーストロード信号first_load及びシフトイネーブル信号shift_enを“H”レベルとし、アップデートリセット信号update_rst及びアップデートイネーブル信号update_enを“L”レベルとする。これにより、時刻t0~t1の期間内に、クロック信号bist_clkと同期して、アップデートクロック信号update_clkが“H”レベルとされる。なお、2つの信号が同期していると説明する場合には、回路による遅延誤差が含まれていてもよい。これにより、アップデートレジスタには“100”データが格納される(
図10の参照符号:update_reg value)。
【0106】
時刻t3~t9の期間内に、クロック選択回路14内において、クロック信号bist_clkと同期したクロック信号gclk1が生成される。なお、各クロック信号gclkのパルス数は、スキャンチェーンSC内に含まれるフリップフロップ21に基づいて設定される。この期間、スキャンチェーンSCでは、PRPG11においてランダムに生成されたテストパタンが、クロック信号gclk1が“H”レベルに立ち上がるタイミングに合わせてシフトインされる(
図10の参照符号:clkchain value)。
【0107】
時刻t7~t8の期間、FSM31は、ラストシフト信号last_shiftを“H”レベルとする。例えば、FSM31は、クロック信号gclk1~gclk3のパルス数をカウントしており、スキャンシフト動作において、クロック信号gclk1~gclk3のいずれかの最後のパルスを送信する前に、ラストシフト信号last_shiftを“H”レベルにする。ファーストロード信号first_load及びラストシフト信号last_shiftが“H”レベルのため、時刻t8~t9の期間内に、クロック信号bist_clkと同期して、アップデートクロック信号update_clkが“H”レベルとされる。
【0108】
時刻t8において、アップデートクロック信号update_clkが“H”レベルに立ち上がるタイミングに合わせて、アップデートレジスタには“010”データが格納される。
【0109】
時刻t9~t15の期間内に、クロック選択回路14内において、クロック信号bist_clkと同期したクロック信号gclk2が生成される。この期間、スキャンチェーンSCでは、PRPG11において擬似ランダムに生成されたテストパタンが、クロック信号bist_clkが“H”レベルに立ち上がるタイミングに合わせてシフトインされる。
【0110】
時刻t13~t14の期間、FSM31は、ラストシフト信号last_shiftを“H”レベルとする。ファーストロード信号first_load及びラストシフト信号last_shiftが“H”レベルのため、時刻t14~t15の期間内に、クロック信号bist_clkと同期して、アップデートクロック信号update_clkが“H”レベルとされる。
【0111】
時刻t14において、アップデートクロック信号update_clkが“H”レベルに立ち上がるタイミングに合わせて、アップデートレジスタには“001”データが格納される。
【0112】
時刻t15~t21の期間内に、クロック選択回路14内において、クロック信号bist_clkと同期したクロック信号gclk3が生成される。この期間、スキャンチェーンSCでは、PRPG11においてランダムに生成されたテストパタンが、クロック信号bist_clkが“H”レベルに立ち上がるタイミングに合わせてシフトインされる。すなわち、スキャンチェーンSCは、クロック信号gclk1~gclk3のいずれが生成されている期間(時刻t3~t21の期間)、クロック信号bist_clkが“H”レベルに立ち上がるタイミングに合わせて、データがシフトインされる。
【0113】
時刻t19~t20の期間、FSM31は、ラストシフト信号last_shiftを“H”レベルとする。ファーストロード信号first_load及びラストシフト信号last_shiftが“H”レベルのため、時刻t20~t21の期間内に、クロック信号bist_clkと同期して、アップデートクロック信号update_clkが“H”レベルとされる。
【0114】
時刻t20において、アップデートクロック信号update_clkが“H”レベルに立ち上がるタイミングに合わせて、アップデートレジスタには“000”データが格納される。
【0115】
次に、FSM31は、ステートをS2からS3に移行させる。時刻t20において、FSM11は、ファーストロード信号first_load、ラストシフト信号last_shift、及びシフトイネーブル信号shift_enを“L”レベルとする。
【0116】
また、FSM11は、時刻t20~t21の期間、アップデートイネーブル信号update_enを“H”レベルとする。クロック選択回路14は、アップデートイネーブル信号update_enが“H”レベルである期間に、ワンホットエンコーダ41の出力データをgclk1生成部50、gclk2生成部60、及びgclk3生成部70にそれぞれ取り込む。また、アップデートイネーブル信号update_enが“H”レベルであるため、時刻t21~t22の期間内に、クロック信号bist_clkと同期して、アップデートクロック信号update_clkが“H”レベルとされる。
【0117】
時刻t21において、アップデートクロック信号update_clkが“H”レベルに立ち上がるタイミングに合わせて、アップデートレジスタには、例えば、”010”データが格納される。
【0118】
次に、時刻t22において、クロック選択回路14は、クロック信号cp_clk2をクロック信号gclk2として、シフトグループ20bに送信する。なお、
図10の例では、クロック信号cp_clk2の周波数は、クロック信号bist-clkの周波数と異なり、時刻t22~t23の期間に2つのパルスが出力されている場合を示している。これにより、例えば、時刻t22~t23の期間、キャプチャ動作が実行される。
【0119】
キャプチャ動作が終了すると、FSM31は、時刻t24~t30の期間、シフトイネーブル信号shift_enを“H”レベルにする。これにより、時刻t25~t31の期間内に、クロック選択回路14内において、クロック信号bist_clkと同期したクロック信号gclk2が生成される。
【0120】
時刻t29~t30の期間、FSM31は、ラストシフト信号last_shiftを“H”レベルとする。
【0121】
各シフトグループ20におけるキャプチャ動作とスキャンシフト動作は、時刻t20~t30の期間の処理の繰り返しである。
【0122】
例えば、FSM11は、時刻t300~t31の期間、アップデートイネーブル信号update_enを“H”レベルとする。クロック選択回路14は、アップデートイネーブル信号update_enが“H”レベルである期間に、ワンホットエンコーダ41の出力データをgclk1生成部50、gclk2生成部60、及びgclk3生成部70にそれぞれ取り込む。また、アップデートイネーブル信号update_enが“H”レベルであるため、時刻t31~t32の期間内に、クロック信号bist_clkと同期して、アップデートクロック信号update_clkが“H”レベルとされる。
【0123】
時刻t31において、アップデートクロック信号update_clkが“H”レベルに立ち上がるタイミングに合わせて、アップデートレジスタには、例えば、”100”データが格納される。
【0124】
次に、時刻t32において、クロック選択回路14は、クロック信号cp_clk1をクロック信号gclk1として、シフトグループ20aに送信する。これにより、例えば、時刻t32~t33の期間、キャプチャ動作が実行される。
【0125】
キャプチャ動作が終了すると、FSM31は、時刻t34において、シフトイネーブル信号shift_enを“H”レベルにする。これにより、例えば、時刻t35以降の期間に、クロック選択回路14内において、クロック信号bist_clkと同期したクロック信号gclk1が生成される。
【0126】
1.3 本実施形態に係る効果
本実施形態に係る構成であれば、テストによる消費電力を低減できる。本効果につき、詳述する。
【0127】
LBISTでは、テスト対象となる論理回路10の論理ブロック、すなわち、複数のスキャンチェーンSCに含まれる全てのフリップフロップ21が1種類のクロック信号に同期して一斉に動作する。このため、LBISTによる消費電力は、通常動作時の論理回路10の消費電力よりも多い傾向にある。消費電力が急激に増加すると、IRドロップが発生し、電源電圧が低下する場合がある。この結果、例えば、テストの故障判定に誤りが生じる可能性がある。また、テストと並行して、非テスト対象の論理ブロックにて通常処理が行われている場合、通常処理において、信号にノイズが生じたり、電源電圧低下による瞬時停止(瞬停)が発生したりする可能性がある。
【0128】
これに対し、本実施形態に係る構成は、テストの際、複数のスキャンチェーンSCを複数のシフトグループ20に分割できる。そして、複数のシフトグループ20のいずれかをランダムに選択して、テストにおけるスキャンシフト動作及びキャプチャ動作を実行できる。例えば、テスト対象の論理ブロック内にある複数のスキャンチェーンSCに一括してテストパタンを入力しても、テストの結果に影響するのは、複数のスキャンチェーンSCの一部である場合が多い。このため、テストの結果に影響を与えないスキャンチェーンSCに関しては、スキャンシフト動作及びキャプチャ動作を省略できる。本実施形態では、シフトグループ20、すなわちスキャンチェーンSCを選択して、スキャンシフト動作及びキャプチャ動作を実行することにより、テストによる消費電力を低減することができる。
【0129】
更に、本実施形態に係る構成であれば、テストによる消費電力を削減できる。このため、通常処理と並列にテストが実行された場合であっても、通常処理において、ノイズの発生または電源電圧低下による瞬停等の発生を抑制できる。
【0130】
2.第2実施形態
次に、第2実施形態について説明する。第2実施形態では、第1実施形態で説明した半導体集積回路を設計するための回路設計装置について説明する。
【0131】
2.1 回路設計装置のハードウェア構成
まず、回路設計装置のハードウェア構成の一例について、
図11を用いて説明する。
図11は、回路設計装置のハードウェア構成を示すブロック図である。
【0132】
図11に示すように、回路設計装置100は、CPU101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、ストレージ104、ドライブ105、及びインタフェース106を備える。回路設計装置100は、LSI等の半導体チップ内の回路の設計段階において、LBISTを実行するために必要な回路及びスキャンチェーンSCの回路等を挿入してネットリストを生成する機能を有する。
【0133】
CPU101は、ROM102に記憶された各種処理プログラムを実行し、RAM103を作業領域として用いることにより、回路設計装置100全体の動作を制御する。
【0134】
ストレージ104は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)等の補助記憶装置である。ストレージ104には、回路設計装置100で実行されるLBIST挿入プログラム143が記憶される。また、ストレージ104には、LBIST挿入プログラム143が実行される際に必要な入力情報として、例えば、ネットリスト141、テスト容易化設計(DFT:Design For Testability)の仕様情報(以下、「DFT仕様」と表記する)142、及びLBIST回路情報144が記憶される。また、ストレージ104には、回路設計装置100で実行される故障シミュレータのプログラムが記憶される。
【0135】
ネットリスト141は、半導体集積回路1の回路データである。より具体的には、ネットリスト141は、半導体チップが所望の機能を有するために半導体チップ内に設けられた各種素子(論理積回路や、排他的論理和回路等の論理ゲート)を互いに電気的に接続する導電体(すなわち、ネット又は配線)に関する情報である。ネットリスト141には、例えば、各ネットを介して通信される信号の特性が、対応するネットに関連づけられて記憶される。
【0136】
DFT仕様142は、半導体チップ内の各種素子のテスト(LBISTを含む)を容易に行えるようにするためのテスト容易化設計の仕様に関する情報である。LBISTのスキャンチェーンSCもDFT仕様に基づいて、設計される。
【0137】
LBIST挿入プログラム143は、DFT仕様142に基づいて、第1実施形態で説明した回路及びスキャンチェーンSCを回路データに挿入するための処理(設計)を回路設計装置100に実行させるためのプログラム(ソフトウェア)である。なお、LBIST挿入プログラム143の詳細については、後述する。
【0138】
LBIST回路情報144は、シフトグループ20毎の制御に対応したLBISTを実行するために用いられる回路(以下「LBIST回路」とも表記する)の情報である。例えば、シフトグループ制御機構を有するLBIST回路には、第1実施形態で説明したPRPG11、MISR12、クロックチェーン13、クロック選択回路14、及びロジックBIST制御回路16が含まれる。
【0139】
故障シミュレーション実行プログラム145は、設計した回路の故障シミュレーションを実行させるためのプログラムである。なお、
図11の例は、LBIST挿入プログラム143と故障シミュレーション実行プログラム145を分けて表記しているが、LBIST挿入プログラム143及び故障シミュレーション実行プログラム145とを併せて1つのLBIST回路設計プログラムとしてもよい。
【0140】
ドライブ105は、例えば、CD(Compact Disk)ドライブ、DVD(Digital Versatile Disk)ドライブ等であり、記憶媒体151に記憶されたプログラムを読み込むための装置である。ドライブ105の種類は、記憶媒体151の種類に応じて適宜選択されてよい。上記ネットリスト141、DFT仕様142、LBIST挿入プログラム143、LBIST回路情報144、及び故障シミュレーション実行プログラム145は、この記憶媒体151に記憶されていてもよい。
【0141】
記憶媒体151は、コンピュータその他装置、機械等が記録されたプログラム等の情報を読取り可能なように、当該プログラム等の情報を、電気的、磁気的、光学的、機械的又は化学的作用によって蓄積する媒体である。
【0142】
インタフェース106は、回路設計装置100とその外部デバイスとの間の情報の授受を司るインタフェースである。インタフェース106は、例えば、有線又は無線による任意の通信方式を適用した通信インタフェース、プリンタ、及び表示画面(例えば、LCD(Liquid Crystal Display)又はEL(Electroluminescence)ディスプレイ、ブラウン管等)を介したGUI(Graphical User Interface)等の任意のインタフェースを含む。インタフェース106は、回路設計装置100内で実行されたLBIST挿入プログラム143によって生成されたスキャン・LBIST挿入後ネットリスト201、故障検出率レポート202、及びテストパタン203を出力し、ユーザに提示する機能を有する。すなわち、インタフェース106は、スキャン・LBIST挿入後ネットリスト201、故障検出率レポート202、及びテストパタン203の出力部として機能する。
【0143】
スキャン・LBIST挿入後ネットリスト201は、LBIST挿入プログラム143実行後のネットリストに関する情報である。
【0144】
故障検出率レポート202は、故障シミュレーション実行プログラム145で実行された故障シミュレーションによる故障検出の結果についてのレポートである。
【0145】
テストパタン203は、LBISTを実行する際に用いられるテストパタンである。
【0146】
2.2 回路設計装置の機能構成
次に、回路設計装置100の機能構成の一例について、
図12を用いて説明する。
図12は、回路設計装置100の機能構成を説明するためのブロック図である。
【0147】
回路設計装置100のCPU101は、例えば、ストレージ104に記憶されたLBIST挿入プログラム143または故障シミュレーション実行プログラム145をRAM103に展開する。そして、CPU101は、RAM103に展開されたLBIST挿入プログラム143または故障シミュレーション実行プログラム145を解釈及び実行して、各構成要素を制御する。
【0148】
図12に示すように、回路設計装置100は、LBIST挿入プログラム143を実行する際、クロック抽出部210、シフトグループ込みLBIST構成生成部211、LBIST回路挿入部212、及びスキャンチェーン挿入部213を備えるコンピュータとして機能する。また、回路設計装置100は、LBIST挿入プログラム143を実行する際、シフトグループ込みLBIST構成生成部211、LBIST回路挿入部212、及びスキャンチェーン挿入部213によって、クロック系統情報220、LBIST挿入前構成情報221、LBIST挿入後ネットリスト222、及びLBIST挿入後構成情報223を中間生成物として生成し、最終的にスキャン・LBIST挿入後ネットリスト201を出力するコンピュータとして機能する。
【0149】
クロック抽出部210は、ネットリスト141及びDFT仕様142に基づいて、設計対象である半導体集積回路1の通常処理及びテストに用いられる各種クロック信号に関するクロック系統情報220を抽出(出力)する。クロック系統情報220には、例えば、テストに関する情報として、シフトグループ20の制御に用いられるクロック信号bist_clk、gclk1~gclk3、及びcp_clk1~cp_clk3に関する情報が含まれる。クロック抽出部210は、クロック系統情報220を、シフトグループ込みLBIST構成生成部211に送信する。
【0150】
シフトグループ込みLBIST構成生成部211は、ネットリスト141、DFT仕様142、クロック系統情報220、及び図示せぬLBIST回路情報144等に基づいて、LBIST挿入前構成情報221を生成する。LBIST挿入前構成情報221には、LBIST信号の接続端子情報及び極性情報、シフトグループ20に対応するクロック信号の接続端子情報及び周波数情報、シフトグループ20毎のスキャンチェーンSCの本数及び長さ(フリップフロップ21の個数)についての情報、キャプチャ動作時のクロック信号gclkのサイクル数についての情報、テストパタン数の上限数についての情報、テスト時のフリップフロップ21のトグル率の上限値についての情報が含まれる。ここで、LBIST信号には、LBIST実行の動作モードの設定、PRPG11に入力される初期データ、初期データに対する期待値、または故障判定のパス/フェイル等に対応する複数の信号が含まれる。また、LBIST挿入前構成情報221には、シフトグループ制御機構を有するLBIST回路の構成についての情報が含まれる。すなわち、シフトグループ込みLBIST構成生成部211は、シフトグループ制御機構を有するLBIST回路を生成する。より具体的には、LBIST挿入前構成情報221には、PRPG11、MISR12、シフトグループ20に対応したクロックチェーン13、クロック選択回路14、及びロジックBIST制御回路16についての情報が含まれる。シフトグループ込みLBIST構成生成部211は、LBIST挿入前構成情報221をLBIST回路挿入部212に送信する。
【0151】
LBIST回路挿入部212は、ネットリスト141及びLBIST挿入前構成情報221に基づいて、LBIST回路の構成をネットリスト141に挿入し、LBIST挿入後ネットリスト222及びLBIST挿入後構成情報223を生成する。LBIST挿入後構成情報223には、LBIST信号の接続端子情報及び極性情報、LBIST制御レジスタについての情報、シーケンス情報、シフトグループ20に対応するクロック信号の接続端子情報及び周波数情報、PRPG11及びMISR12の構造(すなわち、テストパタンの生成及び圧縮に関する生成多項式)についての情報、各シフトグループ20のスキャンチェーンSCの接続端子情報、キャプチャ動作時のクロック信号gclkのサイクル数についての情報、テストパタン数の上限数についての情報、テスト時のフリップフロップ21のトグル率の上限値についての情報が含まれる。LBIST制御レジスタは、LBISTの制御に用いられるレジスタであり、半導体集積回路1内に設けられる。例えば、LBIST制御レジスタは、LBIST信号によりシリアルに設定される。例えば、ロジックBIST制御回路16等は、LBIST制御レジスタの保持する情報に基づいて動作する。シーケンス情報は、LBIST制御レジスタを設定するシーケンス、LBISTテストを開始させるシーケンス、及び半導体集積回路1から故障判定の結果を読み出す際のシーケンスに関する情報を含む。LBIST回路挿入部212は、LBIST挿入後ネットリスト222及びLBIST挿入後構成情報223をスキャンチェーン挿入部213に送信する。または、LBIST挿入後構成情報223は、後述する故障シミュレーションに用いられる。
【0152】
スキャンチェーン挿入部213は、LBIST挿入後ネットリスト222及びLBIST挿入後構成情報223に基づいて、各シフトグループ20に含まれるスキャンチェーンSCの構成を生成する。そして、スキャンチェーン挿入部213は、生成したスキャンチェーンSCの構成をLBIST挿入後ネットリスト222に挿入し、スキャン・LBIST挿入後ネットリスト201を生成する。スキャンチェーン挿入部213は、スキャン・LBIST挿入後ネットリスト201を外部デバイスに出力する。
【0153】
また、回路設計装置100は、LBIST挿入後構成情報223及びスキャン・LBIST挿入後ネットリスト201を生成した後に、故障シミュレーション実行プログラム145を実行する際、故障シミュレータ230を備えるコンピュータとして機能する。回路設計装置100は、故障シミュレーションを実行して、故障検出率レポート202及びテストパタン203を出力するコンピュータとして機能する。
【0154】
故障シミュレータ230は、LBIST挿入後構成情報223及びスキャン・LBIST挿入後ネットリスト201に基づいて、LBIST用のテストパタン203を生成し、LBISTにおける故障シミュレーションを実行する。故障シミュレータ230は、故障シミュレーションの結果に基づいて、故障検出率を算出する。故障シミュレータ230は、生成したテストパタン203及び故障シミュレーションの結果に基づく故障検出率レポート202を外部デバイスに出力する。
【0155】
回路設計装置100は、以上のような機能構成を実装することにより、LBISTに対応した回路設計及び故障シミュレーションを実行することができる。
【0156】
なお、クロック抽出部210、シフトグループ込みLBIST構成生成部211、LBIST回路挿入部212、スキャンチェーン挿入部213、及び故障シミュレータ230は、回路設計装置100に設けられた専用回路で実現されてもよい。
【0157】
2.3 回路設計の流れ
次に、回路設計の流れについて、
図13を用いて説明する。
図13は、回路設計の流れを示すフローチャートである。
【0158】
図13に示すように、
まず、CPU101は、ストレージ104から読み出したLBIST挿入プログラム143をRAM103に展開する。すなわち、CPU101は、LBIST挿入プログラム143を開始する。
【0159】
CPU101は、クロック抽出部210として動作し、設計対象のネットリスト141とDFT仕様142からネットリスト141のクロック系統情報220を抽出する(ステップS20)。CPU101は、例えばストレージ104に、抽出したクロック系統情報220を保存する。
【0160】
次に、CPU101は、シフトグループ込みLBIST構成生成部211として動作し、ネットリスト141、DFT仕様142、クロック系統情報220、及びLBIST回路情報144に基づいて、シフトグループ制御機構を有するLBIST回路を生成する(ステップS21)。すなわち、CPU101は、LBIST挿入前構成情報221を生成する。CPU101は、例えばストレージ104に、生成したLBIST挿入前構成情報221を保存する。
【0161】
次に、CPU101は、LBIST回路挿入部212として動作し、ネットリスト141及びLBIST挿入前構成情報221に基づいて、ネットリスト141にLBIST回路を組み込む(ステップS22)。すなわち、CPU101は、LBIST挿入後ネットリスト222及びLBIST挿入後構成情報223を生成する。CPU101は、例えばストレージ104に、LBIST挿入後ネットリスト222及びLBIST挿入後構成情報223を保存する。
【0162】
次に、CPU101は、スキャンチェーン挿入部213として動作し、LBIST挿入後ネットリスト222及びLBIST挿入後構成情報223に基づいて、スキャンチェーンSCを生成する(ステップS23)。すなわち、CPU101は、スキャン・LBIST挿入後ネットリスト201を生成する。
【0163】
次に、CPU101は、ストレージ104から読み出した故障シミュレーション実行プログラム145をRAM103に展開する。すなわち、CPU101は、故障シミュレーション実行プログラム145を開始する。
【0164】
CPU101は、LBIST挿入後構成情報223及びスキャン・LBIST挿入後ネットリスト201に基づいて、テストパタン203を生成する(ステップS24)。
【0165】
次に、CPU101は、生成したテストパタン203に基づいて、故障シミュレーションを実行し(ステップS25)、故障検出率レポート202を作成する。
【0166】
CPU101は、故障シミュレーションが終了すると、スキャン・LBIST挿入後ネットリスト201、テストパタン203、及び故障検出率レポート202を外部デバイスに出力する(ステップS26)。
【0167】
2.4 本実施形態に係る効果
本実施形態に係る構成であれば、第1実施形態で説明したLBISTを実行可能な半導体集積回路を設計できる。
【0168】
3.変形例等
上記実施形態に係る構成であれば、半導体集積回路は、第1クロック信号(gclk1)に基づいて動作する第1スキャンチェーン(SC)と、第2クロック信号(gclk2)に基づいて動作する第2スキャンチェーン(SC)とを含む論理回路(10)と、第1及び第2クロック信号の1つを選択して、対応する第1及び第2スキャンチェーンの1つに送信するクロック選択回路(14)と、テストパタンに基づいてクロック選択回路に第1データを送信する第3スキャンチェーン(13)とを含む。クロック選択回路は、第3スキャンチェーンから受信した第1データに基づいて第1及び第2クロック信号の1つを選択可能である。テストは、キャプチャ動作とスキャンシフト動作とを含む。テストのときに、第1期間に第1スキャンチェーンのキャプチャ動作及びスキャンシフト動作が連続して実行され、第1期間と異なる第2期間に第2スキャンチェーンのキャプチャ動作及びスキャンシフト動作が連続して実行される。
【0169】
上記実施形態により、テストによる消費電力を低減できる半導体集積回路を提供する。
【0170】
なお、実施形態は上記で説明した形態に限られず、種々の変形が可能である。
【0171】
更に、上記実施形態における「接続」とは、間に例えばトランジスタあるいは抵抗等、他の何かを介在させて間接的に接続されている状態も含む。
【0172】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0173】
1…半導体集積回路、10…論理回路、11…擬似ランダムパタン生成回路、12…多入力シグネチャレジスタ、13…クロックチェーン、14…クロック選択回路、15…クロック生成回路、16…ロジックBIST制御回路、20…シフトグループ、21、53、63、73…フリップフロップ、22…スキャンFF、23、51、52、56、61、62、66、71、72、76…マルチプレクサ、30…比較器、31…有限状態機械、41…ワンホットエンコーダ、42、43、46、49、55、65、67、75、77…AND回路、44、47…OR回路、45…NAND回路、48、54、64、74…ラッチ回路、50…gclk1生成部、60…gclk2生成部、70…gclk3生成部、100…回路設計装置、101…CPU、102…ROM、103…RAM、104…ストレージ、105…ドライブ、106…インタフェース、141…ネットリスト、142…DFT仕様、143…LBIST挿入プログラム、144…LBIST回路情報、145…故障シミュレーション実行プログラム、151…記憶媒体、201…スキャン・LBIST挿入後ネットリスト、202…故障検出率レポート、203…テストパタン、210…クロック抽出部、211…シフトグループ込みLBIST構成生成部、212…LBIST回路挿入部、213…スキャンチェーン挿入部、220…クロック系統情報、221…LBIST挿入前構成情報、222…LBIST挿入後ネットリスト、223…LBIST挿入後構成情報、230…故障シミュレータ。