(57)【要約】スキャン制御回路は、スキャン接続構成回路及びメモリアレイの最終レジスタから先頭レジスタの順番に第１シフトクロックを入力させることにより、まずメモリアレイの最終レジスタの各第１素子からスキャン接続構成回路の各第２記憶素子にデータを並列的にコピーし、スキャン接続構成回路の最下位ビットの第２記憶素子からシフトデータをシフトレジスタ出力端子外部出力させる。次にメモリアレイの上位側のレジスタの各第１記憶素子から下位側のレジスタの各第１記憶素子に順次データを並列的にコピーする。そして先頭レジスタについては、その最上位ビットを除く各第１記憶素子にスキャン接続構成回路の最上位ビットを除く各第２記憶素子のデータを並列的にコピーし、最後に先頭レジスタの最上位ビットの第１記憶素子に第２シフトクロックを入力させることによりシフトレジスタ入力端子に外部から入力しているシフトデータをコピーさせる。この処理をスキャン開始時にメモリアレイに保持されていたデータがシフトレジスタ出力端子から外部に出力し終わるまで繰り返す。
2005026966.tif 000002
【特許請求の範囲】
【請求項１】
データ入力端子、データ出力端子、シフト入力端子及びシフト出力端子を備えた所定数の第１記憶素子をアドレス単位に配列して複数のレジスタを構成し、先頭アドレスと最終アドレスのレジスタを除く各レジスタについて各第１記憶素子のシフト入力端子に前段のレジスタの各第１記憶素子のシフト出力端子を接続し、前記先頭レジスタの最上位ビット位置の第１記憶素子のシフト入力端子を外部からシフトデータを入力するシフトレジスタ入力端子とし、前記各第１記憶素子に対するデータクロックの入力によりデータ入力端子のデータをラッチして前記データ出力端子に出力し、前記各第１記憶素子に対するシフトクロックの入力により前記シフト入力端子のシフトデータをラッチして前記シフト出力端子に出力するメモリアレイと、
シフト入力端子及びシフト出力端子を備え前記メモリアレイにおけるレジスタの第１記憶素子と同数の第２記憶素子を前記メモリアレイ最終レジスタに続いて配置し、各第２記憶素子のシフト入力に前記メモリアレイ最終レジスタの同一ビット位置の各第１記憶素子のラッチ出力を接続すると共に、最下位ビットの第２記憶素子を除く各第２記憶素子のシフト出力を前記メモリアレイ先頭レジスタの１ビット上位の各第１記憶素子のシフト入力端子に接続し、最下位ビット位置の第２記憶素子のシフト出力端子をシフトデータを外部出力するシフトレジスタ出力端子とし、前記各第２記憶素子に対する第２シフトクロックの入力により前記シフト入力端子のデータをラッチして前記シフト出力端子に出力するスキャン接続構成回路と、
前記メモリアレイの任意のアドレスを指定してレジスタ単位にデータを書き込むファイル書込部と、
前記メモリアレイの任意のアドレスを指定してレジスタ単位にデータを読み出すファイル読出部と、
前記スキャン接続構成回路及び前記メモリアレイの最終レジスタから先頭レジスタの順番に第１シフトクロックを入力させることにより、まず前記メモリアレイの最終レジスタの各第１記憶素子から前記スキャン接続構成回路の各第２記憶素子にデータを並列的にコピーして前記スキャン接続構成回路の最下位ビットの第２記憶素子からシフトデータを前記シフトレジスタ出力端子に外部出力させ、続いて前記メモリアレイの上位側のレジスタの各第１記憶素子から下位側のレジスタの各第１記憶素子に順次データを並列的にコピーした後に、先頭レジスタの最上位ビットを除く各第１記憶素子に前記スキャン接続構成回路の最上位ビットを除く各第２記憶素子のデータを並列的にコピーし、最後に先頭レジスタの最上位ビットの第１記憶素子に第２シフトクロックを入力させることによりシフトレジスタ入力端子に外部から入力しているシフトデータをコピーさせ、これらの処理をスキャン開始時に前記メモリアレイに保持されていたデータが前記シフトレジスタ出力端子から外部に出力し終わるまで繰り返すスキャン制御回路と、
を備えたことを特徴とするレジスタファイル。
【請求項２】
請求の範囲１のレジスタファイルに於いて、前記メモリアレイに設けた前記第１記憶素子は、
前記データ入力端子のデータを反転して入力させるデータ用入力インバータと、
データクロック入力端子に対するデータクロックの入力によりオンして前記データ用インバータの出力データを通過させる第１ゲート回路と、
シフトクロック入力端子に対するシフトクロックの入力によりオンして前記シフト入力端子のシフトデータを通過させる第２ゲート回路と、
一対のインバータを相互に帰還接続し、前記第１ゲート回路又は第２ゲート回路のオンにより通過したデータを入力してラッチするラッチ回路と、
前記ラッチ回路の入力側に接続されて前記データ出力端子に反転データを出力するデータ出力用インバータと、
前記ラッチ回路の出力側に接続されて前記シフト出力端子に反転データを出力するラッチ出力用インバータと、
を備えたことを特徴とするレジスタファイル。
【請求項３】
請求の範囲１のレジスタファイルにおいて、前記メモリアレイの第１記憶素子の使用トランジスタ数を少なくとも１４個としたことを特徴とするレジスタファイル。
【請求項４】
請求の範囲１のレジスタファイルに於いて、前記スキャン接続構成回路に設けた前記第２記憶素子は、
前記シフト入力端子のデータを反転して入力させる入力用インバータと、
シフトクロック入力端子に対するシフトクロックの入力によりオンして前記シフト入力端子のシフトデータを通過させるゲート回路と、
一対のインバータを相互に帰還接続し、前記ゲート回路のオンにより通過したデータを入力してラッチするラッチ回路と、
前記ラッチ回路の入力側に接続されて前記シフト出力端子に反転データを出力する出力用インバータと、
を備えたことを特徴とするレジスタファイル。
【請求項５】
請求の範囲１のレジスタファイルに於いて、前記スキャン制御回路は、
前記メモリアレイのレジスタ数に一致する数を計数するカウンタと、
前記メモリアレイから１ビットを出力させるシフト期間の開始タイミングで前記スキャン構成回路に第１シフトクロックを出力すると共に、残りシフト期間を示すメモリアレイシフト信号を出力して前記カウンタを動作させる制御部と、
前記カウンタの計数出力を解読して前記スキャン接続構成回路に続いて前記メモリアレイの最終レジスタから先頭レジスタの順番に第１シフトクロックを出力するデコーダ回路と、
前記制御部からメモリアレイシフト信号により各レジスタのゲートを開いて前記デコード回路からの第１シフトクロックを通過させるゲート回路と、
を備えたことを特徴とするレジスタファイル。
【請求項６】
請求の範囲５のレジスタファイルに於いて、前記デコーダ回路は、前記データ書込部の書込アドレスデコーダ回路であり、更に、前記制御部からのメモリアレイシフト信号により前記書込アドレスデコーダ回路に対する書込アドレスの入力を前記カウンタの出力に切り替えるセレクタ回路を設けたことを特徴とするレジスタファイル。
【請求項７】
請求の範囲１のレジスタファイルに於いて、前記メモリアレイをアドレス方向に少なくとも２分割し、前段の分割メモリアレイの最終レジスタのシフトレジスタ出力端子を後段の分割メモリアレイの先頭レジスタのシフトレジスタ入力端子に接続し、前記スキャン制御回路により前記各分割メモリアレイを並列動作させることを特徴とするレジスタファイル。
【請求項８】
データ入力端子、データ出力端子、データクロック端子、シフト入力端子、シフト出力端子及びシフトクロック端子を備えたレジスタファイル用記憶素子に於いて、
前記データ入力端子のデータを反転して入力させるデータ用入力インバータと、
データクロック入力端子に対するデータクロックの入力によりオンして前記データ用インバータの出力データを通過させる第１ゲート回路と、
シフトクロック入力端子に対するシフトクロックの入力によりオンして前記シフト入力端子のシフトデータを通過させる第２ゲート回路と、
一対のインバータを相互に帰還接続し、前記第１ゲート回路又は第２ゲート回路のオンにより通過したデータを入力してラッチするラッチ回路と、
前記ラッチ回路の入力側に接続されて前記データ出力端子に反転データを出力するデータ出力用インバータと、
前記ラッチ回路の出力側に接続されて前記シフト出力端子に反転データを出力するラッチ出力用インバータと、
を備えたことを特徴とするレジスタファイル用記憶素子。
【請求項９】
請求の範囲８のレジスタファイル用記憶素子に於いて、使用トランジスタ数を少なくとも１４個としたことを特徴とするレジスタファイル用記憶素子。
【発明の詳細な説明】
【技術分野】  本発明は、ＣＰＵやＭＰＵ等でレジスタとして使用されるレジスタファイル及びその記憶素子に関し、特にテスト時に記憶素子を直列に接続してシフトレジスタを構成して内容を読出すスキャン回路を一体に備えたレジスタファイル及びその記憶素子に関する。
【背景技術】  従来、ＣＰＵやＭＰＵ等の演算器のレジスタとしては、記憶素子の集合でＤＲＡＭやＳＲＡＭよりも読出しが速い記憶装置であるレジスタファイルが採用されている。このレジスタファイルの回路としては、小さく高速に動作するように設計し、かつ半導体チップ製造時の診断を高速、高効率にすることにより、半導体チップの性能向上と製造コスト低減の両立を図ることができる。
従来の基本的なレジスタファイルの構造は、図１のように、記憶素子２０２を並べてアレイ構造としたメモリアレイ２００に対し、書込用アドレスデコーダ回路２０４、読出用アドレスデコーダ回路２０６及び読出セレクト回路２０８を付加することにより実現されている。
ここでレジスタファイルに使用する記憶素子２０２には次の２種類があり、それぞれにメリットとデメリットがある。
（１）マスタフリップフロップのみのラッチ
（２）マスタースレーブ構造のフリップフロップ
即ち、マスタフリップフロップのみのラッチを記憶素子とした場合、サイズを小さく作れるメリットがあるが、デメリットとしてスキャン回路を作り込むことができない。一方、マスタースレーブ構造のフリップフロップを記憶素子とした場合には、スキャン回路を作り込むことができるメリットがあるが、デメリットとしてマスタのみのラッチで構成した場合と比べ、サイズが倍以上に大きくなってしまう。
ここで、スキャン回路とは、レジスタファイルを構成する半導体チップ内の記憶素子を、通常動作とは違う経路で直列に接続し、シフトレジスタを構成するもので、半導体チップのテスト時にだけ動作する。
図２は、通常時のレジスタファイルであり、説明を簡単にするため、（アドレス方向）×（データ方向）を（３×４）＝１２記憶素子でメモリアレイ２００を構成した場合を例にとっている。メモリアレイ２００に対するデータ書込みは、図１の書込用アドレスデコーダ回路２０４によるライトアドレスの解読で特定のレジスタのデータ方向の４つの記憶素子２０２を選択し、４ビットデータを並列的に書き込む。またメモリメモリアレイ２００からのデータ読出しは、図１の読出用アドレスデコーダ回路１０６によるリードアドレスの解読で特定のレジスタの４つの記憶素子２０２から読出ラインをまとめた読出バスを読出用セレクタ回路２０８で選択し、４ビットデータを並列的に読み出す。
図３は、マスタースレーブ構造のフリップフロップを記憶素子とした場合のテスト時のスキャン回路によって構成されたシフトレジスタであり、メモリアレイ２００の記憶素子２０２を図２の通常動作とは違う経路で直列に接続し、シフトレジスタを構成している。このスキャン回路を使うことにより、実機試験では、本来見えない半導体チップ内部の記憶素子の状態を観測できたり、半導体チップ製造時の良品検査（診断）を高速、効率的に行うことができる。つまり、半導体チップ内の記憶素子のどれだけ多くにスキャン機能を持たせることができるかが、高い試験効率と診断効率を実現できるかどうかの鍵になっている。
図４は、図１のメモリアレイ２００に使用されるマスタフリップフロップのみのラッチ記憶素子であり、入力反転用のインバータ２１０、データクロックＣＫ０及びその反転データクロックＸＣＫ０によりオンするデュアルゲートを構成する並列接続された一対のゲート２１２，２１４、ラッチ２１５を構成する相互に帰還接続した一対のインバータ２１６，２１８及び反転出力用のインバータ２２０で構成される。その動作は、例えばデータクロックＣＫ０、ＸＣＫ０によりゲート２１２，２１４をオンし、インバータ２１０で反転したデータＤをラッチ２１５にラッチし、インバータ２２０で反転して出力する。
図５は、図１のメモリアレイ２００に使用されるマスタースレーブ型のフリップフロップ記憶素子であり、図４と同じラッチ記憶素子回路部２２２に対しシフト入力ＳＩからインバータ２２４及びデュアルゲートを構成するゲート２２６，２２８を介してラッチ２１５に接続し、またラッチ２１５からシフト出力ＳＯに対し、デュアルゲートを構成するゲート２３０，２３２、ゲート２３６，２３８を相互に帰還接続したラッチ２３４、更に出力反転用のインバータ２４０を設けている。ここでインバータ２１０、ゲート２１２，２１４、ラッチ２１５及びインバータ２２０により、図２のような通常時に使用するマスタフリップフリップフロップを構成し、またインバータ２２０、ゲート２１２，２１４及びラッチ２１５により図３のようなテストのシフトレジスタとするために使用するマスタースレーブ構造のフリップフロップを構成している。
図５のマスタースレーブ構造のフリップフロップ記憶素子の通常時の動作は、図６のタイムチャートのようになる。通常動作時は、スキャンシフト用のクロックＣＫ１及びクロックＣＫ２が入力されずに図６（Ｂ）（Ｃ）のようにレベル０に固定され、ラッチ記憶素子回路部２２２のみが動作している。即ち、図６（Ｄ）のデータＤがレベル１に立ち上がった後に図６（Ａ）のクロックＣＫ０を受けてゲート２１２がオンし、ラッチ２１５に保持し、インバータ２２０で反転されて図６（Ｅ）の出力Ｑをレベル１とするラッチ動作を行う。
テスト等のスキャン回路動作は、図７のタイムチャートのようになる。図７（Ａ）のクロックＣＫ０は入力されずレベル０に固定され、まず図７（Ｂ）のクロックＣＫ１が１クロック入力されてゲート２３０がオンし、ラッチ２１５のデータがラッチ２３４にコピーされ、インバータ２４０で反転されて図７（Ｆ）のシフトアウＳＯにデータが出力される。十分な時間が経過すると図７（Ｃ）のようにクロックＣＫ２が１クロック入力される。尚、クロックＣＫ２が入力するまでの時間は、テスターの性能にもよるがシステム動作サイクルの数百倍程度となる。クロックＣＫ２が１クロック入力されるとゲート２２６がオンし、図７（Ｄ）のシフトインＳＩのデータがラッチ２１５へセットされ、図７（Ｅ）のインバータ２２０の出力Ｑとなる。以下、これを繰り返すことにより図３のようなシフトレジスタのスキャン動作を実現している。
ところで、レジスタファイルを設計する際に、マスタフリップフロップのみのラッチを記憶素子とした場合、サイズを小さくすることができ、チップ面積縮小、ひいては性能向上とコスト削減へとつながる。しかし、スキャン回路を作り込むことができないので、チップ診断や実機試験のため、レジスタファイルの外部にスキャン回路の代わりとなる専用回路を追加設計しなくてはならない。そうすると、通常動作のクリティカルパスにゲートを追加することになるので性能低下が起きる。さらに、良品検査のチップ診断パターンおよび診断時間の増加を招き、実機試験の効率低下にもつながるので、最終的に製造コストの増大を引き起こす。
また、マスタースレーブ構造のフリップフロップを記憶素子とした場合、図３のように内部的にスキャン回路を作り込むことができ、レジスタファイルの診断および実機試験を容易に行うことができる。しかし、マスタフリップフロップのみのラッチで構成した場合と比べ、サイズが倍以上に大きくなってしまう。なぜならば、図４のマスタフリップフロップのみのラッチ記憶素子が１０トランジスタで実現しているのに対して、図５のマスタースレーブ構造のフリップフロップ記憶素子は２２トランジスタが必要だからである。このことは、性能低下とコスト増大を引き起こす。実際にチップを設計する場合、様々な仕様や条件により、あるレジスタファイルはサイズを優先するために診断効率と実機試験効率を犠牲にしてマスタフリップフロップのみのラッチ記憶素子を採用したり、また、あるレジスタファイルはスキャンが必要なためにサイズを犠牲にしてマスタースレーブのフリップフロップ記憶素子を採用したりすることになる。サイズや製造効率をトレードオフ・ポイントと考えると、この両者の溝は非常に大きい。
このようにレジスタファイルの記憶素子構造の選択肢が両極端であるということは、半導体チップ設計の際、非常に問題となってくる。レジスタファイルの記憶素子構造の決定は設計の初期に行われる必要があり、その見極めは非常に重要である。もし、その見極めを誤り、設計の中盤での変更が生じれは、実装の大幅変更を引き起こし多大な工程遅延が発生する。このようにレジスタファイルの記憶素子構造の選択肢が両極端であるということは、非常に問題である。
本発明は、半導体チップのサイズをわずかに増加するだけでスキャン回路の組込みを可能として高い試験診断効率を得るレジスタファイルを提供することを目的とする。
【発明の開示】
本発明のレジスタファイルは、メモリアレイ、スキャン接続構成回路、ファイル書込部、ファイル読出部及びスキャン制御回路で構成される。
メモリアレイは、データ入力端子、データ出力端子、シフト入力端子及びシフト出力端子を備えた所定数の第１記憶素子をアドレス単位に配列して複数のレジスタを構成し、先頭アドレスと最終アドレスのレジスタを除く各レジスタについて各第１記憶素子のシフト入力端子に前段のレジスタの各第１記憶素子のシフト出力端子を接続し、先頭レジスタの最上位ビット位置の第１記憶素子のシフト入力端子を外部からシフトデータを入力するシフトレジスタ入力端子とし、前記各第１記憶素子に対するデータクロックの入力によりデータ入力端子のデータをラッチしてデータ出力端子に出力し、各第１記憶素子に対するシフトクロックの入力により前記シフト入力端子のシフトデータをラッチして前記シフト出力端子に出力する。
スキャン接続構成回路は、シフト入力端子及びシフト出力端子を備えメモリアレイにおけるレジスタの第１記憶素子と同数の第２記憶素子をメモリアレイ最終レジスタに続いて配置し、各第２記憶素子のシフト入力に前記メモリアレイ最終レジスタの同一ビット位置の各第１記憶素子のラッチ出力を接続すると共に、最下位ビットの第２記憶素子を除く各第２記憶素子のシフト出力を前記メモリアレイ先頭レジスタの１ビット上位の各第１記憶素子のシフト入力端子に接続し、最下位ビット位置の第２記憶素子のシフト出力端子をシフトデータを外部出力するシフトレジスタ出力端子とし、各第２記憶素子に対する第２シフトクロックの入力によりシフト入力端子のデータをラッチして前記シフト出力端子に出力する。
ファイル書込部は、メモリアレイの任意のアドレスを指定してレジスタ単位にデータを書き込む。ファイル書込み部は、メモリアレイの任意のアドレスを指定してレジスタ単位にデータを読み出す。
スキャン制御回路は、スキャン接続構成回路及びメモリアレイの最終レジスタから先頭レジスタの順番に第１シフトクロックを入力させることにより、まずメモリアレイの最終レジスタの各第１記憶素子からスキャン接続構成回路の各第２記憶素子にデータを並列的にコピーして前記スキャン構成回路の最下位ビットの第２記憶素子からシフトデータをシフトレジスタ出力端子に外部出力させ、続いてメモリアレイの上位側のレジスタの各第１記憶素子から下位側のレジスタの各第１記憶素子に順次データを並列的にコピーした後に、先頭レジスタの最上位ビットを除く各第１記憶素子にスキャン接続構成回路の最上位ビットを除く各第２記憶素子のデータを並列的にコピーし、最後に先頭レジスタの最上位ビットの第１記憶素子に第２シフトクロックを入力させることによりシフトレジスタ入力端子に外部から入力しているシフトデータをコピーさせ、これらの処理をスキャン開始時に前記メモリアレイに保持されていたデータが前記シフトレジスタ出力端子から外部に出力し終わるまで繰り返す。
このような本発明のレジスタファイルにあっては、マスタフリップフロップのみのラッチを記憶素子とする従来のレジスタファイルに、マスタフリップフロップのみのラッチにシフト転送用のゲートと出力を付加した第１記憶素子でメモリアレイを構成し、これにマスタフリップフロップのみの第２記憶素子を用いたスキャン接続構成回路およびスキャン制御回路を追加することにより、テスト時に内部的にシフトレジスタを構成して内容を読み出すスキャン機能を実現することができ、マスタフリップフロップのみのラッチを記憶素子としたレジスタファイルのサイズ縮小のメリットと、マスタースレーブ型のフリップフロップ（２ラッチ）を記憶素子とした場合の内部的なスキャン機能による高い試験・診断効率のメリットを併せ持つことができる。
ここで、メモリアレイに設ける第１記憶素子は、データ入力端子のデータを反転して入力させるデータ用入力インバータと、データクロック入力端子に対するデータクロックの入力によりオンしてデータ用インバータの出力データを通過させる第１ゲート回路と、シフトクロック入力端子に対するシフトクロックの入力によりオンしてシフト入力端子のシフトデータを通過させる第２ゲート回路と、一対のインバータを相互に帰還接続し、第１ゲート回路又は第２ゲート回路のオンにより通過したデータを入力してラッチするラッチ回路と、ラッチ回路の入力側に接続されてデータ出力端子に反転データを出力するデータ出力用インバータと、ラッチ回路の出力側に接続されてシフト出力端子に反転データを出力するラッチ出力用インバータと、を備えたことを特徴とする。このレジスタファイル用記憶素子は、使用トランジスタ数を少なくとも１４個としたことを特徴とし、従来の記憶素子の使用トランジスタ数２２個に対し大幅に低減できる。
またスキャン構成回路に設ける第２記憶素子は、シフト入力端子のデータを反転して入力させる入力用インバータと、シフトクロック入力端子に対するシフトクロックの入力によりオンしてシフト入力端子のシフトデータを通過させるゲート回路と、一対のインバータを相互に帰還接続し、ゲート回路のオンにより通過したデータを入力してラッチするラッチ回路と、ラッチ回路の入力側に接続されてシフト出力端子に反転データを出力する出力用インバータとを備える。この第２記憶素子は、従来のマスタフリップフロップのみの記憶素子と同じであり、使用トランジスタ数は１０個と少なくて済む。
更に、レジスタファイルのスキャン制御回路は、
メモリアレイのレジスタ数に一致する数を計数するカウンタと、
メモリアレイから１ビットを出力させるシフト期間の開始タイミングでスキャン接続構成回路に第１シフトクロックを出力すると共に、残りシフト期間を示すメモリアレイシフト信号を出力してカウン接続構成回路に続いて前記メモリアレイの最終レジスタから先頭レジスタの順番に第１シフトクロックを出力するデコーダ回路と、
制御部からメモリアレイシフト信号により各レジスタのゲートを開いてデコード回路からの第１シフトクロックを通過させるゲート回路と、
を備えたことを特徴とする。
ここでスキャン制御回路のデコーダ回路としては、ファイル書込部の書込アドレスデコーダ回路であり、更に、制御部からのメモリアレイシフト信号により書込アドレスデコーダ回路に対する書込アドレスの入力をカウンタの出力に切り替えるセレクタ回路を設けたことを特徴とする。このようにファイル書込部のアドレスデコーダ回路をスキャン制御のアドレスデコーダ回路に利用することで、本発明により追加する回路部分を更に低減できる。
本発明のレジスタファイルにあっては、アドレスが深くなる場合には、メモリアレイをアドレス方向に少なくとも２分割し、前段の分割メモリアレイの最終レジスタのシフトレジスタ出力を後段の分割メモリアレイの先頭レジスタのシフトレジスタ入力端子に接続し、スキャン制御回路により各分割メモリアレイを並列動作させることを特徴とする。このためメモリアレイのレジスタ数が増加してアドレスが深くなっても、メモリアレイを分割して並列的にスキャン動作を行うことで、分割しない場合に比べ半分のスキャン処理時間とすることができる。勿論、メモリアレイの分割数は必要に応じて３分割、４分割というように増すことができ、分割数に応じてスキャン動作時間を短くできる。
本発明は、メモリアレイに使用するレジスタファイル記憶素子を提供する。即ち、データ入力端子、データ出力端子、データクロック端子、シフト入力端子、として本発明は、データ入力端子のデータを反転して入力させるデータ用入力インバータと、データクロック入力端子に対するデータクロックの入力によりオンして前記データ用インバータの出力データを通過させる第１ゲート回路と、シフトクロック入力端子に対するシフトクロックの入力によりオンして前記シフト入力端子のシフトデータを通過させる第２ゲート回路と、一対のインバータを相互に帰還接続し、第１ゲート回路又は第２ゲート回路のオンにより通過したデータを入力してラッチするラッチ回路と、ラッチ回路の入力側に接続されてデータ出力端子に反転データを出力するデータ出力用インバータと、ラッチ回路の出力側に接続されてシフト出力端子に反転データを出力するラッチ出力用インバータとを備えたことを特徴とする。
【図面の簡単な説明】図１は従来のレジスタファイルの基本構成のブロック図；
図２は通常動作時のレジスタファイルの説明図；
図３はスキャン動作時に構成されるシフトレジスタ構成の説明図；
図４はマスタフリップフロップのみのラッチで構成した従来の記憶素子の回路図；
図５はマスタースレーブフリップフロップで構成した従来の記憶素子の回路図；
図６は図５の記憶素子の通常動作時のタイムチャート；
図７は図５の記憶素子のスキャン動作時のタイムチャート；
図８は本発明によるレジスタファイルの実施形態の回路ブロック図；
図９は図８の実施形態の残り部分の回路ブロック図；
図１０は図８及び図９の実施形態におけるスキャン動作時に有効となる記憶素子の相互接続の説明図；
図１１は本発明のレジスタファイルのスキャン動作を（４アドレス）×（４データ）のメモリアレイを例にとって概略を示した説明図；
図１２は図１１に続くスキャン動作の説明図；
図１３は図１２に続くスキャン動作の説明図；
図１４は図８及び図９のメモリアレイに使用している第１記憶素子の回路図；
図１５は図８及び図９のメモリアレイにおける先頭レジスタの回路ブロック図；
図１６は図８及び図９のメモリアレイにおける２番目のレジスタの回路ブロック図；
図１７は図８及び図９のスキャン接続構成回路の回路ブロック図；
図１８は図１６のスキャン接続構成回路に使用している第２記憶素子の回路図；
図１９は図８及び図９の実施形態のスキャン動作のタイムチャート；
図２０はメモリアレイを２分割した本発明の他の実施形態における上位アドレス側の回路部分の回路ブロック図；
図２１はメモリアレイを２分割した本発明の他の実施形態における下位アドレス側の回路部分の回路ブロック図；
図２２は図２０及び図２１による実施形態のスキャン動作のタイムチャート；
【発明を実施するための最良の形態】  図８及び図９は、本発明によるレジスタファイルの実施形態の回路ブロック図である。図８及び図９において、本発明のレジスタファイルはメモリアレイ１０を有し、メモリアレイ１０には縦方向をアドレス方向、横方向をデータ方向として、レジスタ１２−０，１２−１，１２−２，…１２−ｍを設けている。レジスタ１２−０〜１２−ｍは、横方向となるデータ方向にｎ＋１個の記憶素子（第１記憶素子）を配置している。メモリアレイ１０に対しては、その左側にファイル書込部としてライトアドレスデコーダ回路２４及びアンドゲート２６−０〜２６−ｍが設けられる。ライトアドレスデコーダ回路２４に対しては、後の説明で明らかにする本発明によるスキャン制御回路１６を介してアドレス端子３４からレジスタのライトアドレスが入力され、このライトアドレスを解読することで、レジスタ１２−０〜１２−ｍのいずれかに対するデコード出力を生ずる。アンドゲート２６−０〜２６−ｍに対しては、ライトアドレスデコーダ回路２４からの各デコード出力が入力されると共に、クロック端子３２よりデータクロックＣＫ０が入力されている。したがって、ライトアドレスをライトアドレスデコーダ回路２４で解読して、いずれか１つのデコード出力、例えば初段のレジスタ１２−０に対するデコード出力を生ずると、アンドゲート２６−０が許容状態となり、データクロックＣＫ０がアンドゲート２６−０を介してレジスタ１２−０に書込クロックとして入力され、このときライトデータがデータ端子３８よりｎ＋１ビットデータとして入力されていることから、これをレジスタ１２−０のｎ＋１個の記憶素子に対し並列的に書き込む。メモリアレイ１０の右側にはファイル読出部の一部を構成する読出セレクタ回路３０が設けられている。読出セレクタ回路３０に対しては、レジスタ１２−０〜１２−ｎのそれぞれからのｎ＋１ビット幅のリードデータバスが入力接続されており、セレクタ入力端子４０に対するリードアドレスデコーダ回路（図示せず）の出力により指定されたアドレスのレジスタ出力を選択し、リードデータとして端子４２から出力する。
このようなレジスタファイルとしての本来の回路部に加え、テスト時にスキャン動作を行うため、メモリアレイ１０に対し本発明により加えられた追加回路部１５が設けられている。この追加回路部１５にはスキャン接続構成回路１４とスキャン制御回路１６が設けられている。また本発明において、スキャン機能を実現するため、メモリアレイ１０に設けているレジスタ１２−０〜１２−ｍに使用している記憶素子としては、後の説明で明らかにするように、図４に示した通常のマスタフリップフロップのみのラッチを用いた記憶素子にシフト入出力機能を付加した記憶素子を使用している。スキャン接続構成回路１４は、メモリアレイ１０における最終アドレスのレジスタ１２−ｍに続いて配置されており、レジスタ１２−ｍと同じｎ＋１ビット分の記憶素子（第２記憶素子）を配列している。このスキャン接続構成回路１４に使用している記憶素子は、後の説明で明らかにするように、図４に示したマスタフリップフロップのみの記憶素子と同じものである。またメモリアレイ１０のレジスタ１２−０〜１２−ｍに使用している記憶素子（第１記憶素子）は、データ入力端子とデータ出力端子に加えシフト入力端子とシフト出力端子を備えており、レジスタ１２−０〜１２−ｍについてはシフト入力端子をＳＩ０〜ＳＩｎで表わし、シフト出力端子をＳＯ０〜ＳＯｎで表わしている。なお、記憶素子（第１記憶素子）におけるデータ入力端子Ｄとデータ出力端子Ｑはレジスタの内蔵端子となっている。これに対しスキャン接続構成回路１４に設けている記憶素子（第２記憶素子）はシフト入力端子とシフト出力端子のみを持っており、シフト入力端子をＳＩ０〜ＳＩｎで示し、またシフト出力端子をＳＯｎで示している。
このようなメモリアレイ１０に設けているレジスタ１２−０〜１２−ｍとスキャン接続構成回路１４の各シフト入力端子及びシフト出力端子は、テストの際のスキャン動作を実現するために相互に接続される。まずメモリアレイ１０の先頭アドレスのレジスタ１２−０における最上位ビットｎのシフト入力端子ＳＩｎに対しては、外部のシフトレジスタ入力端子４４を接続している。一方、スキャン接続構成回路１４における最下位ビット０のシフト出力端子ＳＯ０は外部のシフトレジスタ出力端子４８に接続している。レジスタ１２−０〜１２−ｍ間におけるシフト接続は、例えばレジスタ１２−０，１２−１を例に取ると、前段に位置するレジスタ１２−０のシフト出力端子ＳＯ０〜ＳＯｎを次段のレジスタ１２−１のシフト入力端子ＳＩ０〜ＳＩｎに接続しており、このシフト接続を残りのレジスタ１２−２〜１２−ｍについても同様にして行っている。更に、最終段のレジスタ１２−ｍとスキャン接続構成回路１４との間のシフト接続も同様にしている。一方、スキャン接続構成回路１４のシフト出力については、最下位ビットのシフト出力ＳＯ０を除くシフト出力ＳＯ１〜ＳＯｎについて、シフト信号線４６−１〜４６−ｎによりメモリアレイ１０の先頭アドレス位置のレジスタ１２−０の最上位ビットＳＩｎを除くシフト入力ＳＩ０〜ＳＩｎ−１に１ビットずらして接続している。
図１０は、図８及び図９のメモリアレイ１０とスキャン接続構成回路１４におけるスキャン動作のためのシフト接続状態を取り出している。図１０において、メモリアレイ１０のレジスタ１２−０〜１２−ｍ内には、例えば先頭のレジスタ１２−０を例に取ると、第１記憶素子６０−００〜６０−０ｎが設けられている。このｎ＋１個の第１記憶素子の配置は、残りのレジスタ１２−１〜１２−ｍについても同様である。スキャン接続構成回路１４には第２記憶素子６２−０〜６２−ｎが設けられている。メモリアレイ１０のレジスタ１２−０〜１２−ｍに設けている第１記憶素子６０−００〜６０−ｎｍは、図示のシフト入力端子ＳＩとシフト出力端子ＳＯに加えてデータ入力端子Ｄとデータ出力端子Ｑを有するが、ここではデータ入力端子Ｄとデータ出力端子Ｑは省略している。これに対しスキャン接続構成回路１４の第２記憶素子６２−０〜６２−ｎは、シフト入力端子ＳＩとシフト出力端子ＳＯのみを持っている。そしてテスト等のスキャン動作の際には、図１０に示すようにメモリアレイ１０の第１記憶素子６０−００〜６０−ｍｎとスキャン接続構成回路１４の第２記憶素子６２−０は、外部のシフトレジスタ入力端子４４からアドレス方向に直列接続された後に先頭に戻ってこれを繰り返し、最終的にスキャン接続構成回路１４の第２記憶素子６２−０より外部のシフトレジスタ出力端子４８に至る直列回路を構成する。
再び図８及び図９を参照するに、本発明による追加回路部１５にはスキャン制御回路１６が設けられており、スキャン制御回路１６はコントローラ１８、カウンタ２０、セレクタ２２、アンドゲート２８−０〜２８−ｍで構成される。コントローラ１８にはシフト制御端子３６よりシフト信号ＳＣＫ１が入力され、このシフト信号ＳＣＫ１が入力している間、メモリアレイ１０及びスキャン接続構成回路１４はシフトレジスタ出力端子４８からメモリアレイ１０の１ビットを出力させ、且つシフトレジスタ入力端子４４より１ビットを入力させる１回のシフト動作を行わせる。具体的には、シフト信号ＳＣＫ１が入力すると、コントローラ１８は、まずスキャン接続構成回路１４に第１シフトクロック１００１を入力し、メモリアレイ１０の最終段のレジスタ１２−ｍの各記憶素子のｎ＋１ビットのデータをスキャン接続構成回路１４にコピーし、これによってシフトレジスタ出力端子４８に最初の１ビットデータが出力される。続いてコントローラ１８は、残りのシフト信号ＳＣＫ１が得られている期間に亘りカウンタ２０をメモリアレイ１０のレジスタ数分だけ計数させるカウント動作を行わせる。カウンタ２０のカウント出力はセレクタ２２に入力される。スキャン動作時にあっては、コントローラ１８の出力によりセレクタ２２はカウンタ２０の出力を選択しており、このため通常動作時のライトアドレスに代えてカウンタ２０の計数出力がライトアドレスデコーダ回路２４に入力される。ライトアドレスデコーダ回路２４はカウンタ２０の計数出力を解読し、レジスタ１２−ｍ〜１２−０の順番にデコーダ出力を生ずる。これによってアンドゲート２８−ｍ〜２８−０が順番に許容状態となり、このときコントローラ１８からの出力が論理レベル１にあることから、アンドゲート２８−ｍ〜２８−０よりカウンタ２０の計数動作に同期して順番に第２シフトクロック１００２〜１００５がレジスタ１２−ｍ〜１２−０に出力される。このため、第１シフトクロック１００２の入力を受けたレジスタ１２−ｍは前段のレジスタ１２−２の内容をコピーし、以下同様に前段から後段のレジスタにデータ内容をコピーする処理が繰り返される。そして先頭アドレスのレジスタ１２−０に対し第１シフトクロック１００５が入力すると、この場合にはスキャン接続構成回路１４にコピーされている最初レジスタ１２−ｍにあったデータが１ビット上位にずらした状態でコピーされる。その後、シフト信号ＳＣＫ１が断たれると、先頭アドレスのレジスタ１２−０の最上位ビットｎの記憶素子、即ち図９のレジスタ１２−０の右端の第１記憶素子６０−０ｎに対し、クロック端子５０より第２シフトクロックＳＣＫ２が供給され、これによって外部のシフトレジスタ入力端子４４のシフトデータを第１記憶素子６０−０ｎにコピーするシフトインが行われ、以上をもってメモリアレイ１０からの１ビットのシフト出力が完了する。以下同様に、メモリアレイ１０の残りのデータが全てシフトレジスタ出力端子４８から外部に出力するまで、スキャン制御回路１６が同じ動作を繰り返す。
図１１は本発明のレジスタファイルのスキャン動作を（４アドレス）×（４データ）のメモリアレイを例にとって、その概略を示している。図１１（Ａ）はスキャン開始時の初期状態であり、メモリアレイのレジスタ１２−０〜１２−３にデータＤ０１〜Ｄ１６が格納されている。この状態で、まず図１１（Ｂ）のように、最終段のレジスタ１２−３のデータＤ０１〜Ｄ０４をスキャン接続構成回路１４にコピーする。これによって先頭のデータＤ０１がシフトレジスタ出力として外部に出力される。次に図１１（Ｃ）のように、レジスタ１２−２のデータＤ０５〜Ｄ０８をレジスタ１２−３にコピーする。次に図１１（Ｄ）のように、レジスタ１２−１のデータＤ０９〜Ｄ１２をレジスタ１２−２にコピーする。更に図１２（Ｅ）のように、レジスタ１２−０のデータＤ１３〜Ｄ１６をレジスタ１２−１にコピーする。更に図１２（Ｆ）のように、図１１（Ｂ）でスキャン接続構成回路１４にコピーした先頭１ビットのデータＤ０１を除くデータＤ０２〜Ｄ０４をレジスタ１２−１の１ビットずらした位置にコピーする。そして図１２（Ｇ）で、レジスタ１２−０の左側の最上位ビットに外部からシフトデータＳ０１をコピーする。この図１１（Ａ）〜図１２（Ｇ）が、メモリアレイから１つのデータを外部に出力する１回のレジスタシフト動作となる。次に図１２（Ｈ）のように、レジスタ１２−３のデータＤ０５〜Ｄ０８をスキャン接続構成回路１４にコピーする。このとき最下位ビットのデータＤ０５はシフトレジスタ出力端子より外部に出力される。その後、図１１（Ｃ）〜図１２（Ｇ）と同様な処理を繰り返して２回目のシフト動作が終了すると、図１３（Ｉ）のようになり、２つ目のシフトデータＳ０２が入力される。同様な処理を繰り返すと、図１３（Ｊ）のように３つ目のシフトデータＳ０３の入力状態となり、図１３（Ｋ）は最後のシフト動作の開始状態であり、この場合にはスキャン開始時の最後のデータＤ１６のみが残っている。この場合についても同様な処理を繰り返すことにより、最終的に図１３（Ｌ）のようにメモリアレイにあったデータＤ０１〜Ｄ１６は全て外部に出力され、新たに入力したシフトデータＳ０１〜Ｓ１６がメモリアレイを埋めることになる。
図１４は、図８及び図９のメモリアレイ１０のレジスタ１２−０〜１２−ｍ、即ち図１０に取り出して示しているレジスタ１２−０〜１２−ｍに設けた第１記憶素子６０−００〜６０−ｍｎの実施形態の回路図である。図１４において、第１記憶素子６０は、データ入力端子６４、データ出力端子８２、シフトレジスタ入力端子８４及びシフトレジスタ出力端子９６を備えている。データ入力端子６４に続いては入力用インバータ６６が設けられ、次にデュアルタイプのゲート６８，７０が設けられ、これに続いてラッチ７４を設けている。ラッチ７４はインバータ７６，７８を相互に帰還接続している。ラッチ７４の入力側は、出力用インバータ８０を介してデータ出力端子８２に接続されている。このデータ入力端子６４、インバータ６６、ゲート６８，７０、インバータ７６，７８を備えたラッチ７４、インバータ８０及びデータ出力端子８２の構成は、図４に示した従来のマスタフリップフロップのみのラッチからなる記憶素子と同じ回路構成を備えている。これに加えて本発明にあっては、シフト入力端子８４に続いてデュアルタイプのゲート８６，８８を設け、この出力をラッチ７４に入力接続している。またラッチ７５の出力からラッチ出力用のインバータ９４を介してラッチ出力端子９６に接続している。一方、データ入力用のデュアルタイプのゲート６８，７０に対しては、クロック端子７２，７４よりデータクロックＣＫ０とその反転クロックＸＣＫ０が入力される。またシフト入力用のデュアルタイプのゲート８６，８８のクロック端子９０，９２に対しては、シフトクロックＳＣＫとその反転クロックＸＳＣＫが入力される。
メモリアレイの通常時のレジスタ動作の際には、デュアルタイプのゲート６８，７０に対しデータクロックＣＬＫ０とその反転クロックＸＣＫ０を入力して、ゲート開とすることで、データ入力端子６４のデータＤをインバータ６６で反転してラッチ７４に送り、インバータ７６，７８による相互帰還動作でデータＤの反転データをラッチする。このラッチ７４にラッチされたデータはインバータ８０で反転され、データ出力端子８２にデータＤとして表われる。一方、スキャン動作の際には、デュアルタイプのゲート８６，８８に対しシフトクロックＳＣＫとその反転クロックＸＳＣＫを入力することで、ゲート開となり、シフトレジスタ入力端子８４のシフトデータＳＩが入力してラッチ７４に保持される。このラッチ７４に保持されたシフトデータは、インバータ９４で反転されてシフトレジスタ出力端子９６に表われる。このような本発明のメモリアレイ１０に用いる第１記憶素子６０は、図４のマスタフリップフロップのみのラッチからなる記憶素子にデュアルタイプのゲート８６，８８とインバータ９４を追加しただけの回路であり、図５に示した従来のスキャン動作のためのマスタースレーブフリップフロップ構成の記憶素子に比べると、同じスキャン動作を可能としていても回路が大幅に簡略化されていることが分かる。具体的には、図１４の第１記憶素子６０はインバータ及びデュアルゲートのそれぞれにつきトランジスタ２個を使用しているため、トランジスタ使用数は１４個となり、図５の従来のスキャン動作を実現する記憶素子のトランジスタ使用数２２個に比べ大幅に回路構成が簡単となり、レジスタファイルを構成した際の半導体チップのサイズを小さくできる。また図４のスキャン機能を持たない記憶素子の使用トランジスタ数１０個に対し、トランジスタが４個増えただけでスキャン機能を実現することができるようになっている。
図１５は、図８及び図９のメモリアレイ１０における先頭アドレス位置のレジスタ１２−０の回路ブロック図である。レジスタ１２−０は第１記憶素子６０−００〜６０−０ｎをデータ方向に配列しており、それぞれ図１４に示した回路構成を備えている。このため第１記憶素子６０−００〜６０−０ｎはデータ入力端子Ｄ、データ出力端子Ｑ、シフト入力端子ＳＩ、シフト出力端子ＳＯを備える。またクロック端子としてデータクロック端子ＣＫとその反転クロック端子ＸＣＫ、シフトクロック端子ＳＣＫとその反転シフトクロック端子ＸＳＣＫを備えている。第１記憶素子６０−００〜６０−０ｎのデータ入力端子Ｄに対しては、ライトデータバス９８−０からｎ＋１ビット分の信号線が設けられ、それぞれデータ入力端子に信号線を１ビット単位に設定している。またデータ出力端子Ｑからの出力ラインは取りまとめられてｎ＋１ビットのリードデータバス１００−０として取り出されている。第１記憶素子６０−００〜６０−０ｎのデータクロック端子ＣＫには外部よりデータクロックＣＫ０のクロックラインが接続され、その反転データクロック端子ＸＣＫにはインバータ１０２−０で反転されたクロックラインが接続される。一方、第１記憶素子６０−００〜６０−０ｎのシフト出力端子ＳＯについては、次段のレジスタ１２−１のシフト入力端子ＳＩに同一ビット位置をもって接続される。一方、第１記憶素子６０−００〜６０−０ｎのシフト入力端子ＳＩにあっては図１０に示したようにシフト信号線６２−１〜６２−ｎによってスキャン接続構成回路１４に設けている最大ビットを除く第２記憶素子６２−１〜６２−ｎのシフト出力端子ＳＯが１ビットずらして接続される。また、レジスタ１２−０における最上位ビットｎの第１記憶素子６０−０ｎのシフト入力端子ＳＩは図１０に示したように外部のシフトレジスタ入力端子４４に接続される。最上位ビットの第１記憶素子６０−０ｎを除く第１記憶素子６０−００〜６０−０，ｎ−１のシフトクロック端子ＳＣＫに対しては、図８及び図９に示したアンドゲート２８−０より第１シフトクロック１００５が入力され、またその反転シフトクロック端子ＸＳＣＫにはインバータ１０４−０で反転された反転シフトクロックが入力されている。一方、最上位ビットｎの第１記憶素子６０−０ｎについてはクロック端子５０に対し第２シフトクロックＳＫＣ２が入力され、同時にインバータ１０５で反転された反転クロックが反転シフトクロック端子ＸＳＣＫに入力されている。
図１６は、図８及び図９のメモリアレイ１０の２番目のアドレスのレジスタ１２−１の回路ブロック図である。レジスタ１２−１にあっては、図１４の回路構成を持つ第１記憶素子６０−１０〜６０−１ｎをデータ方向に配列しており、データ入力端子Ｄにライトデータバス９８−１からの各ビット線を接続し、またデータ出力端子Ｑからの出力線をまとめてリードデータバス１００−１として取り出している。データ書込用のクロックＣＫ０はそれぞれのデータクロック端子ＣＫに入力されると共にインバータ１０２−１で反転されて、反転クロックとして反転クロック端子ＸＣＫに入力されている。また第１記憶素子６０−１０〜６０−１ｎのシフト入力端子ＳＩとシフト出力端子ＳＯについては、前段に位置する図１０のレジスタ１２−０及び次段に位置するレジスタ１２−２との間で同一ビット位置を持ってシフト入出力の相互接続が行われている。このレジスタ１２−１の回路構成は残りのレジスタ１２−２〜１２−ｎについても同じである。
図１７は、図８及び図９のスキャン接続構成回路１４の回路ブロック図である。スキャン接続構成回路１４にあっては、第２記憶素子６２−０〜６２−ｎをデータ方向にメモリアレイ１０の各レジスタの第１記憶素子と同数配置している。第２記憶素子６２−０〜６２−ｎは、シフト入力端子ＳＩ、シフト出力端子ＳＯ、シフトクロック端子ＳＣＫ及びその反転端子ＸＳＣＫを有する。第２記憶素子６２−０〜６２−ｎのシフト入力端子ＳＩは、図１０のように前段に位置するメモリアレイ１０のレジスタ１２−ｎのシフト出力端子ＳＯと同一ビット位置で接続される。一方、第２記憶素子６２−０のシフト出力ＳＯは、図１０のように外部に取り出されてシフトレジスタ出力端子４８に接続される。残りの第２記憶素子６２−１〜６２−ｎのシフト出力端子ＳＯは、図１０のようにメモリアレイ１０の先頭位置のレジスタ１２−０における１ビットずれた位置の第１記憶素子６０−００〜６０−０ｎ−１のシフト入力端子ＳＩに接続される。第２記憶素子６２−０〜６２−ｎのシフトクロック入力端子に対しては図８及び図９のコントローラ１８から第１シフトクロックＳＣＫ１がシフトクロック端子ＳＣＫに入力され、同時にインバータ１０６で反転されたクロックが反転シフトクロック端子ＸＣＫに入力される。
図１８は、図１３のスキャン接続構成回路１４で使用している第２記憶素子の回路図である。第２記憶素子６２はシフト入力端子１０８とシフト出力端子１２６を有する。シフト入力端子１０８はラッチ１１８は一対のインバータ１２０，１２２を相互に帰還接続している。ラッチ１１８の出力はインバータ１２４を介してシフト出力端子１２６に接続される。デュアルタイプの一方のゲート１１０に対してはクロック端子１１４が接続され、シフトクロックＳＣＫが入力される。また他方のゲート１１２にはクロック端子１１６が接続され、シフトクロックＳＣＫの反転シフトクロックＸＳＣＫが入力される。この第２記憶素子６２は、図４に示したようにスキャン機能を持たない従来のメモリアレイに使用しているマスタフリップフロップのみのラッチ記憶素子と同じ回路であり、シフトデータ専用の記憶素子として使用している。
図１９は、図８及び図９の実施形態におけるスキャン動作のタイムチャートである。本発明によるレジスタファイルの内部診断などのテスト動作の際には、まず図１９（Ａ）のようにシフト信号ＳＣＫが０から１に立上り、これがシフト制御端子３６に加えられる。シフト信号ＳＣＫを受けたコントローラ１８は、スキャン接続構成回路１４に対し図１９（Ｂ）の第１シフトクロック１００１を出力する。これによってレジスタ１２−ｍのデータがスキャン接続構成回路１４にコピーされ、先頭のビットデータがシフトレジスタ出力端子４８から外部に出力される。続いてコントローラ１８はシフト信号ＳＣＫ１の残り期間にわたりカウンタ２０を動作すると同時に、セレクタ２２及びアンドゲート２８−０〜２８−ｍに対しレベル１となる制御信号を出力する。このため図１９（Ｃ）のようにカウンタ２０が計数動作を開始してメモリアレイ１０のアドレス１，２，３，・・・ｍに対応したカウンタ出力を、コントローラ１８からの制御信号により切り替わっているセレクタ２２を介してライトアドレスデコーダ回路２４に出力する。このためライトアドレスデコータ回路２４はカウンタ２２からの計数出力に対応して、図１９（Ｅ）〜（Ｈ）のように順番にデコータ出力を生じ、この時、許容状態にあるアンドゲート２８−０〜２８−ｎを介してレジスタ１２−ｎ〜１２−０の順番に第１シフトクロック１００３，１００４、１００５を出力する。このためメモリアレイ１０において、レジスタ１２−ｎ〜１２−１の順番に前段のレジスタから後段のレジスタに対するデータコピーが繰り返し行なわれる。そして図１９（Ｈ）のように先頭アドレスのレジスタ１２−０に対し第１シフトクロック１００５が出力されると、スキャン接続構成回路１４の最大ビットを除く残りビットのデータを１ビットずらしてレジスタ１２−０にコピーする。図１９（Ａ）のシフト信号ＳＣＫ１が得られてから十分な時間が経過すると、図１９（Ｉ）の第２シフトクロックＳＣＫ２がクロック端子５０に与えられる。この場合、シフト信号ＳＣＫ１が得られてから第２シフトクロックＳＣＫ２が得られるまでの時間は、テスタの性能にもよるがシステム動作サイクルの数百倍程度の時間となる。従って、第２シフトクロックＳＣＫ２が得られるまでにシフト信号ＳＣＫ１によるメモリアレイ１０の１回のシフト動作は確実に終了していることになる。図１９（Ｉ）の第２シフトクロックＳＣＫ２がクロック端子５０に与えられると、先頭アドレス位置の例えば図１５に示したレジスタ１２−０の第１記憶素子６０−０ｎに対し、第２シフトクロックＳＣＫ２とインバータ１０５で反転された反転シフトクロックが入力され、外部のシフトクロック入力端子４４からのシフトデータを第２記憶素子６２−０ｎにコピーする。以下、メモリアレイ１０に保持していた全てのデータがシフトデータ出力端子４８から外部に出力されるまでスキャン動作を繰り返す。
図２０及び図２１は、メモリアレイを２分割した本発明によるレジスタファイルの他の実施形態の回路ブロック図である。
図２０及び図２１の実施形態において、メモリアレイは上位アドレス側の分割メモリアレイ１０−１と下位アドレス側の分割メモリアレイ１０−２に分けられている。分割メモリアレイ１０−１にはレジスタ１２−１０〜１２−１ｍが設けられ、これに対しスキャン接続構成回路１４−１を配置している。同様に分割メモリアレイ１０−２にはレジスタ１２−２０〜１２−２ｍが設けられ、スキャン構成回路１４−２を設けている。分割メモリアレイ１０−１，１０−２及びスキャン接続構成回路１４−１，１４−２の具体的な構成は、それぞれ図８及び図９の回路構成と基本的に同じである。分割メモリアレイ１０−１と分割メモリアレイ１０−２の間のシフト入出力の接続は、分割メモリアレイ１０−１側のスキャン接続構成回路１４−１における最下位ビットのシフト出力ＳＯ０を分割メモリアレイ１０−２の先頭アドレスのレジスタ１２−２０の最上位ビット位置のシフト入力ＳＩｎに接続している。また外部のシフトレジスタ入出力端子４４は上位アドレス側のレジスタ１２−１０の最上位ビット側の記憶素子のシフト入力素子のＳＩｎに接続している。更に外部にデータを取り出すシフトレジスタ出力端子４８は分割メモリアレイ１０−２側のスキャン接続個性回路１４−２の最上位ビットの記憶素子のシフト出力ＳＯ０を接続している。
分割メモリアレイ１０−１、１０−２に対するファイル書込部は下位アドレスデコーダ回路２４−１と上位ライトアドレスデコーダ回路２４−２、更にアンドゲート２６−０〜２６−２ｍで構成される。アドレス端子３４に対するレジスタのライトアドレスは上位アドレスデコータ回路２４−２と下位アドレスデコータ回路２４−１に入力され、下位アドレスデコータ回路２４−１と上位アドレスデコーダ回路２４−２のいずれかひとつのデコーダ出力が生じ、対応するアンドゲートを許容状態としてデータクロックＣＫ０を通過させ、対応するレジスタに対しデータ端子３８からの外部データを並列書込みする。分割メモリアレイ１０−１，１０−２のファイル読出部はそれぞれにつき読出セレクト回路３８−１，３８−２が設けられ、アドレス下位ビットにより読出セレクト回路３８−１，３８−２の両方が図示しないリードアドレス回路の出力で選択される。読出セレクト回路３８−１，３８−２の出力は読出セレクト回路３８−３に入力され、読出セレクト回路３８−３は読出アドレスの上位ビットか下位ビットかで選択されていずれか一方の読出動作を選択出力する。
スキャン制御回路１６は、図８及び図９の実施形態と同様、コントローラ１８、カウンタ２０、セレクタ２２を備え、アドレスデコーダ回路としては下位ライトアドレスデコーダ回路２４−１を利用している。スキャン制御に使用される下位ライトアドレスデコータ回路２４−１のデコーダ出力は分割メモリアレイ１０−１，１０−２のそれぞれに与えられる。即ち分割メモリアレイ１０−１，１０−２はレジスタ１２−１０〜１２−１ｍ，１２−２０〜１２−２ｍに対しアンドゲート２８−１０〜２８−１ｍ，２８−２０〜２８−２ｍを設けており、それぞれコントローラ１８からの制御信号でスキャン動作の際にはレベル１の入力を受けて許容状態となり、この状態で下位ライトアドレスデコーダ回路２４−１からのひとつのデコーダ出力が分割メモリアレイ１０−１，１０−２の同じレジスタ位置のアンドゲートに出力され、分割メモリアレイ１０−１，１０−２の各指定レジスタにつき並列的なシフト動作が行なわれる。この点はスキャン接続構成回路１４−１，１４−２についても同様であり、コントローラ１８からの第１シフトクロック２００１がそれぞれに並列的に入力され、並列的なスキャン動作を行なうことになる。
図２２は、図２０及び図２１の実施形態のスキャン動作のタイムチャートである。スキャン動作を開始すると、図２２（Ａ）のようなシフト信号ＳＣＫ１が得られ、図２２（Ｄ）のようにコントローラ１８が第１シフトクロック１００１をスキャン接続構成回路１４−１，１４−２に出力し、レジスタ１２−１ｍ，１２−２ｍからのデータコピーが並列的に行なわれる。続いてカウンタ２０の計数出力がセレクタ２２を介して、下位ライトアドレスデコーダ回路２４−１に与えられることで、図２２（Ｅ）〜（Ｇ）のようにアンドゲート２８−１０〜２８−１ｍを介して第２シフトクロック１０００〜１００３がレジスタ１２−１ｍ〜１２−１０の順に入力され、これに並行して図２２（Ｇ）〜（Ｉ）のようにレジスタ１２−２ｍ〜１２−２０の順に第２シフトクロック２００１〜２００３が入力され、分割メモリアレイ１０−１，１０−２におけるレジスタ間のシフト動作を使用したコピーが並列的に行なわれる。そして図２２（Ａ）のシフト信号ＳＣＫ１の発生からシステム動作サイクルの数百倍程度の十分な時間が経過すると、図２２（Ｊ）のように第２シフトクロックＳＣＫ２がクロック端子５０に与えられ、図２０及び図２１のレジスタ１２−１０の最上位ビットｎの第１記憶素子に外部のシフトレジスタ入力端子４４のシフトデータがコピーされ、同時にレジスタ１２−２０の最上位ビットｎの第１記憶素子に前段に位置する分割メモリアレイ１０−１側のスキャン接続構成回路１４−１における最下位ビット０のデータがコピーされる。以下、同様にして分割メモリアレイ１０−１，１０−２の残り全てのスキャン開始時にあったデータがシフトレジスタ入出力端子４８より外部に出力されるまで同じ動作を繰り返す。
このようなメモリアレイ１０−１，１０−２を分割してスキャン処理を行なうことで、メモリアレイのレジスタ数が増加してアドレスが深くなった場合には、アドレス数分のクロックパルスをカウンタによる計数動作で順次発生しなければならないために１回のシフトに時間がかかるが、図２０及び図２１の実施形態のようにメモリアレイを２分割することで、半分の時間で１回のスキャン動作を行なうことができ、レジスタファイルのアドレスが深くなった場合のスキャン動作の処理効率を高めることができる。
また図２０及び図２１の実施形態にあってはメモリアレイを２分割にした場合を例にとっているが、更にレジスタ数が増加してアドレスが深くなる場合には、３分割あるいは４分割と分割数を増やしても良い。
尚、本発明はＣＰＵやＭＰＵに使用される高速記憶装置としてのレジスタファイルを例にとるものであったが、本発明はこれに限定されず、複数の記憶素子をデータ方向に並べて使用する記憶装置であれば適宜の記憶装置に適用できる。また本発明は上記の実施形態に限定されず、その目的と利点を損なうことのない適宜の変形を含む。更に本発明は上記の実施形態に示した数値による限定は受けない。
【図１】
2005026966.tif 000003
【図２】
2005026966.tif 000004
【図３】
2005026966.tif 000005
【図４】
2005026966.tif 000006
【図５】
2005026966.tif 000007
【図６】
2005026966.tif 000008
【図７】
2005026966.tif 000009
【図８】
2005026966.tif 000010
【図９】
2005026966.tif 000011
【図１０】
2005026966.tif 000012
【図１１】
2005026966.tif 000013
【図１２】
2005026966.tif 000014
【図１３】
2005026966.tif 000015
【図１４】
2005026966.tif 000016
【図１５】
2005026966.tif 000017
【図１６】
2005026966.tif 000018
【図１７】
2005026966.tif 000019
【図１８】
2005026966.tif 000020
【図１９】
2005026966.tif 000021
【図２０】
2005026966.tif 000022
【図２１】
2005026966.tif 000023
【図２２】
2005026966.tif 000024
【国際調査報告】
2005026966.tif 000025
2005026966.tif 000026