JP5201151B2 - テストパターン生成方法、装置及びプログラム - Google Patents
テストパターン生成方法、装置及びプログラム Download PDFInfo
- Publication number
- JP5201151B2 JP5201151B2 JP2009548838A JP2009548838A JP5201151B2 JP 5201151 B2 JP5201151 B2 JP 5201151B2 JP 2009548838 A JP2009548838 A JP 2009548838A JP 2009548838 A JP2009548838 A JP 2009548838A JP 5201151 B2 JP5201151 B2 JP 5201151B2
- Authority
- JP
- Japan
- Prior art keywords
- circuit
- common
- test pattern
- core
- failure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012360 testing method Methods 0.000 title claims description 301
- 238000000034 method Methods 0.000 title claims description 103
- 238000001514 detection method Methods 0.000 claims description 33
- 239000004065 semiconductor Substances 0.000 claims description 21
- 230000006835 compression Effects 0.000 claims description 9
- 238000007906 compression Methods 0.000 claims description 9
- 230000015654 memory Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 description 105
- 230000008569 process Effects 0.000 description 83
- 238000010586 diagram Methods 0.000 description 43
- 238000005056 compaction Methods 0.000 description 40
- 230000006870 function Effects 0.000 description 20
- 238000005259 measurement Methods 0.000 description 13
- 238000004364 calculation method Methods 0.000 description 12
- 238000004088 simulation Methods 0.000 description 12
- 239000013598 vector Substances 0.000 description 12
- 230000000644 propagated effect Effects 0.000 description 7
- 230000009467 reduction Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 238000009826 distribution Methods 0.000 description 4
- 230000005284 excitation Effects 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 230000015556 catabolic process Effects 0.000 description 3
- 238000005520 cutting process Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000007717 exclusion Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000000994 depressogenic effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318533—Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
- G01R31/318544—Scanning methods, algorithms and patterns
- G01R31/318547—Data generators or compressors
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3183—Generation of test inputs, e.g. test vectors, patterns or sequences
- G01R31/318307—Generation of test inputs, e.g. test vectors, patterns or sequences computer-aided, e.g. automatic test program generator [ATPG], program translations, test program debugging
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Tests Of Electronic Circuits (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Semiconductor Integrated Circuits (AREA)
Description
【0001】
本発明は、製造されたLSIの良否を判定するテスタ上で実施されるテストのためのテストパターン生成方法、装置及びプログラムに関し、特に、マルチコアプロセサのように複数の共通回路を備えたLSIの良否判定に使用するテストのためのテストパターン生成方法、装置及びプログラムに関する。
【背景技術】
【0002】
従来、LSIの製造工程の最終工程にあっては、製造されたLSIの良否を判定するためテスタ上でテストパターンを用いてテスト動作を行っている。
【0003】
一般的にLSIの良否判定に使用されるテストパターンは、自動テストパターン生成システム(Automatic Test Pattern Generation System:以下「ATPG」という)が使用されている。
【0004】
このようなATPGシステムにあっては、主要な機能として、
(1) 回路モデル読み出し及び書き込み機能、
(2) 与えられた1つの故障に対してテストパターンの生成を行う自動テストパターン生成機能、
(3) ATPGが作成したテストパターンを圧縮する静的あるいは動的な圧縮(Compaction)機能、及び
(4) 生成されたテストを評価する故障シミュレータ機能
などが存在する。
【特許文献1】
特開昭63−75973号公報
【特許文献2】
特開2005−174112号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
ところで、近年のプロセサ設計においては、複数のコアユニットを1つのLSI内部に持ち、各コアを並列動作させることにより高性能化を図るマルチコアプロセサ技術が注目されている。
【0006】
このようなマルチコアプロセサを対象にテストパターンを生成する場合、従来のシステムでは、何かしらの制約条件が与えられなければ、ATPGの実行はある時点で達成可能な全ての仮定故障に対して行われるため、コアの複数化により回路規模が増大することは、ATPGが実行される仮定故障の増加、即ちテスト生成時間が単純にコア数に比例して増加するという問題を引き起こすことになる。
【0007】
また、コア数の増加の影響はテスト生成時間の増加に留まらず、テスト時に必要なテストベクタ量(回路が設計仕様を満たしているか評価するために用いるデータの量)の増加という問題も引き起こすことになる。
【0008】
本発明は、マルチコアプロセサのコアのように等価性あるいは類似性を持つ複数の共通回路を備えた半導体回路に対しテスト生成時間、及びテストベクタ量の増加を抑制するテストパターン生成方法、装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
(方法)
本発明はパターン生成方法を提供する。本発明は、回路の外部からテストパターンを与えて回路の動作を確認するスキャンチェーンをそれぞれ有する第1及び第2の共通回路と、第1及び第2の共通回路以外の非共通回路とを備えた半導体回路に対するテストパターンを生成するテストパターン生成方法において、
半導体回路の回路情報を読み込むステップと、
第1及び第2の共通回路毎にスキャンチェーンの集合と共通回路を構成する論理素子の端子に固定される故障である仮定故障の集合を作成するステップと、
第1及び第2の共通回路のいずれかを、第1のテスト対象の共通回路として決定するステップと、
決定された第1のテスト対象の共通回路について作成した前記スキャンチェーンの集合と仮定故障の集合を用いて、テストパターンの生成を行うステップと、
生成されたテストパターンの圧縮を行うステップと、
圧縮されたテストパターンを用いて、第1のテスト対象の共通回路が有する回路故障の検出を行うステップと、
第1及び第2の共通回路のうち、第1のテスト対象の共通回路とは異なる共通回路を第2のテスト対象の共通回路として決定するステップを有することを特徴とする。
【0010】
本発明のテストパターン生成方法はさらに、
圧縮されたテストパターンを用いて(テスト流用)、第2のテスト対象の共通回路に対して、共通回路が有する回路故障の検出を行うステップを有することを特徴とする。
【0011】
本発明のテストパターン生成方法はさらに、
第1及び第2の共通回路毎にスキャンチェーンの集合を作成するステップにおいて、
第1及び第2の共通回路が有する記憶回路の初期状態を同一に設定することを特徴とする。
【0012】
ここで、回路故障は、共通回路が有する回路が0又は1を固定的に出力する固定故障である。
(装置)
本発明はテストパターン生成装置を提供する。本発明は、回路の外部からテストパターンを与えて回路の動作を確認するスキャンチェーンをそれぞれ有する第1及び第2の共通回路と、第1及び第2の共通回路以外の非共通回路とを備えた半導体回路に対するテストパターンを生成するテストパターン生成装置において、
半導体回路の回路情報を読み込む回路情報読込部と、
第1及び第2の共通回路毎にスキャンチェーンの集合と共通回路を構成する論理素子の端子に固定される故障である仮定故障の集合を作成するスキャンチェーン集合作成部と、
第1及び第2の共通回路のいずれかを、第1のテスト対象の共通回路として決定し、決定された第1のテスト対象の共通回路に対する回路故障の検出を行った後に、第1のテスト対象の共通回路とは異なる共通回路を第2のテスト対象の共通回路として決定するテスト対象回路決定部と、
決定された第1のテスト対象の共通回路について作成した前記スキャンチェーンの集合と仮定故障の集合を用いて、テストパターンの生成を行うテストパターン生成部と、
生成されたテストパターンの圧縮を行うテストパターン圧縮部と、
圧縮されたテストパターンを用いて、第1のテスト対象の共通回路が有する回路故障の検出を行う回路故障検出部を有することを特徴とする。
【0013】
さらに、圧縮されたテストパターンを用いて、第2のテスト対象の共通回路に対して、前記共通回路が有する回路故障の検出を行う。
(プログラム)
本発明はパターン生成プログラムを提供する。本発明は、回路の外部からテストパターンを与えて回路の動作を確認するスキャンチェーンをそれぞれ有する第1及び第2の共通回路と、第1及び第2の共通回路以外の非共通回路とを備えた半導体回路に対するテストパターンを生成させるテストパターン生成プログラムにおいて、
半導体回路の回路情報を読み込むステップと、
第1及び第2の共通回路毎にスキャンチェーンの集合と共通回路を構成する論理素子の端子に固定される故障である仮定故障の集合を作成するステップと、
第1及び第2の共通回路のいずれかを、第1のテスト対象の共通回路として決定するステップと、
決定された第1のテスト対象の共通回路について作成した前記スキャンチェーンの集合と仮定故障の集合を用いて、テストパターンの生成を行うステップと、
生成されたテストパターンの圧縮を行うステップと、
圧縮されたテストパターンを用いて、第1のテスト対象の共通回路が有する回路故障の検出を行うステップと、
第1及び第2の共通回路のうち、第1のテスト対象の共通回路とは異なる共通回路を第2のテスト対象の共通回路として決定するステップをコンピュータに実行させることを特徴とする。
【0014】
さらに、圧縮されたテストパターンを用いて、第2のテスト対象の共通回路に対して、共通回路が有する回路故障の検出を行うステップを有することを特徴とする。
【発明の効果】
【0015】
本発明によれば、複数の共通回路を持つ半導体装置について、第1のテスト対象の共通回路における内部故障に対してテストパターンの生成に成功した場合に、生成されたテストパターンを第2のテスト対象の共通回路に流用することで、第2のテスト対象以降の共通回路におけるテストパターンの生成処理を削減し、その結果、複数の共通回路をもつ半導体装置全体に使用するテストパターンの生成時間を大幅に削減することができる。
【0016】
【図面の簡単な説明】
【図1】本実施形態によるテストパターン生成システムの機能構成を示したブロック図
【図2】図1のダイナミックコンパクション実行部の機能構成の詳細を示したブロック図
【図3】本実施形態のテストパターン生成が適用されるマルチコアプロセサを示したブロック図
【図4】図3のクロックコントローラの詳細を示したブロック図
【図5】図3のデータコントローラの詳細を示したブロック図
【図6】図3のマルチコアプロセサを模式的な等価回路により示したブロック図
【図7】図6のマルチコアプロセサにおけるスキャンFF集合と仮定故障集合のコア間での対応付けを示した説明図
【図8】本実施形態で使用される故障データのテーブル構造を示した説明図
【図9】図8の故障データに含まれるコアと回路全体の故障集合、及びコアと回路全体のスキャンFF集合のテーブル構造を示した説明図
【図10】本実施形態におけるATPGに成功したコアのテストパターンを他のコアに流用する処理を示した説明図
【図11】本実施形態におけるテストパターンを流用したコアに対しATPGを実行するテストパターン補間処理を示した説明図
【図12】本実施形態におけるコア間の排他性を示した説明図
【図13】本実施形態における対象コア交換処理を示した説明図
【図14】本実施形態によるテストパターン流用の際に回路の初期状態をコア間で共通する必要のあるnτパスを1τパスと対比して示した説明図
【図15】本実施形態におけるコア間の制御排他性を排除する個別制御部に設けたキャンセラ回路を示したブロック図
【図16】本実施形態におけるコア間の制御排他性を排除する共通観測部に設けたキャンセラ回路を示したブロック図
【図17】本実施形態における各コアのスキャンFFチェーンのスキャンシフトを共用化する回路を示したブロック図
【図18】図17に設けたキャンセラ用スキャンFFチェーンの詳細を示した説明図
【図19】本実施形態におけるテストパターン生成処理の手順を示したフローチャート
【図20】本実施形態におけるatpgフラグとスキップフラグの設定を示した説明図
【図21】図19のステップS5におけるATPG処理の詳細を示したフローチャート
【図22】図19のステップS7におけるダイナミックコンパクションの詳細を示したフローチャート
【図23】図22のステップS5におけるテスト流用処理の詳細を示したフローチャート
【図24】図23のテスト流用処理をスキャンFF集合について具体的に示した説明図
【図25】図22のステップS6におけるテスト補間処理の詳細を示したフローチャート
【図26】図19のステップS8における故障シミュレーションの詳細を示したフローチャート
【図27】図26のステップS2におけるイベントスケジュールの詳細を示したフローチャート
【図28】図27のイベントスケジュールの具体例を示した説明図
【図29】図26のステップS4におけるイベント伝播の詳細を示したフローチャート
【図30】図29のイベント伝播の具体例を示した説明図
【図31】図26のステップS5におけるイベント伝播先ゲート処理の詳細について縮退故障を対象に示したフローチャート
【図32】図31のイベント伝播先ゲート処理の具体例を示した説明図
【図33】図26のステップS5におけるイベント伝播先ゲート処理の詳細についてディレイ故障を対象に示したフローチャート
【図34】図26のステップS7における故障検出処理の詳細を示したフローチャート
【図35】本実施形態によるATPG処理時間の削減を示した説明図
【図36】本実施形態による処理時間削減の測定対象とするマルチコアプロセサにおけるスキャンFFのビット分布を示した説明図
【図37】図36の測定対象コアにおけるATPGの対象ビットをコア、共通、個別のグループに分類して示した円グラフの説明図
【図38】図36の測定対象コアにおけるコンパンクション回数に対する実行時間を通常動作と本実施形態による流用動作について示したグラフ図
【図39】図36の測定対象コアにおけるコンパンクションについてATPG、故障シミュレーション、その他のグループに分類して実行時間の割合を通常動作と本実施形態の流用動作について示した棒グラフ図
【図40】本実施形態のテストパターン生成プログラムが実行されるコンピュータのハードウェア環境を示したブロック図
【発明を実施するための最良の形態】
【0017】
<目次>
1.システム構成と機能
2.入力ポイントと故障の対応付け
3.テストパターンの流用
4.テストパターンの補間
5.対象コアの交換
6.ATPGスキップの無効化
7.コア間での回路初期状態の共通化
8.コア間排他性のキャンセル
9.スキャンシフトの共有化
10.テストパターン生成処理
11.ATPG処理
12.ダイナミックコンパクション
13.テストパターン流用処理と補間処理
14.故障シミュレーション
15.処理時間の削減効果
図1は本実施形態によるマルチコアプロセサなどの共通回路部を備えた半導体回路を対象としたテストパターン生成システムの機能構成を示したブロック図である。
【0018】
図1において、本実施形態のテストパターン生成システムは、回路情報読込部10、回路データ14及びテストパターン16を格納するテストデータベース12、スキャンチェーン集合20を作成するスキャンチェーン集合作成部18、仮定故障集合24を作成する仮定故障集合作成部22、テスト対象回路決定部26、ATPG実行部30とテストパターン圧縮部として機能するダイナミックコンパクション実行部32を備えたテストパターン生成部28、故障シミュレータとして機能する回路故障検出部34、対象回路交換部36及び回路データ書込部38を備えている。
【0019】
テストデータベース12に格納された回路データ14としては、回路の外部からテストパターンを与えて回路の動作を確認するスキャンチェーンを有する複数の共通回路と、複数の共通回路以外の非共通回路を備えた半導体回路の回路データを格納している。
【0020】
具体的な回路データ14としては、後の説明で明らかにするように、マルチコアプロセサの回路データが格納されている。マルチコアプロセサは複数のコアを備えており、各コア同士は等価あるいは類似した回路構成であるという特徴を持つ場合が多く、この特徴に着目して本実施形態にあっては、テストパターンの生成時間及びテストベクタ量の削減を目的としたテスト生成処理を実行する。
【0021】
回路情報読込部10は、テストデータベース12の回路データ14から、処理対象とする半導体回路の回路情報、例えばマルチコアプロセサの回路情報を読み込む。
【0022】
スキャンチェーン集合作成部18は、回路情報読込部10で読み込んだ回路情報の中に含まれる複数の共通回路、例えばマルチコアプロセサにあっては各コアのスキャンチェーン集合20を作成する。
【0023】
仮定故障集合作成部22は、回路情報読込部10で読み込んだ半導体回路、例えばマルチコアプロセサにおけるコア毎に仮定故障集合24を作成する。ここで、仮定故障とは、共通回路を構成する論理素子の端子が0又は1に固定される故障をいう。
【0024】
スキャンチェーン集合作成部18によるスキャンチェーン集合20の作成と、仮定故障集合作成部22における仮定故障集合24の作成は、具体的には共通回路の等価性に着目したテストパターンの生成を行うため、各共通回路における入力ポイントであるスキャンチェーン集合(以下「スキャンFF集合」という)及び仮定故障集合24のコア間における対応付けを行っている。
【0025】
テスト対象回路決定部26は、回路情報読込部10で読み込んだ半導体回路、例えばマルチコアプロセサにおける複数の共通回路である各コアのいずれか1つを第1のテスト対象のコアとして決定し、決定された第1のテスト対象のコアに対する回路故障の検出を行った後に、第1のテスト対象のコアとは異なる他のコアを第2のテスト対象のコアとして決定する処理を行う。
【0026】
テストパターン生成部28は、テスト対象回路決定部26で決定された第1のテスト対象の共通回路について作成されたスキャンチェーン集合20と仮定故障集合を用いて、テストパターンの生成を行う。このテストパターンの生成は、ATPG実行部30とダイナミックコンパクション実行部32により行われる。
【0027】
ATPG実行部30は、仮定故障集合24より未検出な仮定故障を1つ、1次故障として選択し、選択された1次故障に対し、1次故障を検出するためのテストパターンを生成する。
【0028】
ダイナミックコンパクション実行部32は、ATPG実行部30により1次故障のテストパターン生成に成功したならば、そのときのネットステートにおいて、仮定故障集合24において未検出である仮定故障を2次故障として任意に1つ選択し、選択した2次故障に対しATPG実行部30により2次故障を検出するためのテストパターンを生成する。
【0029】
このためダイナミックコンパクション実行部32は、1次故障に対するATPGの成功で生成されたテストパターンを更に圧縮するテストパターン圧縮部として機能することになる。
【0030】
故障シミュレータとして機能する回路故障検出部34は、テストパターン生成部28により圧縮されたテストパターンを用いて、共通回路である複数コアの論理回路を対象に回路故障の検出を行う。
【0031】
対象回路交換部36は、テスト対象回路決定部26で決定された第1のテスト対象の共通回路であるコア、即ち対象コアを順次交換し、コア間での検出故障の偏りを抑制する。
【0032】
回路データ書込部38は、テストパターン生成部28において所定の終了条件が満たされた場合に、検出故障情報などをテストデータベース12の回路データ14に書き出して処理を終了する。
【0033】
ここで図1のテストパターン生成システムにあっては、スキャンチェーン集合作成部18、仮定故障集合作成部22及び対象回路交換部36が本実施形態により新たに追加された機能であり、またテストパターン生成部28に設けているダイナミックコンパクション実行部32が本実施形態により修正が加えられた機能であり、それ以外の機能は従来のテストパターン生成システムと基本的に同じである。
【0034】
図1のテストパターン生成システムの基本的な動作を説明すると次のようになる。
【0035】
本実施形態におけるテストパターン生成は、テストデータベース12から回路データ14を回路情報読込部10で読み込んだ後、初期化手続きとして、スキャンチェーン集合作成部18及び仮定故障集合作成部22により、例えば回路データとしてマルチコアプロセサを読み込んだ場合には、マルチコアプロセサの共通回路である複数のコアごとのスキャンチェーン集合20と仮定故障集合24を作成し、更にテスト対象回路決定部26においてATPG対象フラグをセットする操作であるテスト対象コアの設定が行われる。
【0036】
続いてテストパターン生成部28、回路故障検出部34及び対象回路交換部36のループにおいて、所定の終了条件を満たすまで、仮定故障集合24から取り出した1次故障に対しATPG実行部30による処理が行われる。
【0037】
ATPG実行部30による1次故障に対するATPGが成功したならば、テストパターン圧縮部として機能するダイナミックコンパクション実行部32による処理が仮定故障集合24の中から取り出した2次故障に対し実行され、圧縮されたテストパターンを生成する。
【0038】
続いて回路故障検出部34が、ダイナミックコンパクション実行部32の処理により生成されたテストパターンを用いた故障シミュレーションにより仮定故障の検出処理が行われ、テストデータベース12に対しテストパターン16の保存が行われる。
【0039】
テストパターン生成部28、回路故障検出部34及び対象回路交換部36によるループ処理の際に、回路故障検出部34における故障シミュレーションの後でコア間の故障検出比率のばらつきを抑制するため、対象回路交換部36による対象コアの交換処理がATPG対象フラグの設定変更により行われる。
【0040】
そして、テストパターン生成部28で所定の終了条件を満たした場合に、回路データ書込部38が、検出された故障情報などをテストデータベース12の回路データ14に書き出して一連の処理を終了する。
【0041】
図2はテストパターン圧縮部として機能する図1のダイナミックコンパクション実行部32の機能構成を示したブロック図である。ダイナミックコンパクション実行部32は、終了条件判定部38、対象コア判定部40、2次故障ATPG実行部42、テスト流用部44及びテスト補間部45で構成される。
【0042】
このダイナミックコンパクション実行部32の機能の内、対象コア判定部40、テスト流用部44及びテスト補間部45が、本実施形態により新たに追加された機能であり、それ以外の機能は従来のダイナミックコンパクションにおける機能と同じである。
【0043】
ダイナミックコンパクション実行部32におけるダイナミックコンパクションの処理は、基本的には終了条件判定部38において未検出故障がなくなるまで、対象コア判定部40、2次故障ATPG実行部42、テスト流用部44及びテスト補間部45からなるループを実行する処理である。
【0044】
対象コア判定部40は、コアごとの仮定故障集合24に設定されたATPG対象フラグ及びスキップフラグを参照し、ATPG対象フラグがオンしていれば2次故障ATPG実行部42を実行するが、オフしている場合には2次故障ATPG実行部42の処理はスキップする。
【0045】
テスト流用部44は、処理対象としている1つのコア内部の仮定故障に対し、2次故障ATPG実行部42による処理でテストパターンの生成に成功した場合に、生成されたテストパターンを他のコアに流用することで、対応する仮定故障に対するATPGの実行を削減し、テストパターンの生成時間全体を削減可能とする。
【0046】
テスト補間部45は、テスト流用部44でテストパターンを他のコアに流用した後に、他のコアの対応する故障に対しても2次故障ATPG実行部42による処理を行うことで、テストパターンの補間を行う。
【0047】
本実施形態にあっては、図2のダイナミックコンパクション実行部32に示すように、ATPGに成功した際のテストパターンの流用及びテストパターンの補間、更には図1に示した対象回路交換部36による対象コアの交換に加え、後の説明で明らかにするコア間での回路初期状態の共通化やコア間排他性のキャンセル、更にはスキャンシフトの共有化などにより、全体としてのテストパターン生成時間の削減を達成する。
【0048】
図3は本実施形態のテストパターン生成システムが適用されるマルチコアプロセサを示したブロック図である。図3において、マルチコアプロセサ46は、入出力制御部48に対し4つのコア50−1,50−2,50−3,50−4を設けている。
【0049】
入出力制御部48には、入出力インタフェース52、キャッシュメモリ54−1,54−2、PLL58を備えたクロックコントローラ56及びデータコントローラ60が設けられる。コア50−1〜50−4は、クロックコントローラ56に対しクロックパスで接続され、またデータコントローラ60に対してはデータパスで接続されている。
【0050】
コア50−1〜50−4は等価な回路構成を持ち、これに対し入出力制御部48には、コア50−1〜50−4の入出力部として共通制御部、個別制御部、共通観測部及び個別観測部が存在する。
【0051】
図4は図3のクロックコントローラ56の概略を示したブロック図であり、個別制御部64−1と共通制御部62−1が設けられている。
【0052】
図5は図3のデータコントローラ60の概略を示したブロック図であり、個別制御部64−2と共通制御部62−2が設けられると共に、共通観測部66と個別観測部68が設けられている。
【0053】
図6は図3のマルチコアプロセサ46を模式的な等価回路により示したブロック図である。即ち、図3のマルチコアプロセサ46において、等価な回路構成を持つコア50−1〜50−4を中心に回路構成を見た場合、それぞれのコアの入出力として図5及び図6に示したような共通制御部と個別制御部及び共通観測部と個別観測部が存在しており、マルチコアプロセサ46をこのような回路構成と考えた場合、図6のような模式的な等価回路で表すことができる。
【0054】
図6において、コア50−1〜50−4は同じ回路構成を備えている。例えばコア50−1を例にとると、論理ゲートの集合である3つのコア回路72−11,72−12,72−13が設けられ、それぞれの入力としてスキャンFF70−11,70−12,72−13が設けられ、またコア回路72−11の出力にはスキャンFF集合70−14が設けられている。
【0055】
またコア50−1〜50−4のそれぞれに対しては、共通制御部62、個別制御部64、共通観測部66、個別観測部68が設けられている。共通制御部62にはスキャンFF72−5が設けられ、コア50−1〜50−4に設けているコア回路72−11〜72−41に入力接続している。
【0056】
個別制御部64にはスキャンFF72−6が設けられ、コア50−1〜50−4に設けているコア回路部72−11〜72−41のそれぞれに独立に個別接続している。
【0057】
共通観測部66にはスキャンFF72−7が設けられ、スキャンFF72−7に対してはコア50−1〜50−4のコア回路72−12,72−22,72−32,72−42の出力を、デコーダ75を介して接続している。
【0058】
個別観測部68にはスキャンFF72−8が設けられ、コア50−1〜50−4に設けているコア回路72−13,72−23,72−33,72−43の出力が個別に接続されている。
【0059】
以下、図6の模式的に示したマルチコアプロセサ46を対象に、本実施形態によるテストパターン生成処理を詳細に説明する。
(2.入力ポイントと故障の対応付け)
本実施形態にあっては、マルチコアプロセサ46におけるコア50−1〜50−4の等価性に着目したテストパターン生成を行うため、コア50−1〜50−4における入力ポイントであるスキャンFF集合及び仮定故障集合の対応付けを行う必要がある。
【0060】
スキャンFF集合及び仮定故障集合の対応付けは、マルチコアプロセサ46が階層設計されている場合には、コア50−1〜50−4は同一のモジュールとして設計されているはずであることから、単純にネット名あるいはシグナル名の比較によってスキャンFF集合と仮定故障集合のコア間での対応付けが可能である。
【0061】
またマルチコアプロセサ46が階層設計されていない場合であっても、既存の論理位置検証ツールなどを使用することによって、スキャンFF集合及び仮定故障集合のコア間での対応付けが実現できる。
【0062】
ここでマルチコアプロセサ46のコア数を一般化してm(mは正の整数)とすると、各コア内部のスキャンFF集合S及び仮定故障集合Fのそれぞれは次のように表記することができる。
S={s[1][i],s[2][i]・・・,s[m][i]}
i:コア内部のスキャンFF数(iは正の整数)
F={f[1][j],f[2][j]・・・,f[m][j]}
j:コア内部の仮定故障数(jは正の整数)
図7は図6のマルチコアプロセサ46におけるコア数をmと一般化して、スキャンFF集合と仮定故障集合のコア間での対応付けを示した説明図である。
【0063】
図7(A)はm個のコア50−1〜50−mを取り出して示しており、それぞれ図6のコア50−1〜50−4に示したのと同じスキャンFF70−11〜70−m3及びコア回路72−11〜72−m3を備えている。
【0064】
ここでコア50−1を例にとると、そのスキャンFF集合74−1は、コア回路72−11,72−12,72−13の入出力に設けているスキャンFF集合70−11,70−12,70−13及び70−14を点線のようにまとめた集合であり、図7(B)に取り出して示す集合となる。
【0065】
一方、仮定故障集合76−1はコア50−1に設けているコア回路72−11,72−12,72−13について設定された0又は1に固定される仮定故障の集合である。例えば、コア50−1に設けているコア回路72−11は、図7(C)に取り出して示すゲート回路であり、このゲート回路における入力のそれぞれに仮定故障としてf[1][1]、f[1][2]及びf[1][3]が設定されており、これらの仮定故障をすべてのコア回路72−11〜72−13について集めた集合が仮定故障集合76−1となる。
【0066】
図8は本実施形態で使用される故障データのテーブル構造を示した説明図であり、C++で記述した場合を例に取っている。
【0067】
図8において、故障データ82は故障テーブル84と故障集合テーブル86で構成されている。故障テーブル84には
識別子、
仮定ネット、
故障値、
atpgトライ済みフラグ、
検出済みフラグ
が存在する。更に本実施形態では新たに加えられた情報として、
atpg対象フラグ85、
スキップフラグ87
が設けられている。
【0068】
故障データにおけるatpg対象フラグ85及びスキップフラグ87を参照することで、コア部分がATPGの対象となるか否か、スキップするか否かを制御する。
【0069】
ATPGの実行にあっては、テスト対象回路における個々の故障に関する情報である故障テーブル84と、テスト対象回路における故障テーブル84の集合である故障集合テーブル86をインスタンス化し、故障データ82として扱うことになる。
【0070】
図9は図1のスキャンチェーン集合作成部18及び仮定故障集合作成部22により、ATPGの成功の際に生成したテストパターンを他のコアに流用するために用意するコアごとの仮定故障集合及びスキャンFF集合を、C++言語によりテーブル構造で示した説明図である。
【0071】
図9(A)は仮定故障集合データ88であり、1コア分の故障集合テーブル90−1と回路全体でのコア故障集合テーブル90−2で構成されている。
【0072】
即ち、1コア分の故障集合テーブル90−1におけるid配列には、図7(A)に示したようなATPG成功時のテストパターン流用を行うために用意するコアごとの仮定故障集合76−1〜76−mを保存し、この配列の各要素には図8に示した故障テーブル84における故障クラスの識別子を保存する。
【0073】
そして、これらコアごとの故障集合テーブル90−1をまとめた回路全体でのコア故障集合テーブル90−2を用いて管理することで、コア流用や対象コア交換などのように回路全体に亘る動作を実現する。
【0074】
図9(B)はスキャンFF集合データ92であり、1コア分のスキャンFF集合テーブル94−1と回路全体でのスキャンFF集合テーブル94−2で構成される。
【0075】
この場合にも、スキャンFF集合テーブル94−1のid配列には図7(A)のコア50−1〜50−mに示したスキャンFF集合74−1〜74−mを保存し、また、このid配列の各要素には図8の故障テーブル84に示した識別子を保存する。
【0076】
そして、コアごとのスキャンFF集合テーブル94−1をまとめた回路全体でのスキャンFF集合テーブル94−2を用いて管理することで、ATPG成功時のテストパターンの流用や対象コアの交換のような回路全体に亘る動作が実現できる。
(3.テストパターンの流用)
図10は本実施形態におけるATPGに成功したコアのテストパターンを他のコアに流用する処理を示した説明図である。
【0077】
本実施形態にあっては、図1のスキャンチェーン集合作成部18及び仮定故障集合作成部22により、スキャンチェーン集合Sと仮定故障集合Fのコア間の対応付けができたならば、例えば図10において対象コアとしてコア50−1を選択しているときには、コア50−1〜50−4に仮定される故障の内、コア50−1の内部の仮定故障f[1][j]に対してのみATPGを実行し、テストパターンの生成を試みる。
【0078】
このATPGの実行によりコア50−1の故障に対するテストパターンの生成が成功した場合にのみ、残りのコア50−2,50−3,50−4の仮定故障f[2][j],f[3][j],f[4][j]のためのテストパターンとして、ATPG成功時のコア50−1の内部のスキャンFF集合s[1][*]に設定されたステートを、図10の矢印で示すようにコア50−2,50−3,50−4に流用する。
【0079】
より詳細には、ATPG成功時のコア50−1の内部のスキャンFF集合s[1][*]に設定されたステートの中の、ATPGにより参照されたスキャンFF集合のステートが流用される。
【0080】
この流用は
s[1][*]→s[2][*],s[3][*],s[4][*]
として表すことができる。
【0081】
このようにコア50−1の内部の故障に対しATPGがテストパターンの生成に成功した場合に、生成されたテストパターン(スキャンFF集合のステート)を他のコア50−2,50−3,50−4に流用することで、コア50−2,50−3,50−4の対応する内部の故障に対するATPGの実行を削除することができ、これによって回路全体に対するテスト生成時間を削減することができる。
(4.テストパターンの補間)
図11は本実施形態におけるテストパターンを流用したコアに対し、ATPGを実行するテストパターン補間処理を示した説明図である。
【0082】
図11において、コア50−1〜50−4の内部の仮定故障jがスキャンFF集合Sによってのみ与えられるステートによって検出されるならば、図10に示したテストパターンの流用によってテストパターンの生成は完了することになる。
【0083】
しかしながら、実際のマルチコアプロセサ46にあっては、コアごとに制御を行う個別制御部64を持つ場合には、図10に示したテストパターンの流用を行うのみでは、当該個別制御部64に対するテストパターンは生成されないため、CPU全体に対するテストパターン生成は未完成となってしまう。
【0084】
そこで本実施形態にあっては、例えばコア50−1の仮定故障に対し生成されたテストパターンを、図10の矢印に示すように他のコア50−2,50−3,50−4に流用した後に、図11に示すように流用先のコア50−2,50−3,50−4に対しても改めてATPGを実行し、コア50−1〜50−4ごとに存在する個別制御部64に対するテストパターン生成を補間する。
【0085】
ここで、テストパターンの補間処理によれば、対象としたコア50−1の仮定故障f[1][j]以外に、例えば残りのコアをコア50−2〜50−mの仮定故障f[2][j]〜f[m][j]に対し、ATPGが(m−1)回、実行される。
【0086】
このためテストパターンの生成に必要な時間は、元となるコア50−1の仮定故障f[1][j]に対する時間をt1とした場合、これを含めて
t1+(m−1)×t1=m×t1
となり、テストパターン生成時間の削減は期待できないように見える。
【0087】
しかしながら、本実施形態にあっては、図10に示すように、コア50−2〜50−m(m=4)の仮定故障f[2][j]〜f[m][j]に対しては、ATPGの初期ステートとして、最初に処理したコア50−1の仮定故障f[1][j]に対するテストパターンが流用されるため、探索を行わなければならない空間は個別制御によって決定される空間のみに限定される。
【0088】
このため、コア50−2〜50−mの故障に対するATPGを必要とするテストパターン生成時間t2〜tmの総和は
Σtj ≦ (m−1)×t1
但し、j=2,3・・・,m
となる。
【0089】
このため仮定故障f[2][j]〜f[m][j]に対して単純にATPGを(m−1)回繰り返し実行した場合の生成時間よりも、コア50−2〜50−mの故障に対するATPGが必要とするテスト生成時間の総和が大きくなることはない。
(5.対象コアの交換)
本実施形態にあっては、複数のコアの中から特定のコアを選択してテストパターン生成処理を行う際に、対象コアを順次交換して、コア間での検出故障の偏りを抑制する。
【0090】
図12は本実施形態におけるコア間の排他性を示した説明図である。図12のマルチコアプロセサ46において、実際の回路構成にあっては、個別制御部64と共通観測部66において、それぞれ排他な論理が存在する場合がある。
【0091】
個別制御部64にあっては、スキャンFF75−6の出力側にデコーダ96が設けられており、デコーダ96にあっては、コア50−1のコア回路72−11からの要求値「0」を充足すると、コア50−2,50−3,50−4に設けているコア回路72−21,72−31,72−41への信号が「1」に決定される論理を持っており、この結果、個別制御部64はコア50−1とコア50−2〜50−4の間で制御排他性を持つことになる。
【0092】
また共通観測部66のスキャンFF72−7に対しては、コア50−1〜50−4に設けているコア回路72−12,72−22,72−32,72−42からの信号が論理積演算を行うANDゲート98により結合されている。
【0093】
この状態で、コア50−1のコア回路72−12における故障f[1][j]を観測するときに、この信号が「0」となるならば、コア50−2,50−3,50−4におけるコア回路72−22,72−32,72−42の故障f[2][j],f[3][j]及びf[4][j]による信号は、ANDゲート98の出力が0となるため、同時に観測することができない。したがって共通観測部66にあっては、コア50−1〜50−4の間に観測排他性が存在している。
【0094】
このようにコア間に制御排他性及び観測排他性がある場合には、例えば対象コアとしてコア50−1を固定して、図1のテストパターン生成システムによりテストパターンの流用及びテストパターンの補間を含む処理を実行すると、対象コア50−1以外のコア50−2〜50−4では正しいテストパターンが生成されなくなるため、故障検出率が対象コア50−1に比べて低下するというアンバランスを引き起こす。
【0095】
そこで本実施形態にあっては、テストパターン生成処理の対象とするコアを適当なタイミングで順次交換することで、コア間の検出故障のアンバランスを抑制する。
【0096】
本実施形態における対象コアの交換は、
(1) 故障集合テーブルの再構成
(2) 故障集合テーブルへのアクセス順序の交換
等の方法により実現できる。
【0097】
図13は前記(2)の故障集合テーブルへのアクセス順序を交換する対象コア交換処理を示した説明図である。
【0098】
図13はマルチコアプロセサ46のコア数をmと一般化にした場合を例に取っており、コア50−1〜50−mに対応して仮定故障集合Fが
F={f[1][*],f[2][*]・・・,f[m][*] }
として作成されている。
【0099】
図13の対象コア交換処理にあっては、図1のテストパターン生成部28に示したダイナミックコンパクションのn回目のコンパクションターンにおいて、コア50−1をATPG対象としている場合には、コア50−1に対応した仮定故障集合76−1のATPGフラグ(ATPGを行う対象のコアを示すATPG対象フラグ)をオンしてATPG対象とし、それ以外のコア50−2〜50−mの仮定故障集合76−2〜76−mについてはATPGフラグをオフとしてATPG対象外としている。
【0100】
次にn+1のコンパクションターンの際には、n回目のコンパクションターンでオンしていたコア50−1の仮定故障集合76−1のATPGフラグをオフとすると同時に、次のコア50−2の仮定故障集合76−2におけるATPGフラグをオンしてATPG対象とし、ATPGの対象コアをコア50−1から50−2に交換する。以下同様に、コンパクションターンごとにATPGフラグの操作により、ATPG対象コアを順次交換する処理を繰り返す。
【0101】
このようにATPG対象コアを順次交換して、例えば2次故障に対するダイナミックコンパクションを繰り返すことで、図2に示したような制御排他性及び観測排他性に起因したコア間での検出故障の偏りを抑制することができる。
【0102】
ここで、ATPG対象コアをコア50−1,50−2,50−3,50−4と順次交換するコンパクションをくりかえした場合、ATPG対象コア50−1〜50−4の各々の対応する仮定故障f[1][j],f[2][j],f[3][j],f[4][j]の内、交換された1つの仮定故障ATPGしか実行されず、残りはスキップされる理由を説明する。
【0103】
いま、ATPG対象コアをコア50−1,50−2,50−3,50−4と順次交換するコンパクションとして、例えば次の仮定故障につきATPGを繰り返えしたとする。
n回目 :コア50−1の仮定故障f[1][n]
n+1回目:コア50−2の仮定故障f[2][n+1]
n+2回目:コア50−3の仮定故障f[3][n+2]
n+3回目:コア50−4の仮定故障f[4][n+3]
この場合、次のn+4回目でコア50−1に戻ってきた場合、コア50−1の次の仮定故障はf[1][n+4]が選択され、仮定故障f[1][n+1]〜f[1][n+3]はスキップされる。
【0104】
スキップできる理由は次の仕組みによる。ATPG対象コアについて、コア50−1,50−2,50−3,50−4を順次交換したコンパクションによりATPGに成功した場合、生成したテストパターンを使用して図1の回路故障検出部34による故障シミュレーションがコア50−1〜50−4の共通回路全体を対象に実行され故障が検出され、故障シミュレーションによりコア50−1〜50−4の検出故障につき図8の故障テーブルに示した「検出済みフラグ」がセットされる。
【0105】
このためn+4回目でコア50−1に戻ってきた場合、仮定故障f[1][n+1]〜f[1][n+3]には故障シミュレーションにより「検出済みフラグ」がセットされているためスキップされ、仮定故障f[1][n+4]を選択することができる。
(6.ATPGスキップの無効化)
図12に示すマルチコアプロセサ46における個別制御部64の制御排他性及び共通観測部66の観測排他性を含むコア間の排他性は、テスト対象としている回路構成に依存したものであり、この排他性によって、ATPG対象コア50−1に対応するコア50−2〜50−4の仮定故障f[2][j]〜f[4][j]は、同時検出の可能性と不可能性を一意に決定することができなくなる。
【0106】
本実施形態にあっては、対象として選択した例えばコア50−1の仮定故障f[1][j]に対するATPG実行の成功をトリガとして、その後、他のコア50−2〜50−4に対する一連のテストパターンの流用及びテストパターンの補間処理が行われる。
【0107】
このようなテストパターンの流用及びテストパターンの補間処理において、コア間での同時検出の可能性と不可能性を一意に決定できない故障に対しては、故障検出の効率が低下することになる。
【0108】
例えば、コア50−1〜50−4に対応する仮定故障集合
{f[1][j],f[2][j],f[3][j],f[4][j]}
が存在した場合に、ある条件の下、例えばダイナミックコンパクションの中のネットステートにおいて、コア50−1,50−2の仮定故障集合
{f[1][j],f[2][j]}
に対するテストパターンは存在するが、コア50−3,50−4に対する仮定故障集合
{f[3][j],f[4][j]}
に対するテストパターンが存在しなかったとする。
【0109】
このとき対象とするコアとしてコア50−1又はコア50−2を選択していれば問題ないが、コア50−3又は50−4を選択していた場合には、コア50−1又は50−2を選択していれば本来テストパターンの生成が可能であったはずの仮定故障集合
{f[1][j],f[2][j]}
へのテストパターン生成を取りこぼすことになり、これはテストパターン当たりの故障検出の効率の低下を招くことになる。
【0110】
本実施形態にあっては、例えば対象コア50−1に対するATPGが成功したにもかかわらず他のコア50−2,50−3,50−4に対するテストパターンの流用やテストパターンの補間処理に失敗した場合には、それらの故障の間にはテストパターン生成に関するコア間の排他性が存在するはずである。
【0111】
そこで、テストパターンの流用やテストパターンの補間処理に失敗した後は、流用先及び補間先のコアに対応して生成している仮定故障集合に設けているスキップフラグをそれまでのオンからオフに設定し、ATPGをスキップしないように学習する。
【0112】
例えばJ=1,2,3,・・・・・i,jとした場合、コア50−1を対象としたi番目の仮定故障f[1][i]によるATPGの成功に基づき、他のコア50−2〜50−4へのテストパターンの流用処理を行ったが失敗した場合は、流用先となるコア50−2〜50−4のi番目の仮定故障f[2][i],f[3][i],f[4][i]のスキップフラグをオフする。
【0113】
そして、対象コア50−1のテストパターン生成が終了してコア50−2〜50−4のテストパターン生成に移行した際に、スキップフラグがオフとなっている仮定故障を選択してATPGを実行することになる。
(7.コア間での回路初期状態の共通化)
本実施形態による対象コアの故障に対するATPG成功時のテストパターン流用及びテストパターン補間の失敗の要因としては、図12に示したような回路構成自体によるコア間の排他性以外にも、テストパターンの流用時に流用元コアと流用先コアとでATPGが対象としている仮定故障集合の周辺のネットステートの不一致が考えられる。
【0114】
このようなネットステートの不一致は、ダイナミックコンパクションでは、テストパターンの生成の進行(コンパクションターン)に伴い、図12に示した回路の排他性によっても起こるが、それ以前のテストパターン生成の初期段階から回路状態が異なっている場合がある。
【0115】
即ち、回路の初期状態を決定する操作としては
(1) ユーザによって特定のプライマリインプットやスキャンインプットなどの入力ポイントに対し、0、1、X(不定値)又はZ(ハイインピーダンス値)等の入力値を維持するステートが指示されるクリップ処理、
(2) クリップ処理のような入力ポイントの直接的な指示ではなく、回路内部におけるネット(接続信号)に対する0、1、X(不定値)又はZ(ハイインピーダンス値)等の特定のステート(以下、「ネットステート」という)を固定するような指示のみが与えられ、この指示によるネットステートの実現にATPGが使用される処理、
がある。
【0116】
クリップ処理はユーザによる任意の指示であるため、クリップ処理に伴うコア間のネットステートの不一致はATPGによっては調整不可能である。しかしながら、回路内部のネットステートを固定する指示によるコア間でのネットステートの不一致はATPGによって調整することが可能である。
【0117】
回路内部のネットステート固定の具体例としては、例えばプロセサを例にとると、計算機システムの起動時やリバック時のみに使用される設定情報を出力するnτパス(マルチサイクルパスとも呼ぶ)が存在する場合である。
【0118】
図14(A)は通常のCPU内部における動作周波数で度鬱する1τパス100を示しており、送りFF102、ゲート回路104−1,104−2及び受けFF106で構成される。
【0119】
ディレイファンクションテストにあっては、一般的に、送りFF102に対する送りクロックによって変化するステート、例えば0から1への変化を送りFF102に設定し、発生した変化を受けFF106に印加される受けクロックによって観測できるか否かにより試験する。
【0120】
図14(B)は1τパス100の試験結果であり、時刻t1での送りクロックによりステートを0から1に変化させると、時刻t2の受けクロックにより、その変化を観測することができる。
【0121】
図14(C)はnτパス101を示している。nτパス101は、送りFF102と受けFF106の間に例えば5つのゲート回路104−1〜104−5が存在している。
【0122】
図14(A)の1τパス100と同様、nτパス101について1τサイクルで回路を動作させるディレイファンクションテストを実行した場合、図14(D)に示す観測結果となり、時刻t2の受けクロックによる受けFF106によっては、送りFF102のステート0から1への変化がパスの遅延により伝播が保証されず、与えられた1τサイクルのテストサイクルに依存して期待値不良を起こす可能性がある。
【0123】
そこでディレイファンクションテストの際には、nτパス101のネットにカットポイント108を与え、カットポイント108の手前のゲート104−3に対し、ステートを固定化するカット処理として、送りクロック及び受けクロックに同期してステート0からステート0への変化を与えることで、ゲート104−3の出力のカットポイント108を固定化している。
【0124】
このようにnτパス101に対しステートを固定化するカット処理を行う際に、何らかの制約条件がなければ、ATPGは与えられたカットポイント108に対し独立にステートを固定化するためのカット処理を行おうとするため、各コアにおいて同じ回路状態となることが保証されていない。このため、テストパターンの流用及び補間処理の際に失敗する可能性がある。
【0125】
そこで本実施形態にあっては、回路の初期状態をコア間で共通にするため、カット処理を行う際に、例えば図12におけるコア50−1を対象コアとして選択した場合、選択した対象コア50−1内に指示されたカットポイントのステート固定がATPGによりテストパターンの生成に成功したならば、カットを実現するためのステートを、図10に示したスキャンFF集合のステートの流用の場合と同様に他のコア50−2,50−3,50−4に流用する。
【0126】
更に、カットを実現するステートを流用した後に流用先のカットポイントに対しATPGを実行して補間することで、回路の初期化状態をコア間で共通化する。
(8.コア間排他性のキャンセル)
図15(A)は図12に示した個別制御部64における制御排他性の原因となる回路部分を取り出している。図15(A)にあっては、個別制御部64から各コアへの制御信号が、例えばデコーダ96の論理を介することで、制御排他性を持つことになる。
【0127】
このような場合には、図15(B)に示すキャンセラ回路110を設ける。キャンセラ回路110はスキャンFF112とEORゲート(排他的論理和ゲート)114−1〜114−4で構成される。即ち、EORゲート114−1〜114−4の一方の入力にデコーダ96からの各コアに対する制御信号を入力すると共に、他方の入力にスキャンFF112からの信号を入力している。
【0128】
このようなキャンセラ回路110を用いることで、デコーダ96からEORゲート114−1〜114−4を介して出力される各コアへの制御信号は、スキャンFF112に対するステート0または1により独立に設定でき、コア間での制御排他性を排除することができる。
【0129】
図16(A)は図12の共通観測部66側における観測排他性を持つ回路部を示している。図16(A)に示す各コアからの信号が論理積演算を行うANDゲート98で結合されるような場合には、あるコアからの故障を観測するときに、その信号値が0となる必要があるならば他のコアからの信号値は1でなければならず、コア間の観測に関して観測排他性が生じている。
【0130】
このような観測排他性は、16(B)に示すキャンセラ回路116を設けることでキャンセルすることができる。図16(B)にあっては、キャンセラ回路116として排他的論理和演算を行うEORゲート118を設け、ANDゲート98に対する各コアからの制御信号を入力し、EOR118の出力にスキャンFF120を設けている。
【0131】
このようなキャンセラ回路116を設けたことで、各コアからの観測信号、例えば「0111」をEORゲート118により集約させて、その出力を「1」とし、ANDゲート98に対する信号値に関わりなく、他のコアからの故障を示す信号値をスキャンFF120で同時に観測できるようにしている。
【0132】
即ち、キャンセラ回路116にEORゲート118を用いることで、EOR118は制御値を持たずに常に故障伝播が可能であるため、コア間での故障観測に関する排他性を排除することができる。
(9.スキャンシフトの共有化)
本実施形態おいて、あるコアにおけるATPG成功時の他のコアに対するテストパターンの流用を考慮しない場合、マルチコアプロセサにおけるスキャンシフトは、すべてのコアのスキャンFFチェーンに対し独立にテストパターンをシフトする必要があるため、テスタにロードさせるコア部分に関するテストベクタの量は、スキャンイン及びスキャンシフトの場合でそれぞれ
[1つのコアのテストベクタ]×コア数
となる。
【0133】
一方、本実施形態にあっては、各コアには類似するベクタをシフトするため、図17に示すスキャン回路の構成をとることでテストベクタの圧縮が実現できる。
【0134】
図17のスキャン回路にあっては、4つのコアごとにコア内のスキャンチェーン120−1,120−2,120−3,120−4が存在しているが、スキャンチェーン120−1〜120−4の入力側にセレクタ124−1,124−2,124−3,124−4を設け、セレクタ124−1〜124−4の一方の入力に共通スキャンイン端子122を接続し、他方の入力端子に個別スキャンイン端子126−1〜126−4を接続している。
【0135】
セレクタ124−1〜124−4は、共通動作切替端子128に対するセレクト信号により、本実施形態にあっては共通スキャンイン端子122の入力を選択するようにしている。
【0136】
一方、スキャンチェーン120−1〜120−4の出力には個別スキャンアウト端子134−1〜134−4が設けられているが、これに加えて各スキャン出力をEOR130に結合して、共通スキャンアウト端子132を用いて観測するようにしている。
【0137】
更に、スキャンチェーン120−1〜120−4側の回路構成に加え、独立にキャンセラ用スキャンチェーン134を設け、スキャンイン端子136とスキャンアウト端子138を設けている。
【0138】
スキャンチェーン120−1〜120−4側の本来のスキャン回路にあっては、スキャンイン時には共通動作切替端子128のセレクト信号により、セレクタ124−1〜124−4を共通スキャンイン端子122の入力に切り替え、共通スキャンイン端子122を用いてテストベクタをスキャンチェーン120−1〜120−4に並列的にロードする。
【0139】
またスキャンアウト時には、スキャンチェーン120−1〜120−4をEORゲート130で結合して、共通スキャンアウト端子132に出力して観測する。これによって、コア部分に関するテストベクタの量をスキャンイン及びスキャンアウトの場合のそれぞれ
[1つのコアのテストベクタ]
とすることができ、本実施形態によらない場合の元のテストベクタ量を(1/コア数)に圧縮することができる。
【0140】
図18は図17に設けたキャンセラ用スキャンチェーン134の詳細を示した説明図である。図18にあっては、マルチコアプロセサに2つの個別制御部64−1,64−2と共通観測部66−1,66−2を設けた回路構成を例に取っており、共通制御部64−1,64−2については、図15(B)に示したと同じキャンセラ回路110−1,110−2が設けられる。
【0141】
また共通観測部66−1,66−2に対しては、図16(B)に示したと同じキャンセラ回路116−1,116−2が設けられている。そして、それぞれのキャンセラ回路110−1,110−2におけるスキャンFF112−61,112−62及びスキャン回路116−1,116−2におけるスキャンFF120−1,120−2を1つの独立したスキャンチェーンとすることで、コア間の排他性をキャンセルした個別制御と故障観測を実現することができる。
(10.テストパターン生成処理)
図19は本実施形態におけるテストパターン生成処理の手順を示したフローチャートであり、図1を参照して説明すると次のようになる。
【0142】
図19において、まずステップS1で回路情報読込部10がテストデータベース12から回路データ14を読み込む。次にステップS2でスキャンチェーン集合作成部18及び仮定故障集合作成部22が初期化手続きとしてコアごとのスキャンチェーン集合20と仮定故障集合24を作成する。
【0143】
次にステップS3で対象コアの設定を行う。例えばステップS1で読み込んだ回路データが図6のマルチプロセサ46の回路データであったとすると、例えば対象コアとしてコア50−1を選択し、残りのコア50−2〜50−4は非対象コアとする。
【0144】
対象コアの選択は具体的には図8に示した故障データ82に設けているコアごとの故障テーブル84に設けているatpg対象フラグ85とスキップフラグ87の設定で行う。
【0145】
図20は対象コアをコア50−1として設定した場合の各コアの仮定故障集合におけるatpgフラグとスキップフラグの設定状態を示している。
【0146】
コア50−1を対象とコアとして選択した場合にはatpgフラグはオンし、スキップフラグはオフとしている。これに対し非対象コアとなるコア50−2、50−3、50−4についてはatpgフラグはオフ、スキップフラグをオンに設定している。
【0147】
再び図19を参照するにステップS4で所定の終了条件を判別するまでステップS5〜S9のループの処理を繰り返す。ステップS4で判別する終了条件としては次のものがある。
(1)指定された実行時間の上限をこえた実行が行われたか否か。
(2)指定されたテストパターン数の上限を超えたテストパターン生成が行われたか否か。
(3)指定された故障検出率の上限を超えた故障検出率が得られたか否か。
(4)未提出故障が存在するか否か。
【0148】
続いてステップS5で1次故障に対するATPGを実行する。即ち対象コアとして選択されたコア50−1の仮定故障集合から未提出な故障を1次故障として任意にひとつ選択し、ATPGによりテストパターンを生成する。
【0149】
続いてステップS6で1次故障に対するATPGが成功したか否かチェックし、成功した場合にはステップS7に進み、ダイナミックコンパクション実行部32によりダイナミックコンパクションを実行する。ダイナミックコンパクションの詳細は後の説明で明らかにする。
【0150】
ダイナミックコンパクションによりテストパターンが生成できたならば、続いてステップS8で回路故障検出部34により生成されたテストパターンを用いた故障シミュレーションにより故障検出とテストデータベース12に対するテストパターン16の保存が行われる。
【0151】
続いてステップS9で故障検出率のコア間でのばらつきを抑制するため対象コアを交換する処理が行われる。この対象コアを交換する処理は図8に示したatpg対象フラグ85、スキップフラグ87につき、例えばコア50−1からコア50−2に対象コアを交換する場合には、それまで選択していたコア50−1のatpgフラグをオンからオフに設定するとともに、スキップフラグをオフからオンに設定し、同時に次に対象となるコア50−2のatpgフラグをそれまでのオフからオンに設定し、スキップフラグをそれまでのオンからオフに切替える。
【0152】
ステップS4で前記(1)〜(4)に示した終了条件のいずれかが判別されるとステップS10に進み、故障検出情報などの回路データ14をテストデータベース12に書き込み、一連の処理を終了する。
(11.ATPG処理)
図21は図19のステップS5におけるATPG処理の詳細を示したフローチャートである。
【0153】
図21において、ATPG処理はステップS1で故障励起ステートを設定する。この故障励起ステートの設定は指定される故障が仮定ネットに対する正常値と故障値の励起ステートを設定する処理である。
【0154】
次にステップS2、S3、S4の処理により含意処理を実行する。含意処理とは[〜であるならば、〜]という論理検算である。例えばA、Bを入力、Cを出力するandゲートを例にとると、その含意は次のようになる。
[C=and(A,B)のとき、A=0orB=0→C=0あるいはC=1→A=1、B=1である]のこのようなandゲートにおいてA=0orB=0,C=1ならば矛盾である。
【0155】
この含意処理は具体的にはステップS2でバックトラックに備え、
condition(net−state,J/D−frontier)
をスタックにプッシュし、次にステップS3で含意可能なゲートが存在するか矛盾が発生するまで論理検算を行い、ステップS4で矛盾を判別した場合にはステップS13に進み、スタックがあればステップS14でスタック内容をトップし、再びステップS2からの処理を繰り返す。これにより論理検算で発生及び消滅するJ−frontier及びD−frontierを更新する処理を実行する。
【0156】
続いてステップS4で含意の結果、矛盾がなかった場合にはステップS5、S6、S7のJ−frontierの処理に進む。即ちステップS5で未解決なゲートでJ−frontierであることを判別すると、ステップS6で解決ステートの有無をチェックし、解決ステートがあればステップS7で解決ステートを選択する。
【0157】
ここでJ−frontierとは、含意で発生する出力のみにステートを持ち、入力が含意不可能のため未設定となるゲートである。例えばC=and(A,B)のときC=0、A=B=X(不定値)のようなゲートである。
【0158】
ATPGではJ−frontierに対し、全ての可能な選択が行われる。例えばandゲートにおいてはA=0が選択され、A=0の選択で矛盾が生じたならばB=0が選択される。
【0159】
一方、ステップS5で未解決なJ−frontierがなかった場合にはステップS8に進み、故障観測をチェックし、故障観測がなければステップS9、S10、S11の処理によりD−frontierの処理を実行する。即ちステップS9で未解決なゲートであるD−frontierを判別し、ステップS10で解決ステートがあればステップS11で解決ステートを選択する。
【0160】
ここでD−frontierとは、含意で発生するいずれかにD値(正常値/故障値)をもち、出力にD値が伝播していないゲートである。例えばANDゲートを例にとると、論理積演算をA,Bに対して行った結果であるC=and(A、B)においては、BのみにD(1/0)が伝播し、Aが不定値(x/x)であるためにx/0=and(x/x、1/0)となるようなゲートである。
【0161】
ATPGではD−frontierに対し、入力まで伝播しているD値を出力に伝播させるための選択が行われ、例えばANDゲートに対してはA=1/xの選択が行われる。
【0162】
このような処理の繰り返しで、ステップS8で故障観測が得られればステップS12に進み、テスト成功と判断して一連のATPGの処理を終了する。
【0163】
一方、ステップS4で矛盾ありが判別され、ステップS13でスタックがなくなった場合には、ステップS15でテスト失敗としてATPG処理を終了する。
(12.ダイナミックコンパクション)
図22は図19のステップS7におけるダイナミックコンパクションの詳細を示したフローチャートである。図22において、ダイナミックコンパクションはステップS1で終了条件として残存未検出故障があるか否かチェックし、残存未検出故障があればステップS2に進み、対象コアか否か判別する。
【0164】
対象コアの判別は図20に示したatpgフラグおよびスキップフラグを参照し、この場合にはatpgフラグがオンでスキップフラグがオフとなっているコア50−1を対象コアとして選択し、それ以外のatpgフラグがオフでスキップフラグがオンとなっている他のコア50−2〜50−4についてはそれぞれの仮定故障集合に対するATPG実行はスキップされる。
【0165】
次にステップS3で選択された対象コア50−1の仮定故障集合から未検出な故障を2次故障として任意にひとつ選択し、選択した2次故障に対しATPGを実行する。このATPGの詳細は図21のフローチャートで示したと同じである。
【0166】
続いてステップS4でATPGの成功の有無をチェックし、成功した場合にはステップS5に進み、対象コアから非対象コアへのテストパターンの流用処理を実行する。続いてステップS6でATPGにより個別制御部のテストパターンを補間する補間処理を実行する。
(13.テストパターン流用処理と補間処理)
図23は図22のステップS5におけるテストパターン流用処理の詳細を示したフローチャートである。
【0167】
図23において、テストパターン流用処理はステップS1で対象コア#cに対するATPGの要求スキャン集合R#cを取得する。
【0168】
図24(A)はコア50−1〜50−mを対象としたスキャンチェーン集合74−1〜74−mであり、ステップS1にあっては例えば対象コア50−1に対するATPGの要求スキャン集合R#cとして例えば図24(B)に示すm=4とした場合に要求チェーン集合140を取得する。
【0169】
続いてステップS2で対象コア#cに対応する非対象コア#kの要求スキャンチェーン集合R#kを取得する。ここで非対象コア#kは例えばコア50−2〜50−3、50−4であることから、図24(A)のスキャンチェーン集合74−2、74−3、74−4(図示せず)から図24(C)に示すような非対象コアの要求チェーン集合142を取得する。
【0170】
次にステップS3で要求スキャンチェーン集合Rの要素r(r=1〜4)を取得し、ステップS4で流用先のスキャンFFのstate[s[k][r]]のステートが不定値xか判定する。
【0171】
不定値xであった場合にはステップS5で流用元のstate[s[c][r]]を流用先のstate[s[k][r]]として流用する。即ち図24(D)に示すように、対象コア50−1におけるATPGの成功で得られた流用元のステート144を、流用先となる他のコア50−3〜50−4における流用先のステート146に流用する。
【0172】
一方、ステップS4で流用先のstate[s][k][r]が不定値xでなかった場合には、ステップS6で流用失敗のため、流用先の故障集合f[k][j]のそれまでのオンとなっていたスキップフラグをオフとし、これによってATPGの実行を可能とする。
【0173】
続いてステップS7で要求スキャン集合Rの全ての要素rを処理するまでステップS3からの処理を繰り返し、全ての要素rの処理が終了するとステップS8で全ての非対象コアの処理が済むまでステップS2からの処理を繰り返し、全ての非対象コアの処理がすめば一連の処理を終了する。
【0174】
図25は図22のステップS6におけるテストパターン補間処理の詳細を示したフローチャートである。図25において、テストパターン補間処理は図6に示した個別制御部64のテストパターン生成処理の未完成を抑止するための処理である。
【0175】
図25において、テストパターン補間処理は、ステップS1で対象コア#cの故障#jに対応する非対象コア#kの故障集合Fを取得する。例えば図10の場合にはコア50−1を対象コア#cとし、その故障f[1][j]に対応する故障集合
F={f[2][j],f[3][j],・・・,f[m][j]}
j:コア内部の仮定故障数
を取得する。
【0176】
続いてステップS2で故障集合Fの要素f[k][j]についてATPGを実行する。続いてステップS3でATPGの成功を判別するとステップS5で全要素の処理終了を判別するまでステップ2からの処理を繰り返す。
【0177】
ステップS3でATPGに失敗した場合には対象コア50−1の2次故障と対応する他のコア50−2、50−3、50−4の故障集合との間には排他性、すなわち同時検出不可能性が存在するため、ステップS4で故障集合f[k][j]のスキップフラグをオフとし、それ以降の処理においてこの故障についてATPGはスキップされずに実行されることになる。
(14.故障シミュレーション)
図26は図19のステップS8における故障シミュレーションの詳細を示したフローチャートであり、イベントドリブン型のシミュレーションを例にとっている。
【0178】
図26の故障シミュレーションにおいて、まずステップS1でディレイ故障を条件として基準ネットワークの保存を行う。続いてステップS2で入力点でのイベントスケジュールを行う。
【0179】
次にステップS3でイベントありを判別するとステップS4でイベントの伝播を行ったあと、ステップS5でイベント伝播先のゲートを処理して故障リストを作成してステップS6で故障リストをイベントテーブルに登録する。
【0180】
このようなステップS4〜S6の処理をステップS3でイベントがなくなるまで繰り返し、イベントがなくなるとステップS7で故障検出処理を実行する。
【0181】
図27は図26のステップS2におけるイベントスケジュールの詳細を示したフローチャートである。図27のイベントスケジュールにあっては、ステップS1で全入力ポイントにスケジュール済みか否かチェックし、スケジュール済みでなければステップS2で入力ポイントに対する正常値を設定し、ステップS3で入力ポイントのイベントテーブルを作成し、全入力ポイントに対するスケジュールが完了するまでその処理を繰り返す。
【0182】
図28は図27のステップS3におけるイベントテーブルの作成動作を示した説明図である。イベントテーブルの作成動作は、故障リストとして[スケジュールネット,[故障id,故障値]]
を用いて正常値と故障値が異なる故障をイベントテーブルに登録する。
【0183】
例えば図28のスキャンFF148を例にとると、そのQ出力n1にそれぞれ(0,1)の値を持つ故障を(f1,f2)が仮定されている場合に正常値として0をスケジュールしたときには、故障リストとして
[n1,(f2,1)]
をイベントテーブルに登録する。
【0184】
図29は図26のステップS4におけるイベント伝播の詳細を示したフローチャートである。イベント伝播はステップS1で全イベントテーブルが処理済みとなるまでステップS2の処理を繰り返す。ステップS2にあってはイベントテーブルのスケジュールネットのリンク先にネットステート及び故障リストを伝播する。
【0185】
図30は図29のイベント伝播の具体例を示した説明図である。図30にあっては、G1〜G3で示すゲート150、152、154の入力ポイントn1、n2、n3への正常値(0、1)のスケジュールによって故障リスト
FL1:{n1,(f2,1)}
FL2:{n2,(f3,0)}
FL3:{n3,(f5,0)}
がイベントテーブルに登録されている。
【0186】
このイベントテーブルに登録されている故障リストがスケジュールネットのリンク先となるandゲート156、158に、ネットステート(0,
1,1)及び故障リスト(FL1,FL2,FL3)として伝播される。
【0187】
図31は図26のステップS5におけるイベント伝播先ゲート処理の詳細を、縮退故障を対象に示したフローチャートであり、ステップS1〜S2が正常ゲートの演算処理であり、ステップS3〜S11が故障ゲートの演算処理となる。
【0188】
まず正常ゲートの演算処理は、ステップS1でネットリストの正常値によりゲート演算を実行し、ステップS2で故障リストとして
[スケジュールネット(ネット出力)]
を生成する。
【0189】
次の故障ゲートの演算処理は、まずステップS3で伝播故障リストの登録故障とゲート仮定故障をidでソートした故障id集合Fを作成する。続いて、ステップS4で故障id集合Fからひとつの故障fを選択し、ステップS5で選択した故障が故障fと同じidを持つ故障であった場合にはステップS6に進み、選択した故障fと同一の故障値を注入する。
【0190】
ステップS5で選択された故障fと異なる故障idの場合にはステップS7で正常値を注入する。続いてステップS8に進み、注入された故障値によりゲート演算を実行する。続いてステップS9でゲート出力が正常値と同じか否かチェックし、正常値出力と異なった場合にはステップS10で故障リストに故障値部として(id,故障値)を追加する。
【0191】
続いてステップS11で全ての故障fを選択するまでステップS4からの処理を繰り返す。
【0192】
図32は図31の故障の場合のイベント伝播先ゲート処理の具体例を示した説明図である。図32にあってはG4で示すANDゲート160に故障リストFL1、FL2が伝播してきている縮退故障の場合の動作を示している。まず正常ゲート演算処理としては正常値(n4:0、n5:1)を用いてゲート演算and(0,1)=0を実行する。そして故障リストのスケジュールネットとしてFL4:{n8}を作成する。
【0193】
一方、故障ゲートの演算処理は、まず故障id集合Fを作成する。即ちFL1、FL2及びG4の仮定故障から故障id集合Fとして
F={f2,f3,f7,f8,f9,f10,f11,f12}
を作成する。
【0194】
続いて故障id集合Fの先頭から全ての要素に対し次の処理を繰り返す。
(1)故障id集合Fから故障f2を選択、
(2)故障リストFL1、FL2及びG4の仮定故障と故障f2を比較、
(3)故障f2は故障リストFL1に含まれる故障なのでn4に故障値1を注入、
(4)ゲート演算and(1,1)=1を実行、
(5)正常値0と異なるため故障リストFL4に(f2,1)を追加、
→FL4:{n8,(f2,1)}
(6)故障f3以降の故障に対し同様の操作を行ってゲート160において次の故障リストFL4を作成、
→FL4:{n8,(f2,1),(f8,1),(f12,1)}
図33は図26のステップS5におけるイベント伝播処理の詳細について、ディレイ故障を対象に示したフローチャートである。
【0195】
図33において、ステップS1〜S2は図31と同様、正常ゲート演算ステップで基本的に同じである。またステップS3〜S13は故障ゲート演算処理となっている。
【0196】
故障ゲート演算処理にあってはステップS5〜S9がディレイ故障固有の処理であり、ステップS10〜S13は図31の縮退故障におけるステップS8〜S11と同じである。
【0197】
そこでステップS4〜S13における故障ゲートの演算処理を説明すると次のようになる。ステップS4にあっては故障id集合Fからひとつの故障fを選択した後、ステップS5で選択された故障fが伝播してきた故障リストの故障か否かチェックする。選択された故障fが伝播してきたリストの故障であれば、図31の縮退故障の場合と同様、ステップS6に進み、選択故障fの故障値を注入する。
【0198】
一方、ステップS5で選択された故障fが伝播してきた故障リストの故障でなければステップS7に進み、選択された故障fはゲートに仮定される故障か否かチェックする。ゲートに仮定される故障であったならば、ステップS8に進み、基準ネットステートと現在のネットステートが異なる場合にはステップS6に進み選択された故障fの故障値を注入する。同じである場合にはステップS9に進み、正常値を注入する。
【0199】
続いてステップS10で注入された故障値によりゲート演算を実行する。その後のステップS11〜S13は図31の縮退故障のステップS9〜S11と同じである。
【0200】
図34は図26のステップS7における故障検出処理の詳細を示したフローチャートである。図34の故障検出処理にあっては、ステップS1でスケジュールネットを観測ポイントした故障リストを作成し、ステップS2で故障リストに保存されている正常値と故障値が(0,1)または(1,0)の組合せとなるidの故障を検出済みにする。
【0201】
(15.処理時間の削減効果)
図6に示したマルチコアプロセサ46を対象としたダイナミックコンパクションを伴う従来のテストパターン生成システムにおけるATPG処理時間を分解すると、コア50−1〜50−4に対する処理時間と、コア以外の共通部分に対する処理時間の合計であり、次のように表すことができる。
従来の処理時間
={コア部の故障に対する処理時間}×コア数
+{共通部分の故障に対する処理時間}
更に、コアの故障に対する処理時間は、ATPGに成功する処理時間と失敗する処理時間に分解可能なため、最終的に次の内訳となる。
従来の処理時間
={ATPG処理時間(成功)+ATPG処理時間(失敗)}×コア数
+{共通部分の故障に対する処理時間} (1)
一方、本実施形態によるATPG処理時間は、コア以外の共通部分は従来と変わりはないが、コア50−1〜50−4に関しては、ATPGの処理対象となる故障は1コア分であり、これにATPGが成功した場合の(コア数−1)個分のテストパターン流用処理とテストパターン補間処理の処理時間の合計となるため、以下のように表すことができる。
本発明の処理時間
={ATPG処理時間(成功)+ATPG処理時間(失敗)}×1コア
+{ATPG成功の場合の流用/補間処理時間}×(コア数−1)
+{共通部分の故障に対する処理時間} (2)
次に(1)(2)式においてコア数をパラメータとした場合、従来は「コア部の故障に対する処理時間」]はコア数の増加に伴い単純に線形に増加するのに対し、本実施形態にあっては1コア分のまま固定である。
【0202】
このため、上記の(2)式においては、「コア部の故障に対する処理時間」]が支配的であり、「ATPGに成功した場合の流用/補間処理時間」が十分に小さく無視できる場合において、定性的には、本実施形態によるATPGの処理時間は従来の場合に対して、
従来の処理時間×(1/コア数) (3)
となり、コア数が多くなるほど処理時間の削減効果が大きくなる。
【0203】
このように共通回路となるコアを複数持つマルチコアプロセサに対するテストパターン生成において、本実施形態によれば、従来に比べATPG処理時間をコア数に応じて大幅に削減することができる。
【0204】
更に、図17及び図18に示したようなスキャンチェーン回路を持つことで、コア部分に関するテストベクタ量も
従来のテストベクタ量×(1/コア数) (4)
に削減することができる。
【0205】
図35は本実施形態によるATPG処理時間の削減を示した説明図である。図35にあっては、マルチコアプロセサのコア数mをm=4とし、テストパターン流用処理及びテストパターン補間処理の各々の処理時間に、元来のATPG処理(成功時)の半分の時間がかかるとした場合のモデルケースでの処理時間の削減の様子を棒グラフで示している。
【0206】
図35において、従来技術にあっては、処理時間は、4つのコア処理時間162−1,162−2,162−3,162−4に共通部分160の時間を加えた時間であり、コア処理時間162−1〜162−4は、それぞれATPG失敗分の処理時間T11,T21,T31,T41と、ATPG成功分の処理時間T12,T22,T32,T42に分かれている。
【0207】
これに対し本発明の処理時間は、1コア分の処理時間162−1にコア3個分の処理時間164、即ちテストパターン流用処理及びテストパターン補間処理によるATPG成功時の時間の半分の時間T3を3つ合わせた処理時間に、更に共通部分160の時間T0を加えた時間であり、削減量165が得られている。
【0208】
更に、本実施形態による処理時間削減の効果を具体的なマルチコアプロセサを例に取って説明すると次のようになる。
【0209】
まず測定対象として、図3に示した機能構成を持つマルチコアプロセサ46の回路モデルとして富士通株式会社製
コードネーム:Jupiter
製品名 :SPARC64■+アーキテクチャ(4コア)
(ただし、「SPARC」は登録商標)
論理ゲート数:23,132,852個
仮定故障数 :84,623,851個
図36は本実施形態による処理時間削減の測定対象とする回路モデル
におけるスキャンFFのビット分布を示した説明図である。
【0210】
図36にあっては、ATPGにおける故障励起の前処理として行われるナローイング処理を示している。即ち、コア50−1の対応する故障f0、及びコア50−2の対応する故障f1から、受け側のスキャンFF集合群186,188を経由して、送り側となる制御側スキャンFF集合166までのナローイング範囲を示している。故障点f0に対するATPGは故障伝播コーン182のように受け側のスキャンFF集合186にバックトレース190を行い、また、受け側のスキャンFF集合186で折り返した後、活性化条件コーン178で制御側スキャンFF集合166側にバックトレース192を行っている。
【0211】
制御側スキャンFF集合166は、コア、共通、個別のグループに分類される。即ち、故障検出の制御側スキャンFF集合166は活性化条件コーン178,180に隣接し、コア50−1の個別制御部となるスキャンFF集合168、コア50−1の内部のスキャンFF集合170、コア50−1と50−2で共通する共通制御部のスキャンFF集合172、コア50−2の内部のスキャンFF集合174、コア50−2の個別制御部のスキャンFF集合176のビット数の分布になる。
【0212】
ここでコア50のスキャンFF集合168のビット数をB−ind、コア50−1の内部スキャンFF集合170のビット数B−core、更に共通制御部となるスキャンFF集合172のビット数をB−comとする。
【0213】
このような制御側スキャンFF集合166において、コア、共通、個別のグループに分類した場合の制御ビット数の割合を測定すると、図37及び図38の結果が得られている。
【0214】
実行時間の測定環境としては次の通りである。
CPU:Opteron 254 2,793MHz
メモリ:16ギガバイト
OS :Debian(GNU/Linux)
ただし実行時間の測定に時間がかかることから、測定はコア内部の仮定される故障の1パーセントでサンプリングしている。
【0215】
図37は図36の測定対象コアにおけるATPG対象ビットを、コア、共通、個別のグループに分類して測定した場合の測定対象全体でのビット数割合の平均を示している。
【0216】
図37において、ATPG成功時のテストパターン補間により探索が必要な制御ビットは個別制御部分194の0.74パーセントのみであり、コア190の97.02パーセントと共通制御部分192の2.24パーセントを合わせた制御ビット99.26パーセントは、本実施形態によるATPG成功時のテストパターン流用処理の操作までに決定されることを示している。
【0217】
図38及び図39は、図36に示すコア、共通、個別の3グループに分けた制御ビット数分布を持つマルチコアプロセサの回路モデルを対象に、ATPG実行時間の測定結果を示している。
【0218】
このATPG実行時間の測定にあっては、本実施形態によるATPGの成功によるテストパターンの流用のない通常動作と、テストパターンの流用動作のそれぞれについて、コンパクション回数に対するジョブ全体の実行時間を求めている。実際の測定時間については、約2日間のランニングで86回のコンパクションを実行している。
【0219】
図38の実行時間にあっては、本発明196と従来198を示しており、コンパクション回数の増加に対する本発明の実行時間の増加割合は、従来198に比べほぼ半分に抑えられている。
【0220】
図39は実行時間の測定におけるコンパクション86回目までの実行時間に占めるATPG実行時間、故障シミュレータ実行時間、及びその他の実行時間に分類した内訳を示している。
【0221】
図39の従来技術198にあっては、ATPG実行時間202−1が大部分を占めており、次に故障シミュレータ実行時間204−1があり、その他の実行時間206−1は最も少ない。
【0222】
これに対し本発明200にあっては、全体の実行時間が従来技術198の約43分に対し約20分と半分以下に削減しており、その内訳はATPG実行時間202−2、故障シミュレータ実行時間204−2及びその他の実行時間206−2に分かれている。
【0223】
故障シミュレータ実行時間204−2は従来技術198とほぼ同じであり、またその他の実行時間206−2も従来に比べわずかに増加しているが、大部分はATPG実行時間202−2であり、このATPG実行時間202−2が従来のATPG実行時間202−1に対し1つの対象コアに対するATPGの成功を契機に他のコアにテストパターン流用処理とテストパターン補間処理を行うことで、半分以下の実行時間に低減できている。
【0224】
このような実際のマルチコアプロセサの回路モデルにおける実行時間の測定結果からも、図35で予測した本発明による処理時間の削減量165が達成されていることが裏付けられている。
【0225】
また本発明はテストパターン生成のためのプログラムを提供するものであり、このプログラムは、図19、図21〜図23、図25〜図27、図29,図31,図33,図34のそれぞれのフローチャートに示した内容を有するものである。
【0226】
本実施形態におけるテストパターン生成プログラムは、例えば図40に示すようなコンピュータのハードウェア環境により実行される。図40において、CPU200のバス202に対しては、RAM204、ROM206、ハードディスクドライブ208、キーボード210,マウス212,ディスプレイ214を接続するデバイスインタフェース216、及びネットワークアダプタ218が設けられている。
【0227】
ハードディスクドライブ208には、本実施形態によるテストパターン生成プログラムがアプリケーションプログラムとして格納されている。
【0228】
コンピュータを起動すると、BIOSのブート処理によりハードディスクドライブからOSがRAM204に読出し配置され、CPU200により実行される。CPU200によるOSの実行でハードディスクドライブから本実施形態のテストパターン生成プログラムがRAMに読出し配置され、CPU200により実行される。
【0229】
なお上記の実施形態にあっては、テストパターン生成処理を行う回路としてマルチコアプロセサを例にとるものであったが、本発明はこれに限定されず、等価性や類似性を持つ共通回路を複数備えた半導体回路につき、そのまま適用することができる。
【0230】
また本発明は、その目的と利点を損なうことのない適宜の変形を含み、更に上記の実施形態に示した数値による限定は受けない。
Claims (6)
- 回路の外部からテストパターンを与えて前記回路の動作を確認するスキャンチェーンをそれぞれ有する第1及び第2の共通回路と、前記第1及び第2の共通回路以外の非共通回路とを備えた半導体回路に対するテストパターンを生成するテストパターン生成方法において、
前記半導体回路の回路情報を読み込むステップと、
前記第1及び第2の共通回路毎にスキャンチェーンの集合と前記共通回路を構成する論理素子の端子に固定される故障である仮定故障の集合を作成するステップと、
前記第1及び第2の共通回路のいずれかを、第1のテスト対象の共通回路として決定し、決定された前記第1のテスト対象の共通回路に対する回路故障の検出を行った後に、前記第1のテスト対象の共通回路とは異なる共通回路を第2のテスト対象の共通回路として決定するステップと、
前記決定された第1のテスト対象の共通回路について作成した前記スキャンチェーンの集合と前記仮定故障の集合を用いて、テストパターンの生成を行うステップと、
前記生成されたテストパターンの圧縮を行うステップと、
前記圧縮されたテストパターンを用いて、前記第1のテスト対象の共通回路が有する回路故障の検出を行うステップと、
前記圧縮されたテストパターンを用いて、前記第2のテスト対象の共通回路に対して、前記共通回路が有する回路故障の検出を行うステップと、
を有することを特徴とするテストパターン生成方法。 - 前記テストパターン生成方法はさらに、
前記第1及び第2の共通回路毎にスキャンチェーンの集合を作成するステップにおいて、
前記第1及び第2の共通回路が有する記憶回路の初期状態を同一に設定することを特徴とする請求項1記載のテストパターン生成方法。 - 回路の外部からテストパターンを与えて前記回路の動作を確認するスキャンチェーンをそれぞれ有する第1及び第2の共通回路と、前記第1及び第2の共通回路以外の非共通回路とを備えた半導体回路に対するテストパターンを生成するテストパターン生成装置において、
前記半導体回路の回路情報を読み込む回路情報読込部と、
前記第1及び第2の共通回路毎にスキャンチェーンの集合と前記共通回路を構成する論理素子の端子に固定される故障である仮定故障の集合を作成するスキャンチェーン集合作成部と、
前記第1及び第2の共通回路のいずれかを、第1のテスト対象の共通回路として決定し、決定された前記第1のテスト対象の共通回路に対する回路故障の検出を行った後に、前記第1のテスト対象の共通回路とは異なる共通回路を第2のテスト対象の共通回路として決定するテスト対象回路決定部と、
前記決定された第1のテスト対象の共通回路について作成した前記スキャンチェーンの集合と前記仮定故障の集合を用いて、テストパターンの生成を行うテストパターン生成部と、
前記生成されたテストパターンの圧縮を行うテストパターン圧縮部と、
前記圧縮されたテストパターンを用いて、前記第1のテスト対象の共通回路が有する回路故障の検出を行う回路故障検出部と、
前記圧縮されたテストパターンを用いて、前記第2のテスト対象の共通回路に対して、前記共通回路が有する回路故障の検出を行うテスト流用部と、
を有することを特徴とするテストパターン生成装置。 - 前記テストパターン生成装置はさらに、
前記第1及び第2の共通回路毎にスキャンチェーンの集合を作成するステップにおいて、
前記第1及び第2の共通回路が有する記憶回路の初期状態を同一に設定することを特徴とする請求項3記載のテストパターン生成装置。 - 回路の外部からテストパターンを与えて前記回路の動作を確認するスキャンチェーンをそれぞれ有する第1及び第2の共通回路と、前記第1及び第2の共通回路以外の非共通回路とを備えた半導体回路に対するテストパターンを生成するテストパターン生成方法において、
前記半導体回路の回路情報を読み込むステップと、
前記第1及び第2の共通回路毎にスキャンチェーンの集合と前記共通回路を構成する論理素子の端子に固定される故障である仮定故障の集合を作成するステップと、
前記第1及び第2の共通回路のいずれかを、第1のテスト対象の共通回路として決定し、決定された前記第1のテスト対象の共通回路に対する回路故障の検出を行った後に、前記第1のテスト対象の共通回路とは異なる共通回路を第2のテスト対象の共通回路として決定するステップと、
前記決定された第1のテスト対象の共通回路について作成した前記スキャンチェーンの集合と前記仮定故障の集合を用いて、テストパターンの生成を行うステップと、
前記生成されたテストパターンの圧縮を行うステップと、
前記圧縮されたテストパターンを用いて、前記第1のテスト対象の共通回路が有する回路故障の検出を行うステップと、
前記圧縮されたテストパターンを用いて、前記第2のテスト対象の共通回路に対して、前記共通回路が有する回路故障の検出を行うステップと、
をコンピュータに実行させることを特徴とするテストパターン生成プログラム。 - 前記テストパターン生成プログラムはさらに、
前記第1及び第2の共通回路毎にスキャンチェーンの集合を作成するステップにおいて、
前記第1及び第2の共通回路が有する記憶回路の初期状態を同一に設定することを特徴とする請求項5記載のテストパターン生成プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2008/050181 WO2009087769A1 (ja) | 2008-01-10 | 2008-01-10 | テストパターン生成方法、装置及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2009087769A1 JPWO2009087769A1 (ja) | 2011-05-26 |
JP5201151B2 true JP5201151B2 (ja) | 2013-06-05 |
Family
ID=40852894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009548838A Expired - Fee Related JP5201151B2 (ja) | 2008-01-10 | 2008-01-10 | テストパターン生成方法、装置及びプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US8332715B2 (ja) |
JP (1) | JP5201151B2 (ja) |
WO (1) | WO2009087769A1 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8856602B2 (en) * | 2011-12-20 | 2014-10-07 | International Business Machines Corporation | Multi-core processor with internal voting-based built in self test (BIST) |
US9057765B2 (en) | 2013-04-12 | 2015-06-16 | International Business Machines Corporation | Scan compression ratio based on fault density |
JP6496562B2 (ja) * | 2014-04-11 | 2019-04-03 | ルネサスエレクトロニクス株式会社 | 半導体装置、診断テスト方法及び診断テスト回路 |
US20160377676A1 (en) * | 2015-06-23 | 2016-12-29 | Freescale Semiconductor, Inc. | Integrated circuit including overlapping scan domains |
US10289511B2 (en) * | 2016-08-19 | 2019-05-14 | Mixel, Inc. | Differential physical layer device with testing capability |
US11042681B1 (en) * | 2017-03-24 | 2021-06-22 | Ansys, Inc. | Integrated circuit composite test generation |
US11074147B2 (en) * | 2018-11-30 | 2021-07-27 | International Business Machines Corporation | Continuous mutual extended processor self-test |
US11061734B2 (en) * | 2019-01-31 | 2021-07-13 | Salesforce.Com, Inc. | Performing customized data compaction for efficient parallel data processing amongst a set of computing resources |
US11048603B2 (en) * | 2019-05-22 | 2021-06-29 | International Business Machines Corporation | Critical path failure analysis using hardware instruction injection |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10307169A (ja) * | 1997-05-06 | 1998-11-17 | Oki Electric Ind Co Ltd | スキャン回路 |
JP2000137061A (ja) * | 1998-10-30 | 2000-05-16 | Advantest Corp | システムオンチップにおける埋込コアの試験方法及び構成 |
JP2007114163A (ja) * | 2005-10-24 | 2007-05-10 | Matsushita Electric Ind Co Ltd | マルチチップパッケージlsi |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0634212B2 (ja) | 1986-09-19 | 1994-05-02 | 富士通株式会社 | テストデ−タ編集機能付cad装置 |
US6067651A (en) | 1998-02-20 | 2000-05-23 | Hewlett-Packard Company | Test pattern generator having improved test sequence compaction |
US6694466B1 (en) * | 1999-10-27 | 2004-02-17 | Agere Systems Inc. | Method and system for improving the test quality for scan-based BIST using a general test application scheme |
US6865706B1 (en) * | 2000-06-07 | 2005-03-08 | Agilent Technologies, Inc. | Apparatus and method for generating a set of test vectors using nonrandom filling |
JP4435615B2 (ja) | 2003-04-03 | 2010-03-24 | 富士通株式会社 | プログラム、テストパターン作成方法及び装置 |
JP4340139B2 (ja) | 2003-12-12 | 2009-10-07 | 三菱電機株式会社 | 試験データ作成装置 |
US7216280B2 (en) * | 2004-04-20 | 2007-05-08 | Lsi Logic Corporation | Method of generating test patterns to efficiently screen inline resistance delay defects in complex ASICs |
US7509600B2 (en) * | 2004-04-22 | 2009-03-24 | Janusz Rajski | Generating test patterns having enhanced coverage of untargeted defects |
US7610527B2 (en) * | 2005-03-16 | 2009-10-27 | Nec Laboratories America, Inc. | Test output compaction with improved blocking of unknown values |
US7788561B2 (en) * | 2006-08-14 | 2010-08-31 | Yu Huang | Diagnosing mixed scan chain and system logic defects |
US7840865B2 (en) * | 2007-03-23 | 2010-11-23 | Mentor Graphics Corporation | Built-in self-test of integrated circuits using selectable weighting of test patterns |
-
2008
- 2008-01-10 WO PCT/JP2008/050181 patent/WO2009087769A1/ja active Application Filing
- 2008-01-10 JP JP2009548838A patent/JP5201151B2/ja not_active Expired - Fee Related
-
2010
- 2010-07-09 US US12/805,067 patent/US8332715B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10307169A (ja) * | 1997-05-06 | 1998-11-17 | Oki Electric Ind Co Ltd | スキャン回路 |
JP2000137061A (ja) * | 1998-10-30 | 2000-05-16 | Advantest Corp | システムオンチップにおける埋込コアの試験方法及び構成 |
JP2007114163A (ja) * | 2005-10-24 | 2007-05-10 | Matsushita Electric Ind Co Ltd | マルチチップパッケージlsi |
Also Published As
Publication number | Publication date |
---|---|
JPWO2009087769A1 (ja) | 2011-05-26 |
WO2009087769A1 (ja) | 2009-07-16 |
US8332715B2 (en) | 2012-12-11 |
US20100287429A1 (en) | 2010-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5201151B2 (ja) | テストパターン生成方法、装置及びプログラム | |
US5748497A (en) | System and method for improving fault coverage of an electric circuit | |
US8812922B2 (en) | Speeding up defect diagnosis techniques | |
Beerel et al. | Semi-modularity and testability of speed-independent circuits | |
JP2006518855A (ja) | コンパクタを使用する試験応答の圧縮 | |
JP2003121499A (ja) | 組込みテスト機能付き半導体集積回路、テストコード生成プログラムから成る電子設計データを保存する記憶媒体、該半導体集積回路のテスト方法、テストコード生成自動化方法及びそのプログラム | |
US7228262B2 (en) | Semiconductor integrated circuit verification system | |
Zeng et al. | Scan based speed-path debug for a microprocessor | |
Mehta et al. | Timing-aware multiple-delay-fault diagnosis | |
JP3095066B2 (ja) | レジスタトランスファレベル回路の低コストテスト方法 | |
Pomeranz et al. | Application of homing sequences to synchronous sequential circuit testing | |
Yang et al. | Enhancing silicon debug via periodic monitoring | |
US8468409B2 (en) | Speed-path debug using at-speed scan test patterns | |
Tsertov et al. | IEEE 1687 compliant ecosystem for embedded instrumentation access and in-field health monitoring | |
US7500165B2 (en) | Systems and methods for controlling clock signals during scan testing integrated circuits | |
Stanion et al. | An efficient method for generating exhaustive test sets | |
Ramchandani et al. | Behavioral test generation using mixed integer nonlinear programming | |
US7581150B2 (en) | Methods and computer program products for debugging clock-related scan testing failures of integrated circuits | |
US20040130313A1 (en) | Method for reducing pin overhead in non-scan design for testability | |
WO2024164597A1 (zh) | 用于扫描测试的电路系统、方法、装置、介质和程序产品 | |
Garau | Enhancing programs for delay test of microprocessors through fault propagation analysis | |
US20240210470A1 (en) | Scan chain diagnostic accuracy using high volume manufacturing functional testing | |
WO2024164595A1 (zh) | 用于扫描测试的电路系统、方法、装置、介质和程序产品 | |
US20040098646A1 (en) | Method and apparatus to check the integrity of scan chain connectivity by traversing the test logic of the device | |
Seshadri et al. | Accelerating diagnostic fault simulation using z-diagnosis and concurrent equivalence identification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120612 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120730 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120821 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121016 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121211 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130115 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130128 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20160222 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |