JP4147005B2 - Semiconductor integrated circuit, test method and manufacturing method thereof - Google Patents

Semiconductor integrated circuit, test method and manufacturing method thereof Download PDF

Info

Publication number
JP4147005B2
JP4147005B2 JP2000611314A JP2000611314A JP4147005B2 JP 4147005 B2 JP4147005 B2 JP 4147005B2 JP 2000611314 A JP2000611314 A JP 2000611314A JP 2000611314 A JP2000611314 A JP 2000611314A JP 4147005 B2 JP4147005 B2 JP 4147005B2
Authority
JP
Japan
Prior art keywords
circuit
logic
test
memory
signal
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
Application number
JP2000611314A
Other languages
Japanese (ja)
Inventor
正幸 佐藤
勲 志水
秀明 高橋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Renesas Technology Corp filed Critical Renesas Technology Corp
Application granted granted Critical
Publication of JP4147005B2 publication Critical patent/JP4147005B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318516Test of programmable logic devices [PLDs]
    • G01R31/318519Test of field programmable gate arrays [FPGA]

Description

技術分野
本発明は、半導体集積回路(IC:Integrated Circuit)およびそのテスト技術並びに製造技術に関し、例えば故障を検出し故障個所を回避して論理を構成可能な論理LSI(Large Scale Integration)を提供するものである。
背景技術
ロジックICのテスト方式としては、テスタと呼ばれるテスト装置によりテストパターンデータを発生してICへ入力し、出力されたデータ信号と期待値とを比較して検出する方式が一般的であった。しかしながら、ロジックICはその論理の規模が大きくなるほどテストパターンのステップ数が長大になってしまい、テストパターンの作成およびそれを用いたテスト所要時間が非常に長くなってしまう。
そこで、テスタによるテストを容易にする方法として、ICの本来の機能を構成しているフリップフロップ等の順序回路を縦続接続してシフトレジスタを構成可能に設計しておいて、テスト時に前記シフトレジスタにテストパターンをシリアルに入力(スキャンイン)して取り込ませ(セット)、所望の組合せ論理回路にシフトレジスタに取り込んだテストデータを入力し、その後前記論理回路の出力データ信号をシフトレジスタに取り込んでシフトして外部へ取り出せる(スキャンアウト)ようにしたいわゆるスキャンパス方式と呼ばれるテスト容易化設計技術が開発され実用化されている。
外部からテストパターンを入力する方式では、論理回路が順序回路を含んでいると内部の状態によって出力が異なるので、ある論理回路を検査するにはその中に含まれる順序回路の状態をまずテストパターンで設定しなければならないためテストパターンが非常に長くなってしまうが、フリップフロップをシフトレジスタ構成にしてテストパターンを入力(スキャンイン)することでテストパターンを大幅に減らすことができる。
しかしながら、上記スキャンパス方式は、それまでのテスト方式に比べるとテストパターンの量が少なくなるもののテストパターンの生成が難しく不良検出率を上げにくいとともに、テストパターンをシリアルに入力(転送)することを繰り返し行なうためテスト時間が長くなると不具合もある。また、新たに開発する論理LSIがRAM(ランダム・アクセス・メモリ)、ROM(リード・オンリ・メモリ)のようなメモリ回路やCPU等の大型セル(マクロセルまたはIPコア:Intellectual Property Core)を備える場合、それらのセルについてもテストを行なおうとすると膨大なテストパターンの作成と入力が必要とされるため、事実上テストが行なえないという問題点がある。
一方、論理集積回路内に疑似乱数発生回路のようなランダムなテストパターンを発生するパターン発生回路を内蔵させたBIST(Built in self test)方式のテスト技術が提案されている。
しかしながら、BIST方式のテスト回路は、発生されたテストパターンが不良を検出するのに充分なテストパターンになるか保証されていない。そのため、テスト回路のテストパターンで充分な不良検出率が得られるかどうか別途検証する必要があるという課題があった。
さらに、従来のテスト回路を搭載したLSIはいずれも、そのテスト回路の自身の故障ないしは欠陥については何ら対策が施されていない。つまり、テスト回路そのものが故障した場合にはチップ本来の回路が正常であっても不良判定をしてしまうという欠点がある。そして、その対策としては、テスト回路の規模を最小にして故障や欠陥の発生を抑制するしかないが、このことはテストの充分性すなわち不良検出率の向上という目的と矛盾した結果を招いてしまう。
この発明の目的は、高機能の外部テスタを用いることなくLSI内部の回路のテストを行なうことが可能なテスト技術を提供することにある。
この発明の他の目的は、自分で故障個所を検出しかつ自己救済することができる歩留まりの高いLSIを提供することにある。
この発明の他の目的は、ハードウェアのオーバーヘッドの少ない自己テスト機能を有するLSIを提供することにある。
この発明の他の目的は、不良解析の容易なLSIを提供することにある。
この発明のさらに他の目的は、特に中央処理ユニットのような制御回路やメモリ回路、カスタム論理回路等を1つのチップ上に備えたいわゆるシステムLSIに適用して好適な製造技術を提供することにある。
この発明の前記ならびにそのほかの目的と新規な特徴については、本明細書の記述および添付図面から明らかになるであろう。
発明の開示
本願において開示される発明のうち代表的なものの概要を説明すれば、下記のとおりである。
すなわち、本発明に係る半導体集積回路は、チップ上に複数の基本論理セル(セル論理ブロック)からなり基本論理セルごとに回路が正常か異常かを示す信号を出力可能でかつ任意の論理を構成可能なFPGA(Field Programmable Gate Array)のような可変論理回路を搭載するようにしたものである。これにより、外部テスタを使用することなく可変論理回路(FPGA)内に不良個所があることおよびその位置を知ることができる。また、不良個所を回避して論理を構成することにより歩留まりを向上させるとともに、この可変論理回路(FPGA)を用いてテスト回路を構築して他の内部回路をテストする場合にテスト回路自身の故障による誤ったテスト結果が出力されるのを回避することができる。
回路が正常か異常かを示す信号を出力可能な基本論理セルとしては、例えば相補出力を有する2線ラインロジック(論理積ゲート回路)とその出力を比較して異常の有無を判定する判定手段(排他的論理和ゲート)とからなる回路がある。基本論理セルをこのような構成とすることで、比較的小規模な回路で、回路が正常か異常かを示す信号を出力可能でかつ任意の論理を構成可能な可変論理回路(FPGA)を実現することができる。
また、本発明に係る半導体集積回路のテスト方法は、少なくとも複数の基本論理セル(セル論理ブロック)からなり基本論理セルごとに回路が正常か異常かを示す信号を出力可能でかつ任意の論理を構成可能な可変論理回路(FPGA)と読出し書込み可能なメモリ回路とを内蔵した半導体集積回路において、まず上記可変論理回路(FPGA)により自己テストを行なわせ、その結果得られた不良個所を示す情報を用いて不良個所を除いた基本論理セルのみで所定のアルゴリズムに従って所定のテスト信号および期待値信号を発生してテスト信号を上記メモリ回路に供給し、その結果メモリ回路から得られる出力信号(出力データ)と上記期待値信号(期待値データ)とを比較して一致しない場合に不良を示す信号を形成してチップ外部へ出力させるメモリテスト回路を構築するようにしたものである。
かかるメモリテスト回路は、所定のアルゴリズムに従ってメモリのテストパターンを生成するALPG(Algorithmic Memory Pattern Generator)と呼ばれるテストパターン生成器として構成することができる。さらに、このALPGは、命令コードを解読して演算器等を制御する公知のマイクロプログラム制御方式の制御部と、テストパターンを演算によって生成する演算器とにより構成する。そして、上記のようにFPGA内に構築されたALPGにテストパターン生成プログラムの命令コードを順次供給してテストパターンを発生させ、そのテストパターンを被テスト回路であるメモリ回路に供給して不良の有無を検査することができる。
さらに、上記テストパターン生成プログラムは、既存のテスタ言語乃至はテスト言語を用いて記述され、命令コードによって定義される上記所定のアルゴリズムに従って、テストパターン(アドレスとデータ)が生成される。上記テスタ言語は、アドレスとデータとを含むテストパターンを効率的に発生するための有効な命令言語と見なされる。上記テスタ言語は、テスタ業界で用いられているような言語とされ、たとえば、アドバンテスト社のテスタ言語と互換性のある言語が用いられる。これにより、既存のテストパターンのプログラムデータが利用できるからである。上記所定のアルゴリズムを記述する言語は、テスタ言語に限定されるものではなく、アドレスとデータとを含むテストパターンを発生することが可能な命令言語で有ればよい。
本発明に係る半導体集積回路の他のテスト方法は、半導体集積回路がメモリ回路と共にCPU(中央処理ユニット)やユーザが要求する論理機能を構成したユーザ論理回路のようなカスタム論理回路を含むような場合に、上記FPGAに所定のアルゴリズムに従ってCPUやカスタム論理回路のテスト信号および期待値信号を生成してテストを行なうテスト回路(ロジックテスタ)を構築するとともに、既に前記テストにより正常と判定されたメモリ回路を使用して、そのメモリ回路にテストパターンもしくはテストパターン生成プログラムを格納し、FPGAに構築されたテスト回路を起動してメモリ回路からテストパターンもしくはテストパターン生成プログラムを読み出しながらCPUやカスタム論理回路のテストを行なうものである。
これによって、高機能の外部テスタを用いることなくLSI内部の論理回路のテストを行なうことができる。
所定のアルゴリズムに従ってCPUやカスタム論理回路のテスト信号および期待値信号を生成してテストを行なうテスト回路は、命令コードを解読して制御信号を形成するマイクロ命令方式の制御部と、該制御部から出力される制御信号に基づいてCPUやカスタム論理回路のテスト信号および期待値信号を生成するとともにCPUやカスタム論理回路から出力される信号と期待値信号とを比較して一致しない場合に不良を示す信号を形成する信号形成・比較手段をFPGA内に構築することで実現される。この場合、基準クロック信号に基づいて互いに位相やデューティの異なる複数のクロック信号を形成するタイミング発生回路をFPGA内に構築して、上記制御部からの制御信号に従って各テスト信号ごとにタイミングを設定できるようにするとよい。
このように、テスト回路は、所定のアルゴリズムに従ってCPUやカスタム論理回路のテスト信号および期待値信号を生成するための制御信号を形成するマイクロプログラム制御方式の制御部と、該制御部から出力される制御信号に基づいた内部論理回路のテスト信号および期待値信号を生成するとともに内部論理回路から出力される信号と期待値信号とを比較して一致しない場合に不良を示す信号を形成する信号形成・比較手段とにより構成されるため、テストパターンをすべて内部のメモリに記憶する必要がないとともに、制御部の構成によって命令コード自身のデータ圧縮が可能となり、FPGA内に充分に構築することができる規模のものである。
発明を実施するための最良の形態
以下、本発明の好適な実施例を図面に基づいて説明する。
図1は、本発明を適用したシステムLSIの一実施例のブロック図で、公知の半導体集積回路の製造技術により単結晶シリコンのような1個の半導体チップ100上に構成される。
図1の符号110〜180は上記半導体チップ100上に構成された内部回路、190はこれらの内部回路と外部装置との間の信号の入出力を行なうインタフェース回路、200は上記内部回路110〜180相互間およびインタフェース回路190との間を接続する内部バスである。上記内部回路110〜180のうち、110および120はユーザが要求する論理機能を構成するユーザ論理回路のようなカスタム論理回路で、このうち120はユーザが任意に論理を構成可能なFPGAにより構成されている。このカスタム論理回路は、ユーザ論理を構成せずそのまま残しておくようにしてもよい。
また、130はプログラムの命令を解読して対応する処理や演算を実行するCPU(中央処理ユニット)、140はスタティックRAM(ランダム・アクセス・メモリ)、150〜180はダイナミックRAMである。さらに、この実施例のシステムLSIには、特に制限されるものでないが、内部回路のテスト時に外部のテスタ500との間の信号の入出力を行なうため、IEEE1149.1規格で規定されているTAP(Test Access Port)210がインタフェース回路として設けられている。テスタ500は、従来の論理LSIやメモリのテスタのような高機能のものでなくデータの書き込みと読み出しおよび簡単なデータ処理が行なえるものでよく、パーソナルコンピュータを用いることも可能である。
上記CPU130は、狭義のCPUの他に、プログラムROM、ワーキングRAM、シリアルコミュニケーションインタフェースやタイマー回路,デジタル・アナログ変換回路などのいわゆるマイコン周辺回路を含んでマイクロプロセッサとして構成されていてもよい。
上記スタティックRAM140およびダイナミックRAM150〜180は、内部バス200を介してアドレス信号が与えられたときに対応するメモリセルを選択するアドレスデコーダ等のメモリ周辺回路を含む。さらに、ダイナミックRAM150〜180は、非アクセス時間が長くなってもメモリセルの情報電荷が失われないように周期的に疑似選択するリフレッシュ制御回路を含む。また、特に制限されるものでないが、この実施例では、ダイナミックRAM150〜180には、メモリアレイ内に欠陥ビットがあった場合にその欠陥ビットを含むメモリ行もしくはメモリ列を予備のメモリ行もしくは予備のメモリ列と置きかえるいわゆる冗長回路がそれぞれ設けられている。
図2には、図1に示されている内部回路110〜180のうち、カスタム論理回路120を構成するFPGAの具体例を示す。
この実施例のFPGAは、マトリックス状に配置された複数個のセル論理ブロックCLBと、各セル論理ブロックCLB間に設けられてセル間を接続するための配線群121,122と、外部から配線間接続の状態を変更することが可能なクロスポイントスイッチCSWとにより構成されている。上記クロスポイントスイッチCSWは、図3に示すように、例えば横方向の配線Lxと縦方向の配線Lyにそれぞれソート,ドレインが接続されたスイッチMOSFET Qswと、このスイッチMOSFET Qswのゲートに印加される制御情報を記憶する配線接続情報記憶用メモリセルSMCとから構成されている。上記配線群121および122は、多層配線技術を利用してそれぞれ異なる配線層によって互いに絶縁された状態で形成するのが望ましい。図2には、各セル論理ブロック間にそれぞれ2本ずつ配線が示されているが、実際にはより多くの配線が形成される。配線の数はセル論理ブロックの数に比例して増加される。
特に制限されるものではないが、このFPGAブロックの周辺には、上記配線接続情報記憶用メモリセルSMCを選択してデータを書き込むためのXデコーダ回路やYデコーダ回路、書込み回路等を設けるようにしてもよい。また、上記配線接続情報記憶用メモリセルSMCは、スイッチMOSFET Qswと1対1で設ける代わりに、FPGAブロックの周辺にSRAMメモリアレイとして設けることも可能である。
セル論理ブロックCLBは、例えば図4(a)に示すように、AND論理とNAND論理のような相補出力を有する論理積ゲート回路(2線ラインロジック)LG1と、その相補出力を入力とする排他的論理和ゲート回路(比較手段)LG2とから構成することができる。このゲート回路LG2は、2つの入力信号が同一の論理レベルのときにロウレベルの出力信号を、また2つの入力信号の論理レベルが異なるときにハイレベルの出力信号を出力するので、論理積ゲート回路LG1に欠陥があって相補出力となるべきところが同相出力となると、ゲート回路LG2の出力はロウレベルとなりゲート回路LG1に欠陥があることを知らせる。
このゲート回路LG2の出力信号は、そのままFPGAブロックの外部へ出力させるようにしてもよいが、この実施例では、図3に示されているクロスポイントスイッチCSWを構成する配線接続情報記憶用メモリセルSMCのノードN2に入力させて記憶できるように構成されている。
従って、各セル論理ブロックCLBに電源電圧を与えてそのときのゲート回路LG2の出力状態を配線接続情報記憶用メモリセルSMCに記憶させてから、配線接続情報記憶用メモリセルSMCの記憶情報を外部へ読み出すことにより、セル論理ブロックCLBが正常に動作するか否かを知ることができる。また、各配線接続情報記憶用メモリセルSMCへチップ外部から順次データを書き込んで読み出すことでメモリセルが故障しているか否かも検出することができる。さらに、配線接続情報記憶用メモリセルSMCにデータを書き込んで所望のスイッチMOSFET Qswをオンさせて配線群121,122を使用して外部より信号を入力しチェックすることで、スイッチMOSFET Qswが故障しているか否かも検出することができる。
なお、ゲート回路LG2の出力状態が入力される配線接続情報記憶用メモリセルSMCを構成するMOSFET Q1のゲート構造あるいはメモリセル回路を工夫することにより、ゲート回路LG2の出力がロウレベルのときは外部からのデータ入力によってMOSFET Q1が反転すなわちオフしないように構成してもよい。これによって、セル論理ブロックCLBに故障があるか否かを効率良く検出することができる。
かかる機能を実現する具体的方法としては、メモリセルSMCを構成するMOSFET Q1を、例えば図4(b)に示すように、コントロールゲートとフローティングゲートを有する構造とし、ゲート回路LG2の出力(ロウレベル)をインバータINVで反転してMOSFET Q1のコントロールゲートCGに高レベルの電圧Vpを印加してフローティングゲートFGに電荷を注入させ、外部からのデータ入力によってはメモリセルの状態が変化しないようにする方法が考えられる。
また、図4(a)に示すAND論理とNAND論理のような相補出力を有する論理積ゲート回路LG1としては例えば図4(c)のような回路が考えられる。すなわち、論理積ゲート回路LG1は、電源電圧端子Vccと接地点との間に直列形態に接続されたMOSFET Q11〜Q13からなる第1MOSFET列と、直列形態のMOSFET Q21〜Q23からなる第2MOSFET列とからなり、Q12とQ21のゲートに第1の入力信号Xが供給されることにより、第2MOSFET列の出力ノードN12から入力信号X,Yの論理積出力Z(=X・Y)が、また第1MOSFET列の出力ノードN11から入力信号X,Yの論理積出力Zの反転出力/Z(=/X・Y)を出力するように動作する。なお、図に示されているMOSFET Q11およびQ23は、それぞれゲートとドレインが結合もしくはゲートに所定の電位が印加されることにより負荷として作用する。
図5(a)に上記セル論理ブロックCLBの他の構成例を示す。
この実施例のセル論理ブロックCLBは、BIST(Built in self test)内蔵型の論理ブロックであり、2つの入力信号X,Yをそれぞれラッチして各々正相と逆相の信号X,/X;Y,/Yを出力するフリップフロップFF1,FF2と、これら4つの出力信号を入力信号とし論理和や論理積、排他的論理和等複数の論理動作が可能な論理ユニットALUと、この論理ユニットの出力Zをラッチして正相と逆相の信号Z,/Zを出力するフリップフロップFF3と、上記論理ユニットの論理動作を指定する制御情報を記憶する読出し書き込み可能なメモリMEMと、テストパターンを乱数の形で発生する公知のLFSR(Linear Feedback Shift Register)と、コンパレータCMP等より構成されている。
上記論理ユニット制御情報を記憶するメモリMEMは外部から制御情報を書き込めるように構成されている。上記LFSRにはスイッチMOSFET G1〜G7を介して入力信号X,Yと論理ユニット制御情報およびFF3の出力信号Z,/Zの伝送信号線と接続可能に構成されて、クロックCLKに同期して動作する。
この実施例のセル論理ブロックCLBを自己検査動作させる場合、上記スイッチMOSFET G1〜G7のゲートに制御信号CHKを入力してオンさせる。すると、LFSRによりランダムなパターンが形成されてフリップフロップFF1,FF2および論理ユニットALUに供給されるとともに、発生されたパターンとフリップフロップFF3の出力とが論理合成、圧縮されてシグネチャ・パターンとしてコンパレータCMPに出力される。
コンパレータCMPは、例えば図5(b)に示されているように、期待シグネチャ・パターンが格納されたリード・オンリ・メモリROM、イクスクルーシブORゲートEOR、出力ラッチOLT、クロックCLKよりラッチタイミング信号を発生するタイミング発生回路TMG等から構成されている。LFSRよりシグネチャ・パターンが入力されると、コンパレータCMPはイクスクルーシブORゲートEORによってリード・オンリ・メモリROMに格納されている期待シグネチャ・パターンとLFSRの出力パターンとを比較して一致しているとロウレベルの信号を、また一致していないとハイレベルの信号を出力する。この出力がラッチOLTにラッチされて良/不良を示す信号ERRとして出力される。
なお、LFSRの動作原理は既に公知であり、種々の文献等に記載されているので詳しい説明は省略するが、その原理に従い被検査論理回路に合った最適化が可能である。LFSRを適用したBISTを内蔵した一般の論理LSIでは、論理回路毎にLFSRの最適化が必要であったため設計上煩わしさがあったが、本実施例のFPGAでは同一のセル論理ブロックCLBを使用しているので、その最適化は一律に行なうことができ、設計負担が軽減される。また、BISTを内蔵した従来のLSIは、1つのBISTがLSI内部回路全てを検査するグローバルなBISTであっため、生成されるテストパターンではテスト充分性が保証されないが、本実施例のBISTは各セル論理ブロックCLB内に設けられたローカルなBISTであるため、テスト充分性も保証される。
図6は、図1に示されているTAPを用いたインタフェース回路210の具体例を示す。
TAPは前述したように、IEEE1149.1規格で規定されているスキャンテストやBIST回路のためのインタフェースおよび制御回路で、入力ポートからのテストデータを出力ポートへシフトするときに使用するバイパスレジスタ211、回路へ特定の信号を伝える場合に使用するデータレジスタ212、チップ固有の製造識別番号を設定するためのデバイスIDレジスタ213、データレジスタの選択や内部のテスト方法を制御する場合に使用するインストラクションレジスタ214、TAP回路全体を制御するコントローラ215等により構成されている。
上記データレジスタ212はオプション扱いのレジスタである。また、インストラクションレジスタ214に設定される命令には、4つの必須命令と3つのオプション命令が用意されている。コントローラ215には、専用の3つの外部端子から、テストモードを指定するためのテストモードセレクト信号TMS、テストクロックTCK、リセット信号TRSTが入力されており、これらの信号に基づいて上記レジスタ211〜214やセレクタ回路216〜218に対する制御信号を形成する。
また、TAPにはテストデータTDIの入力端子とテスト結果データTDOの出力端子が設けられており、入力されたテストデータTDIは上記セレクタ回路216を介して各レジスタ211〜214または内部のスキャンパスIscan,Bscanへ供給される。また、レジスタ211〜214の内容および内部回路からのスキャンアウトデータは、セレクタ回路217、218を介してチップ外部へ出力される。さらに、TAPには、データレジスタ212とインストラクションレジスタ214の内容に従って内部のBIST回路に対する信号が形成されて供給されると共に、BIST回路から出力されたテスト結果を示す信号がセレクタ回路217、218を介してチップ外部へ出力可能に構成されている。
図1の実施例のシステムLSIでは、後に詳細に説明されるようにカスタム論理回路(FPGA)120やCPU130上に構築される自己テスト回路をBIST回路とみなして、上記TAPの有するBIST回路用の信号入出力機能を利用して、カスタム論理回路(FPGA)120やCPU130に対する自己テストのための設定信号やデータを入力したり、テスト結果およびFPGA120内のメモリセルやSRAM140に記憶されているデータを出力したりするように構成されている。TAPの有するスキャンテストのための機能は、図1の実施例のシステムLSIでは使用されない。
なお、図6において、“Iscan”は内部論理回路を構成するフリップフロップをチェーン状に結合したシフトレジスタをテストデータのスキャンパスとして使用して、内部論理回路の診断を行なうためのテストパスを意味する。また、“Bscan”は信号入出力部(図1のインタフェース回路190)内に設けられているフリップフロップをチェーン状に結合したシフトレジスタをスキャンパスとして使用して、他の半導体集積回路との間の接続状態の診断(バウンダリスキャンテスト)を行なうためのテストパスを意味する。
次に、図1に示されているシステムLSIに本発明に係るテスト方法を適用した場合のテスト手順の一例を、図7〜図11を用いて説明する。図7には、LSI全体のテスト手順の概略が、また図8〜図11にはLSIを構成する各ブロックのテスト手順の具体例が示されている。
本発明に係るテスト方法に従うと、図7に示されているように、先ずFPGA120が前述したセル論理ブロックの機能を利用して検査され、不良の有無が判定されて不良があるときは不良個所の回避が行なわれる(ステップS1〜S3)。次に、FPGA120内の上記不良個所を除いた部分にSRAM140をテストするためのテスト回路(ALPG)が構築され、SRAM140のテストが実行される(ステップS4,S5)。
SRAM140に不良個所が発見されなかった場合には、FPGA120内の上記不良個所を除いた部分にカスタム論理回路110およびCPU130をテストするためのテスト回路(ロジックテスタ)が構築され、カスタム論理回路110およびCPU130のテストが実行される(ステップS6〜S8)。このとき、既に検査が終了しているSRAMを利用してテストパターンもしくはテストパターン生成プログラムが格納される。
不良が発見されなかった場合には、FPGA120内の上記不良個所を除いた部分にDRAM150〜180をテストするためのテスト回路(ALPG)が構築され、DRAM150〜180のテストが順次実行される(ステップS9,S10)。そして、不良個所が発見された場合には、それがSRAM140あるいは外部の記憶装置に記憶されてから、DRAM150〜180に設けられている冗長回路を利用して不良ビットを救済するための救済プログラムがCPU130に読み込まれ、CPU130によってそのプログラムが実行されてビット救済が行なわれる(ステップS11,S12)。
その後、FPGA120内の上記不良個所を除いた部分にユーザ論理等のカスタム論理の一部が構成されて、システムLSIとして完成される(ステップS13)。このステップS13では、先ずTAP210をFPGA120内の接続情報記憶用メモリセルSMCのアクセスモードに設定してから、ステップS1で得られている不良個所を示す情報を利用してその不良個所を回避するようにユーザ論理を構成するデータをFPGA120内の正常なクロスポイントスイッチのメモリセルSMCに書き込むことによって所望の論理を構成する。
図8には、図7のフローチャートのステップS1〜S3におけるカスタム論理回路(FPGA)120の自己検証のより詳しい手順が示されている。
本実施例のデバイス(システムLSI)に電源電圧が投入されると、FPGA120を構成するセル論理ブロックCLBの論理ゲート回路LG1,LG2が能動化され、欠陥がある場合には論理ゲート回路LG1の出力がロウレベルになってその出力状態が接続情報記憶用メモリセルSMCに記憶される(ステップS111)。
次に、テスタ500を用いてテスト用インタフェース回路としてのTAP210にテストモードセレクト信号TMSやインストラクションレジスタ214に設定するコードを入力して、TAP210を、FPGA120内の接続情報記憶用メモリセルSMCのアクセスモードに設定する(ステップS112)。続いて、メモリセルSMCに対して正常を示すデータ(上記セル論理ブロックCLBの自己検証による欠陥状態を示す論理レベルと逆の論理レベル)を書き込む(ステップS113)。次に、上記メモリセルSMCのデータの読み出しを行なう(ステップS114)。
そして、読み出されたデータと書込みデータとを比較することでいずれのセル論理ブロックCLBに欠陥があるか判定する(ステップS115)。また、例えば上記書込みデータと逆のデータを書き込んで読み出すことによってメモリセルSMC自身に欠陥のあるクロスポイントスイッチCSWも検出することができる。
次に、テスタ500において、上記判定結果に基づいて正常なクロスポイントスイッチCSWおよびセル論理ブロックCLBのマップを作成する(ステップS116)。作成したマップすなわちクロスポイントスイッチCSWおよびセル論理ブロックCLBの正常/異常を示す情報は、テスタ500内の記憶装置等に格納しておく。それから、FPGA120上に構築するSRAMテスタ(ALPG)のHDL記述をデータベース等から読み出してテスタ500で論理合成等を行ない、上記マップに基づいて欠陥のあるクロスポイントスイッチCSWおよびセル論理ブロックCLBを回避してALPG(Algorithmic Memory Pattern Generator)を構築するデータを生成する(ステップS117)。そして、生成したデータをテスタ500内の記憶装置等に格納する(ステップS118)。このデータは、正常なクロスポイントスイッチCSWのスイッチMOSFET Qswを、構成したい論理に応じて選択的にオンさせるデータである。
図9には、図7のフローチャートのステップS4〜S5におけるSRAM部140の検査のより詳細な手順が示されている。
SRAM部140の検査では、先ずテスタ500からTAP210に制御信号を供給してFPGA120内のクロスポイントスイッチ制御情報を記憶するためのメモリセルSMCを選択状態にする(ステップS121)。それから、選択状態のメモリセルSMCに上記ステップS118で記憶装置に記憶されたALPGを構築するデータを転送する(ステップS122)。これによって、FPGA120内にSRAMを検査するためのテストパターンを発生可能なALPGを含むテスト回路が構築される。FPGA120内に構築されるALPGの構造およびALPGを構築する具体的な方法については、後に詳しく説明する。
次に、ALPGを動作させてテストパターンを発生させるためのプログラムをテスタ500によりTAP210を介してFPGA120内のメモリ回路に書き込む(ステップS123)。このメモリ回路は、ステップS122でのALPGの構築の際に、FPGA120を構成するセル論理ブロックCLBとクロスポイントスイッチCSWとによって構成されている。
続いて、テスタ500からTAP210に制御信号を供給してSRAM部140を選択状態にする(ステップS124)。そして、上記FPGA120内のALPGに起動をかけ、ステップS123で書き込んだテストパターン生成プログラムを実行させてテストパターンを発生させ、発生されたテストパターンをバス200等を介して選択状態のSRAM部140に供給してテストを行ない、そのテスト結果をTAP210を介して外部(テスタ500)へ出力する(ステップS125,S126)。
すると、テスタ500は出力されたテスト結果からSRAM部140内に不良があるか否かを判定し良品と不良品を選別する(ステップS127)。なお、FPGA120内に構築されたALPGにより形成された書込みデータを期待値として外部へ出力させるとともに、SRAMから読み出されたデータも外部へ出力させることで、外部のテスタで期待値と読み出しデータとを比較して不良の有無の判定を行なうように構成することも可能である。また、テストパターン生成プログラムをFPGA内に構成したメモリ回路に記憶される代わりに、外部からTAPを介して順次テストパターン生成プログラムを構成する命令コードを入力させるようにしてもよい。
図10には、図7のフローチャートのステップS6〜S8におけるロジック部すなわちカスタム論理部110およびCPU部130の検査のより詳細な手順が示されている。
論理部110および130の検査では、先ずテスタ500において、FPGA120内にロジックテスタを構築するためのデータを作成する(ステップS131)。このとき、図8のFPGA自己検証フローのステップS116で生成された正常なセル論理ブロックCLBとクロスポイントスイッチCSWのマップを用いて故障のある回路を回避してロジックテスタを構築するようなデータが作成される。
次に、テスタ500からTAP210に制御信号を供給してFPGA120内のクロスポイントスイッチ制御情報を記憶するメモリセルSMCを選択状態にする(ステップS132)。それから、選択状態のメモリセルSMCに上記ステップS131で記憶装置に記憶されたロジックテスタを構築するデータを転送する(ステップS133)。これによって、FPGA120内に論理部を検査するためのテストパターンを発生可能なテスト回路が構築される。このとき、FPGA内にプログラムメモリを構成し構成されたメモリにロジックテスタを動作させるためのプログラムも転送しておくようにしてもよい。FPGA120内に構築されるロジックテスタの構造およびロジックテスタを構築する具体的な手順については、後に詳しく説明する。
次に、テスタ500からTAP210に制御信号を供給して、図9のフローの検査が終了したSRAM部140を選択する(ステップS134)。そして、予めテスタ500内に用意されているカスタム論理部110を検査するためのテストパターンを発生するプログラムをテスタ500によりTAP210を介してSRAM140内に書き込む(ステップS135)。SRAMのテストパターンを生成するプログラムのように、FPGA内のメモリ回路に格納せずに検査が終了したSRMA内に格納するのは、一般にメモリのテストパターンよりも論理回路のテストパターンの方が長くより大きなメモリ領域を必要とするためである。
続いて、上記FPGA120内のロジックテスタに起動をかけ、ステップS135でSRAM140に書き込んだテストパターン生成プログラムを読み出してテストパターンを生成しながらカスタム論理部110に供給する(ステップS136)。そして、カスタム論理部110からの出力信号を期待値と比較してテスト結果をTAP210を介して外部(テスタ500)へ出力する(ステップS137)。
すると、テスタ500は出力されたテスト結果からカスタム論理部140内に不良があるか否かを判定し良品と不良品を選別する(ステップS138)。
次に、予めテスタ500内に用意されているCPU130を検査するためのテストパターン生成プログラムをSRAM140へ転送する(ステップS139)。続いて、上記FPGA120内のロジックテスタに起動をかけ、ステップS135でSRAM140に書き込んだテストパターン生成プログラムを読み出してテストパターンを生成しながらCPU130に供給する(ステップS140)。そして、CPU130からの出力信号を期待値と比較してテスト結果をTAP210を介して外部(テスタ500)へ出力する(ステップS141)。
すると、テスタ500は出力されたテスト結果からCPU130内に不良があるか否かを判定し良品と不良品を選別する(ステップS142)。
図11には、図7のフローチャートのステップS9〜S12におけるDRAM部150〜180の検査のより詳細な手順が示されている。
DRAM部150〜180の検査では、先ずテスタ500において、FPGA120内にDRAMを検査するためのテストパターンを発生可能なALPG(Algorithmic Memory Pattern Generator)を構築するためのデータを作成する(ステップS151)。このとき、図8のFPGA自己検証フローのステップS116で生成された正常なセル論理ブロックCLBとクロスポイントスイッチCSWのマップを用いて故障のある回路を回避してALPGを構築するようなデータが作成される。なお、DRAMを検査するALPGはSRAMを検査するALPGとほぼ同様であり、リフレッシュ動作の正常/異常を判定する処理が追加されている点が異なる。
次に、テスタ500からTAP210に制御信号を供給してFPGA120内のクロスポイントスイッチ制御情報を記憶するメモリセルSMCを選択状態にする(ステップS152)。それから、選択状態のメモリセルSMCに上記ステップS151で作成されたALPGを構築するデータを転送する(ステップS153)。これによって、FPGA120内にDRAMを検査するためのALPGを含むテスト回路が構築される。FPGA120内に構築されるALPGの構造およびALPGを構築する具体的な方法は、後に詳しく説明されるSRAMを検査するためのALPGとほぼ同様である。
次に、ALPGを動作させてテストパターンを発生させるためのプログラムをテスタ500によりTAP210を介してFPGA120内のメモリ回路に書き込む(ステップS154)。このメモリ回路は、ステップS153でのALPGの構築の際に、FPGA120を構成するセル論理ブロックCLBとクロスポイントスイッチCSWとによって構成されている。なお、テストパターン生成プログラムは、SRAM140内に記憶してもよいし、DRAM検査の際に外部から順次命令コードをFPGA内のALPGに入力するようにしてもよい。
続いて、テスタ500からTAP210に制御信号を供給してSRAM部140を選択状態にして(ステップS155)、SRAM内に後述のDRAMテスト(ステップS159)で検出される欠陥ビットの位置を記憶するためのフェールメモリを構成する(ステップS156)。次に、テスタ500からTAP210に制御信号を供給してCPU部130を選択状態にして(ステップS157)、DRAMの欠陥ビットを救済するための救済プログラムをCPU130内のメモリに転送する(ステップS158)。この救済プログラムはSRAM140内に入れておくようにしてもよい。
この救済プログラムは、所定の置換アルゴリズムに従って、上記DRAM150に付随して設けけられている冗長回路内のアドレス変換回路に置換アドレスを設定し、欠陥ビットを含むメモリ行またはメモリ列を予備行または予備列に置きかえるものである。テスト結果に基づいて、最も適切な予備メモリ行または予備メモリ列を選択して、欠陥ビットと置き換える冗長置換アルゴリズムそれ自身は公知であり、それを使用することで、本実施例のために新規な置換アルゴリズムを必要としない。
それから、テスタ500によりTAP210に制御信号を供給してDRAM150を選択状態にしてから上記FPGA120内のALPGに起動をかけ、ステップS154で書き込んだテストパターン生成プログラムを実行させてテストパターンを発生させ、発生されたテストパターンを選択状態のDRAM部150に供給してテストを行ない、その結果すなわち欠陥ビットの位置をSRAM140に構成されたフェールメモリに記憶させる(ステップS159)。なお、ステップS159でのDRAMテストでは、SRAMテストと同様のリード/ライトテストの他に、正常なリフレッシュ動作が行なわれるか否かのテストも行なわれる。
次に、CPU130に起動をかけて救済プログラムを実行させ、上記フェールメモリ(SRAM140)に記憶された欠陥ビットの情報に基づいて欠陥ビットを含むメモリ行またはメモリ列を予備行または予備列に置きかえるビット救済処理を行なう(ステップS160)。その後、正常に救済が行なわれたか否かのテストが救済プログラムの一連の動作として行なわれる(ステップS161)。そして、そのテスト結果がチップ外部のテスタ500に出力される。
すると、テスタ500は出力されたテスト結果からDRAM部150内に不良があるか否かを判定し良品と不良品を選別する(ステップS162)。DRAM部150のテストおよびビット救済が終了すると、再びステップS159へ戻って他のDRAM部160、170および180についても同様にしてテストおよびビット救済とテスト結果の判定が行なわれる。
次に、前記SRAM140の検査の際にFPGA120内に構築されるALPGの詳細について説明する。ALPGは、例えば図12に示されているように、所定のテストパターン生成アルゴリズムに従って記述された複数のマイクロ命令群からなるマイクロプログラムが格納される命令メモリ411と、該命令メモリ411から読み出されるべきマイクロ命令の命令アドレスを指定するプログラムカウンタ412と、上記命令メモリ411から読み出されたマイクロ命令内の命令コードを解読してメモリ回路部に対する制御信号やプログラムカウンタ412等テスト回路内の内部回路に対する制御信号を形成するシーケンス制御回路413と、命令メモリ411より読み出されたマイクロ命令に従ってテストアドレスを生成するアドレス演算回路414と、読み出されたマイクロ命令に従ってテストデータおよび期待値データを生成するテストデータ生成回路415と、上記テストアドレスによってSRAM部140から読み出されたデータと上記テストデータ生成回路415により生成された期待値データとを比較し、正常な書込みがなされた否か判定する比較判定回路416等により構成されている。
上記比較判定回路416における判定結果は、データの一致/不一致を示す判定信号FとしてTAP210を介してチップの外部へ出力されるように構成されている。テストパターン生成アルゴリズム自体は公知であり、それらを適用することで、特に本実施例のために新規なアルゴリズムを必要としない。
上記命令メモリ411に格納される複数のマイクロ命令は、既存のテスタ言語乃至はテスト言語を用いて記述することができる。上記複数の命令によって定義される上記所定のアルゴリズムに従って、テストパターン(アドレスとデータ)が生成される。上記テスタ言語は、アドレスとデータとを含むテストパターンを効率的に発生するための有効な命令言語と見なされる。上記テスタ言語は、テスタ業界で用いられているような言語とされ、例えば、アドバンテスト社のテスタ言語と互換性のある言語が用いられる。既存のテストパターンのプログラムデータが利用できるからである。上記所定のアルゴリズムを記述する言語は、テスタ言語に限定されるものではなく、アドレスとデータとを含むテストパターンを発生することが可能な命令言語で有ればよい。
上記命令メモリ411がSRAMメモリセルによって構成される場合には、テストの実施に先立って、上記命令メモリにプログラムをロードする必要がある。FPGA120が不揮発性メモリを含む場合には、この不揮発性メモリの一部のアドレス領域に上記プログラムを格納しておき、SRAMテストモードへの移行に応答して、上記プログラムを格納するアドレス領域から上記命令メモリ411へ上記プログラムをロードするのがよい。命令メモリ411を設ける代わりに連続した命令コードを外部のテスタから順次FPGA120内に構築されているALPGのシーケンス制御部414に入力してSRMAのテストパターンを発生させるように構成してもよい。
なお、本実施例が適用される図1のシステムLSIのようにメモリの他にCPU130やカスタム論理回路110を備えている場合には、図13に示すように、メモリ回路140(150〜180)とCPU130及びカスタム論理回路110と、テスト回路が構築されるFPGA120との間に専用バス220および切替えスイッチSW1〜SWnからなる信号切替え回路230を設けた可変バス構成としてもよい。
上記信号切替え回路230内の切替えスイッチSW1〜SWnを制御する信号CSは、メモリ回路のテストの際には、ALPGにおいて命令によって発生させ、それをスイッチSW1〜SWnへ与えるようにしてもよい。また、外部から供給されるテストモード指定信号に基づいて切替え制御信号CSを形成するように構成してもよい。
また、上記切替えスイッチSW1〜SWnは、メモリ回路140とCPU130及びカスタム論理回路110との間、またはメモリ回路140とALPGが構築されたFPGA120との間の接続切り替えのみならず、CPU130及びカスタム論理回路110とFPGA120との間を接続できるように構成するのがよい。
図14には、上記命令メモリ411に格納されるマイクロ命令の命令フォーマットの構成例が示されている。前述のように、このマイクロ命令のフォーマットは、テスタ言語に基づいている。
この実施例のマイクロ命令は、ジャンプ命令で使用する命令の飛び先番地を示すPCアドレスが格納されるアドレスフィールドMFaと、シーケンス制御コードが格納されるオペコードフィールドMFbと、命令の繰り返し数などが格納されるオペランドフィールドMFcと、アドレスやデータの出力およびリード/ライトを指示する制御コードが格納される制御フィールドMFdと、アドレス演算命令コードが格納されるアドレス演算コードフィールドMFeと、データ生成命令コードが格納されるデータ生成コードフィールドMFf等からなる。アドレスフィールドMFaは、次に実行されるべき命令のアドレスを規定するフィールドと見なされる。
この実施例に使用されるテスタ言語としてのマイクロ命令の特徴は、1つの命令でテスト用のアドレス演算とデータ演算とを指定して2つの演算を並列に実行する点にある。
図15には、シーケンス制御回路413の構成例が示されている。この実施例のシーケンス制御回路413は、オペコードフィールドMFbの制御コードを解読して制御信号を形成するデコーダなどからなる命令解読制御部430と、プログラムカウンタ412の値を「+1」するためのインクリメンタ431と、上記インクリメンタ431またはアドレスフィールドMFa内の飛び先番地のいずれかを選択してプログラムカウンタ412へ供給するマルチプレクサ432と、オペランドフィールドMFc内の繰り返し数を保持する複数のインデックスレジスタ433と、該インデックスレジスタ433の値を「−1」するためのデクリメンタ434と、「−1」された値を保持する複数のプレーンあるいはウェイから構成されるワーキングレジスタ435と、後述のjxd命令(表1参照)で用いるデータ反転の有無を示すフラグ436と、jindex命令で用いるオペランドのプログラムカウンタ412への転送の有無を示す複数のフラグ437と、レジスタ433,435の値を選択的に上記デクリメンタ434に供給する複数のマルチプレクサ438と、デクリメンタ434の値をワーキングレジスタ435のいずれかのプレーンに分配するデマルチプレクサ439から構成される。
表1には、上記マイクロ命令内のオペコードフィールドMFbに定義乃至記述格納されるところの上記シーケンス制御に用いられるオペコードの種類とその内容が示されている。
【表1】

