(57)【要約】【課題】  テスト回路の規模を大きくせずに機能ブロック単独のテストを行う。【解決手段】  ロジック部８０の出力と機能ブロック９０の入力間の並列経路とデータを直列に伝達するための直列シフト経路を有し、セレクタ１０，１１，１２とフリップフロップ３０，３１，３２により構成されたスキャンパスと、スキャンパスの直列シフト経路上に接続され、機能ブロック９０の出力と直列シフト経路を切り替えてのロジック部８１の入力に接続するためのセレクタ６０，６１，６２を備え、ＳＩ端子からテストデータをセレクタ６０，６１，６２を介して機能ブロック９０にシフトインし、セレクタ６０，６１，６２を切り替えて機能ブロック９０から出力されたデータを出力する。【選択図】        図１
2004212384.tif 000002
【特許請求の範囲】
【請求項１】
第１及び第２のロジック部と、
上記第１のロジック部と上記第２のロジック部との間に接続された機能ブロックと、
上記第１のロジック部の出力と上記機能ブロックの入力間の並列経路とデータを直列に伝達するための直列シフト経路を有し、上記第１のロジック部の出力と上記直列シフト経路を切り替えて上記機能ブロックの入力に接続するための複数の第１のセレクタと上記データを格納する複数のフリップフロップにより構成されたスキャンパスとを備えた半導体集積回路装置において、
上記スキャンパスの直列シフト経路上に接続され、上記機能ブロックの出力と上記直列シフト経路を切り替えて上記第２のロジック部の入力に接続するための複数の第２のセレクタを備え、
上記スキャンパスの直列シフト経路からテストデータを上記第２のセレクタを介して上記機能ブロックに与え、上記第２のセレクタを切り替えて上記機能ブロックから出力されたデータを上記第２のセレクタを介して出力することを特徴とする半導体集積回路装置。
【請求項２】
直列シフト経路上のフリップフロップを、第１ロジック部の出力と機能ブロックの入力間の並列経路外に接続することを特徴とする請求項１記載の半導体集積回路装置。
【請求項３】
機能ブロックがＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である場合に、１回のシフト動作で上記ＲＡＭに与えるデータをオール０又はオール１に変更するために、スキャンパスの直列シフト経路上に複数のインバータを挿入したことを特徴とする請求項１記載の半導体集積回路装置。
【請求項４】
インバータは第２のセレクタの出力に接続されていることを特徴とする請求項３記載の半導体集積回路装置。
【請求項５】
スキャンパスは直列シフト経路の出力を直列シフト経路の入力にフィードバックさせるための第３のセレクタ回路を備えたことを特徴とする請求項３記載の半導体集積回路装置。
【請求項６】
第２のセレクタを介して出力された機能ブロックからのデータが所定の値であることを検出するためのゲート回路を備えたことを特徴とする請求項５記載の半導体集積回路装置。
【請求項７】
インバータを介して出力された機能ブロックからのデータが所定の値であることを検出するためのゲート回路を備えたことを特徴とする請求項５記載の半導体集積回路装置。
【請求項８】
第１のセレクタを介して出力された機能ブロックからのデータが所定の値であることを検出するためのゲート回路を備えたことを特徴とする請求項５記載の半導体集積回路装置。
【請求項９】
フリップフロップに格納されている機能ブロックからのデータが所定の値であることを検出するためのゲート回路を備えたことを特徴とする請求項５記載の半導体集積回路装置。
【請求項１０】
スキャンパスの直列シフト経路上のフリップフロップの入力を第２のセレクタの出力に接続し、上記フリップフロップの出力を第２ロジック部の入力に接続することを特徴とする請求項１記載の半導体集積回路装置。
【請求項１１】
機能ブロックがＲＡＭである場合に、
１回のシフト動作で上記ＲＡＭに与えるデータをオール０又はオール１に変更するためにスキャンパスの直列シフト経路上に挿入した複数のインバータと、
上記スキャンパスの直列シフト経路の出力を上記直列シフト経路の入力にフィードバックさせるための第３のセレクタ回路と、
第２のセレクタを介して出力された上記ＲＡＭからのデータが所定の値であることを検出するためのゲート回路とを備えたことを特徴とする請求項１０記載の半導体集積回路装置。
【請求項１２】
機能ブロックがＲＡＭである場合に、
１回のシフト動作で上記ＲＡＭに与えるデータをオール０又はオール１に変更するためにスキャンパスの直列シフト経路上に挿入した複数のインバータと、
上記スキャンパスの直列シフト経路の出力を上記直列シフト経路の入力にフィードバックさせるための第３のセレクタ回路と、
上記インバータを介して出力された上記ＲＡＭからのデータが所定の値であることを検出するためのゲート回路とを備えたことを特徴とする請求項１０記載の半導体集積回路装置。
【請求項１３】
機能ブロックがＲＡＭである場合に、
１回のシフト動作で上記ＲＡＭに与えるデータをオール０又はオール１に変更するためにスキャンパスの直列シフト経路上に挿入した複数のインバータと、
上記スキャンパスの直列シフト経路の出力を上記直列シフト経路の入力にフィードバックさせるための第３のセレクタ回路と、
第１のセレクタを介して出力された上記ＲＡＭからのデータが所定の値であることを検出するためのゲート回路とを備えたことを特徴とする請求項１０記載の半導体集積回路装置。
【請求項１４】
機能ブロックがＲＡＭである場合に、
１回のシフト動作で上記ＲＡＭに与えるデータをオール０又はオール１に変更するためにスキャンパスの直列シフト経路上に挿入した複数のインバータと、
上記スキャンパスの直列シフト経路の出力を上記直列シフト経路の入力にフィードバックさせるための第３のセレクタ回路と、
フリップフロップに格納されている上記ＲＡＭからのデータが所定の値であることを検出するためのゲート回路とを備えたことを特徴とする請求項１０記載の半導体集積回路装置。
【請求項１５】
機能ブロックがＲＡＭである場合に、
第１のセレクタ及び上記第２のセレクタとしてＡＮＤ−ＯＲ複合ゲート型セレクタを使用することを特徴とする請求項１記載の半導体集積回路装置。
【請求項１６】
機能ブロックがＲＡＭである場合に、
第１のセレクタ及び上記第２のセレクタとしてＡＮＤ−ＯＲ複合ゲート型セレクタ及びＡＮＤ−ＮＯＲ複合ゲート型セレクタを使用することを特徴とする請求項１記載の半導体集積回路装置。
【請求項１７】
機能ブロックがＲＡＭである場合に、
１回のシフト動作で上記ＲＡＭに与えるデータをオール０又はオール１に変更するためにスキャンパスの直列シフト経路上に挿入した複数のインバータと、
上記スキャンパスの直列シフト経路の出力を上記直列シフト経路の入力にフィードバックさせるための第３のセレクタ回路と、
上記スキャンパスを介して出力された上記ＲＡＭからの奇数ビット目及び偶数ビット目のデータが所定の値であることを検出するためのゲート回路とを備えたことを特徴とする請求項１記載の半導体集積回路装置。
【請求項１８】
機能ブロックがＲＡＭである場合に、
１回のシフト動作で上記ＲＡＭに与えるデータをオール０又はオール１に変更するためにスキャンパスの直列シフト経路上に挿入した複数のインバータと、
上記スキャンパスの直列シフト経路の出力を上記直列シフト経路の入力にフィードバックさせるための第３のセレクタ回路と、
上記スキャンパスを介して出力された上記ＲＡＭからのデータが所定の値であることを検出するためのゲート回路と、
上記ゲート回路が上記ＲＡＭからのデータが所定の値でないことを検出した場合に、次の上記ＲＡＭのテストをキャンセルし故障解析を行うためのフェイルフラグ信号を出力すると共に、上記第２のセレクタを上記直列シフト経路に切り替えるフェイルフラグ生成回路とを備えたことを特徴とする請求項１記載の半導体集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の機能ブロックと、その機能ブロックに接続されるロジック部と、それらをテストするためのテスト回路とを備えた半導体集積回路装置に関するものである。
【背景技術】
【０００２】
図２１は特許文献１に開示されたスキャンテスト機能を備えた従来の半導体集積回路装置を示す回路図である。図２１に示すように、この半導体集積回路装置は、シフトモード信号ＳＭにより制御されるセレクタ１０，１１，１２、フリップフロップ（ＦＦ）３０，３１，３２、テストモード信号ＴＥＳＴにより制御されるセレクタ５０，５１，５２、ロジック部８０，８１、ＲＡＭ９１により構成されている。
【０００３】
図２１において、セレクタ１０，１１，１２及びフリップフロップ３０，３１，３２によりスキャンパスが構成されている。このスキャンパスは、ロジック部８０の出力とＲＡＭ９１の入力間の並列経路と、ＳＩ（スキャンイン）端子からＳＯ（スキャンアウト）端子までのデータを直列に伝達するための直列シフト経路を備えた記憶回路である。
【０００４】
次に図２１に示す半導体集積回路装置の動作について説明する。
通常動作時は、シフトモード信号ＳＭ＝０に設定してセレクタ１０，１１，１２を“０”入力端に切り替え、テストモード信号ＴＥＳＴ＝０に設定してセレクタ５０，５１，５２を“０”入力端に切り替える。すなわち、ロジック部８０から出力されるデータが、セレクタ１０，１１，１２により選択されて、フリップフロップ３０，３１，３２を介してＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力される。ここで、図示されていないが、フリップフロップ３０，３１，３２にはクロックが入力されているものとする。また、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのデータが、セレクタ５０，５１，５２により選択されてロジック部８１に伝達される。このように、通常動作時は、ＲＡＭ９１はロジック部８０，８１の間に挿入された状態となり、データの書き込みと読み出しが行われる。
【０００５】
ロジック部８０，８１のスキャンテストを行う場合は、テストモード信号ＴＥＳＴ＝１に設定してセレクタ５０，５１，５２を“１”入力端に切り替える。この状態では、セレクタ５０，５１，５２は“１”入力端に入力されたデータを選択して出力するので、ＲＡＭ９１はバイパスされ、スキャンパスがロジック部８０とロジック部８１の間に挿入された状態になる。その状態でシフトモード信号ＳＭを制御してロジック部８０，８１のスキャンテストを行う。
【０００６】
ロジック部８１のスキャンテストを行う場合には、シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替える。セレクタ１０，１１，１２は“１”入力端に入力されたデータを選択するので、フリップフロップ３０，３１，３２にクロックを３回与えると、ＳＩ端子からの３ビットのテストデータがシリアルシフト動作により、フリップフロップ３０，３１，３２に格納される。テストモード信号ＴＥＳＴ＝１なので、フリップフロップ３０，３１，３２に格納された３ビットのテストデータがロジック部８１に与えられ、ロジック部８１から出力されるデータを確認することでロジック部８１のスキャンテストが行われる。
【０００７】
ロジック部８０のスキャンテストを行う場合には、シフトモード信号ＳＭ＝０に設定してセレクタ１０，１１，１２を“０”入力端に切り替える。テストデータを入力し所定の動作を行ったロジック部８０から出力される３ビットのデータがセレクタ１０，１１，１２により選択される。フリップフロップ３０，３１，３２にクロックを１回与えると、ロジック部８０からの３ビットのデータはそれぞれフリップフロップ３０，３１，３２に格納される。このとき、フリップフロップ３２に格納された１ビットのデータはＳＯ端子に出力される。次にシフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替える。フリップフロップ３０，３１，３２にクロックを２回与えると、フリップフロップ３０，３１に格納された各１ビットのデータがシリアルシフト動作によりＳＯ端子にシリアル出力され、ロジック部８０のスキャンテストが行われる。
【０００８】
図２１に示す半導体集積回路装置では、シフトモード信号ＳＭ＝１の状態において、シリアルシフト動作により、ＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２にＳＩ端子からのテストデータを設定することは可能であるが、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２から出力されるデータを、フリップフロップ３０，３１，３２に取り込んでＳＯ端子から読み出す機能はなく、ＲＡＭ９１単独のテストを行うことはできない。
【０００９】
図２２は特許文献１に開示されたＲＡＭ９１単独のテスト機能を備えた従来の半導体集積回路装置を示す回路図である。これは図２１に示す半導体集積回路装置に、ＲＡＭ９１のテストモードを実行するために、出力選択信号ＳＥＬＤＯにより制御されるセレクタ６０，６１，６２と、ＲＡＭテスト信号ＲＡＭＴＥＳＴにより制御されるセレクタ７０，７１，７２が追加されている。
【００１０】
ここで、セレクタ６０，６１，６２の“１”入力端には、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのデータがそれぞれ入力され、セレクタ６０の“０”入力端にはＳＩ端子からのテストデータが入力され、セレクタ６１，６２の“０”入力端にはそれぞれフリップフロップ３０，３１からのデータが入力される。また、セレクタ７０，７１，７２の“０”入力端には、フリップフロップ３０，３１，３２からのデータが入力され、セレクタ７０，７１，７２の“１”入力端には、ＳＩＤ端子からのＲＡＭテストデータが入力される。
【００１１】
次に図２２に示す半導体集積回路装置の動作について説明する。
通常動作時は、シフトモード信号ＳＭ＝０に設定してセレクタ１０，１１，１２を“０”入力端に切り替え、テストモード信号ＴＥＳＴ＝０に設定してセレクタ５０，５１，５２を“０”入力端に切り替え、ＲＡＭテスト信号ＲＡＭＴＥＳＴ＝０に設定してセレクタ７０，７１，７２を“０”入力端に切り替える。この状態では、ロジック部８０から出力されるデータが、フリップフロップ３０，３１，３２を介してＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力される。ここで、フリップフロップ３０，３１，３２にはクロックが入力されているものとする。また、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのデータがロジック８１に伝達される。このように、通常動作時は、ＲＡＭ９１はロジック８０，８１の間に挿入された状態となり、データの書き込みと読み出しが行われる。
【００１２】
ロジック部８０、ロジック部８１のスキャンテストを行う場合には、テストモード信号ＴＥＳＴ＝１に設定してセレクタ５０，５１，５２を“１”入力端に切り替え、出力選択信号ＳＥＬＤＯ＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替える。この状態ではＲＡＭ９１はバイパスされ、スキャンパスがロジック部８０、ロジック部８１の間に挿入された状態となる。その状態で、図２１に示す半導体集積回路装置と同様に、シフトモード信号ＳＭを制御してロジック部８０、ロジック部８１をスキャンテストする。
【００１３】
ＲＡＭ９１をテストする場合には、ＲＡＭテスト信号ＲＡＭＴＥＳＴ＝１に設定してセレクタ７０，７１，７２を“１”入力端に切り替え、ＳＩＤ端子からのＲＡＭテストデータをＲＡＭ９１への書き込みデータとして供給する。ここでは、１ビットのＲＡＭテストデータを３ビットの書き込みデータとして共通にＲＡＭ９１に供給している。すなわち、ＲＡＭ９１への書き込みデータとして“０００”や“１１１”を瞬時に与えることができる。
【００１４】
出力選択信号ＳＥＬＤＯにより制御されるセレクタ６０，６１，６２は、ＲＡＭ９１の出力端子ＤＯ０〜ＤＯ２からのテスト結果のデータをスキャンパスに取り込むためのものである。出力選択信号ＳＥＬＤＯ＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替え、シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、フリップフロップ３０，３１，３２にクロックを１回与えると、ＲＡＭ９１の出力端子ＤＯ０〜ＤＯ２からのテスト結果のデータをフリップフロップ３０，３１，３２に格納する。このとき、フリップフロップ３２に格納された１ビットのデータはＳＯ端子に出力される。次に出力選択信号ＳＥＬＤＯ＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替え、フリップフロップ３０，３１，３２にクロックを２回与えると、フリップフロップ３０，３１に格納された各１ビットのデータはシリアルシフト動作によりＳＯ端子から読み出され、チップ外部のテスト装置やチップ内部のセルフテスト回路により故障判定を行う。
【００１５】
【特許文献１】特開平１０−７３６４１号公報（段落番号００１８〜００３９、図１、図４）
【発明の開示】
【発明が解決しようとする課題】
【００１６】
従来の半導体集積回路装置は以上のように構成されているので、図２１に示す回路では、ＲＡＭ９１等の機能ブロック単独のテストができないという課題があった。また、図２２に示す回路では、ＲＡＭ９１等の機能ブロックのテスト回路の規模が大きくなるという課題があった。
【００１７】
この発明は上記のような課題を解決するためになされたもので、テスト回路の規模を大きくせずに、ＲＡＭ９１等の機能ブロック単独のテストが行える半導体集積回路装置を得ることを目的とする。
【課題を解決するための手段】
【００１８】
この発明に係る半導体集積回路装置は、第１のロジック部と第２のロジック部との間に接続された機能ブロックと、第１のロジック部の出力と機能ブロックの入力間の並列経路とデータを直列に伝達するための直列シフト経路を有し、第１のロジック部の出力と直列シフト経路を切り替えて機能ブロックの入力に接続するための複数の第１のセレクタとデータを格納する複数のフリップフロップにより構成されたスキャンパスとを備えたもので、スキャンパスの直列シフト経路上に接続され、機能ブロックの出力と直列シフト経路を切り替えて第２のロジック部の入力に接続するための複数の第２のセレクタを備え、スキャンパスの直列シフト経路からテストデータを第２のセレクタを介して機能ブロックにシフトインし、第２のセレクタを切り替えて機能ブロックから出力されたデータを第２のセレクタを介して出力するものである。
【発明の効果】
【００１９】
この発明は、スキャンパスの直列シフト経路上に接続され、機能ブロックの出力と直列シフト経路を切り替えて第２のロジック部の入力に接続するための複数の第２のセレクタを備え、スキャンパスの直列シフト経路からテストデータを第２のセレクタを介して機能ブロックにシフトインし、第２のセレクタを切り替えて機能ブロックから出力されたデータを第２のセレクタを介して出力することにより、テスト回路の規模を大きくせずに機能ブロック単独でテストすることができるという効果がある。
【発明を実施するための最良の形態】
【００２０】
以下、この発明の実施の一形態を説明する。
実施の形態１．
図１はこの発明の実施の形態１による半導体集積回路装置の構成を示す回路図である。図１に示すように、この半導体集積回路装置は、シフトモード信号ＳＭにより制御されるセレクタ１０，１１，１２（第１のセレクタ）、フリップフロップ（ＦＦ）３０，３１，３２、テストモード信号ＴＥＳＴ２により制御されるセレクタ６０，６１，６２（第２のセレクタ）、ロジック部８０（第１のロジック部），ロジック部８１（第２のロジック部）、機能ブロック９０により構成されている。ここで、機能ブロック９０はＲＡＭだけでなく、演算回路、インターフェース回路、メモリブロック等の各種の論理機能ブロックを含むものとする。
【００２１】
図１において、セレクタ６０，６１，６２、セレクタ１０，１１，１２及びフリップフロップ３０，３１，３２によりスキャンパスが構成されている。このスキャンパスは、ロジック部８０の出力と機能ブロック９０の入力間の並列経路と、ＳＩ（スキャンイン）端子からＳＯ（スキャンアウト）端子までのデータを直列に伝達するための直列シフト経路を備えた記憶回路であり、セレクタ６０，６１，６２はスキャンパスの直列シフト経路に接続されている。
【００２２】
図１では、従来の図２１のセレクタ５０，５１，５２の挿入位置を変更してセレクタ６０，６１，６２とし、機能ブロック９０の出力端子ＤＯ０，ＤＯ１，ＤＯ２から出力されるデータをスキャンパスに取り込めるようにしている。これにより、テスト回路規模の増加なしに機能ブロック９０単独のテストすることが可能になる。
【００２３】
次に動作について説明する。
通常動作時は、シフトモード信号ＳＭ＝０に設定してセレクタ１０，１１，１２を“０”入力端に切り替え、テストモード信号ＴＥＳＴ２＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替える。この状態では、ロジック部８０から出力されるデータが、セレクタ１０，１１，１２により選択されて、フリップフロップ３０，３１，３２を介して機能ブロック９０の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力される。ここで、フリップフロップ３０，３１，３２にはクロックが入力されているものとする。
【００２４】
また、機能ブロック９０の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのデータが、セレクタ６０，６１，６２により選択されてロジック部８１に伝達される。このように、通常動作時は、機能ブロック９０はロジック部８０，８１の間に挿入された状態となり、所定の演算やデータ処理が行われる。
【００２５】
ロジック部８０，８１のスキャンテストを行う場合は、テストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替える。この状態では機能ブロック９０はバイパスされ、スキャンパスがロジック部８０とロジック部８１の間に挿入された状態になる。その状態でシフトモード信号ＳＭを制御してロジック部８０，８１のスキャンテストを行う。
【００２６】
ロジック部８１のスキャンテストを行う場合には、シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、フリップフロップ３０，３１，３２にクロックを２回与えると、ＳＩ端子からの２ビットのテストデータが、シリアルシフト動作によりフリップフロップ３０，３１に格納される。
【００２７】
テストモード信号ＴＥＳＴ２＝１に設定されているので、ＳＩ端子の次の１ビットのテストデータはセレクタ６０により選択されてロジック部８１に入力され、フリップフロップ３０，３１に格納された各１ビットのテストデータは、それぞれセレクタ６１，６２により選択されてロジック部８１に入力され、合計３ビットのテストデータによりロジック部８１のスキャンテストが行われる。
【００２８】
ロジック部８０のスキャンテストを行う場合には、シフトモード信号ＳＭ＝０に設定してセレクタ１０，１１，１２を“０”入力端に切り替え、フリップフロップ３０，３１，３２にクロックを１回与えると、テストデータを入力したロジック部８０からのテスト結果の３ビットのデータが、フリップフロップ３０，３１，３２にそれぞれ格納される。このとき、フリップフロップ３２に格納された１ビットのデータはＳＯ端子に出力される。
【００２９】
次にシフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、フリップフロップ３０，３１，３２にクロックを２回与えると、フリップフロップ３０，３１に格納された各１ビットのデータはＳＯ端子にシフトアウトされて、合計３ビットのデータの内容が確認される。この場合、ロジック部８１に対する次のテストデータをＳＩ端子からフリップフロップ３０，３１に格納することもできる。なお、このロジック部８０とロジック部８１のスキャンテストは、入力するテストデータを変更して複数回繰り返される。
【００３０】
機能ブロック９０のテストを行う場合には、シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替える。そして、テストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替え、フリップフロップ３０，３１，３２にクロックを３回与えると、ＳＩ端子からの３ビットのテストデータがシリアルシフト動作によりフリップフロップ３０，３１，３２に格納されて、機能ブロック９０の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力される。機能ブロック９０は所望の動作を行ない、テスト結果のデータが出力端子ＤＯ０，ＤＯ１，ＤＯ２に出力される。
【００３１】
次にテストモード信号ＴＥＳＴ２＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替えて、フリップフロップ３０，３１，３２にクロックを１回与えると、機能ブロック９０の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータがフリップフロップ３０，３１，３２に格納される。このとき、フリップフロップ３２に格納された１ビットのデータはＳＯ端子に出力される。
【００３２】
次にテストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替えて、フリップフロップ３０，３１，３２にクロックを２回与えると、フリップフロップ３０，３１に格納された各１ビットのデータはＳＯ端子にシフトアウトされて、合計３ビットのデータの内容が確認される。なお、この機能ブロック９０のテストは、ＳＩ端子から入力するテストデータを変更して複数回繰り返される。
【００３３】
以上のように、この実施の形態１によれば、テスト回路の規模を大きくせずに機能ブロック９０単独でテストすることができるという効果が得られる。
【００３４】
実施の形態２．
図２はこの発明の実施の形態２による半導体集積回路装置の構成を示す回路図である。この実施の形態２では、図２に示すように、実施の形態１の図１における機能ブロック９０をＲＡＭ９１に変更し、スキャンパスの直列シフト経路にインバータ２０，２１，２２を挿入している。このインバータ２０，２１，２２により、ＲＡＭ９１に書き込むテストデータを、オール０（“０００”）やオール１（“１１１”）に１クロックサイクルで切り替えることができる。これにより、ＲＡＭ９１のテストをする場合に、“０００”を書き込んで次のサイクルで“１１１”を書き込む、又は“１１１”を書き込んで次のサイクルで“０００”を書き込むというテストを容易に行うことができる。
【００３５】
次に動作について説明する。
通常動作時は、インバータ２０，２１，２２は無関係であり、実施の形態１の機能ブロック９０がＲＡＭ９１に変更になっているだけで実施の形態１と同様である。また、ロジック部８０，８１のスキャンテスト時も、基本的には実施の形態１と同様であり、テストデータ及びテスト結果のデータがインバータ２０，２１，２２により反転又は非反転となっている点を配慮すれば良い。
【００３６】
ＲＡＭ９１のテストをする場合について説明する。
まず、ＲＡＭ９１に対して初期データの書き込みテストを行う場合について説明する。シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、テストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替える。フリップフロップ３０，３１，３２にクロックを３回与えると、シリアルシフト動作により、ＳＩ端子からの３ビットのテストデータがフリップフロップ３０，３１，３２に格納される。ただし、フリップフロップ３０，３２には、インバータ２０，２１，２２により反転されたテストデータが格納されるので、ＳＩ端子からテストデータ“０１０”をシフトインした場合には、フリップフロップ３０，３１，３２の出力のテストデータは“１１１”となり、ＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２にテストデータ“１１１”が入力される。
【００３７】
ＳＩ端子から後続のテストデータ“１０１０１０・・・”をシフトインすると、ＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力されるテストデータは、“１１１”の状態と“０００”の状態を繰り返す。所望のテストデータ“１１１”又は“０００”が設定されたときに、ＲＡＭ９１に対して書き込みを行う。このように、ＲＡＭ９１に書き込むテストデータを、オール０（“０００”）やオール１（“１１１”）に１クロックサイクルで切り替えることができる。なお、このテストデータのＲＡＭ９１への書き込みは、アドレスを変更しながら複数回繰り返される。
【００３８】
次にＲＡＭ９１の特定のアドレスに対して読み出しテストを行う場合について説明する。シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、テストモード信号ＴＥＳＴ２＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替える。ＲＡＭ９１の特定のアドレスに対して読み出しテストを行うと、テスト結果のデータがＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２に出力され、それぞれセレクタ６０，６１，６２を介してセレクタ１０，１１，１２から出力される。フリップフロップ３０，３１，３２にクロックを１回与えると、テスト結果のデータがそれぞれフリップフロップ３０，３１，３２に格納される。このとき、フリップフロップ３２に格納された１ビットのデータはＳＯ端子に出力される。
【００３９】
次にテストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替える。フリップフロップ３０，３１，３２にクロックを２回与えると、シリアルシフト動作によりフリップフロップ３０，３１に格納された各１ビットのデータがＳＯ端子にシフトアウトされ、合計３ビットのデータの内容が確認される。ただし、フリップフロップ３０に格納されたデータはインバータ２１，２２を通過し、フリップフロップ３１に格納されたデータはインバータ２２を通過してＳＯ端子にシリアル出力されるので、これを配慮してテストを行う必要がある。なお、このＲＡＭ９１の読み出しテストはアドレスを変更して複数回繰り返される。
【００４０】
また、インバータ２０を省略しても良く、その場合、ＳＩ端子からシフトインするテストデータを、上記の場合と反転させれば良い。
【００４１】
この実施の形態２を従来の図２２と比較すると、図２２のセレクタ５０，５１，５２及びセレクタ７０，７１，７２が不要となる。
【００４２】
以上のように、この実施の形態２によれば、テスト回路の規模を大きくせずにＲＡＭ９１単独でテストすることができると共に、ＲＡＭ９１に書き込むテストデータを、オール０（“０００”）やオール１（“１１１”）に１クロックサイクルで切り替えることができ、ＲＡＭ９１のテストを効率的に行うことができるという効果が得られる。
【００４３】
実施の形態３．
図３はこの発明の実施の形態３による半導体集積回路装置の構成を示す回路図である。この実施の形態３では、図３に示すように、実施の形態２の図２におけるインバータ２０，２１，２２の代わりに、スキャンパスの直列シフト経路にインバータ４０，４１，４２を挿入している。このインバータ４０，４１，４２により、ＲＡＭ９１に書き込むテストデータを、オール０（“０００”）やオール１（“１１１”）に１クロックサイクルで切り替えることができる。
【００４４】
次に動作について説明する。
通常動作時は、インバータ４０，４１，４２は無関係であり、実施の形態１の機能ブロック９０がＲＡＭ９１に変更になっているだけで実施の形態１と同様である。また、ロジック部８０，８１のスキャンテスト時も、基本的には実施の形態１と同様であり、テストデータ及びテスト結果のデータがインバータ４０，４１，４２により反転又は非反転となっている点を配慮すれば良い。
【００４５】
ＲＡＭ９１のテストをする場合について説明する。
まず、ＲＡＭ９１に対して初期データの書き込みテストを行う場合について説明する。シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、テストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替える。フリップフロップ３０，３１，３２にクロックを３回与えると、シリアルシフト動作により、ＳＩ端子からの３ビットのテストデータがフリップフロップ３０，３１，３２に格納される。ただし、フリップフロップ３０，３２には、インバータ４０，４１，４２により反転されたテストデータが格納されるので、ＳＩ端子からテストデータ“０１０”をシフトインした場合には、フリップフロップ３０，３１，３２の出力のテストデータは“１１１”となり、ＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２にテストデータ“１１１”が入力される。
【００４６】
ＳＩ端子から後続のテストデータ“１０１０１０・・・”をシフトインすると、ＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力されるテストデータは、“１１１”の状態と“０００”の状態を繰り返す。所望のテストデータ“１１１”又は“０００”が設定されたときに、ＲＡＭ９１に対して書き込みを行う。このように、ＲＡＭ１１に書き込むテストデータを、オール０（“０００”）やオール１（“１１１”）に１クロックサイクルで切り替えることができる。なお、このテストデータのＲＡＭ９１への書き込みは、アドレスを変更しながら複数回繰り返される。
【００４７】
次にＲＡＭ９１の特定のアドレスに対して読み出し及び書き込みテストを行う場合について説明する。シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、テストモード信号ＴＥＳＴ２＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替える。ＲＡＭ９１の特定のアドレス対して読み出しテストを行うと、テスト結果のデータがＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２に出力され、それぞれセレクタ６０，６１，６２を介して、インバータ４０，４１，４２により反転されてセレクタ１０，１１，１２から出力される。フリップフロップ３０，３１，３２にクロックを１回与えると、テスト結果の反転データがそれぞれフリップフロップ３０，３１，３２に格納される。このとき、フリップフロップ３２に格納された１ビットのデータはＳＯ端子に出力される。
【００４８】
次にフリップフロップ３０，３１，３２に格納されたテスト結果の反転データを、ＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力し、ＲＡＭ９１にテスト結果の反転データを書き込む。例えば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２に出力されたテスト結果のデータが“０００”の場合に、次のサイクルでＲＡＭ９１にテストデータ“１１１”を書き込む。
【００４９】
次にテストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替える。フリップフロップ３０，３１，３２にクロックを２回与えると、フリップフロップ３０，３１に格納された各１ビットのデータがＳＯ端子にシフトアウトされ、合計３ビットのデータの内容が確認される。ただし、フリップフロップ３０に格納されたデータはインバータ４１，４２を通過し、フリップフロップ３１に格納されたデータはインバータ４２を通過してＳＯ端子にシフトアウトされるので、これを配慮してテストを行う必要がある。なお、このＲＡＭ９１の読み出し及び書き込みテストはアドレスを変更して複数回繰り返される。
【００５０】
以上のように、この実施の形態３によれば、テスト回路の規模を大きくせずにＲＡＭ９１単独でテストすることができると共に、ＲＡＭ９１に書き込むテストデータを、オール０（“０００”）やオール１（“１１１”）に１クロックサイクルで切り替えることができ、ＲＡＭ９１のテストを効率的に行うことができるという効果が得られる。
【００５１】
実施の形態４．
図４はこの発明の実施の形態４による半導体集積回路装置の構成を示す回路図である。実施の形態１の図１では、フリップフロップ３０，３１，３２の出力を機能ブロック９０の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力していたが、この実施の形態４では、図４に示すように、セレクタ１０，１１，１２の出力を機能ブロック９０の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力している。
【００５２】
次に動作について説明する。
通常動作時は、シフトモード信号ＳＭ＝０に設定してセレクタ１０，１１，１２を“０”入力端に切り替え、テストモード信号ＴＥＳＴ２＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替える。ロジック部８０から出力されるデータが、セレクタ１０，１１，１２により選択されて、直接、機能ブロック９０の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力される。
【００５３】
また、機能ブロック９０の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのデータが、セレクタ６０，６１，６２により選択されてロジック部８１に伝達される。このように、通常動作時は、機能ブロック９０はロジック部８０，８１の間に挿入された状態となり、所定の演算やデータ処理が行われる。この実施の形態４では、通常動作時はフリップフロップ３０，３１，３２は無関係となり、フリップフロップ３０，３１，３２にはクロックを与えなくても良い。
【００５４】
ロジック部８０，８１のスキャンテストについては、実施の形態１の図１と実施の形態４の図４においてスキャンパスの直列シフト経路におけるフリップフロップ３０，３１，３２の位置は同じであるため、実施の形態１と同じである。
【００５５】
機能ブロック９０のテストを行う場合には、シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、テストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替える。フリップフロップ３０，３１，３２にクロックを２回与えると、シリアルシフト動作により、ＳＩ端子からの２ビットのテストデータがフリップフロップ３０，３１に格納される。
【００５６】
ＳＩ端子からの次の１ビットのテストデータは、セレクタ６０及びセレクタ１０により選択されて機能ブロック９０の入力端子ＤＩ０に入力され、フリップフロップ３０，３１に格納された各１ビットのテストデータは、それぞれセレクタ６１，６２及びセレクタ１１，１２により選択されて、機能ブロック９０の入力端子ＤＩ１，ＤＩ２に入力される。機能ブロック９０は所望の動作を行ない、テスト結果のデータを機能ブロック９０の出力端子ＤＯ０，ＤＯ１，ＤＯ２に出力する。
【００５７】
次にテストモード信号ＴＥＳＴ２＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替え、フリップフロップ３０，３１，３２にクロックを１回与えると、機能ブロック９０の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータがフリップフロップ３０，３１，３２に格納される。このとき、フリップフロップ３２に格納された１ビットのデータはＳＯ端子に出力される。
【００５８】
次にテストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替え、フリップフロップ３０，３１，３２にクロックを２回与えると、フリップフロップ３０，３１に格納された各１ビットのデータはＳＯ端子にシフトアウトされて、合計３ビットのデータの内容が確認される。なお、この機能ブロック９０のテストは、ＳＩ端子から入力するテストデータを変更して複数回繰り返される。
【００５９】
以上のように、この実施の形態４によれば、テスト回路の規模を大きくせずに機能ブロック９０単独でテストすることができると共に、通常動作時は、フリップフロップ３０，３１，３２にはクロックを与えなくても済むという効果が得られる。
【００６０】
実施の形態５．
図５はこの発明の実施の形態５による半導体集積回路装置の構成を示す回路図である。実施の形態２の図２では、フリップフロップ３０，３１，３２の出力をＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力していたが、この実施の形態５では、図５に示すように、セレクタ１０，１１，１２の出力をＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力している。
【００６１】
次に動作について説明する。
通常動作時は、インバータ２０，２１，２２及びフリップフロップ３０，３１，３２は無関係で、実施の形態４の機能ブロック９０がＲＡＭ９１に変更になっているだけで実施の形態４と同様であり、フリップフロップ３０，３１，３２にはクロックを与えなくても良い。また、ロジック部８０，８１のスキャンテスト時も、基本的には実施の形態４と同様であり、インバータ２０，２１，２２によりテストデータ及びテスト結果のデータが反転又は非反転となっている点を配慮すれば良い。
【００６２】
ＲＡＭ９１のテストをする場合について説明する。まず、ＲＡＭ９１に対して初期データの書き込みテストを行う場合について説明する。シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、テストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替える。フリップフロップ３０，３１，３２にクロックを２回与えると、シリアルシフト動作により、ＳＩ端子からの２ビットのテストデータがフリップフロップ３０，３１に格納される。
【００６３】
ただし、フリップフロップ３０には反転されたテストデータが格納されるので、ＳＩ端子から“１０”をシフトインした場合には、フリップフロップ３０，３１の出力は“１１”になる。フリップフロップ３０の出力はインバータ２１を介してＲＡＭ９１の入力端子ＤＩ１に入力され、フリップフロップ３１の出力はインバータ２２を介してＲＡＭ９１の入力端子ＤＩ２に入力され、ＲＡＭ９１の入力端子ＤＩ１，ＤＩ２に入力されるテストデータは“００”になる。また、ＳＩ端子から後続のテストデータ“１”を与えると、インバータ２０を介してＲＡＭ９１の入力端子ＤＩ０に入力され、ＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力されるテストデータは“０００”になる。
【００６４】
ＳＩ端子から後続のテストデータ“１０１０１０・・・”（先頭の“１”は前述のテストデータ“１”）をシフトインすると、ＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力されるテストデータは“０００”の状態と、“１１１”の状態を交互に繰り返す。所望のデータ“０００”又は“１１１”が入力されたときに、ＲＡＭ９１に対して書き込みを行う。このように、ＲＡＭ９１に書き込むテストデータを、オール０（“０００”）やオール１（“１１１”）に１クロックサイクルで切り替えることができる。なお、このテストデータのＲＡＭ９１への書き込みは、アドレスを変更しながら複数回繰り返される。
【００６５】
ＲＡＭ９１の特定のアドレスに対して読み出しテストを行う場合については、実施の形態２と同じである。また、実施の形態２と同様にインバータ２０を省略しても良い。
【００６６】
以上のように、この実施の形態５によれば、テスト回路の規模を大きくせずにＲＡＭ９１単独でテストすることができ、ＲＡＭ９１に書き込むテストデータを、オール０（“０００”）やオール１（“１１１”）に１クロックサイクルで切り替えることができ、ＲＡＭ９１のテストを効率的に行うことができると共に、通常動作時は、フリップフロップ３０，３１，３２にはクロックを与えなくても済むという効果が得られる。
【００６７】
実施の形態６．
図６はこの発明の実施の形態６による半導体集積回路装置の構成を示す回路図である。実施の形態３の図３では、フリップフロップ３０，３１，３２の出力をＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力していたが、この実施の形態６では、図６に示すように、セレクタ１０，１１，１２の出力をＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力している。
【００６８】
次に動作について説明する。
通常動作時は、インバータ４０，４１，４２及びフリップフロップ３０，３１，３２は無関係で、実施の形態４の機能ブロック９０がＲＡＭ９１に変更になっているだけで実施の形態４と同様であり、フリップフロップ３０，３１，３２にはクロックを与えなくても良い。また、ロジック部８０，８１のスキャンテスト時も、基本的には実施の形態４と同様であり、インバータ４０，４１，４２によりテストデータ及びテスト結果のデータが反転又は非反転となっている点を配慮すれば良い。
【００６９】
ＲＡＭ９１のテストをする場合について説明する。ＲＡＭ９１に対して初期データの書き込みテストを行う場合については、インバータ２０，２１，２２がインバータ４０，４１，４２になっているだけで実施の形態５と同じである。
【００７０】
次にＲＡＭ９１の特定のアドレスに対して読み出し及び書き込みテストを行う場合について説明する。シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、テストモード信号ＴＥＳＴ２＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替える。ＲＡＭ９１の特定のアドレスに対して読み出しテストを行うと、テスト結果のデータがＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２に出力され、それぞれセレクタ６０，６１，６２を介してインバータ４０，４１，４２により反転されてセレクタ１０，１１，１２から出力される。
【００７１】
次にセレクタ１０，１１，１２から出力されるテスト結果の反転データを、ＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力し、ＲＡＭ９１にテスト結果の反転データを書き込む。例えば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２に出力されたテスト結果のデータが“０００”の場合に、次のサイクルでＲＡＭ９１にテストデータ“１１１”を書き込む。
【００７２】
次にフリップフロップ３０，３１，３２にクロックを１回与えると、セレクタ１０，１１，１２から出力されるテスト結果の反転データがそれぞれフリップフロップ３０，３１，３２に格納される。このとき、フリップフロップ３２に格納された１ビットのデータはＳＯ端子に出力される。
【００７３】
次にＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替える。フリップフロップ３０，３１，３２にクロックを２回与えると、フリップフロップ３０，３１に格納された各１ビットのデータがＳＯ端子にシフトアウトされ、合計３ビットのデータの内容が確認される。ただし、フリップフロップ３０に格納されたデータはインバータ４１，４２を通過し、フリップフロップ３１に格納されたデータはインバータ４２を通過してＳＯ端子にシフトアウトされるので、これを配慮してテストを行う必要がある。なお、このＲＡＭ９１の読み出し及び書き込みテストはアドレスを変更して複数回繰り返される。
【００７４】
以上のように、この実施の形態６によれば、テスト回路の規模を大きくせずにＲＡＭ９１単独でテストすることができ、ＲＡＭ９１に書き込むテストデータを、オール０（“０００”）やオール１（“１１１”）に１クロックサイクルで切り替えることができ、ＲＡＭ９１のテストを効率的に行うことができると共に、通常動作時は、フリップフロップ３０，３１，３２にはクロックを与えなくても済むという効果が得られる。
【００７５】
実施の形態７．
図７はこの発明の実施の形態７による半導体集積回路装置の構成を示す回路図である。この実施の形態７では、図７に示すように、実施の形態６の図６に、ＳＯ端子へ出力されるデータをＳＩ端子側にフィードバックするセレクタ１００（第３のセレクタ）を追加している。このセレクタ１００はループイネーブル信号ＬＯＯＰＥＮにより制御される。実施の形態２の図２、実施の形態３の図３、実施の形態５の図５にも、同様にセレクタ１００を追加可能である。
【００７６】
次に動作について説明する。
通常動作時は、シフトモード信号ＳＭ＝０に設定してセレクタ１０，１１，１２を“０”入力端に切り替え、テストモード信号ＴＥＳＴ２＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替える。通常動作時は、インバータ４０，４１，４２及びフリップフロップ３０，３１，３２は無関係で、実施の形態４の機能ブロック９０がＲＡＭ９１に変更になっているだけで実施の形態４と同様であり、フリップフロップ３０，３１，３２にはクロックを与えなくても良い。
【００７７】
また、ロジック部８０，８１のスキャンテスト時は、ループイネーブル信号ＬＯＯＰＥＮ＝０に設定してセレクタ１００を“０”入力端に切り替え、テストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替える。このロジック部８０，８１のスキャンテストも、基本的には実施の形態４と同様であり、インバータ４０，４１，４２によりテストデータ及びテスト結果のデータが反転又は非反転となっている点を配慮すれば良い。
【００７８】
ＲＡＭ９１のテストをする場合について説明する。
まず、ＲＡＭ９１に対して初期データの書き込みテストを行う場合について説明する。ループイネーブル信号ＬＯＯＰＥＮ＝０に設定してセレクタ１００を“０”入力端に切り替え、シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、テストモード信号ＴＥＳＴ２＝１に設定して、セレクタ６０，６１，６２を“１”入力端に切り替える。
【００７９】
フリップフロップ３０，３１，３２にクロックを３回与えると、シリアルシフト動作により、ＳＩ端子からの３ビットのテストデータがフリップフロップ３０，３１，３２に格納される。ただし、フリップフロップ３０，３２には反転されたテストデータが格納されるので、ＳＩ端子から“０１０”をシフトインした場合には、フリップフロップ３０，３１，３２の出力は“１１１”になる。この状態では、ＳＩ端子の次のテストデータがインバータ４０により反転されてＲＡＭ９１の入力端子ＤＩ０に伝達され、フリップフロップ３０の出力のデータ“１”がインバータ４１により反転されてＲＡＭ９１の入力端子ＤＩ１に伝達され、フリップフロップ３１の出力のデータ“１”がインバータ４２により反転されてＲＡＭ９１の入力端子ＤＩ２に伝達される。
【００８０】
次にループイネーブル信号ＬＯＯＰＥＮ＝１に設定してセレクタ１００を“１”入力端に切り替えると、フリップフロップ３２の出力のデータ“１”がインバータ４０を介してＲＡＭ９１の入力端子ＤＩ０に伝達され、ＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２のデータは“０００”になる。ループイネーブル信号ＬＯＯＰＥＮ＝１の状態で、フリップフロップ３０，３１，３２にクロックを与える毎に、インバータ４０，４１，４２によりＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２のデータは変化し、“０００”の状態と“１１１”の状態を繰り返す。所望のテストデータ“０００”又は“１１１”が設定されたときにＲＡＭ９１に対して書き込みを行う。このテストデータのＲＡＭ９１の書き込みは、アドレスを変更しながら複数回繰り返される。
【００８１】
ＲＡＭ９１の特定のアドレスに対して読み出し及び書き込みテストを行う場合については、実施の形態６と同じである。この場合、ループイネーブル信号ＬＯＯＰＥＮの設定はどちらでも良い。
【００８２】
なお、この実施の形態７では、ＲＡＭ９１に対して初期データの書き込みテストを行う場合に、フリップフロップ３０，３１，３２の出力が“１１１”になるように、ＳＩ端子からテストデータをシフトインしているが、フリップフロップ３０，３１，３２の出力が“０００”になるように、ＳＩ端子からテストデータをシフトインしても良い。
【００８３】
以上のように、この実施の形態７によれば、テスト回路の規模を大きくせずにＲＡＭ９１単独でテストすることができ、ＲＡＭ９１に書き込むテストデータを、オール０（“０００”）やオール１（“１１１”）に１クロックサイクルで切り替えることができ、ＲＡＭ９１のテストを効率的に行うことができると共に、通常動作時は、フリップフロップ３０，３１，３２にはクロックを与えなくても済むという効果が得られる。
【００８４】
また、この実施の形態７によれば、ループイネーブル信号ＬＯＯＰＥＮ＝０に設定し、ＳＩ端子からフリップフロップ３０，３１，３２に“１１１”又は“０００”になるようなテストデータをシフトインし、その後、ループイネーブル信号ＬＯＯＰＥＮ＝１に切り替えておけば、フリップフロップ３０，３１，３２にクロックを与える毎に、ＲＡＭ９１の入力端子ＤＩ０〜ＤＩ２へのデータは“１１１”と“０００”の状態を交互に繰り返すので、ＳＩ端子から新たにテストデータを与える必要はなく、ＲＡＭ９１のテストを容易にすることができるという効果が得られる。
【００８５】
実施の形態８．
図８はこの発明の実施の形態８による半導体集積回路装置の構成を示す回路図である。この実施の形態８では、図８に示すように、実施の形態７の図７にＲＡＭ９１から出力されるテスト結果のデータを短時間でモニタするためのゲート回路１１０を追加している。このゲート回路１１０はセレクタ６０，６１，６２の出力のデータが同一値であることを検出するものである。図８ではゲート回路１１０としてＡＮＤゲートを使用しているが、ＮＡＮＤゲート、ＯＲゲート、ＮＯＲゲートのいずれかを使用しても良い。
【００８６】
次に動作について説明する。
通常動作時及びロジック部８０，８１のスキャンテスト時の動作は実施の形態７と同じである。また、ＲＡＭ９１のテストでＲＡＭ９１に対して初期データの書き込みテストを行う場合の動作も実施の形態７と同じである。
【００８７】
次にＲＡＭ９１の特定のアドレスに対して読み出し及び書き込みテストを行う場合について説明する。ループイネーブル信号ＬＯＯＰＥＮ＝１に設定してセレクタ１００を“１”入力端に切り替え、シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、テストモード信号ＴＥＳＴ２＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替える。
【００８８】
ＲＡＭ９１の特定のアドレスに対して読み出しテストを行うと、テスト結果のデータがＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２に出力され、それぞれセレクタ６０，６１，６２を介してゲート回路１１０の入力に伝えられる。このとき、テスト結果のデータが“１１１”であれば、ゲート回路１１０から出力されるモニタ信号ＭＯＮＩは“１”になり、テスト結果のデータが“１１１”以外であれば、モニタ信号ＭＯＮＩは“０”になる。従って、モニタ信号ＭＯＮＩをチェックすれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“１１１”か否かを、ＳＯ端子からシフトアウトしなくても判定することができる。
【００８９】
また、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータは、インバータ４０，４１，４２により反転されてＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２に与えられる。次にこのテスト結果の反転データを、ＲＡＭ９１に書き込むと同時に、フリップフロップ３０，３１，３２にクロックを与えると、フリップフロップ３０，３１，３２がこのテスト結果の反転データを格納する。
【００９０】
次にテストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替えると、フリップフロップ３０，３１，３２に格納されているテスト結果の反転データが、それぞれセレクタ６０，６１，６２を介してゲート回路１１０の入力に伝えられる。テスト結果のデータが“０００”であれば、ゲート回路１１０の入力は“１１１”となり、ゲート回路１１０から出力されるモニタ信号ＭＯＮＩは“１”になり、テスト結果のデータが“０００”以外であれば、モニタ信号ＭＯＮＩは“０”になる。従って、モニタ信号ＭＯＮＩをチェックすることにより、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２から出力されるテスト結果のデータが“０００”か否かを、ＳＯ端子からシフトアウトしなくても判定することができる。なお、このＲＡＭ９１の読み出し及び書き込みテストはアドレスを変更して複数回繰り返される。
【００９１】
以上のように、この実施の形態８によれば、テスト回路の規模を大きくせずにＲＡＭ９１単独でテストすることができ、ＲＡＭ９１に書き込むテストデータを、オール０（“０００”）やオール１（“１１１”）に１クロックサイクルで切り替えることができ、ＲＡＭ９１のテストを効率的に行うことができると共に、通常動作時は、フリップフロップ３０，３１，３２にはクロックを与えなくても済むという効果が得られる。
【００９２】
また、この実施の形態８によれば、ループイネーブル信号ＬＯＯＰＥＮ＝０に設定し、ＳＩ端子からフリップフロップ３０，３１，３２に“１１１”又は“０００”になるようなテストデータをシフトインし、その後、ループイネーブル信号ＬＯＯＰＥＮ＝１に切り替えておけば、フリップフロップ３０，３１，３２にクロックを与える毎に、ＲＡＭ９１の入力端子ＤＩ０〜ＤＩ２は“１１１”と“０００”の状態を交互に繰り返すので、ＳＩ端子から新たにテストデータを与える必要はなく、ＲＡＭ９１のテストを容易にすることができるという効果が得られる。
【００９３】
さらに、この実施の形態８によれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“１１１”であるかのテストと、“０００”であるかのテストを、ＳＯ端子からシフトアウトしなくてもモニタ信号ＭＯＮＩのチェックだけで行えるので、ＲＡＭ９１のテストを容易にすることができるという効果が得られる。
【００９４】
実施の形態９．
図９はこの発明の実施の形態９による半導体集積回路装置の構成を示す回路図である。この実施の形態９では、図９に示すように、実施の形態８の図８におけるゲート回路１１０を、セレクタ６０，６１，６２の出力側よりインバータ４０，４１，４２の出力側にゲート回路１１１として移動している。このゲート回路１１１はインバータ４０，４１，４２の出力のデータが同一値であることを検出するものである。図９ではゲート回路１１１としてＡＮＤゲートを使用しているが、ＮＡＮＤゲート、ＯＲゲート、ＮＯＲゲートのいずれかを使用しても良い。
【００９５】
次に動作について説明する。
通常動作時及びロジック部８０，８１のスキャンテスト時の動作は実施の形態７と同じである。また、ＲＡＭ９１のテストでＲＡＭ９１に対して初期データの書き込みテストを行う場合の動作も実施の形態７と同じである。
【００９６】
次にＲＡＭ９１の特定のアドレスに対して読み出し及び書き込みテストを行う場合について説明する。ループイネーブル信号ＬＯＯＰＥＮ＝１に設定してセレクタ１００を“１”入力端に切り替え、シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、テストモード信号ＴＥＳＴ２＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替える。
【００９７】
ＲＡＭ９１の特定のアドレスに対して読み出しテストを行うと、テスト結果のデータがＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２に出力され、それぞれセレクタ６０，６１，６２を介してインバータ４０，４１，４２により反転されてゲート回路１１１の入力に伝えられる。このとき、テスト結果のデータが“０００”であれば、ゲート回路１１１から出力されるモニタ信号ＭＯＮＩは“１”になり、テスト結果のデータが“０００”以外であれば、モニタ信号ＭＯＮＩは“０”になる。従って、モニタ信号ＭＯＮＩをチェックすれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“０００”か否かを、ＳＯ端子からシフトアウトしなくても判定することができる。
【００９８】
また、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータは、インバータ４０，４１，４２により反転されてＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２に与えられる。次にこのテスト結果の反転データを、ＲＡＭ９１に書き込むと同時に、フリップフロップ３０，３１，３２にクロックを１回与えると、フリップフロップ３０，３１，３２がこのテスト結果の反転データを格納する。
【００９９】
次にテストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替えると、フリップフロップ３０，３１，３２に格納されたテスト結果の反転データが、それぞれセレクタ６０，６１，６２に伝えられる。セレクタ６０，６１，６２の出力のテスト結果の反転データは、インバータ４０，４１，４２によりさらに反転されてゲート回路１１１の入力に伝えられる。テスト結果のデータが“１１１”であれば、ゲート回路１１１の入力は“１１１”となり、ゲート回路１１１から出力されるモニタ信号ＭＯＮＩは“１”になり、テスト結果のデータが“１１１”以外であれば、モニタ信号ＭＯＮＩは“０”になる。従って、モニタ信号ＭＯＮＩをチェックすることにより、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“１１１”か否かを、ＳＯ端子からシフトアウトしなくても判定することができる。なお、ＲＡＭ９１の読み出し及び書き込みテストはアドレスを変更して複数回繰り返される。
【０１００】
以上のように、この実施の形態９によれば、テスト回路の規模を大きくせずにＲＡＭ９１単独でテストすることができ、ＲＡＭ９１に書き込むテストデータを、オール０（“０００”）やオール１（“１１１”）に１クロックサイクルで切り替えることができ、ＲＡＭ９１のテストを効率的に行うことができると共に、通常動作時は、フリップフロップ３０，３１，３２にはクロックを与えなくても済むという効果が得られる。
【０１０１】
また、この実施の形態９によれば、ループイネーブル信号ＬＯＯＰＥＮ＝０に設定し、ＳＩ端子からフリップフロップ３０，３１，３２に“１１１”又は“０００”になるようなテストデータをシフトインし、その後、ループイネーブル信号ＬＯＯＰＥＮ＝１に切り替えておけば、フリップフロップ３０，３１，３２にクロックを与える毎に、ＲＡＭ９１の入力端子ＤＩ０〜ＤＩ２は“１１１”と“０００”の状態を交互に繰り返すので、ＳＩ端子から新たにテストデータを与える必要はなく、ＲＡＭ９１のテストを容易にすることができるという効果が得られる。
【０１０２】
さらに、この実施の形態９によれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“０００”であるかのテストと、“１１１”であるかのテストを、ＳＯ端子からシフトアウトしなくてもモニタ信号ＭＯＮＩのチェックだけで行えるので、ＲＡＭ９１のテストを容易にすることができるという効果が得られる。
【０１０３】
実施の形態１０．
図１０はこの発明の実施の形態１０による半導体集積回路装置の構成を示す回路図である。この実施の形態１０では、図１０に示すように、実施の形態８の図８におけるゲート回路１１０を、セレクタ６０，６１，６２の出力側よりセレクタ１０，１１，１２の出力側にゲート回路１１２として移動している。このゲート回路１１２はセレクタ１０，１１，１２の出力のデータが同一値であることを検出するものである。図１０ではゲート回路１１２としてＡＮＤゲートを使用しているが、ＮＡＮＤゲート、ＯＲゲート、ＮＯＲゲートのいずれかを使用しても良い。
【０１０４】
次に動作について説明する。
通常動作時及びロジック部８０，８１のスキャンテスト時の動作は実施の形態７と同じである。また、ＲＡＭ９１のテストでＲＡＭ９１に対して初期データの書き込みテストを行う場合の動作も実施の形態７と同じである。さらに、ＲＡＭ９１の特定のアドレスに対して読み出し及び書き込みテストを行う場合については、ゲート回路１１２が、セレクタ１０，１１，１２から出力されるデータにより、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“０００”であるか、“１１１”であるかを判定していることを除いて、実施の形態９と同じである。
【０１０５】
以上のように、この実施の形態１０によれば実施の形態９と同様の効果が得られる。
【０１０６】
実施の形態１１．
図１１はこの発明の実施の形態１１による半導体集積回路装置の構成を示す回路図である。この実施の形態１１では、図１１に示すように、実施の形態８の図８におけるゲート回路１１０を、セレクタ６０，６１，６２の出力側よりフリップフロップ３０，３１，３２の出力側にゲート回路１１３として移動している。このゲート回路１１３はフリップフロップ３０，３１，３２の出力のデータが同一値であることを検出するものである。図１１ではゲート回路１１３としてＡＮＤゲートを使用しているが、ＮＡＮＤゲート、ＯＲゲート、ＮＯＲゲートのいずれかを使用しても良い。
【０１０７】
次に動作について説明する。
通常動作時及びロジック部８０，８１のスキャンテスト時の動作は実施の形態７と同じである。また、ＲＡＭ９１のテストでＲＡＭ９１に対して初期データの書き込みテストを行う場合の動作も実施の形態７と同じである。
【０１０８】
次にＲＡＭ９１の特定のアドレスに対して読み出し及び書き込みテストを行う場合について説明する。ループイネーブル信号ＬＯＯＰＥＮ＝１に設定してセレクタ１００を“１”入力端に切り替え、シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、テストモード信号ＴＥＳＴ２＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替える。
【０１０９】
ＲＡＭ９１の特定のアドレスに対して読み出しテストを行うと、テスト結果のデータがＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２に出力され、それぞれセレクタ６０，６１，６２及びセレクタ１０，１１，１２を介して、インバータ４０，４１，４２により反転されて、テスト結果の反転データがフリップフロップ３０，３１，３２の入力及びＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２に伝えられる。
【０１１０】
次にテスト結果の反転データをＲＡＭ９１に書き込むと同時に、フリップフロップ３０，３１，３２にクロックを１回与えると、フリップフロップ３０，３１，３２はこのテスト結果の反転データを格納し、テスト結果の反転データはゲート回路１１３の入力に伝えられる。
【０１１１】
このとき、テスト結果のデータが“０００”であれば、フリップフロップ３０，３１，３２の出力データは“１１１”であり、ゲート回路１１３から出力されるモニタ信号ＭＯＮＩは“１”になり、テスト結果のデータが“０００”以外であれば、モニタ信号ＭＯＮＩは“０”になる。従って、モニタ信号ＭＯＮＩをチェックすれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“０００”か否かを、ＳＯ端子からシフトアウトしなくても判定することができる。
【０１１２】
次にテストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替えると、フリップフロップ３０，３１，３２に格納されているテスト結果の反転データが、それぞれセレクタ６０，６１，６２に伝えられる。セレクタ６０，６１，６２の出力のテスト結果の反転データは、インバータ４０，４１，４２によりさらに反転されてテスト結果のデータとなり、セレクタ１０，１１，１２を介してフリップフロップ３０，３１，３２の入力に伝えられる。次にフリップフロップ３０，３１，３２にクロックを１回与えると、フリップフロップ３０，３１，３２がテスト結果のデータを格納し、ゲート回路１１３の入力に伝えられる。
【０１１３】
テスト結果のデータが“１１１”であれば、ゲート回路１１３の入力は“１１１”となり、ゲート回路１１１から出力されるモニタ信号ＭＯＮＩは“１”になり、テスト結果のデータが“１１１”以外であれば、モニタ信号ＭＯＮＩは“０”になる。このように、モニタ信号ＭＯＮＩをチェックすることにより、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“１１１”か否かを、ＳＯ端子からシフトアウトしなくても判定することができる。なお、ＲＡＭ９１の読み出し及び書き込みテストはアドレスを変更して複数回繰り返される。
【０１１４】
以上のように、この実施の形態１１によれば実施の形態９と同様の効果が得られる。
【０１１５】
実施の形態１２．
図１２はこの発明の実施の形態１２による半導体集積回路装置の構成を示す回路図である。実施の形態４の図４では、フリップフロップ３０，３１，３２の入力をセレクタ１０，１１，１２の出力に接続していたが、この実施の形態１２では、図１２に示すように、フリップフロップ３０，３１，３２の入力をセレクタ６０，６１，６２の出力に接続し、フリップフロップ３０，３１，３２の出力をロジック部８１に接続し、セレクタ１２の出力からＳＯ端子の間にフリップフロップ３３が追加されている。これにより、通常動作時では回路規模の増加なしで、フリップフロップ３０，３１，３２を通常動作時の機能ブロック９０の出力レジスタとして利用することができる。
【０１１６】
次に動作について説明する。
通常動作時は、シフトモード信号ＳＭ＝０に設定してセレクタ１０，１１，１２を“０”入力端に切り替え、テストモード信号ＴＥＳＴ２＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替える。ロジック部８０から出力されるデータが、セレクタ１０，１１，１２により選択されて、直接、機能ブロック９０の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力される。
【０１１７】
機能ブロック９０の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのデータは、セレクタ６０，６１，６２により選択されてフリップフロップ３０，３１，３２の入力に伝達され、フリップフロップ３０，３１，３２の出力はロジック部８１に接続されているので、通常動作時は、機能ブロック９０とフリップフロップ３０，３１，３２はロジック部８０，８１の間に挿入された状態となり、フリップフロップ３０，３１，３２にクロックを与えることで所定の演算やデータ処理が行われる。このとき、フリップフロップ３０，３１，３２は機能ブロック９０の出力レジスタとして動作する。
【０１１８】
ロジック部８０，８１のスキャンテストを行う場合は、テストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替える。この状態では機能ブロック９０はバイパスされ、スキャンパスがロジック部８０とロジック部８１の間に挿入された状態になる。その状態でシフトモード信号ＳＭを制御してロジック部８０，８１のスキャンテストを行う。
【０１１９】
ロジック部８１のスキャンテストを行う場合には、シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、フリップフロップ３０，３１，３２にクロックを３回与える（フリップフロップ３３に与えても良い）と、ＳＩ端子からの３ビットのテストデータが、シリアルシフト動作によりフリップフロップ３０，３１，３２に格納される。
【０１２０】
このフリップフロップ３０，３１，３２が出力する３ビットのテストデータがロジック部８１に入力され、ロジック部８１が所望の動作を行う。ロジック部８１の出力は図示されていない他のスキャンパスやＬＳＩの出力バッファに接続されており、従来の方法でテストされる。
【０１２１】
ロジック部８０のスキャンテストを行う場合について説明する。ロジック部８０の入力は図示されていない他のスキャンパスのフリップフロップ出力やＬＳＩの入力バッファに接続されており、従来の方法でテストテストデータが与えられる。このテストデータによりロジック部８０が所望の動作を行い、ロジック部８０のテスト結果の出力はセレクタ１０，１１，１２の“０”入力端に伝達される。シフトモード信号ＳＭ＝０に設定してセレクタ１０，１１，１２を“０”入力端に切り替え、フリップフロップ３１，３２，３３にクロックを１回与える（フリップフロップ３０に与えても良い）と、ロジック部８０からのテスト結果の３ビットのデータがフリップフロップ３１，３２，３３にそれぞれ格納される。このとき、フリップフロップ３３に格納された１ビットのデータはＳＯ端子に出力される。
【０１２２】
次にシフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、フリップフロップ３１，３２，３３にクロックを２回与える（フリップフロップ３０に与えても良い）と、フリップフロップ３１，３２に格納された各１ビットのデータはＳＯ端子にシフトアウトされて、合計３ビットのデータの内容が確認される。この場合、ロジック部８１に対する次のテストデータをＳＩ端子からフリップフロップ３０，３１に格納することもできる。なお、このロジック部８０とロジック部８１のスキャンテストは、入力するテストデータを変更して複数回繰り返される。
【０１２３】
機能ブロック９０のテストを行う場合には、シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、テストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替える。フリップフロップ３０，３１，３２にクロックを３回与える（フリップフロップ３３に与えても良い）と、シリアルシフト動作により、ＳＩ端子からの３ビットのテストデータがフリップフロップ３０，３１，３２に格納される。
【０１２４】
このフリップフロップ３０，３１，３２に格納された３ビットのテストデータがセレクタ１０，１１，１２により選択されて、機能ブロック９０の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力される。機能ブロック９０は所望の動作を行ない（必要であればクロックを与える）、テスト結果のデータを機能ブロック９０の出力端子ＤＯ０，ＤＯ１，ＤＯ２に出力する。
【０１２５】
次にテストモード信号ＴＥＳＴ２＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替え、フリップフロップ３０，３１，３２にクロックを１回与えると、機能ブロック９０の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータがフリップフロップ３０，３１，３２に格納される。
【０１２６】
次にテストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替え、フリップフロップ３１，３２，３３にクロックを３回与える（フリップフロップ３０に与えても良い）と、フリップフロップ３０，３１，３２に格納された各１ビットのデータはＳＯ端子にシフトアウトされて、合計３ビットのデータの内容が確認される。なお、この機能ブロック９０のテストは、ＳＩ端子から入力するテストデータを変更して複数回繰り返される。
【０１２７】
以上のように、この実施の形態１２によれば、テスト回路の規模を大きくせずに機能ブロック９０単独でテストすることができると共に、通常動作時では回路規模の増加なしで、フリップフロップ３０，３１，３２を通常動作時のＲＡＭ９１の出力レジスタとして利用することができるという効果が得られる。
【０１２８】
実施の形態１３．
図１３はこの発明の実施の形態１３による半導体集積回路装置の構成を示す回路図である。実施の形態８の図８では、フリップフロップ３０，３１，３２の入力をセレクタ１０，１１，１２の出力に接続していたが、この実施の形態１３では、図１３に示すように、フリップフロップ３０，３１，３２の入力をセレクタ６０，６１，６２の出力に接続し、フリップフロップ３０，３１，３２の出力をロジック部８１に接続し、セレクタ１２の出力からＳＯ端子の間にフリップフロップ３３が追加されている。これにより、通常動作時では回路規模の増加なしで、フリップフロップ３０，３１，３２を通常動作時のＲＡＭ９１の出力レジスタとして利用することができる。図１３ではゲート回路１１０としてＡＮＤゲートを使用しているが、ＮＡＮＤゲート、ＯＲゲート、ＮＯＲゲートのいずれかを使用しても良い。
【０１２９】
次に動作について説明する。
通常動作時は、シフトモード信号ＳＭ＝０に設定してセレクタ１０，１１，１２を“０”入力端に切り替え、テストモード信号ＴＥＳＴ２＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替える。ロジック部８０から出力されるデータが、セレクタ１０，１１，１２により選択されて、直接、ＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２に入力される。
【０１３０】
ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのデータは、セレクタ６０，６１，６２により選択されてフリップフロップ３０，３１，３２の入力に伝達され、フリップフロップ３０，３１，３２の出力をロジック部８１に接続しているので、通常動作時は、ＲＡＭ９１とフリップフロップ３０，３１，３２はロジック部８０，８１の間に挿入された状態となり、フリップフロップ３０，３１，３２にクロックを与えることで所定の演算やデータ処理が行われる。このとき、フリップフロップ３０，３１，３２はＲＡＭ９１の出力レジスタとして動作する。
【０１３１】
また、ロジック部８０，８１のスキャンテスト時は、ループイネーブル信号ＬＯＯＰＥＮ＝０に設定してセレクタ１００を“０”入力端に切り替え、テストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替える。この状態ではＲＡＭ９１はバイパスされ、スキャンパスがロジック部８０とロジック部８１の間に挿入された状態になる。その状態でシフトモード信号ＳＭを制御してロジック部８０，８１のスキャンテストを行う。
【０１３２】
ロジック部８１のスキャンテストを行う場合には、シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、フリップフロップ３０，３１，３２にクロックを３回与える（フリップフロップ３３に与えても良い）と、ＳＩ端子からの３ビットのテストデータが、シリアルシフト動作によりフリップフロップ３０，３１，３２に格納される。このとき、直列シフト経路に挿入されたインバータ４０，４１，４２に配慮して適切なテストデータを与える必要がある。
【０１３３】
このフリップフロップ３０，３１，３２が出力する３ビットのテストデータがロジック部８１に入力され、ロジック部８１が所望の動作を行う。ロジック部８１の出力は図示されていない他のスキャンパスやＬＳＩの出力バッファに接続されており、従来の方法でテストされる。
【０１３４】
ロジック部８０のスキャンテストを行う場合について説明する。ロジック部８０の入力は図示されていない他のスキャンパスのフリップフロップ出力やＬＳＩの入力バッファに接続されており、従来の方法でテストテストデータが与えられる。このテストデータによりロジック部８０が所望の動作を行い、ロジック部８０のテスト結果の出力はセレクタ１０，１１，１２の“０”入力端に伝達される。シフトモード信号ＳＭ＝０に設定してセレクタ１０，１１，１２を“０”入力端に切り替え、フリップフロップ３１，３２，３３にクロックを１回与える（フリップフロップ３０に与えても良い）と、ロジック部８０からのテスト結果の３ビットのデータがフリップフロップ３１，３２，３３にそれぞれ格納される。このとき、フリップフロップ３３に格納された１ビットのデータはＳＯ端子に出力される。
【０１３５】
次にシフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、フリップフロップ３１，３２，３３にクロックを２回与える（フリップフロップ３０に与えても良い）と、フリップフロップ３１，３２に格納された各１ビットのデータはＳＯ端子にシフトアウトされて、合計３ビットのデータの内容が確認される。この場合、ロジック部８１に対する次のテストデータをＳＩ端子からフリップフロップ３０，３１に格納することもできる。また、このとき、直列シフト経路に挿入されたインバータ４０，４１，４２に配慮して適切なテストデータを与える必要がある。なお、このロジック部８０とロジック部８１のスキャンテストは、入力するテストデータを変更して複数回繰り返される。
【０１３６】
ＲＡＭ９１のテストをする場合について説明する。
まず、ＲＡＭ９１に対して初期データの書き込みテストを行う場合について説明する。ループイネーブル信号ＬＯＯＰＥＮ＝０に設定してセレクタ１００を“０”入力端に切り替え、シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、テストモード信号ＴＥＳＴ２＝１に設定して、セレクタ６０，６１，６２を“１”入力端に切り替える。
【０１３７】
フリップフロップ３０，３１，３２にクロックを３回与えると、シリアルシフト動作により、ＳＩ端子からの３ビットのテストデータがフリップフロップ３０，３１，３２に格納される。ただし、フリップフロップ３１には反転されたテストデータが格納されるので、ＳＩ端子から“１０１”をシフトインした場合には、フリップフロップ３０，３１，３２の出力は“１１１”になる。フリップフロップ３０，３１，３２の出力はインバータ４０，４１，４２により反転され、セレクタ１０，１１，１２により選択されて、データ“０００”がＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２に伝達される。
【０１３８】
次にループイネーブル信号ＬＯＯＰＥＮ＝１に設定してセレクタ１００を“１”入力端に切り替えて、フリップフロップ３０，３１，３２にクロックを与える毎に、インバータ４０，４１，４２によりＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２のデータは変化し、“０００”の状態と“１１１”の状態を繰り返す。所望のテストデータ“０００”又は“１１１”が設定されたときにＲＡＭ９１に対して書き込みを行う。このテストデータのＲＡＭ９１の書き込みは、アドレスを変更しながら複数回繰り返される。
【０１３９】
次にＲＡＭ９１の特定のアドレスに対して読み出し及び書き込みテストを行う場合について説明する。ループイネーブル信号ＬＯＯＰＥＮ＝１に設定してセレクタ１００を“１”入力端に切り替え、シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、テストモード信号ＴＥＳＴ２＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替える。
【０１４０】
ＲＡＭ９１の特定のアドレスに対して読み出しテストを行うと、テスト結果のデータがＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２に出力され、それぞれセレクタ６０，６１，６２を介してゲート回路１１０の入力に伝えられる。このとき、テスト結果のデータが“１１１”であれば、ゲート回路１１０から出力されるモニタ信号ＭＯＮＩは“１”になり、テスト結果のデータが“１１１”以外であれば、モニタ信号ＭＯＮＩは“０”になる。従って、モニタ信号ＭＯＮＩをチェックすれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“１１１”か否かを、ＳＯ端子からシフトアウトしなくても判定することができる。
【０１４１】
次にフリップフロップ３０，３１，３２にクロックを１回与えると、フリップフロップ３０，３１，３２がこのテスト結果のデータを格納する。次にテストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替えると、フリップフロップ３０，３１，３２に格納されているデータは、インバータ４２，４０，４１により反転され、セレクタ１２，１０，１１により選択されて、ＲＡＭ９１の入力端子ＤＩ２，ＤＩ０，ＤＩ１に伝達されると共に、セレクタ６０，６１，６２の“１”入力端に伝達される。この場合、フリップフロップ３２に格納されているデータは、セレクタ１００の“１”入力端を経由する。
【０１４２】
このとき、ＲＡＭ９１のテスト結果のデータが“０００”であれば、ゲート回路１１０から出力されるモニタ信号ＭＯＮＩは“１”になり、ＲＡＭ９１のテスト結果のデータが“０００”以外であれば、モニタ信号ＭＯＮＩは“０”になる。従って、モニタ信号ＭＯＮＩをチェックすれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“０００”か否かを、ＳＯ端子からシフトアウトしなくても判定することができる。
【０１４３】
次にこのテスト結果の反転データ（故障がない場合、“０００”又は“１１１”）をＲＡＭ９１に書き込む。なお、このＲＡＭ９１の読み出し及び書き込みテストはアドレスを変更して複数回繰り返される。
【０１４４】
以上のように、この実施の形態１３によれば、テスト回路の規模を大きくせずにＲＡＭ９１単独でテストすることができ、ＲＡＭ９１に書き込むテストデータを、オール０（“０００”）やオール１（“１１１”）に１クロックサイクルで切り替えることができ、ＲＡＭ９１のテストを効率的に行うことができるという効果が得られる。
【０１４５】
また、この実施の形態１３によれば、ループイネーブル信号ＬＯＯＰＥＮ＝０に設定し、ＳＩ端子からフリップフロップ３０，３１，３２に“１１１”又は“０００”になるようなテストデータをシフトインし、その後、ループイネーブル信号ＬＯＯＰＥＮ＝１に切り替えておけば、フリップフロップ３０，３１，３２にクロックを与える毎に、ＲＡＭ９１の入力端子ＤＩ０〜ＤＩ２は“１１１”と“０００”の状態を交互に繰り返すので、ＳＩ端子から新たにテストデータを与える必要はなく、ＲＡＭ９１のテストを容易にすることができるという効果が得られる。
【０１４６】
さらに、この実施の形態１３によれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“１１１”であるかのテストと、“０００”であるかのテストを、ＳＯ端子からシフトアウトしなくてもモニタ信号ＭＯＮＩのチェックだけで行えるので、ＲＡＭ９１のテストを容易にすることができるという効果が得られる。
【０１４７】
さらに、この実施の形態１３によれば、通常動作時では回路規模の増加なしで、フリップフロップ３０，３１，３２を通常動作時のＲＡＭ９１の出力レジスタとして利用することができるという効果が得られる。
【０１４８】
実施の形態１４．
図１４はこの発明の実施の形態１４による半導体集積回路装置の構成を示す回路図である。この実施の形態１４では、図１４に示すように、実施の形態１３の図１３におけるゲート回路１１０を、セレクタ６０，６１，６２の出力側よりインバータ４０，４１，４２の出力側にゲート回路１１４として移動している。このゲート回路１１４はインバータ４０，４１，４２の出力のデータが同一値であることを検出するもので、これに配慮してＲＡＭ９１のテストを行えば良い。図１４ではゲート回路１１４としてＡＮＤゲートを使用しているが、ＮＡＮＤゲート、ＯＲゲート、ＮＯＲゲートのいずれかを使用しても良い。また、図１４では、図１３と同様に、フリップフロップ３０，３１，３２を通常動作時のＲＡＭ９１の出力レジスタとして利用することができる。
【０１４９】
次に動作について説明する。
通常動作時及びロジック部８０，８１のスキャンテスト時の動作は実施の形態１３と同じである。また、ＲＡＭ９１のテストでＲＡＭ９１に対して初期データの書き込みテストを行う場合の動作も実施の形態１３と同じである。
【０１５０】
次にＲＡＭ９１の特定のアドレスに対して読み出し及び書き込みテストを行う場合について説明する。ループイネーブル信号ＬＯＯＰＥＮ＝１に設定してセレクタ１００を“１”入力端に切り替え、シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、テストモード信号ＴＥＳＴ２＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替える。
【０１５１】
ＲＡＭ９１の特定のアドレスに対して読み出しテストを行うと、テスト結果のデータがＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２に出力され、それぞれセレクタ６０，６１，６２を介してフリップフロップ３０，３１，３２の入力に伝えられる。フリップフロップ３０，３１，３２にクロックを１回与えると、フリップフロップ３０，３１，３２がこのテスト結果のデータを格納する。フリップフロップ３０，３１，３２に格納されたテスト結果のデータは、インバータ４０，４１，４２により反転され、ゲート回路１１４の入力に伝えられる。
【０１５２】
このとき、テスト結果のデータが“０００”であれば、ゲート回路１１４から出力されるモニタ信号ＭＯＮＩは“１”になり、テスト結果のデータが“０００”以外であれば、モニタ信号ＭＯＮＩは“０”になる。従って、モニタ信号ＭＯＮＩをチェックすれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“０００”か否かを、ＳＯ端子からシフトアウトしなくても判定することができる。
【０１５３】
次にテストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替えて、ＲＡＭ９１にテスト結果の反転データを書き込むと共に、フリップフロップ３０，３１，３２にクロックを１回与えると、フリップフロップ３０，３１，３２に格納されているデータは、インバータ４２，４０，４１により反転され、セレクタ１２，１０，１１により選択されて、セレクタ６０，６１，６２の“１”入力端を経由し、フリップフロップ３０，３１，３２に取り込まれて出力される。この場合、フリップフロップ３２に格納されているデータは、セレクタ１００の“１”入力端を経由する。
【０１５４】
フリップフロップ３０，３１，３２の出力データがインバータ４０，４１，４２により反転されてゲート回路１１４の入力に伝達されるので、フリップフロップ３０，３１，３２の出力が“０００”（テスト結果のデータが“１１１”）の場合には、ゲート回路１１４から出力されるモニタ信号ＭＯＮＩは“１”になり、ＲＡＭ９１のテスト結果のデータが“１１１”以外であれば、モニタ信号ＭＯＮＩは“０”になる。従って、モニタ信号ＭＯＮＩをチェックすれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“１１１”か否かを、ＳＯ端子からシフトアウトしなくても判定することができる。なお、このＲＡＭ９１の読み出し及び書き込みテストはアドレスを変更して複数回繰り返される。
【０１５５】
以上のように、この実施の形態１４によれば、テスト回路の規模を大きくせずにＲＡＭ９１単独でテストすることができ、ＲＡＭ９１に書き込むテストデータを、オール０（“０００”）やオール１（“１１１”）に１クロックサイクルで切り替えることができ、ＲＡＭ９１のテストを効率的に行うことができるという効果が得られる。
【０１５６】
また、この実施の形態１４によれば、ループイネーブル信号ＬＯＯＰＥＮ＝０に設定し、ＳＩ端子からフリップフロップ３０，３１，３２に“１１１”又は“０００”になるようなテストデータをシフトインし、その後、ループイネーブル信号ＬＯＯＰＥＮ＝１に切り替えておけば、フリップフロップ３０，３１，３２にクロックを与える毎に、ＲＡＭ９１の入力端子ＤＩ０〜ＤＩ２は“１１１”と“０００”の状態を交互に繰り返すので、ＳＩ端子から新たにテストデータを与える必要はなく、ＲＡＭ９１のテストを容易にすることができるという効果が得られる。
【０１５７】
さらに、この実施の形態１４によれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“１１１”であるかのテストと、“０００”であるかのテストを、ＳＯ端子からシフトアウトしなくてもモニタ信号ＭＯＮＩのチェックだけで行えるので、ＲＡＭ９１のテストを容易にすることができるという効果が得られる。
【０１５８】
さらに、この実施の形態１４によれば、通常動作時では回路規模の増加なしで、フリップフロップ３０，３１，３２を通常動作時のＲＡＭ９１の出力レジスタとして利用することができるという効果が得られる。
【０１５９】
実施の形態１５．
図１５はこの発明の実施の形態１５による半導体集積回路装置の構成を示す回路図である。この実施の形態１５では、図１５に示すように、実施の形態１３の図１３におけるゲート回路１１０を、セレクタ６０，６１，６２の出力側よりセレクタ１０，１１，１２の出力側にゲート回路１１５として移動している。このゲート回路１１５はセレクタ１０，１１，１２の出力のデータが同一値であることを検出するもので、これに配慮してＲＡＭ９１のテストを行えば良い。図１５ではゲート回路１１５としてＡＮＤゲートを使用しているが、ＮＡＮＤゲート、ＯＲゲート、ＮＯＲゲートのいずれかを使用しても良い。また、図１５では、図１３と同様に、フリップフロップ３０，３１，３２を通常動作時のＲＡＭ９１の出力レジスタとして利用することができる。
【０１６０】
次に動作について説明する。
通常動作時及びロジック部８０，８１のスキャンテスト時の動作は実施の形態１３と同じである。また、ＲＡＭ９１のテストでＲＡＭ９１に対して初期データの書き込みテストを行う場合の動作も実施の形態１３と同じである。
【０１６１】
次にＲＡＭ９１の特定のアドレスに対して読み出し及び書き込みテストを行う場合について説明する。ループイネーブル信号ＬＯＯＰＥＮ＝１に設定してセレクタ１００を“１”入力端に切り替え、シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、テストモード信号ＴＥＳＴ２＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替える。
【０１６２】
ＲＡＭ９１の特定のアドレスに対して読み出しテストを行うと、テスト結果のデータがＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２に出力され、それぞれセレクタ６０，６１，６２を介してフリップフロップ３０，３１，３２の入力に伝えられる。フリップフロップ３０，３１，３２にクロックを１回与えると、フリップフロップ３０，３１，３２がこのテスト結果のデータを格納する。フリップフロップ３０，３１，３２に格納されたテスト結果のデータは、インバータ４０，４１，４２により反転され、セレクタ１０，１１，１２を介してゲート回路１１５の入力に伝えられる。
【０１６３】
このとき、テスト結果のデータが“０００”であれば、ゲート回路１１５から出力されるモニタ信号ＭＯＮＩは“１”になり、テスト結果のデータが“０００”以外であれば、モニタ信号ＭＯＮＩは“０”になる。従って、モニタ信号ＭＯＮＩをチェックすれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“０００”か否かを、ＳＯ端子からシフトアウトしなくても判定することができる。
【０１６４】
次にテストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替えて、ＲＡＭ９１にテスト結果の反転データを書き込むと共に、フリップフロップ３０，３１，３２にクロックを１回与えると、フリップフロップ３０，３１，３２に格納されているデータは、インバータ４２，４０，４１により反転され、セレクタ１２，１０，１１により選択されて、セレクタ６０，６１，６２の“１”入力端を経由し、フリップフロップ３０，３１，３２に取り込まれて出力される。この場合、フリップフロップ３２に格納されているデータは、セレクタ１００の“１”入力端を経由する。
【０１６５】
フリップフロップ３０，３１，３２の出力データがインバータ４０，４１，４２により反転されてセレクタ１０，１１，１２を介してゲート回路１１５の入力に伝達されるので、フリップフロップ３０，３１，３２の出力が“０００”（テスト結果のデータが“１１１”）の場合には、ゲート回路１１５から出力されるモニタ信号ＭＯＮＩは“１”になり、ＲＡＭ９１のテスト結果のデータが“１１１”以外であれば、モニタ信号ＭＯＮＩは“０”になる。従って、モニタ信号ＭＯＮＩをチェックすれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“１１１”か否かを、ＳＯ端子からシフトアウトしなくても判定することができる。なお、このＲＡＭ９１の読み出し及び書き込みテストはアドレスを変更して複数回繰り返される。
【０１６６】
以上のように、この実施の形態１５によれば、テスト回路の規模を大きくせずにＲＡＭ９１単独でテストすることができ、ＲＡＭ９１に書き込むテストデータを、オール０（“０００”）やオール１（“１１１”）に１クロックサイクルで切り替えることができ、ＲＡＭ９１のテストを効率的に行うことができるという効果が得られる。
【０１６７】
また、この実施の形態１５によれば、ループイネーブル信号ＬＯＯＰＥＮ＝０に設定し、ＳＩ端子からフリップフロップ３０，３１，３２に“１１１”又は“０００”になるようなテストデータをシフトインし、その後、ループイネーブル信号ＬＯＯＰＥＮ＝１に切り替えておけば、フリップフロップ３０，３１，３２にクロックを与える毎に、ＲＡＭ９１の入力端子ＤＩ０〜ＤＩ２は“１１１”と“０００”の状態を交互に繰り返すので、ＳＩ端子から新たにテストデータを与える必要はなく、ＲＡＭ９１のテストを容易にすることができるという効果が得られる。
【０１６８】
さらに、この実施の形態１５によれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“１１１”であるかのテストと、“０００”であるかのテストを、ＳＯ端子からシフトアウトしなくてもモニタ信号ＭＯＮＩのチェックだけで行えるので、ＲＡＭ９１のテストを容易にすることができるという効果が得られる。
【０１６９】
さらに、この実施の形態１５によれば、通常動作時では回路規模の増加なしで、フリップフロップ３０，３１，３２を通常動作時のＲＡＭ９１の出力レジスタとして利用することができるという効果が得られる。
【０１７０】
実施の形態１６．
図１６はこの発明の実施の形態１６による半導体集積回路装置の構成を示す回路図である。この実施の形態１６では、図１６に示すように、実施の形態１３の図１３におけるゲート回路１１０を、セレクタ６０，６１，６２の出力側よりフリップフロップ３０，３１，３２の出力側にゲート回路１１６として移動している。このゲート回路１１６はフリップフロップ３０，３１，３２の出力のデータが同一値であることを検出するもので、これに配慮してＲＡＭ９１のテストを行えば良い。図１６ではゲート回路１１６としてＡＮＤゲートを使用しているが、ＮＡＮＤゲート、ＯＲゲート、ＮＯＲゲートのいずれかを使用しても良い。また、図１６では、図１３と同様に、フリップフロップ３０，３１，３２を通常動作時のＲＡＭ９１の出力レジスタとして利用することができる。
【０１７１】
次に動作について説明する。
通常動作時及びロジック部８０，８１のスキャンテスト時の動作は実施の形態１３と同じである。また、ＲＡＭ９１のテストでＲＡＭ９１に対して初期データの書き込みテストを行う場合の動作も実施の形態１３と同じである。
【０１７２】
次にＲＡＭ９１の特定のアドレスに対して読み出し及び書き込みテストを行う場合について説明する。ループイネーブル信号ＬＯＯＰＥＮ＝１に設定してセレクタ１００を“１”入力端に切り替え、シフトモード信号ＳＭ＝１に設定してセレクタ１０，１１，１２を“１”入力端に切り替え、テストモード信号ＴＥＳＴ２＝０に設定してセレクタ６０，６１，６２を“０”入力端に切り替える。
【０１７３】
ＲＡＭ９１の特定のアドレスに対して読み出しテストを行うと、テスト結果のデータがＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２に出力され、それぞれセレクタ６０，６１，６２を介してフリップフロップ３０，３１，３２の入力に伝えられる。フリップフロップ３０，３１，３２にクロックを１回与えると、フリップフロップ３０，３１，３２がこのテスト結果のデータを格納する。フリップフロップ３０，３１，３２に格納されたテスト結果のデータはゲート回路１１６の入力に伝えられる。
【０１７４】
このとき、テスト結果のデータが“１１１”であれば、ゲート回路１１６から出力されるモニタ信号ＭＯＮＩは“１”になり、テスト結果のデータが“１１１”以外であれば、モニタ信号ＭＯＮＩは“０”になる。従って、モニタ信号ＭＯＮＩをチェックすれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“１１１”か否かを、ＳＯ端子からシフトアウトしなくても判定することができる。
【０１７５】
次にテストモード信号ＴＥＳＴ２＝１に設定してセレクタ６０，６１，６２を“１”入力端に切り替えて、ＲＡＭ９１にテスト結果の反転データを書き込むと共に、フリップフロップ３０，３１，３２にクロックを１回与えると、フリップフロップ３０，３１，３２に格納されているデータは、インバータ４２，４０，４１により反転され、セレクタ１２，１０，１１により選択されて、セレクタ６０，６１，６２の“１”入力端を経由し、フリップフロップ３０，３１，３２に取り込まれて出力される。この場合、フリップフロップ３２に格納されているデータは、セレクタ１００の“１”入力端を経由する。
【０１７６】
フリップフロップ３０，３１，３２の出力データがゲート回路１１６の入力に伝達されるので、フリップフロップ３０，３１，３２の出力が“１１１”（テスト結果のデータが“０００”）の場合には、ゲート回路１１６から出力されるモニタ信号ＭＯＮＩは“１”になり、ＲＡＭ９１のテスト結果のデータが“０００”以外であれば、モニタ信号ＭＯＮＩは“０”になる。従って、モニタ信号ＭＯＮＩをチェックすれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“０００”か否かを、ＳＯ端子からシフトアウトしなくても判定することができる。なお、このＲＡＭ９１の読み出し及び書き込みテストはアドレスを変更して複数回繰り返される。
【０１７７】
以上のように、この実施の形態１６によれば、テスト回路の規模を大きくせずにＲＡＭ９１単独でテストすることができ、ＲＡＭ９１に書き込むテストデータを、オール０（“０００”）やオール１（“１１１”）に１クロックサイクルで切り替えることができ、ＲＡＭ９１のテストを効率的に行うことができるという効果が得られる。
【０１７８】
また、この実施の形態１６によれば、ループイネーブル信号ＬＯＯＰＥＮ＝０に設定し、ＳＩ端子からフリップフロップ３０，３１，３２に“１１１”又は“０００”になるようなテストデータをシフトインし、その後、ループイネーブル信号ＬＯＯＰＥＮ＝１に切り替えておけば、フリップフロップ３０，３１，３２にクロックを与える毎に、ＲＡＭ９１の入力端子ＤＩ０〜ＤＩ２は“１１１”と“０００”の状態を交互に繰り返すので、ＳＩ端子から新たにテストデータを与える必要はなく、ＲＡＭ９１のテストを容易にすることができるという効果が得られる。
【０１７９】
さらに、この実施の形態１６によれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“１１１”であるかのテストと、“０００”であるかのテストを、ＳＯ端子からシフトアウトしなくてもモニタ信号ＭＯＮＩのチェックだけで行えるので、ＲＡＭ９１のテストを容易にすることができるという効果が得られる。
【０１８０】
さらに、この実施の形態１６によれば、通常動作時では回路規模の増加なしで、フリップフロップ３０，３１，３２を通常動作時のＲＡＭ９１の出力レジスタとして利用することができるという効果が得られる。
【０１８１】
実施の形態１７．
図１７はこの発明の実施の形態１７による半導体集積回路装置の構成を示す回路図である。この実施の形態１７では、図１７に示すように、実施の形態８の図８におけるセレクタ１０，１１，１２及びセレクタ６０，６１，６２を、ＡＮＤ−ＯＲ複合ゲート型セレクタ１０ａ，１１ａ，１２ａ及びＡＮＤ−ＯＲ複合ゲート型セレクタ６０ａ，６１ａ，６２ａに変更し、ＡＮＤ−ＯＲ複合ゲート型セレクタ１０ａ，１１ａ，１２ａはシフトモード信号ＳＭＡ，ＳＭＢにより制御され、複合ゲート型セレクタ６０ａ，６１ａ，６２ａはテストモード信号ＴＥＳＴ２Ａ，２Ｂにより制御される。
【０１８２】
次に動作について説明する。
通常動作時の動作は実施の形態８と基本的に同じである。ただし、図１７では、シフトモード信号ＳＭＡ＝０、シフトモード信号ＳＭＢ＝１に設定して、ＡＮＤ−ＯＲ複合ゲート型セレクタ１０ａ，１１ａ，１２ａはロジック８０の出力を選択し、テストモード信号ＴＥＳＴ２Ａ＝０、テストモード信号ＴＥＳＴ２Ｂ＝１に設定して、複合ゲート型セレクタ６０ａ，６１ａ，６２ａはＲＡＭ９１の出力を選択してすることにより、ＲＡＭ９１がロジック部８０とロジック部８１の間に挿入された状態となる。また、通常動作時は、フリップフロップ３０，３１，３２にクロックを与えなくても良い。
【０１８３】
ロジック部８０，８１のスキャンテスト時の動作も実施の形態８と基本的に同じである。ただし、図１７では、ループイネーブル信号ＬＯＯＰＥＮ＝０に設定してセレクタ１００を“０”入力端に切り替え、テストモード信号ＴＥＳＴ２Ａ＝１、テストモード信号ＴＥＳＴ２Ｂ＝０に設定して、複合ゲート型セレクタ６０ａ，６１ａ，６２ａはスキャンパスを選択することにより、ＲＡＭ９１はバイパスされ、スキャンパスがロジック部８０とロジック部８１の間に挿入された状態となる。その状態でシフトモード信号ＳＭＡ、ＳＭＢを制御してロジック部８０，８１のスキャンテストを行う。
【０１８４】
ロジック部８１のスキャンテストを行う場合には、シフトモード信号ＳＭＡ＝１、シフトモード信号ＳＭＢ＝０に設定して、フリップフロップ３０，３１，３２にクロックを２回与えると、ＳＩ端子からの２ビットのテストデータが、シリアルシフト動作によりフリップフロップ３０，３１に格納される。
【０１８５】
テストモード信号ＴＥＳＴ２Ａ＝１に設定されているので、ＳＩ端子の次の１ビットのテストデータは複合ゲート型セレクタ６０ａにより選択されてロジック部８１に入力され、フリップフロップ３０，３１に格納された各１ビットのテストデータは、それぞれ複合ゲート型セレクタ６１ａ，６２ａにより選択されてロジック部８１に入力され、合計３ビットのテストデータによりロジック部８１のスキャンテストが行われる。
【０１８６】
ロジック部８０のスキャンテストを行う場合には、シフトモード信号ＳＭＡ＝０、シフトモード信号ＳＭＢ＝１に設定して、フリップフロップ３０，３１，３２にクロックを１回与えると、テストデータを入力したロジック部８０からのテスト結果の３ビットのデータが、フリップフロップ３０，３１，３２にそれぞれ格納される。このとき、フリップフロップ３２に格納された１ビットのデータはＳＯ端子に出力される。
【０１８７】
次にシフトモード信号ＳＭＡ＝１、シフトモード信号ＳＭＢ＝０に設定して、フリップフロップ３０，３１，３２にクロックを２回与えると、フリップフロップ３０，３１に格納された各１ビットのデータはＳＯ端子にシフトアウトされて、合計３ビットのデータの内容が確認される。この場合、ロジック部８１に対する次のテストデータをＳＩ端子からフリップフロップ３０，３１に格納することもできる。なお、このロジック部８０とロジック部８１のスキャンテストは、入力するテストデータを変更して複数回繰り返される。
【０１８８】
ＲＡＭ９１のテスト時は、シフトモード信号ＳＭＡ＝０、ＳＭＢ＝０の状態及びテストモード信号ＴＥＳＴ２Ａ＝０、ＴＥＳＴ２Ｂ＝０の状態を活用することにより、ＲＡＭ９１の書き込みデータを容易に制御できる。具体的には、シフトモード信号ＳＭＡ＝０、ＳＭＢ＝０に設定することにより、ＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２への入力データを“０００”の状態に設定できる。また、シフトモード信号ＳＭＡ＝１、テストモード信号ＴＥＳＴ２Ａ＝０、ＴＥＳＴ２Ｂ＝０に設定することにより、ＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２への入力データを“１１１”の状態に設定できる。つまり、この実施の形態１７では、スキャンパスの直列シフト動作による書き込みデータの設定は不要になる。
【０１８９】
ＲＡＭ９１のテストでＲＡＭ９１に対して初期データの書き込みテストを行う場合の動作について説明する。シフトモード信号ＳＭＡ＝０、ＳＭＢ＝０に設定することにより、ＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２への初期データを“０００”の状態に設定し、初期データ“０００”の書き込みを行う。また、シフトモード信号ＳＭＡ＝１、テストモード信号ＴＥＳＴ２Ａ＝０、ＴＥＳＴ２Ｂ＝０に設定することにより、ＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２への初期データを“１１１”の状態に設定し、初期データ“１１１”の書き込みを行う。なお、この初期データの書き込みは動作はアドレスを変えながら複数回行う。
【０１９０】
次にＲＡＭ９１の特定のアドレスに対して読み出し及び書き込みテストを行う場合について説明する。ループイネーブル信号ＬＯＯＰＥＮ＝１、シフトモード信号ＳＭＡ＝１，ＳＭＢ＝０、テストモード信号ＴＥＳＴ２Ａ＝０、テストモード信号ＴＥＳＴ２Ｂ＝１に設定する。
【０１９１】
ＲＡＭ９１の特定のアドレスに対して読み出しテストを行うと、テスト結果のデータがＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２に出力され、それぞれ複合ゲート型セレクタ６０ａ，６１ａ，６２ａを介してゲート回路１１０の入力に伝えられる。このとき、テスト結果のデータが“１１１”であれば、ゲート回路１１０から出力されるモニタ信号ＭＯＮＩは“１”になり、テスト結果のデータが“１１１”以外であれば、モニタ信号ＭＯＮＩは“０”になる。従って、モニタ信号ＭＯＮＩをチェックすれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“１１１”か否かを、ＳＯ端子からシフトアウトしなくても判定することができる。
【０１９２】
また、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータは、インバータ４０，４１，４２により反転され、ＡＮＤ−ＯＲ複合ゲート型セレクタ１０ａ，１１ａ，１２ａを介してＲＡＭ９１の入力端子ＤＩ０，ＤＩ１，ＤＩ２に与えられる。次にこのテスト結果の反転データをＲＡＭ９１に書き込むと共に、フリップフロップ３０，３１，３２にクロック１回を与えると、フリップフロップ３０，３１，３２がこのテスト結果の反転データを格納する。次にテストモード信号ＴＥＳＴ２Ａ＝１、テストモード信号ＴＥＳＴ２Ｂ＝０に設定し、フリップフロップ３０，３１，３２に格納されているテスト結果の反転データが、それぞれ複合ゲート型セレクタ６０ａ，６１ａ，６２ａを介してゲート回路１１０の入力に伝えられる。この場合、フリップフロップ３２に格納されているデータは、セレクタ１００の“１”入力端を経由する。
【０１９３】
テスト結果のデータが“０００”であれば、ゲート回路１１０の入力は“１１１”となり、ゲート回路１１０から出力されるモニタ信号ＭＯＮＩは“１”になり、テスト結果のデータが“０００”以外であれば、モニタ信号ＭＯＮＩは“０”になる。従って、モニタ信号ＭＯＮＩをチェックすることにより、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２から出力されるテスト結果のデータが“０００”か否かを、ＳＯ端子からシフトアウトしなくても判定することができる。なお、このＲＡＭ９１の読み出し及び書き込みテストはアドレスを変更して複数回繰り返される。
【０１９４】
以上のように、この実施の形態１７によれば、テスト回路の規模を大きくせずにＲＡＭ９１単独でテストすることができ、ＲＡＭ９１のテスト時に、シフトモード信号ＳＭＡ＝０、ＳＭＢ＝０の状態及びテストモード信号ＴＥＳＴ２Ａ＝０、ＴＥＳＴ２Ｂ＝０の状態を活用することにより、スキャンパスの直列シフト動作による書き込みデータの設定は不要になり、ＲＡＭ９１の書き込みデータを容易に制御できると共に、通常動作時は、フリップフロップ３０，３１，３２にはクロックを与えなくても済むという効果が得られる。
【０１９５】
また、この実施の形態１７によれば、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが“１１１”であるかのテストと、“０００”であるかのテストを、ＳＯ端子からシフトアウトしなくてもモニタ信号ＭＯＮＩのチェックだけで行えるので、ＲＡＭ９１のテストを容易にすることができるという効果が得られる。
【０１９６】
実施の形態１８．
図１８はこの発明の実施の形態１８による半導体集積回路装置の構成を示す回路図である。この実施の形態１８では、図１８に示すように、実施の形態１７の図１７におけるＡＮＤ−ＯＲ複合ゲート型セレクタ６０ａ，６１ａ，６２ａを、ＡＮＤ−ＮＯＲ複合ゲート型セレクタ６０ｂ，６１ｂ，６２ｂに変更し、図１７におけるスキャンパスに挿入されているインバータ４０，４１，４２を削除し、ＡＮＤ−ＮＯＲ複合ゲート型セレクタ６０ｂ，６１ｂ，６２ｃの出力からロジック部８１への経路にインバータ４０ａ，４１ａ，４２ａを追加している。
【０１９７】
次に動作について説明する。
ＡＮＤ−ＮＯＲ複合ゲート型セレクタ６０ｂ，６１ｂ，６２ｂはインバータの機能を含んでいるので、図１７でスキャンパスに挿入されているインバータ４０，４１，４２は不要になる。また、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが反転してロジック部８１に伝わらないように、ＡＮＤ−ＮＯＲ複合ゲート型セレクタ６０ｂ，６１ｂ，６２ｂの出力を、インバータ４０ａ，４１ａ，４２ａを介してからロジック部８１に伝えている。なお、ＲＡＭ９１の出力端子ＤＯ０，ＤＯ１，ＤＯ２からのテスト結果のデータが反転してロジック部８１に伝えても良い場合には、インバータ４０ａ，４１ａ，４２ａを削除する。その他の動作については、実施の形態１７と同じである。
【０１９８】
以上のように、この実施の形態１８によれば実施の形態１７と同様の効果が得られる。
【０１９９】
実施の形態１９．
図１９はこの発明の実施の形態１９による半導体集積回路装置の構成を示す回路図である。実施の形態８の図８では３ビットのＲＡＭ９１を対象としているが、この実施の形態１９では、図１９に示すように４ビットのＲＡＭ９１ａを対象としている。すなわち、ＲＡＭ９１ａの入力端子をＤＩ０，ＤＩ１，ＤＩ２，ＤＩ３、出力端子をＤＯ０，ＤＯ１，ＤＯ２，ＤＯ３とし、セレクタ１３、セレクタ６３、フリップフロップ３３、インバータ４３を追加し、ロジック部８０の出力端子とロジック部８０の入力端子を４ビットにし、実施の形態８の図８におけるゲート回路１１０を、３つのゲート回路１１０ａ，１１０ｂ，１１０ｃで構成している。ゲート回路１１０ａの入力をセレクタ６０，６２の出力に接続し、ゲート回路１１０ｂの入力をセレクタ６１，６３の出力に接続し、ゲート回路１１０ｃの入力をゲート回路１１０ａ，１１０ｂの出力に接続し、ゲート回路１１０ｃの出力は図８におけるゲート回路１１０の出力に相当する。
【０２００】
次に動作について説明する。
例えば、ＲＡＭ９１ａのテスト時に、テストモード信号ＴＥＳＴ２＝０の状態で、ゲート回路１１０ａの出力ＭＯＮＩＡをモニタすることにより、ＲＡＭ９１ａの偶数ビット目の出力ＤＯ０，ＤＯ２に関しての故障の有無がテストできる。同様に、ゲート回路１１０ｂの出力ＭＯＮＩＢをモニタすることにより、ＲＡＭ９１ａの奇数ビット目の出力ＤＯ１，ＤＯ３に関しての故障の有無がテストできる。つまり、実施の形態１９では、実施の形態８に比べて、ＲＡＭ９１ａの故障位置が偶数ビットなのか奇数ビットなのかを判定できる機能が追加されているので、ＲＡＭ９１ａのより詳細な故障診断が行なえる。その他の動作は実施の形態８と同様である。
【０２０１】
以上のように、この実施の形態１９によれば、実施の形態８の効果に他に、ＲＡＭ９１ａのより詳細な故障診断が行えるという効果が得られる。
【０２０２】
実施の形態２０．
図２０はこの発明の実施の形態２０による半導体集積回路装置の構成を示す回路図である。この実施の形態２０では、図２０に示すように、実施の形態８の図８に対して、フェイルフラグ生成回路（ＦＡＩＬ  ＦＬＡＧ  ＧＥＮＥＲＡＴＯＲ）１２０とＯＲ回路１３０を追加し、ＲＡＭ９１の故障診断を容易にするものである。フェイルフラグ生成回路１２０は、インバータ１２１、ＡＮＤ回路１２２、ＯＲ回路１２３、ＡＮＤ回路１２４、フリップフロップ１２５により構成されている。
【０２０３】
図２０に示すフェイルフラグ生成回路１２０において、コンペアイネーブル信号ＣＭＰＥＮは、基本的にはＲＡＭテスト時にモニタ信号ＭＯＮＩ＝１となることが期待されている場合に、コンペアイネーブル信号ＣＭＰＥＮ＝１に設定され、モニタ信号ＭＯＮＩが不確定の場合や、モニタ信号ＭＯＮＩ＝０が期待されている場合は、コンペアイネーブル信号ＣＭＰＥＮ＝０に設定されて、モニタ信号ＭＯＮＩの比較動作はマスク状態となる。フェイルモニタ信号ＦＡＩＬＭＯＮＩは故障の有無をリアルタイムに判定するために、例えばＬＳＩ内部に搭載されているセルフテスト制御回路に出力される。すなわち、コンベアイネーブル信号ＣＭＰＥＮ＝１に設定されている状態で、期待に反して故障が存在する場合にはモニタ信号ＭＯＮＩ＝０となり、フェイルモニタ信号ＦＡＩＬＭＯＮＩ＝１が出力される。
【０２０４】
リセット信号ＲＥＳＥＴＬ＝０に設定し、フリップフロップ１２５にクロックを与えるとフリップフロップ１２５は“０”にリセットされる。フェイルフラグ信号ＦＡＩＬＦＬＡＧは、ＲＡＭのテスト結果を判定するために、例えばＬＳＩ内部に搭載されているセルフテスト制御回路に出力され、故障がなければフェイルモニタ信号ＦＡＩＬＭＯＮＩ＝０、故障があればフェイルモニタ信号ＦＡＩＬＭＯＮＩ＝１になる。一度、フェイルフラグ信号ＦＡＩＬＦＬＡＧ＝１になると、その状態が保持されるように、フェイルフラグ生成回路１２０内にＯＲ回路１２３が設けられている。
【０２０５】
ＯＲ回路１３０は、外部からのテストモード信号ＴＥＳＴ２Ａ又はフェイルフラグ信号ＦＡＩＬＦＬＡＧにより、セレクタ６０，６１，６２に対するテストモード信号ＴＥＳＴ２を出力する。
【０２０６】
次に動作について説明する。
ＲＡＭ９１の故障診断時には、リセット信号ＲＳＥＴＬ＝０の状態で、フェイルフラグ生成回路１２０内のフリップフロップ１２５にクロックを与えて、フェイルフラグ信号ＦＡＩＬＦＬＡＧ＝０に設定する。次にリセット信号ＲＳＥＴＬ＝１に設定して実施の形態８の図８で説明したようなＲＡＭ９１のテストを実行する。
【０２０７】
故障が存在してゲート回路１１０からのモニタ信号ＭＯＮＩ＝０となると、ＡＮＤ回路１２４の出力は“１”となり、フリップフロップ１２５にクロックを与えると、フェイルフラグ信号ＦＡＩＬＦＬＡＧ＝１となって出力されると共に、テストモード信号ＴＥＳＴ２＝１と設定され、セレクタ６０，６１，６２を“１”入力端に切り替える。このとき、フリップフロップ３０，３１，３２にもクロックを与えて故障データを格納する。ここで次以降のＲＡＭテストをキャンセルし、フェイルフラグ信号ＦＡＩＬＦＬＡＧ＝１になった原因を究明するための故障解析動作が、例えばＬＳＩ内部に搭載されているセルフテスト制御回路で行われる。
【０２０８】
ＲＡＭ９１のテストのテスト時には、シフトモード信号ＳＭ＝１になっているので、ループイネーブル信号ＬＯＯＰＥＮ＝１、テストモード信号ＴＥＳＴ２＝１、シフトモード信号ＳＭ＝１に設定されている状態で、フリップフロップ３０，３１，３２にもクロックを与えても、この故障データは、スキャンパスの直列シフト経路の３つのフリップフロップ３０，３１，３２のループ接続された循環シフトレジスタ内に保持されているので、与えた正確なクロック数を把握しておけば、ＳＯ端子から故障データを含むデータをシフトアウトして、どのデータビットの故障であったかを分析できる。
【０２０９】
例えば、ＲＡＭ９１の０番地、１番地、２番地、３番地・・・の順でテストを行う場合について説明する。１番地で最初の故障が検出された以降はフェイルフラグ信号ＦＡＩＬＦＬＡＧ＝１となり故障解析動作に移る。３つのフリップフロップ３０，３１，３２のループ接続された循環シフトレジスタ内に保持されている故障データを含むデータはＳＯ端子からシフトアウトされる。
【０２１０】
２個目の故障を検出するテストを行う場合には、フェイルフラグ信号ＦＡＩＬＦＬＡＧをリセットする動作から開始する。ただし、０番地、１番地のテスト時はコンペアイネーブル信号ＣＭＰＥＮ＝０にして比較動作はマスク状態とする。コンペアイネーブル信号ＣＭＰＥＮ＝０にする制御は、例えばセルフテスト制御回路に蓄えられた最初の故障のアドレスにより行われる。０番地、１番地のテスト時はコンペアイネーブル信号ＣＭＰＥＮ＝０に設定されるので、モニタ信号ＭＯＮＩの値にかかわらず、フェイルモニタ信号ＦＡＩＬＭＯＮＩは強制的に“０”となりマスク状態となる。
【０２１１】
２番地以降のテストでは、適切にコンペアイネーブル信号ＣＭＰＥＮを制御して比較動作を行う。例えば３番地に２つ目の故障が存在する場合には、３番地のテスト時点でフェイルフラグ信号ＦＡＩＬＦＬＡＧ＝１となり、この時点で故障解析動作に移り、３つのフリップフロップ３０，３１，３２のループ接続された循環シフトレジスタ内に保持されている故障データを含むデータはＳＯ端子からシフトアウトされる。
【０２１２】
ＲＡＭ９１が冗長機能付ＲＡＭである場合には、これらの故障データを冗長回路の切り替え制御データとして使用することができる。
【０２１３】
以上のように、この実施の形態２０によれば、実施の形態８の効果に他に、フェイルフラグ生成回路１２０によりフェイルフラグ信号ＦＡＩＬＦＬＡＧを生成して、ＲＡＭ９１の故障データをフリップフロップ３０，３１，３２に格納し、テスト終了後、又はテスト中断後に、ＳＯ端子から故障データをシフトアウトすることにより、検出された故障に関する詳細な診断が行えるという効果が得られる。
【０２１４】
なお、この発明の実施は、機能ブロック９０又はＲＡＭ９１の入出力端子の全てに適用する必要はなく、部分的な適用によっても効果がある。例えば、機能ブロック９０の入力端子数と出力端子数が異なる場合は、少ないほうに合わせてペアを作り本発明を実施すれば良い。
【図面の簡単な説明】
【０２１５】
【図１】この発明の実施の形態１による半導体集積回路装置の構成を示す回路図である。
【図２】この発明の実施の形態２による半導体集積回路装置の構成を示す回路図である。
【図３】この発明の実施の形態３による半導体集積回路装置の構成を示す回路図である。
【図４】この発明の実施の形態４による半導体集積回路装置の構成を示す回路図である。
【図５】この発明の実施の形態５による半導体集積回路装置の構成を示す回路図である。
【図６】この発明の実施の形態６による半導体集積回路装置の構成を示す回路図である。
【図７】この発明の実施の形態７による半導体集積回路装置の構成を示す回路図である。
【図８】この発明の実施の形態８による半導体集積回路装置の構成を示す回路図である。
【図９】この発明の実施の形態９による半導体集積回路装置の構成を示す回路図である。
【図１０】この発明の実施の形態１０による半導体集積回路装置の構成を示す回路図である。
【図１１】この発明の実施の形態１１による半導体集積回路装置の構成を示す回路図である。
【図１２】この発明の実施の形態１２による半導体集積回路装置の構成を示す回路図である。
【図１３】この発明の実施の形態１３による半導体集積回路装置の構成を示す回路図である。
【図１４】この発明の実施の形態１４による半導体集積回路装置の構成を示す回路図である。
【図１５】この発明の実施の形態１５による半導体集積回路装置の構成を示す回路図である。
【図１６】この発明の実施の形態１６による半導体集積回路装置の構成を示す回路図である。
【図１７】この発明の実施の形態１７による半導体集積回路装置の構成を示す回路図である。
【図１８】この発明の実施の形態１８による半導体集積回路装置の構成を示す回路図である。
【図１９】この発明の実施の形態１９による半導体集積回路装置の構成を示す回路図である。
【図２０】この発明の実施の形態２０による半導体集積回路装置の構成を示す回路図である。
【図２１】従来の半導体集積回路装置の構成を示す回路図である。
【図２２】従来の半導体集積回路装置の構成を示す回路図である。
【符号の説明】
【０２１６】
１０，１１，１２，１３  セレクタ、１０ａ，１１ａ，１２ａ  ＡＮＤ−ＯＲ複合ゲート型セレクタ、２０，２１，２２  インバータ、３０，３1，３２，３３  フリップフロップ、４０，４１，４２，４３  インバータ、４０ａ，４１ａ，４２ａ  インバータ、６０，６１，６２，６３  セレクタ、６０ａ，６１ａ，６２ａ  ＡＮＤ−ＯＲ複合ゲート型セレクタ、６０ｂ，６１ｂ，６２ｂ  ＡＮＤ−ＮＯＲ複合ゲート型セレクタ、８０，８１  ロジック部、９０  機能ブロック、９１  ＲＡＭ、９１ａ  ＲＡＭ、１００  セレクタ、１１０，１１１，１１２，１１３，１１４，１１５，１１６  ゲート回路、１１０ａ，１１０ｂ，１１０ｃ  ゲート回路、１２０  フェイルフラグ生成回路、１２１  インバータ、１２２  ＡＮＤ回路、１２３  ＯＲ回路、１２４  ＡＮＤ回路、１２５  フリップフロップ１２５、１３０  ＯＲ回路。
【図１】
2004212384.tif 000003
【図２】
2004212384.tif 000004
【図３】
2004212384.tif 000005
【図４】
2004212384.tif 000006
【図５】
2004212384.tif 000007
【図６】
2004212384.tif 000008
【図７】
2004212384.tif 000009
【図８】
2004212384.tif 000010
【図９】
2004212384.tif 000011
【図１０】
2004212384.tif 000012
【図１１】
2004212384.tif 000013
【図１２】
2004212384.tif 000014
【図１３】
2004212384.tif 000015
【図１４】
2004212384.tif 000016
【図１５】
2004212384.tif 000017
【図１６】
2004212384.tif 000018
【図１７】
2004212384.tif 000019
【図１８】
2004212384.tif 000020
【図１９】
2004212384.tif 000021
【図２０】
2004212384.tif 000022
【図２１】
2004212384.tif 000023
【図２２】
2004212384.tif 000024