JPWO2002073411A1 - Memory test method, information recording medium, and semiconductor integrated circuit - Google Patents
Memory test method, information recording medium, and semiconductor integrated circuit Download PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 347
- 239000004065 semiconductor Substances 0.000 title claims abstract description 65
- 238000010998 test method Methods 0.000 title claims description 15
- 238000012360 testing method Methods 0.000 claims abstract description 181
- 238000000034 method Methods 0.000 claims abstract description 39
- 238000013461 design Methods 0.000 claims description 49
- 230000006870 function Effects 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 2
- 239000000872 buffer Substances 0.000 description 25
- 238000012545 processing Methods 0.000 description 21
- 238000011161 development Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 15
- 230000000052 comparative effect Effects 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 8
- 238000003860 storage Methods 0.000 description 8
- 230000002950 deficient Effects 0.000 description 7
- 230000008439 repair process Effects 0.000 description 6
- 230000001174 ascending effect Effects 0.000 description 5
- CDFKCKUONRRKJD-UHFFFAOYSA-N 1-(3-chlorophenoxy)-3-[2-[[3-(3-chlorophenoxy)-2-hydroxypropyl]amino]ethylamino]propan-2-ol;methanesulfonic acid Chemical compound CS(O)(=O)=O.CS(O)(=O)=O.C=1C=CC(Cl)=CC=1OCC(O)CNCCNCC(O)COC1=CC=CC(Cl)=C1 CDFKCKUONRRKJD-UHFFFAOYSA-N 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000010365 information processing Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 239000000047 product Substances 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 229910021421 monocrystalline silicon Inorganic materials 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection 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/2236—Detection 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2207/00—Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
- G11C2207/10—Aspects relating to interfaces of memory device to external buses
- G11C2207/104—Embedded 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,
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
The
The
The
The
In addition, the
The
In the normal operation mode of the
When a test program for a memory test is executed, writing is performed on a specific register in the
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
In FIG. 16, R0 means
FIG. 2 illustrates in detail connection states of circuit blocks related to a memory test. At the time of the memory test, the
When the
FIG. 3 illustrates details of the
The
FIG. 4 shows a plurality of registers held by the
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
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
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
The control register (BISTCR2) 307 is an 8-bit register and specifies the size of one page of the
FIG. 5 illustrates the configuration of one page of the
In the example of FIG. 5, the size of one page is 4 kbytes, has a
The
At the time of write access, write data to the
The enable
Although not shown, the configuration of one page of the general-
FIG. 6 illustrates an address map of the general-
FIG. 7 illustrates a configuration of the enable
FIG. 8 illustrates an address map of the
FIG. 9 illustrates the configuration of the enable
FIG. 10 illustrates the details of the
The
The
The
The instruction prefetch control function of the
The instruction fetch control function of the
The repeat queue control function of the
As described above, when the repeat loop is used, the
FIG. 11 exemplifies a test flow in the case where the relief for the general-
Next, in
If no mismatch has occurred in the comparison result, the loop counter is decremented in
In FIG. 11,
FIG. 12 exemplifies a test flow in a case where the relief is performed on the general-
Next, in
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
In FIG. 13,
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
FIG. 14 shows a timing chart of the
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
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
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
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
In the example shown in FIG. 15, the
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
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
The design data of the
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,
Although not particularly limited, the
When developing and designing a semiconductor integrated circuit using the
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でテストプログラムを実行してバス経由のメモリアクセスを行ない、一旦テストプログラムが命令キューに格納された後のテストプログラムのフェッチは前記バスに代えて前記命令キューから繰返し行なうことを特徴とするメモリテスト方法。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でテストプログラムを実行してメモリライトアクセス及びメモリリードアクセスを行ない、メモリリードアクセスデータを判定回路で期待値と比較判定し、一旦テストプログラムが命令キューに格納された後のテストプログラムのフェッチは前記バスに代えて命令キューから繰り返し行なうことを特徴とするメモリテスト方法。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.
前記設計データは、命令キュー、バス、命令キュー又はバスを介して供給される命令を解読する命令デコーダ、及び制御部の夫々の回路データを含み、
前記命令デコーダは、所定のリピート命令をデコードすることにより、リピートすべきプログラムが一旦命令キューに格納された後の当該リピートすべきプログラムのフェッチを前記命令キューから繰返し可能とする動作モードを前記制御部に設定する機能を有するものであることを特徴とするコンピュータ読み取り可能な記録媒体。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に、バス経由のメモリアクセス処理及びメモリアクセスアドレス更新処理を繰り返し実行させる、メモリテストのためのプログラムであることを特徴とする情報記録媒体。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は、命令キュー、命令キュー又は前記バスを介して供給される命令を解読する命令デコーダ、及び制御部を含み、
前記命令デコーダは、所定のリピート命令をデコードして前記制御部に、リピートすべきプログラムが一旦命令キューに格納された後の当該リピートすべきプログラムのフェッチを前記命令キューから繰返し可能とする動作モードを設定可能であることを特徴とする半導体集積回路。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.
前記判定回路は複数個のメモリブロックから並列的に出力されるメモリリードデータを並列的に期待値と比較判定可能であることを特徴とする請求の範囲第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.
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)
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)
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 |
-
2002
- 2002-01-29 TW TW91101497A patent/TW591378B/en not_active IP Right Cessation
- 2002-02-20 WO PCT/JP2002/001467 patent/WO2002073411A1/en active Application Filing
- 2002-02-20 JP JP2002572003A patent/JP4015025B2/en not_active Expired - Fee Related
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 |