[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JPWO2002073411A1 - 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
JPWO2002073411A1
JPWO2002073411A1 JP2002572003A JP2002572003A JPWO2002073411A1 JP WO2002073411 A1 JPWO2002073411 A1 JP WO2002073411A1 JP 2002572003 A JP2002572003 A JP 2002572003A JP 2002572003 A JP2002572003 A JP 2002572003A JP WO2002073411 A1 JPWO2002073411 A1 JP WO2002073411A1
Authority
JP
Japan
Prior art keywords
memory
instruction
cpu
test
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.)
Granted
Application number
JP2002572003A
Other languages
Japanese (ja)
Other versions
JP4015025B2 (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)
  • Advance Control (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Microcomputers (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

命令キュー(103)を備えたCPU(102)、メモリ(107,108)、及びCPUとメモリを接続するバス(105)を有する半導体集積回路のメモリをテストする方法は、命令キューにテストプログラムを格納し、CPUでテストプログラムを実行してバス経由のメモリアクセスを行ない、一旦テストプログラムが命令キューに格納された後のテストプログラムのフェッチは前記バスに代えて前記命令キューから繰返し行なう。この命令キューのループキュー動作により、同じテストプログラムを繰り返し実行可能にするために分岐命令を要しない。繰り返し実行するテストプログラムを命令キューから繰り返しフェッチすればよく、メモリテストのためのメモリリード・ライトアクセスと命令フェッチのためのメモリアクセスがバス上で競合しない。半導体集積回路のオンチップメモリに対するテスト効率が向上する。A method for testing a memory of a semiconductor integrated circuit having a CPU (102) provided with an instruction queue (103), memories (107, 108), and a bus (105) connecting the CPU and the memory includes: The test program is executed by the CPU, the memory is accessed via the bus by executing the test program, and the fetch of the test program after the test program is once stored in the instruction queue is repeatedly performed from the instruction queue instead of the bus. By the loop queue operation of the instruction queue, no branch instruction is required to enable the same test program to be repeatedly executed. 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 conflict on the bus. The test efficiency of an on-chip memory of a semiconductor integrated circuit is improved.

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 a technique for testing an on-chip memory in a semiconductor integrated circuit, and more particularly to a technique effective when applied to a test method for a system LSI such as a data processing device, a microprocessor, and a single-chip microcomputer having a memory.
Background art
With the development of microfabrication technology, very large-scale circuits can be mounted on semiconductor integrated circuits (LSIs). Therefore, the capacity of a memory circuit such as an SRAM (Static Random Access Memory), a DRAM (Dynamic Random Access Memory), or a 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 a CPU (Central Processing Unit), and circuits such as memory cells and sense amplifiers are analog circuits. Required. For this reason, a test mode is provided in which the LSI can be operated or controlled as if it were a single memory IC (Integrated Circuits) only at the time of testing, and a test similar to the single memory IC is performed from an external tester. Methods have been used. However, as the operating speed of the system LSI increases, there is a problem that a more sophisticated and expensive tester corresponding to both the logic IC and the memory IC is required, and the test time is increased because the test is divided into two passes. . For this reason, a memory BIST (Build-In Self Test) circuit has been provided which generates a test pattern inside the chip and supports the test.
As a memory BIST technology, as described in Japanese Patent Application Laid-Open No. 2000-30483, a sequencer for generating a test pattern and a device for generating data to be read / written are fixedly embedded in a chip as hardware, As described in JP-A-11-15740, a simple memory test processor is built in, a test program is externally supplied to the processor at the time of testing, and the program is executed to generate a test pattern by software. And so on. 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 failure events of the memory. In recent years, the CPU core is distributed as IP (Intellectual Property) module data, and can be created by processes of various manufacturers. Therefore, various modes can be assumed for a memory failure event. Therefore, it is advisable that the test pattern is fixed. Not. In the latter method, the test pattern can be determined at the time of an actual test, not at the time of design, so that it has high flexibility and is suitable for the IP conversion of the CPU core. This requires a large amount of hardware resources and increases the chip area, which is problematic in terms of cost. Further, it is necessary for a test designer to write a test program in a special language, and it is not preferable to assume module data used by various users.
As a processor for executing the test program, a CPU used in a normal operation may be used in addition to a processor dedicated to the test. For example, as described in Japanese Patent Application Laid-Open No. 10-511790, the test program is stored in an internal memory. There is a method of arranging the test program in a part of the cache memory, which is a kind, causing the CPU to execute the test program, and testing the rest of the cache memory. By using this method, the amount of hardware to be added for testing can be reduced, so that there is an advantage that the chip manufacturing cost 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 a test program can be created in an assembly language or the like to which a user is familiar.
However, in the above-described conventional technique of performing a test by causing a CPU to execute a program, a test of the remaining built-in memory is performed in a state where a test program is arranged in a part of a built-in memory such as a cache memory. Have been found by the present inventors.
First, when memory access for instruction fetch and test conflicts with the bus connecting the CPU and the built-in memory, there is a possibility that a stall may occur with respect to instruction execution of the CPU, and the test efficiency is reduced. Was. In addition, since the CPU determines whether the cache memory is good or not, the CPU needs 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 executed is reduced, and the test time is longer than that of the BIST technology using a dedicated test sequencer. In short, in addition to executing instructions for memory read access and write access for the memory test, the number of instruction executions for comparison and the like increases, and the memory test time relatively increases. In addition, the memory test program is to execute a certain operation such as memory read / write over the entire area of the memory by changing only the address. Therefore, the memory test program needs to be a loop type program. Instructions are required, which also reduces the ratio of read / write instructions. In a CPU without a branch prediction function, a branch instruction itself requires a plurality of execution cycles, so that the number of cycles required for a test increases more than the number of instructions increases. Furthermore, since the CPU cannot usually access a plurality of memories having different address mappings at the same time, there are a plurality of memories to be tested or a case where the memories are divided into a plurality of pages (a plurality of memory blocks). However, these memories cannot be accessed in parallel to perform a test, and the test must be performed sequentially, resulting in a longer test time.
As a memory test sequence, for example, there is a method called a 13N test. The 13N test is discussed in IEE Design and Test of Computers February (1989) pp. 26-34 (IEEE DESIGN & TEST OF COMPUTERS, FEBRUARY 1989, pp. 26-34). This is a test method for SRAM, which is generally known as a test for a built-in memory of a system LSI. In the 13N test, for example, pattern 0 is written to the entire memory area in the ascending order of the address, 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 executing the program of the CPU, a read command for pattern 0, a write command for pattern 1, a read command for pattern 1 and an increment instruction for address, a match determination command for pattern 0 data, and a pattern 0 mismatch were found. In this case, a branch instruction for performing error processing, a pattern 1 data match determination instruction, a branch instruction for performing error processing when pattern 1 does not match, a loop counter decrement and loop end determination instruction, and a loop not completed In such a case, a program including a branch instruction to the head of the loop or the like must be used. As is apparent from the example of the program, the number of instruction execution cycles such as the match determination, branch, and the decrement instruction of the loop counter is larger than that of the memory read instruction or the write instruction.
An object of the present invention is to efficiently determine a test sequence at the time of test execution, not at the time of chip design, and to use a CPU as a sequencer to reduce the amount of hardware resources required for a test. The purpose of the present invention is to provide a method that can be tested.
Another object of the present invention is to provide a semiconductor integrated circuit that can easily realize the above-described test method for a 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 a development period of a semiconductor integrated circuit which can easily realize the above-described built-in memory test method. It is in.
Another object of the present invention is to provide a method for testing a CPU and an on-chip memory accessed by the CPU, and a test program capable of contributing to an improvement in development efficiency of a semiconductor integrated circuit and information recording circuit design data. 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 >> In 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, a test program is stored in the instruction queue. The CPU executes the test program to perform memory access via the bus, and the fetch of the test program once the test program is stored in the instruction queue is repeatedly performed from the instruction queue instead of the bus. Is what you 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, comprises: The test program is stored in the instruction queue, the test program is executed by the CPU to perform memory write access and memory read access, and the memory read access data is compared and determined by the determination circuit with an expected value. The fetch of the test program after the execution is repeatedly performed from the instruction queue instead of the bus.
First, the memory test method employs a repeat operation in which the read pointer of an instruction queue in a FIFO (First-In First-Out) format is cyclically looped and the same storage information is used a plurality of times. There is no need to use a branch instruction to make the program repeatedly executable. Second, a test program to be repeatedly executed may be repeatedly fetched from the instruction queue, so that memory read / write access for a memory test and memory access for an instruction fetch do not conflict on the bus. Therefore, the branch instruction can be eliminated from the test program, and since there is no need to repeatedly fetch the same instruction from the bus connected to the CPU, a memory access instruction such as a move instruction for truly performing a memory test can be executed. Therefore, the test efficiency of the semiconductor integrated circuit for the on-chip memory can be improved.
In the above test method, the content is determined by the test program of the CPU, and the test sequence can be determined not at the time of chip design but at the time of test execution. As a result, the on-chip CPU is used as a test sequencer for the semiconductor integrated circuit to be tested. By doing so, it becomes extremely easy to adopt the BIST method that requires less hardware resources for testing.
[2] << IP module data >> Attention is paid to the IP module data of the CPU. The design data such as the IP module data of the CPU read by the computer is recorded on a recording medium and provided. The design data includes an instruction queue, a bus, an instruction decoder that decodes an instruction supplied via the instruction queue or the bus, and circuit data of a control unit. An operation mode in which the instruction decoder decodes a predetermined repeat instruction and instructs the control unit to repeatedly fetch the program to be repeated from the instruction queue after the program to be repeated is once stored in the instruction queue. Has the function of setting If the CPU is designed using the circuit data stored in the recording medium, the development period of the semiconductor integrated circuit that enables the test method of the built-in memory can be shortened.
Focusing on the IP module data of the CPU and the like and the test program, the design data of the CPU and the test program executable by the CPU realized by the design data are recorded on an information recording medium in a computer-readable manner and provided. . 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 a program to be repeated in the control unit in the instruction queue. A function of setting an operation mode in which the fetch of the program to be repeated after the execution can be repeated from the instruction queue. The test program is a program for a memory test stored in the instruction queue in the operation mode and causing the CPU to repeatedly execute a memory access process via a bus and a memory access address update process.
According to this computer-readable information recording medium, the 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 an on-chip memory of a semiconductor integrated circuit, an on-chip CPU may execute the test program. The on-chip CPU supports the repeat function of the instruction queue as a memory test function, and eliminates branch instructions from the test program. Therefore, a memory test program optimized for CPU hardware is developed from the beginning. You don't have to. Therefore, a user who develops a semiconductor integrated circuit using data of an IP module such as a CPU can efficiently design a circuit of the CPU and test design for an on-chip memory, and can develop a semiconductor integrated circuit more efficiently.
Since the test program for the memory test is executed by the on-chip CPU, it can be described in an assembly language or the like used for program development of the CPU, and can be easily changed according to the use of the semiconductor integrated circuit or a failure 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 a memory test.
[3] << LSI >> Attention is focused on a semiconductor integrated circuit to which the above-described on-chip memory test method can be applied. The semiconductor integrated circuit has a CPU, a memory, and a bus connecting the CPU and the memory on a semiconductor chip. The CPU includes an instruction queue, an instruction decoder for decoding instructions supplied via the instruction queue or the bus, and a control unit. The instruction decoder controls the operation mode in which a predetermined repeat instruction is decoded, so that a program to be repeated can be repeatedly fetched from the instruction queue after the program to be repeated is once stored in the instruction queue. Can be set in the section.
According to the semiconductor integrated circuit, the on-chip CPU supports a repeat operation of the instruction queue as a memory test function, and can eliminate a branch instruction from a test program.
In the operation mode, the CPU executes the program to input data read from the memory and provide a determination circuit for comparing a logical value of the input data with an expected value, and determining a determination result by a semiconductor. You may comprise so that output is possible outside a chip | tip. It is also possible to remove the comparison instruction for the comparison judgment from the test program executed by the CPU, and it is possible to further improve the memory test efficiency.
At this time, by providing a dedicated bus separate 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 read data and write data compete on the bus, and to improve 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 is preferably 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 in parallel from the plurality of memory blocks in parallel with the expected value. As a result, a parallel test can be performed, and the efficiency of the memory test can be further improved.
BEST MODE FOR CARRYING OUT THE INVENTION
FIG. 1 shows a system LSI such as a microcomputer which is an example of a semiconductor integrated circuit according to the present invention. In a system LSI 100 shown in FIG. 1, 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 are formed of a single semiconductor substrate (semiconductor chip) such as monocrystalline silicon. ) Is formed by a semiconductor integrated circuit manufacturing technique 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 an instruction constituting a program, and the operation unit performs operation processing, memory access processing, and the like according to the result of the decoding, and executes the instruction. I 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 a 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 of the CPU 102 or a temporary storage area of data. The BIST module 110 is a test circuit used for testing an on-chip memory and 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. 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 of 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 can connect the bus 105 and the bus 118. The general-purpose memory 107 and the XY memory 108 are internally divided into four pages (four memory blocks).
The CPU 102 has an instruction queue 103 built therein. Instructions are prefetched into the instruction queue 103 using the empty timing of the buses 105 and 118. Particularly, in the present invention, the instruction queue 103 is operated as a repeat queue or a 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 the repeatedly executed test program from the bus 105 through the cache memory 106 every time. Therefore, 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, and realize an efficient memory test. The details of the instruction queue 103 will be described later.
The BIST module 110 outputs a bistable 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 the read data from the buses 141 and 142 with the expected value data, and outputs a test result signal 111 from the external terminal 112 to the outside of the chip. Thus, the read data and the write data of the memory test do not compete with each other on the bus 105. In this regard, the memory test can be made more efficient.
In addition, the BIST module 110 provides the general-purpose memory 107 with address information to be rescued (rescue address information) for relieving the memory by replacing the defective portion with a redundant memory area when a part of the memory is defective. The rescue information is output to the general-purpose memory 107 via the signal 113. Further, a fuse circuit 115 for nonvolatilely storing the rescue information obtained by the memory test is provided. The rescue information is input / output via a data signal 114 between the fuse circuit 115 and the BIST module 110. The fuse circuit 115 is controlled to write the 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 controls data transfer between memories and between the memory and the input / output circuit in accordance with the initial settings 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 includes, but is not limited to, a mask ROM (Read Only Memory), an EPROM (Erasable and Programmable Read Only Memory), an EEPROM (Electrically Erasable and Programmable Read Only Memory, a DRAM, etc.) RAM 132, an ASIC module 133 and the like.
In the normal operation mode of the system LSI 100, when the CPU 102 accesses the general-purpose memory 107 or the XY memory 108 via the CPU bus 105, only one page in each of the memories 107 and 108 specified by the address is to be accessed. 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, write data on the CPU bus 105 is written to the memory cell of the page to be accessed.
When a test program for a memory test is executed, writing is performed on a specific register in the BIST module 110, and a memory test mode (BISTEN is "1") is set. In the memory test mode, when there is a read access by the CPU 102, the read data from the general-purpose memory 107 and the XY memory 108 are not output to the CPU bus 105 but are supplied to the BIST module 110 via the dedicated buses 141 and 142. . In this memory test mode, each page of the general-purpose memory 107 and the XY memory 108 is read in parallel, and 32 bits × 4 (number of pages) × 2 (number of memories) = 256 bits are output to the BIST module 110. Is done. At the time of writing, the same data is simultaneously written to each page. The BIST module 110 compares read data sent from each page of the memories 107 and 108 with expected value data written in a register in the module in advance. Notifies that a mismatch has occurred. The memory address relating to the mismatch is held in the BIST module 110 as rescue information. This rescue information is stored in the fuse circuit 115 composed of a nonvolatile storage element so as not to be lost even when the power is turned off.
Here, a method of the 13N test which is one of the test sequences of the on-chip memory will be described in advance with reference to FIG. This test is divided into five phases L0 to L4, and a certain pattern 0 (all bits 0 and checker pattern) and its inverted pattern 1 (all bits 1 and inverted checker pattern) are read / written. It has become. In the L0 phase (850), pattern 0 is written to the entire memory area in ascending address order. In the L1 phase (851), processing of reading pattern 0, writing pattern 1, and reading pattern 0 written in the L1 phase is executed for each address in ascending order. In the L2 phase (852), processing of reading pattern 1 written in the L1 phase, writing pattern 0, and reading pattern 0 is executed for each address in ascending order. 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. As will be described in detail 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 connection states of circuit blocks related to a memory test. At the time of the memory test, the CPU 102 repeatedly executes the test program using the repeat function. At that time, the CPU 102 issues an instruction fetch to the CPU bus 105 only in the first loop of the repeated execution of the test program (repeat loop). 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 outside the chip via the system bus 118 and the bus controller 120 when a cache miss or cache is not used. become. In the second and subsequent loops, instructions are read from the instruction queue 103 in the CPU 102, and no instruction fetch is issued to the CPU bus 105. In short, once the test program is stored in the instruction queue 103, the fetch of the test program is repeatedly performed from the instruction queue 103 instead of the bus 105.
When the CPU 102 executing the test program executes write access to the memory to be tested, a bus command bus (CPU bus command bus) 201, an address bus (CPU address bus) 203, and a data bus (CPU data bus) 203 of the CPU bus 105. Required value is output. When the control signal BISTEN 140 output from the BIST module 110 is “L”, writing is performed only on the only page specified by the address, but when BISTEN is “H”, writing is performed in parallel on all pages. Is done. When the CPU 102 executes the 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 specified 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 provided here in 32 bits × 8, that is, for 256 bits according to the number of pages (8 pages). At this time, no read data is 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, and if the control signal BISTEN is “H” and is a read cycle, is output to the dedicated data bus 141 or 142 from each of the memories 107 and 108. The data is compared with an expected value set in a register in the BIST module 110 in advance, and when a mismatch occurs, a signal (FAIL) 204 is asserted and output to the outside of the chip via an external terminal (FAIL) 205. Notify mismatch. In addition, the occurrence of the mismatch is recorded in the status register in the BIST module 110, and the operation is performed so that the occurrence of the mismatch can be read out from the CPU 102 to be known later. If a mismatch occurs, it is determined whether the bit can be rescued. If the bit cannot be rescued, a rescue impossible signal 206 is output from the rescue impossible terminal 207 to the outside of the chip, and the fact is notified to the outside. The BIST module 110 can also store the address where the mismatch has occurred in an internal register. When the repair 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 repaired can be written in the fuse circuit 115. Further, the BIST module 110 can output a rescue information signal 113 indicating an address to be rescued to the general-purpose memory 107 based on the data read from the fuse circuit 115 or the value of an internal register. . The operation of writing data to the fuse circuit 115 is performed by writing data from the BIST module 110 according to an instruction from a fuse control terminal 117 of the chip (generally from a tester at the time of a test before shipment). The fuse circuit 115 is a nonvolatile memory, and in this embodiment, is configured by a small-capacity flash memory.
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 rescue determination unit 254, and a fuse control unit 255. Here, eight 32-bit comparators 251 are provided to perform a simultaneous parallel test on a total of eight pages, four pages each of the general-purpose memory 107 and the XY memory 108.
The comparator 251 notifies the address decoder 252, the rescue judging unit 254, and the register unit 253 of an 8-bit comparison result signal 263 indicating whether or not there is a mismatch in the comparison result of each 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 or not it is a read cycle. In the case of a read cycle, a comparison enable signal 256 is asserted for each comparator 251 to activate the comparator 251. The expected value used by the comparator 251 can be selected from two types depending on the address, and an expected value selection signal 257 is notified to the comparator 251. This is to make it possible to dynamically switch between pattern 0 and pattern 1 in a 13N test, for example. When the comparison result from the comparator 251 does not match, the address decoder 252 outputs the corresponding error address 258 to the rescue judging section 254 and the register section 253. The rescue judging section 254 judges whether or not rescue is possible based on the error address, and outputs a rescue impossible signal 206 from the rescue impossible terminal 207. If a mismatch occurs in the comparator 251, a FAIL signal 204 is output from the FAIL terminal 205. Assertions of the FAIL signal 204 and the rescue-impossible signal 206 can be masked according to the settings in the register section 253. Further, the rescue judging section 254 generates rescue data to be written in the fuse circuit 115 based on the error address information, and outputs this to the register section 253 as a rescue data signal 264. The fuse control unit 255 inputs and outputs a fuse data signal 114 to and from the fuse circuit 115 and outputs a rescue information signal 113 as rescue data to the general-purpose memory 107. Although details of the register section 253 will be described later, two kinds of expected value signals 260 and 261 and an MS signal 262 for designating ON / OFF of the comparator for each memory page are output to the comparator 251. . Further, it outputs a signal 265 for masking the assertion of the FAIL terminal 205 and the non-repairable terminal 207 to the rescue determination unit 254 based on the register setting. Further, an address limit signal 266 for determining the upper limit of each address 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. Further, the register unit 253 can input and output the 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 has registers denoted by 301 to 307, and each of them can be accessed via the CPU bus 105, the cache memory 106, and the system bus 118 by non-cache access of the CPU 102.
The 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 at which a mismatch has occurred. A fuse data register (BISTDR) 303 stores data for writing relief address information generated from an error address to a fuse circuit. The 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 for each page. The control register (BISTCR1) 306 holds control information for controlling the ON / OFF of the memory test mode, the fail stop mode, and the rescue information. The address limit control register (BISTCR2) 307 holds control information that determines 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 of the registers (BISTDR0, BISTDR1) 301 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. Each of the address registers (BISTFAR0, BISTFAR1, BISTFAR2) 302 is a 32-bit register. The general-purpose memory can be rescued for each page, and it is necessary to hold up to four error addresses. The fuse data register (BISTDR) 303 is a 32-bit register for holding data to be written to the fuse circuit 115. The data is automatically generated by the rescue judging unit 254 based on the error address and written into the register. The status register (BISTSR) 304 is an 8-bit register, and its initial value is all bits “0”. However, when a mismatch occurs by a test, “1” is written to a 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", test is on, and when each bit is "0", test is off. However, even if the test is set to OFF, the read / write of the memory itself is not stopped, and the comparator 251 operates so as not to perform the 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 has an enable bit EN for turning on / off the entire memory test function. Writing "1" in this bit enables the memory test function. The BISTEN signal 140 becomes “H”, and the operation of each memory switches to the memory test mode. The C0 bit controls the mask of the FAIL signal 204, and 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 non-recoverable signal 206. When the bit is set to "1", the non-recoverable signal is not asserted even if an unrecoverable error occurs. The C2 bit controls whether the rescue 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 (BISTD DR) 303. Then, the fuse data register (BISTFDR) 303 is selected. The initial value is “0”.
The control register (BISTCR2) 307 is an 8-bit register and specifies 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. Each set value and storage capacity is a combination of 000: 4k, 001: 8k, 010: 16k, 011: 32k, 100: 64k, 101: 128k, 110: 256k, and 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 of FIG. 5, the size of one page is 4 kbytes, has a memory mat 357 of 4 kbytes, and a memory cell in units of 32 bits for the memory mat 357 is selected by the address decoder 360.
The XY memory 108 is connected to three buses, a CPU bus 105, an XY bus 109, and a system bus 118. The arbitration circuit 351 includes a bus command bus 201 of the CPU bus, an address bus 202 of the CPU bus, and a bus command bus of the XY bus. 211, an XY bus address bus 212, a system bus bus command bus 221, and a system bus address bus 222 are decoded to determine which bus is to be accessed. The priority order is system bus> XY bus> CPU bus, but the test program is configured to access only from CPU bus 105 during a memory test. The address is selected by the address selector 353 according to the address selection signal 352 from the arbitration circuit 351. The upper plurality of bits of the address signal selected by the address selector 353 are supplied to the enable control circuit 356 and used for selecting a memory mat, and the remaining lower address bits are supplied to the address decoder 360 and used for selecting a memory cell. You.
At the time of write access, write data to the memory mat 357 is selected by the write data selector 355 in accordance with the data selection signal 354. The output buffers 203B, 213B, and 223B select which data bus to output the value of the read data from the memory mat 357 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 to determine 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. However, when BISTEN 140 is "H", all pages respond to the same address. Decode as you would.
Although not shown, the configuration of one page of the general-purpose memory 107 is the same as that of FIG. 5 except that the XY bus 109 is not connected and the memory size is different, so that the detailed description is omitted. .
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 32 pages of 32 kbytes per page and has a total of 128 kbytes. Although not particularly limited, a 4-Mbyte space is allocated to the general-purpose memory in consideration of expandability, and the present embodiment has a configuration in which an 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: 0xA5608000 to 0xA5608FFF”. The symbol 0x means that the subsequent value is a hexadecimal number. The shaded area 401 in FIG. 6A 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. 6A. On the other hand, when BISTEN 140 is “H (= 1)”, the address map 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 also asserted at the same address. In this case, access to the area 402 indicated by "x" in FIG. 6B is invalid because no page responds.
FIG. 7 illustrates a configuration of the enable control circuit 356 for realizing the address map of FIG. FIG. 7 shows the logic of four pages collectively. When the command 452 is read or write and 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 BISTEN140 is “H”, the upper address decoder 451 is 0xA500. In the case of 00xA53F, it operates to assert the enable signal (UMEMENT) 453. The enable signals (UPAGE0LEN, UPAGE0HEN, UPAGE1LEN, UPAGE1HEN) 470 to 473 of each page are used to decode the UMEMEN 453, the BISTEN 140, the address bits A21 and A15, and the decode circuits (U0LDEC) 460, (U0HDEC) 461, (U1LDEC) 462, and (U1LDEC1) 462, and (U1LDEC) 462, U1 ) 463 to be generated. The address bit A21 is an address bit that determines 0xA5400000 to 0xA55FFFFF or 0xA5600000 to 0xA57FFFFF. The address bit A15 determines whether the upper half or lower half of the area of 0xA5400000 to 0xA55FFFFF and the upper half of the area of 0xA5600000 to 0xA57FFFFF. Or the lower half. 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 (UPPAGE1HEN) 473 of each page are exclusively used. Asserted. On the other hand, when BISTEN 140 is "H", ENOR 480 functions as a buffer, and asserts enable signals 470 to 473 of each page in parallel only when both bits A21 and A15 of the address are "0" and UMENN is "1". When the address has any other condition, the operation is performed such that all the enable signals 470 to 473 are negated irrespective of UMEN.
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 of 4 kbytes per page and a total of 16 kbytes. In consideration of expandability, the XY memory 108 is allocated a 128 kbyte space from 0xA50000000 to 0xA501FFFF, and the present embodiment has a configuration in which an actual memory exists in 16 kbytes. Although not shown, the space of 0xA5002000 to 0xA50FFFFF is treated as a shadow of the space of 0xA50000000 to 0xA501FFFF. In the case of this configuration, the address map when BISTEN 140 is "L" is as shown in FIG. The four pages are respectively assigned to “X0: 0xA5000000-0xA5007FFF”, “X1: 0xA5008000-0xA5008FFF”, “Y0: 0xA5017000-0xA5017FFF”, and “Y1: 0xA5018000-0xA5018FFF”. 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, when BISTEN 140 is "H", the address map 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 is invalid because no page responds. The difference from the general-purpose memory 107 shown in FIG. 6 is that when the BISTEN 140 is “H”, the shadow area 501 is eliminated. This is because, in the present embodiment, the memory size is smaller than the general-purpose memory 107. Therefore, if the shadow is left during the simultaneous test, for example, in the L1 phase of the 13N test, the XY memory 107 is executed during the L1 phase of the general-purpose memory. Is performed a plurality of times in the L1 phase, thereby breaking the state expected at the start of the next L2 phase.
FIG. 9 illustrates the configuration of the enable control circuit 356 for realizing the address map. The upper address decoder 551 operates to assert the 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 bits A14, A13, and A12 of the address, the XMEMENB 553, and the BISTEN 140 to generate the XMEMEN 555. When BISTEN is “0”, XMEMEN = XMEMENB regardless of the bits A14, A13, and A12 of the address. However, when BISTEN140 is “1”, when bits A14, A13, and A12 of the address are “000”. Only in this case, XMEMEN = XMEMENB, and otherwise, XMEMEN is "0". The enable signal for each page is generated by decoding the XMEM 555, the BISTEN 140, and the address bits A16 and A15 by the decode circuits (X0DEC) 560, (X1DEC) 561, (Y0DEC) 562, and (Y1DEC) 563. When BISTEN 140 is “L”, ENOR 580 operates 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 works as a buffer, and only when address bits A16 and A15 are both "0" and XYMEM 555 is "1", enable signals 570-573 for each page are asserted at the same time, and the address is asserted. In other conditions, the operation is performed such that all the enable signals 570 to 573 are negated regardless of the XYMEMEN 555.
FIG. 10 illustrates the details of the CPU 102 mainly on the configuration of the instruction fetch. An arithmetic unit 610 includes a general-purpose register, an arithmetic and logic unit, an address register, a data buffer register, a temporary register, a control register, and the like connected to an internal bus (not shown). CPU address bus 202 is connected to an address register, and CPU data bus 203 is connected to a data buffer register.
The instruction queue 103 has, for example, an instruction buffer 103BF having a buffer area of 12 stages, 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 for specifying 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 for performing a write operation, and the count value CNTW is set to # 0 to # 11. As for the read pointer 103RP and the write pointer 103WP, 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, based on the initial values. 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 significant storage information is not held in all of the 12-stage buffer areas, in other words, the state is temporarily stored in the buffer area. The stored information indicates an empty (empty) state in which all the reading has been completed. 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 of the 12-stage buffer areas, in other words, all the buffer areas are still in the state. This means a full state in which the storage information is not 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 in accordance with the decoded result, and the instruction control unit 607 is controlled.
The instruction control unit 607 causes the selector 603 to select an instruction fetch path to the IR 601 by the selection signal SEL, and generates an increment signal INCR for the read pointer 103RP and an increment signal INCW for the write pointer 103WP. The instruction control unit 607 controls generation of a memory access cycle via the operation unit 610 for instruction fetch or instruction prefetch, and controls operation of writing (push) and reading (pull) of an instruction in the instruction queue 103. Further, control for operating the instruction queue 103 as a repeat queue or a loop queue is performed.
The instruction prefetch control function of 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 in a full state, the instruction control unit 607 uses a vacant timing of the data bus 203 to prefetch an instruction from the cache memory 106 or the external ROM 131 or RAM 132 to the instruction buffer 103B. Is generated by the calculation 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.
The instruction fetch control function of the instruction control unit 607 will be described. If the instruction buffer 103B is not empty at the timing of fetching the instruction to the IR 601, the instruction read from the instruction buffer 103B is latched by 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 empty at the timing of fetching the instruction to the IR 601, the arithmetic unit 610 generates a memory cycle for fetching the instruction from the cache memory 106 or the external ROM 131 or the RAM 132, and in this memory cycle, The instruction obtained on the bus 203 is latched by the IR 601 via the selector 603.
The repeat queue control function of the instruction control unit 607 will be described. The instruction set of the CPU 102 includes a repeat instruction. This repeat instruction specifies the first instruction address, the last instruction address, and the number of repetitions to be repeatedly executed. When the instruction decoder 602 decodes the repeat instruction, it controls the instruction address generation by the arithmetic unit 610 and the 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 designated number of times. Thus, a repeat loop is formed. At this time, the instruction decoder 602 gives the instruction control unit 607 an instruction to operate the instruction queue 103 as a repeat queue. That is, the instruction decoder 602 sets the repeat queue mode flag 607F in the instruction control unit 607 by decoding the repeat instruction, and sets the number of repeat loops 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 the initial values before shifting to the execution of the first 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 accumulating 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 (the number of instructions) of the register 607R, the instruction control unit 607 returns the count value CNTR to the initial value by the reset signal RES, and performs the ring counter operation. When the number of times of execution of the repeat loop ends the set value of the register 607R (the number of times of repeat loop), the repeat queue mode flag 607F is reset, whereby the instruction control unit 607 ends the control of the repeat queue operation for the instruction queue 103. I 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 Control is performed such that the instruction once stored and read is not immediately discharged, but is reserved for the second and subsequent repeat loops. As a result, an instruction fetch is required only for the first time in the repeat loop, but no instruction fetch is required for the second and subsequent times in the repeat loop, so that the CPU bus 105 can be used efficiently. . In addition, since the process of returning to the beginning in the 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 speed of the memory test can be increased.
FIG. 11 exemplifies a test flow in the case where the relief for the general-purpose memory 107 is not performed. First, in step 651, initialization of the BIST module 110 is performed. More specifically, the C2 bit of the control register BISTCR1 is set to “0”, and the rescue information signal 113 is generated from BISTRDR (303). In addition, all bits “0”, which is a setting of “do not use the relief bit”, are written in BISTRDR. With the above setting, the relief bit is not used. In addition, the C0 bit of BISTCR1 is set to "0", and when a mismatch occurs, the FAIL terminal 205 is asserted. Further, 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 mode shifts to the memory test mode. As a result, BISTEN 140 becomes "1".
Next, in step 653, the CPU 102 is caused to execute a repeat instruction for a memory test, and to perform a memory access for a memory test, update of an access address, and the like according to a 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 for each page in the BIST module 110 in parallel. Next, the comparison result is determined in step 655, and if a mismatch has occurred in any one of the pages, the FAIL terminal, which is an external terminal, is asserted in step 656, the test is terminated as a defective product. .
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, the process returns to step 653. This operation is repeated until the loop counter becomes 0, and if no inconsistency occurs during that time, it is determined to be PASS. All of the processes of steps 654 to 658 are performed by hardware. When the entire test is configured for each of a plurality of phases, such as the 13N test, the above-described series of operations is repeated by the number of phases, and the one determined as PASS at the stage when the final phase ends is a non-defective product.
In FIG. 11, steps 656 and 657 are processing by hardware, and the other steps are processing by software.
FIG. 12 exemplifies a test flow in a case where the relief is performed on the general-purpose memory 107. 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 rescue information signal 113 is generated from BISTRDR (303). In addition, ALL0 which is a setting of “do not use the relief bit” is written in BISTRDR. With the above setting, the relief bit is not used. Also, the C0 bit of BISTCR1 is set to "1" so that the FAIL terminal 205 is not asserted even when a mismatch occurs. Further, 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 mode shifts to the memory test mode. 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 to perform a memory access and an access address update for the memory test 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 for each page in the BIST module 110 in parallel. Next, in step 705, the comparison result is determined. If a mismatch has occurred in any one of the pages, it is determined in step 706 whether the mismatched address can be repaired. Here, it is assumed that up to one address can be relieved for each page of the general-purpose memory 106. Therefore, when a mismatch occurs at a plurality of locations in 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 rescue is possible, information for generating the rescue information signal 113 is written to BISTRD. If it is determined that the repair is impossible, the non-recoverable terminal 207 is asserted in step 707, and the test is terminated as a defective product. If no inconsistency has occurred in the comparison result, or if it is determined that inconsistency has occurred but rescue is possible, 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, the process returns to step 703. This operation is repeated until the loop counter becomes zero. All of the processes in steps 704 to 709 are performed by hardware.
When the loop counter becomes 0, the process proceeds to step 710, and if no mismatch has occurred during that time, it is determined that the loop counter is normal (PASS). If a mismatch has occurred, the process proceeds to step 711 because remedy is possible. If a mismatch that can be remedied has occurred at the stage of the above-described test, data necessary for generating the rescue information signal 113 is automatically written in the register (BISTDR) under the control of the BIST module 110. Therefore, next, a test of the repair bit is performed using the repair information. The test operation itself is the same as that described above, but in the initial setting of the BIST module in step 712, the C0 bit of BISTCR1 is set to “0”, and when a mismatch occurs, the FAIL terminal (205) is asserted. To be done. Since rescue has already been used, the occurrence of further mismatch means that the rescue bit is also defective. In this case, the FAIL terminal is asserted in step 717, and it is determined to be defective. The operations of steps 713 to 719 are the same as steps 702 to 709, respectively. If no inconsistency has occurred at the end of the test, the rescue is successful, and the data of BISTRDR is written to the fuse circuit 115 in step 720, and the test ends.
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 for performing a 13N test on the system LSI of FIG. 1 in an assembly language. The repeat instruction (REPEAT) is an instruction for designating a start address, an end address, and the number of loops of a repeat loop, and has a syntax of “REPEAT start address, end address, loop number designation register”. The start address and the end address can each be specified by the label of the assembly language program. As shown in FIG. 16, the 13N test consists of five phases L0 to L4, where L0 is a repeat loop of one instruction (750), and L1 to L4 are repeat loops of three instructions (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 pattern 0 and pattern 1 by 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 0xA50000000 to 0xA5007FFF. The initial value of the pointer is set to 0xA500000. 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 during the execution of the phase L1 of the instruction sequence shown in FIG. R. L is a long word (32 bit) read command; L indicates a long word write command, RD0 indicates 13N test pattern 0 read data, RD1 indicates pattern 1 read data, and WD1 indicates pattern 1 write data. According to this, for example, it takes three cycles / loop to execute the phase L1 of the 13N test. Further, a parallel test can be performed on eight pages in combination with the general-purpose memory 107 and the XY memory 108.
Here, as a comparative example, a case will be described in which the CPU tests an on-chip memory when the CPU does not have a repeat loop function and does not have a dedicated circuit for comparison determination. As a program according to a comparative example for performing a 13N test, a test program for executing the L1 phase can be described, for example, as shown in FIG. R0 to R7 are registers of the CPU, R0 is a memory address, R1 is expected value data for pattern 0, R2 is write data / expected value data for pattern 1, R3 is a storage location of pattern 0 read data, and R4 is a pattern destination. One read data storage destination, R7, is a loop counter. This program is composed of 9 instructions, each of which reads pattern 0 by an instruction 901, writes pattern 1 by an instruction 902, reads pattern 1 and increments an address by an instruction 903, and determines coincidence of pattern 0 data by an instruction 904. Branch for performing error processing when pattern 0 does not match in instruction 905, match determination of pattern 1 data with instruction 906, branch for performing error processing when pattern 1 does not match with instruction 907, instruction 908 Decrementing the loop counter and determining loop end, and branching to the beginning of the loop when the loop has not been completed by instruction 909, respectively.
FIG. 18 shows a timing chart of a bus connecting the CPU and the built-in memory when the test program according to the comparative example is arranged in the cache memory and a test of the built-in memory that can be accessed for one cycle is executed. This shows the fourth loop when the memory to be tested is allocated from 0xA500000. One cycle requires 11 cycles. Of these, only the read command 951 of pattern 0, the write command 952 of pattern 1, and the read command 953 of pattern 1 actually test the memory. Only three cycles are spent. The remaining eight cycles are an instruction fetch cycle 954 of the program itself and a cycle 955 by the comparison instruction. Further, since the data that can be received and compared by the CPU is one data per cycle, a simultaneous parallel test cannot be performed even when a plurality of memories to be tested exist, and it is necessary to test sequentially.
In FIG. 18, JIF is a branch instruction fetch, NIF is a normal instruction fetch, and R.I. L is longword read, W.L. L indicates long word write, NOP indicates non-operation, RD0 indicates read data 0, RD1 indicates read data 1, and WD1 indicates write data 1.
Comparing the case of the present invention in FIGS. 13 and 14 with the case of the comparative example in FIGS. 16 and 17, the latter requires 11 cycles / loop to execute the phase L1 of the 13N test. In the case of the present invention, there are three cycles / loop. Further, in the case of the comparative example, only one memory page can be tested at the same time. On the other hand, according to the present invention, a simultaneous parallel test of eight 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, the test of the general-purpose memory requires “11 cycles × 8 k loops × 4 pages = 352 k” steps, and the test of the XY memory requires “11 cycles × 1 k loop × 4 steps”. Pages = 44k "steps are required, for a total of 396k steps. On the other hand, in the present invention, all the memories need only be performed in "3 cycles × 8 k loops = 24 k" steps, and it can be seen that 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 set as a test target, but in the example of FIG. 15, the cache memory 106 is also set as a test target. Specifically, the BISTEN 140 is also output to the cache memory 106, and a BIST dedicated data bus 143 is provided from the cache memory 106 to the BIST module 110, and the BIST module 110 transmits the BIST module 110 from the general-purpose memory 107, the XY memory 108, and the cache memory 106. Can be subjected to parallel comparison determination processing. By making the bridge function of the cache bus 106 between the CPU bus 105 and the system bus 118 usable even in the memory test mode, 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 specifying an address.
In the example shown in FIG. 15, the XY memory 108 and the cache memory 106 are also configured to be rescuable, and rescue information signals 144 and 145 are output from the BIST module 110 to each of them.
FIG. 19 illustrates the procedure of developing and manufacturing a semiconductor integrated circuit having a self-test function as represented in FIG. According to FIG. 19, a desired semiconductor integrated circuit is planned, its specifications are determined, and based on this, a logic design (S1), a layout design (S2), a photomask creation (S3), and a manufacture (S4). , A function test (S5), a memory test (S6), and a shipping process (S7). The development and manufacture of a semiconductor integrated circuit can be performed by one semiconductor integrated circuit manufacturer. Nowadays, there is a case where division of labor is divided between a so-called foundry which is responsible only for the manufacture of semiconductor integrated circuits and a so-called fabless which specializes exclusively in the design of semiconductor integrated circuits and has no manufacturing section. The fabless adopts a business form in which, for example, logic design and, if necessary, layout design are performed, and the subsequent processes are outsourced to a 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 logic design (S1) and the layout design (S2), it is possible to use past design resources and use circuit design data distributed as IP module data today. . The IP module data is design data (also referred to as software IP module data) that specifies circuit modules such as the CPU 102 and the DSP 104 in a logical description language such as HDL (Hardware Description Language), or design data specified by mask pattern data. (Also referred to as hardware IP module data). Normally, IP module data is packaged with debugging information in addition to circuit design data.
In order to enable the means for improving the efficiency of the on-chip memory test described in FIG. 1 and the like to be easily applied to the development of other semiconductor integrated circuits, circuit design data for specifying a circuit configuration for that purpose must be stored in an IP module. What is necessary is just to be able to provide it as simple design data.
For example, focusing on the CPU, the circuit data of the CPU 102 having the loop queue function described with reference to FIG. 10 may be provided as the soft IP module data or the hard IP module data. In short, such circuit data may include respective circuit data of the instruction queue 103, the bus 105, the instruction decoder 602 for decoding the instruction supplied via the instruction queue 103 or the bus 105, and the control unit 607. The instruction decoder 602 decodes a predetermined repeat instruction and instructs the control unit 607 to repeat fetch of the program to be repeated from the instruction queue after the program to be repeated is once stored in the instruction queue 103. It is only necessary to realize a function of setting an 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 executable by the CPU 102 realized by the design data. The test program is a program for a memory test that is stored in the instruction queue 103 in an operation mode such as the loop queue mode and causes the CPU 102 to repeatedly execute a memory access process and a memory access address update process via the bus 105. I just need.
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 compact disk-only memory (CD-ROM), a compact disk-recordable (CD-R), a compact disk-rewritable (CR-RW), and a digital video-memory (DVD-ROM). And a computer-readable recording medium such as a DVD-RAM (Digital Video Disk-Random Access Memory) and an FD (Floppy Disk).
FIG. 20 shows an example of a system for developing a semiconductor integrated circuit. In FIG. 1, reference numerals 1, 2, and 3 denote computer devices such as an engineering workstation, 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, a wireless communication network, and the like, and what is indicated by 4 is an optical fiber, an ISDN line, or It means a transmission medium such as a wireless line. The transmission medium 4 is connected to, but not limited to, the host computer device 5 and the computer devices 1, 2, and 3 typically shown via communication adapters 6, 7, and 8 such as routers and terminal adapters. I have.
Although not particularly limited, the computer device 1 includes a processor (MPU) 9, 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 as a program area and a work area of the MPU 9. The 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. The 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 as another example of the recording medium. The CDRD 19 has a CD-ROM 26 which is another example of the recording medium. The other computer devices 2 and 3 are configured in the same manner as described above.
When developing and designing a semiconductor integrated circuit using the computer device 1, for example, circuit design data such as a CPU provided on a floppy disk 25 or a CD-ROM 26 is read and temporarily stored in a hard disk drive device 18. At this time, the circuit data of the CPU described in FIG. 10 and the test program are stored in the floppy disk 25 and the CD-ROM 26. The test program may be provided not only on 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 on the floppy disk 25 or the CD-ROM 26, the memory on-chip in the semiconductor integrated circuit can be efficiently used as described above. The development period of a semiconductor integrated circuit that can be tested quickly can be shortened. That is, the design and development of the semiconductor integrated circuit using the circuit data of the CPU 102 such as the IP module data provided on 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 developed and manufactured in such a manner, a test program provided on the floppy disk 25 or the CD-ROM 26 is loaded on the semiconductor integrated circuit, and the on-chip What is necessary is just to make the CPU 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 elimination of a branch instruction from a test program, a memory test program optimized for CPU hardware can be executed. No need to develop from the beginning. As described above, a user who develops a semiconductor integrated circuit by using IP module data of a CPU or the like can improve the efficiency of the circuit design of the CPU and the test design for the on-chip memory. it can.
Since the test program for the memory test is executed by the on-chip CPU, the test program can be described in an assembly language or the like used for developing the program of the CPU. Can be easily changed. 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 inventor has been specifically described based on the embodiment, the present invention is not limited to the embodiment, and it is needless to say that various changes can be made without departing from the gist of the invention.
For example, the respective 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 examples, and can be appropriately changed. For example, if the data bus is 32 bits and the instruction has a fixed length of 16 bits, the instruction queue may prefetch the instruction in units of 16 bits. In accordance with this, the instruction queue may prefetch instructions in 32-bit units. Further, the operation control content of the instruction queue in the loop queue mode is not limited to the above. Further, the on-chip module of the semiconductor integrated circuit is not limited to the above example, and can be appropriately changed. Further, the computer device constituting the development system of the semiconductor integrated circuit is not limited to being connectable to a network, but may be used stand-alone.
The following is a brief description of an effect obtained by a representative one of the inventions disclosed in the present application.
That is, since the instruction queue is operated as a loop queue, it is not necessary to use a branch instruction to enable the same test program to be repeatedly executed. Then, a test program to be repeatedly executed may be repeatedly fetched from the instruction queue, so that memory read / write access for memory test and memory access for instruction fetch do not conflict on the bus. Therefore, it is possible to eliminate the branch instruction from the test program, and it is not necessary to repeatedly fetch the same instruction from the bus connected to the CPU, so that the test efficiency of the semiconductor integrated circuit for the on-chip memory can be improved. Become.
If the design data of the CPU 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 a semiconductor integrated circuit can be shortened.
By providing a memory test program using a CPU developed with the design data together with the design data on a recording medium and providing the same, the design and development of a semiconductor integrated circuit using the CPU can be facilitated. In a memory test for an on-chip memory of a semiconductor integrated circuit, the on-chip CPU only has to execute the test program, and the circuit design of the CPU and the test design for the on-chip memory can be made more efficient, and the development of the semiconductor integrated circuit can be made more efficient. be able to.
By providing a comparison / determination circuit for a memory test as dedicated hardware separate from the CPU, a comparison instruction for comparison / determination can be removed from a test program executed by the CPU. Test efficiency can be improved. When the read data to be compared and determined is led to the comparison and determination circuit through 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
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 having a built-in memory, and a test technique thereof.
[Brief description of the drawings]
FIG. 1 is a block diagram illustrating a system LSI such as a microcomputer which is 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 a memory test.
FIG. 3 is a block diagram illustrating details of the BIST module.
FIG. 4 is an explanatory diagram of the registers held by the register section 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 a 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 illustrating a procedure of a memory test in a case where relief is not performed on a general-purpose memory.
FIG. 12 is a flowchart showing an example of a procedure of a memory test when performing relief on a general-purpose memory.
FIG. 13 is an explanatory diagram showing an instruction sequence for performing the 13N test in an assembly language.
FIG. 14 is a timing chart of the CPU bus and the BIST-dedicated data bus during the execution of the phase L1 of the instruction sequence shown in FIG.
FIG. 15 is a block diagram illustrating a system LSI as another example of the semiconductor integrated circuit according to the present invention.
FIG. 16 is an explanatory diagram showing a technique of a 13N test 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 a 13N test.
FIG. 18 is a timing chart of a bus connecting the CPU and the built-in memory when the test program according to the comparative example of FIG.
FIG. 19 is a flowchart illustrating the development and manufacturing procedure of a semiconductor integrated circuit having a self-test function as typified by FIG.
FIG. 20 is a block diagram showing an example of a system for developing a semiconductor integrated circuit.

Claims (8)

命令キューを備えたCPU、メモリ、及び前記CPUとメモリを接続するバスを有する半導体集積回路の前記メモリをテストする方法であって、
前記命令キューにテストプログラムを格納し、CPUでテストプログラムを実行してバス経由のメモリアクセスを行ない、一旦テストプログラムが命令キューに格納された後のテストプログラムのフェッチは前記バスに代えて前記命令キューから繰返し行なうことを特徴とするメモリテスト方法。
A method for testing a memory of a semiconductor integrated circuit having a CPU with an instruction queue, a memory, and a bus connecting the CPU and the memory,
The test program is stored in the instruction queue, and the CPU executes the test program to perform memory access via the bus. Once the test program is stored in the instruction queue, the test program is fetched in place of the bus. A memory test method, which is repeatedly performed from a queue.
命令キューを備えたCPU、バスを介して前記CPUに接続するメモリ、及び前記メモリとバスに接続する判定回路を有する半導体集積回路の前記メモリをテストする方法であって、
前記命令キューにテストプログラムを格納し、CPUでテストプログラムを実行してメモリライトアクセス及びメモリリードアクセスを行ない、メモリリードアクセスデータを判定回路で期待値と比較判定し、一旦テストプログラムが命令キューに格納された後のテストプログラムのフェッチは前記バスに代えて命令キューから繰り返し行なうことを特徴とするメモリテスト方法。
A method for testing a memory of a semiconductor integrated circuit having a CPU with 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 test program is executed by the CPU to perform memory write access and memory read access, and the memory read access data is compared and determined by the determination circuit with an expected value. A memory test method, wherein fetching of a stored test program is repeatedly performed from an instruction queue instead of the bus.
コンピュータが読み取ってCPUの機能を決定する設計データが記録された記録媒体であって、
前記設計データは、命令キュー、バス、命令キュー又はバスを介して供給される命令を解読する命令デコーダ、及び制御部の夫々の回路データを含み、
前記命令デコーダは、所定のリピート命令をデコードすることにより、リピートすべきプログラムが一旦命令キューに格納された後の当該リピートすべきプログラムのフェッチを前記命令キューから繰返し可能とする動作モードを前記制御部に設定する機能を有するものであることを特徴とするコンピュータ読み取り可能な記録媒体。
A recording medium on which design data read by a computer to determine the function of the CPU is recorded,
The design data includes respective circuit data of an instruction queue, a bus, an instruction decoder that decodes an instruction supplied via the instruction queue or the bus, and a control unit,
The instruction decoder controls the operation mode in which a predetermined repeat instruction is decoded so that the fetch of the program to be repeated after the program to be repeated is once stored in the instruction queue can be repeated from the instruction queue. A computer-readable recording medium having a function of setting in a section.
CPUの設計データと、その設計データで実現されるCPUにより実行可能なテストプログラムとを、コンピュータ読み取り可能に記録した情報記録媒体であり、
前記設計データは、命令キュー、バス、命令デコーダ、及び制御部の回路データを含み、
前記命令デコーダは、所定のリピート命令をデコードすることにより、リピートすべきプログラムが一旦命令キューに格納された後の当該リピートすべきプログラムのフェッチを前記命令キューから繰返し可能とする動作モードを前記制御部に設定する機能を有し、
前記テストプログラムは、前記動作モードにおいて命令キューに格納され、CPUに、バス経由のメモリアクセス処理及びメモリアクセスアドレス更新処理を繰り返し実行させる、メモリテストのためのプログラムであることを特徴とする情報記録媒体。
An information recording medium on which computer-readable recording of CPU design data and a test program executable by the CPU realized by the design data,
The design data includes circuit data of an instruction queue, a bus, an instruction decoder, and a control unit,
The instruction decoder controls the operation mode in which a predetermined repeat instruction is decoded, so that a program to be repeated can be repeatedly fetched from the instruction queue after the program to be repeated is once stored in the instruction queue. Has the function of setting
The information recording method according to claim 1, wherein the test program is a program for a memory test stored in an instruction queue in the operation mode and causing the CPU to repeatedly execute a memory access process and a memory access address update process via a bus. Medium.
CPU、メモリ、及び前記CPUとメモリを接続するバスを半導体チップに有する半導体集積回路であって、
前記CPUは、命令キュー、命令キュー又は前記バスを介して供給される命令を解読する命令デコーダ、及び制御部を含み、
前記命令デコーダは、所定のリピート命令をデコードして前記制御部に、リピートすべきプログラムが一旦命令キューに格納された後の当該リピートすべきプログラムのフェッチを前記命令キューから繰返し可能とする動作モードを設定可能であることを特徴とする半導体集積回路。
A semiconductor integrated circuit having a CPU, a memory, and a bus connecting the CPU and the memory on a semiconductor chip,
The CPU includes an instruction queue, an instruction decoder for decoding instructions supplied through the instruction queue or the bus, and a control unit,
An operation mode in which the instruction decoder decodes a predetermined repeat instruction and instructs the control unit to repeatedly fetch the program to be repeated from the instruction queue after the program to be repeated is once stored in the instruction queue. A semiconductor integrated circuit characterized in that it is possible to set the following.
前記動作モードにおいて、前記CPUが前記プログラムを実行することにより、前記メモリからリードしたデータを入力し、入力したデータの論理値を期待値と比較判定する判定回路を有し、判定結果を半導体チップの外部に出力可能にされて成るものであること特徴とする請求の範囲第5項記載の半導体集積回路。In the operation mode, the CPU executes the program, inputs data read from the memory, and has a determination circuit for comparing a logical value of the input data with an expected value. 6. The semiconductor integrated circuit according to claim 5, wherein the semiconductor integrated circuit is configured to be able to output to outside. 前記判定回路にメモリからのリードデータを供給する経路として前記バスとは分離された専用バスが設けられて成るものであることを特徴とする請求の範囲第6項記載の半導体集積回路。7. The semiconductor integrated circuit according to claim 6, wherein a dedicated bus separated from the bus is provided as a path for supplying read data from a memory to the determination circuit. 前記メモリは複数個のメモリブロックを有し、前記メモリブロックは前記動作モードの設定に応答して、同一アドレスにマッピングされて並列動作可能にされ、
前記判定回路は複数個のメモリブロックから並列的に出力されるメモリリードデータを並列的に期待値と比較判定可能であることを特徴とする請求の範囲第7項記載の半導体集積回路。
The memory has a plurality of memory blocks, and the memory blocks are mapped to the same address and enabled to operate in parallel in response to the setting of the operation mode,
8. The semiconductor integrated circuit according to claim 7, wherein said judgment circuit is capable of comparing and judging memory read data output from a plurality of memory blocks in parallel with an expected value.
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 true JPWO2002073411A1 (en) 2004-07-02
JP4015025B2 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)