Figure 0004147005
表1において、「nop」で示される命令は、プログラムカウンタ412の値をインクリメンタ431で「+1」してプログラムカウンタ412へ戻すことを指示するノーオペレーション命令つまりプログラムカウンタの更新以外に何の操作を行なわずに次の命令に移ることを指令する命令である。
また、「jindex1」〜「jindex4」は、ジャンプによる命令のループを回すために用意された命令である。メモリのパターンテストにおいては、ジャンプ命令を用いて同じ命令を何回も繰り返して実行することで命令数、すなわち、プログラム長を減らすことができる場合(例えば、アドレスを最終番地までインクリメントすることで、全メモリセルに「1」を書き込んで読み出すような場合)がある。このループ(ジャンプ)の回数を設定できるようにするために、本実施例では、インデックスレジスタ433を設けている。しかも、複数種類の判定方式を実行できるようにするため、ジャンプ命令とインデックスレジスタ433およびワーキングレジスタ435をそれぞれ4つずつ設けている。
各ジャンプ命令は同じ制御内容であるので、以下「jindex1」による制御動作を説明し、他のジャンプ命令「jindex2」〜「jindex4」の説明は省略される。オペコードフィールドMFbからjindex1命令が読み出されると、それが最初のjindex1命令であるか判定されて、その判定結果がフラグ437に反映される。具体的には、最初のjindex1のときはフラグjf1=0とされ、2回目以降はjf1=1とされる。
フラグjf1=0のときにjindex1命令が読み出されると、そのマイクロ命令のアドレスフィールドMFa内のジャンプ先アドレスとしてのPCアドレスがプログラムカウンタ412へ設定されるように、マルチプレクサ432が制御される。それによって、マイクロ命令の実行シーケンスはその番地にジャンプされるとともに、フラグjf1は「1」にセットされる。これと同時に、オペランドフィールドMFc内で定義されるループ回数がインデックスレジスタ433のidxに読み込まれる。
フラグjf1=1のときにjindex1命令が読み出されると、そのマイクロ命令のアドレスフィールドMFa内のPCアドレスがプログラムカウンタ412へ設定される。そして、インデックスレジスタ433のidx1内のループ回数がマルチプレクサ438を介してデクリメンタ434に供給されデクリメント「−1」される。デクリメントされた値は、デマルチプレクサ439を介してワーキングレジスタ435のidxw1に格納される。そして、ワーキングレジスタ435のidxw1が「0」になると、マイクロ命令のアドレスフィールドMFa内のPCアドレスをプログラムカウンタ412へ設定しないで代わりに、プログラムカウンタ412のアドレスをインクリメンタ431で「+1」してプログラムカウンタ412へ戻すようにマルチプレクサ432が制御される。
従って、マイクロ命令のオペコードフィルードMFbにjindex命令が定義乃至記述され、そのアドレスフィールドMFa内に当該マイクロ命令のジャンプ先アドレスとしてのPCアドレスが定義乃至記述されていると、オペランドフィールドMFc内で指定されたループ回数だけ同一のjindex命令が繰り返し実行され、最後にプログラムカウンタ412がインクリメントされて、次のマイクロ命令へ進んでループから抜け出すような制御が行なわれる。
また、表1内の「jxd」命令は、フラグ436内のdflgを参照し、そのdflgフラグの値によってプログラムカウンタの値を操作する命令とされる。「jxd」命令は、フラグ436内のdflgフラグが「0」のような第1の値のときは、オペランドをプログラムカウンタへ転送し、プログラムをオペランドの示す飛び先番地の命令へジャンプさせ、かつ、dflgフラグを「1」のような第2の値にセットする。一方、「jxd」命令は、dflgフラグが「1」のような第2の値のときは、プログラムカウンタの値をインクリメントし、プログラムカウンタへ戻し、かつ、dflgフラグを「0」のような第1の値にリセットする。
「jmp」命令は、オペランドをプログラムカウンタへ転送して、プログラムをオペランドの示す飛び先番地の命令へジャンプさせることを指令する命令である。
「stop」命令は、シーケンス制御を終了させる事を指示する停止命令である。
図16には、上記アドレス演算回路414の構成例が示されている。
この実施例のアドレス演算回路414は、大きく分けてXアドレスの生成を行なうXアドレス演算部441と、Yアドレスの生成を行なうYアドレス演算部442とにより構成されている。Xアドレス演算部441とYアドレス演算部442は、ほぼ同一の構成であるので、以下、Xアドレス演算部441の構成を説明し、Yアドレス演算部442の構成の説明を省略する。また、必要に応じて不可的なZアドレス演算部を設けることにより、部分的なパターンの生成(パーシャルパターン)を行なわせるようにできる。
Xアドレス演算部441は、Xアドレスの初期値を格納する初期値レジスタXholdと、「0」を保持するゼロ設定手段443と、Xアドレスの初期値または「0」のいずれかを選択するマルチプレクサMUX1と、選択された初期値または「0」を保持するベースレジスタXbaseと、レジスタXbaseの値を加算する第1の演算器ALU1と、演算器ALU1の演算結果または「0」または帰還値のいずれかを選択する第2のマルチプレクサMUX2と、選択された値を保持するカレントレジスタXcurrentと、レジスタXcurrentの値を加算もしくは減算する第2の演算器ALU2と、この第2演算器ALU2または上記第1演算器ALU1の出力のいずれかを選択する第3のマルチプレクサMUX3と、選択された出力を反転可能なインバータINVとから構成されている。
このインバータINVは、メモリのパターンテストにおいて、アドレス信号の切り換えノイズによる誤動作を試験する場合があり、その際にアドレス信号の反転信号を出力する必要があるため設けられる。このインバータINVを使用することで、上記試験におけるアドレス信号の反転信号を容易に形成することができる。
特に制限されないが、この実施例では、上記Xアドレス演算部441の演算器ALU1,ALU2で生成されたXアドレスをYアドレス側へ、また、Yアドレス演算部442で生成されたYアドレスをXアドレス側へ出力できるように、それぞれの第3マルチプレクサMUX3が構成されている。
これにより、複数の種類のメモリ、例えば、アドレスマルチプレックス方式のメモリおよびアドレスノンマルチプレックス方式のメモリのいずれのテスト回路としても使用できるように構成されている。つまり、命令メモリ411に格納されるマイクロ命令を書き換えるだけで、すべてのメモリに対してそれに必要なテストパターンの発生乃至検査を行なうことができる。
なお、上記Xアドレス演算部441とYアドレス演算部442の異なる点は、Xアドレス演算部441の第1演算器ALU1がオーバーフローしたときにYアドレス演算部442の第1演算器ALU1に対してはボロー信号BRが供給されるようにされている点である。
表2には、上記マイクロ命令内の演算コードフィールドMFeに記述乃至定義格納されるところの上記Yアドレス演算部442の第1演算器ALU1でのYアドレス演算(ベース演算)に用いられる演算コードの種類とその内容が示されている。
【表2】
Figure 0004147005
表2において、Ybase←0は、ベースレジスタYbaseの値を「0」にすることを指令する命令である。Ybase←Yholdは、初期値レジスタYholdの内容をベースレジスタYbaseに入れることを指令する命令である。Ybase←Ybase+1は、ベースレジスタYbaseの値をインクリメント(+1)してレジスタYbaseに戻すことを指令する命令である。Ybase←Ybase+1(BR)は、ベースレジスタXbaseの値が最大値でなければYbaseの値をそのままにし、かつ、Xbaseの値が最大値であればYbaseの値をインクリメントしてレジスタYbaseに戻すことを指令する命令である。このとき、第1演算器ALU1から第2演算器ALU2へボロー信号BRが供給される。
表3には、上記Xアドレス演算部441の第1演算器ALU1でのアドレス演算に用いられる演算コードの種類とその内容が示されている。
表4には、上記Yアドレス演算部442の第2演算器ALU2でのYアドレス演算(カレント演算)に用いられる演算コードの種類とその内容が示されている。
表5には、上記Xアドレス演算部441の第2演算器ALU2でのアドレス演算に用いられる演算コードの種類とその内容が示されている。
表4において、左側の欄はテスタ言語を用いて記述されたALPG記述で、右側の欄はそれに対応した機能動作レベル記述である。この記述をハードウェア記述言語(HDL記述)のルールに従い記述して機能を表現できる。
【表3】
Figure 0004147005
【表4】
Figure 0004147005
【表5】
Figure 0004147005
図17には上記テストデータ生成回路415の構成例が示されている。
この実施例のテストデータ生成回路415は、ライトデータまたは期待値の初期値を格納する初期値レジスタTpholdと、当該初期値レジスタTpholdの値を反転可能なインバータINVERT1と、出力すべきテストデータまたは期待値の基準データを保持するベースデータレジスタTpと、ビットシフト機能を有する演算器ALUと、演算器ALUの出力を反転可能なインバータINVERT2とから構成されている。なお、上記実施例では、ビット幅を18ビットとしているが、必要に応じてテストデータ回路を拡大して、所望のビット幅に構成できる。
表6には、上記マイクロ命令内のデータ生成コードフィールドMFfに定義乃至は記述されるところの上記テストデータ生成回路415での動作制御に用いられる制御コードの種類とその内容が示されている。表6において、表3〜表5の命令と同一規則で表されている命令は、ほぼ同様の命令である。
Tp←Tp*2は、レジスタTpと演算器ALUを制御してレジスタTp内の18ビットのデータを演算器ALUで処理してビット列をMSB側もしくはLSB側へ1ビットシフトさせてレジスタTpに戻す命令である。この命令によって、メモリ部が1ワードあるいは1バイトのような単位でデータのリード・ライトが行なわれるタイプのメモリであっても、メモリセルに対して1ビットずつデータ「1」を書き込むためのテストデータを比較的容易に生成することができる。
【表6】
Figure 0004147005
表7には、メモリの試験方法の1つであるところのマーチング試験に関するマイクロ命令のリストの一例が示される。
マーチング試験は、次のように行われる。メモリアレイ1内のメモリセルの全ビットにおいて、その中の1ビットが順番に選択される。選択されたメモリセルには、「0」のデータが書き込まれる。その後、書き込まれた「0」のデータの読み出しが行なわれる。続いて、全ビットにおいて、その中の1ビットが順番に選択される。選択されたメモリセルには「1」のデータが書き込まれる。その後、書き込まれた「1」のデータが読み出されて、それぞれ期待値と比較して欠陥の有無が判定される。
一例として、Xアドレスが4ビット、Yアドレスが4ビットで、256ビットの記憶容量を有するメモリアレイを想定したマーチング試験が説明される。
【表7】
Figure 0004147005
表7において、記号WおよびRは、制御フィールドMFdに記述乃至定義されるところのメモリに対するリード/ライトを指示する制御コードである。この制御コードは、Wに対応したビットとRに対応したビット、つまり、2ビットで表すようにされている。「PCアドレス」の欄に記載されている数字は、飛び先番地を示すもので、当該マイクロ命令実行後にPCの欄に記述されている番号のマイクロ命令に移行してループもしくはジャンプすることを意味している。また、「制御命令等」の欄に記載されている記号X←Xbase,Y←Ybaseは、それぞれベースレジスタXbase,Ybaseの値をXアドレス,Yアドレスとして出力することを意味している。
図18および図19には、前記マイクロプログラム制御方式の制御部と演算部とからなるテスト回路(ALPG)によりSRAM140のマーチング試験を行なう場合の表7のマイクロ命令リストに従った処理フローの一例を示す。このうち図18はマイクロ命令内のオペコードとオペランドとによるシーケンス制御のフローを示す。また、図19は、図18に示されるシーケンス制御のフローと並行して実行されるところのアドレス演算コードとデータ生成コードによるテストアドレスおよびテストデータ(ライトデータ、期待値データ)の生成フローを示す。これらの処理は、前述の表1〜表6に記述されている命令コードを用いてシーケンス制御回路413およびアドレス演算回路414、データ生成回路415を動作させることにより実行することができる。
以下、図18と図19の各ステップを対応させながら、マーチング試験の手順を説明する。
外部からプログラムカウンタ412にスタートアドレスとして、表7のリストに示される最初の命令の番地がセットされると、図18および図19のフローが開始される。先ず、命令メモリ411から表7の最初のマイクロ命令が読み出されると、オペコードは「nop」であるため、シーケンス制御回路413は何もせずただプログラムカウンタ412を1つだけ進める(ステップS201)。一方、アドレス演算回路414およびデータ生成回路415は、初期値レジスタXhold,Yhold,Tholdに入っている初期値「0」をベースレジスタXbase,Ybase,Tpにそれぞれ設定する(ステップS221)。
次に、上記ステップS201でプログラムカウンタ412がインクリメントされているため、表7の2番目のマイクロ命令が読み出される。第2のマイクロ命令のオペコードは「jindex1」であるため、シーケンス制御回路413ではオペランドの繰り返し回数がインデックスレジスタidx1にセットされる(ステップS202)。
インデックスレジスタidx1の最初の設定値はメモリアレイ1の容量(バイト数もしくはワード数)に対応される。一方、アドレス演算回路414では、演算コードX←Xbase,Y←YbaseによってベースレジスタXbase,Ybaseの値をXアドレス,Yアドレスとしてそれぞれ出力する。データ生成回路415からはレジスタTpの値「0」が出力される。そして、このとき、制御信号W(書き込み)が出力される。これによって、メモリアレイ1ではアドレス演算回路414から出力されたX,Yアドレスに対応したメモリセルが選択されてデータ「0」が書き込まれる(ステップS222)。
シーケンス制御回路413はオペコード「jindex1」によってインデックスレジスタidx1の値をデクリメントしてワーキングレジスタidxwに入れ、それが「0」になるまで同一命令を繰り返す(ステップS203,S204)。
また、アドレス演算回路414では演算コードXbase←Xbase+1によってベースレジスタXbaseの値すなわちXアドレスをインクリメントし、Ybase←Ybase+1(BR)によってベースレジスタXbaseが最大値になるとYアドレスをインクリメントする。上記インデックスレジスタidx1の最初の設定値はメモリアレイ1の容量と同じであるので、上記動作の繰り返しによって、メモリアレイ1内のすべてのメモリセルに順番にデータ「0」が書き込まれる(ステップS223,S224)。
ワーキングレジスタidxwの値が「0」になると、シーケンス制御回路413はプログラムカウンタ412の値をインクリメントして、表7の3番目のマイクロ命令を読み出す。そのオペコードは「nop」であるため、シーケンス制御回路413は何もせずプログラムカウンタ412を1つだけ進める(ステップS205)。
一方、アドレス演算回路414は、3番目のマイクロ命令の演算コードに従って、X,YアドレスをインクリメントしてからベースレジスタXbase,Ybaseに入っている値をXアドレス,Yアドレスとしてそれぞれ出力する。このときベースレジスタXbase,Ybaseの値は「0」に戻っている。データ生成回路415はこのとき「0」を出力する。また、制御フィールドMFdの制御コードに従って、制御信号R(読み出し)が出力される。これによって、当該アドレスのデータが読み出され、期待値データ「0」と比較される(ステップS225,S226)。
次に、上記ステップS205でプログラムカウンタ412がインクリメントされているため、表7の4番目のマイクロ命令が読み出される。第4のマイクロ命令のオペコードは「jindex1」であるため、シーケンス制御回路413ではオペランドの繰り返し回数がインデックスレジスタidx1にセットされる(ステップS206)。インデックスレジスタidx1の最初の設定値はメモリアレイ1の容量(バイト数もしくはワード数)に対応される。ただし、第4命令のjindex1命令コードは第2命令のjindex1命令コードと異なるPCアドレス(飛び先番地)を有するため、実行後に第3の命令(オペコードが「nop」)に戻る。
一方、アドレス演算回路414では、演算コードX←Xbase,Y←YbaseによってベースレジスタXbase,Ybaseの値をXアドレス,Yアドレスとしてそれぞれ出力する。また、データ生成コードDinvertによって、データ生成回路415からはレジスタTpの値「0」を反転したデータ「1」が出力される。そして、このとき、制御信号W(書き込み)が出力される。これによって、メモリアレイ1では出力されたX,Yアドレスのメモリセルにデータ「1」が書き込まれる(ステップS227)。
シーケンス制御回路413はオペコード「jindex1」によってインデックスレジスタidx1の値をデクリメントしてワーキングレジスタidxwに入れ、それが「0」になるまで「nop」命令に戻って繰り返す(ステップS207,S208)。また、アドレス演算回路414では演算コードXbase←Xbase+1によってベースレジスタXbaseの値すなわちXアドレスをインクリメントし、Ybase←Ybase+1(BX)によってベースレジスタXbaseが最大値になるとYアドレスをインクリメントする。上記インデックスレジスタidx1の最初の設定値はメモリアレイ1の容量と同じであるので、上記手順によって、メモリアレイ1内のすべてのメモリセルに対して順番に読み出しが行なわれ期待値と比較されてから当該アドレスに「1」が書き込まれる動作を繰り返す(ステップS227,S228)。
次に、表7の5番目のマイクロ命令が読み出される。第5のマイクロ命令のオペコードは「jindex1」であるため、シーケンス制御回路413ではオペランドの繰り返し回数がインデックスレジスタidx1にセットされる(ステップS209)。インデックスレジスタidx1の最初の設定値はメモリアレイ1の容量(バイト数もしくはワード数)に対応される。この第5のjindex1命令コードは第2のjindex1命令コードと同じPCアドレスを有し、同一命令を繰り返す命令とされる。一方、アドレス演算回路414では、演算コードX←Xbase,Y←YbaseによってベースレジスタXbase,Ybaseの値をXアドレス,Yアドレスとしてそれぞれ出力する。また、データ生成コードDinvertによって、データ生成回路415からはレジスタTpの値「0」を反転したデータ「1」が出力される。そして、このとき、制御信号R(書き込み)が出力される。これによって、メモリアレイ1では出力されたX,Yアドレスによって指定されたメモリセルからデータの読み出しが行われる(ステップS229)。
シーケンス制御回路413はオペコード「jindex1」によってインデックスレジスタidx1の値をデクリメントしてワーキングレジスタidxwに入れ、それが「0」になるまで「jindex1」命令を繰り返す(ステップS210,S11)。また、アドレス演算回路414では演算コードXbase←Xbase+1によってベースレジスタXbaseの値すなわちXアドレスをインクリメントし、Ybase←Ybase+1(BR)によってベースレジスタXbaseが最大値になるとYアドレスをインクリメントする。上記インデックスレジスタidx1の最初の設定値はメモリアレイ1の容量と同じであるので、上記動作の繰り返しによって、メモリアレイ1内のすべてのメモリセルが順番に読み出しが行なわれて期待値「1」と比較される(ステップS230,S231)。
次に、表7の6番目のマイクロ命令が読み出される。第6のマイクロ命令のオペコードは「jxd」であるため、シーケンス制御回路413ではアドレスフィールドMFc内のPCアドレスの示す飛び先番地へジャンプする。この実施例では、表7の第2の命令「jindex1」へ戻るようにされている。そして、再びjindex1命令が読み出されたときにフラグdflgが「1」にセットされる。これにより、2巡目のシーケン処理においては、図18のステップS212で「YES」と判定して、マーチング試験を終了する。
一方、2巡目のマイクロ命令リストの実行に際しては、図19のステップS222〜S231において、データ生成回路414によりライトデータと期待値データを「1」として全ビットへ連続して書き込みを行なってから、書き込んだデータを1ビットずつ読み出してそこへ反転データ「0」を書き込み、その後、全ビットの連続した読み出しが行なわれるようにされている。図19のフローでは、ステップS232で、ステップS222〜S231による上記のような1巡目とは逆のデータの書き込み読み出しが終了したか否かの判定(裏データ終了判定)が行なわれるようにされている。なお、上記裏データによる検査を行なうための裏データ生成は図17のTholdのINVERTとdflgでコントロールして生成するようにされている。
上述したように、図18および図19のフローに従った制御は、表1〜表6に記述されている命令コードを用いて命令メモリ411内のマイクロ命令を次の表7の命令リストのように記述することで、僅か6つのマイクロ命令によりマーチング試験を実行することができる。
さらに、前記実施例のテスト回路(ALPG)においては、表1〜表6に記述されている命令コードを用いることにより上記マーチング試験の他に、すべてのメモリセルに「0」または「1」が書き込めるか検査するオール「0」判定試験またはオール「1」判定試験や、あるビットに「1」を書き込んでそれによって他のビットが誤書込みされていないかすべてのビットについて検査するいわゆるN乗パターン試験(もしくはギャロッピング試験)等も実行することができる。
表8に、N乗パターン試験のためのマイクロ命令リストを示す。なお、ixdは、初期値レジスタTpholdの下にあるフラグdflgでコントロールされるインバータINVERTをコントロールして裏テストパターンを生成する命令である。フラグdflgが0のときは初期値レジスタTpholdの値をそのままレジスタTpに格納し、フラグdflgが1のときはその逆のパターンがレジスタTpに設定される。
【表8】
Figure 0004147005
上記実施例においては、プログラムカウンタ412に最初に設定する値を、表7や表8に示される最初のマイクロ命令の命令番地に変更することで、マーチング試験やN乗パターン試験を開始させることができる。
次に、前記カスタム論理部110およびCPU130の検査の際にFPGA120内に構築されるロジックテスタの詳細について説明する。
ロジックテスタは、メモリのテストパターンを生成する図12に示されているALPGと類似の構成を有し、例えば図20に示されているように、所定のテストパターン生成アルゴリズムに従って記述された複数のマイクロ命令群からなるマイクロプログラムが格納された命令メモリ411と、該命令メモリ411から読み出すべきマイクロ命令を指定するプログラムカウンタ412、命令メモリ411から読み出されたマイクロ命令内の命令コードを解読して上記プログラムカウンタ412など制御部400内の回路に対する制御信号を形成する命令解読制御回路430、基準クロックφ0に基づいてタイミング制御信号を形成するタイミング発生部420、マイクロ命令内のタイミング設定ビットMFd(TSビット)に基づいてタイミング発生部420に対する制御データを出力するデータレジスタセット417、マイクロ命令内のタイミング設定ビットMFd(TSビット)をデコードしてデータレジスタセット417から制御データを読み出すデコーダ418などを備えている。
また、テスト対象となる論理回路の内、その機能が特定されている回路(例えば、ALU:Arithmetic Logic Unit)の場合には、すでに適切なテストパターン形成方式が確立されている場合が多いので、そのテストパターンの資産を利用することで、効率の良いテストパターンの生成が可能である。また、組合せ論理回路に関しては、故障仮定法および一つの回路には故障は一つであるという単一故障という考えに基づくDアルゴリズムと呼ばれる効率の良いテストパターンの生成方法が知られている。この手法を利用することによって、テストパターン生成のためのマイクロプログラムを短くすることができ、命令メモリ411の容量の増大を実現可能な程度まで抑えることができる。
この実施例では、特に制限されないが、デコーダ418でデコードされるタイミング設定ビットTSは2ビットで構成され、データレジスタセット417には7個の制御データが格納されている。これらの制御データのうち一つはテスト・サイクルを規定するデータ“RATE”、残りの6個の制御データは、テスタ専用バスの各信号線ごとにハイレベルもしくはロウレベルの信号の出力タイミングを与える2種類の制御データ“ACLK1”,“ACLK2”と、パルス信号の立上がりタイミングを与える2種類の制御データ“BCLK1”,“BCLK2”と、パルス信号の立下がりタイミングおよび期待値との比較出力タイミングを与える2種類の制御データ“CCLK1”,“CCLK2”である。
これらの各制御データが、タイミング発生部420に供給されると、制御データRATEに関しては予め規定されたタイミングの信号RATEがプログラムカウンタ412に供給されて命令メモリ411からのマイクロ命令コードの取り込みが行なうわれる。また制御データとして“ACLK1”〜“CCLK2”がタイミング発生部420に供給されると、タイミングクロックACLK1〜CCLK2の中からその制御コードに対応するクロックが信号形成・比較部300に出力される。各クロックの使用のための接続や選択は必要に応じて適宜実施される。
さらに、ロジックテスタには、上記プログラムカウンタ412の値を「+1」にインクリメントするためのインクリメンタ421や、上記インクリメンタ421またはアドレスフィールドMFa内の飛び先番地のいずれかを選択してプログラムカウンタ412へ供給するマルチプレクサ422、オペランドフィールドMFc内の繰り返し数を保持するインデックスレジスタ423、該インデックスレジスタ423の値を「−1」するためのデクリメンタ424、「−1」にディクリメントされた値を保持するワーキングレジスタ425、所定の命令で用いられるオペランドのプログラムカウンタ412への転送の有無を示すフラグ427、レジスタ423,425の値を選択的に上記デクリメンタ424に供給するマルチプレクサ428、デクリメンタ424の値をワーキングレジスタ425のいずれかのプレーンに分配するデマルチプレクサ429などが設けられている。
このロジックテスタでは、マイクロ命令コードに命令の繰り返し数を格納するオペランドフィールドMFcを設けるとともに、その繰り返し数を保持するインデックスレジスタ423を設けているので、同一テスト信号を繰り返し生成するような場合に、必要なマイクロ命令数を減らしマイクロプログラムを短くすることができる。また、この実施例では、インデックスレジスタ423やワーキングレジスタ425、フラグ427が複数プレーン(図では4個)設けられていることにより、あるループ処理内におけるサブループ処理、さらにそのサブループ処理内におけるサブループ処理といったことを容易に実行することができ、マイクロプログラムを短くすることができる。
図21には、上記信号形成・比較部300の実施例が示されている。なお、図21の回路は、テスタ専用バス220を構成する信号線のうちの1本に対応するドライバ/コンパレータ回路のみが代表的に示されているが、実際にはテスタ専用バス220を構成する信号線の数だけ図21に示す回路が設けられる。
図21に示すように、この実施例のドライバ/コンパレータ回路は、テスタ専用バスへ出力する信号を形成するドライバ回路(信号形成回路)340と、テスタ専用バス上の信号と期待値信号とを比較して一致/不一致を比較するコンパレータ回路(比較回路)350と、ドライバ回路340とコンパレータ回路350とを切り替える切替え回路360とから構成される。切替え回路360は、ドライバ回路340と入出力ノードNioとの間に設けられた伝送ゲートTG1と、入出力ノードNioとコンパレータ回路50と間に設けられた伝送ゲートTG2とから構成され、上記制御部400から供給される入出力制御ビットI/Oに応じていずれか一方が開かれ他方は遮断状態とされる。
ドライバ回路340は、タイミング発生部420から供給されるタイミングクロックACLKiによって入出力制御ビットTPを取り込んで保持するエッジトリガ型フリップフロップ341と、タイミング発生部420から供給されるタイミングクロックBCLKiとCCLKiとの論理和をとるORゲート342と、このORゲート342の出力と上記エッジトリガ型フリップフロップ341の出力を入力信号とするJ/Kフリップフロップ343と、このJ/Kフリップフロップ343の出力と制御部400から供給される入出力制御ビットCONTとを入力信号とするANDゲート344と、上記エッジトリガ型フリップフロップ341の出力と制御部400から供給される入出力制御ビットCONTとを入力信号とするANDゲート345と、これらのANDゲート344,345の出力によってテスタ専用バスを駆動するドライバ346とから構成されている。
一方、コンパレータ回路350は、タイミング発生部420から供給されるタイミングクロックCCLKiと制御部400から供給される入出力制御ビットCONTとを入力信号とするANDゲート351と、上記D型フリップフロップ341の出力(期待値)と伝送ゲートTG2を介して供給されるテスタ専用バス上の信号とを入力信号とするエクスクルーシブORゲート352と、このエクスクルーシブORゲート352と上記ANDゲート351との出力を入力信号とするANDゲート353と、このANDゲート353の出力をラッチするフリップフロップ354とから構成されており、すべてのコンパレータ回路350の出力の回路の論理和をとった信号がトータル・フェイル信号TFLとして出力される。上記入出力制御ビットI/O、TP、CONTは、上記制御信号に相当する。
図20に示されているように、本実施例のテスト回路におけるマイクロ命令は、ジャンプ命令で使用する命令の飛び先番地を示すPCアドレスが格納されるアドレスフィールドMFaと、シーケンス制御コードが格納されるオペコードフィールドMFbと、命令の繰り返し数などが格納されるオペランドフィールドMFcと、上記データレジスタセット14からタイミング発生部420に対する制御信号を読み出すためのタイミング設定ビットTSが格納されるタイミング設定フィールドMFdと、上記信号形成・比較部300の入出力制御ビットが格納される入出力制御フィールドMFeとからなる。
上記タイミング設定フィールドMFdに格納されるタイミング設定ビットTSは、前述したようにこの実施例では2ビットであるが、3ビット以上設けてもよい。また、上記入出力制御フィールドMFeに格納される入出力制御ビットは、テスタ専用バス220のn本の信号線に対応して、ドライバ・ビットTPとI/Oビットとコントロール・ビットCONTの3ビットを1セットとし、nセットだけ設けられている。これらのビットのうち、I/Oビットは入力か出力かを指定する制御ビットで“1”のときは伝送ゲートTG1を開きかつTG2を遮断してドライバの出力信号をテスタ専用バス220の対応する信号線上へ出力し、“0”のときは伝送ゲートTG1を遮断しかつTG2を開いてテスタ専用バス220の対応する信号線上の信号を比較用のゲート352へ入力させる。ドライバ・ビットTPおよびコントロール・ビットCONTは、その組合せに応じてハイ出力またはロウ出力か、正パルスもしくは負パルスの出力か、入力無効状態か、出力ハイインピーダンス状態かを指定する。
表9には、上記入出力制御ビットTP,I/O,CONTと信号形成・比較部300の動作状態との関係が示されている。
【表9】
Figure 0004147005
表9に示されているように、入出力制御ビットTP,I/O,CONTが「111」のときはドライバ回路340がハイレベルの信号を出力し、「011」のときはドライバ回路340がロウレベルの信号を出力し、「110」のときはドライバ回路340が正のパルス信号を出力し、「110」のときはドライバ回路340が負のパルス信号を出力するように制御が行なわれる。また、入出力制御ビットTP,I/O,CONTが「101」のときはコンパレータ回路350がハイレベルの入力信号を期待し、「001」のときはコンパレータ回路350がロウレベルの入力信号を期待し、「100」のときは入力信号を無効とするように制御が行なわれる。
なお、この実施例の信号形成・比較部300では、制御ビットTP,I/O,CONTが「000」となる状態は何ら意味を持たないように構成されている。ただし、制御ビットTP,I/O,CONTが「000」のときは、例えば伝送ゲートTG1を閉じてTG2を開き、かつエクスクルーシブORゲート352を上記ハイレベルとロウレベルの間にある2つのレベルで動作するシュミット回路としてその2つのレベル間にテスタ専用バス220に接続された入出力ノードNioの電位が存在する状態(ハイインピーダンス状態)を比較できるように信号形成・比較部300を構成しておくことも可能である。
図22には上記実施例におけるタイミング発生部420より供給されるタイミングクロックACLK1〜CCLK2と信号形成・比較部300からテスタ専用バス220上に出力される信号の一例が示されている。図22において、(a)は外部から供給される基準クロックφ0を、(b)〜(g)はタイミングクロックACLK1〜CCLK2の波形を、(h)は表9の出力テスト信号として「1」が指定されかつクロックとしてACLK1が選択された端子の出力信号の波形を示す。また、(i)は表9の出力テスト信号として「0」が指定されかつクロックとしてACLK2が選択された端子の出力信号の波形を示す。また、(j)は表9の出力テスト信号として「P」が指定されかつクロックとしてBCLK1,CCLK1が選択された端子の出力信号の波形を示す。さらに、(k)は表9の出力テスト信号として「N」が指定されかつクロックとしてBCLK2,CCLK2が選択された端子の出力信号の波形を示す。
図22から分かるように、入出力制御ビットTP,I/O,CONTが「111」に設定されクロックACLK1が指定された端子からはクロックACLK1に従い図22(h)のようなハイレベルの信号が出力され、TP,I/O,CONTが「011」に設定されクロックACLK2が指定された端子からはクロックACLK2に従い図22(i)のようなロウレベルの信号が出力され、TP,I/O,CONTが「110」に設定されクロックACLK1,BCLK1,CCLK1が指定された端子からはクロックACLK1でセットされたデータに従いBCLK1,CCLK1をエッジとする図22(j)のような正パルスが出力され、TP,I/O,CONTが「010」に設定されクロックACLK2,BCLK2,CCLK2が指定された端子からはクロックACLK2でセットされたデータに従いBCLK2,CCLK2をエッジとする図22(k)のような負パルスが出力される。
また、図示しないが、入出力制御ビットTP,I/O,CONTが「101」に設定されクロックCCLK1が指定された端子では期待値をハイレベルとして図22(f)のクロックCCLK1をストローブ信号として比較が行なわれ、TP,I/O,CONTが「001」に設定されクロックCCLK2が指定された端子では期待値をロウレベルとし図22(g)のクロックCCLK2をストローブ信号として比較が行なわれる。なお、クロックの選択は上記に限定されず任意の組合せとすることができる。
以上説明したように上記実施例においては、半導体チップ上に複数の基本論理セル(セル論理ブロック)からなり基本論理セルごとに回路が正常か異常かを示す信号を出力可能でかつ任意の論理を構成可能なFPGA(Field Programmable Gate Array)のような可変論理回路を搭載するようにしたものである。これにより、外部テスタを使用することなく可変論理回路(FPGA)内に不良個所があることおよびその位置を知ることができる。また、不良個所を回避して論理を構成することにより歩留まりを向上させるとともに、この可変論理回路(FPGA)を用いてテスト回路を構築して他の内部回路をテストする場合にテスト回路自身の故障による誤ったテスト結果が出力されるのを回避することができるという効果がある。
また、本発明に係る半導体集積回路のテスト方法は、回路が正常か異常かを示す信号を出力可能でかつ任意の論理を構成可能な可変論理回路(FPGA)と読出し書込み可能なメモリ回路とを内蔵した半導体集積回路において、まず上記可変論理回路(FPGA)により自己テストを行なわせ、その結果得られた不良個所を示す情報を用いて不良個所を除いた基本論理セルのみで所定のアルゴリズムに従ってメモリ回路を検査するメモリテスト回路を構築して上記メモリ回路を検査するようにした。これによって、高機能の外部テスタを用いることなくLSI内部のメモリ回路のテストを行なうことができるという効果がある。
さらに、本発明に係る半導体集積回路の他のテスト方法は、半導体集積回路がメモリ回路と共にCPU(中央処理ユニット)やユーザが要求する論理機能を構成したユーザ論理回路のようなカスタム論理回路を含むような場合に、上記FPGAに所定のアルゴリズムに従ってCPUやカスタム論理回路のテスト信号および期待値信号を生成してテストを行なうテスト回路(ロジックテスタ)を構築するとともに、既に前記テストにより正常と判定されたメモリ回路を使用して、そのメモリ回路にテストパターンもしくはテストパターン生成プログラムを格納し、FPGAに構築されたテスト回路を起動してCPUやカスタム論理回路のテストを行なうようにした。これによって、高機能の外部テスタを用いることなくLSI内部のCPUや論理回路のテストを行なうことができるという効果がある。
さらに、本発明に係る半導体集積回路の製造方法は、まず上記可変論理回路により自己テストを行なわせ、その結果得られた不良個所を示す情報を用いて該可変論理回路内に、不良個所を除いた基本論理セルのみで所定のアルゴリズムに従って第1のメモリ回路を検査するメモリテスト回路を構築して、上記第1のメモリ回路を検査し、
次に、上記可変論理回路内に、不良個所を除いた基本論理セルのみで所定のアルゴリズムに従ってカスタム論理回路または中央処理ユニットを検査するロジックテスト回路を構築するとともに上記第1のメモリ回路内にテストパターンもしくはテストパターン生成プログラムを格納して、上記カスタム論理回路または中央処理ユニットを検査し、
しかる後、上記可変論理回路内に、不良個所を除いた基本論理セルのみで所定のアルゴリズムに従って第2のメモリ回路を検査するメモリテスト回路を構築して、上記第2のメモリ回路を検査し、
その後、上記第2のメモリ回路の検査結果に基づいて上記第2のメモリ回路に付随する冗長回路を用いて第2のメモリ回路内の欠陥ビットを予備のビットと置き替えるビット救済処理を行なうようにしたので、メモリ回路のビット救済を自動的に行なうことができ、半導体集積回路の歩留まりおよび生産性を向上させることができるという効果がある。
また、本発明に係る半導体集積回路の製造方法は、上記第2のメモリ回路のビット救済処理後に、上記可変論理回路内に所望の論理を構成するようにしたので、テスト終了後にLSIチップ内には無駄な回路が残らないので、テスト回路をLSI内部に設けることに伴うハードウェアのオーバーヘッドを減らすことができるという効果がある。
さらに、本発明に係る半導体集積回路の製造方法は、上記第2のメモリ回路の検査の際に欠陥ビットの位置を示す情報を上記第1のメモリ回路内に記憶するようにしたので、上記第1のメモリ回路内に記憶されている情報を読み出すことにより不良解析を容易に行なうことができるという効果がある。
以上本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は上記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば上記実施例においては、セル論理ブロックCLB内の回路が正常か否か検出して出力する排他的論理和ゲート回路LG2の出力状態をクロスポイントスイッチ回路CSW内のメモリセルSMCに記憶させるようにしているが、LSIチップの外部へ出力させるように構成してもよい。
また、上記実施例においては、DRAM150〜180のテストの際に欠陥ビットの位置を記憶するフェールメモリをSRAM140内に構成するようにしているが、外部のテスタ内にフェールメモリを設けるようにしてもよい。さらに、上記実施例ではテスト用のインタフェース回路としてIEEEで規定されているTAPを利用しているが、それに限定されるものでなく、本実施例に適した専用のインタフェース回路を別途設計して設けるようにしても良い。
産業上の利用可能性
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるCPUとSRAM、DRAMおよびカスタム論理回路を備えたシステムLSIにおける自己検証方法を例にとって説明したが、この発明はそれに限定されず、CPUとSRAMおよびカスタム論理回路を備えた論理LSI、CPUとDRAMおよびカスタム論理回路を備えた論理LSI、CPUとカスタム論理回路を備えた論理LSI、SRAMとDRAMおよびカスタム論理回路を備えた論理LSIさらには上記のようなディジタル回路の他にアナログ回路が搭載された半導体集積回路にも利用することができる。
【図面の簡単な説明】
図1は、本発明を適用した論理LSIの一実施例の全体構成を示すブロック図である。
図2は、本発明を適用した論理LSI内に設けられる可変論理回路(FPGA)の一実施例を示す回路構成図である。
図3は、FPGAを構成するクロスポイントスイッチの具体例を示すブロック図である。
図4は、FPGAを構成するセル論理ブロックの具体例を示す論理回路図および概念図である。
図5は、FPGAを構成するセル論理ブロックの他の例を示す論理回路図である。
図6は、本発明を適用した論理LSI内に設けられるテスト用インタフェース回路の一構成例を示すブロック図である。
図7は、本発明を適用した論理LSIにおける内部回路の検査手順の一例を示すフローチャート図である。
図8は、図7のフローチャートのステップS1〜S3におけるFPGA部の検査手順の具体的内容を示すフローチャートである。
図9は、図7のフローチャートのステップS4〜S5におけるSRAM部の検査手順の具体的内容を示すフローチャートである。
図10は、図7のフローチャートのステップS6〜S8におけるカスタム論理回路およびCPU部の検査手順の具体的内容を示すフローチャートである。
図11は、図7のフローチャートのステップS9〜S12におけるDRAM部の検査手順の具体的内容を示すフローチャートである。
図12は、FPGA内に構築されるALPGの構成を示すブロック図である。
図13は、ALPGを使用してメモリ回路をテストする際のバスの構成例を示すブロック図である。
図14は、ALPGの命令メモリに格納されるマイクロ命令の命令フォーマットの構成例を示す説明図である。
図15は、ALPGのシーケンス制御部の構成例を示すブロック図である。
図16は、ALPGのアドレス演算部の構成例を示すブロック図である。
図17は、ALPGのテストデータ生成演算部の構成例を示すブロック図である。
図18は、ALPGによりメモリ回路の検査を行なう場合のマイクロ命令のオペコードおよびオペランドを用いたシーケンス制御手順の一例を示すフローチャートである。
図19は、ALPGによりメモリ回路の検査を行なう場合のマイクロ命令の演算コードおよびデータ生成コードを用いたテストアドレスおよびデータの生成、出力手順の一例を示すフローチャートである。
図20は、FPGA内に構築されるロジックテスタの構成例を示すブロック図である。
図21は、ロジックテスタ内の信号形成・比較手段の具体例を示す論理回路図である。
図22は、ロジックテスタにより形成されるテスト用信号波形の一例を示す波形図である。Technical field
The present invention relates to a semiconductor integrated circuit (IC: Integrated Circuit) and a test technique and a manufacturing technique thereof, and provides, for example, a logic LSI (Large Scale Integration) capable of configuring a logic by detecting a fault and avoiding a fault location. is there.
Background art
As a test method for a logic IC, a method in which test pattern data is generated by a test device called a tester, input to the IC, and an output data signal is compared with an expected value to detect it. However, as the logic scale of the logic IC increases, the number of test pattern steps becomes longer, and the time required for test pattern creation and test using the test pattern becomes very long.
Therefore, as a method for facilitating the test by the tester, a shift register can be configured by cascading sequential circuits such as flip-flops constituting the original function of the IC so that the shift register can be configured during the test. The test pattern is serially input (scanned in) to be captured (set), the test data captured in the shift register is input to a desired combinational logic circuit, and then the output data signal of the logic circuit is captured in the shift register. A testability design technology called a so-called scan path method that can be shifted out (scanned out) has been developed and put into practical use.
In the method of inputting a test pattern from the outside, if a logic circuit includes a sequential circuit, the output differs depending on the internal state. Therefore, in order to inspect a certain logic circuit, the state of the sequential circuit contained therein is first tested. However, the test pattern becomes very long because it has to be set in step 1. However, the test pattern can be significantly reduced by inputting (scanning in) the test pattern with a flip-flop as a shift register configuration.
However, the scan path method has a smaller amount of test patterns than the previous test methods, but it is difficult to generate test patterns, and it is difficult to increase the defect detection rate, and the test pattern can be input (transferred) serially. Since the test is repeated, there is a problem when the test time becomes long. In addition, a newly developed logic LSI includes a memory circuit such as a RAM (Random Access Memory) and a ROM (Read Only Memory) and a large cell such as a CPU (Macro Cell or IP Core: Intelligent Property Core). In order to test these cells, it is necessary to create and input an enormous amount of test patterns, so that there is a problem that the test cannot be performed in practice.
On the other hand, a BIST (Built in self test) type test technique in which a pattern generation circuit for generating a random test pattern such as a pseudo random number generation circuit is built in a logic integrated circuit has been proposed.
However, the test circuit of the BIST system is not guaranteed that the generated test pattern is a test pattern sufficient to detect a defect. For this reason, there is a problem that it is necessary to separately verify whether or not a sufficient defect detection rate can be obtained with the test pattern of the test circuit.
Further, any LSI on which a conventional test circuit is mounted does not take any measures against its own failure or defect. In other words, when the test circuit itself fails, there is a drawback that a failure is determined even if the original circuit of the chip is normal. And as a countermeasure, there is no choice but to minimize the scale of the test circuit and suppress the occurrence of failures and defects, but this leads to a result that contradicts the objective of improving the sufficiency of the test, that is, the defect detection rate. .
An object of the present invention is to provide a test technique capable of testing a circuit inside an LSI without using a high-function external tester.
Another object of the present invention is to provide a high-yield LSI capable of detecting a fault location by itself and repairing itself.
Another object of the present invention is to provide an LSI having a self-test function with less hardware overhead.
Another object of the present invention is to provide an LSI that can be easily analyzed for defects.
Still another object of the present invention is to provide a manufacturing technique suitable for application to a so-called system LSI having a control circuit such as a central processing unit, a memory circuit, a custom logic circuit, etc. on one chip. is there.
The above and other objects and novel features of the present invention will be apparent from the description of this specification and the accompanying drawings.
Disclosure of the invention
Outlines of representative ones of the inventions disclosed in the present application will be described as follows.
In other words, the semiconductor integrated circuit according to the present invention comprises a plurality of basic logic cells (cell logic blocks) on a chip and can output a signal indicating whether the circuit is normal or abnormal for each basic logic cell and constitutes arbitrary logic. A variable logic circuit such as a possible FPGA (Field Programmable Gate Array) is mounted. Thereby, it is possible to know that there is a defective part and its position in the variable logic circuit (FPGA) without using an external tester. In addition to improving the yield by avoiding defective parts and configuring the logic, a failure of the test circuit itself occurs when a test circuit is built using this variable logic circuit (FPGA) to test other internal circuits. It is possible to avoid outputting an erroneous test result by.
As a basic logic cell capable of outputting a signal indicating whether the circuit is normal or abnormal, for example, determination means for comparing the output with a two-line line logic (logical product gate circuit) having a complementary output and determining the presence or absence of abnormality ( And an exclusive OR gate). By configuring the basic logic cell in this way, a variable logic circuit (FPGA) capable of outputting a signal indicating whether the circuit is normal or abnormal and capable of configuring any logic with a relatively small circuit is realized. can do.
The semiconductor integrated circuit test method according to the present invention comprises at least a plurality of basic logic cells (cell logic blocks), and can output a signal indicating whether the circuit is normal or abnormal for each basic logic cell, In a semiconductor integrated circuit incorporating a configurable variable logic circuit (FPGA) and a readable / writable memory circuit, first, a self-test is performed by the variable logic circuit (FPGA), and information indicating a defective portion obtained as a result is obtained. Is used to generate a predetermined test signal and an expected value signal in accordance with a predetermined algorithm using only basic logic cells excluding defective portions, and supply the test signal to the memory circuit. As a result, an output signal (output) obtained from the memory circuit Data) and the expected value signal (expected value data) are compared, and if they do not match, a signal indicating a defect is formed to the outside of the chip It is obtained so as to build a memory test circuit for force.
Such a memory test circuit can be configured as a test pattern generator called an ALPG (Algoromic Memory Pattern Generator) that generates a test pattern of a memory according to a predetermined algorithm. Further, the ALPG includes a control unit of a known microprogram control system that decodes an instruction code to control an arithmetic unit and the like, and an arithmetic unit that generates a test pattern by calculation. Then, the test pattern generation program instruction code is sequentially supplied to the ALPG constructed in the FPGA as described above to generate a test pattern, and the test pattern is supplied to the memory circuit which is the circuit under test. Can be inspected.
Further, the test pattern generation program is described using an existing tester language or a test language, and a test pattern (address and data) is generated according to the predetermined algorithm defined by the instruction code. The tester language is regarded as an effective instruction language for efficiently generating a test pattern including an address and data. The tester language is a language used in the tester industry. For example, a language compatible with the tester language of Advantest is used. This is because the program data of the existing test pattern can be used. The language for describing the predetermined algorithm is not limited to the tester language, and may be any instruction language that can generate a test pattern including an address and data.
Another test method for a semiconductor integrated circuit according to the present invention is such that the semiconductor integrated circuit includes a custom logic circuit such as a CPU (Central Processing Unit) and a user logic circuit that constitutes a logic function requested by a user together with a memory circuit. In this case, a test circuit (logic tester) for generating a test signal and an expected value signal for the CPU and custom logic circuit according to a predetermined algorithm in the FPGA is constructed, and a memory that has already been determined to be normal by the test. A test pattern or test pattern generation program is stored in the memory circuit using the circuit, the test circuit built in the FPGA is activated, and the CPU or custom logic circuit is read while reading the test pattern or test pattern generation program from the memory circuit. Is to test
As a result, the logic circuit inside the LSI can be tested without using a high-function external tester.
A test circuit that generates a test signal and an expected value signal for a CPU or a custom logic circuit according to a predetermined algorithm and performs a test includes: a microinstruction type control unit that decodes an instruction code to form a control signal; A test signal and an expected value signal for the CPU or custom logic circuit are generated based on the output control signal, and a failure is indicated when the signal output from the CPU or custom logic circuit does not match the expected value signal. This is realized by constructing signal forming / comparing means for forming a signal in the FPGA. In this case, a timing generation circuit that forms a plurality of clock signals having different phases and duties based on the reference clock signal can be built in the FPGA, and the timing can be set for each test signal in accordance with the control signal from the control unit. It is good to do so.
As described above, the test circuit outputs a control signal for generating a test signal and an expected value signal for the CPU and the custom logic circuit according to a predetermined algorithm, and a control unit of a microprogram control system, which is output from the control unit. A signal generator that generates a test signal and an expected value signal of the internal logic circuit based on the control signal, and forms a signal indicating a failure when the signal output from the internal logic circuit and the expected value signal do not match Since it is constituted by the comparison means, it is not necessary to store all the test patterns in the internal memory, and the data of the instruction code itself can be compressed by the configuration of the control unit, and can be sufficiently constructed in the FPGA. belongs to.
BEST MODE FOR CARRYING OUT THE INVENTION
Preferred embodiments of the present invention will be described below with reference to the drawings.
FIG. 1 is a block diagram of an embodiment of a system LSI to which the present invention is applied. The system LSI is configured on a single semiconductor chip 100 such as single crystal silicon by a known semiconductor integrated circuit manufacturing technique.
In FIG. 1, reference numerals 110 to 180 are internal circuits configured on the semiconductor chip 100, 190 is an interface circuit for inputting and outputting signals between these internal circuits and external devices, and 200 is the internal circuits 110 to 180. This is an internal bus that connects between each other and the interface circuit 190. Among the internal circuits 110 to 180, 110 and 120 are custom logic circuits such as a user logic circuit that constitutes a logic function requested by the user. Among these, 120 is configured by an FPGA that can arbitrarily configure logic. ing. This custom logic circuit may be left as it is without configuring the user logic.
Reference numeral 130 denotes a CPU (central processing unit) that decodes program instructions and executes corresponding processes and operations, 140 is a static RAM (random access memory), and 150 to 180 are dynamic RAMs. Further, the system LSI of this embodiment is not particularly limited. However, in order to input / output signals to / from the external tester 500 when testing the internal circuit, the TAP defined in the IEEE1149.1 standard is used. (Test Access Port) 210 is provided as an interface circuit. The tester 500 is not a high-functional one such as a conventional logic LSI or memory tester, but can perform data writing and reading and simple data processing, and a personal computer can also be used.
The CPU 130 may be configured as a microprocessor including a so-called microcomputer peripheral circuit such as a program ROM, a working RAM, a serial communication interface, a timer circuit, and a digital / analog conversion circuit in addition to the CPU in a narrow sense.
The static RAM 140 and the dynamic RAMs 150 to 180 include a memory peripheral circuit such as an address decoder that selects a corresponding memory cell when an address signal is applied via the internal bus 200. Further, the dynamic RAMs 150 to 180 include a refresh control circuit that periodically performs pseudo-selection so that the information charges of the memory cells are not lost even if the non-access time is increased. Although not particularly limited, in this embodiment, when there is a defective bit in the memory array, the dynamic RAMs 150 to 180 include a memory row or memory column including the defective bit as a spare memory row or spare memory. So-called redundant circuits are provided to replace the memory columns.
FIG. 2 shows a specific example of an FPGA constituting the custom logic circuit 120 among the internal circuits 110 to 180 shown in FIG.
The FPGA of this embodiment includes a plurality of cell logic blocks CLB arranged in a matrix, wiring groups 121 and 122 provided between the cell logic blocks CLB for connecting cells, and wiring between the outside. The cross point switch CSW is capable of changing the connection state. As shown in FIG. 3, the cross point switch CSW is applied to, for example, a switch MOSFET Qsw having a drain and a drain connected to the horizontal wiring Lx and the vertical wiring Ly, and the gate of the switch MOSFET Qsw. The wiring connection information storage memory cell SMC stores control information. The wiring groups 121 and 122 are preferably formed in a state of being insulated from each other by different wiring layers using a multilayer wiring technique. In FIG. 2, two wires are shown between each cell logic block, but more wires are actually formed. The number of wires is increased in proportion to the number of cell logic blocks.
Although not particularly limited, an X decoder circuit, a Y decoder circuit, a write circuit, or the like for selecting the wiring connection information storage memory cell SMC and writing data is provided around the FPGA block. May be. The wiring connection information storage memory cell SMC can be provided as an SRAM memory array around the FPGA block instead of being provided one-to-one with the switch MOSFET Qsw.
For example, as shown in FIG. 4A, the cell logic block CLB includes an AND gate circuit (two-line line logic) LG1 having complementary outputs such as AND logic and NAND logic, and an exclusive input having the complementary output as an input. And a logical OR gate circuit (comparison means) LG2. This gate circuit LG2 outputs a low level output signal when the two input signals have the same logic level, and outputs a high level output signal when the two input signals have different logic levels. When the LG1 is defective and the output to be complementary is the in-phase output, the output of the gate circuit LG2 becomes low level to notify that the gate circuit LG1 is defective.
Although the output signal of the gate circuit LG2 may be output to the outside of the FPGA block as it is, in this embodiment, the memory cell for storing the wiring connection information constituting the crosspoint switch CSW shown in FIG. It is configured so that it can be input and stored in the node N2 of the SMC.
Therefore, the power supply voltage is applied to each cell logic block CLB, and the output state of the gate circuit LG2 at that time is stored in the wiring connection information storage memory cell SMC, and then the storage information of the wiring connection information storage memory cell SMC is stored in the external It is possible to know whether or not the cell logic block CLB operates normally. It is also possible to detect whether or not a memory cell has failed by sequentially writing and reading data from outside the chip to each wiring connection information storing memory cell SMC. Further, by writing data into the wiring connection information storage memory cell SMC, turning on the desired switch MOSFET Qsw and using the wiring groups 121 and 122 to input and check signals from the outside, the switch MOSFET Qsw breaks down. It can also be detected.
Note that by devising the gate structure of the MOSFET Q1 or the memory cell circuit constituting the memory cell SMC for wiring connection information storage to which the output state of the gate circuit LG2 is inputted, when the output of the gate circuit LG2 is at a low level, the external circuit The MOSFET Q1 may be configured not to be inverted, that is, turned off by the data input. Thereby, it is possible to efficiently detect whether or not there is a failure in the cell logic block CLB.
As a specific method for realizing such a function, the MOSFET Q1 constituting the memory cell SMC has a structure having a control gate and a floating gate as shown in FIG. 4B, for example, and the output (low level) of the gate circuit LG2 Is inverted by the inverter INV and a high level voltage Vp is applied to the control gate CG of the MOSFET Q1 to inject charges into the floating gate FG so that the state of the memory cell does not change depending on external data input. Can be considered.
Further, as the AND gate circuit LG1 having complementary outputs such as AND logic and NAND logic shown in FIG. 4A, for example, a circuit as shown in FIG. 4C can be considered. In other words, the AND gate circuit LG1 includes a first MOSFET string composed of MOSFETs Q11 to Q13 connected in series between the power supply voltage terminal Vcc and the ground point, and a second MOSFET string composed of MOSFETs Q21 to Q23 in series. When the first input signal X is supplied to the gates of Q12 and Q21, the logical product output Z (= X · Y) of the input signals X and Y is output from the output node N12 of the second MOSFET array. It operates so as to output the inverted output / Z (= / X · Y) of the logical product output Z of the input signals X and Y from the output node N11 of the 1MOSFET series. The MOSFETs Q11 and Q23 shown in the drawing act as loads when the gate and drain are coupled or a predetermined potential is applied to the gate.
FIG. 5A shows another configuration example of the cell logic block CLB.
The cell logic block CLB of this embodiment is a BIST (Built in self test) built-in type logic block, which latches two input signals X and Y, respectively, and signals X, / X of the positive phase and the negative phase, respectively. Flip-flops FF1 and FF2 for outputting Y, / Y, a logical unit ALU capable of performing a plurality of logical operations such as logical sum, logical product, exclusive logical sum using these four output signals as input signals, A flip-flop FF3 that latches the output Z and outputs signals Z and / Z in the positive and negative phases, a read / writeable memory MEM that stores control information that specifies the logical operation of the logical unit, and a test pattern Consists of a well-known LFSR (Linear Feedback Shift Register) generated in the form of random numbers and a comparator CMP It has been.
The memory MEM for storing the logical unit control information is configured to be able to write control information from the outside. The LFSR is configured to be connectable to the input signals X and Y, the logic unit control information, and the transmission signal lines of the output signals Z and / Z of the FF 3 via the switch MOSFETs G1 to G7, and operates in synchronization with the clock CLK. To do.
When the cell logic block CLB of this embodiment is subjected to a self-inspection operation, the control signal CHK is inputted to the gates of the switch MOSFETs G1 to G7 to be turned on. Then, a random pattern is formed by the LFSR and supplied to the flip-flops FF1 and FF2 and the logic unit ALU, and the generated pattern and the output of the flip-flop FF3 are logically synthesized and compressed to form a comparator pattern CMP as a signature pattern. Is output.
For example, as shown in FIG. 5B, the comparator CMP is a latch timing signal from a read-only memory ROM storing an expected signature pattern, an exclusive OR gate EOR, an output latch OLT, and a clock CLK. The timing generation circuit TMG etc. which generate | occur | produce. When the signature pattern is input from the LFSR, the comparator CMP compares the expected signature pattern stored in the read-only memory ROM with the output pattern of the LFSR by the exclusive OR gate EOR. And a low level signal, and if they do not match, a high level signal is output. This output is latched by the latch OLT and output as a signal ERR indicating good / bad.
Note that the operation principle of the LFSR is already known and described in various documents and the like, and detailed description thereof is omitted. However, optimization according to the logic circuit to be inspected can be performed according to the principle. In general logic LSIs incorporating a BIST to which LFSR is applied, optimization of LFSR is required for each logic circuit, which is troublesome in design, but the FPGA of this embodiment uses the same cell logic block CLB. Therefore, the optimization can be performed uniformly and the design burden is reduced. In addition, since a conventional LSI having a built-in BIST is a global BIST in which one BIST inspects all the LSI internal circuits, test sufficiency is not guaranteed with the generated test pattern. Since it is a local BIST provided in the cell logic block CLB, test sufficiency is also guaranteed.
FIG. 6 shows a specific example of the interface circuit 210 using the TAP shown in FIG.
As described above, the TAP is an interface and control circuit for the scan test and BIST circuit defined in the IEEE1149.1 standard, and is used to shift the test data from the input port to the output port. A data register 212 used for transmitting a specific signal to the circuit, a device ID register 213 for setting a chip-specific manufacturing identification number, and an instruction register 214 used for selecting a data register and controlling an internal test method , And a controller 215 for controlling the entire TAP circuit.
The data register 212 is an optional register. In addition, as the instructions set in the instruction register 214, four essential instructions and three optional instructions are prepared. The controller 215 receives a test mode select signal TMS, a test clock TCK, and a reset signal TRST for designating a test mode from three dedicated external terminals, and the registers 211 to 214 are based on these signals. And control signals for the selector circuits 216 to 218 are formed.
Further, the TAP is provided with an input terminal for test data TDI and an output terminal for test result data TDO. The input test data TDI is sent to the registers 211 to 214 or the internal scan path Iscan via the selector circuit 216. , Bscan. The contents of the registers 211 to 214 and the scan-out data from the internal circuit are output to the outside of the chip via the selector circuits 217 and 218. Further, a signal indicating the test result output from the BIST circuit is sent to the TAP via the selector circuits 217 and 218 according to the contents of the data register 212 and the instruction register 214. So that it can be output to the outside of the chip.
In the system LSI of the embodiment of FIG. 1, the self-test circuit built on the custom logic circuit (FPGA) 120 or the CPU 130 is regarded as a BIST circuit as will be described in detail later, and is used for the BIST circuit of the TAP. Using the signal input / output function, setting signals and data for self-test to the custom logic circuit (FPGA) 120 and the CPU 130 are input, and test results and data stored in the memory cells and the SRAM 140 in the FPGA 120 are input. It is configured to output. The function for the scan test of the TAP is not used in the system LSI of the embodiment of FIG.
In FIG. 6, “Iscan” means a test path for diagnosing the internal logic circuit using a shift register in which flip-flops constituting the internal logic circuit are connected in a chain as a scan path for test data. To do. “Bscan” uses a shift register in which a flip-flop provided in the signal input / output unit (interface circuit 190 in FIG. 1) is connected in a chain shape as a scan path, and is connected to other semiconductor integrated circuits. This means a test path for performing a connection state diagnosis (boundary scan test).
Next, an example of a test procedure when the test method according to the present invention is applied to the system LSI shown in FIG. 1 will be described with reference to FIGS. FIG. 7 shows an outline of the test procedure for the entire LSI, and FIGS. 8 to 11 show specific examples of the test procedure for each block constituting the LSI.
According to the test method of the present invention, as shown in FIG. 7, first, the FPGA 120 is inspected using the function of the cell logic block described above, and it is determined whether there is a defect. Is avoided (steps S1 to S3). Next, a test circuit (ALPG) for testing the SRAM 140 is constructed in a portion of the FPGA 120 excluding the defective portion, and the test of the SRAM 140 is executed (steps S4 and S5).
If no defective part is found in the SRAM 140, a test circuit (logic tester) for testing the custom logic circuit 110 and the CPU 130 is constructed in a portion of the FPGA 120 excluding the defective part, and the custom logic circuit 110 and A test of the CPU 130 is executed (steps S6 to S8). At this time, a test pattern or a test pattern generation program is stored using an SRAM that has already been inspected.
If no defect is found, a test circuit (ALPG) for testing the DRAMs 150 to 180 is constructed in the portion of the FPGA 120 excluding the defective part, and the tests of the DRAMs 150 to 180 are sequentially executed (steps). S9, S10). If a defective part is found, a repair program for repairing the defective bit using the redundancy circuit provided in the DRAMs 150 to 180 after being stored in the SRAM 140 or the external storage device. The program is read by the CPU 130 and the program is executed by the CPU 130 to perform bit relief (steps S11 and S12).
Thereafter, a part of the custom logic such as the user logic is formed in the part of the FPGA 120 excluding the defective part, and the system LSI is completed (step S13). In this step S13, first, the TAP 210 is set to the access mode of the connection information storage memory cell SMC in the FPGA 120, and then the defective portion is avoided by using the information indicating the defective portion obtained in step S1. The desired logic is configured by writing the data configuring the user logic into the memory cell SMC of the normal crosspoint switch in the FPGA 120.
FIG. 8 shows a more detailed procedure for self-verification of the custom logic circuit (FPGA) 120 in steps S1 to S3 in the flowchart of FIG.
When the power supply voltage is applied to the device (system LSI) of this embodiment, the logic gate circuits LG1 and LG2 of the cell logic block CLB constituting the FPGA 120 are activated, and if there is a defect, the output of the logic gate circuit LG1. Becomes low level, and its output state is stored in the connection information storing memory cell SMC (step S111).
Next, a test mode select signal TMS and a code to be set in the instruction register 214 are input to the TAP 210 as a test interface circuit using the tester 500, and the access mode of the connection information storage memory cell SMC in the FPGA 120 is input to the TAP 210. (Step S112). Subsequently, data indicating normality (a logic level opposite to a logic level indicating a defect state by self-verification of the cell logic block CLB) is written to the memory cell SMC (step S113). Next, the data in the memory cell SMC is read (step S114).
Then, it is determined which cell logic block CLB is defective by comparing the read data and the write data (step S115). Further, for example, by writing and reading data opposite to the write data, it is possible to detect a cross point switch CSW having a defect in the memory cell SMC itself.
Next, the tester 500 creates a map of the normal crosspoint switch CSW and the cell logic block CLB based on the determination result (step S116). The created map, that is, information indicating normality / abnormality of the crosspoint switch CSW and the cell logic block CLB is stored in a storage device or the like in the tester 500. Then, the HDL description of the SRAM tester (ALPG) constructed on the FPGA 120 is read from the database or the like and logic synthesis is performed by the tester 500 to avoid the defective crosspoint switch CSW and the cell logic block CLB based on the map. Then, data for constructing ALPG (Algorithmic Memory Pattern Generator) is generated (step S117). Then, the generated data is stored in a storage device or the like in the tester 500 (step S118). This data is data for selectively turning on the switch MOSFET Qsw of the normal crosspoint switch CSW according to the logic to be configured.
FIG. 9 shows a more detailed procedure of the inspection of the SRAM unit 140 in steps S4 to S5 in the flowchart of FIG.
In the inspection of the SRAM unit 140, first, a control signal is supplied from the tester 500 to the TAP 210, and the memory cell SMC for storing the cross point switch control information in the FPGA 120 is set to a selected state (step S121). Then, the data for constructing the ALPG stored in the storage device in step S118 is transferred to the selected memory cell SMC (step S122). As a result, a test circuit including an ALPG capable of generating a test pattern for inspecting the SRAM in the FPGA 120 is constructed. The structure of the ALPG constructed in the FPGA 120 and a specific method for constructing the ALPG will be described in detail later.
Next, a program for operating the ALPG to generate a test pattern is written into the memory circuit in the FPGA 120 by the tester 500 via the TAP 210 (step S123). This memory circuit is configured by the cell logic block CLB and the crosspoint switch CSW that constitute the FPGA 120 when the ALPG is constructed in step S122.
Subsequently, a control signal is supplied from the tester 500 to the TAP 210 to place the SRAM unit 140 in a selected state (step S124). Then, the ALPG in the FPGA 120 is activated, the test pattern generation program written in step S123 is executed to generate a test pattern, and the generated test pattern is transferred to the selected SRAM unit 140 via the bus 200 or the like. The supplied test is performed, and the test result is output to the outside (tester 500) via the TAP 210 (steps S125 and S126).
Then, the tester 500 determines whether or not there is a defect in the SRAM unit 140 from the output test result, and selects a non-defective product and a defective product (step S127). Note that the write data formed by the ALPG built in the FPGA 120 is output to the outside as an expected value, and the data read from the SRAM is also output to the outside, so that the expected value and the read data are output by an external tester. It is also possible to configure so as to determine whether or not there is a defect by comparing the two. Further, instead of storing the test pattern generation program in the memory circuit configured in the FPGA, an instruction code configuring the test pattern generation program may be sequentially input from the outside via the TAP.
FIG. 10 shows a more detailed procedure for checking the logic unit, that is, the custom logic unit 110 and the CPU unit 130 in steps S6 to S8 in the flowchart of FIG.
In the inspection of the logic units 110 and 130, first, the tester 500 creates data for constructing a logic tester in the FPGA 120 (step S131). At this time, there is data for building a logic tester by avoiding a faulty circuit using the map of the normal cell logic block CLB and the crosspoint switch CSW generated in step S116 of the FPGA self-verification flow of FIG. Created.
Next, a control signal is supplied from the tester 500 to the TAP 210 to select the memory cell SMC that stores the cross point switch control information in the FPGA 120 (step S132). Then, data for constructing the logic tester stored in the storage device in step S131 is transferred to the selected memory cell SMC (step S133). As a result, a test circuit capable of generating a test pattern for inspecting the logic unit in the FPGA 120 is constructed. At this time, a program for configuring the program memory in the FPGA and operating the logic tester may be transferred to the configured memory. The structure of the logic tester built in the FPGA 120 and the specific procedure for building the logic tester will be described in detail later.
Next, a control signal is supplied from the tester 500 to the TAP 210, and the SRAM unit 140 for which the flow inspection of FIG. 9 has been completed is selected (step S134). Then, a program for generating a test pattern for inspecting the custom logic unit 110 prepared in advance in the tester 500 is written in the SRAM 140 via the TAP 210 by the tester 500 (step S135). As in the case of a program for generating an SRAM test pattern, the logic circuit test pattern is generally longer than the memory test pattern when it is stored in the SRMA that has been inspected without being stored in the memory circuit in the FPGA. This is because a larger memory area is required.
Subsequently, the logic tester in the FPGA 120 is activated, and the test pattern generation program written in the SRAM 140 in step S135 is read and supplied to the custom logic unit 110 while generating a test pattern (step S136). Then, the output signal from the custom logic unit 110 is compared with the expected value, and the test result is output to the outside (tester 500) via the TAP 210 (step S137).
Then, the tester 500 determines whether there is a defect in the custom logic unit 140 from the output test result, and selects a non-defective product and a defective product (step S138).
Next, a test pattern generation program for inspecting the CPU 130 prepared in advance in the tester 500 is transferred to the SRAM 140 (step S139). Subsequently, the logic tester in the FPGA 120 is activated, and the test pattern generation program written in the SRAM 140 in step S135 is read and supplied to the CPU 130 while generating a test pattern (step S140). Then, the output signal from the CPU 130 is compared with the expected value, and the test result is output to the outside (tester 500) via the TAP 210 (step S141).
Then, the tester 500 determines whether or not there is a defect in the CPU 130 from the output test result, and selects a non-defective product and a defective product (step S142).
FIG. 11 shows a more detailed procedure of the inspection of the DRAM units 150 to 180 in steps S9 to S12 in the flowchart of FIG.
In the inspection of the DRAM units 150 to 180, first, the tester 500 creates data for constructing an ALPG (Algoromic Memory Pattern Generator) capable of generating a test pattern for inspecting the DRAM in the FPGA 120 (step S151). At this time, data that constructs an ALPG by avoiding a faulty circuit using the map of the normal cell logic block CLB and the crosspoint switch CSW generated in step S116 of the FPGA self-verification flow of FIG. 8 is created. Is done. Note that the ALPG for inspecting the DRAM is almost the same as the ALPG for inspecting the SRAM, except that a process for determining whether the refresh operation is normal or abnormal is added.
Next, a control signal is supplied from the tester 500 to the TAP 210 to select the memory cell SMC that stores the cross point switch control information in the FPGA 120 (step S152). Then, the data for constructing the ALPG created in step S151 is transferred to the selected memory cell SMC (step S153). As a result, a test circuit including an ALPG for inspecting the DRAM in the FPGA 120 is constructed. The structure of the ALPG constructed in the FPGA 120 and the specific method for constructing the ALPG are almost the same as the ALPG for inspecting the SRAM described in detail later.
Next, a program for operating the ALPG to generate a test pattern is written by the tester 500 to the memory circuit in the FPGA 120 via the TAP 210 (step S154). This memory circuit is configured by the cell logic block CLB and the crosspoint switch CSW that constitute the FPGA 120 when the ALPG is constructed in step S153. The test pattern generation program may be stored in the SRAM 140, or instruction codes may be sequentially input from the outside to the ALPG in the FPGA at the time of DRAM inspection.
Subsequently, a control signal is supplied from the tester 500 to the TAP 210 to place the SRAM unit 140 in a selected state (step S155), and the position of a defective bit detected in a DRAM test (step S159) described later is stored in the SRAM. The fail memory is configured (step S156). Next, a control signal is supplied from the tester 500 to the TAP 210 to set the CPU unit 130 in a selected state (step S157), and a repair program for repairing defective bits in the DRAM is transferred to the memory in the CPU 130 (step S158). . This relief program may be stored in the SRAM 140.
This relief program sets a replacement address in an address conversion circuit in a redundant circuit provided in association with the DRAM 150 according to a predetermined replacement algorithm, and sets a memory row or a memory column including a defective bit as a spare row or a spare row. It can be replaced with a line. Based on the test results, the redundant replacement algorithm itself, which selects the most appropriate spare memory row or spare memory column and replaces it with a defective bit, is known per se. Does not require a replacement algorithm.
Then, the control signal is supplied to the TAP 210 by the tester 500 to activate the DRAM 150 in the FPGA 120, and the test pattern generation program written in step S154 is executed to generate a test pattern. The test pattern is supplied to the selected DRAM unit 150 for testing, and the result, that is, the position of the defective bit is stored in the fail memory configured in the SRAM 140 (step S159). In the DRAM test in step S159, in addition to the read / write test similar to the SRAM test, a test is performed to determine whether a normal refresh operation is performed.
Next, a bit that replaces a memory row or memory column including a defective bit with a spare row or spare column based on the information of the defective bit stored in the fail memory (SRAM 140) by activating the CPU 130 to execute the relief program. Relief processing is performed (step S160). Thereafter, a test of whether or not relief has been normally performed is performed as a series of operations of the relief program (step S161). Then, the test result is output to the tester 500 outside the chip.
Then, the tester 500 determines whether or not there is a defect in the DRAM unit 150 from the output test result, and selects a non-defective product and a defective product (step S162). When the test of the DRAM unit 150 and the bit repair are completed, the process returns to step S159 again, and the test, bit repair, and determination of the test result are similarly performed for the other DRAM units 160, 170, and 180.
Next, the details of the ALPG built in the FPGA 120 when the SRAM 140 is inspected will be described. For example, as shown in FIG. 12, the ALPG is read from the instruction memory 411 in which a microprogram composed of a plurality of microinstruction groups described according to a predetermined test pattern generation algorithm is stored. A program counter 412 for designating the instruction address of the microinstruction, and an instruction code in the microinstruction read from the instruction memory 411 are decoded to control signals for the memory circuit unit and an internal circuit in the test circuit such as the program counter 412 A sequence control circuit 413 for generating a control signal, an address arithmetic circuit 414 for generating a test address according to a microinstruction read from the instruction memory 411, and a test data for generating test data and expected value data according to the read microinstruction The data generation circuit 415 compares the data read from the SRAM unit 140 by the test address with the expected value data generated by the test data generation circuit 415 and determines whether normal writing has been performed. The circuit 416 is configured.
The determination result in the comparison / determination circuit 416 is configured to be output to the outside of the chip via the TAP 210 as a determination signal F indicating data match / mismatch. Test pattern generation algorithms themselves are known, and applying them does not require a new algorithm especially for this embodiment.
The plurality of microinstructions stored in the instruction memory 411 can be described using an existing tester language or test language. A test pattern (address and data) is generated according to the predetermined algorithm defined by the plurality of instructions. The tester language is regarded as an effective instruction language for efficiently generating a test pattern including an address and data. The tester language is a language used in the tester industry. For example, a language compatible with the tester language of Advantest Corporation is used. This is because existing test pattern program data can be used. The language for describing the predetermined algorithm is not limited to the tester language, and may be any instruction language that can generate a test pattern including an address and data.
When the instruction memory 411 is composed of SRAM memory cells, it is necessary to load a program into the instruction memory prior to performing the test. When the FPGA 120 includes a non-volatile memory, the program is stored in a part of the address area of the non-volatile memory, and in response to the transition to the SRAM test mode, the address is stored from the address area in which the program is stored. It is preferable to load the program into the instruction memory 411. Instead of providing the instruction memory 411, continuous instruction codes may be sequentially input from an external tester to the ALPG sequence control unit 414 built in the FPGA 120 to generate an SRMA test pattern.
If the CPU 130 and the custom logic circuit 110 are provided in addition to the memory as in the system LSI of FIG. 1 to which this embodiment is applied, the memory circuit 140 (150 to 180) is provided as shown in FIG. Further, a variable bus configuration in which a signal switching circuit 230 including a dedicated bus 220 and change-over switches SW1 to SWn may be provided between the CPU 130 and the custom logic circuit 110 and the FPGA 120 on which the test circuit is constructed.
The signal CS for controlling the change-over switches SW1 to SWn in the signal change-over circuit 230 may be generated by an instruction in the ALPG and given to the switches SW1 to SWn when testing the memory circuit. Further, the switching control signal CS may be formed based on a test mode designation signal supplied from the outside.
The change-over switches SW1 to SWn are not only used for switching the connection between the memory circuit 140 and the CPU 130 and the custom logic circuit 110, or between the memory circuit 140 and the FPGA 120 on which the ALPG is constructed, but also the CPU 130 and the custom logic circuit. 110 and the FPGA 120 are preferably connected to each other.
FIG. 14 shows a configuration example of the instruction format of the microinstruction stored in the instruction memory 411. As described above, the format of this microinstruction is based on the tester language.
The microinstruction of this embodiment stores an address field MFa for storing a PC address indicating a jump address of an instruction used in the jump instruction, an operation code field MFb for storing a sequence control code, and the number of instruction repetitions. Operand field MFc, control field MFd for storing a control code for instructing output and reading / writing of an address and data, an address operation code field MFe for storing an address operation instruction code, and a data generation instruction code It consists of a data generation code field MFf and the like to be stored. The address field MFa is regarded as a field that defines the address of the instruction to be executed next.
A feature of the microinstruction as the tester language used in this embodiment is that two instructions are executed in parallel by specifying a test address operation and a data operation by one instruction.
FIG. 15 shows a configuration example of the sequence control circuit 413. The sequence control circuit 413 of this embodiment includes an instruction decoding control unit 430 including a decoder that decodes the control code of the operation code field MFb to form a control signal, and an incrementer for “+1” the value of the program counter 412 431, a multiplexer 432 that selects either the incrementer 431 or the jump address in the address field MFa and supplies it to the program counter 412, a plurality of index registers 433 that hold the number of repetitions in the operand field MFc, A decrementer 434 for decrementing the value of the index register 433, a working register 435 composed of a plurality of planes or ways holding the decremented value, and a jxd instruction described later (see Table 1). Data used in A flag 436 indicating the presence / absence of a transfer, a plurality of flags 437 indicating the presence / absence of transfer of operands used in the jindex instruction to the program counter 412, and a plurality of multiplexers selectively supplying the values of the registers 433 and 435 to the decrementer 434 438 and a demultiplexer 439 that distributes the value of the decrementer 434 to any plane of the working register 435.
Table 1 shows the types and contents of the opcodes used for the sequence control defined or described in the opcode field MFb in the microinstruction.
[Table 1]
Figure 0004147005
In Table 1, the instruction indicated by “nop” is a no-operation instruction instructing to return the value of the program counter 412 to “+1” by the incrementer 431 and returning to the program counter 412, that is, any operation other than updating the program counter. It is an instruction for instructing to move to the next instruction without performing.
In addition, “jindex1” to “jindex4” are instructions prepared for turning a loop of instructions by jump. In the memory pattern test, the number of instructions, that is, the program length can be reduced by repeatedly executing the same instruction using the jump instruction (for example, by incrementing the address to the final address, There is a case where “1” is written to and read from all memory cells. In this embodiment, an index register 433 is provided so that the number of loops (jumps) can be set. In addition, four jump instructions, four index registers 433, and four working registers 435 are provided so that a plurality of types of determination methods can be executed.
Since each jump instruction has the same control content, the control operation by “jindex1” will be described below, and description of the other jump instructions “jindex2” to “jindex4” will be omitted. When the jindex1 instruction is read from the opcode field MFb, it is determined whether it is the first jindex1 instruction, and the determination result is reflected in the flag 437. Specifically, the flag jf1 = 0 is set for the first jindex1, and jf1 = 1 is set for the second and subsequent times.
When the jindex1 instruction is read when the flag jf1 = 0, the multiplexer 432 is controlled so that the PC address as the jump destination address in the address field MFa of the microinstruction is set in the program counter 412. Thereby, the execution sequence of the microinstruction is jumped to the address, and the flag jf1 is set to “1”. At the same time, the loop count defined in the operand field MFc is read into idx of the index register 433.
When the jindex1 instruction is read when the flag jf1 = 1, the PC address in the address field MFa of the microinstruction is set in the program counter 412. The number of loops in idx1 of the index register 433 is supplied to the decrementer 434 via the multiplexer 438 and decremented by “−1”. The decremented value is stored in idxw1 of the working register 435 via the demultiplexer 439. When idxw1 of the working register 435 becomes “0”, instead of setting the PC address in the address field MFa of the microinstruction to the program counter 412, the address of the program counter 412 is “+1” by the incrementer 431. Multiplexer 432 is controlled to return to program counter 412.
Therefore, if the jindex instruction is defined or described in the opcode field MFb of the microinstruction and the PC address as the jump destination address of the microinstruction is defined or described in the address field MFa, it is specified in the operand field MFc. The same index instruction is repeatedly executed as many times as the number of loops. Finally, the program counter 412 is incremented, and control is performed so as to proceed to the next microinstruction and exit from the loop.
The “jxd” instruction in Table 1 refers to the dflg in the flag 436, and is an instruction for manipulating the value of the program counter according to the value of the dflg flag. When the dflg flag in the flag 436 is a first value such as “0”, the “jxd” instruction transfers the operand to the program counter, causes the program to jump to the instruction at the jump address indicated by the operand, and , The dflg flag is set to a second value such as “1”. On the other hand, when the dflg flag is a second value such as “1”, the “jxd” instruction increments the value of the program counter, returns it to the program counter, and sets the dflg flag to “0”. Reset to a value of 1.
The “jmp” instruction is an instruction that transfers an operand to the program counter and instructs the program to jump to the instruction at the jump address indicated by the operand.
The “stop” instruction is a stop instruction for instructing to end the sequence control.
FIG. 16 shows a configuration example of the address calculation circuit 414.
The address calculation circuit 414 of this embodiment is roughly composed of an X address calculation unit 441 that generates an X address and a Y address calculation unit 442 that generates a Y address. Since the X address calculation unit 441 and the Y address calculation unit 442 have substantially the same configuration, the configuration of the X address calculation unit 441 will be described below, and the description of the configuration of the Y address calculation unit 442 will be omitted. In addition, by providing an impossible Z address calculation unit as necessary, partial pattern generation (partial pattern) can be performed.
The X address calculation unit 441 includes an initial value register Xhold that stores the initial value of the X address, zero setting means 443 that holds “0”, and a multiplexer MUX1 that selects either the initial value of the X address or “0”. And the base register Xbase that holds the selected initial value or “0”, the first arithmetic unit ALU1 that adds the value of the register Xbase, the operation result of the arithmetic unit ALU1, or “0” or a feedback value A second multiplexer MUX2 that selects the current value, a current register Xcurrent that holds the selected value, a second arithmetic unit ALU2 that adds or subtracts the value of the register Xcurrent, and the second arithmetic unit ALU2 or the first operation A third multiplexer MUX3 that selects one of the outputs of the ALU1 It is composed of a reversible inverter INV output.
The inverter INV is provided because a malfunction due to address signal switching noise may be tested in a memory pattern test, and an inverted signal of the address signal needs to be output at that time. By using this inverter INV, an inverted signal of the address signal in the test can be easily formed.
Although not particularly limited, in this embodiment, the X address generated by the arithmetic units ALU1 and ALU2 of the X address arithmetic unit 441 is directed to the Y address side, and the Y address generated by the Y address arithmetic unit 442 is the X address. Each of the third multiplexers MUX3 is configured so that it can output to the side.
Thereby, it can be used as a test circuit for any of a plurality of types of memories, for example, an address multiplex type memory and an address non-multiplex type memory. That is, by simply rewriting the microinstruction stored in the instruction memory 411, it is possible to generate or inspect a test pattern necessary for all the memories.
The difference between the X address computing unit 441 and the Y address computing unit 442 is that the first computing unit ALU1 of the Y address computing unit 442 is different from the first computing unit ALU1 of the Y address computing unit 442 when the first computing unit ALU1 of the X address computing unit 441 overflows. The borrow signal BR is supplied.
Table 2 shows the operation codes used for the Y address operation (base operation) in the first operation unit ALU1 of the Y address operation unit 442 described or defined in the operation code field MFe in the microinstruction. Types and their contents are shown.
[Table 2]
Figure 0004147005
In Table 2, Ybase ← 0 is an instruction for instructing the value of the base register Ybase to be “0”. Ybase ← Yhold is an instruction for instructing to put the contents of the initial value register Yhold into the base register Ybase. Ybase ← Ybase + 1 is an instruction for instructing to increment (+1) the value of the base register Ybase and return to the register Ybase. Ybase ← Ybase + 1 (BR) means that if the value of the base register Xbase is not the maximum value, the value of Ybase is left as it is, and if the value of Xbase is the maximum value, the value of Ybase is incremented and returned to the register Ybase. It is a command to command. At this time, the borrow signal BR is supplied from the first arithmetic unit ALU1 to the second arithmetic unit ALU2.
Table 3 shows types of operation codes used for address calculation in the first arithmetic unit ALU1 of the X address calculation unit 441 and their contents.
Table 4 shows types of operation codes used for Y address calculation (current calculation) in the second arithmetic unit ALU2 of the Y address calculation unit 442 and the contents thereof.
Table 5 shows types of operation codes used for address calculation in the second arithmetic unit ALU2 of the X address calculation unit 441 and their contents.
In Table 4, the left column is an ALPG description written using a tester language, and the right column is a functional operation level description corresponding to the ALPG description. Functions can be expressed by describing this description according to the rules of the hardware description language (HDL description).
[Table 3]
Figure 0004147005
[Table 4]
Figure 0004147005
[Table 5]
Figure 0004147005
FIG. 17 shows a configuration example of the test data generation circuit 415.
The test data generation circuit 415 of this embodiment includes an initial value register Thold that stores the initial value of write data or an expected value, an inverter INVERT1 that can invert the value of the initial value register Thold, and test data or expectation to be output. A base data register Tp that holds reference data of values, an arithmetic unit ALU having a bit shift function, and an inverter INVERT2 capable of inverting the output of the arithmetic unit ALU. In the above embodiment, the bit width is 18 bits. However, the test data circuit can be expanded as necessary to configure a desired bit width.
Table 6 shows the types and contents of control codes used for operation control in the test data generation circuit 415 defined or described in the data generation code field MFf in the microinstruction. In Table 6, the instructions represented by the same rules as the instructions in Tables 3 to 5 are almost the same instructions.
Tp ← Tp * 2 controls the register Tp and the arithmetic unit ALU, processes the 18-bit data in the register Tp by the arithmetic unit ALU, shifts the bit string by one bit to the MSB side or the LSB side, and returns it to the register Tp. It is an instruction. A test for writing data “1” to a memory cell bit by bit even if the memory unit is a type of memory in which data is read / written in units of 1 word or 1 byte by this instruction. Data can be generated relatively easily.
[Table 6]
Figure 0004147005
Table 7 shows an example of a list of microinstructions related to a marching test, which is one of memory testing methods.
The marching test is performed as follows. Among all the bits of the memory cells in the memory array 1, one bit among them is selected in order. Data “0” is written in the selected memory cell. Thereafter, the written data “0” is read. Subsequently, among all the bits, one bit among them is selected in order. Data of “1” is written into the selected memory cell. Thereafter, the written data “1” is read out and compared with the expected value to determine the presence or absence of a defect.
As an example, a marching test assuming a memory array having an X address of 4 bits and a Y address of 4 bits and a storage capacity of 256 bits will be described.
[Table 7]
Figure 0004147005
In Table 7, symbols W and R are control codes that indicate read / write with respect to the memory described or defined in the control field MFd. This control code is represented by a bit corresponding to W and a bit corresponding to R, that is, 2 bits. The number described in the “PC address” column indicates the jump address, and means that after executing the microinstruction, the program jumps to the microinstruction of the number described in the PC column and loops or jumps. is doing. Further, the symbols X ← Xbase and Y ← Ybase described in the column “control instruction etc.” mean that the values of the base registers Xbase and Ybase are output as the X address and the Y address, respectively.
FIG. 18 and FIG. 19 show an example of a processing flow according to the microinstruction list in Table 7 when a marching test of the SRAM 140 is performed by a test circuit (ALPG) comprising a control unit and a calculation unit of the microprogram control system. Show. Among these, FIG. 18 shows a flow of sequence control by the operation code and the operand in the microinstruction. FIG. 19 shows a flow of generating test addresses and test data (write data, expected value data) using address operation codes and data generation codes executed in parallel with the sequence control flow shown in FIG. . These processes can be executed by operating the sequence control circuit 413, the address operation circuit 414, and the data generation circuit 415 using the instruction codes described in Tables 1 to 6 above.
Hereinafter, the marching test procedure will be described with the steps of FIGS. 18 and 19 corresponding to each other.
When the address of the first instruction shown in the list of Table 7 is set to the program counter 412 from the outside as the start address, the flow of FIGS. 18 and 19 is started. First, when the first microinstruction in Table 7 is read from the instruction memory 411, since the operation code is “nop”, the sequence control circuit 413 does nothing and advances the program counter 412 by one (step S201). On the other hand, the address calculation circuit 414 and the data generation circuit 415 set the initial value “0” stored in the initial value registers Xhold, Yhold, and Told to the base registers Xbase, Ybase, and Tp, respectively (step S221).
Next, since the program counter 412 has been incremented in step S201, the second microinstruction in Table 7 is read. Since the operation code of the second microinstruction is “index1”, the sequence control circuit 413 sets the number of operand repetitions in the index register idx1 (step S202).
The first set value of the index register idx1 corresponds to the capacity (number of bytes or number of words) of the memory array 1. On the other hand, the address calculation circuit 414 outputs the values of the base registers Xbase and Ybase as the X address and the Y address by the operation codes X ← Xbase and Y ← Ybase, respectively. The value “0” of the register Tp is output from the data generation circuit 415. At this time, the control signal W (write) is output. As a result, in the memory array 1, the memory cell corresponding to the X and Y addresses output from the address arithmetic circuit 414 is selected and data “0” is written (step S222).
The sequence control circuit 413 decrements the value of the index register idx1 by the operation code “jindex1”, puts it in the working register idxw, and repeats the same instruction until it becomes “0” (steps S203 and S204).
Further, the address calculation circuit 414 increments the value of the base register Xbase, that is, the X address by the operation code Xbase ← Xbase + 1, and increments the Y address when the base register Xbase reaches the maximum value by Ybase ← Ybase + 1 (BR). Since the first set value of the index register idx1 is the same as the capacity of the memory array 1, data “0” is sequentially written in all the memory cells in the memory array 1 by repeating the above operation (step S223, step S223). S224).
When the value of the working register idxw becomes “0”, the sequence control circuit 413 increments the value of the program counter 412 and reads the third microinstruction in Table 7. Since the operation code is “nop”, the sequence control circuit 413 does nothing and advances the program counter 412 by one (step S205).
On the other hand, the address calculation circuit 414 increments the X and Y addresses according to the operation code of the third microinstruction and outputs the values stored in the base registers Xbase and Ybase as the X address and Y address, respectively. At this time, the values of the base registers Xbase and Ybase have returned to “0”. At this time, the data generation circuit 415 outputs “0”. Further, a control signal R (readout) is output according to the control code of the control field MFd. As a result, the data at the address is read and compared with the expected value data “0” (steps S225 and S226).
Next, since the program counter 412 is incremented in step S205, the fourth microinstruction in Table 7 is read. Since the operation code of the fourth microinstruction is “index1”, the sequence control circuit 413 sets the number of operand repetitions in the index register idx1 (step S206). The first set value of the index register idx1 corresponds to the capacity (number of bytes or number of words) of the memory array 1. However, the jind1 instruction code of the fourth instruction has a PC address (jump address) different from the jindex1 instruction code of the second instruction, and therefore returns to the third instruction (opcode is “nop”) after execution.
On the other hand, the address calculation circuit 414 outputs the values of the base registers Xbase and Ybase as the X address and the Y address by the operation codes X ← Xbase and Y ← Ybase, respectively. In addition, data “1” obtained by inverting the value “0” of the register Tp is output from the data generation circuit 415 by the data generation code Dinvert. At this time, the control signal W (write) is output. As a result, in the memory array 1, the data “1” is written into the output memory cell at the X and Y addresses (step S227).
The sequence control circuit 413 decrements the value of the index register idx1 by the operation code “jindex1”, puts it in the working register idxw, and returns to the “nop” instruction and repeats it until it becomes “0” (steps S207 and S208). Further, the address calculation circuit 414 increments the value of the base register Xbase, that is, the X address by the operation code Xbase ← Xbase + 1, and increments the Y address when the base register Xbase reaches the maximum value by Ybase ← Ybase + 1 (BX). Since the first set value of the index register idx1 is the same as the capacity of the memory array 1, all the memory cells in the memory array 1 are sequentially read and compared with the expected value by the above procedure. The operation of writing “1” to the address is repeated (steps S227 and S228).
Next, the fifth microinstruction in Table 7 is read. Since the operation code of the fifth microinstruction is “index1”, the sequence control circuit 413 sets the number of operand repetitions in the index register idx1 (step S209). The first set value of the index register idx1 corresponds to the capacity (number of bytes or number of words) of the memory array 1. This fifth jindex1 instruction code has the same PC address as the second jindex1 instruction code, and is an instruction that repeats the same instruction. On the other hand, the address calculation circuit 414 outputs the values of the base registers Xbase and Ybase as the X address and the Y address by the operation codes X ← Xbase and Y ← Ybase, respectively. In addition, data “1” obtained by inverting the value “0” of the register Tp is output from the data generation circuit 415 by the data generation code Dinvert. At this time, a control signal R (write) is output. As a result, in the memory array 1, data is read from the memory cell designated by the outputted X and Y addresses (step S229).
The sequence control circuit 413 decrements the value of the index register idx1 by the operation code “jindex1”, puts it in the working register idxw, and repeats the “jindex1” instruction until it becomes “0” (steps S210 and S11). Further, the address calculation circuit 414 increments the value of the base register Xbase, that is, the X address by the operation code Xbase ← Xbase + 1, and increments the Y address when the base register Xbase reaches the maximum value by Ybase ← Ybase + 1 (BR). Since the first set value of the index register idx1 is the same as the capacity of the memory array 1, all the memory cells in the memory array 1 are sequentially read out by repeating the above operation, and the expected value “1” is obtained. They are compared (steps S230 and S231).
Next, the sixth microinstruction in Table 7 is read. Since the operation code of the sixth microinstruction is “jxd”, the sequence control circuit 413 jumps to the jump address indicated by the PC address in the address field MFc. In this embodiment, the process returns to the second instruction “index1” in Table 7. When the jindex1 instruction is read again, the flag dflg is set to “1”. Thus, in the second round of the sequencing process, “YES” is determined in step S212 in FIG. 18, and the marching test is terminated.
On the other hand, when the microinstruction list for the second round is executed, in steps S222 to S231 in FIG. 19, the data generation circuit 414 writes the write data and the expected value data as “1” continuously to all the bits. The written data is read bit by bit and the inverted data “0” is written therein, and then all bits are continuously read. In the flow of FIG. 19, in step S232, it is determined whether or not data writing / reading reverse to the first round in steps S222 to S231 has been completed (reverse data end determination). ing. The back data generation for performing the inspection using the back data is generated by controlling the INVERT and dflg of the Thold in FIG.
As described above, the control according to the flow of FIG. 18 and FIG. 19 uses the instruction codes described in Tables 1 to 6 to change the microinstructions in the instruction memory 411 as shown in the following instruction list in Table 7. The marching test can be executed with only six micro instructions.
Further, in the test circuit (ALPG) of the embodiment, by using the instruction codes described in Tables 1 to 6, “0” or “1” is set in all the memory cells in addition to the marching test. An all “0” determination test or an all “1” determination test for checking whether writing is possible, or so-called N for writing “1” in a certain bit and checking all other bits for erroneous writing. 2 A square pattern test (or galloping test) or the like can also be performed.
Table 8 shows N 2 A microinstruction list for a power pattern test is shown. Note that ixd is a command for generating a back test pattern by controlling the inverter INVERT controlled by the flag dflg under the initial value register Thold. When the flag dflg is 0, the value of the initial value register Thold is directly stored in the register Tp. When the flag dflg is 1, the opposite pattern is set in the register Tp.
[Table 8]
Figure 0004147005
In the above embodiment, the value initially set in the program counter 412 is changed to the instruction address of the first microinstruction shown in Table 7 or Table 8, so that the marching test or N 2 A square pattern test can be started.
Next, details of a logic tester built in the FPGA 120 when the custom logic unit 110 and the CPU 130 are inspected will be described.
The logic tester has a configuration similar to the ALPG shown in FIG. 12 that generates the test pattern of the memory. For example, as shown in FIG. 20, a plurality of logic testers described according to a predetermined test pattern generation algorithm are used. An instruction memory 411 storing a microprogram consisting of a group of microinstructions, a program counter 412 for designating a microinstruction to be read from the instruction memory 411, and an instruction code in the microinstruction read out from the instruction memory 411 are decoded. An instruction decoding control circuit 430 that forms a control signal for the circuits in the control unit 400 such as the program counter 412, a timing generation unit 420 that forms a timing control signal based on the reference clock φ 0, and a timing setting bit MFd (TS in the microinstruction Bit) Data register set 417 for outputting control data to the grayed generator 420, and a like decoder 418 to read the control data by decoding the timing setting bits MFd in microinstruction (TS bits) from the data register set 417.
In addition, in the case of a circuit whose function is specified among the logic circuits to be tested (for example, ALU: Arithmetic Logic Unit), an appropriate test pattern forming method is often already established. By using the test pattern assets, it is possible to generate an efficient test pattern. As for the combinational logic circuit, an efficient test pattern generation method called a D-algorithm based on the fault assumption method and the idea of a single fault that one circuit has one fault is known. By using this method, a microprogram for generating a test pattern can be shortened, and an increase in the capacity of the instruction memory 411 can be suppressed to a realizable level.
In this embodiment, although not particularly limited, the timing setting bit TS decoded by the decoder 418 is composed of 2 bits, and the data register set 417 stores seven control data. One of these control data is data “RATE” that defines a test cycle, and the remaining six control data give the output timing of a high level or low level signal for each signal line of the tester dedicated bus 2. The control data “ACLK1” and “ACLK2” of the type, the two types of control data “BCLK1” and “BCLK2” for giving rise timing of the pulse signal, and the comparison output timing of the fall timing and expected value of the pulse signal are given. Two types of control data “CCLK1” and “CCLK2”.
When each of these control data is supplied to the timing generator 420, a signal RATE having a predetermined timing is supplied to the program counter 412 with respect to the control data RATE, and the microinstruction code is fetched from the instruction memory 411. Is called. When “ACLK1” to “CCLK2” are supplied to the timing generator 420 as control data, a clock corresponding to the control code is output from the timing clocks ACLK1 to CCLK2 to the signal generator / comparator 300. Connection and selection for use of each clock are appropriately performed as necessary.
Further, the program counter 412 selects either the incrementer 421 for incrementing the value of the program counter 412 to “+1” or the jump address in the incrementer 421 or the address field MFa. Multiplexer 422 to be supplied to, index register 423 for holding the number of repetitions in the operand field MFc, decrementer 424 for decrementing the value of the index register 423, and holding the value decremented by “−1” A working register 425, a flag 427 indicating whether or not an operand used in a predetermined instruction is transferred to the program counter 412, a multiplexer 428 for selectively supplying the values of the registers 423 and 425 to the decrementer 424, Such a demultiplexer 429 is provided to distribute the value of Rimenta 424 to one of the plane of the working register 425.
In this logic tester, an operand field MFc for storing the number of instruction repetitions is provided in the microinstruction code, and an index register 423 for holding the number of repetitions is provided. Therefore, when the same test signal is repeatedly generated, The number of necessary microinstructions can be reduced and the microprogram can be shortened. In this embodiment, since the index register 423, working register 425, and flag 427 are provided with a plurality of planes (four in the figure), sub-loop processing within a certain loop processing, and further sub-loop processing within the sub-loop processing. Can be easily executed, and the microprogram can be shortened.
FIG. 21 shows an embodiment of the signal forming / comparing unit 300. In the circuit of FIG. 21, only the driver / comparator circuit corresponding to one of the signal lines constituting the tester dedicated bus 220 is representatively shown, but actually the tester dedicated bus 220 is configured. 21 is provided as many as the number of signal lines.
As shown in FIG. 21, the driver / comparator circuit of this embodiment compares a driver circuit (signal forming circuit) 340 that forms a signal to be output to a tester dedicated bus with a signal on the tester dedicated bus and an expected value signal. Thus, the comparator circuit (comparing circuit) 350 for comparing the coincidence / non-coincidence and the switching circuit 360 for switching the driver circuit 340 and the comparator circuit 350 are configured. The switching circuit 360 includes a transmission gate TG1 provided between the driver circuit 340 and the input / output node Nio, and a transmission gate TG2 provided between the input / output node Nio and the comparator circuit 50. The control unit One of them is opened according to the input / output control bit I / O supplied from 400, and the other is shut off.
The driver circuit 340 includes an edge-triggered flip-flop 341 that captures and holds the input / output control bit TP by the timing clock ACLKi supplied from the timing generator 420, and timing clocks BCLKi and CCLKi supplied from the timing generator 420. An OR gate 342 for taking a logical sum, a J / K flip-flop 343 having the output of the OR gate 342 and the output of the edge trigger flip-flop 341 as input signals, the output of the J / K flip-flop 343, and a control unit An AND gate 344 having the input / output control bit CONT supplied from 400 as an input signal, and an AND having the output of the edge trigger flip-flop 341 and the input / output control bit CONT supplied from the controller 400 as input signals Gate 45, and a driver 346 that drives the tester en by the output of these AND gates 344 and 345.
On the other hand, the comparator circuit 350 includes an AND gate 351 having the timing clock CCLKi supplied from the timing generator 420 and the input / output control bit CONT supplied from the controller 400 as input signals, and the output of the D-type flip-flop 341. An exclusive OR gate 352 having (expected value) and a signal on the tester dedicated bus supplied via the transmission gate TG2 as input signals, and outputs from the exclusive OR gate 352 and the AND gate 351 as input signals. An AND gate 353 and a flip-flop 354 that latches the output of the AND gate 353 are configured, and a signal obtained by logically summing the outputs of all the comparator circuits 350 is output as a total fail signal TFL. . The input / output control bits I / O, TP, and CONT correspond to the control signals.
As shown in FIG. 20, the microinstruction in the test circuit of this embodiment stores an address field MFa in which a PC address indicating a jump address of an instruction used in the jump instruction is stored, and a sequence control code. An operation code field MFb, an operand field MFc in which the number of instruction repetitions and the like are stored, and a timing setting field MFd in which a timing setting bit TS for reading a control signal for the timing generator 420 from the data register set 14 is stored. The input / output control field MFe in which the input / output control bits of the signal forming / comparing unit 300 are stored.
The timing setting bit TS stored in the timing setting field MFd is 2 bits in this embodiment as described above, but 3 or more bits may be provided. The input / output control bits stored in the input / output control field MFe correspond to the three signal lines of the tester dedicated bus 220, ie, 3 bits of driver bit TP, I / O bit, and control bit CONT. Is one set, and only n sets are provided. Among these bits, the I / O bit is a control bit for designating whether it is an input or an output. When it is “1”, the transmission gate TG1 is opened and TG2 is shut off, and the driver output signal corresponds to the tester dedicated bus 220. When it is “0”, the transmission gate TG 1 is shut off and TG 2 is opened to input the signal on the corresponding signal line of the tester dedicated bus 220 to the comparison gate 352. The driver bit TP and the control bit CONT specify whether the output is high output or low output, positive pulse or negative pulse output, input invalid state, or output high impedance state according to the combination.
Table 9 shows the relationship between the input / output control bits TP, I / O, CONT and the operation state of the signal forming / comparing unit 300.
[Table 9]
Figure 0004147005
As shown in Table 9, when the input / output control bits TP, I / O, and CONT are “111”, the driver circuit 340 outputs a high level signal, and when it is “011”, the driver circuit 340 A low level signal is output. When “110”, the driver circuit 340 outputs a positive pulse signal, and when “110”, the driver circuit 340 outputs a negative pulse signal. When the input / output control bits TP, I / O, and CONT are “101”, the comparator circuit 350 expects a high level input signal, and when it is “001”, the comparator circuit 350 expects a low level input signal. When “100”, the control is performed so as to invalidate the input signal.
In the signal forming / comparing unit 300 of this embodiment, the state where the control bits TP, I / O, and CONT are “000” has no meaning. However, when the control bits TP, I / O, and CONT are “000”, for example, the transmission gate TG1 is closed and TG2 is opened, and the exclusive OR gate 352 operates at two levels between the high level and the low level. The signal forming / comparing unit 300 is configured so that the state (high impedance state) in which the potential of the input / output node Nio connected to the tester dedicated bus 220 exists between the two levels as a Schmitt circuit to be compared can be compared. Is also possible.
FIG. 22 shows an example of the timing clocks ACLK1 to CCLK2 supplied from the timing generation unit 420 and signals output from the signal formation / comparison unit 300 onto the tester dedicated bus 220 in the above embodiment. 22, (a) is a reference clock φ0 supplied from the outside, (b) to (g) are waveforms of timing clocks ACLK1 to CCLK2, and (h) is “1” as an output test signal in Table 9. The waveform of the output signal of the terminal which is designated and ACLK1 is selected as the clock is shown. Further, (i) shows the waveform of the output signal of a terminal in which “0” is designated as the output test signal in Table 9 and ACLK2 is selected as the clock. Further, (j) shows a waveform of an output signal at a terminal in which “P” is designated as the output test signal in Table 9 and BCLK1 and CCLK1 are selected as clocks. Further, (k) shows the waveform of the output signal at the terminal where “N” is designated as the output test signal in Table 9 and BCLK2 and CCLK2 are selected as the clock.
As can be seen from FIG. 22, a high-level signal as shown in FIG. 22 (h) is output from the terminal where the input / output control bits TP, I / O, CONT are set to “111” and the clock ACLK1 is designated according to the clock ACLK1. 22 is output from a terminal to which TP, I / O, CONT are set to “011” and the clock ACLK2 is designated in accordance with the clock ACLK2, and TP, I / O, From the terminal where CONT is set to “110” and the clocks ACLK1, BCLK1, and CCLK1 are designated, a positive pulse as shown in FIG. 22 (j) having BCLK1 and CCLK1 as an edge is output according to the data set by the clock ACLK1. TP, I / O, CONT are set to “010” and clocks ACLK2, BCLK2, CCLK2 Negative pulse as shown in FIG. 22, the edge of BCLK2, CCLK2 accordance with the data which is set by the clock ACLK2 from the designated terminal (k) is output.
Further, although not shown in the figure, at the terminal where the input / output control bits TP, I / O, CONT are set to “101” and the clock CCLK1 is designated, the expected value is set to the high level and the clock CCLK1 in FIG. Comparison is performed, and at the terminals where TP, I / O, and CONT are set to “001” and the clock CCLK2 is designated, the expected value is the low level, and the comparison is performed using the clock CCLK2 of FIG. Note that the selection of the clock is not limited to the above, and can be any combination.
As described above, in the above-described embodiment, a signal indicating whether the circuit is normal or abnormal can be output for each basic logic cell consisting of a plurality of basic logic cells (cell logic blocks) on the semiconductor chip, and any logic can be output. A variable logic circuit such as a configurable FPGA (Field Programmable Gate Array) is mounted. Thereby, it is possible to know that there is a defective part and its position in the variable logic circuit (FPGA) without using an external tester. In addition to improving the yield by avoiding defective parts and configuring the logic, a failure of the test circuit itself occurs when a test circuit is built using this variable logic circuit (FPGA) to test other internal circuits. It is possible to avoid outputting an erroneous test result due to.
The semiconductor integrated circuit testing method according to the present invention includes a variable logic circuit (FPGA) capable of outputting a signal indicating whether the circuit is normal or abnormal and capable of configuring any logic, and a memory circuit capable of reading and writing. In a built-in semiconductor integrated circuit, first, a self-test is performed by the above-described variable logic circuit (FPGA), and only a basic logic cell excluding the defective portion is obtained according to a predetermined algorithm using information indicating the defective portion obtained as a result. A memory test circuit for inspecting the circuit was constructed to inspect the memory circuit. As a result, it is possible to test the memory circuit inside the LSI without using a high-function external tester.
Further, another test method for a semiconductor integrated circuit according to the present invention includes a custom logic circuit such as a user logic circuit in which the semiconductor integrated circuit constitutes a CPU (Central Processing Unit) and a logic function requested by a user together with a memory circuit. In such a case, a test circuit (logic tester) for generating a test signal and an expected value signal for the CPU and custom logic circuit in accordance with a predetermined algorithm is constructed in the FPGA, and the test is already determined to be normal by the test. The test circuit or test pattern generation program is stored in the memory circuit, and the test circuit built in the FPGA is activated to test the CPU and custom logic circuit. As a result, it is possible to test the CPU and logic circuit in the LSI without using a high-function external tester.
Furthermore, in the method of manufacturing a semiconductor integrated circuit according to the present invention, first, a self-test is performed by the variable logic circuit, and the defective portion is removed from the variable logic circuit by using information obtained as a result of the self-test. Constructing a memory test circuit for inspecting the first memory circuit according to a predetermined algorithm using only the basic logic cell, inspecting the first memory circuit,
Next, in the variable logic circuit, a logic test circuit for inspecting a custom logic circuit or a central processing unit according to a predetermined algorithm with only basic logic cells excluding defective portions is constructed and tested in the first memory circuit. Store the pattern or test pattern generation program, inspect the custom logic circuit or central processing unit,
After that, in the variable logic circuit, a memory test circuit for inspecting the second memory circuit according to a predetermined algorithm with only basic logic cells excluding defective portions is constructed, and the second memory circuit is inspected,
Thereafter, based on the inspection result of the second memory circuit, a bit relief process is performed in which a defective bit in the second memory circuit is replaced with a spare bit using a redundant circuit associated with the second memory circuit. Thus, the bit repair of the memory circuit can be automatically performed, and the yield and productivity of the semiconductor integrated circuit can be improved.
In the method of manufacturing a semiconductor integrated circuit according to the present invention, a desired logic is configured in the variable logic circuit after the bit relief process of the second memory circuit. Since no useless circuit remains, there is an effect that the hardware overhead associated with providing the test circuit inside the LSI can be reduced.
In the semiconductor integrated circuit manufacturing method according to the present invention, the information indicating the position of the defective bit is stored in the first memory circuit when the second memory circuit is inspected. There is an effect that failure analysis can be easily performed by reading information stored in one memory circuit.
The invention made by the present inventor has been specifically described based on the embodiments. However, the present invention is not limited to the above embodiments, and various modifications can be made without departing from the scope of the invention. Nor. For example, in the above embodiment, the output state of the exclusive OR gate circuit LG2 that detects and outputs whether or not the circuit in the cell logic block CLB is normal is stored in the memory cell SMC in the crosspoint switch circuit CSW. However, it may be configured to output to the outside of the LSI chip.
In the above embodiment, the fail memory for storing the position of the defective bit when the DRAMs 150 to 180 are tested is configured in the SRAM 140. However, the fail memory may be provided in an external tester. Good. Furthermore, in the above embodiment, TAP defined by IEEE is used as a test interface circuit. However, the present invention is not limited to this, and a dedicated interface circuit suitable for this embodiment is separately designed and provided. You may do it.
Industrial applicability
In the above description, the self-verification method in a system LSI having a CPU, SRAM, DRAM, and custom logic circuit, which is a field of use that is based on the invention made by the present inventor, has been described as an example. However, the present invention is not limited thereto, and a logic LSI including a CPU and SRAM and a custom logic circuit, a logic LSI including a CPU and a DRAM and a custom logic circuit, a logic LSI including a CPU and a custom logic circuit, an SRAM and a DRAM, and a custom logic circuit The present invention can also be used in a logic integrated circuit or a semiconductor integrated circuit in which an analog circuit is mounted in addition to the digital circuit as described above.
[Brief description of the drawings]
FIG. 1 is a block diagram showing the overall configuration of an embodiment of a logic LSI to which the present invention is applied.
FIG. 2 is a circuit configuration diagram showing one embodiment of a variable logic circuit (FPGA) provided in a logic LSI to which the present invention is applied.
FIG. 3 is a block diagram showing a specific example of the crosspoint switch constituting the FPGA.
FIG. 4 is a logic circuit diagram and a conceptual diagram showing a specific example of a cell logic block constituting the FPGA.
FIG. 5 is a logic circuit diagram showing another example of the cell logic block constituting the FPGA.
FIG. 6 is a block diagram showing a configuration example of a test interface circuit provided in a logic LSI to which the present invention is applied.
FIG. 7 is a flowchart showing an example of an internal circuit inspection procedure in the logic LSI to which the present invention is applied.
FIG. 8 is a flowchart showing specific contents of the inspection procedure of the FPGA unit in steps S1 to S3 of the flowchart of FIG.
FIG. 9 is a flowchart showing specific contents of the inspection procedure of the SRAM unit in steps S4 to S5 of the flowchart of FIG.
FIG. 10 is a flowchart showing specific contents of the inspection procedure of the custom logic circuit and the CPU unit in steps S6 to S8 of the flowchart of FIG.
FIG. 11 is a flowchart showing specific contents of the inspection procedure of the DRAM unit in steps S9 to S12 of the flowchart of FIG.
FIG. 12 is a block diagram showing the configuration of the ALPG built in the FPGA.
FIG. 13 is a block diagram illustrating a configuration example of a bus when testing a memory circuit using ALPG.
FIG. 14 is an explanatory diagram showing a configuration example of an instruction format of a microinstruction stored in the instruction memory of the ALPG.
FIG. 15 is a block diagram illustrating a configuration example of an ALPG sequence control unit.
FIG. 16 is a block diagram illustrating a configuration example of an ALPG address calculation unit.
FIG. 17 is a block diagram illustrating a configuration example of an ALPG test data generation calculation unit.
FIG. 18 is a flowchart showing an example of a sequence control procedure using an opcode and operand of a microinstruction when the memory circuit is inspected by ALPG.
FIG. 19 is a flowchart showing an example of a procedure for generating and outputting a test address and data using an operation code and data generation code of a microinstruction when the memory circuit is inspected by ALPG.
FIG. 20 is a block diagram illustrating a configuration example of a logic tester built in the FPGA.
FIG. 21 is a logic circuit diagram showing a specific example of signal forming / comparing means in the logic tester.
FIG. 22 is a waveform diagram showing an example of a test signal waveform formed by a logic tester.

Claims (11)

半導体チップ上に、複数の基本論理セルからなり各基本論理セルごとに、その基本論理セルが正常か異常かを示す信号を出力可能で、かつそれぞれが正常を示す信号を出力する複数の基本論理セルで、任意の論理を構成可能な可変論理回路が搭載されてなる半導体集積回路であって、
上記可変論理回路は、相補的な信号を出力可能な2線ラインロジック回路と該2線ラインロジック回路の出力信号を比較して異常の有無を判定する判定手段とからなる基本論理セルと、これら基本論理セル間の信号線の接続を切り替え可能な複数の可変スイッチ回路とを備え、上記可変スイッチ回路による接続を切り替えることにより任意の論理を構成可能であって、上記2線ラインロジック回路から出力される信号が他の基本論理セル内の2線ラインロジック回路に供給され、上記判定手段の出力信号が、回路が正常か異常かを示す信号として各基本論理セルから出力されるように構成され、
上記可変スイッチ回路は、互いに交差する信号線間を接続遮断可能なスイッチ素子と、該スイッチ素子の状態を制御する情報を記憶する書込み読出し可能な記憶素子とからなり、上記判定手段から出力される回路が正常か異常かを示す信号が上記記憶素子に記憶されるように構成されていることを特徴とする半導体集積回路。
A plurality of basic logics which can output a signal indicating whether each basic logic cell is normal or abnormal and each output a normal signal on the semiconductor chip. A semiconductor integrated circuit in which a variable logic circuit capable of configuring arbitrary logic in a cell is mounted,
The variable logic circuit includes a basic logic cell comprising a two-line line logic circuit capable of outputting a complementary signal and a determination means for comparing the output signals of the two-line line logic circuit to determine the presence or absence of an abnormality, and A plurality of variable switch circuits capable of switching the connection of signal lines between basic logic cells, and arbitrary logic can be configured by switching the connection by the variable switch circuit, and output from the two-line line logic circuit Is supplied to a two-line line logic circuit in another basic logic cell, and the output signal of the determination means is output from each basic logic cell as a signal indicating whether the circuit is normal or abnormal. ,
The variable switch circuit includes a switch element capable of disconnecting and connecting signal lines intersecting each other, and a readable / writable storage element for storing information for controlling the state of the switch element, and is output from the determination means. A semiconductor integrated circuit characterized in that a signal indicating whether the circuit is normal or abnormal is stored in the memory element.
少なくとも複数の論理セルからなり論理セルごとに回路が正常か異常かを示す信号を出力可能でかつ任意の論理を構成可能な可変論理回路と読出し書込み可能なメモリ回路とを内蔵した半導体集積回路の検査方法であって、
上記可変論理回路により自己テストを行なわせ、その結果得られた不良個所を示す情報を用いて該可変論理回路内に、正常な論理セルで所定のアルゴリズムに従って所定のテスト信号および期待値信号を発生してテスト信号を上記メモリ回路に供給し、その結果メモ回路から得られる出力信号と期待値信号とを比較して一致しない場合に不良を示す信号を形成してチップ外部へ出力させるメモリテスト回路を構成して、上記メモリ回路を検査するようにしたことを特徴とする半導体集積回路の検査方法。
A semiconductor integrated circuit comprising at least a plurality of logic cells and capable of outputting a signal indicating whether the circuit is normal or abnormal for each logic cell and including a variable logic circuit capable of configuring arbitrary logic and a readable / writable memory circuit An inspection method,
A self-test is performed by the variable logic circuit, and a predetermined test signal and an expected value signal are generated in a normal logic cell according to a predetermined algorithm in the variable logic circuit by using information indicating a defective portion obtained as a result. to the test signal is supplied to the memory circuit, the memory test to output the result notes to form a signal indicating the failure when the output signals obtained does not match by comparing the expected value signal from Li circuit outside the chip A method for inspecting a semiconductor integrated circuit, wherein a circuit is configured to inspect the memory circuit.
上記メモリ回路は、スタティック型ランダム・アクセス・メモリであることを特徴とする請求項2に記載の半導体集積回路の検査方法。  3. The semiconductor integrated circuit inspection method according to claim 2, wherein the memory circuit is a static random access memory. 上記メモリ回路は、ダイナミック型ランダム・アクセス・メモリであることを特徴とする請求項2に記載の半導体集積回路の検査方法。  3. The semiconductor integrated circuit inspection method according to claim 2, wherein the memory circuit is a dynamic random access memory. 少なくとも複数の論理セルからなり論理セルごとに回路が正常か異常かを示す信号を出力可能でかつ任意の論理を構成可能な可変論理回路と、読出し書込み可能なメモリ回路と、カスタム論理回路または中央処理ユニットとを内蔵した半導体集積回路の検査方法であって、
上記可変論理回路により自己テストを行なわせ、その結果得られた不良個所を示す情報を用いて該可変論理回路内に、正常な論理セルで所定のアルゴリズムに従って所定のテスト信号および期待値を発生してテスト信号を上記メモリ回路に供給しその結果メモ回路から得られる出力信号と期待値信号とを比較して一致しない場合に不良を示す信号を形成してチップ外部へ出力させるメモリテスト回路を構築して、該メモリテスト回路により上記メモリ回路を検査し、
次に、上記可変論理回路内に、正常な論理セルで所定のアルゴリズムに従って所定のテスト信号および期待値信号を発生してテスト信号を上記カスタム論理回路または中央処理ユニットに供給しその結果カスタム論理回路または中央処理ユニットから得られる出力信号と期待値信号とを比較して一致しない場合に不良を示す信号を形成してチップ外部へ出力させるロジックテスト回路を構築し、上記メモリ回路内にテストパターンもしくはテストパターン生成プログラムを格納して、上記ロジックテスト回路を起動させて上記カスタム論理回路または中央処理ユニットを検査するようにしたことを特徴とする半導体集積回検査方法。
A variable logic circuit that can output a signal indicating whether the circuit is normal or abnormal for each logic cell and that can configure any logic, a read / write memory circuit, a custom logic circuit, or a central circuit A method for inspecting a semiconductor integrated circuit including a processing unit,
A self-test is performed by the variable logic circuit, and a predetermined test signal and an expected value are generated in a normal logic cell in accordance with a predetermined algorithm in the variable logic circuit using information indicating a defective portion obtained as a result. Te a memory test circuit that outputs a test signal to form a signal indicating the failure when they do not match by comparing the expected value signal and the output signal obtained from the supply to the memory circuit the result memory circuit outside the chip And inspecting the memory circuit with the memory test circuit,
Next, in the variable logic circuit, a predetermined test signal and an expected value signal are generated in accordance with a predetermined algorithm in a normal logic cell, and the test signal is supplied to the custom logic circuit or the central processing unit. As a result, the custom logic circuit Or, if the output signal obtained from the central processing unit and the expected value signal are not matched, a logic test circuit is formed that forms a signal indicating a failure and outputs the signal to the outside of the chip. A semiconductor integrated circuit inspection method characterized by storing a test pattern generation program and activating the logic test circuit to inspect the custom logic circuit or the central processing unit.
上記メモリ回路は、スタティック型ランダム・アクセス・メモリであることを特徴とする請求項5に記載の半導体集積回路の検査方法。  6. The semiconductor integrated circuit inspection method according to claim 5, wherein the memory circuit is a static random access memory. 上記メモリ回路は、ダイナミック型ランダム・アクセス・メモリであることを特徴とする請求項5に記載の半導体集積回路の検査方法。  6. The method of testing a semiconductor integrated circuit according to claim 5, wherein the memory circuit is a dynamic random access memory. 少なくとも複数の論理セルからなり論理セルごとに回路が正常か異常かを示す信号を出力可能でかつ任意の論理を構成可能な可変論理回路と、冗長回路を備えていない第1のメモリ回路と、冗長回路を備えている第2のメモリ回路と、カスタム論理回路または中央処理ユニットとを内蔵した半導体集積回路の製造方法であって、
上記可変論理回路により自己テストを行なわせ、その結果得られた不良個所を示す情報を用いて該可変論理回路内に、正常な論理セルで所定のアルゴリズムに従って所定のテスト信号及び期待値信号を発生してテスト信号を上記第1のメモリ回路に供給しその結果第1のメモリ回路から得られる出力信号と期待値とを比較して一致しない場合に不良を示す信号を形成してチップ外部へ出力させるメモリテスト回路を構築して、該メモリテスト回路により上記第1のメモリ回路を検査し、
次に、上記可変論理回路内に、正常な論理セルで所定のアルゴリズムに従って所定のテスト信号および期待値信号を発生してテスト信号を上記カスタム論理回路または中央処理ユニットに供給しその結果カスタム論理回路または中央処理ユニットから得られる出力信号と期待値信号とを比較して一致しない場合に不良を示す信号を形成してチップ外部へ出力させるロジックテスト回路を構築するとともに上記第1のメモリ回路内にテストパターンもしくはテストパターン生成プログラムを格納して、上記ロジックテスト回路を起動させて上記カスタム論理回路または中央処理ユニットを検査し、
しかる後、上記可変論理回路内に、正常な論理セルで所定のアルゴリズムに従って所定のテスト信号及び期待値信号を発生してテスト信号を上記第2のメモリ回路に供給しその結果第2のメモリ回路から得られる出力信号と期待値信号とを比較して一致しない場合に不良を示す信号を形成してチップ外部に出力させるメモリテスト回路を構築して、上記第2メモリ回路を検査し、
その後、上記第2のメモリ回路の検査結果に基づいて上記第2のメモリ回路に付随する冗長回路を用いて第2のメモリ回路内の欠陥ビットを予備のビットと置き替えるビット救済処理を行なうようにしたことを特徴とする半導体集積回路の製造方法。
A variable logic circuit capable of outputting a signal indicating whether the circuit is normal or abnormal for each logic cell and comprising any logic; a first memory circuit not including a redundant circuit; A method of manufacturing a semiconductor integrated circuit including a second memory circuit having a redundant circuit and a custom logic circuit or a central processing unit,
A self-test is performed by the variable logic circuit, and a predetermined test signal and an expected value signal are generated in a normal logic cell according to a predetermined algorithm in the variable logic circuit by using information indicating a defective portion obtained as a result. Then, a test signal is supplied to the first memory circuit, and as a result, an output signal obtained from the first memory circuit is compared with an expected value, and a signal indicating a defect is formed and output to the outside of the chip. A memory test circuit for inspecting the first memory circuit by the memory test circuit,
Next, in the variable logic circuit, a predetermined test signal and an expected value signal are generated in accordance with a predetermined algorithm in a normal logic cell, and the test signal is supplied to the custom logic circuit or the central processing unit. As a result, the custom logic circuit Alternatively, when the output signal obtained from the central processing unit and the expected value signal are not matched, a logic test circuit for forming a signal indicating a defect and outputting the signal to the outside of the chip is constructed, and the first memory circuit is provided. Store the test pattern or test pattern generation program, start the logic test circuit and inspect the custom logic circuit or central processing unit,
Thereafter, a predetermined test signal and an expected value signal are generated in a normal logic cell in the variable logic circuit according to a predetermined algorithm, and the test signal is supplied to the second memory circuit. As a result, the second memory circuit is generated. When the output signal obtained from the above and the expected value signal are not matched, a memory test circuit for forming a signal indicating a failure and outputting the signal to the outside of the chip is constructed, and the second memory circuit is inspected,
Thereafter, based on the inspection result of the second memory circuit, a bit relief process is performed in which a defective bit in the second memory circuit is replaced with a spare bit using a redundant circuit associated with the second memory circuit. A method of manufacturing a semiconductor integrated circuit, wherein
上記第1のメモリ回路はスタティック型ランダム・アクセス・メモリであり、上記第2のメモリ回路は、ダイナミック型ランダム・アクセス・メモリであることを特徴とする請求項8に記載の半導体集積回路の製造方法。  9. The semiconductor integrated circuit manufacturing method according to claim 8, wherein the first memory circuit is a static random access memory, and the second memory circuit is a dynamic random access memory. Method. 上記第2のメモリ回路のビット救済処理後に、上記可変論理回路内に所望の論理を構成するようにしたことを特徴とする請求項8または9に記載の半導体集積回路の製造方法。  10. The method of manufacturing a semiconductor integrated circuit according to claim 8, wherein a desired logic is configured in the variable logic circuit after the bit relief processing of the second memory circuit. 上記第2のメモリ回路の検査の際に欠陥ビットの位置を示す情報を上記第1のメモリ回路内に記憶するようにしたことを特徴とする請求項8、9または10に記載の半導体集積回路の製造方法。  11. The semiconductor integrated circuit according to claim 8, 9 or 10, wherein information indicating a position of a defective bit is stored in the first memory circuit when the second memory circuit is inspected. Manufacturing method.
JP2000611314A 1999-04-14 1999-04-14 Semiconductor integrated circuit, test method and manufacturing method thereof Expired - Fee Related JP4147005B2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP1999/001974 WO2000062339A1 (en) 1999-04-14 1999-04-14 Semiconductor integrated circuit, method for testing the same, and method for manufacturing the same

Publications (1)

Publication Number Publication Date
JP4147005B2 true JP4147005B2 (en) 2008-09-10

Family

ID=14235462

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000611314A Expired - Fee Related JP4147005B2 (en) 1999-04-14 1999-04-14 Semiconductor integrated circuit, test method and manufacturing method thereof

Country Status (2)

Country Link
JP (1) JP4147005B2 (en)
WO (1) WO2000062339A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101930052A (en) * 2010-07-21 2010-12-29 电子科技大学 Online detection fault-tolerance system of FPGA (Field programmable Gate Array) digital sequential circuit of SRAM (Static Random Access Memory) type and method

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3980827B2 (en) 2000-03-10 2007-09-26 株式会社ルネサステクノロジ Semiconductor integrated circuit device and manufacturing method
JP2002184948A (en) 2000-12-12 2002-06-28 Hitachi Ltd Method for manufacturing semiconductor integrated circuit device
JP2006252702A (en) * 2005-03-11 2006-09-21 Nec Electronics Corp Semiconductor integrated circuit apparatus and its inspection method
WO2007108400A1 (en) * 2006-03-22 2007-09-27 Advantest Corporation Testing apparatus, memory device and testing method
US8433950B2 (en) * 2009-03-17 2013-04-30 International Business Machines Corporation System to determine fault tolerance in an integrated circuit and associated methods
WO2012070669A1 (en) * 2010-11-24 2012-05-31 日本電気株式会社 Method and system for generating circuit information for programmable logic device, circuit testing device and computer program therefor, device and computer program for creating circuit data, and computer readable storage medium
JP2011082566A (en) * 2011-01-07 2011-04-21 Renesas Electronics Corp Semiconductor apparatus and electronic equipment
JP5912844B2 (en) * 2011-05-31 2016-04-27 株式会社半導体エネルギー研究所 Programmable logic device
US9515656B2 (en) 2013-11-01 2016-12-06 Semiconductor Energy Laboratory Co., Ltd. Reconfigurable circuit, storage device, and electronic device including storage device
JP6478562B2 (en) * 2013-11-07 2019-03-06 株式会社半導体エネルギー研究所 Semiconductor device
US9385054B2 (en) 2013-11-08 2016-07-05 Semiconductor Energy Laboratory Co., Ltd. Data processing device and manufacturing method thereof
JP6444723B2 (en) 2014-01-09 2018-12-26 株式会社半導体エネルギー研究所 apparatus
US9379713B2 (en) 2014-01-17 2016-06-28 Semiconductor Energy Laboratory Co., Ltd. Data processing device and driving method thereof
DE112015000705T5 (en) 2014-02-07 2016-10-27 Semiconductor Energy Laboratory Co., Ltd. contraption
CN112255534B (en) * 2020-10-14 2023-03-24 天津津航计算技术研究所 IP core module debugging system based on FPGA
CN116400200B (en) * 2023-06-05 2023-09-01 中国汽车技术研究中心有限公司 Cross verification method for electromagnetic side channel information of vehicle-gauge security chip

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5961653A (en) * 1997-02-19 1999-10-05 International Business Machines Corporation Processor based BIST for an embedded memory
JPH10242288A (en) * 1997-02-25 1998-09-11 Hitachi Ltd Semiconductor device and system
JP3447512B2 (en) * 1997-04-24 2003-09-16 シャープ株式会社 Test method for semiconductor integrated circuit with built-in memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101930052A (en) * 2010-07-21 2010-12-29 电子科技大学 Online detection fault-tolerance system of FPGA (Field programmable Gate Array) digital sequential circuit of SRAM (Static Random Access Memory) type and method
CN101930052B (en) * 2010-07-21 2012-07-25 电子科技大学 Online detection fault-tolerance system of FPGA (Field programmable Gate Array) digital sequential circuit of SRAM (Static Random Access Memory) type and method

Also Published As

Publication number Publication date
WO2000062339A1 (en) 2000-10-19

Similar Documents

Publication Publication Date Title
JP3867862B2 (en) Semiconductor integrated circuit and memory inspection method
JP4147005B2 (en) Semiconductor integrated circuit, test method and manufacturing method thereof
JP3980827B2 (en) Semiconductor integrated circuit device and manufacturing method
US7225379B2 (en) Circuit and method for testing semiconductor device
EP1377981B1 (en) Method and system to optimize test cost and disable defects for scan and bist memories
KR100714240B1 (en) Semiconductor integrated circuit and recording medium
US6768694B2 (en) Method of electrically blowing fuses under control of an on-chip tester interface apparatus
KR100858382B1 (en) Tester Architecture Construction Data Generating Method, Tester Architecture Constructing Method and Test Circuit
US20140078841A1 (en) Programmable memory built in self repair circuit
US7437645B2 (en) Test circuit for semiconductor device
US20030212940A1 (en) Interface architecture for embedded field programmable gate array cores
KR20060087430A (en) A semiconductor integlated circuit having test function and manufacturing method
JP2009059434A (en) Semiconductor integrated circuit
JP2001210685A (en) Test system and method of manufacturing semiconductor integrated circuit device
Manasa et al. Implementation of BIST technology using March-LR algorithm
US20050172188A1 (en) Diagnostic method for detection of multiple defects in a Level Sensitive Scan Design (LSSD)
JP2001085622A (en) Semiconductor integrated circuit, inspecting method thereof and manufacture thereof
JP2003224468A (en) Semiconductor integrated circuit, its manufacturing method, and testing method
JP2001297598A (en) Semiconductor integrated circuit device, and self-test method for semiconductor integrated circuit device
JP4176944B2 (en) Semiconductor integrated circuit and recording medium
Singh Performance Analysis of March M & B Algorithms for Memory Built-In Self-Test (BIST)
US20060069974A1 (en) One-hot encoded instruction register for boundary scan test compliant devices
JP2003156542A (en) Testing method and semiconductor device
Durga et al. Design of High Efficient Built in Self Repair Architecture using March Algorithms
WO1999030176A1 (en) Semiconductor integrated circuit and method for diagnosing logic circuit

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040227

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20070427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071211

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080311

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080512

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: 20080617

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080623

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: 20110627

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110627

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110627

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120627

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120627

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130627

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees