JP4015025B2 - MEMORY TEST METHOD, INFORMATION RECORDING MEDIUM, AND SEMICONDUCTOR INTEGRATED CIRCUIT - Google Patents

MEMORY TEST METHOD, INFORMATION RECORDING MEDIUM, AND SEMICONDUCTOR INTEGRATED CIRCUIT Download PDF

Info

Publication number
JP4015025B2
JP4015025B2 JP2002572003A JP2002572003A JP4015025B2 JP 4015025 B2 JP4015025 B2 JP 4015025B2 JP 2002572003 A JP2002572003 A JP 2002572003A JP 2002572003 A JP2002572003 A JP 2002572003A JP 4015025 B2 JP4015025 B2 JP 4015025B2
Authority
JP
Japan
Prior art keywords
memory
test
instruction
cpu
bus
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
JP2002572003A
Other languages
Japanese (ja)
Other versions
JPWO2002073411A1 (en
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
Publication of JPWO2002073411A1 publication Critical patent/JPWO2002073411A1/en
Application granted granted Critical
Publication of JP4015025B2 publication Critical patent/JP4015025B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/10Aspects relating to interfaces of memory device to external buses
    • G11C2207/104Embedded memory devices, e.g. memories with a processing device on the same die or ASIC memory designs

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Tests Of Electronic Circuits (AREA)

Description

技術分野
本発明は、半導体集積回路におけるオンチップメモリのテスト技術に関し、例えばメモリを内蔵するデータ処理装置、マイクロプロセッサ、シングルチップマイクロコンピュータのようなシステムLSI等のテスト方法に適用して有効な技術に関する。
背景技術
微細加工技術の発展により半導体集積回路(LSI)には非常に大規模な回路を搭載できるようになってきている。そのためシングルチップマイクロコンピュータなどのシステムLSIに搭載されるSRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)、フラッシュメモリなどのメモリ回路の容量は飛躍的に増大している。これらのメモリ回路はCPU(Central Processing Unit)などの論理回路に比べ高密度に実装されており、またメモリセルやセンスアンプなどの回路はアナログ回路であるため、論理回路とは違ったテスト手法が必要となる。そのためテスト時のみLSIをあたかも単体のメモリIC(Integrated Circuits)であるかのように動作若しくは制御可能にするテストモードを設けて、外部のテスタから単体のメモリICと同じようなテストを行うなどの方法が用いられてきた。しかしながら、システムLSIの動作速度が上がるに従って、ロジックIC及びメモリIC双方に対応するより高機能で高価なテスタが必要になったり、テストを2パスに分けるためテスト時間が延びるなどの問題があった。そのためチップ内部でテストパターンを発生してテストを支援するメモリBIST(Built−In Self Test)回路が提供されるに至った。
メモリBIST技術としては、特開2000−30483公報に記載のように、テストパターンを発生するシーケンサやリード・ライトするデータの発生装置をチップ内にハードウェアとして固定的に埋め込んだものや、特開平11−15740号公報に記載のように、簡易的なメモリテスト用のプロセッサを内蔵し、そのプロセッサにテスト時に外部からテストプログラムを供給し、そのプログラムを実行させてソフトウェアによりテストパターンを発生させるものなどが考案されている。しかし、前者の方法はテスト方法を設計時に決定する必要があり、メモリの様々な不良事象に対応することが難しい。昨今CPUコアはIP(Intellectual Property)モジュールデータとして流通され、様々なメーカーのプロセスにより作成され得るので、メモリの不良事象もいろいろな態様が想定されるので、テストパターンが固定されているのは得策でない。また後者の方法はテストパターンを設計時でなく、実テスト時に決定できるため柔軟性が高く、CPUコアのIP化に適しているといえるが、本来のCPU以外にテスト用の簡易的なプロセッサを必要とするため、必要なハードウェアリソースが大きくなり、チップ面積を増大させてしまうためコスト的に問題がある。またテスト設計者が特殊な言語でテストプログラムを記述する必要があり、様々なユーザが利用するモジュールデータを想定すると、好ましくない。
テストプログラムを実行させるプロセッサとしてはテスト専用のもの以外に、通常動作時に使用するCPUを流用する場合も考えられ、例えば特表平10−511790号公報に記載のように、テストプログラムを内蔵メモリの一種であるキャッシュメモリの一部に配置し、CPUにそのテストプログラムを実行させ、キャッシュメモリの残りをテストする方法がある。この方法を用いるとテスト用に追加するハードウェアの量を抑えられるため、チップの製造コストを下げられるというメリットがある。またテストプログラムも専用のプロセッサでなく、通常時に使用されるCPU用のものを与えればよいため、ユーザが慣れ親しんだアセンブリ言語などでテストプログラムを作成できるというメリットもある。
しかし、CPUにプログラムを実行させてテストを行うという上記従来技術は、キャッシュメモリなどの内蔵メモリの一部にテストプログラムを配置した状態で、残りの内蔵メモリのテストを行うため、以下の問題点のあることが本発明者により見出された。
先ず、命令フェッチとテストのためのメモリアクセスがCPUと内蔵メモリを接続するバスで競合した場合、CPUの命令実行に対してストールが発生する可能性があり、テスト効率が低下するという問題があった。また、キャッシュメモリの良否判定をCPUが行うため、CPUがキャッシュメモリからリードされたデータと期待値との一致判定を行う命令を実行する必要があり、テストプログラムに占めるキャッシュメモリのリード・ライトを行う命令の比率が低下し、専用のテストシーケンサを用いたBIST技術に比べてテスト時間が長くなるという問題があった。要するに、メモリテストのためのメモリリードアクセスやライトアクセスのための命令実行の他に比較などのための命令実行が増え、相対的にメモリテスト時間が増大してしまう。またメモリテストプログラムはメモリリード・ライトなどの一定の操作をアドレスのみ変えてメモリ全領域に亘って実行するものになるため、ループ型のプログラムにする必要があるが、ループを構成するための分岐命令が必要となり、この点でもリード・ライト命令の比率が低下してしまう。分岐予測機能のないCPUでは分岐命令自体が複数実行サイクルを必要とするため、命令数の増加以上にテストに必要なサイクル数が増加してしまう。さらにCPUはアドレスマッピングの異なる通常複数のメモリを同時アクセスすることは通常できないので、テスト対象のメモリが複数存在する場合、或はメモリが複数ページ(複数メモリブロック)に分割されているような場合、それらメモリを並列アクセスしてテストを行なうことはできず、順次テストを行なわざるを得ず、テスト時間が長くなってしまうという問題があった。
メモリテスト用シーケンスとして例えば13Nテストと呼ばれる手法がある。13Nテストとはアイ・イー・イー・イー デザイン アンド テスト オブ コンピューターズ フェブラリー(1989年)第26頁から第34頁(IEEE DESIGN & TEST OF COMPUTERS,FEBRUARY 1989,pp.26−34)において論じられているSRAM向けのテスト手法で、システムLSIの内蔵メモリ用テストとして一般的に知られているものである。13Nテストでは、例えばメモリ全領域に対してパターン0をアドレス昇順にライトし、ライトしたパターン0のリード、パターン1のライト、パターン1のリードという処理を各アドレスに対して昇順に実行しながら、リードデータを期待値と比較判定していく。そのような処理をCPUのプログラム実行で行なうには、パターン0の読み出し命令、パターン1の書き込み命令、パターン1の読み出し及びアドレスのインクリメント命令、パターン0データの一致判定命令、パターン0が不一致だった場合にエラー処理を行うための分岐命令、パターン1データの一致判定命令、パターン1が不一致だった場合にエラー処理を行うための分岐命令、ループカウンタのデクリメント及びループ終了判定命令、ループが未終了の場合のループ先頭への分岐命令等を含むプログラムを用いなければならない。このプログラム例からも明らかなように、メモリリード命令やライト命令より、一致判定や分岐並びにループカウンタのデクリメント命令等の命令実行サイクル数が多くなってしまう。
本発明の目的はテストシーケンスをチップ設計時でなく、テスト実行時に決定でき、かつCPUをシーケンサとして用いることでテストに必要なハードウェアリソースが少なて済むというBIST手法を用いて、効率良く内蔵メモリをテストすることができる方法を提供することにある。
本発明の別の目的は、上記内蔵メモリのテスト方法を容易に実現可能にする半導体集積回路を提供することにある。
本発明の更に別の目的は、上記内蔵メモリのテスト方法を容易に実現可能にする半導体集積回路の開発期間短縮に寄与することができるCPU等のIPモジュールデータを格納した情報記録媒体を提供することにある。
本発明のその他の目的は、CPUの開発並びにCPUによりアクセスされるオンチップメモリのテスト手法という点において、半導体集積回路の開発効率向上に寄与することができるテストプログラム及び回路設計データを記録した情報記録媒体を提供することにある。
本発明の上記並びにその他の目的と新規な特徴は本明細書の以下の記述と添付図面から明らかにされるであろう。
発明の開示
〔1〕《メモリテスト方法》命令キューを備えたCPU、メモリ、及び前記CPUとメモリを接続するバスを有する半導体集積回路の前記メモリをテストするメモリテスト方法は、前記命令キューにテストプログラムを格納し、CPUでテストプログラムを実行してバス経由のメモリアクセスを行ない、一旦テストプログラムが命令キューに格納された後のテストプログラムのフェッチは前記バスに代えて前記命令キューから繰返し行なうことを特徴とするものである。
また、同様に、命令キューを備えたCPU、バスを介して前記CPUに接続するメモリ、及び前記メモリとバスに接続する判定回路を有する半導体集積回路の前記メモリをテストするメモリテスト方法は、前記命令キューにテストプログラムを格納し、CPUでテストプログラムを実行してメモリライトアクセス及びメモリリードアクセスを行ない、メモリリードアクセスデータを判定回路で期待値と比較判定し、一旦テストプログラムが命令キューに格納された後のテストプログラムのフェッチは前記バスに代えて命令キューから繰り返し行なうことを特徴とするものである。
上記メモリテスト方法は、第1に、FIFO(First−In First−Out)形式の命令キューのリードポインタをサイクリックにループさせて同じ記憶情報を複数回利用するリピート動作を採用するから、同じテストプログラムを繰り返し実行可能にするために分岐命令を利用しなくても済む。第2に、繰り返し実行するテストプログラムを命令キューから繰り返しフェッチすればよく、メモリテストのためのメモリリード・ライトアクセスと命令フェッチのためのメモリアクセスがバス上で競合しない。したがって、テストプログラムから分岐命令を排除することができ、さらにCPUに接続されたバスから同じ命令を繰返しフェッチする必要がないので、真にメモリテストをするためのムーブ命令などのメモリアクセス命令を実行する割合が増え、これにより半導体集積回路のオンチップメモリに対するテスト効率を向上させることが可能になる。
上記テスト手法は、CPUのテストプログラムによってその内容が決り、テストシーケンスをチップ設計時でなく、テスト実行時に決定でき、結果として、テスト対象の半導体集積回路には、オンチップCPUをテストシーケンサとして流用することでテストに必要なハードウェアリソースが少なくて済むというBIST手法の採用も極めて容易になる。
〔2〕《IPモジュールデータ》CPUのIPモジュールデータに着目する。コンピュータが読み取ってCPUのIPモジュールデータのような設計データは記録媒体に記録されて提供される。前記設計データは、命令キュー、バス、命令キュー又はバスを介して供給される命令を解読する命令デコーダ、及び制御部の夫々の回路データを含む。前記命令デコーダは、所定のリピート命令をデコードして前記制御部に、リピートすべきプログラムが一旦命令キューに格納された後の当該リピートすべきプログラムのフェッチを前記命令キューから繰返し可能とする動作モードを設定する機能を有する。この記録媒体に格納された回路データを用いてCPUの設計を行なえば、上記内蔵メモリのテスト方法を実現可能にする半導体集積回路の開発期間を短縮させることができる。
CPUなどのIPモジュールデータとテストプログラムに着目すると、CPUの設計データと、その設計データで実現されるCPUにより実行可能なテストプログラムとは、コンピュータ読み取り可能に情報記録媒体に記録されて提供される。前記設計データは、命令キュー、バス、命令デコーダ、及び制御部の回路データを含み、前記命令デコーダは、所定のリピート命令をデコードして前記制御部に、リピートすべきプログラムが一旦命令キューに格納された後の当該リピートすべきプログラムのフェッチを前記命令キューから繰返し可能とする動作モードを設定する機能を有する。そして、前記テストプログラムは、前記動作モードにおいて命令キューに格納され、CPUに、バス経由のメモリアクセス処理及びメモリアクセスアドレス更新処理を繰り返し実行させる、メモリテストのためのプログラムである。
このコンピュータ読み取り可能な情報記録媒体によれば、IPモジュールデータとしての設計データはCPUを用いる半導体集積回路の設計開発を容易化する。そのような半導体集積回路のオンチップメモリに対するメモリテストではオンチップCPUに前記テストプログラムを実行させればよい。オンチップCPUはメモリテスト機能として命令キューの前記リピート作用をサポートし、テストプログラムから分岐命令の排除を可能にしているから、CPUのハードウェアに対して最適化されたメモリテストプログラムを最初から開発しなくても済む。したがって、CPU等のIPモジュールデータを用いて半導体集積回路の開発を行なうユーザはCPUの回路設計やオンチップメモリに対するテスト設計を効率化でき、半導体集積回路の開発を効率化することができる。
メモリテスト用のテストプログラムは、オンチップのCPUにより実行されるため、CPUのプログラム開発に用いるアセンブリ言語等で記述可能であり、半導体集積回路の用途や不良事象に合わせて簡単に変更可能となる。したがって、上記CPUのIPモジュールデータを提供する際に、メモリテスト用のテストプログラムとしてサンプルプログラムを提供するだけで、IPモジュールデータのユーザは様々なメモリテストに容易に対応することが可能となる。
〔3〕《LSI》上記オンチップメモリのテスト方法を適用可能な半導体集積回路に着目する。半導体集積回路は、CPU、メモリ、及び前記CPUとメモリを接続するバスを半導体チップに有する。前記CPUは、命令キュー、命令キュー又はバスを介して供給される命令を解読する命令デコーダ、及び制御部を含む。前記命令デコーダは、所定のリピート命令をデコードすることにより、リピートすべきプログラムが一旦命令キューに格納された後の当該リピートすべきプログラムのフェッチを前記命令キューから繰返し可能とする動作モードを前記制御部に設定可能である。
上記半導体集積回路によれば、オンチップCPUはメモリテスト機能として前記命令キューのリピート作用をサポートし、テストプログラムから分岐命令の排除を可能にしている。
前記動作モードにおいて、前記CPUが前記プログラムを実行することにより、前記メモリからリードしたデータを入力し、入力したデータの論理値を期待値と比較判定する判定回路を設け、それによる判定結果を半導体チップの外部に出力可能に構成してよい。CPUが実行するテストプログラムから比較判定のための比較命令も除去することが可能になり、さらにメモリテスト効率を上げることができる。
このとき、前記判定回路にメモリからのリードデータを供給する経路として前記バスとは分離された専用バスを設けることにより、リードデータとライトデータがバス上で競合する事態を回避でき、メモリテスト効率を更に向上させることができる。
テスト効率を更に向上させるという観点より、前記メモリが複数個のメモリブロックを有するとき、各メモリブロックは前記動作モードの設定に応答して、同一アドレスにマッピングされて並列動作可能にされるとよく、このとき、前記判定回路は複数個のメモリブロックから並列的に出力されるメモリリードデータを並列的に期待値と比較判定可能であるればよい。これにより、並列テストが可能になり、さらにメモリテストを効率化することができる。
発明を実施するための最良の形態
第1図には本発明に係る半導体集積回路の一例であるマイクロコンピュータのようなシステムLSIが示される。同図に示されるシステムLSI100はCPUコア101、DMA(Direct Memory Access Controller)コントローラ119、バスコントローラ120、周辺モジュール121、及びヒューズ回路115が、単結晶シリコンのような1個の半導体基板(半導体チップ)にCMOSなどの半導体集積回路製造技術によって形成される。
前記CPUコア101は、CPU102、DSP(Digital Signal Processor)104、キャッシュメモリ106、汎用メモリ107、XYメモリ108、BIST110を有する。CPU102は命令制御部及び演算部など有し、命令制御部がプログラムを構成する命令をフェッチして解読し、演算部がその解読結果に従って演算処理やメモリアクセス処理などを行なって、その命令を実行する。DSP104はディジタル信号処理の高速化に特化したコプロセッサのような演算ユニットである。DSP104は積和演算などを多様するディジタル信号処理演算ではXYバス109で接続されたXYメモリ108を利用する。キャッシュメモリ106はチップ外部のROM131やRAM132等に格納されたプログラムやデータのうち、比較的頻繁に利用されるプログラムやデータを一時的に貯えておく。汎用メモリ107はCPU102のワーク領域若しくはデータの一時記憶領域として利用される。BISTモジュール110はオンチップメモリのテスト等に利用されるテスト用の回路である。
CPU102、DSP104、キャッシュメモリ106、汎用メモリ107、XYメモリ108、及びBISTモジュール110は高速なCPUバス105で接続されている。またキャッシュメモリ106、汎用メモリ107、XYメモリ108、BISTモジュール110はCPUコア101の外部と接続するためのシステムバス118にも接続される。キャッシュメモリ106は非キャッシュアクセス時にはCPUバス105とシステムバス118のブリッジ回路として動作するように構成されている。即ち、CPU102によるメモリアクセス対象がキャッシュメモリ106によるキャッシュの非対象領域である場合、キャッシュメモリ106はバス105とバス118を接続可能にするブリッジ回路として機能される。前記汎用メモリ107とXYメモリ108はそれぞれ内部で4ページ(4個のメモリブロック)に分割されている。
CPU102には命令キュー103が内蔵されている。命令キュー103にはバス105,118の空きタイミングを利用して命令がプリフェッチされる。特に本発明では、命令キュー103は汎用メモリ107とXYメモリ108のテスト時に、テストプログラムが格納され、格納されたテストプログラムを繰り返し利用可能なリピートキュー若しくはループキューとして動作されることになる。要するに、繰り返し実行されるテストプログラムを毎回キャッシュメモリ106を通してバス105からフェッチしなくても済む。したがって、メモリテストのメモリリード・ライトデータがバス105上でテストプログラムと競合する状態の発生を抑制若しくは低減することが可能になり、メモリテストの効率化を実現する。尚、命令キュー103の詳細については後述する。
BISTモジュール110はメモリテストモードかどうかを示すビストイネーブル信号(BISTEN)140を汎用メモリ107とXYメモリ108に出力する。メモリテスト動作で汎用メモリ107から読み出されるリードデータは専用データバス141を介してBISTモジュール110に、メモリテスト動作でXYメモリ108から読み出されるリードデータは専用データバス142を介してBISTモジュール110に供給される。BISTモジュール110は、バス141,142からのリードデータを期待値データと比較判定し、それによるテスト結果信号111を外部端子112からチップ外部に出力する。これにより、メモリテストのリードデータとライトデータがバス105で競合することはない。この点においてもメモリテストを効率化することができる。
また、BISTモジュール110は汎用メモリ107に対して、メモリの一部が不良であった場合に不良部分を冗長メモリ領域に置き換えて救済するための救済すべきアドレス情報(救済アドレス情報)のような救済情報を信号113を介して汎用メモリ107に出力するようになっている。また、メモリテストで得られた救済情報を不揮発的に記憶するヒューズ回路115が設けられ、このヒューズ回路115とBISTモジュール110との間では前記救済情報はデータ信号114を介して入出力される。ヒューズ回路115はBISTモジュール110からの救済情報を、ヒューズ回路制御用の外部端子117を介して入力されるヒューズ回路制御信号116に従って書き込み制御される。
DMAC119はCPUの初期設定に従ってメモリ間のデータ転送制御、メモリと入出力回路間のデータ転送制御を行なう。バスコントローラ120は外部バス130を介する情報伝送のバス幅や転送速度に関するインタフェース制御を行なう。周辺モジュール121はタイマやシリアルインタフェースなどの周辺機能を有する。外部バス130には、特に制限されないが、マスクROM(Read Only Memory)、EPROM(Erasable and Programmable Read Only Memory)、EEPROM(Electrically Erasable and Programmable Read Only Memory)、フラッシュメモリなどのROM131、SRAM,SDRAMなどのRAM132、並びにASICモジュール133等と接続される。
上記システムLSI100の通常動作モードにおいて、CPU102がCPUバス105を介して汎用メモリ107やXYメモリ108をアクセスすると、アドレスで指示された各メモリ107,108内のただ一つのページだけがアクセス対象とされ、リードアクセスの場合にはリードデータがCPUバス105を介してCPU102に読み込まれ、ライトアクセスの場合にはCPUバス105上のライトデータがアクセス対象ページのメモリセルに書き込まれる。
メモリテストのためのテストプログラムを実行するとき、前記BISTモジュール110内の特定のレジスタに対して書き込みが行なわれ、メモリテストモード(BISTENが“1”の状態)が設定される。このメモリテストモードにおいて、CPU102によるリードアクセスがあると、汎用メモリ107及びXYメモリ108からのリードデータはCPUバス105には出力されず、専用バス141,142を介してBISTモジュール110に供給される。このメモリテストモードにおいて、汎用メモリ107,XYメモリ108の夫々のページは並列にリード動作され、BISTモジュール110には32ビット×4(ページ数)×2(メモリ数)=256ビットのデータが出力される。ライト時には各ページに同一のデータが同時にライトされる。BISTモジュール110はメモリ107,108の各ページから送られてきたリードデータと、あらかじめモジュール内部のレジスタに書かれた期待値データとを比較し、不一致が発生した場合には外部端子112に対して不一致が発生したことを通知する。前記不一致に係るメモリアドレスはBISTモジュール110に救済情報として保持される。この救済情報は、電源を切っても消失しないように不揮発性の記憶素子で構成されるヒューズ回路115に蓄積されることになる。
ここで、オンチップメモリのテストシーケンスの一つである13Nテストの手法を第16図に基づいて予め説明しておく。このテストはL0からL4の五つのフェーズに分けられ、あるパターン0(全ビット0やチェッカパタンなど)とその反転パタンであるパターン1(全ビット1や反転チェッカパタンなど)をリード・ライトするようになっている。L0フェーズ(850)ではメモリ全領域に対してパターン0をアドレス昇順にライトしていく。L1フェーズ(851)ではL1フェーズでライトしたパターン0のリード、パターン1のライト、パターン0のリードという処理を各アドレスに対して昇順に実行する。L2フェーズ(852)ではL1フェーズでライトしたパターン1のリード、パターン0のライト、パターン0のリードという処理を各アドレスに対して昇順に実行する。L3フェーズ(853)及びL4フェーズ(854)はL1及びL2フェーズのアドレス順序を降順に変えたものになっている。その詳細に衝いては後述するが、CPU102が実行するテストプログラムは、前記13Nテストを行うためのプログラムとされる。
尚、第16図においてR0はパターン0リード、W0はパターン0ライト、R1はパターン1リード、W1はパターン1ライトを夫々意味する。
第2図にはメモリテストに関係する回路ブロックの接続状態が詳細に例示される。メモリテスト時に、CPU102はリピート機能を使ってテストプログラムを繰り返し実行するが、その際のテストプログラムの繰り返し実行(リピートループ)のループ1回目のみ、CPU102はCPUバス105に命令フェッチを発行する。命令フェッチはキャッシュメモリ106に対して発行され、キャッシュヒットした場合にはキャッシュメモリ106から、キャッシュミスあるいはキャッシュを使わない場合にはシステムバス118、バスコントローラ120を介してチップ外部からから読み込まれることになる。ループ2回目以降はCPU102内の命令キュー103から命令が読み出されるようになっており、CPUバス105に命令フェッチは発行されない。要するに、一旦テストプログラムが命令キュー103に格納された後のテストプログラムのフェッチは前記バス105に代えて前記命令キュー103から繰返し行なう。
テストプログラムを実行するCPU102がテスト対象のメモリに対するライトアクセスを実行すると、CPUバス105のバスコマンドバス(CPUバスコマンドバス)201、アドレスバス(CPUアドレスバス)203、データバス(CPUデータバス)203に必要な値が出力される。BISTモジュール110から出力されている制御信号BISTEN140が“L”の場合、アドレスで指示された唯一のページのみにライトが行われるが、BISTENが“H”の場合、全てのページに並列的にライトされる。CPU102がリードアクセスを実行すると、CPUバス105のバスコマンドバス201、アドレスバス202に必要な値が出力される。制御信号BISTENが“L”の場合、アドレスで指示された唯一のページのみがCPUデータバス203にデータを出力するが、制御信号BISTENが“H”の場合、全てのページが並列にリード動作され、汎用メモリ107及びXYメモリ108はBISTモジュール110に接続された専用データバス141、142にリードデータを出力する。この専用データバス141,142はページの数(8ページ)に応じて、ここでは32ビット×8、すなわち256ビット分用意されている。このときCPUデータバス203にはリードデータは供給されない。BISTモジュール110はCPUバスコマンドバス201とCPUアドレスバス202の値をデコードし、制御信号BISTENが“H”かつリードサイクルであれば、各メモリ107,108からの専用データバス141,142に出力されたデータと予めBISTモジュール110内のレジスタに設定されている期待値とを比較し、不一致が発生した場合には信号(FAIL)204をアサートして外部端子(FAIL)205を介してチップ外部に不一致を通知する。また不一致の発生をBISTモジュール110内のステータスレジスタに記録し、不一致の発生を後でCPU102から読み出して知ることが出来るように動作する。不一致が発生した場合には、そのビットが救済可能かどうかが判定され、救済不可能ならば救済不可信号206を救済不可端子207からチップ外部に出力して、その旨が外部に通知される。またBISTモジュール110は不一致の発生したアドレスも内部のレジスタに記憶できるようになっている。汎用メモリ107の救済ビット(冗長ビット)を使用する場合には、救済すべきビットのアドレスをヒューズ回路115に書き込めるように、BISTモジュール110はヒューズ回路115にヒューズデータ114を出力する。また、BISTモジュール110は、ヒューズ回路115から読み出されたデータ又は内部のレジスタの値に基づいて、汎用メモリ107に対して救済すべきアドレスを示す救済情報信号113を出力できるようになっている。ヒューズ回路115に対するデータの書き込み動作は、BISTモジュール110からの書き込みデータを、チップのヒューズ制御端子117からの指示(一般的には出荷前テスト時のテスタから)で行う。ヒューズ回路115は不揮発性のメモリであり、本実施例では小容量のフラッシュメモリによって構成される。
第3図にはBISTモジュール110の詳細が例示される。BISTモジュール110は、比較器251、アドレスデコーダ252、レジスタ部253、救済判定部254、ヒューズ制御部255から成る。ここでは、汎用メモリ107、XYメモリ108の各々4ページ、計8ページに対して同時並列テストを行うため、32ビットの比較器251は8個設けられている。
比較器251は8ページそれぞれの比較結果で不一致があったかどうかの8ビットの比較結果信号263をアドレスデコーダ252、救済判定部254、レジスタ部253に通知する。アドレスデコーダ252はCPUバスコマンドバス201とCPUアドレスバス202の値をデコードし、リードサイクルかどうかの判定を行う。リードサイクルであった場合、各比較器251に対して比較イネーブル信号256をアサートし、比較器251を活性化する。またアドレスによって比較器251が使用する期待値を2種類の中から選択できるようになっており、期待値選択信号257を比較器251に通知する。これは例えば13Nテストにおいて、パターン0とパターン1をダイナミックに切り替えられるようにするためのものである。またアドレスデコーダ252は比較器251からの比較結果が不一致であった場合、該当するエラーアドレス258を救済判定部254及びレジスタ部253に出力するようになっている。救済判定部254はエラーアドレスに基づいて救済可能かどうかを判定し、救済不可信号206を救済不可端子207から出力する。また比較器251で不一致が発生した場合、FAIL信号204をFAIL端子205から出力する。FAIL信号204及び救済不可信号206のアサートはレジスタ部253の設定内容にしたがってマスク可能になっている。また、救済判定部254は、エラーアドレス情報を元にヒューズ回路115に書き込むべき救済データを生成し、これを救済データ信号264としてレジスタ部253に出力する。ヒューズ制御部255はヒューズ回路115との間でヒューズデータ信号114を入出力し、また汎用メモリ107に救済データとしての救済情報信号113を出力する。レジスタ部253の詳細は後述するが、比較器251に対して2種類の期待値信号260、261とメモリのページ毎に比較器のオン/オフを指定するためのMS信号262を出力している。また救済判定部254に対して、レジスタ設定に基づいてFAIL端子205及び救済不可端子207のアサートをマスクする信号265を出力している。またアドレスデコーダ252に対して、レジスタ部253の設定に基づいて汎用メモリ107、XYメモリ108それぞれのアドレスの上限を決めるアドレスリミット信号266を出力している。またレジスタ部253はヒューズ制御部255に対して、救済データとしてのFD信号267を入出力可能にされる。
第4図にはレジスタ部253が保有する複数のレジスタが示される。レジスタ部253は301〜307で示されるレジスタを有し、夫々はCPU102の非キャッシュアクセスによりCPUバス105、キャッシュメモリ106、システムバス118を介してアクセス可能にされる。
期待値レジスタ(BISTDR0及びBISTDR1)301は比較用の2種類の期待値を保持する。アドレスレジスタ(BISTFAR0、BISTFAR1、BISTFAR2、BISTFAR3)302は不一致が発生したエラーアドレスを記憶する。ヒューズデータレジスタ(BISTFDR)303はエラーアドレスから生成される救済アドレス情報をヒューズ回路に書き込むためのデータを記憶する。ステータスレジスタ(BISTSR)304は各ページ毎に不一致があったことを記録する。モジュールセレクトレジスタ(BISTMS)305は各ページ毎にテストするか否かを制御する制御情報を保持する。コントロールレジスタ(BISTCR1)306はメモリテストモードのオン・オフ、フェイルストップモード及び救済情報の制御を行う制御情報を保持する。アドレスリミット制御レジスタ(BISTCR2)307はサイズの違うメモリを同時にテストする際に、各ページのテスト範囲を決める制御情報を保持する。
前記期待値レジスタ(BISTDR0、BISTDR1)301は各々32ビットのレジスタであり、それぞれ比較のための期待値を保持しており、CPUアドレスバス202のビット18が“0”であれば一方のレジスタ(BISTDR0)が、“1”であれば他方のレジスタ(BISTDR1)が使用される。これらは13Nテストでのパターン0とパターン1の切り替えなどに使用される。アドレスレジスタ(BISTFAR0,BISTFAR1,BISTFAR2)302は各々32ビットのレジスタで、汎用メモリが各ページ毎に救済可能であり、エラーアドレスを4つまで保持する必要があるため、4つ用意されている。ヒューズデータレジスタ(BISTFDR)303はヒューズ回路115に書き込むデータを保持するための32ビットのレジスタで、エラーアドレスを元に救済判定部254によってデータが自動生成され、レジスタに書き込まれる。ステータスレジスタ(BISTSR)304は8ビットのレジスタで、初期値は全ビット“0”であるが、テストによって不一致が発生すると、各ページに対応するビットに“1”が書き込まれる。S13〜S10がXYメモリ108の各ページに対応し、S03〜S00が汎用メモリ107の各ページに対応する。
モジュールセレクトレジスタ(BISTMS)305は8ビットのレジスタで、各ページ毎にテストを行うかどうかを制御し、各ビットが“1”だとテストオン、“0”だとテストオフである。ただしテストオフに設定してもメモリのリード・ライト自体を止めるわけではなく、比較器251での比較を行わないように動作する。M13〜M10がXYメモリ108の各ページに対応し、M03〜M00が汎用メモリ107の各ページに対応する。
コントロールレジスタ(BISTCR1)306は8ビットのレジスタで、メモリテスト機能全体をオン/オフするためのイネーブルビットENが存在し、このビットに“1”を書き込むと、メモリテスト機能を有効にするためのBISTEN信号140が“H”になり、各メモリの動作がメモリテストモードに切り替わる。またC0ビットはFAIL信号204のマスクを制御し、“1”に設定すると不一致が発生してもFAIL信号204をアサートしなくなる。同様にC1ビットは救済不可信号206のマスクを制御し、“1”に設定すると救済不能なエラーが発生しても救済不可信号をアサートしなくなる。C2ビットは汎用メモリに対する救済情報をヒューズ回路115からのデータから生成するか、ヒューズデータレジスタ(BISTFDR)303のデータから生成するかを制御するビットで、“0”だとヒューズ回路、“1”だとヒューズデータレジスタ(BISTFDR)303が選択される。初期値は“0”である。
コントロールレジスタ(BISTCR2)307は8ビットのレジスタで、XYメモリ108、汎用メモリ108の1ページのサイズを指定する。SZ12〜SZ10がXYメモリ107に対応し、SZ02〜SZ00が汎用メモリ107に対応する。それぞれの設定値と記憶容量は、000:4k、001:8k、010:16k、011:32k、100:64k、101:128k、110:256k、111:512kバイトの組合せとなる。
第5図にはメモリテストの対象とされる汎用メモリ107及びXYメモリ108のうち代表としてXYメモリ108の1ページの構成が例示される。
第5図の例では1ページのサイズが4kバイトとされ、4kバイトのメモリマット357を有し、メモリマット357に対する32ビット単位のメモリセルの選択はアドレスデコーダ360で行なう。
XYメモリ108はCPUバス105、XYバス109、システムバス118の3つのバスに接続されており、調停回路351がCPUバスのバスコマンドバス201、CPUバスのアドレスバス202、XYバスのバスコマンドバス211、XYバスのアドレスバス212、システムバスのバスコマンドバス221、システムバスのアドレスバス222をデコードし、どのバスからのアクセスを処理するかを決定する。優先順位はシステムバス>XYバス>CPUバスであるが、メモリテスト時にはCPUバス105からのみアクセスするようにテストプログラムを構成する。調停回路351からのアドレス選択信号352に従って、アドレスセレクタ353でアドレスが選択される。アドレスセレクタ353で選択されたアドレス信号の上位複数ビットはイネーブル制御回路356に供給されてメモリマットの選択に利用され、残りの下位アドレスビットはアドレスデコーダ360に供給されてメモリセルの選択に利用される。
ライトアクセス時にメモリマット357へのライトデータはデータ選択信号354に従ってライトデータセレクタ355で選択される。リード時にメモリマット357からのリードデータをどのデータバスに値を出力するかは、出力バッファ203B、213B、223Bで選択される。
前記イネーブル制御回路356は、調停回路351によって選択されたコマンド、アドレス及び制御信号(BISTEN)140をデコードして、メモリマット357、ライト制御回路358、センスアンプ359を起動するか否かを決定する。即ち、BISTEN140が“L”の時には、それぞれのページが別々のアドレスに対して反応するように上位アドレスビットをデコードするが、BISTEN140が“H”の時には全てのページが同一のアドレスに対して反応するようにデコードする。
尚、図示はしないが、汎用メモリ107の1ページの構成もXYバス109が接続されていないこと及びメモリサイズが違うことを除いて第5図と同様であるから、その詳細な説明は省略する。
第6図には汎用メモリ107のアドレスマップが例示される。この図は汎用メモリ107が1ページ32kバイトで4ページ存在し、計128kバイトの場合の例である。特に制限されないが、拡張性を考慮して汎用メモリには4Mバイトの空間が割り当てられており、本実施例ではそのうち128kバイトに実際のメモリが存在する構成になっている。この構成の場合、BISTEN140が“L(=0)”の時のアドレスマップは第6図の(a)のようになる。4ページはそれぞれ、“U0L:0xA55F0000〜0xA55F7FFF”、“U0H:0xA55F8000〜0xA55FFFFF”、“U1L:0xA5600000〜0xA5607FFF”、“U1H:0xA5608000〜0xA5608FFF”に割り付けられる。記号0xは後続の値が16進数であることを意味する。第6図の(a)において網かけされた領域401はシャドウとなり、各ページのイネーブル信号UPAGE0LEN、UPAGE0HEN、UPAGE1LEN、UPAGE1HENは第6図の(a)の右側に示すような値になる。一方BISTEN140が“H(=1)”の時のアドレスマップは第6図の(b)のようになる。この場合、全てのページが、0xA5000000〜0xA5007FFF、の32kバイトに割り付けられ、各ページのイネーブル信号も同一のアドレスでアサートされるようになる。この場合、第6図の(b)で“×”で示す領域402に対するアクセスはどのページも反応せず無効となる。
第7図には第6図のアドレスマップを実現するためのイネーブル制御回路356の構成を例示する。第7図には4ページ分の論理がをまとめて示される。上位アドレスデコーダ451はコマンド452がリードまたはライトであり、かつBISTEN140が“L”の時にはアドレスの上位31ビット〜20ビット(A31〜A20)が0xA540〜0xA57Fの場合、BISTEN140が“H”の時には0xA500〜0xA53Fの場合に、イネーブル信号(UMEMEN)453をアサートするように動作する。各ページのイネーブル信号(UPAGE0LEN,UPAGE0HEN,UPAGR1LEN,UPAGE1HEN)470〜473は、UMEMEN453と、BISTEN140と、アドレスビットA21及びA15をデコード回路(U0LDEC)460、(U0HDEC)461、(U1LDEC)462、(U1HDEC)463でデコードして生成される。アドレスビットA21は0xA5400000〜0xA55FFFFF又は0xA5600000〜0xA57FFFFFを決定するアドレスビットとされ、アドレスビットA15は、0xA5400000〜0xA55FFFFFの領域に対して上位半分か下位半分かを、0xA5600000〜0xA57FFFFFの領域に対して上位半分か下位半分かを決めるアドレスビットとされる。BISTEN140が“L”の時にはENOR(排他的負論理和ゲート)480がインバータとして働き、各ページのイネーブル信号(UPAGE0LEN)470、(UPAGE0HEN)471、(UPAGE1LEN)472、(UPAGE1HEN)473が排他的にアサートされる。一方、BISTEN140が“H”の時には、ENOR480がバッファとして働き、アドレスのビットA21とA15が共に“0”かつUMEMENが“1”であるときのみ各ページのイネーブル信号470〜473を並列にアサートし、アドレスがそれ以外の条件の時にはUMEMENに関わらず全てのイネーブル信号470〜473がネゲートされるように動作する。
第8図にはXYメモリ108のアドレスマップが例示される。この図はXYメモリ108は1ページ4kバイトで4ページ存在し、計16kバイトの場合を例とする。拡張性を考慮してXYメモリ108には0xA5000000〜0xA501FFFFまでの128kバイトの空間が割り当てられており、本実施例ではそのうち16kバイトに実際のメモリが存在する構成になっている。また図には示していないが0xA5020000〜0xA50FFFFFの空間は0xA5000000〜0xA501FFFFの空間のシャドウとして扱われる。この構成の場合、BISTEN140が“L”の時のアドレスマップは第8図の(a)のようになる。4ページはそれぞれ、“X0:0xA5007000〜0xA5007FFF”、“X1:0xA5008000〜0xA5008FFF”、“Y0:0xA5017000〜0xA5017FFF”、“Y1:0xA5018000〜0xA5018FFF”に割り付けられる。この場合、第8図において網かけされた領域501はシャドウとなり、各ページのイネーブル信号(XPAGE0EN、XPAGE1EN、YPAGE0EN、YPAGE1EN)は、第8図の(a)の右側に示すような値になる。一方BISTEN140が“H”の時のアドレスマップは第8図の(b)のようになる。この場合、全てのページが、“0xA5000000〜0xA5000FFF”に割り付けられ、各ページのイネーブル信号(XPAGE0EN、XPAGE1EN、YPAGE0EN、YPAGE1EN)も同一のアドレスでアサートされるようになる。第8図の(b)で“×”で示す領域502に対するアクセスはどのページも反応せず無効となる。第6図で示した汎用メモリ107の場合と違うのは、BISTEN140が“H”の時、シャドウ領域501がなくなることである。これは本実施例ではメモリのサイズが汎用メモリ107より小さいため、同時テストをする際にシャドウを残したままだと、例えば13NテストのL1フェーズにおいて、汎用メモリのL1フェーズを実行中にXYメモリ107に対するL1フェーズのテストを複数回行ってしまい、次のL2フェーズの開始時に期待される状態を壊してしまうためである。
第9図には上記アドレスマップを実現するためのイネーブル制御回路356の構成を説明する。上位アドレスデコーダ551はコマンド552がリードまたはライトであり、アドレスの上位ビット31〜ビット20が0xA50の場合にXMEMENB553をアサートするように動作する。AMASK回路554はアドレスのビットA14、A13,A12と、XMEMENB553と、BISTEN140をデコードしてXMEMEN555を生成する。BISTENが“0”の時は、アドレスのビットA14,A13,A12に関わらずXMEMEN=XMEMENBとなるが、BISTEN140が“1”の時は、アドレスのビットA14、A13,A12が“000”の時のみ、XMEMEN=XMEMENBとなり、それ以外はXMEMENは“0”となる。各ページのイネーブル信号は、XMEMEN555と、BISTEN140と、アドレスビットA16及びA15をデコード回路(X0DEC)560、(X1DEC)561、(Y0DEC)562、(Y1DEC)563でデコードして生成される。BISTEN140が“L”の時にはENOR580がインバータとして働き、各ページのイネーブル信号(XPAGE0EN)570、(XPAGE1EN)571、(YPAGE0EN)572、(YPAGE1EN)573が排他的にアサートされる。一方、BISTEN140が“H”の時には、ENOR580がバッファとして働き、アドレスビットA16、A15が共に“0”かつXYMEMEN555が“1”ときのみ各ページのイネーブル信号570〜573が同時にアサートされ、アドレスがそれ以外の条件の時にはXYMEMEN555に関わらず全てのイネーブル信号570〜573がネゲートされるように動作する。
第10図には命令フェッチの構成を主体としてCPU102の詳細が例示される。610は演算部であり、特に図示はしないが、内部バスに接続された汎用レジスタ、算術論理演算器、アドレスレジスタ、データバッファレジスタ、テンポラリレジスタ、及びコントロールレジスタ等を有する。CPUアドレスバス202はアドレスレジスタに接続され、CPUデータバス203はデータバッファレジスタに接続される。
命令キュー103は例えば12段のバッファエリアを備えた命令バッファ103BFと、命令バッファ103BFをFIFO動作させるためのリードポインタ103RP及びライトポインタ103WPを有する。リードポインタ103RPはリード動作を行なうバッファエリアを指定するループカウンタであり、カウント値CNTRは#0〜#11とされる。ライトポインタ103WPはライト動作を行なうバッファエリアを指定するためのループカウンタであり、カウント値CNTWは#0〜#11とされる。リードポインタ103RP及びライトポインタ103WPは初期値を基点に、ライト動作が行なわれる毎にライトポインタ103WPがインクリメントされ、リード動作が行なわれる毎にリードポインタ103RPがインクリメントされる。ライトポインタ103WPのカウント値CNTWにリードポインタ103RPのカウント値CNTRが追いついた状態は、12段のバッファエリアの全てに有意の記憶情報が保持されていない状態、換言すれば、バッファエリアに一旦記憶された記憶情報は全て読み出し完了されているエンプティ(空)状態を意味する。リードポインタ103RPのカウント値CNTRにライトポインタ103WPのカウント値CNTWが追いついた状態は、12段のバッファエリアの全てに有意の記憶情報が保持されている状態、換言すれば、全てのバッファエリアは未だ読み出されていない記憶情報で満たされているフル(満)状態を意味する。
命令バッファ103BはCPUデータバス203から命令を取り込む。バッファ103Bから読み出された命令又はCPUデータバス203上の命令はセレクタ603で選択されて命令レジスタ(IR)601に供給される。IR601にラッチされた命令は命令デコーダ602で解読され、その解読結果に従って演算部610による演算動作を制御し、命令制御部607を制御する。
前記命令制御部607は、IR601への命令フェッチの経路を選択信号SELによりセレクタ603に選択させ、リードポインタ103RPのインクリメント信号INCR、ライトポインタ103WPのインクリメント信号INCWを生成する。この命令制御部607は、命令フェッチ又は命令プリフェッチのために演算部610を介するメモリアクセスサイクルの生成を制御し、また、命令キュー103に対する命令の書き込み(プッシュ)と読み出し(プル)の操作を制御し、更に、命令キュー103をリピートキュー若しくはループキューとして動作させる制御等を行なう。
命令制御部607による命令プリフェッチ制御機能を説明する。命令制御部607は、前記リードポインタ103RPのカウント値CNTRとライトポインタ103WPのカウント値CNTWを入力し、命令バッファ103のフル・エンプティー状態を検出している。命令制御部607は、命令バッファ103Bがフル状態でなければ、データバス203の空きタイミングを利用して、キャッシュメモリ106又は外部のROM131或はRAM132から命令バッファ103Bに命令をプリフェッチするためのメモリサイクルを演算部610に生成させる。この時の命令アドレスはプログラムカウンタなどを利用して生成される。このメモリサイクルでデータバス203に供給される命令は命令バッファ103Bに保持され、インクリメント信号INCWによりライトポインタ103WPの値がインクリメントされる。
命令制御部607による命令フェッチ制御機能を説明する。IR601への命令フェッチタイミングにおいて、命令バッファ103Bがエンプティー状態でなければ、命令バッファ103Bから読み出した命令をセレクタ603を介してIR601にラッチさせる。命令バッファ103Bから読み出しの後、リードポインタ103RPがインクリメントされる。IR601への命令フェッチタイミングにおいて、命令バッファ103Bがエンプティー状態であれば、キャッシュメモリ106又は外部のROM131或はRAM132から命令をフェッチするためのメモリサイクルを演算部610に生成させ、このメモリサイクルでデータバス上203に得られた命令をセレクタ603を介してIR601にラッチさせる。
命令制御部607によるリピートキュー制御機能を説明する。CPU102の命令セットはリピート命令を含む。このリピート命令は、繰り返し実行する先頭の命令アドレス、最終の命令アドレス、繰り返し回数を指定する。命令デコーダ602はリピート命令をデコードすると、先頭命令アドレスから最終命令アドレスに至る命令を指定された回数だけ繰り返し実行するように、演算部610による命令アドレス生成や命令制御部607に対する命令フェッチ等を制御して、リピートループを形成する。このとき、命令デコーダ602は、命令制御部607に命令キュー103をリピートキューとして動作せる指示を与える。即ち、命令デコーダ602はリピート命令のデコードにより、命令制御部607内のリピートキューモードフラグ607Fをセットし、リピートループの繰り返し回数と個々のリピートループで実行する命令数をレジスタ607Rにセットする。この操作が行なわれた後、命令制御部607は、リピート命令で指定される先頭命令の実行に移る前に、リードポインタ103RPとライトポインタ103WPの値を初期値にリセットし、最初のリピートループでは、キャッシュメモリ106又は外部のROM131或はRAM132から命令をIR603にフェッチし、フェッチした命令を実行していく。これに並行して、最初のリピートループの命令を順次命令キュー103に蓄積していく操作を行なう。第2回目のリピートループからは、命令バッファ103Bに格納された命令を順次読み出して実行していく。このとき、命令制御部607は、リードポインタ103RPのカウント値がレジスタ607Rの設定値(命令数)に到達する毎にリセット信号RESでそのカウント値CNTRを初期値に戻し、リングカウンタ動作させる。リピートループの実行回数がレジスタ607Rの設定値(リピートループの繰り返し回数)を終了すると、リピートキューモードフラグ607Fがリセットされ、これにより、命令制御部607は命令キュー103に対するリピートキュー動作の制御を終了する。
このように、リピートループを使用する場合には、命令制御部607がリピートループの長さを判定し、命令キューに収まる長さ(この例においては12命令以下)の場合には命令キュー103に一旦格納してリードした命令をすぐに吐き出さず、2回目以降のリピートループのためにとっておくという制御を行う。その結果、リピートループの1回目だけは命令フェッチを必要とするが、リピートループの2回目以降を実行する際には命令フェッチが不要となるため、CPUバス105を効率的に使用できるようになる。またリピートループにおいて先頭に戻る処理は分岐命令を必要としないため、ループを構成するプログラム自体が短くなる。そのようなリピート命令をメモリテストのためのテストプログラムに用いることにより、メモリテストを高速化することができる。
第11図には汎用メモリ107に対する救済を実施しない場合のテストフローが例示される。まずステップ651においてBISTモジュール110の初期設定が行なわれる。具体的にはコントロールレジスタBISTCR1のC2ビットを“0”に設定し、救済情報信号113をBISTFDR(303)から生成するようにする。またBISTFDRに“救済ビットを使用しない”設定である全ビット“0”を書き込む。以上の設定により救済ビットは使用されなくなる。またBISTCR1のC0ビットに“0”を設定し、不一致が発生した場合にはFAIL端子205がアサートされるようにする。さらにパターン0及びパターン1用の期待値をBISTDR0及びBISTDR1(301)に設定する。次にステップ652においてBISTCR1のENビットに“1”を書き込み、メモリテストモードに移行する。この結果BISTEN140が“1”となる。
次にステップ653において、CPU102にメモリテストのためのリピート命令を実行させ、リピートループのテストプログラムに従ってメモリテストのためのメモリアクセス及びアクセスアドレスの更新等を行わせる。次にステップ645においてメモリから読み出されたデータとレジスタに書かれた期待値の比較を行う。この比較はBISTモジュール110において各ページに対して並列に行われる。次にステップ655において比較結果の判定が行われ、どれか一つのページにおいて不一致が発生していた場合、ステップ656において外部端子であるFAIL端子がアサートされ、不良品と判定されてテストは終了する。
比較結果で不一致が発生していなかった場合、ステップ657でループカウンタのデクリメントが行われる。次にステップ658においてループカウンタが0になったかどうかの判定が行われ、0でなければステップ653に戻る。この動作がループカウンタが0になるまで繰り返され、それまでの間に一度も不一致が発生しなければPASSと判定される。ステップ654〜658の処理は全てハードウェアで行われる。13Nテストなどのようにテスト全体が複数のフェーズ毎に構成される場合、フェーズの数だけ上記の一連の動作が繰り返され、最終フェーズが終わった段階でPASSと判定されたものが良品である。
尚、第11図においてステップ656、657はハードウェアによる処理であり、その他のステップはソフトウェアによる処理である。
第12図には汎用メモリ107に対する救済を実施する場合のテストフローが例示される。先ず、ステップ701においてBISTモジュール110の初期設定が行なわれる。具体的にはコントロールレジスタBISTCR1(306)のC2ビットを“0”に設定し救済情報信号113をBISTFDR(303)から生成するようにする。またBISTFDRに“救済ビットを使用しない”設定であるALL0を書き込む。以上の設定により救済ビットは使用されなくなる。またBISTCR1のC0ビットに“1”に設定し、不一致が発生した場合でもFAIL端子205がアサートされないようにする。さらにパターン0及びパターン1用の期待値をBISTDR0及びBISTDR1(301)に設定する。次にステップ702においてBISTCR1のENビットに“1”を書き込み、メモリテストモードに移行する。この結果BISTEN140が“1”となる。
次にステップ703においてCPU102にメモリテストのためのリピート命令を実行させ、リピートループのテストプログラムにしたがってメモリテストのためのメモリアクセス及びアクセスアドレス更新等を行わせる。ステップ704においてメモリから読み出されたデータとレジスタに書かれた期待値の比較を行う。この比較はBISTモジュール110において各ページに対して並列に行われる。次にステップ705において比較結果の判定が行われ、どれか一つのページにおいて不一致が発生していた場合、ステップ706において不一致の発生したアドレスが救済可能かどうか判定する。ここでは、汎用メモリ106の各ページ毎に1アドレスまで救済可能とする。したがって、同一ページにおいて複数箇所の不一致が発生した場合や、救済ビットを持たないXYメモリ108において不一致が発生した場合は、救済不能と判定する。救済可能と判定された場合、BISTFDRに救済情報信号113を生成するための情報が書き込まれる。救済不能と判定された場合、ステップ707で救済不可端子207がアサートされ、不良品と判定されてテストは終了する。比較結果で不一致が発生していなかった場合、又は不一致が発生したが救済可能と判定された場合、ステップ708でループカウンタのデクリメントが行われる。次にステップ709においてループカウンタが0になったかどうかの判定が行われ、0でなければステップ703に戻る。この動作がループカウンタが0になるまで繰り返される。ステップ704〜709の処理は全てハードウェアで行われる。
ループカウンタが0になるとステップ710に進み、それまでの間に一度も不一致が発生していなければ正常(PASS)と判定される。不一致が発生していた場合、救済が可能なのでステップ711に進む。上述のテストの段階で救済可能な不一致が発生していた場合、救済情報信号113を生成するために必要なデータがレジスタ(BISTFDR)にBISTモジュール110の制御により自動的に書き込まれている。したがって、次はこの救済情報を使用して救済ビットのテストを行うことになる。テスト動作自体は上述のものと同一であるが、ステップ712のBISTモジュールの初期設定において、今度はBISTCR1のC0ビットに“0”に設定し、不一致が発生した場合にFAIL端子(205)がアサートされるようにする。既に救済を使用しているため、更に不一致が発生したということは救済ビットも不良であったということであり、その場合ステップ717においてFAIL端子をアサートし不良と判定される。ステップ713〜719の動作はそれぞれステップ702〜709と同一である。テストが終了した段階で不一致が発生していなければ救済成功であり、ステップ720でBISTFDRのデータをヒューズ回路115に書き込んでテストを終了する。
尚、第13図においてステップ704、707、708、711、715、717、718はハードウェアにより処理であり、ステップ720はテスタによる処理であり、その他のステップはソフトウェアによる処理である。
第13図には第1図のシステムLSIに対して13Nテストを行うための命令列をアセンブリ言語により示す。リピート命令(REPEAT)はリピートループの開始アドレス、終了アドレス、ループ回数を指定するための命令であり、“REPEAT 開始アドレス,終了アドレス,ループ回数指定レジスタ”という構文となっている。開始アドレス、終了アドレスはそれぞれアセンブリ言語プログラムのラベルで指定可能である。第16図に示したように13NテストはL0〜L4の5つのフェーズで構成されており、それぞれL0は1命令のリピートループ(750)、L1〜L4はそれぞれ3命令のリピートループ(751、752、753、754)で実行される。リードに使用するアドレスポインタ用レジスタをR2とR3の2種類用意しているのは、アドレスのビットA18によりパターン0とパターン1の期待値を切り替えるためである。第6図の(b)及び第8図の(b)に示したように、この例ではBISTEN140が“1”の時、汎用メモリ107及びXYメモリ108は0xA5000000〜0xA5007FFFにマッピングされるため、アドレスポインタの初期値は0xA5000000に設定される。またメモリの各ページを32ビット幅でアクセスするため、ループカウンタの初期値は0x2000に設定される。
第14図には第13図で示した命令列のフェーズL1を実行中のCPUバス105及びBIST専用データバス141、142のタイミングチャートを示す。R.Lはロングワード(32ビット)のリードコマンド、W.Lはロングワードのライトコマンド、RD0は13Nテストのパターン0のリードデータ、RD1はパターン1のリードデータ、WD1はパターン1のライトデータを示している。これによれば、例えば13NテストのフェーズL1を実行するのに3サイクル/ループとなる。更に汎用メモリ107及びXYメモリ108の併せて8ページに対して並列テストが可能である。
ここで、比較例として、本発明によるリピートループ機能を持たず比較判定のための専用回路も持たない場合にCPUでオンチップメモリをテストする場合について説明する。13Nテストを行う比較例に係るプログラムとして、L1フェーズを実行するためのテストプログラムを例えば第17図のように記述する事ができる。R0〜R7はCPUのレジスタであり、それぞれR0がメモリアドレス、R1がパターン0用期待値データ、R2がパターン1用ライトデータ兼期待値データ、R3がパターン0読み出しデータの格納先、R4がパターン1読み出しデータの格納先、R7がループカウンタになっている。このプログラムは9命令で構成されており、それぞれ命令901でパターン0を読み出し、命令902でパターン1の書き込み、命令903でパターン1の読み出し及びアドレスのインクリメント、命令904でパターン0データの一致判定、命令905でパターン0が不一致だった場合にエラー処理を行うための分岐、命令906でパターン1データの一致判定、命令907でパターン1が不一致だった場合にエラー処理を行うための分岐、命令908でループカウンタのデクリメント及びループ終了判定、命令909でループが未終了の場合のループ先頭への分岐を、夫々行っている。
上記比較例に係るテストプログラムをキャッシュメモリに配置し、1サイクルアクセスできる内蔵メモリのテストを実行した場合のCPUと内蔵メモリを接続するバスのタイミングチャートを第18図に示す。テスト対象のメモリが0xA5000000から配置されているとした場合のループ4回目を示したものである。1ループあたり11サイクル必要となり、その内、実際にメモリのテストを行っているのはパターン0のリードコマンド951、パターン1のライトコマンド952、パターン1のリードコマンド953だけであり、その実行には3サイクルしか費やされていない。残りの8サイクルは、プログラム自体の命令フェッチサイクル954及び比較命令によるサイクル955になっている。またCPUが受け取って比較できるデータは1サイクルあたり1データであるため、テスト対象のメモリが複数存在する場合でも同時並列テストはできず、シーケンシャルにテストする必要がある。
尚、第18図においてJIFは分岐命令フェッチ、NIFは通常命令フェッチ、R.Lはロングワードリード、W.Lはロングワードライト、NOPはノンオペレーション、RD0はリードデータ0、RD1はリードデータ1、WD1はライトデータ1を夫々示す。
第13図及び第14図の本発明の場合と、第16図及び第17図の比較例の場合とを比べれば、後者は13NテストのフェーズL1を実行するのに11サイクル/ループであり、本発明の場合には、3サイクル/ループとなる。さらに比較例の場合には同時にテスト可能なメモリのページはただ一つであるのに対し、本発明によれば8ページの同時並列テストを行なうことができ、メモリテストを更に高速化することができる。即ち、13NテストのL1フェーズに着目すれば、比較例では汎用メモリのテストに“11サイクル×8kループ×4ページ=352k”ステップ必要であり、XYメモリのテストに“11サイクル×1kループ×4ページ=44k”ステップ必要であり、合計で、396kステップになる。これに対し、本発明では全メモリが“3サイクル×8kループ=24k”ステップで済み、396/24=16.5倍高速化されることがわかる。
第15図には本発明に係る半導体集積回路の別の例が示される。第1図の例ではキャッシュメモリ106をテスト対象とはしていなかったが、第15図の例ではキャッシュメモリ106もテスト対象とするように構成される。具体的にはBISTEN140をキャッシュメモリ106にも出力し、またキャッシュメモリ106からBISTモジュール110に対してBIST専用データバス143を設け、BISTモジュール110は汎用メモリ107、XYメモリ108、及びキャッシュメモリ106からのリードデータを並列比較判定処理できるようになっている。キャッシュメモリ106が持つCPUバス105とシステムバス118とのブリッジ機能はメモリテストモード時においても使用可能な構成としておくことで、キャッシュメモリ106をも含めた並列テストを行うことが出来る。要するに、メモリテストモードにおいてキャッシュメモリ106はCPU102のメモリ空間に配置され、アドレスを指定してリード・ライト可能にされる。
また、第15図に示す例ではXYメモリ108とキャッシュメモリ106も救済可能な構成とし、それぞれに対してBISTモジュール110から救済情報信号144、145を出力するようになっている。
第19図には第1図で代表されるようなセルフテスト機能を有する半導体集積回路の開発及び製造手順が例示される。第19図によれば、所望の半導体集積回路が企画され、その仕様が決定され、これに基づいて、論理設計(S1)、レイアウト設計(S2)、フォトマスク作成(S3)、製造(S4)、機能テスト(S5)メモリテスト(S6)、及び出荷処理(S7)が行なわれる。半導体集積回路の開発及び製造は一つの半導体集積回路製造メーカで行なうことができる。今日では、半導体集積回路の製造だけを担う所謂ファウンダリと、専ら半導体集積回路の設計を専門とし、製造部門を持たない所謂ファブレスとによって分業化される場合がある。ファブレスは、例えば、論理設計、そして必要な場合にはレイアウト設計まで行ない、その後の工程はファウンダリに外注し、最終製品を受け取って出荷するという事業形態を採る。例えば第19図では、FBをファブレスによる処理、FDをファウンダリによる処理として位置付けている。
前記論理設計(S1)やレイアウト設計(S2)等の開発設計工程では、過去の設計資産を利用し、更に今日では、IPモジュールデータと称して流通される回路設計データを用いることが可能である。IPモジュールデータは、前記CPU102やDSP104等の回路モジュールを、HDL(Hardware Description Language)などの論理記述言語で特定した設計データ(ソフトIPモジュールデータとも称する)、或はマスクパターンデータによって特定した設計データ(ハードIPモジュールデータとも称する)とされる。通常、IPモジュールデータは回路設計データの他に、デバッグ用情報もパッケージされる。
第1図などで説明したオンチップメモリテストの効率化の手段を他の半導体集積回路の開発に容易に適用できるようにするには、そのための回路構成を特定する回路設計データをIPモジュールのような設計データとして提供できるようにすればよい。
例えばCPUに着目すると、第10図で説明したループキュー機能を持つCPU102の回路データを前記ソフトIPモジュールデータ又はハードIPモジュールデータとして提供すればよい。要するに、そのような回路データは、命令キュー103、バス105、命令キュー103又はバス105を介して供給される命令を解読する命令デコーダ602、及び制御部607の夫々の回路データを含めばよい。前記命令デコーダ602は、所定のリピート命令をデコードして前記制御部607に、リピートすべきプログラムが一旦命令キュー103に格納された後の当該リピートすべきプログラムのフェッチを前記命令キューから繰返し可能とする動作モードを設定する機能を実現できればよい。この機能はHDLによって記述されても、或は具体的な回路のマスクパターンによって特定されてもよい。
前記CPU102の設計データは、その設計データで実現されるCPU102により実行可能なテストプログラムと一緒に提供されてもよい。そのテストプログラムは、前記ループキューモードのような動作モードにおいて命令キュー103に格納され、CPU102に、バス105経由のメモリアクセス処理及びメモリアクセスアドレス更新処理を繰り返し実行させる、メモリテストのためのプログラムであればよい。
前記設計データやテストプログラムはコンピュータ読み取り可能な情報記録媒体(単に記録媒体とも記す)に格納されて提供されればよい。例えば前記記録媒体は、CD−ROM(Compact Disk−Read Only Memory)、CD−R(Compact Disk−Recordable)、CR−RW(Compact Disk−Rewritable)、DVD−ROM(Digital Video Disk−Read Only Memory)、DVD−RAM(Digital Video Disk−Random Access Memory)、FD(Floppy Disk)等、コンピュータ読み取り可能な記録媒体であればよい。
第20図には半導体集積回路の開発システムの一例が示させる。同図において1、2,3で示されるものはエンジニアリングワークステーションのようなコンピュータ装置であり、情報処理ネットワークに接続されている。情報処理ネットワークはLAN(ローカル・エリア・ネットワーク)、インターネットなどのWAN(ワイド・エリア・ネットワーク)、無線通信ネットワークなどのシステムであり、4で示されるものがそのシステムにおける光ファイバ、ISDN回線、又は無線回線などの伝送媒体を意味している。伝送媒体4には、特に制限されないが、ホストコンピュータ装置5、ルータやターミナルアダプタ等の通信アダプタ6,7,8を介して代表的に示された前記コンピュータ装置1,2,3が接続されている。
コンピュータ装置1は、特に制限されないが、プロセッサ(MPU)9を有し、表示コントローラ(DISPC)13、ネットワークコントローラ(NETC)14、及びメインメモリ(DRAM)15が接続され、また、プロセッサ9の周辺回路に接続されたフロッピーディスクコントローラ(FDC)20、キーボードコントローラ(KEYC)21、及びインテグレーテッド・デバイス・エレクトロニクス・コントローラ(IDEC)22が設けられている。DISPC13はビデオRAM(VRAM)24に描画制御を行い、描画した表示データをディスプレイ(DISP)23に表示制御する。NETC14は通信アダプタ6に接続され、送受信情報のバッファリング及び通信プロトコル制御等を行う。DRAM15はMPU9のプログラム領域及びワーク領域などに利用される。前記FDC20にはフロッピーディスクドライブ装置16が接続され、記録媒体の一例であるフロッピーディスク25から情報を読み取り、また、情報を書込む。KEYC21にはキーボード17が接続される。IDEC22にはハードディスクドライブ装置(HDD)18、CD−ROMドライブ装置(CDRD)19が接続される。HDD18は記録媒体の別の例である磁気ディスクを有する。CDRD19は記録媒体の更に別の例であるCD−ROM26を有する。その他のコンピュータ装置2,3も上記同様に構成される。
前記コンピュータ装置1を用いて半導体集積回路の開発設計を行なう場合、例えばフロッピーディスク25やCD−ROM26で提供されるCPUなどの回路設計データを読取ってハードディスクドライブ装置18に一時的に格納する。このとき、フロッピーディスク25やCD−ROM26には第10図で説明した前記CPUの回路データが格納され、また、前記テストプログラムが格納されている。前記テストプログラムは、CD−ROM26等の記録媒体のみならず、情報処理ネットワークを介して、提供されるものであってもよい。コンピュータ装置1を用いて半導体集積回路を設計するとき、フロッピーディスク25やCD−ROM26で提供されたCPU102の回路データを用いることにより、その半導体集積回路にオンチップするメモリを前述のように効率的にテストすることができる半導体集積回路の開発期間を短縮させることが可能になる。即ち、フロッピーディスク25やCD−ROM26で提供されたIPモジュールデータのようなCPU102の回路データを用いる半導体集積回路の設計開発を容易化することができる。そして、そのようにして開発されて製造された半導体集積回路のオンチップメモリに対するメモリテストでは、フロッピーディスク25やCD−ROM26で提供されたテストプログラムを、その半導体集積回路にロードして、オンチップCPUに前記テストプログラムを実行させればよい。オンチップCPUは、メモリテスト機能として命令キュー103の前記リピートキュー機能をサポートし、テストプログラムから分岐命令の排除を可能にしているから、CPUのハードウェアに対して最適化されたメモリテストプログラムを最初から開発しなくても済む。このように、CPU等のIPモジュールデータを用いて半導体集積回路の開発を行なうユーザはCPUの回路設計やオンチップメモリに対するテスト設計を効率化でき、半導体集積回路の開発製造を効率化することができる。
メモリテスト用のテストプログラムは、オンチップのCPUにより実行されるため、CPUのプログラム開発に用いるアセンブリ言語等で記述可能であり、半導体集積回路の用途や不良事象に合わせて、予めコンピュータ装置1上で簡単に変更可能となる。したがって、上記CPUのIPモジュールデータを提供する際に、メモリテスト用のテストプログラムとしてサンプルプログラム等を提供するだけで、IPモジュールデータのユーザは様々なメモリテストに容易に対応することが可能となる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、ループキューモードを有する命令キュー、メモリテストモードに対応するメモリ、BISTモジュールの夫々の構成は上記の例に限定されず適宜変更可能である。例えばデータバスが32ビットで、命令が16ビット固定長である場合、命令キューは16ビット単位で命令をプリフェッチしてもよいが、IRが32ビットで2命令をまとめてラッチする構成であるなら、これに合わせて命令キューも32ビット単位で命令をプリフェッチするようにしてよい。また、命令キューのループキューモードにおける動作制御内容も上記に限定されない。更に、半導体集積回路のオンチップモジュールは上記の例に限定されず適宜変更可能である。また、半導体集積回路の開発システムを構成するコンピュータ装置はネットワークに接続可能にされていることに限定されず、スタンドアロンで利用されるようになっていてもよい。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
すなわち、命令キューをループキュー動作させるから、同じテストプログラムを繰り返し実行可能にするために分岐命令を利用しなくても済む。そして、繰り返し実行するテストプログラムを命令キューから繰り返しフェッチすればよく、メモリテストのためのメモリリード・ライトアクセスと命令フェッチのためのメモリアクセスがバス上で競合しない。したがって、テストプログラムから分岐命令を排除することができ、さらにCPUに接続されたバスから同じ命令を繰返しフェッチする必要がないので、半導体集積回路のオンチップメモリに対するテスト効率を向上させることが可能になる。
リピートキューモードの設定が可能なCPUの設計データを記録媒体に記録して提供すれば、そのような設計データを用いてCPUの設計を行うことにより、オンチップメモリを能率的にテスト可能とする半導体集積回路の開発期間を短縮させることができる。
上記設計データと共に当該設計データで開発されるCPUを用いたメモリテストのプログラムを一緒に記録媒体に記録して提供することにより、CPUを用いる半導体集積回路の設計開発を容易化でき、そのような半導体集積回路のオンチップメモリに対するメモリテストではオンチップCPUに前記テストプログラムを実行させればよく、CPUの回路設計やオンチップメモリに対するテスト設計を効率化でき、半導体集積回路の開発を効率化することができる。
メモリテストのための比較判定回路をCPUとは別の専用ハードウェアとして持つことにより、CPUが実行するテストプログラムから比較判定のための比較命令も除去することが可能になり、更にオンチップメモリのテスト効率を向上させることができる。比較判定対象のリードデータを専用バスで比較判定回路に導けばメモリテストのためのライトデータがリードデータとバス上で競合する事態も回避できる。
産業上の利用可能性
本発明は、メモリを内蔵するデータプロセッサ、マイクロコンピュータ、或はシングルチップマイクロコンピュータなどの半導体集積回路、更にはそのテスト技術に広く適用することができる。
【図面の簡単な説明】
第1図は本発明に係る半導体集積回路の一例であるマイクロコンピュータのようなシステムLSIを例示するブロック図である。
第2図はメモリテストに関係する回路ブロックの接続状態を詳細に例示するブロック図である。
第3図はBISTモジュールの詳細を例示するブロック図である。
第4図はBISTモジュールのレジスタ部が保有するレジスタの説明図である。
第5図はXYメモリの1ページの構成を例示するブロック図である。
第6図は汎用メモリのアドレスマップを例示する説明図である。
第7図は第6図のアドレスマップを実現するためイネーブル制御回路の構成を例示する論理回路図である。
第8図はXYメモリのアドレスマップを例示する説明図である。
第9図は第8図のアドレスマップを実現するイネーブル制御回路の構成を例示する論理回路図である。
第10図はCPUの一例を示すブロック図である。
第11図は汎用メモリに対する救済を実施しない場合のメモリテストの手順を例示するフローチャートである。
第12図は汎用メモリに対する救済を実施する場合のメモリテストの手順を例示するフローチャートである。
第13図は13Nテストを行うための命令列をアセンブリ言語で示す説明図である。
第14図は第13図で示した命令列のフェーズL1を実行中におけるCPUバス及びBIST専用データバスのタイミングチャートである。
第15図は本発明に係る半導体集積回路の別の例であるシステムLSIを例示するブロック図である。
第16図はオンチップメモリのテストシーケンスの一つである13Nテストの手法を示す説明図である。
第17図は13Nテストを行う比較例に係るプログラムとしてL1フェーズを実行するためのテストプログラムを例示する説明図である。
第18図は第17図の比較例に係るテストプログラムをキャッシュメモリに配置し1サイクルアクセスできる内蔵メモリのテストを実行した場合のCPUと内蔵メモリを接続するバスのタイミングチャートである。
第19図は第1図で代表されるようなセルフテスト機能を有する半導体集積回路の開発及び製造手順を例示するフローチャートである。
第20図は半導体集積回路の開発システムの一例を示すブロック図である。
Technical field
The present invention relates to an on-chip memory test technique in a semiconductor integrated circuit, for example, a technique effective when applied to a test method for a system LSI such as a data processing apparatus, a microprocessor, and a single chip microcomputer incorporating a memory.
Background art
With the development of microfabrication technology, it has become possible to mount a very large scale circuit on a semiconductor integrated circuit (LSI). Therefore, the capacity of memory circuits such as SRAM (Static Random Access Memory), DRAM (Dynamic Random Access Memory), and flash memory mounted on a system LSI such as a single-chip microcomputer has been dramatically increased. These memory circuits are mounted at higher density than logic circuits such as CPU (Central Processing Unit), and circuits such as memory cells and sense amplifiers are analog circuits. Necessary. For this reason, a test mode that enables operation or control of an LSI as if it were a single memory IC (Integrated Circuits) is provided only during testing, and a test similar to a single memory IC is performed from an external tester. A method has been used. However, as the operating speed of the system LSI increases, there is a problem that a higher-function and expensive tester corresponding to both the logic IC and the memory IC becomes necessary, or the test time is extended because the test is divided into two paths. . Therefore, a memory BIST (Built-In Self Test) circuit that supports a test by generating a test pattern inside the chip has been provided.
As the memory BIST technology, as described in Japanese Patent Application Laid-Open No. 2000-30484, a sequencer for generating a test pattern and a data generation device for reading and writing are fixedly embedded as hardware in a chip, As described in Japanese Patent Application Publication No. 11-15740, a simple memory test processor is built in, a test program is supplied to the processor from the outside during the test, and the program is executed to generate a test pattern by software Etc. have been devised. However, in the former method, it is necessary to determine a test method at the time of design, and it is difficult to cope with various defective events in the memory. Recently, CPU cores are distributed as IP (Intellectual Property) module data and can be created by processes of various manufacturers. Therefore, it is a good idea that test patterns are fixed because various memory failure events are assumed. Not. The latter method is flexible because it can determine the test pattern at the actual test, not at the time of design, and it can be said that it is suitable for CPU core IP. However, a simple processor for testing other than the original CPU can be used. This requires a large amount of hardware resources and increases the chip area, which is problematic in terms of cost. Moreover, it is necessary for the test designer to write a test program in a special language, and it is not preferable if module data used by various users is assumed.
As a processor for executing a test program, there is a case where a CPU used during normal operation is used in addition to a test-dedicated processor. For example, as described in JP-A-10-511790, a test program is stored in a built-in memory. There is a method of placing a part of a kind of cache memory, causing the CPU to execute the test program, and testing the rest of the cache memory. If this method is used, the amount of hardware to be added for testing can be reduced, and there is an advantage that the manufacturing cost of the chip can be reduced. In addition, since the test program is not limited to a dedicated processor but may be provided for a CPU that is normally used, there is an advantage that the test program can be created in an assembly language familiar to the user.
However, the above-described conventional technique of executing a program by causing the CPU to execute a program performs the test of the remaining internal memory in a state where the test program is arranged in a part of the internal memory such as a cache memory, and therefore the following problems It has been found by the present inventors.
First, if memory access for instruction fetch and test competes on the bus connecting the CPU and the built-in memory, there is a possibility that a stall may occur with respect to CPU instruction execution, resulting in a decrease in test efficiency. It was. In addition, since the CPU determines whether the cache memory is good or bad, it is necessary for the CPU to execute an instruction for determining whether the data read from the cache memory matches the expected value. There is a problem that the ratio of instructions to be performed is reduced, and the test time is longer than that of the BIST technique using a dedicated test sequencer. In short, in addition to instruction execution for memory read access and write access for memory test, instruction execution for comparison and the like increase, and the memory test time increases relatively. Also, the memory test program is a program that executes certain operations such as memory read / write over the entire memory area by changing only the address, so it must be a loop type program. Instructions are required, and the ratio of read / write instructions also decreases in this respect. In a CPU without a branch prediction function, the branch instruction itself requires a plurality of execution cycles, so that the number of cycles required for the test increases more than the increase in the number of instructions. Furthermore, since the CPU cannot normally access multiple normal memories with different address mappings at the same time, when there are multiple test target memories, or when the memory is divided into multiple pages (multiple memory blocks) However, the test cannot be performed by accessing these memories in parallel, and there is a problem that the test must be performed sequentially and the test time becomes long.
For example, there is a technique called a 13N test as a memory test sequence. The 13N test is discussed in I.E.E. Design and Test of Computers February (1989), pages 26 to 34 (IEEE DESIGN & TEST OF COMPUTERS, FEBRUARY 1989, pp. 26-34). This is a test method for SRAM that is generally known as a test for a built-in memory of a system LSI. In the 13N test, for example, the pattern 0 is written in the ascending order of addresses in the entire memory area, and the processes of reading the written pattern 0, writing the pattern 1 and reading the pattern 1 are executed in ascending order for each address. The read data is compared with the expected value. In order to perform such processing by the program execution of the CPU, the pattern 0 read command, the pattern 1 write command, the pattern 1 read and address increment command, the pattern 0 data match determination command, and the pattern 0 did not match. Branch instruction for error handling, pattern 1 data match judgment instruction, branch instruction for error handling when pattern 1 does not match, loop counter decrement and loop end judgment instruction, loop not finished In this case, a program including a branch instruction to the top of the loop must be used. As is clear from this program example, the number of instruction execution cycles such as coincidence determination, branching, and decrementing instructions of the loop counter becomes larger than memory read instructions and write instructions.
The purpose of the present invention is to efficiently determine the test sequence at the time of test execution rather than at the time of chip design, and by using the CPU as a sequencer, the hardware resources required for the test can be reduced. It is to provide a way that can be tested.
Another object of the present invention is to provide a semiconductor integrated circuit that makes it possible to easily implement the test method for the built-in memory.
Still another object of the present invention is to provide an information recording medium storing IP module data such as a CPU, which can contribute to shortening the development period of a semiconductor integrated circuit that makes it possible to easily implement the built-in memory test method. There is.
Another object of the present invention is to record a test program and circuit design data that can contribute to improving the development efficiency of a semiconductor integrated circuit in terms of the development of a CPU and a test method for an on-chip memory accessed by the CPU. It is to provide a recording medium.
The above and other objects and novel features of the present invention will become apparent from the following description of the present specification and the accompanying drawings.
Disclosure of the invention
[1] << Memory Test Method >> A memory test method for testing a memory of a semiconductor integrated circuit having a CPU having an instruction queue, a memory, and a bus connecting the CPU and the memory stores a test program in the instruction queue. The CPU executes a test program to perform memory access via the bus, and once the test program is stored in the instruction queue, fetching of the test program is repeatedly performed from the instruction queue instead of the bus. To do.
Similarly, a memory test method for testing the memory of a semiconductor integrated circuit having a CPU having an instruction queue, a memory connected to the CPU via a bus, and a determination circuit connected to the memory and the bus includes: The test program is stored in the instruction queue, the CPU executes the test program to perform memory write access and memory read access, the memory read access data is compared with the expected value by the determination circuit, and the test program is temporarily stored in the instruction queue. The fetch of the test program after being performed is repeated from the instruction queue instead of the bus.
First, the memory test method employs a repeat operation in which the read information of the FIFO (First-In First-Out) type instruction queue is cyclically looped and the same stored information is used multiple times. There is no need to use a branch instruction to make the program repeatable. Second, a test program to be repeatedly executed may be repeatedly fetched from the instruction queue, and memory read / write access for memory test and memory access for instruction fetch do not compete on the bus. Therefore, branch instructions can be eliminated from the test program, and there is no need to repeatedly fetch the same instructions from the bus connected to the CPU, so memory access instructions such as move instructions for true memory tests are executed As a result, the test efficiency for the on-chip memory of the semiconductor integrated circuit can be improved.
The content of the above test method is determined by the CPU test program, and the test sequence can be determined not at the time of chip design but at the time of test execution. This makes it very easy to adopt the BIST method that requires fewer hardware resources for testing.
[2] << IP module data >> Focusing on CPU IP module data. Design data such as CPU IP module data read by a computer is recorded on a recording medium and provided. The design data includes an instruction queue, a bus, an instruction decoder for decoding instructions supplied via the instruction queue or the bus, and circuit data of the control unit. The instruction decoder decodes a predetermined repeat instruction and allows the control unit to repeat fetching of the program to be repeated from the instruction queue after the program to be repeated is temporarily stored in the instruction queue. Has the function of setting. If the CPU is designed using the circuit data stored in this recording medium, the development period of the semiconductor integrated circuit enabling the built-in memory test method can be shortened.
Focusing on IP module data such as a CPU and a test program, CPU design data and a test program that can be executed by the CPU realized by the design data are provided in a computer-readable manner recorded on an information recording medium. . The design data includes circuit data of an instruction queue, a bus, an instruction decoder, and a control unit. The instruction decoder decodes a predetermined repeat instruction and temporarily stores the program to be repeated in the instruction queue. A function for setting an operation mode in which fetching of the program to be repeated after being repeated can be repeated from the instruction queue. The test program is a program for a memory test that is stored in the instruction queue in the operation mode and causes the CPU to repeatedly execute a memory access process via the bus and a memory access address update process.
According to this computer-readable information recording medium, design data as IP module data facilitates the design and development of a semiconductor integrated circuit using a CPU. In such a memory test for the on-chip memory of the semiconductor integrated circuit, the on-chip CPU may execute the test program. Since the on-chip CPU supports the repeat operation of the instruction queue as a memory test function and enables the elimination of branch instructions from the test program, a memory test program optimized for the CPU hardware is developed from the beginning. You don't have to. Therefore, a user who develops a semiconductor integrated circuit using IP module data such as a CPU can improve the efficiency of the circuit design of the CPU and the test design for the on-chip memory, and the development of the semiconductor integrated circuit can be made more efficient.
Since the test program for the memory test is executed by an on-chip CPU, it can be described in an assembly language or the like used for CPU program development, and can be easily changed in accordance with the use of the semiconductor integrated circuit and a defective event. . Therefore, when providing the IP module data of the CPU, the user of the IP module data can easily cope with various memory tests only by providing a sample program as a test program for the memory test.
[3] << LSI >> Attention is focused on a semiconductor integrated circuit to which the on-chip memory test method can be applied. The semiconductor integrated circuit has a CPU, a memory, and a bus for connecting the CPU and the memory in a semiconductor chip. The CPU includes an instruction queue, an instruction decoder for decoding an instruction supplied via an instruction queue or a bus, and a control unit. The instruction decoder decodes a predetermined repeat instruction, thereby controlling the operation mode in which the program to be repeated can be repeatedly fetched from the instruction queue after the program to be repeated is temporarily stored in the instruction queue. Can be set in the section.
According to the semiconductor integrated circuit, the on-chip CPU supports the instruction queue repeat function as a memory test function, and enables the branch instruction to be excluded from the test program.
In the operation mode, when the CPU executes the program, a data read from the memory is input, and a determination circuit that compares the logical value of the input data with an expected value is provided. You may comprise so that it can output to the exterior of a chip | tip. Comparison instructions for comparison and determination can be removed from the test program executed by the CPU, and the memory test efficiency can be further increased.
At this time, by providing a dedicated bus separated from the bus as a path for supplying read data from the memory to the determination circuit, it is possible to avoid a situation in which the read data and the write data compete on the bus, thereby improving the memory test efficiency. Can be further improved.
From the viewpoint of further improving the test efficiency, when the memory has a plurality of memory blocks, each memory block may be mapped to the same address and enabled to operate in parallel in response to the setting of the operation mode. At this time, the determination circuit only needs to be able to compare and determine the memory read data output from the plurality of memory blocks in parallel with the expected value. As a result, a parallel test can be performed, and the memory test can be made more efficient.
BEST MODE FOR CARRYING OUT THE INVENTION
FIG. 1 shows a system LSI such as a microcomputer as an example of a semiconductor integrated circuit according to the present invention. A system LSI 100 shown in the figure includes a CPU core 101, a DMA (Direct Memory Access Controller) controller 119, a bus controller 120, a peripheral module 121, and a fuse circuit 115, which are formed on a single semiconductor substrate (semiconductor chip such as single crystal silicon). ) By a semiconductor integrated circuit manufacturing technology such as CMOS.
The CPU core 101 includes a CPU 102, a DSP (Digital Signal Processor) 104, a cache memory 106, a general-purpose memory 107, an XY memory 108, and a BIST 110. The CPU 102 has an instruction control unit, an operation unit, and the like. The instruction control unit fetches and decodes instructions constituting the program, and the operation unit performs arithmetic processing and memory access processing according to the decoding result, and executes the instructions. To do. The DSP 104 is an arithmetic unit such as a coprocessor specialized for speeding up digital signal processing. The DSP 104 uses an XY memory 108 connected by an XY bus 109 for various digital signal processing operations such as product-sum operation. The cache memory 106 temporarily stores relatively frequently used programs and data among the programs and data stored in the ROM 131 and the RAM 132 outside the chip. The general-purpose memory 107 is used as a work area for the CPU 102 or a temporary storage area for data. The BIST module 110 is a test circuit used for an on-chip memory test or the like.
The CPU 102, DSP 104, cache memory 106, general-purpose memory 107, XY memory 108, and BIST module 110 are connected by a high-speed CPU bus 105. Further, the cache memory 106, the general-purpose memory 107, the XY memory 108, and the BIST module 110 are also connected to a system bus 118 for connecting to the outside of the CPU core 101. The cache memory 106 is configured to operate as a bridge circuit between the CPU bus 105 and the system bus 118 during non-cache access. That is, when the memory access target by the CPU 102 is a non-target area of the cache by the cache memory 106, the cache memory 106 functions as a bridge circuit that enables the bus 105 and the bus 118 to be connected. The general-purpose memory 107 and the XY memory 108 are each divided into four pages (four memory blocks).
The CPU 102 has a built-in instruction queue 103. Instructions are prefetched into the instruction queue 103 using the empty timing of the buses 105 and 118. In particular, in the present invention, the instruction queue 103 is operated as a repeat queue or loop queue in which a test program is stored when the general-purpose memory 107 and the XY memory 108 are tested, and the stored test program can be repeatedly used. In short, it is not necessary to fetch a test program that is repeatedly executed from the bus 105 through the cache memory 106 every time. Accordingly, it is possible to suppress or reduce the occurrence of a state in which the memory read / write data of the memory test competes with the test program on the bus 105, thereby realizing an efficient memory test. Details of the instruction queue 103 will be described later.
The BIST module 110 outputs a BIST enable signal (BISTEN) 140 indicating whether or not the memory test mode is set to the general-purpose memory 107 and the XY memory 108. Read data read from the general-purpose memory 107 in the memory test operation is supplied to the BIST module 110 via the dedicated data bus 141, and read data read from the XY memory 108 in the memory test operation is supplied to the BIST module 110 via the dedicated data bus 142. Is done. The BIST module 110 compares and determines the read data from the buses 141 and 142 with the expected value data, and outputs a test result signal 111 thereby from the external terminal 112 to the outside of the chip. As a result, read data and write data of the memory test do not compete on the bus 105. In this respect, the memory test can be made more efficient.
In addition, the BIST module 110 uses a general memory 107 such as address information (relief address information) to be relieved for relieving by replacing a defective portion with a redundant memory area when a part of the memory is defective. The relief information is output to the general-purpose memory 107 via the signal 113. In addition, a fuse circuit 115 for storing repair information obtained in the memory test in a nonvolatile manner is provided, and the repair information is input / output between the fuse circuit 115 and the BIST module 110 via a data signal 114. The fuse circuit 115 is controlled to write relief information from the BIST module 110 in accordance with a fuse circuit control signal 116 input via an external terminal 117 for controlling the fuse circuit.
The DMAC 119 performs data transfer control between the memories and data transfer between the memory and the input / output circuit according to the initial setting of the CPU. The bus controller 120 performs interface control relating to the bus width and transfer speed of information transmission via the external bus 130. The peripheral module 121 has peripheral functions such as a timer and a serial interface. The external bus 130 is not particularly limited, but includes a mask ROM (Read Only Memory), an EPROM (Erasable and Programmable Read Only Memory), an EEPROM (Electrically Erasable and Programmable Read Only Memory (SRAM), and a programmable read only memory (SRAM). The RAM 132 and the ASIC module 133 are connected.
In the normal operation mode of the system LSI 100, when the CPU 102 accesses the general-purpose memory 107 and the XY memory 108 via the CPU bus 105, only one page in each of the memories 107 and 108 designated by the address is targeted for access. In the case of read access, read data is read into the CPU 102 via the CPU bus 105, and in the case of write access, the write data on the CPU bus 105 is written into the memory cell of the access target page.
When a test program for a memory test is executed, writing is performed to a specific register in the BIST module 110, and a memory test mode (a state in which BISTEN is “1”) is set. In this memory test mode, if there is a read access by the CPU 102, the read data from the general-purpose memory 107 and the XY memory 108 is not output to the CPU bus 105 but is supplied to the BIST module 110 via the dedicated buses 141 and 142. . In this memory test mode, the pages of the general-purpose memory 107 and the XY memory 108 are read in parallel, and the BIST module 110 outputs data of 32 bits × 4 (number of pages) × 2 (number of memories) = 256 bits. Is done. When writing, the same data is simultaneously written to each page. The BIST module 110 compares the read data sent from each page of the memories 107 and 108 with the expected value data written in advance in the internal register of the module. Notify that a mismatch has occurred. The memory address related to the mismatch is held in the BIST module 110 as relief information. This relief information is stored in the fuse circuit 115 composed of a non-volatile storage element so as not to disappear even when the power is turned off.
Here, a 13N test method, which is one of the on-chip memory test sequences, will be described in advance with reference to FIG. This test is divided into five phases L0 to L4, and a pattern 0 (all bits 0, checker pattern, etc.) and its inverted pattern 1 (all bits 1, inversion checker pattern, etc.) are read / written. It has become. In the L0 phase (850), the pattern 0 is written in the ascending order of addresses in the entire memory area. In the L1 phase (851), the process of reading pattern 0, writing pattern 1 and reading pattern 0 written in the L1 phase is executed in ascending order for each address. In the L2 phase (852), the process of reading pattern 1 written in the L1 phase, writing pattern 0, and reading pattern 0 is executed in ascending order for each address. The L3 phase (853) and the L4 phase (854) are obtained by changing the address order of the L1 and L2 phases in descending order. Although the details will be described later, the test program executed by the CPU 102 is a program for performing the 13N test.
In FIG. 16, R0 means pattern 0 read, W0 means pattern 0 write, R1 means pattern 1 read, and W1 means pattern 1 write.
FIG. 2 illustrates in detail the connection state of circuit blocks related to the memory test. During the memory test, the CPU 102 repeatedly executes the test program using the repeat function, but the CPU 102 issues an instruction fetch to the CPU bus 105 only in the first loop of the test program repeated execution (repeat loop) at that time. The instruction fetch is issued to the cache memory 106, and is read from the cache memory 106 when a cache hit occurs, or from the outside of the chip via the system bus 118 and the bus controller 120 when a cache miss or cache is not used. become. The instruction is read from the instruction queue 103 in the CPU 102 after the second loop, and no instruction fetch is issued to the CPU bus 105. In short, once the test program is stored in the instruction queue 103, fetching of the test program is repeated from the instruction queue 103 instead of the bus 105.
When the CPU 102 executing the test program executes a write access to the test target memory, the bus command bus (CPU bus command bus) 201, the address bus (CPU address bus) 203, and the data bus (CPU data bus) 203 of the CPU bus 105 are executed. The value required for is output. When the control signal BISTEN 140 output from the BIST module 110 is “L”, writing is performed only on the single page specified by the address, but when BISTEN is “H”, writing to all pages in parallel is performed. Is done. When the CPU 102 executes read access, necessary values are output to the bus command bus 201 and the address bus 202 of the CPU bus 105. When the control signal BISTEN is “L”, only the page designated by the address outputs data to the CPU data bus 203, but when the control signal BISTEN is “H”, all pages are read in parallel. The general-purpose memory 107 and the XY memory 108 output read data to dedicated data buses 141 and 142 connected to the BIST module 110. The dedicated data buses 141 and 142 are prepared for 32 bits × 8, that is, 256 bits according to the number of pages (8 pages). At this time, read data is not supplied to the CPU data bus 203. The BIST module 110 decodes the values of the CPU bus command bus 201 and the CPU address bus 202. If the control signal BISTEN is “H” and a read cycle, it is output to the dedicated data buses 141 and 142 from the memories 107 and 108. The data is compared with the expected value previously set in the register in the BIST module 110, and if a mismatch occurs, the signal (FAIL) 204 is asserted and the signal is output to the outside of the chip via the external terminal (FAIL) 205. Notify discrepancy. In addition, the occurrence of mismatch is recorded in the status register in the BIST module 110, and the operation is performed so that the occurrence of mismatch can be later read from the CPU 102 and recognized. When a mismatch occurs, it is determined whether the bit can be repaired. If the bit cannot be repaired, a repair disable signal 206 is output from the repair disable terminal 207 to the outside of the chip, and this is notified to the outside. The BIST module 110 can also store the address where the mismatch occurred in an internal register. When the relief bit (redundant bit) of the general-purpose memory 107 is used, the BIST module 110 outputs the fuse data 114 to the fuse circuit 115 so that the address of the bit to be saved can be written in the fuse circuit 115. The BIST module 110 can output a relief information signal 113 indicating an address to be rescued to the general-purpose memory 107 based on data read from the fuse circuit 115 or a value of an internal register. . The data writing operation to the fuse circuit 115 is performed by writing data from the BIST module 110 according to an instruction from the fuse control terminal 117 of the chip (generally, from a tester during a pre-shipment test). The fuse circuit 115 is a non-volatile memory, and is configured by a small-capacity flash memory in this embodiment.
FIG. 3 illustrates details of the BIST module 110. The BIST module 110 includes a comparator 251, an address decoder 252, a register unit 253, a repair determination unit 254, and a fuse control unit 255. Here, eight 32-bit comparators 251 are provided in order to perform simultaneous parallel tests on four pages in each of the general-purpose memory 107 and the XY memory 108, for a total of eight pages.
The comparator 251 notifies the address decoder 252, the relief determination unit 254, and the register unit 253 of an 8-bit comparison result signal 263 as to whether or not there is a mismatch in the comparison results of the eight pages. The address decoder 252 decodes the values of the CPU bus command bus 201 and the CPU address bus 202 and determines whether it is a read cycle. If it is a read cycle, the comparison enable signal 256 is asserted to each comparator 251 and the comparator 251 is activated. The expected value used by the comparator 251 can be selected from two types according to the address, and the expected value selection signal 257 is notified to the comparator 251. For example, in the 13N test, the pattern 0 and the pattern 1 can be switched dynamically. Further, when the comparison result from the comparator 251 does not match, the address decoder 252 outputs the corresponding error address 258 to the relief determination unit 254 and the register unit 253. The repair determination unit 254 determines whether repair is possible based on the error address, and outputs a repair disable signal 206 from the repair disable terminal 207. When a mismatch occurs in the comparator 251, the FAIL signal 204 is output from the FAIL terminal 205. The assertion of the FAIL signal 204 and the repair impossible signal 206 can be masked according to the setting contents of the register unit 253. In addition, the repair determination unit 254 generates repair data to be written in the fuse circuit 115 based on the error address information, and outputs this to the register unit 253 as a repair data signal 264. The fuse control unit 255 inputs / outputs a fuse data signal 114 to / from the fuse circuit 115, and outputs a relief information signal 113 as relief data to the general-purpose memory 107. Although details of the register unit 253 will be described later, two types of expected value signals 260 and 261 and an MS signal 262 for designating ON / OFF of the comparator for each page of the memory are output to the comparator 251. . In addition, a signal 265 that masks assertion of the FAIL terminal 205 and the repair impossible terminal 207 is output to the repair determination unit 254 based on the register setting. In addition, an address limit signal 266 that determines the upper limit of the addresses of the general-purpose memory 107 and the XY memory 108 based on the setting of the register unit 253 is output to the address decoder 252. The register unit 253 can input / output an FD signal 267 as relief data to the fuse control unit 255.
FIG. 4 shows a plurality of registers held by the register unit 253. The register unit 253 includes registers 301 to 307, which are accessible via the CPU bus 105, the cache memory 106, and the system bus 118 by non-cache access of the CPU 102.
Expected value registers (BISTDR0 and BISTDR1) 301 hold two types of expected values for comparison. An address register (BISTFAR0, BISTFAR1, BISTFAR2, BISTFAR3) 302 stores an error address where a mismatch has occurred. The fuse data register (BISTFDR) 303 stores data for writing relief address information generated from the error address in the fuse circuit. A status register (BISTSR) 304 records that there is a mismatch for each page. A module select register (BISTMS) 305 holds control information for controlling whether to test each page. A control register (BISTCR1) 306 holds control information for controlling on / off of the memory test mode, fail-stop mode, and relief information. The address limit control register (BISTCR2) 307 holds control information for determining the test range of each page when simultaneously testing memories of different sizes.
The expected value registers (BISTDR0, BISTDR1) 301 are 32-bit registers, each holding an expected value for comparison. If bit 18 of the CPU address bus 202 is “0”, one register ( If BISTDR0) is "1", the other register (BISTDR1) is used. These are used for switching between pattern 0 and pattern 1 in the 13N test. The address registers (BISTFAR0, BISTFAR1, BISTFAR2) 302 are 32-bit registers, and four general purpose memories can be relieved for each page, and four error addresses need to be held. A fuse data register (BISTFDR) 303 is a 32-bit register for holding data to be written in the fuse circuit 115, and data is automatically generated by the repair determination unit 254 based on the error address and written to the register. The status register (BISTSR) 304 is an 8-bit register, and the initial value is all bits “0”. However, when a mismatch occurs due to a test, “1” is written in the bit corresponding to each page. S13 to S10 correspond to each page of the XY memory 108, and S03 to S00 correspond to each page of the general-purpose memory 107.
A module select register (BISTMS) 305 is an 8-bit register that controls whether a test is performed for each page. When each bit is “1”, the test is on, and when it is “0”, the test is off. However, even if the test is set to OFF, the read / write operation of the memory itself is not stopped, and the comparator 251 operates so as not to perform comparison. M13 to M10 correspond to each page of the XY memory 108, and M03 to M00 correspond to each page of the general-purpose memory 107.
The control register (BISTCR1) 306 is an 8-bit register, and there is an enable bit EN for turning on / off the entire memory test function. When “1” is written in this bit, the memory test function is enabled. The BISTEN signal 140 becomes “H”, and the operation of each memory is switched to the memory test mode. The C0 bit controls the mask of the FAIL signal 204. When set to “1”, the FAIL signal 204 is not asserted even if a mismatch occurs. Similarly, the C1 bit controls the mask of the unrepairable signal 206, and when it is set to “1”, the unrepairable signal is not asserted even if an unrepairable error occurs. The C2 bit is used to control whether the relief information for the general-purpose memory is generated from the data from the fuse circuit 115 or from the data in the fuse data register (BISTFDR) 303. Then, the fuse data register (BISTFDR) 303 is selected. The initial value is “0”.
A control register (BISTCR2) 307 is an 8-bit register and designates the size of one page of the XY memory 108 and the general-purpose memory 108. SZ12 to SZ10 correspond to the XY memory 107, and SZ02 to SZ00 correspond to the general-purpose memory 107. The set values and storage capacities are combinations of 000: 4k, 001: 8k, 010: 16k, 011: 32k, 100: 64k, 101: 128k, 110: 256k, 111: 512k bytes.
FIG. 5 illustrates the configuration of one page of the XY memory 108 as a representative of the general-purpose memory 107 and the XY memory 108 to be subjected to the memory test.
In the example shown in FIG. 5, the size of one page is 4 kbytes, and a memory mat 357 of 4 kbytes is provided.
The XY memory 108 is connected to three buses: a CPU bus 105, an XY bus 109, and a system bus 118. An arbitration circuit 351 has a bus command bus 201 for the CPU bus, an address bus 202 for the CPU bus, and a bus command bus for the XY bus. 211, the address bus 212 of the XY bus, the bus command bus 221 of the system bus, and the address bus 222 of the system bus are decoded to determine from which bus the access is to be processed. The priority order is system bus> XY bus> CPU bus, but the test program is configured to access only from the CPU bus 105 during the memory test. An address selector 353 selects an address in accordance with an address selection signal 352 from the arbitration circuit 351. The upper bits of the address signal selected by the address selector 353 are supplied to the enable control circuit 356 and used for selecting the memory mat, and the remaining lower address bits are supplied to the address decoder 360 and used for selecting the memory cells. The
At the time of write access, write data to the memory mat 357 is selected by the write data selector 355 according to the data selection signal 354. The output buffer 203B, 213B, or 223B selects to which data bus the read data from the memory mat 357 is to be output at the time of reading.
The enable control circuit 356 decodes the command, address and control signal (BISTEN) 140 selected by the arbitration circuit 351, and determines whether to activate the memory mat 357, the write control circuit 358, and the sense amplifier 359. . That is, when BISTEN 140 is “L”, the upper address bits are decoded so that each page responds to a different address, but when BISTEN 140 is “H”, all pages respond to the same address. Decode as you do.
Although not shown, the configuration of one page of the general-purpose memory 107 is the same as that shown in FIG. 5 except that the XY bus 109 is not connected and the memory size is different. .
FIG. 6 illustrates an address map of the general-purpose memory 107. This figure shows an example in which the general-purpose memory 107 has four pages of 32 kbytes per page and a total of 128 kbytes. Although not particularly limited, 4 Mbytes of space is allocated to the general-purpose memory in consideration of expandability, and in this embodiment, the actual memory exists in 128 kbytes. In the case of this configuration, the address map when BISTEN 140 is “L (= 0)” is as shown in FIG. The four pages are allocated to “U0L: 0xA55F0000 to 0xA55F7FFF”, “U0H: 0xA55F8000 to 0xA55FFFFF”, “U1L: 0xA5600000 to 0xA5607FFF”, and “U1H: 0xA5600000 to 0xA5608FFF”. The symbol 0x means that the subsequent value is a hexadecimal number. The shaded area 401 in FIG. 6 (a) becomes a shadow, and the enable signals UPAGE0LEN, UPAGE0HEN, UPAGE1LEN, and UPAGE1HEN of each page have values as shown on the right side of FIG. 6 (a). On the other hand, the address map when BISTEN 140 is “H (= 1)” is as shown in FIG. In this case, all pages are allocated to 32 kbytes of 0xA50000000 to 0xA5007FFF, and the enable signal of each page is asserted at the same address. In this case, access to the area 402 indicated by “x” in FIG. 6B does not react to any page and becomes invalid.
FIG. 7 illustrates the configuration of the enable control circuit 356 for realizing the address map of FIG. FIG. 7 collectively shows the logic for four pages. The upper address decoder 451 is 0xA500 when the command 452 is read or write and when the BISTEN 140 is “L”, the upper 31 bits to 20 bits (A31 to A20) of the address are 0xA540 to 0xA57F, and when the BISTEN 140 is “H”. In the case of ˜0xA53F, the enable signal (UMEMEN) 453 is operated to be asserted. The enable signals (UPAGE0LEN, UPAGE0HEN, UPAGR1LEN, UPAGE1HEN) for each page are UMEMEN453, BISTEN140, and address bits A21 and A15, decode circuits (U0LDEC) 460, (U0HDEC) 461, (U1LDEC) 462, (U1HDEC) ) 463 is generated by decoding. The address bit A21 is an address bit for determining 0xA5400000 to 0xA55FFFFF or 0xA5600000 to 0xA57FFFFF, and the address bit A15 is an upper half or a lower half with respect to the region of 0xA5400000 to 0xA55FFFFF, and an upper half with respect to the region of 0xA5600000 to 0xA57FFFFF Or the lower half of the address bits. When BISTEN 140 is “L”, ENOR (exclusive negative OR gate) 480 functions as an inverter, and enable signals (UPAGE0LEN) 470, (UPAGE0HEN) 471, (UPAGE1LEN) 472, and (UPAGE1HEN) 473 of each page are exclusive. Asserted. On the other hand, when BISTEN 140 is “H”, ENOR 480 functions as a buffer, and only when the address bits A21 and A15 are both “0” and UMEMEN is “1”, the enable signals 470 to 473 of each page are asserted in parallel. When the address is in any other condition, the operation is performed so that all the enable signals 470 to 473 are negated regardless of UMEMEN.
FIG. 8 illustrates an address map of the XY memory 108. This figure shows an example in which the XY memory 108 has 4 pages, 4 pages per page, and a total of 16 kbytes. In consideration of extensibility, a space of 128 kbytes from 0xA5000000 to 0xA501FFFF is allocated to the XY memory 108, and in this embodiment, an actual memory exists in 16 kbytes. Although not shown in the figure, the space of 0xA502000-0xA50FFFFF is treated as a shadow of the space of 0xA50000000-0xA501FFFF. In the case of this configuration, the address map when BISTEN 140 is “L” is as shown in FIG. The four pages are assigned to “X0: 0xA5007000-0xA5007FFF”, “X1: 0xA5000000-0xA5008FFF”, “Y0: 0xA5017000-0xA5017FFF”, “Y1: 0xA5018000-0xA5018FFF”, respectively. In this case, the shaded area 501 in FIG. 8 becomes a shadow, and the enable signals (XPAGE0EN, XPAGE1EN, YPAGE0EN, YPAGE1EN) of each page have values as shown on the right side of FIG. 8 (a). On the other hand, the address map when BISTEN 140 is “H” is as shown in FIG. In this case, all pages are allocated to “0xA50000000 to 0xA5000FFF”, and the enable signals (XPAGE0EN, XPAGE1EN, YPAGE0EN, YPAGE1EN) of each page are also asserted at the same address. Access to the area 502 indicated by “x” in FIG. 8B does not react to any page and becomes invalid. A difference from the case of the general-purpose memory 107 shown in FIG. 6 is that the shadow area 501 disappears when the BISTEN 140 is “H”. In this embodiment, since the memory size is smaller than the general-purpose memory 107, if a shadow is left when performing the simultaneous test, for example, in the L1 phase of the 13N test, the XY memory 107 is being executed while executing the L1 phase of the general-purpose memory. This is because the test in the L1 phase is performed a plurality of times and the state expected at the start of the next L2 phase is broken.
FIG. 9 illustrates the configuration of the enable control circuit 356 for realizing the address map. The upper address decoder 551 operates to assert XMEMENB 553 when the command 552 is read or write and the upper bits 31 to 20 of the address are 0xA50. The AMASK circuit 554 decodes the address bits A14, A13, A12, XMEMENB553, and BISTEN140 to generate XMEMEN555. When BISTEN is “0”, XMEMEN = XMEMENB regardless of the address bits A14, A13, A12, but when BISTEN140 is “1”, the address bits A14, A13, A12 are “000”. Only XMEMEN = XMEMENB, otherwise XMEMEN is “0”. The enable signal for each page is generated by decoding XMEMEN 555, BISTEN 140, and address bits A16 and A15 with decode circuits (X0DEC) 560, (X1DEC) 561, (Y0DEC) 562, and (Y1DEC) 563. When BISTEN 140 is “L”, ENOR 580 functions as an inverter, and enable signals (XPAGE0EN) 570, (XPAGE1EN) 571, (YPAGE0EN) 572, and (YPAGE1EN) 573 of each page are exclusively asserted. On the other hand, when BISTEN 140 is “H”, ENOR 580 functions as a buffer, and only when address bits A16 and A15 are both “0” and XYMEMEN 555 is “1”, enable signals 570 to 573 of each page are asserted at the same time. When the condition is other than XYMEMEN 555, the operation is performed so that all enable signals 570 to 573 are negated regardless of XYMEMEN 555.
FIG. 10 illustrates the details of the CPU 102 with the instruction fetch configuration as the main component. Reference numeral 610 denotes an arithmetic unit, which is not particularly shown, and includes a general-purpose register, an arithmetic logic unit, an address register, a data buffer register, a temporary register, a control register, and the like connected to the internal bus. The CPU address bus 202 is connected to the address register, and the CPU data bus 203 is connected to the data buffer register.
The instruction queue 103 includes, for example, an instruction buffer 103BF having a 12-stage buffer area, and a read pointer 103RP and a write pointer 103WP for causing the instruction buffer 103BF to perform a FIFO operation. The read pointer 103RP is a loop counter that designates a buffer area for performing a read operation, and the count value CNTR is set to # 0 to # 11. The write pointer 103WP is a loop counter for designating a buffer area in which a write operation is performed, and the count value CNTW is set to # 0 to # 11. The read pointer 103RP and the write pointer 103WP are based on the initial values, and the write pointer 103WP is incremented each time a write operation is performed, and the read pointer 103RP is incremented each time a read operation is performed. The state in which the count value CNTR of the read pointer 103RP has caught up with the count value CNTW of the write pointer 103WP is a state in which no significant storage information is held in all of the 12-stage buffer area, in other words, it is temporarily stored in the buffer area. The stored information means an empty (empty) state in which reading is complete. The state in which the count value CNTW of the write pointer 103WP has caught up with the count value CNTR of the read pointer 103RP is a state in which significant storage information is held in all the 12-stage buffer areas, in other words, all the buffer areas are still It means a full state filled with storage information that has not been read.
The instruction buffer 103B fetches an instruction from the CPU data bus 203. The instruction read from the buffer 103B or the instruction on the CPU data bus 203 is selected by the selector 603 and supplied to the instruction register (IR) 601. The instruction latched in the IR 601 is decoded by the instruction decoder 602, and the arithmetic operation by the arithmetic unit 610 is controlled according to the decoding result, and the instruction control unit 607 is controlled.
The instruction control unit 607 causes the selector 603 to select the instruction fetch path to the IR 601 by the selection signal SEL, and generates the increment signal INCR of the read pointer 103RP and the increment signal INCW of the write pointer 103WP. The instruction control unit 607 controls generation of a memory access cycle via the arithmetic unit 610 for instruction fetch or instruction prefetch, and controls instruction write (push) and read (pull) operations to the instruction queue 103. Further, control is performed such that the instruction queue 103 operates as a repeat queue or a loop queue.
An instruction prefetch control function by the instruction control unit 607 will be described. The instruction control unit 607 receives the count value CNTR of the read pointer 103RP and the count value CNTW of the write pointer 103WP, and detects the full empty state of the instruction buffer 103. If the instruction buffer 103B is not full, the instruction control unit 607 uses a free timing of the data bus 203 to prefetch instructions from the cache memory 106 or the external ROM 131 or RAM 132 to the instruction buffer 103B. Is generated by the arithmetic unit 610. The instruction address at this time is generated using a program counter or the like. The instruction supplied to the data bus 203 in this memory cycle is held in the instruction buffer 103B, and the value of the write pointer 103WP is incremented by the increment signal INCW.
An instruction fetch control function by the instruction control unit 607 will be described. If the instruction buffer 103B is not in an empty state at the instruction fetch timing to the IR 601, the instruction read from the instruction buffer 103B is latched in the IR 601 via the selector 603. After reading from the instruction buffer 103B, the read pointer 103RP is incremented. If the instruction buffer 103B is in an empty state at the instruction fetch timing to the IR 601, the arithmetic unit 610 generates a memory cycle for fetching an instruction from the cache memory 106 or the external ROM 131 or RAM 132. The instruction obtained on the bus 203 is latched in the IR 601 via the selector 603.
The repeat queue control function by the instruction control unit 607 will be described. The instruction set of the CPU 102 includes repeat instructions. This repeat instruction designates the first instruction address to be repeatedly executed, the last instruction address, and the number of repetitions. When the instruction decoder 602 decodes the repeat instruction, it controls the instruction address generation by the arithmetic unit 610 and instruction fetch to the instruction control unit 607 so that the instruction from the first instruction address to the last instruction address is repeatedly executed a specified number of times. Thus, a repeat loop is formed. At this time, the instruction decoder 602 gives an instruction to the instruction control unit 607 to operate the instruction queue 103 as a repeat queue. That is, the instruction decoder 602 sets a repeat queue mode flag 607F in the instruction control unit 607 by decoding a repeat instruction, and sets the number of repeat loop repetitions and the number of instructions to be executed in each repeat loop in the register 607R. After this operation is performed, the instruction control unit 607 resets the values of the read pointer 103RP and the write pointer 103WP to initial values before proceeding to the execution of the head instruction specified by the repeat instruction, and in the first repeat loop, The instruction is fetched from the cache memory 106 or the external ROM 131 or RAM 132 to the IR 603, and the fetched instruction is executed. In parallel with this, an operation of sequentially storing instructions of the first repeat loop in the instruction queue 103 is performed. From the second repeat loop, the instructions stored in the instruction buffer 103B are sequentially read and executed. At this time, every time the count value of the read pointer 103RP reaches the set value (number of instructions) of the register 607R, the instruction control unit 607 returns the count value CNTR to the initial value with the reset signal RES, and causes the ring counter operation. When the repeat loop execution count finishes the set value of the register 607R (repeat loop repeat count), the repeat queue mode flag 607F is reset, whereby the instruction control unit 607 ends control of the repeat queue operation for the instruction queue 103. To do.
As described above, when the repeat loop is used, the instruction control unit 607 determines the length of the repeat loop, and when the length is within the instruction queue (12 instructions or less in this example), the instruction queue 103 stores the repeat loop. Control is performed so that the instruction once stored and read is not immediately discharged but is reserved for the second and subsequent repeat loops. As a result, instruction fetch is required only for the first repeat loop, but instruction fetch is not required when executing the second and subsequent repeat loops, so that the CPU bus 105 can be used efficiently. . In addition, since the process of returning to the top in a repeat loop does not require a branch instruction, the program itself constituting the loop is shortened. By using such a repeat instruction in a test program for a memory test, the memory test can be speeded up.
FIG. 11 illustrates a test flow in the case where the general memory 107 is not relieved. First, in step 651, the BIST module 110 is initialized. Specifically, the C2 bit of the control register BISTCR1 is set to “0”, and the repair information signal 113 is generated from BISTFDR (303). Also, all bits “0”, which is set to “use no relief bit”, are written in BISTFDR. With the above settings, the relief bit is not used. Further, “0” is set to the C0 bit of BISTCR1, and when a mismatch occurs, the FAIL terminal 205 is asserted. Further, the expected values for pattern 0 and pattern 1 are set in BISTDR0 and BISTDR1 (301). Next, in step 652, "1" is written to the EN bit of BISTCR1, and the memory test mode is entered. As a result, BISTEN 140 becomes “1”.
Next, in step 653, the CPU 102 is caused to execute a repeat instruction for the memory test, and performs memory access for the memory test, update of the access address, and the like according to the repeat loop test program. Next, in step 645, the data read from the memory is compared with the expected value written in the register. This comparison is performed in parallel for each page in the BIST module 110. Next, in step 655, the comparison result is determined, and if there is a mismatch in any one page, the FAIL terminal, which is an external terminal, is asserted in step 656, and it is determined as a defective product, and the test ends. .
If no mismatch has occurred in the comparison result, the loop counter is decremented in step 657. Next, in step 658, it is determined whether or not the loop counter has become 0. If not 0, the process returns to step 653. This operation is repeated until the loop counter reaches 0, and if no mismatch occurs until then, it is determined as PASS. All processing in steps 654 to 658 is performed by hardware. When the entire test is configured for each of a plurality of phases, such as a 13N test, the above-described series of operations is repeated for the number of phases, and a non-defective product is determined as PASS when the final phase is completed.
In FIG. 11, steps 656 and 657 are processing by hardware, and the other steps are processing by software.
FIG. 12 illustrates a test flow in the case where the general memory 107 is relieved. First, in step 701, the BIST module 110 is initialized. Specifically, the C2 bit of the control register BISTCR1 (306) is set to “0”, and the repair information signal 113 is generated from the BISTFDR (303). Also, ALL0, which is set to “use no relief bit”, is written in BISTFDR. With the above settings, the relief bit is not used. Further, the C0 bit of BISTCR1 is set to “1” so that the FAIL terminal 205 is not asserted even when a mismatch occurs. Further, the expected values for pattern 0 and pattern 1 are set in BISTDR0 and BISTDR1 (301). Next, in step 702, “1” is written to the EN bit of BISTCR1, and the memory test mode is entered. As a result, BISTEN 140 becomes “1”.
Next, in step 703, the CPU 102 is caused to execute a repeat instruction for a memory test, and a memory access and an access address update for the memory test are performed according to a repeat loop test program. In step 704, the data read from the memory is compared with the expected value written in the register. This comparison is performed in parallel for each page in the BIST module 110. Next, in step 705, the comparison result is determined. If a mismatch has occurred in any one page, it is determined in step 706 whether the address in which the mismatch has occurred can be relieved. Here, it is possible to relieve up to one address for each page of the general-purpose memory 106. Accordingly, when a mismatch occurs at a plurality of locations on the same page or when a mismatch occurs in the XY memory 108 having no repair bit, it is determined that the repair is impossible. When it is determined that the repair is possible, information for generating the repair information signal 113 is written in the BISTFDR. If it is determined that the repair is not possible, the repair impossible terminal 207 is asserted in step 707, the product is determined to be defective, and the test ends. If there is no mismatch in the comparison result, or if it is determined that there is a mismatch but it can be remedied, the loop counter is decremented in step 708. Next, in step 709, it is determined whether or not the loop counter has become 0. If not 0, the process returns to step 703. This operation is repeated until the loop counter reaches zero. The processing in steps 704 to 709 is all performed by hardware.
When the loop counter reaches 0, the process proceeds to step 710. If no mismatch has occurred until then, it is determined as normal (PASS). If there is a mismatch, it can be remedied and the process proceeds to step 711. If there is a mismatch that can be repaired at the above-described test stage, data necessary for generating the repair information signal 113 is automatically written in the register (BISTFDR) under the control of the BIST module 110. Therefore, next, the relief bit is tested using this relief information. Although the test operation itself is the same as described above, in the initial setting of the BIST module in step 712, the C0 bit of BISTCR1 is set to “0” and the FAIL terminal (205) is asserted when a mismatch occurs. To be. Since the repair has already been used, the further occurrence of mismatch means that the repair bit is also defective. In this case, the FAIL terminal is asserted in step 717 and is determined to be defective. The operations in steps 713 to 719 are the same as those in steps 702 to 709, respectively. If no inconsistency occurs at the end of the test, the repair is successful. In step 720, the BISTFDR data is written in the fuse circuit 115 and the test is terminated.
In FIG. 13, steps 704, 707, 708, 711, 715, 717, and 718 are processing by hardware, step 720 is processing by a tester, and the other steps are processing by software.
FIG. 13 shows an instruction sequence in assembly language for performing a 13N test on the system LSI of FIG. The repeat instruction (REPEAT) is an instruction for designating a repeat loop start address, end address, and loop count, and has a syntax of “REPEAT start address, end address, loop count designation register”. The start address and end address can be specified by labels of assembly language programs. As shown in FIG. 16, the 13N test is composed of five phases L0 to L4. Each L0 is a one instruction repeat loop (750), and each L1 to L4 is a three instruction repeat loop (751, 752). 753, 754). The reason why two types of address pointer registers R2 and R3 are prepared for reading is to switch the expected values of the pattern 0 and the pattern 1 by the bit A18 of the address. As shown in FIGS. 6B and 8B, in this example, when BISTEN 140 is “1”, the general-purpose memory 107 and the XY memory 108 are mapped to 0xA5000000 to 0xA5007FFF. The initial value of the pointer is set to 0xA5000000. Since each page of the memory is accessed with a 32-bit width, the initial value of the loop counter is set to 0x2000.
FIG. 14 shows a timing chart of the CPU bus 105 and the BIST dedicated data buses 141 and 142 executing the phase L1 of the instruction sequence shown in FIG. R. L is a longword (32 bits) read command, W.L. L is a long word write command, RD0 is 13N test pattern 0 read data, RD1 is pattern 1 read data, and WD1 is pattern 1 write data. According to this, for example, it takes 3 cycles / loop to execute the phase L1 of the 13N test. Furthermore, a parallel test can be performed on 8 pages of the general-purpose memory 107 and the XY memory 108 together.
Here, as a comparative example, a case where the CPU tests an on-chip memory when it does not have a repeat loop function and does not have a dedicated circuit for comparison determination will be described. As a program according to the comparative example for performing the 13N test, a test program for executing the L1 phase can be described as shown in FIG. 17, for example. R0 to R7 are CPU registers, where R0 is a memory address, R1 is pattern 0 expected value data, R2 is pattern 1 write data and expected value data, R3 is pattern 0 read data storage destination, and R4 is pattern One read data storage destination, R7, is a loop counter. This program is composed of 9 instructions, each of which reads pattern 0 with instruction 901, writes pattern 1 with instruction 902, reads pattern 1 with instruction 903 and increments the address, determines whether pattern 0 data matches with instruction 904, Branch for performing error processing when pattern 0 does not match with instruction 905, decision to match pattern 1 data with instruction 906, branch for performing error processing when pattern 1 does not match with instruction 907, instruction 908 The loop counter is decremented and the loop end is determined, and the branch to the top of the loop when the loop is not ended with the instruction 909 is performed.
FIG. 18 shows a timing chart of the bus connecting the CPU and the built-in memory when the test program according to the comparative example is placed in the cache memory and the built-in memory test capable of one cycle access is executed. This shows the fourth loop when the memory to be tested is allocated from 0xA5000000. Eleven cycles are required per loop. Of these, only the pattern 0 read command 951, the pattern 1 write command 952, and the pattern 1 read command 953 are actually tested. Only 3 cycles are spent. The remaining 8 cycles are an instruction fetch cycle 954 of the program itself and a cycle 955 by a comparison instruction. In addition, since the data received and compared by the CPU is one data per cycle, even when there are a plurality of memories to be tested, a simultaneous parallel test cannot be performed and it is necessary to test sequentially.
In FIG. 18, JIF is a branch instruction fetch, NIF is a normal instruction fetch, R.I. L is longword read, W.L. L is long word write, NOP is non-operation, RD0 is read data 0, RD1 is read data 1, and WD1 is write data 1.
Comparing the case of the present invention of FIGS. 13 and 14 with the case of the comparative example of FIGS. 16 and 17, the latter is 11 cycles / loop to execute the phase L1 of the 13N test, In the case of the present invention, there are 3 cycles / loop. Further, in the case of the comparative example, only one page of the memory can be tested at the same time. However, according to the present invention, simultaneous parallel testing of 8 pages can be performed, and the memory test can be further speeded up. it can. That is, focusing on the L1 phase of the 13N test, in the comparative example, “11 cycles × 8k loops × 4 pages = 352 k” steps are required for the general-purpose memory test, and “11 cycles × 1k loop × 4” are required for the XY memory test. Page = 44k "steps are required, for a total of 396k steps. On the other hand, in the present invention, it is understood that all the memories need only “3 cycles × 8k loops = 24k” steps, and the speed is increased by 396/24 = 16.5 times.
FIG. 15 shows another example of the semiconductor integrated circuit according to the present invention. In the example of FIG. 1, the cache memory 106 is not a test target. However, in the example of FIG. 15, the cache memory 106 is also a test target. Specifically, the BISTEN 140 is also output to the cache memory 106, and the BIST dedicated data bus 143 is provided from the cache memory 106 to the BIST module 110. The BIST module 110 is connected to the general-purpose memory 107, the XY memory 108, and the cache memory 106. The parallel read / write processing can be performed on the read data. The bridge function between the CPU bus 105 and the system bus 118 included in the cache memory 106 can be used even in the memory test mode, so that a parallel test including the cache memory 106 can be performed. In short, in the memory test mode, the cache memory 106 is arranged in the memory space of the CPU 102, and can be read / written by designating an address.
Further, in the example shown in FIG. 15, the XY memory 108 and the cache memory 106 are also configured to be relieved, and the relieving information signals 144 and 145 are output from the BIST module 110 to each.
FIG. 19 illustrates the development and manufacturing procedures of a semiconductor integrated circuit having a self-test function as typified by FIG. Referring to FIG. 19, a desired semiconductor integrated circuit is planned and its specifications are determined. Based on this, logic design (S1), layout design (S2), photomask creation (S3), and manufacturing (S4) The function test (S5), the memory test (S6), and the shipping process (S7) are performed. Development and manufacture of a semiconductor integrated circuit can be performed by one semiconductor integrated circuit manufacturer. Nowadays, there are cases in which the division of labor is divided into a so-called foundry responsible only for manufacturing a semiconductor integrated circuit and a so-called fabless that specializes in designing a semiconductor integrated circuit and does not have a manufacturing department. For example, the fabless employs a business form in which logic design and, if necessary, layout design are performed, and subsequent processes are outsourced to the foundry, and the final product is received and shipped. For example, in FIG. 19, FB is positioned as fabless processing, and FD is positioned as foundry processing.
In the development design process such as the logical design (S1) and the layout design (S2), it is possible to use past design assets, and moreover, today, it is possible to use circuit design data distributed as IP module data. . The IP module data includes design data (also referred to as soft IP module data) in which circuit modules such as the CPU 102 and the DSP 104 are specified in a logic description language such as HDL (Hardware Description Language), or mask pattern data. (Also referred to as hard IP module data). Normally, IP module data is packaged with debugging information in addition to circuit design data.
In order to make it possible to easily apply the means for improving the efficiency of the on-chip memory test described with reference to FIG. Can be provided as simple design data.
For example, focusing on the CPU, the circuit data of the CPU 102 having the loop queue function described in FIG. 10 may be provided as the soft IP module data or the hard IP module data. In short, such circuit data may include the circuit data of the instruction queue 103, the bus 105, the instruction decoder 602 that decodes the instruction supplied via the instruction queue 103 or the bus 105, and the control unit 607. The instruction decoder 602 can repeat a fetch of the program to be repeated from the instruction queue after the program to be repeated is temporarily stored in the instruction queue 103 by decoding a predetermined repeat instruction and stored in the instruction queue 103. It is only necessary to realize a function for setting the operation mode to be performed. This function may be described by HDL or specified by a specific circuit mask pattern.
The design data of the CPU 102 may be provided together with a test program that can be executed by the CPU 102 realized by the design data. The test program is stored in the instruction queue 103 in the operation mode such as the loop queue mode, and causes the CPU 102 to repeatedly execute the memory access processing and the memory access address update processing via the bus 105. I just need it.
The design data and the test program may be provided by being stored in a computer-readable information recording medium (also simply referred to as a recording medium). For example, the recording medium includes a CD-ROM (Compact Disk-Read Only Memory), a CD-R (Compact Disk-Recordable), a CR-RW (Compact Disk-Rewriteable), and a DVD-ROM (Digital Video Disk Read-Ready-Ready-Ready-Ready-Ready-Ready-Ready-Ready-Ready-Ready-Ready-Ready-Ready-Ready-Ready-Ready-ReadyM)). Any computer-readable recording medium such as a DVD-RAM (Digital Video Disk-Random Access Memory) or FD (Floppy Disk) may be used.
FIG. 20 shows an example of a semiconductor integrated circuit development system. In the figure, reference numerals 1, 2, and 3 denote computer devices such as engineering workstations, which are connected to an information processing network. The information processing network is a system such as a LAN (Local Area Network), a WAN (Wide Area Network) such as the Internet, or a wireless communication network, and what is indicated by 4 is an optical fiber, ISDN line, or It means a transmission medium such as a wireless line. The transmission medium 4 is not particularly limited, but is connected to the computer devices 1, 2, and 3 representatively shown through a host computer device 5 and communication adapters 6, 7, 8 such as routers and terminal adapters. Yes.
The computer device 1 is not particularly limited, but has a processor (MPU) 9 to which a display controller (DISPC) 13, a network controller (NETC) 14, and a main memory (DRAM) 15 are connected. A floppy disk controller (FDC) 20, a keyboard controller (KEYC) 21, and an integrated device electronics controller (IDEC) 22 connected to the circuit are provided. The DISPC 13 performs drawing control on the video RAM (VRAM) 24 and controls display of the drawn display data on the display (DISP) 23. The NETC 14 is connected to the communication adapter 6 and performs buffering of transmission / reception information, communication protocol control, and the like. The DRAM 15 is used for a program area and a work area of the MPU 9. A floppy disk drive 16 is connected to the FDC 20 to read information from and write information to a floppy disk 25 which is an example of a recording medium. A keyboard 17 is connected to the KEYC 21. A hard disk drive (HDD) 18 and a CD-ROM drive (CDRD) 19 are connected to the IDEC 22. The HDD 18 has a magnetic disk which is another example of the recording medium. The CDRD 19 has a CD-ROM 26 which is still another example of the recording medium. Other computer apparatuses 2 and 3 are also configured in the same manner as described above.
When developing and designing a semiconductor integrated circuit using the computer apparatus 1, circuit design data such as a CPU provided by a floppy disk 25 or a CD-ROM 26 is read and temporarily stored in the hard disk drive device 18. At this time, the circuit data of the CPU described in FIG. 10 is stored in the floppy disk 25 and the CD-ROM 26, and the test program is stored. The test program may be provided not only via a recording medium such as the CD-ROM 26 but also via an information processing network. When designing a semiconductor integrated circuit using the computer device 1, by using the circuit data of the CPU 102 provided by the floppy disk 25 or the CD-ROM 26, an on-chip memory on the semiconductor integrated circuit can be efficiently used as described above. It is possible to shorten the development period of a semiconductor integrated circuit that can be tested quickly. That is, the design and development of a semiconductor integrated circuit using circuit data of the CPU 102 such as IP module data provided by the floppy disk 25 or the CD-ROM 26 can be facilitated. In the memory test for the on-chip memory of the semiconductor integrated circuit thus developed and manufactured, the test program provided on the floppy disk 25 or the CD-ROM 26 is loaded on the semiconductor integrated circuit, and the on-chip memory is loaded. The CPU may execute the test program. Since the on-chip CPU supports the repeat queue function of the instruction queue 103 as a memory test function and enables the branch instruction to be excluded from the test program, a memory test program optimized for the CPU hardware is provided. No need to develop from scratch. Thus, a user who develops a semiconductor integrated circuit using IP module data such as a CPU can improve the efficiency of the circuit design of the CPU and the test design for the on-chip memory, thereby improving the efficiency of the development and manufacturing of the semiconductor integrated circuit. it can.
Since the test program for the memory test is executed by an on-chip CPU, it can be described in an assembly language or the like used for CPU program development. Can be changed easily. Therefore, when providing the IP module data of the CPU, the user of the IP module data can easily cope with various memory tests only by providing a sample program or the like as a test program for the memory test. .
Although the invention made by the present inventor has been specifically described based on the embodiments, it is needless to say that the present invention is not limited thereto and can be variously modified without departing from the gist thereof.
For example, the configurations of the instruction queue having the loop queue mode, the memory corresponding to the memory test mode, and the BIST module are not limited to the above example and can be changed as appropriate. For example, if the data bus is 32 bits and the instruction is 16 bits in fixed length, the instruction queue may prefetch the instructions in 16-bit units, but if the IR is 32 bits and latches two instructions together Accordingly, the instruction queue may prefetch instructions in units of 32 bits. Further, the operation control content in the loop queue mode of the instruction queue is not limited to the above. Furthermore, the on-chip module of the semiconductor integrated circuit is not limited to the above example and can be changed as appropriate. Further, the computer apparatus constituting the semiconductor integrated circuit development system is not limited to being connectable to a network, and may be used stand-alone.
The effects obtained by the representative ones of the inventions disclosed in the present application will be briefly described as follows.
That is, since the instruction queue is operated as a loop queue, it is not necessary to use a branch instruction in order to repeatedly execute the same test program. The test program to be repeatedly executed may be repeatedly fetched from the instruction queue, and the memory read / write access for the memory test and the memory access for the instruction fetch do not compete on the bus. Therefore, branch instructions can be eliminated from the test program, and further, since it is not necessary to repeatedly fetch the same instruction from the bus connected to the CPU, it is possible to improve the test efficiency for the on-chip memory of the semiconductor integrated circuit. Become.
If CPU design data capable of setting the repeat queue mode is recorded and provided on a recording medium, the CPU can be designed using such design data, so that the on-chip memory can be efficiently tested. The development period of the semiconductor integrated circuit can be shortened.
By recording and providing a memory test program using a CPU developed with the design data together with the design data on a recording medium, the design and development of a semiconductor integrated circuit using the CPU can be facilitated. In the memory test for the on-chip memory of the semiconductor integrated circuit, the on-chip CPU only has to execute the test program. The circuit design of the CPU and the test design for the on-chip memory can be made efficient, and the development of the semiconductor integrated circuit is made efficient. be able to.
By having a comparison / determination circuit for memory testing as dedicated hardware separate from the CPU, comparison instructions for comparison / determination can be removed from the test program executed by the CPU. Test efficiency can be improved. If the read data to be compared and determined are guided to the comparison and determination circuit by the dedicated bus, it is possible to avoid a situation in which the write data for the memory test competes with the read data on the bus.
Industrial applicability
The present invention can be widely applied to a semiconductor integrated circuit such as a data processor, a microcomputer, or a single chip microcomputer incorporating a memory, and further to a test technique thereof.
[Brief description of the drawings]
FIG. 1 is a block diagram illustrating a system LSI such as a microcomputer as an example of a semiconductor integrated circuit according to the present invention.
FIG. 2 is a block diagram illustrating in detail a connection state of circuit blocks related to the memory test.
FIG. 3 is a block diagram illustrating details of the BIST module.
FIG. 4 is an explanatory diagram of registers held by the register unit of the BIST module.
FIG. 5 is a block diagram illustrating the configuration of one page of the XY memory.
FIG. 6 is an explanatory diagram illustrating an address map of the general-purpose memory.
FIG. 7 is a logic circuit diagram illustrating the configuration of an enable control circuit for realizing the address map of FIG.
FIG. 8 is an explanatory diagram illustrating an address map of the XY memory.
FIG. 9 is a logic circuit diagram illustrating the configuration of an enable control circuit for realizing the address map of FIG.
FIG. 10 is a block diagram showing an example of a CPU.
FIG. 11 is a flowchart exemplifying a memory test procedure when the general-purpose memory is not relieved.
FIG. 12 is a flowchart exemplifying a memory test procedure when a general-purpose memory is relieved.
FIG. 13 is an explanatory diagram showing an instruction sequence for performing the 13N test in assembly language.
FIG. 14 is a timing chart of the CPU bus and the BIST dedicated data bus during execution of the phase L1 of the instruction sequence shown in FIG.
FIG. 15 is a block diagram illustrating a system LSI which is another example of the semiconductor integrated circuit according to the present invention.
FIG. 16 is an explanatory view showing a 13N test method which is one of the test sequences of the on-chip memory.
FIG. 17 is an explanatory diagram illustrating a test program for executing the L1 phase as a program according to a comparative example for performing the 13N test.
FIG. 18 is a timing chart of the bus connecting the CPU and the built-in memory when the test program according to the comparative example of FIG. 17 is arranged in the cache memory and the built-in memory test capable of one cycle access is executed.
FIG. 19 is a flow chart illustrating a procedure for developing and manufacturing a semiconductor integrated circuit having a self-test function as typified by FIG.
FIG. 20 is a block diagram showing an example of a semiconductor integrated circuit development system.