Families Citing this family (10)

* 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
KR101212748B1 (en) 2010-10-29 2012-12-14 에스케이하이닉스 주식회사 Semiconductor memory, memory system and programming method of the same
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
KR102002753B1 (en) * 2019-03-15 2019-07-23 호서대학교 산학협력단 Interface card to test of memory
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

Also Published As

Publication number Publication date
TW591378B (en) 2004-06-11
WO2002073411A1 (en) 2002-09-19
JP4015025B2 (en) 2007-11-28

Similar Documents

Publication Publication Date Title
JP3846939B2 (en) Data processor
JP4225851B2 (en) Trace element generation system for data processor
US5668815A (en) Method for testing integrated memory using an integrated DMA controller
JP5661863B2 (en) System and method for data transfer in an execution device
US6959367B2 (en) System having read-modify-write unit
EP0762276A1 (en) Data processor with built-in emulation circuit
EP0762279A1 (en) Data processor with built-in emulation circuit
JPH09128265A (en) Data-processing system
JP4015025B2 (en) MEMORY TEST METHOD, INFORMATION RECORDING MEDIUM, AND SEMICONDUCTOR INTEGRATED CIRCUIT
EP0762278A1 (en) Data processor with built-in emulation circuit
JP2001184226A (en) Digital system having memory block and emulating method of block of memory
JPS63116236A (en) Information processor
JP2005196782A (en) Embedded mcu which can be tested at high speed with memory emulation module, and test method therefor
Du et al. A field programmable memory BIST architecture supporting algorithms with multiple nested loops
KR100543152B1 (en) Microprocessor and processing method of microprocessor
US6425047B1 (en) Process containing address decoders suited to improvements in clock speed
TWI288242B (en) Digital logic test method to systematically approach functional coverage completely and related apparatus and system
JP2004185060A (en) Microcomputer
JPH1040130A (en) Microcomputer
JP2762798B2 (en) Information processing apparatus of pipeline configuration having instruction cache
JPH09106359A (en) Semiconductor integrated circuit
JP2004021422A (en) Microcomputer
JP2000067026A (en) Semiconductor device
JPH10333903A (en) Microprogram control device
JP2000181900A (en) Single chip microcomputer

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 Request for written amendment filed

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