(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-03
(45)【発行日】2024-06-11
(54)【発明の名称】半導体装置、および半導体装置のテスト方法
(51)【国際特許分類】
G01R 31/28 20060101AFI20240604BHJP
H01L 21/822 20060101ALI20240604BHJP
H01L 27/04 20060101ALI20240604BHJP
G06F 11/22 20060101ALI20240604BHJP
【FI】
G01R31/28 V
H01L27/04 T
G06F11/22 673Z
(21)【出願番号】P 2020054631
(22)【出願日】2020-03-25
【審査請求日】2023-03-08
【前置審査】
(73)【特許権者】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【識別番号】100115808
【氏名又は名称】加藤 真司
(72)【発明者】
【氏名】草刈 憲
【審査官】田口 孝明
(56)【参考文献】
【文献】特開2012-252373(JP,A)
【文献】特開平09-325946(JP,A)
【文献】特開2011-170691(JP,A)
【文献】特開2012-138048(JP,A)
【文献】特開2020-034315(JP,A)
【文献】特開2008-267999(JP,A)
【文献】特開昭54-014651(JP,A)
【文献】特開2014-096042(JP,A)
【文献】特開2006-300650(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G01R 31/28-31/3193、
H01L 27/04、
G06F 11/22-11/277
(57)【特許請求の範囲】
【請求項1】
半導体装置(10)であって、
通常処理と自己テストとを行う複数の回路ブロック(50)と、
前記複数の回路ブロックの前記通常処理の実行制御を行う通常制御器(70)と、
前記複数の回路ブロックの前記自己テストの実行制御を行うテスト制御器(30)と、
を備え、
前記テスト制御器は、前記複数の回路ブロックの各々の稼働状態及び前記自己テストの実行制御を行うための制御原因情報に少なくとも基づいて、前記自己テストの実行制御を行
い、
前記制御原因情報は、前記複数の回路ブロックの各々の前記通常処理の実行回数と前記自己テストの実行回数との和からなる総実行回数であり、
前記テスト制御器は、前記総実行回数が少ない前記回路ブロックに優先的に前記自己テストを実行させる、半導体装置。
【請求項2】
前記制御原因情報は、前記複数の回路ブロックの各々の前記通常処理及び/又は前記自己テストの実行履歴に関する情報である、請求項1に記載の半導体装置。
【請求項3】
半導体装置(10)であって、
通常処理と自己テストとを行う複数の回路ブロック(50)と、
前記複数の回路ブロックの前記通常処理の実行制御を行う通常制御器(70)と、
前記複数の回路ブロックの前記自己テストの実行制御を行うテスト制御器(30)と、
を備え、
前記テスト制御器は、前記複数の回路ブロックの各々の稼働状態及び前記自己テストの実行制御を行うための制御原因情報に少なくとも基づいて、前記自己テストの実行制御を行い、
前記制御原因情報は、前記複数の回路ブロックの各々に設定された前記通常処理の優先度を含み、
前記テスト制御器は、前記通常処理の優先度が低い前記回路ブロックに優先的に前記自己テストを実行させる半導体装置。
【請求項4】
前記制御原因情報は、前記複数の回路ブロックの各々に設定された前記自己テストの優先度を含み、
前記テスト制御器は、前記自己テストの優先度が高い前記回路ブロックに優先的に前記自己テストを実行させる、請求項
3に記載の半導体装置。
【請求項5】
半導体装置(10)であって、
通常処理と自己テストとを行う複数の回路ブロック(50)と、
前記複数の回路ブロックの前記通常処理の実行制御を行う通常制御器(70)と、
前記複数の回路ブロックの前記自己テストの実行制御を行うテスト制御器(30)と、
を備え、
前記テスト制御器は、前記複数の回路ブロックの各々の稼働状態及び前記自己テストの実行制御を行うための制御原因情報に少なくとも基づいて、前記自己テストの実行制御を行い、
前記稼働状態は、前記回路ブロックが前記通常処理を行っている通常処理状態と、前記回路ブロックが前記自己テストを行っている自己テスト状態と、前記回路ブロックが前記通常処理を待っている通常処理待ち状態とを少なくとも含み、
前記テスト制御器は、前記通常処理状態、前記自己テスト状態、及び前記通常処理待ち状態のいずれにも該当しない前記回路ブロックに優先的に前記自己テストを実行させる
、半導体装置。
【請求項6】
前記稼働状態は、前記回路ブロックが前記通常処理を行っている通常処理状態と、前記回路ブロックが前記自己テストを行っている自己テスト状態とを少なくとも含み、
前記テスト制御器は、前記複数の回路ブロックのいずれかが前記自己テスト状態にあるときに、いずれの前記回路ブロックにも新たに前記自己テストを実行させない、請求項1に記載の半導体装置。
【請求項7】
半導体装置(10)であって、
通常処理と自己テストとを行う複数の回路ブロック(50)と、
前記複数の回路ブロックの前記通常処理の実行制御を行う通常制御器(70)と、
前記複数の回路ブロックの前記自己テストの実行制御を行うテスト制御器(30)と、
を備え、
前記テスト制御器は、前記複数の回路ブロックの各々の稼働状態及び前記自己テストの実行制御を行うための制御原因情報に少なくとも基づいて、前記自己テストの実行制御を行い、
前記稼働状態は、前記回路ブロックが前記自己テストを行っている自己テスト状態を少なくとも含み、
前記テスト制御器は、前記自己テスト状態にある前記回路ブロックが実行している前記自己テストを中断して前記通常処理を行う際に、実行している前記自己テストを緩やかに停止させる
、半導体装置。
【請求項8】
前記複数の回路ブロックは、前記自己テストにおいて、テスト用入力を受け、
前記テスト制御器は、前記テスト用入力に対して前記複数の回路ブロックの各々が出力する応答を起源とするテスト応答を取得して、前記複数の回路ブロックの各々について、基準値と比較することで当該回路ブロックの前記自己テストの結果を得る比較器を備え、
前記複数の回路ブロックが前記テスト用入力を共用する、請求項1に記載の半導体装置。
【請求項9】
前記応答を圧縮して圧縮値を生成する符号圧縮器(60)を更に備え、
前記比較器は前記圧縮値を前記テスト応答として前記基準値と比較する、請求項
8に記載の半導体装置。
【請求項10】
前記符号圧縮器を前記複数の回路ブロックが共用する、請求項
9に記載の半導体装置。
【請求項11】
前記基準値は、前記テスト用入力に応じて用意された期待値である、請求項
9に記載の半導体装置。
【請求項12】
前記複数の回路ブロックは、互いに同一の機能を有し、
前記複数の回路ブロックの各々の前記基準値は、当該回路ブロックと同一の前記テスト用入力を共用する他の前記回路ブロックのテスト応答である、請求項
8に記載の半導体装置。
【請求項13】
テストパタンを発生するパタン発生器(40)をさらに備え、
前記複数の回路ブロックは、前記パタン発生器が発生する前記テストパタンを前記テスト用入力として受け付ける、請求項
8~
12のいずれか一項に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、自己テストを行う半導体装置、および半導体装置のテスト方法に関する。
【背景技術】
【0002】
車載向けや産業向けの製品に搭載される半導体集積回路において、近年、機能安全の要求から、通常動作の合間に自己テストを行うことを求められる場合がある。このような自己テストを行うための回路を半導体集積回路に実装して行うテストを、組込型自己テスト(BIST:Built-In Self-Test)という。このうちロジック(論理)回路について行うBISTをL(Logic)BISTと呼ぶ(特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
LBIST(ロジック回路の組込型自己テスト) において、テストを実行、制御するためのソフトウェアプログラムを作成することは、半導体集積回路のユーザにとって、大きな負担である。このため、通常の処理が行われていない時に、自動的にテストを実行できる手法が望まれている。また、自己テストの実行が通常の処理に悪影響を及ぼしてはならないため、通常処理と自己テストの実行に要する合計電力を抑えるような仕組みが望まれている。さらに、通常処理や自己テストの実行について、信頼性の観点から、特定の回路ブロックのみが使用されることを防ぎ、全ての回路ブロックがまんべんなく使用されるよう調整し、回路ブロック全体を長持ちさせる仕組みが望まれている。
【0005】
本発明は、ロジック回路の組込型自己テスト(以下単に「自己テスト」という。)を自動的に実行可能な半導体装置を提供することを目的の一つとする。また、本発明の別の目的は、自己テストが通常処理に与える影響を抑えることが可能な半導体装置を提供することである。本発明のさらに別の目的は、自己テストを行う半導体装置において、回路ブロック全体を長持ちさせることである。
【課題を解決するための手段】
【0006】
本発明は上記課題を解決するために以下の技術的手段を採用する。特許請求の範囲及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施の形態に記載の具体的手段との対応関係を示す一例であって、本発明の技術的範囲を限定するものではない。
【0007】
一態様の半導体装置(10)は、通常処理と自己テストとを行う複数の回路ブロック(50)と、前記複数の回路ブロックの前記通常処理の実行制御を行う通常制御器(70)と、前記複数の回路ブロックの前記自己テストの実行制御を行うテスト制御器(30)とを備え、前記テスト制御器は、前記複数の回路ブロックの各々の稼働状態及び前記自己テストの実行制御を行うための制御原因情報に少なくとも基づいて、前記自己テストの実行制御を行う。
【0008】
この構成によれば、テスト制御器が複数の回路ブロックの各々の稼働状態及び自己テストの実行制御を行うための制御原因情報に少なくとも基づいて、自己テストの実行制御を行うので、自己テストを自動的に実行できる。
【0009】
一態様の半導体装置のテスト方法であって、通常処理と自己テストとを行う複数の回路ブロックの各々の稼働状態を取得し、自己テストの実行制御を行うための制御原因情報を取得し、前記複数の回路ブロックの各々の稼働状態及び前記自己テストの実行制御を行うための制御原因情報に少なくとも基づいて、前記自己テストの実行制御を行う。
【0010】
この構成によれば、複数の回路ブロックの各々の稼働状態及び自己テストの実行制御を行うための制御原因情報に少なくとも基づいて、自己テストの実行制御を行うので、自己テストを自動的に実行できる。
【図面の簡単な説明】
【0011】
【
図1】
図1は、本実施形態の前提となる並列処理について説明するための図である。
【
図2】
図2は、
図1に示される並列処理を実行するためのシステム構成例を示す図である。
【
図3】
図3は、
図2に用いられるDFPの構成例を示す図である。
【
図4】
図4は、LBIST回路を含む本発明の実施の形態の半導体装置の基本的な構成を示す図である。
【
図5】
図5は、本発明の実施の形態の半導体装置の自己テストに係る構成を示す図である。
【
図6】
図6は、本発明の実施の形態のテスト制御器が保持している複数の回路ブロックの情報の例を示す表である。
【
図7】
図7は、本発明の実施の形態の半導体装置の通常処理と自己テストの稼働スケジュール例を示す表である。
【
図8】
図8は、本発明の実施の形態の制御器が保持している複数の回路ブロックの情報の自己テスト優先度を最低の「0」にした例を示す表である。
【
図9】
図9は、
図8の場合の半導体装置の通常処理と自己テストの稼働スケジュールの例を示す表である。
【
図10】
図10は、本発明の実施の形態の制御器が保持している複数の回路ブロックの情報の自己テスト優先度を最高の「4」にした例を示す表である。
【
図11】
図11は、
図10の場合の半導体装置の通常処理と自己テストの稼働スケジュールの例を示す表である。
【
図12】
図12は、1つのパタン発生器を全ての回路ブロックが共用する場合のLBIST回路を含む本発明の実施の形態の半導体装置の基本的な構成を示す図である。
【
図13】
図13は、パタン発生器40のみならず、符号圧縮器60を複数の回路ブロック50が共用する場合のLBIST回路を含む本発明の実施の形態の半導体装置の基本的な構成を示す図である。
【
図14】
図14は、他の実施の形態のLBIST回路を含む本発明の実施の形態の半導体装置の基本的な構成を示す図である。
【発明を実施するための形態】
【0012】
以下、添付図面を参照しながら本実施形態について説明する。なお、以下に説明する実施の形態は、本発明を実施する場合の一例を示すものであって、本発明を以下に説明する具体的構成に限定するものではない。本発明の実施にあたっては、実施の形態に応じた具体的構成が適宜採用されてよい。
【0013】
図1(A)は、グラフ構造のプログラムコードを示しており、
図1(B)は、スレッドの状態を示しており、
図1(C)は、並列処理の状況を示している。
【0014】
図1(A)に示されるように、本実施形態が処理対象とするプログラムは、データと処理とが分割されているグラフ構造を有している。このグラフ構造は、プログラムのタスク並列性、グラフ並列性を保持している。
【0015】
図1(A)に示されるプログラムコードに対して、コンパイラによる自動ベクトル化とグラフ構造の抽出を行うと、
図1(B)に示されるような大量のスレッドを生成することができる。
【0016】
図1(B)に示される多量のスレッドは、ハードウェアによる動的レジスタ配置とスレッド・スケジューリングとを行うことにより、
図1(C)に示されるような並列実行を行うことができる。実行中にレジスタ資源を動的配置することで、異なる命令ストリームに対しても複数のスレッドを並列実行することができる。
【0017】
続いて
図2を参照しながら、動的レジスタ配置及びスレッド・スケジューリングを行うアクセラレータとしてのDFP(Data Flow Processor)10を含むシステム構成例である、データ処理システム2を説明する。
【0018】
データ処理システム2は、DFP10と、イベントハンドラ20と、ホストCPU21と、ROM22と、RAM23と、外部インターフェイス24と、システムバス25と、を備えている。ホストCPU21は、データ処理を主として行う演算装置である。ホストCPU21は、OSをサポートしている。イベントハンドラ20は、割り込み処理を生成する部分である。
【0019】
ROM22は、読み込み専用のメモリである。RAM23は、読み書き用のメモリである。外部インターフェイス24は、データ処理システム2外と情報授受を行うためのインターフェイスである。システムバス25は、DFP10と、ホストCPU21と、ROM22と、RAM23と、外部インターフェイス24との間で情報の送受信を行うためのものである。
【0020】
DFP10は、ホストCPU21の重い演算負荷に対処するために設けられている個別のマスタとして位置づけられている。DFP10は、イベントハンドラ20が生成した割り込みをサポートするように構成されている。
【0021】
続いて
図3を参照しながら、DFP10について説明する。
図3に示されるように、DFP10は、コマンドユニット12と、スレッドスケジューラ14と、実行コア16と、メモリサブシステム18と、を備えている。
【0022】
コマンドユニット12は、コンフィグ・インターフェイスとの間で情報通信可能なように構成されている。コマンドユニット12は、コマンドバッファとしても機能している。
【0023】
スレッドスケジューラ14は、
図1(B)に例示されるような多量のスレッドの処理をスケジューリングする部分である。スレッドスケジューラ14は、スレッドを跨いだスケジューリングを行うことが可能である。
【0024】
実行コア16は、4つのプロセッシングエレメントである、PE#0と、PE#1と、PE#2と、PE#3と、を有している。実行コア16は、独立してスケジューリング可能な多数のパイプラインを有している。
【0025】
メモリサブシステム18は、アービタ181と、L1キャッシュ18aと、L2キャッシュ18bと、を有している。メモリサブシステム18は、システム・バス・インターフェイス及びROMインターフェイスとの間で情報通信可能なように構成されている。
【0026】
図4は、LBIST回路を含む本発明の実施の形態の半導体装置の基本的な構成を示す図である。なお、本明細書では、後述するテスト用入力を与えたときの回路ブロック50の出力を「応答」と表現し、この回路ブロック50の応答を起源として後述する比較に用いられるものを「テスト応答」と表現する。
図4のLBIST回路は、テスト制御器30と、パタン発生器40と、回路ブロック50と、符号圧縮器60を備える。テスト制御器30は、パタン初期化器301と、期待値比較器302を備える。テスト制御器30は、回路ブロック50の自己テストの実行を制御する。具体的には、クロックを生成し、パタン初期化器301で、テストパタンの初期値を生成してパタン発生器40に供給する。
【0027】
パタン発生器40は、パタン初期化器301から与えられた初期値に応じて、テスト用入力としてのテストパタンを生成する。テストパタンの生成には、一般的に疑似乱数発生器(PRPG:Pseudo Random Pattern Generator)が用いられるが、他の方法が用いられてもよい。パタン発生器40が生成したテストパタンは回路ブロック50に入力され、回路ブロック50はテストパタンに基づき演算を行う。回路ブロック50は、テストの対象となる論理回路であって、一例としては
図3におけるプロセッシングエレメントPEがこれに相当する。
【0028】
符号圧縮器60は、回路ブロック50の応答を圧縮してテスト応答を生成する。回路ブロック50が出力するテストパタンへの応答は長大なシリアルデータであって、これをそのままROMに保存するのは不経済である。このためテスト制御器30は、予め計算した圧縮結果を期待値として保持し、使用する。設計上、回路ブロック50が生成した応答を、符号圧縮器60で圧縮した圧縮値であるテスト応答とテスト制御器30が持つ期待値は同一になる。代表的な符号圧縮器としては、多入力シグネチャレジスタ(MISR:Multiple Input Signature Register)が用いられるが、条件を満たすのであれば他の圧縮器を用いてもよい。
【0029】
期待値比較器302は、符号圧縮器60から出力された圧縮値であるテスト応答と、事前に計算されてテスト制御器30内部またはROMなどに保持されている期待値とを比較する。テスト応答と期待値が同一であれば、回路ブロック50は正常に動作している。テスト応答と期待値が異なる場合、回路ブロック50には不具合が疑われる。
【0030】
以下、LBIST回路を含む本発明の実施の形態の半導体装置の構成を詳細に説明するが、各構成要素は
図4に示した一例の構成要素と同じ機能を有する。このため、同一の符号を付して重複する説明は省略する。
【0031】
図5は、本発明の実施の形態の半導体装置の自己テストに係る構成を示す図である。半導体装置100は、複数の回路ブロック50を備えている。複数の回路ブロック50は、それぞれ通常処理制御器70によって制御されて、多重のスレッドの処理を並列に実行する。
図3に示したスレッドスケジューラを含む構成が通常処理制御器70に相当する。
【0032】
複数のパタン発生器40は、それぞれ自己テストを行うためのテストパタンを生成する。回路ブロック50と同数のパタン発生器40が設けられてもよいし、パタン発生器40の数は回路ブロック50の数より少なくてもよい。入力選択器80は、複数の回路ブロック50の各々に対応して設けられており、対応する回路ブロック50について、パタン発生器40生成されたテストパタンを入力することで自己テストを実行させるか、通常処理制御器70からの通常処理データを入力することで通常処理を実行させるかを選択する。
【0033】
入力選択器80は、テスト制御器30によって制御されて自己テストの実行を選択し、通常制御器70によって制御されて通常処理の実行を選択する。すなわち、入力選択器80は、テスト制御器30と通常処理制御器70とによって制御される。なお、入力選択器80は、テスト制御器30及び通常処理制御器70のいずれか一方のみによって制御されてもよく、例えば、テスト制御器30によって制御されて、自己テストの実行を選択し、自己テストの実行が選択されていない場合には常に通常処理の実行が選択されるようにしてもよい。
【0034】
出力選択器90は、回路ブロック50からの出力が、自己テストを行った結果の出力である場合に、当該出力を符号圧縮器60に出力する。出力選択器90は、テスト制御器30によって制御されて、自己テストを選択し、自己テストが選択されていない場合には常に通常制御を選択する。なお、出力選択器90は、テスト制御器30と通常処理制御器7とによって制御されてもよい。この場合に、出力選択器90は、テスト制御器30によって制御されて自己テストを選択し、通常制御器70によって制御された通常制御を行ってよい。
【0035】
複数の符号圧縮器60は、それぞれ自己テストの結果の出力を圧縮して圧縮値を生成する。この圧縮値はテストパタンを回路ブロック50で処理した場合の回路ブロック50の出力を圧縮したものであり、テスト応答となる。回路ブロック50と同数の符号圧縮器60が設けられてもよいし、符号圧縮器60の数は回路ブロック50の数より少なくてもよい。
【0036】
テスト制御器30は、パタン初期化器301と、通常処理カウンタ303と、自己テストカウンタ304と、期待値比較器302とを備えている。パタン初期化器301は、テストパタンを生成するための初期値を生成して、パタン発生器40に出力する。期待値比較器302は、符号圧縮器60からのテスト応答と基準値とを比較することで、自己テストを行った回路ブロック50の不具合の有無を判断する。
【0037】
テスト制御器30は、さらに、各回路ブロック50における通常処理の実行回数をカウントする通常処理カウンタ303と、各回路ブロック50における自己テストの実行回数をカウントする自己テストカウンタ304とを備えている。
【0038】
テスト制御器30は、複数の回路ブロック50の実行履歴、すなわち通常処理カウンタ303及び自己テストカウンタ304のカウント値に基づいて、複数の回路ブロック50における自己テストの実行制御を行う。自己テストの実行制御において、テスト制御器30は、いずれの回路ブロック50に自己テストを実行させるかを決定して、決定した回路ブロック50に対応する入力選択器80を制御することで、選択した回路ブロック50に対応するパタン発生器40を選択させて、自己テストを実行させる。また、テスト制御器30は、自己テストの実行制御として、回路ブロック50で実行されている自己テストを中断する。
【0039】
テスト制御器30と通常処理制御器70とは接続されており、通常処理制御器70からは、処理情報として各回路ブロック50における通常処理の開始を示す信号(開始割込み、開始フラグ等)及び通常処理の終了を示す信号(終了割込み、終了フラグ等)がテスト制御器30に入力される。また、通常処理制御器70は、回路ブロック50に処理待ちをさせている場合には、その旨を示す信号も処理情報としてテスト制御器30に入力する。
【0040】
テスト制御器30からは、制御情報として各回路ブロック50における自己テストの開始及び終了を示す信号(開始割込み、開始フラグ等)が通常処理制御器70に入力される。通常処理制御器70は、通常処理及び自己テストを行っていない回路ブロック50を選択して、通常処理を実行させる。通常処理の実行制御において、通常処理制御器70は、いずれの回路ブロック50に通常処理を実行させるかを決定して、決定した回路ブロック50に対応する入力選択器80を制御することで通常処理を実行させる。
【0041】
テスト制御器30は、通常処理制御器70から回路ブロック50について通常処理が終了した旨の信号を受けると、当該回路ブロック50の入力選択器40を自己テストに切り替えて、パタン発生器40のテストパタンを当該回路ブロック50に入力して、当該回路ブロック50に自己テストを実行させる。これにより、回路ブロック50において、通常処理の終了後に自動的に自己テストを実行できる。
【0042】
テスト制御器30は、各回路ブロック50の稼働状態と、自己テストの実行制御を行うための制御原因情報とに基づいて、自己テストの実行制御を行う。回路ブロック50の稼働状態には、回路ブロック50が通常処理を行っている通常処理状態と、回路ブロック50が自己テストを行っている自己テスト状態と、回路ブロック50が通常処理を待っている通常処理待ち状態と、回路ブロック50が自己テストを待っている自己テスト待ち状態と、通常処理状態、自己テスト状態、通常処理待ち状態、及び自己テスト処理待ち状態のいずれにも該当しない休止状態とがある。
【0043】
テスト制御器30は、通常処理制御器70から入力される処理情報に基づいて、回路ブロック50の稼働状態が通常処理状態ないし通常処理待ち状態であると判断する。また、テスト制御器30は、自己テストの実行制御に応じて、自己テスト状態ないし自己テスト待ち状態であると判断する。さらに、テスト制御器30は、通常処理制御器70からの処理情報及び自己テストの実行制御に基づいて、通常処理状態、通常処理待ち状態、自己テスト状態、自己テスト待ち状態のいずれでもないと判断するときは、休止状態であると判断する。
【0044】
テスト制御器30は、各回路ブロック50について、実行履歴としての通常処理カウンタ303のカウント値と自己テストカウンタ304のカウント値とから、さらなる実行履歴として両カウンタの合計値(総実行回数)及び両カウンタの差分(通常処理カウンタ303のカウント値-自己テストカウンタ304のカウント値)を算出する。
【0045】
図6は、テスト制御器30が保持している複数の回路ブロック50の情報の例を示す表である。
図6では、回路ブロック50が回路ブロックa~dの4つである例を示している。
図6に示すように、テスト制御器30は、制御原因情報として、各回路ブロック50の通常処理カウンタ303のカウント値31、自己テストカウンタ304のカウント値32、両カウンタの合計値(総実行回数)33、及び両カウンタの差分34、通常処理の優先度35、自己テストの優先度36を保持しており、かつ、各回路ブロック50の稼働状態として、実行中であるか否かを示す実行中フラグ35、及び待ち状態にある通常処理のジョブ数(待ち通常ジョブ数)36を保持している。テスト制御器30は、これらの制御原因情報及び稼働状態に基づいて、各回路ブロック50の自己テストの実行を制御する。なお、通常処理優先度35及び自己テスト優先度36は、任意に設定可能であり、設定後に変更することも可能である。
【0046】
図7は、半導体装置の通常処理と自己テストの稼働スケジュール例を示す表である。図中の「W」は通常処理の実行を示し、「L」は自己テストの実行を示す。
図7の例では、時刻0において回路ブロックa、b、cが通常処理を実行しており、回路ブロックdが休止状態にあり、待ち通常ジョブはない。時刻5において回路ブロックaにおいて通常処理が終了すると、通常処理制御器70は、その旨を示す処理情報(例えば、終了割込み)をテスト制御器30に入力する。
【0047】
テスト制御器30は、通常処理制御器70から回路ブロックaにおいて通常処理が終了した旨の処理情報を受けると、これをトリガーとして回路ブロックaに対応する入力選択部80に対して、自己テストを選択するよう制御信号を出力する。当該入力選択部80は、自己テストの実施に切り替えて、回路ブロックaにテストパタンを入力し、回路ブロックaに自己テストを実行させる。
【0048】
テスト制御器30は、自己テストを実行している回路ブロック50に対し、テスト実行中に通常の処理開始指示が入力された場合、当該回路ブロック50の通常処理優先度35及び自己テスト優先度36に基づいて、自己テストを中断して通常処理を実行するか、自己テストを優先させ、テスト完了まで通常処理を待たせておくかを選択する。具体的には、テスト制御器30は、通常処理優先度35と自己テスト優先度36とのうちのいずれか高い方を選択する。
【0049】
なお、テスト制御器30は、自己テストを中断する場合、急に停止してしまうと大きな電圧変動を起こし、周りの回路を誤動作させてしまう恐れがあるので、これを防ぐために、急停止せず、徐々にクロックのレートを下げることにより実行中の自己テストを緩やかに停止する。
【0050】
テスト制御器30は、パタン発生器40又は符号圧縮器60の数が回路ブロック50の数より少ない場合において、パタン発生器40又は符号圧縮器60に空きがなければ自己テストの実行を待たせておく。この場合には、パタン発生器40及び符号圧縮器60の数の情報も制御原因情報となる。
【0051】
テスト制御器30は、パタン発生器40又は符号圧縮器60の数が回路ブロック50の数より少ない場合において、複数の回路ブロック50が自己テスト実行待ち状態であるとき、実行履歴としての通常処理カウント値31と自己テストカウンタ32との差分34が最も大きい回路ブロック50を優先して自己テストを実行させる。例えば、
図6の例において、両カウンタの差分34が最大となる回路ブロックaに回路ブロックcより優先して自己テストを実行させる。
【0052】
あるいは、パタン発生器40又は符号圧縮器60の数が回路ブロック50の数より少ない場合において、テスト制御器30は、実行履歴としての両カウンタの合計33が
小さい回路ブロック50を優先して自己テストを実行させてもよい。
図6の場合には、回路ブロックaと回路ブロックcとでは、回路ブロック
aのほうが合計33が
小さいので、回路ブロック
aのほうを優先して自己テストを実行させてよい。
【0053】
また、テスト制御器30は、複数の回路ブロック50が自己テスト実行待ちであって、符号圧縮器60が実行待ちの数以上に空いている場合には、自己テストの消費電力総量を考慮し、消費電力総量が所定の上限値を越えないよう、一度に実行できる自己テストの数に上限を設けて、上限を越える場合については自己テスト実行待ちにしておく。この場合には、消費電力総量の上限値も制御原因情報となる。
【0054】
テスト制御器30は、通常処理制御器70に対して通常処理カウント値31及び自己テストカウント値32を制御指示として渡す。通常処理制御器70は、通常処理を各回路ブロック50に割り振る際に、処理待ちの数より多い数の回路ブロック50が空いている場合は、通常処理カウント値31が小さい回路ブロック50を優先して通常処理を実行させる。これにより、複数の回路ブロック50における通常処理の回数の偏りを軽減することができ、回路ブロック50を長持ちさせることができる。
【0055】
このとき、テスト制御器30は、通常処理カウント値31及び自己テストカウント値32のいずれかまたは両方を参照して、上記とは別の方法で優先順位をつけることも可能である。例えば、テスト制御器30は、両カウンタの合計値33が最も小さい回路ブロック50に優先的に待ちジョブを実行させてもよい。
【0056】
また、テスト制御器30は、自己テストカウント値32だけでなく、通常処理カウント値31も加味して、合計33が設定した数以上にならないよう、制限をかけてもよい。
【0057】
テスト制御器30は、自己テストを実施しようとする際、通常処理の処理待ちがないかどうか確認し、処理待ちがあれば、通常動作を優先させ、自己テストは実行させないようにしてもよい。
【0058】
テスト制御器30は、通常処理優先度35と自己テスト優先度36に基づいて、自己テスト優先度の方が高い場合には、自己テストのほうを通常処理に優先させて実行させてもよい。また、テスト制御器30は、パタン発生器40又は符号圧縮器60の数が回路ブロック50の数より少ない場合において、複数の回路ブロック50が自己テスト実行待ちであるときに、各回路ブロック50の自己テスト優先度36を比較して、自己テスト優先度36が最も高い回路ブロック50を選択して自己テストを実行させてもよい。
【0059】
例えば、回路ブロックが4つあるときに、自己テストの優先度を最低の「0」にしておくと通常処理のほうを優先させて実行し、自己テストは実行されない。逆に自己テストの優先度を最高の「4」にしておくと、通常処理よりも自己テストを優先させて実行することができる。
【0060】
図8は、自己テスト優先度36を最低の「0」にした例であり、
図9は、
図8の場合の各回路ブロック50の稼働スケジュールの例を示す表である。
図9に示すように、時刻5の時点で回路ブロックaの処理が終わるが、通常処理の待ちが1つあり、回路ブロックaの自己テストの優先度が最低であるため、回路ブロックaにおいて自己テストは実行されず、待っていた通常処理が回路ブロックaにおいて実行される。そして、テスト制御器30は、回路ブロックaにおける通常処理が終わった後の時刻13に、待っていた回路ブロックaの自己テストを開始させる。
【0061】
図10は、自己テスト優先度36を最高の「4」にした例であり、
図11は、
図10の場合の各回路ブロック50の稼働スケジュールの例を示す表である。
図10に示すように、時刻5の時点で回路ブロックaの処理が終わり、通常処理の待ちが1つあり、自己テストの優先度が最高であるため、自己テストが実行され、待っていた通常処理は引き続き待ちとなる。通常処理が待ち状態にある時刻11に、回路ブロックbにおいて通常処理が終了するので、待っていた通常処理は時刻13より回路ブロックbにおいて実行される。
【0062】
上述のように、パタン発生器40及び符号圧縮器60の個数は、回路ブロック50の個数と同数、又は回路ブロック50の個数より少なくてよい。パタン発生器40及び符号圧縮器60は、1つであってもよい。
【0063】
図12は、1つのパタン発生器40を全ての回路ブロック50が共用する場合のLBIST回路の構成の例を示す図である。この例では、複数の回路ブロック50が同一の機能を有する。すなわち、同一機能の複数の回路ブロック50に対して、同一のテストパタンがテスト用入力として与えられる。よって、複数の回路ブロック50が正常に動作すれば、共通のテストパタンに対する応答も同一となる。したがって、テスト制御器30の期待値比較器302では、期待値を1つ記憶させておけばよい。これにより、回路ブロック50と同数のパタン発生器40を半導体装置に実装する必要がなくなるため、テスト用の回路面積を削減でき、半導体装置の製造コストを下げることができる。
【0064】
図12の例では、複数(回路ブロック50と同数)の符号圧縮器60が設けられているので、複数の回路ブロック50が同時に自己テストを実行することが可能である。
【0065】
同一の機能を有する複数の回路ブロック50がテストパタンを共用する場合には、期待値比較器302は、複数の回路ブロック50のテスト応答をそれぞれあらかじめ記憶された期待値と比較して各回路ブロック50が正常であるかを判断する代わりに、複数の回路ブロック50のテスト応答を互いに比較することで、回路ブロック50が正常であるかを判断できる。この場合には、パタン発生器40が発生するテストパタンに対応する期待値をあらかじめ用意する必要はなく、それを記憶しておく必要もない。
【0066】
この場合には、テスト制御器30は、符号比較器303による比較の結果、2つ以上の符号圧縮器60から得られたテスト応答が同一の場合にはいずれの回路ブロック50も正常であると判断する。また、テスト制御器30は、テスト応答が異なる場合、いずれかの回路ブロック50に不具合があると判断する。また、テスト制御器30は、3つ以上の回路ブロック50で同時に自己テストを行った場合には、不具合が発生した回路ブロック50を多数決により特定できる。
【0067】
複数の回路ブロック50のテスト応答同士を比較する場合には、符号圧縮器60を使用せず、直接2つ以上の回路ブロック50の応答同士をテスト応答として比較してもよい。比較の結果、2つ以上のテスト応答が同一であれば、符号圧縮器60で圧縮値の算出を行わなくとも、回路ブロック50の不具合を検出することができる。これにより、符号圧縮器60が不要となり、更にテスト用の回路面積を削減することができる。この場合、符号比較器302の代わりに、例えばビット演算を用いるより簡易な比較器を用いることもできる。但し、符号圧縮器60を使用しない場合、2つ以上の回路ブロック50に対して同時にテストを実施する必要がある。なお、符号圧縮器60を用いる場合には、テストタイミングがずれても比較を行うことができる。
【0068】
本実施形態では、予め全てのテストパタンについて期待値を用意して回路に組み込んでおく必要がなくなるので、LBISTに使用するメモリ容量を削減することができる。また、期待値が設定されているかどうかに関わらず、パタン初期化器301で任意の初期値をパタン生成器40に渡してテストを行うことができる。また、半導体装置製造後に期待値が組み込まれていない新たなテストパタンが必要になった場合でも、回路ブロック50の不具合を発見することができる。
【0069】
図13は、パタン発生器40のみならず、符号圧縮器60を複数の回路ブロック50が共用する場合のLBIST回路の構成の例を示す図である。これにより、回路ブロック50と同数の符号圧縮器60を半導体装置に実装する必要がなくなる。この形態により、
図12の例と比較してテスト用の回路面積を更に削減することができ、半導体装置の製造コストを下げることができる。
【0070】
図13の例では、テスト制御器30は、複数の回路ブロック50が同時に自己テストを実行しないように制御する。
【0071】
図14は、他の実施の形態のLBIST回路の構成の例を示したもの図である。この例では、回路ブロック50は、パタン発生器40からのテストパタンに代えて、通常処理のために通常処理制御器70が生成する同一内容の処理を実行する。なお、本例においても複数の回路ブロック50は同一の機能を有する。
【0072】
半導体装置の通常稼働状態において回路ブロック50のうちの1つに割り当てられる入力そのものがテスト用入力となる。符号圧縮器60は、
図12の例と同じく、2つ以上で構成される。本実施形態でも、複数の回路ブロック50が同一の処理を行い、符号比較器303は、2つ以上の応答に対して2つ以上の符号圧縮器60が生成した圧縮値であるテスト応答同士を比較する。符号圧縮器60が3つ以上あれば、3つ以上の回路ブロック50で同時にテストを行い、不具合が発生した回路ブロック50を多数決により特定できる点、また、同時に2つ以上の回路ブロックに対してテストを実施するのであれば、符号圧縮器60が不要な構成とすることもできること、また、前述の構成では符号比較器302の代わりに、より簡易な比較器を用いることができることは、
図12の例と同様である。
【0073】
この構成により、パタン発生器40が不要になるため、回路面積を更に削減でき、製造コストを下げることができる。また、製品テスト段階において、試験者がテストしたいテスト用入力を回路ブロック50に入力して、自己テストに利用することができる。ランダムパタンを使用する通常のLBIST回路とは異なり、ユーザは回路ブロック50の狙った箇所を重点的に網羅するテストを実行できる。またこの構成では、実使用では起こり得るが設計段階では想定できないパタンに対してもテストを行うことができる。
【0074】
以上、具体例を参照しつつ本実施形態について説明した。しかし、本開示はこれらの具体例に限定されるものではない。これらの具体例に、当業者が適宜設計変更を加えたものも、本開示の特徴を備えている限り、本開示の範囲に包含される。前述した本具体例が備える各要素およびその配置、条件、形状などは、例示したものに限定されるわけではなく適宜変更することができる。前述した各具体例が備える各要素は、技術的な矛盾が生じない限り、適宜組み合わせを変えることができる。
【0075】
例えば、パタン発生器40に異なるテストパタンを生成させてよい。この場合には、想定実行時間が異なるテストバリエーションを生成し、テストバリエーションに対して想定実行時間情報を付加しておいてよい。想定実行時間情報を付加することにより、テスト制御器30は、実行が短時間で終了するものから長時間に及ぶものまでさまざまなテストバリエーションを選択することができる。
【0076】
テスト制御器30は、テストを実行しようとする回路ブロック50の休止状態がどの程度続くのかを参照し、休止時間内に終了する想定実行時間を持つ最適なテストパタンを選択する。想定実行時間にバリエーションを設けることにより、休止時間の不足により標準的な実行時間のテストができない回路ブロック50に対しても、短時間のテストを実行することができる。また休止時間が長い回路ブロック50に対しては、長時間のテストを実行することができるので、計算資源を無駄なく使用することができる。
【0077】
また、符号圧縮器60が複数存在する場合において、パタン発生器40と通常動作時の制御器70を切り替えてテストに利用できるようにしてもよい。これにより、期待値が不揮発性メモリに登録されている条件ではそれを用いて回路ブロック50が正常に動作しているか確認することができ、期待値が登録されていない条件や、制御器の出力で動作する場合では、複数の符号圧縮器60の圧縮値であるテスト応答同士を比較することにより、回路ブロック50の不具合を検出することができる。
【0078】
パタン発生器40や符号圧縮器60が1つのみの実施形態の場合でも、待機系のパタン発生器40や符号圧縮器60が別途用意されていてもよい。パタン発生器40または圧縮器60に故障が発生した場合でも、待機系に切り替えてテスト機能を維持することができる。
【0079】
また、複数の回路ブロック50の機能が互いに異なる場合は、テスト制御器30は、回路ブロック50の種別ごとに用意されたテストパタンと期待値の組み合わせを利用する。なお、この構成でも、回路ブロック50ごとにパタン発生器40と符号圧縮器60を設ける必要はなく、半導体装置の回路面積を削減でき、製造コストを下げることができる。また、回路ブロック50のバリエーションの中に、同一の機能を持つ組み合わせがあるのであれば、上記のように、そのテスト応答同士を比較することで、不具合の発生を知ることができる。
【0080】
テスト制御器30及び通常処理制御器70に電源制御の仕組みを加え、通常処理終了後に自己テストを実施し、その後処理要求が無い場合には当該ブロックの電源を落とすことで、低消費電力にしてもよい。
【0081】
また、上記の実施の形態では、テスト制御器30は、制御原因情報として、通常処理の優先度35と自己テストの優先度36とを有していたが、いずれか一方のみを有していてもよい。テスト制御器30は、通常処理優先度35を記憶している場合には、通常処理優先度35が低い回路ブロック50に優先的に自己テストを実行させ、あるいは、自己テスト優先度36を記憶している場合には、自己テスト優先度36が高い回路ブロック50に優先的に自己テストを実行させる。
【符号の説明】
【0082】
10:DFP、30:テスト制御器、40:パタン発生器、50:回路ブロック、
60:符号圧縮器、70:通常処理制御器、80:入力選択器、90:出力選択器