Claims (4)

命令キューを備えたCPU、バスを介して前記CPUに接続するメモリ、及び前記メモリとバスに接続する判定回路を有する半導体集積回路の前記メモリをテストする方法であって、
前記命令キューにテストプログラムを格納し、CPUでテストプログラムを実行してメモリライトアクセス及びメモリリードアクセスを行ない、メモリリードアクセスデータを判定回路で期待値と比較判定し、一旦テストプログラムが命令キューに格納された後のテストプログラムのフェッチは前記バスに代えて命令キューから繰り返し行なうことを特徴とするメモリテスト方法。
A method for testing the memory of a semiconductor integrated circuit having a CPU having an instruction queue, a memory connected to the CPU via a bus, and a determination circuit connected to the memory and the bus,
The test program is stored in the instruction queue, the CPU executes the test program to perform memory write access and memory read access, the memory read access data is compared with the expected value by the determination circuit, and the test program is temporarily stored in the instruction queue. A memory test method, wherein fetching of a test program after being stored is repeatedly performed from an instruction queue instead of the bus.
CPU、メモリ、及び前記CPUとメモリを接続するバスを半導体チップに有する半導体集積回路であって、
前記CPUは、命令キュー、命令キュー又は前記バスを介して供給される命令を解読する命令デコーダ、及び制御部を含み、
前記命令デコーダは、所定のリピート命令をデコードして前記制御部に、リピートすべきプログラムが一旦命令キューに格納された後の当該リピートすべきプログラムのフェッチを前記命令キューから繰返し可能とする動作モードを設定可能であり、
前記動作モードにおいて、前記CPUが前記プログラムを実行することにより、前記メモリからリードしたデータを入力し、入力したデータの論理値を期待値と比較判定する判定回路を更に有し、判定結果を半導体チップの外部に出力可能にされて成るものであること特徴とする半導体集積回路。
A semiconductor integrated circuit having a CPU, a memory, and a bus connecting the CPU and the memory in a semiconductor chip,
The CPU includes an instruction queue, an instruction queue, an instruction decoder that decodes an instruction supplied via the bus, and a control unit.
The instruction decoder decodes a predetermined repeat instruction and allows the control unit to repeat the fetch of the program to be repeated from the instruction queue after the program to be repeated is temporarily stored in the instruction queue. Can be set,
In the operation mode, the CPU further includes a determination circuit that inputs the data read from the memory when the CPU executes the program, and compares the logical value of the input data with an expected value. A semiconductor integrated circuit, characterized in that it can be output to the outside of a chip.
前記判定回路にメモリからのリードデータを供給する経路として前記バスとは分離された専用バスが設けられて成るものであることを特徴とする請求の範囲第項記載の半導体集積回路。 3. The semiconductor integrated circuit according to claim 2 , wherein a dedicated bus separated from the bus is provided as a path for supplying read data from the memory to the determination circuit. 前記メモリは複数個のメモリブロックを有し、前記メモリブロックは前記動作モードの設定に応答して、同一アドレスにマッピングされて並列動作可能にされ、
前記判定回路は複数個のメモリブロックから並列的に出力されるメモリリードデータを並列的に期待値と比較判定可能であることを特徴とする請求の範囲第項記載の半導体集積回路。
The memory has a plurality of memory blocks, and the memory blocks are mapped to the same address in response to the setting of the operation mode, and can be operated in parallel.
4. The semiconductor integrated circuit according to claim 3, wherein said determination circuit is capable of comparing and determining memory read data output in parallel from a plurality of memory blocks with an expected value in parallel.
JP2002572003A 2001-02-22 2002-02-20 MEMORY TEST METHOD, INFORMATION RECORDING MEDIUM, AND SEMICONDUCTOR INTEGRATED CIRCUIT Expired - Fee Related JP4015025B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2001046218 2001-02-22
JP2001046218 2001-02-22
PCT/JP2002/001467 WO2002073411A1 (en) 2001-02-22 2002-02-20 Memory testing method, information recording medium, and semiconductor integrated circuit

Publications (2)

Publication Number Publication Date
JPWO2002073411A1 JPWO2002073411A1 (en) 2004-07-02
JP4015025B2 true JP4015025B2 (en) 2007-11-28

Family

ID=18907882

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002572003A Expired - Fee Related JP4015025B2 (en) 2001-02-22 2002-02-20 MEMORY TEST METHOD, INFORMATION RECORDING MEDIUM, AND SEMICONDUCTOR INTEGRATED CIRCUIT

Country Status (3)

Country Link
JP (1) JP4015025B2 (en)
TW (1) TW591378B (en)
WO (1) WO2002073411A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101212748B1 (en) * 2010-10-29 2012-12-14 에스케이하이닉스 주식회사 Semiconductor memory, memory system and programming method of the same
KR20190030678A (en) * 2019-03-15 2019-03-22 호서대학교 산학협력단 Interface card to test of memory

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1496435A1 (en) * 2003-07-11 2005-01-12 Yogitech Spa Dependable microcontroller, method for designing a dependable microcontroller and computer program product therefor
JP5125385B2 (en) 2007-10-10 2013-01-23 富士通株式会社 Verification scenario creation program, recording medium recording the program, verification scenario creation device, and verification scenario creation method
JP6372297B2 (en) 2014-10-16 2018-08-15 富士通株式会社 Information processing apparatus and information processing apparatus control method
CN110275818B (en) * 2018-03-13 2024-04-30 龙芯中科技术股份有限公司 Post-silicon verification method, post-silicon verification device and storage medium
CN112242177A (en) * 2019-07-16 2021-01-19 北京地平线机器人技术研发有限公司 Memory testing method and device, computer readable storage medium and electronic equipment
CN112363875B (en) * 2020-10-21 2023-04-07 海光信息技术股份有限公司 System defect detection method, device, electronic device and storage medium
US11961258B2 (en) 2022-01-26 2024-04-16 Industrial Technology Research Institute Calibration method for optical see-through display and calibration system
CN115656788B (en) * 2022-12-23 2023-03-10 南京芯驰半导体科技有限公司 Chip testing system, method, equipment and storage medium

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5644942A (en) * 1979-09-19 1981-04-24 Hitachi Ltd Information processing unit
JPH07160585A (en) * 1993-12-13 1995-06-23 Hitachi Ltd Low power data processor
US5539878A (en) * 1995-06-16 1996-07-23 Elonex Technologies, Inc. Parallel testing of CPU cache and instruction units

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101212748B1 (en) * 2010-10-29 2012-12-14 에스케이하이닉스 주식회사 Semiconductor memory, memory system and programming method of the same
US8437212B2 (en) 2010-10-29 2013-05-07 SK Hynix Inc. Semiconductor memory apparatus, memory system, and programming method thereof
KR20190030678A (en) * 2019-03-15 2019-03-22 호서대학교 산학협력단 Interface card to test of memory
KR102002753B1 (en) 2019-03-15 2019-07-23 호서대학교 산학협력단 Interface card to test of memory

Also Published As

Publication number Publication date
WO2002073411A1 (en) 2002-09-19
TW591378B (en) 2004-06-11
JPWO2002073411A1 (en) 2004-07-02

Similar Documents

Publication Publication Date Title
US5668815A (en) Method for testing integrated memory using an integrated DMA controller
US5954435A (en) Memory apparatus and data processor using the same
JPH0212541A (en) Computing system and operation thereof
JP4015025B2 (en) MEMORY TEST METHOD, INFORMATION RECORDING MEDIUM, AND SEMICONDUCTOR INTEGRATED CIRCUIT
TWI334082B (en) Apparatus, processor, system and method for control registers accessed via private operations,and computer-readable media
US7360130B2 (en) Memory with integrated programmable controller
KR100543152B1 (en) Microprocessor and processing method of microprocessor
US11521698B2 (en) Testing read-only memory using memory built-in self-test controller
US6425047B1 (en) Process containing address decoders suited to improvements in clock speed
JP2000504444A (en) Programmable instruction trap system and method
US20010052114A1 (en) Data processing apparatus
TWI288242B (en) Digital logic test method to systematically approach functional coverage completely and related apparatus and system
JPWO2010029682A1 (en) Information processing device
US6237071B1 (en) Multiaccess circuit including arbitration capabilities to effectively perform pipeline and suspend operations according to its priority
JP2004185060A (en) Microcomputer
JP3104621B2 (en) Semiconductor integrated circuit device
US20070226573A1 (en) System on chip having test circuit
JP2984628B2 (en) Microcomputer
JP4553622B2 (en) Data processing device
JP5559932B2 (en) Semiconductor device
JPH09106359A (en) Semiconductor integrated circuit
WO1997049035A1 (en) Emulator
JP2000067026A (en) Semiconductor device
JP2000181900A (en) Single chip microcomputer
JPS61217833A (en) Arithmetic processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070612

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070809

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070912

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

Free format text: PAYMENT UNTIL: 20100921

Year of fee payment: 3

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110921

Year of fee payment: 4

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

Year of fee payment: 4

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

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120921

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130921

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees