(57)【要約】【課題】ＬＳＩテスタを用いることなく良／不良の判定を行うことができる半導体集積回路を得ること。【解決手段】ＬＦＳＲで構成した乱数発生器４で乱数を発生させ、その乱数ビットストリームをスキャンパスの初段のスキャン機能付きフリップフロップ２ａに入力し、シフト機能を用いてスキャンパスの最終段のスキャン機能付きフリップフロップ２ｉまでデータをシフトし組合せ回路３のテストを行う。そして、テスト結果をラッチした後、シフト機能を用いて最終段のスキャン機能付きフリップフロップ２ｉの出力を順次ＬＦＳＲで構成したデータ圧縮器５で圧縮する。【選択図】　　　図１
2004045152.tif 000002
【特許請求の範囲】
【請求項１】
シリアルに接続されたスキャン機能付きフリップフロップに外部入力端子からテストパタンを入力することにより半導体集積回路内の組合せ回路を動作させて該組合せ回路のテストを行い、そのテスト結果のデータを前記スキャン機能付きフリップフロップでラッチした後、外部端子に出力するスキャンパス設計がなされた半導体集積回路において、
排他的論理和ゲートで帰還をかけたシフトレジスタで構成されるリニアフィードバックシフトレジスタを用いてテストパタンを生成し、生成したテストパタンを前記スキャン機能付きフリップフロップの初段に入力する乱数発生器と、
排他的論理和ゲートで帰還をかけたシフトレジスタで構成されるリニアフィードバックシフトレジスタを用いて前記スキャン機能付きフリップフロップの最終段から入力されたテスト結果のデータを圧縮して前記外部端子に出力するデータ圧縮器と、
を内蔵することを特徴とする半導体集積回路。
【請求項２】
選択信号に基づいて前記外部入力端子から入力されるテストパタンおよび前記乱数発生器で生成されたテストパタンのどちらかを選択し、前記スキャン機能付きフリップフロップの初段に入力するセレクタ、
をさらに備えたことを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記半導体集積回路にＣＰＵが内蔵されている場合、前記ＣＰＵは、前記乱数発生器を構成するリニアフィードバックシフトレジスタと前記データ圧縮器を構成するリニアフィードバックシフトレジスタの初期値を設定し、前記データ圧縮器により圧縮されたテスト結果のデータを読み出し、読み出したデータと予め定められた期待値とを比較して半導体集積回路の良／不良を判定することを特徴とする請求項１または２に記載の半導体集積回路。
【請求項４】
前記乱数発生器および前記データ圧縮器を１つのリニアフィードバックシフトレジスタで構成することを特徴とする請求項１〜３の何れか一つに記載の半導体集積回路。
【請求項５】
前記リニアフィードバックシフトレジスタを前記スキャン機能付きフリップフロップを用いて構成することを特徴とする請求項４に記載の半導体集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体集積回路のテストに関するものであり、特に、半導体集積回路のテストを容易に行うため半導体集積回路内部にスキャンパスを有する半導体集積回路に関するものである。
【０００２】
【従来の技術】
従来から、セルベースなどの半導体集積回路では、アンド（ＡＮＤ）回路，オア（ＯＲ）回路，フリップフロップ，メモリ回路などを内部領域に複数配置し、それらの回路を接続情報にしたがって配線することで、所望の機能を実現してきた。
【０００３】
近年、半導体製造の微細化技術の向上により、１チップの搭載ゲート規模も大きくなり、高性能・高機能の半導体集積回路が１チップで実現可能となっている。一方、１チップの搭載ゲート規模が大きくなったことにより、製造後の半導体集積回路のテスト方法が問題となっている。半導体集積回路のテストは、製造工程での不良が無いか、すなわち、半導体集積回路の機能とは無関係に、回路図通りに製造されているか、半導体集積回路内の全てのトランジスタに対してオン／オフの動作を確認する必要がある。このような半導体集積回路のテストを困難にしている要因の一つとして、半導体集積回路内部のフリップフロップの入力の可制御性とその出力の可観測性が悪いことが挙げられる。
【０００４】
このような問題を改善するための従来技術として、半導体集積回路内部のフリップフロップを外部端子から直接制御し観測するための経路（スキャン・チェーン）を設けるスキャンパス設計手法がある。スキャンパス設定手法は、たとえば、電子情報通信学会発行「ＡＳＩＣ技術の基礎と応用」第６章の「テスト容易化設計技術」の項に詳述されている。
【０００５】
図８を参照して、スキャンパス設計された半導体集積回路を説明する。図８において、１００は半導体集積回路、１１０〜１１８はスキャン機能付きフリップフロップ、１２０は半導体集積回路１００内の組合せ回路、１３０は複数本の半導体集積回路１００の入力端子、１４０は複数本の半導体集積回路１００の出力端子、１５０はスキャン機能付きフリップフロップ１１０にデータを入力するシフト入力、１６０はスキャン機能付きフリップフロップ１１８のデータを出力するシフト出力である。スキャン機能付きフリップフロップ１１０〜１１８は、組合せ回路１２０のデータをラッチし、組合せ回路１２０に出力する通常の配線とともにスキャン機能付きフリップフロップ１１０，１１１，１１２…の順にシリアル接続されシフトレジスタとしても動作するように設計されている。
【０００６】
図８に示す半導体集積回路１００の動作を説明する。まず、入力端子１３０に所定の値を入力する。つぎに、シフト入力１５０からテストデータを入力し、シフト機能を用いてスキャン機能付きフリップフロップ１１０，１１１，１１２…の順に最終段のスキャン機能付きフリップフロップ１１８までテストデータをシフトする。そして、スキャン機能付きフリップフロップ１１０〜１１８の出力を擬似入力として組合せ回路１２０を動作させ、この時の組合せ回路１２０の出力をスキャン機能付きフリップフロップ１１０〜１１８はラッチする。さらに、スキャン機能付きフリップフロップ１１０〜１１８は、シフト機能を用いて最終段のスキャン機能付きフリップフロップ１１８の出力から順にシフト出力１６０に出力する。このシフト出力１６０および出力端子１４０をＬＳＩ（Ｌａｒｇｅ−Ｓｃａｌｅ　Ｉｎｔｅｇｒａｔｅｄ　ｃｉｒｃｕｉｔ）テスタで観測し、期待値との比較を行う。
【０００７】
【発明が解決しようとする課題】
しかしながら、上記従来技術では、スキャンパスを構成するスキャン機能付きフリップフロップ１１０〜１１８にシフト入力１５０からテストパタンを入力し、組合せ回路１２０のテストを行い、その結果をシフト出力１６０に出力し、その出力を１ビットずつ期待値と比較しなければならない。すなわち、ＬＳＩテスタを用いてテストパタンを入力し、その結果を期待値と比較しなければ半導体集積回路の良品／不良品の判定ができないという問題があった。
【０００８】
また、半導体集積回路がシステム基盤に実装された後に発生したトラブルの解析などの場合、ＬＳＩテスタを用いて半導体集積回路のスキャンテストを行うことは非常に困難である。そのため、発生したトラブルが半導体集積回路の故障であるのかその他の部品の故障であるのかの切り分けを行うことが困難でありシステムの故障解析に時間がかかってしまうという問題もあった。
【０００９】
この発明は上記に鑑みてなされたもので、ＬＳＩテスタを用いることなく良／不良の判定を行うことができる半導体集積回路を得ることを目的としている。
【００１０】
【課題を解決するための手段】
上記目的を達成するために、この発明にかかる半導体集積回路は、シリアルに接続されたスキャン機能付きフリップフロップに外部入力端子からテストパタンを入力することにより半導体集積回路内の組合せ回路を動作させて該組合せ回路のテストを行い、そのテスト結果のデータを前記スキャン機能付きフリップフロップでラッチした後、外部端子に出力するスキャンパス設計がなされた半導体集積回路において、排他的論理和ゲートで帰還をかけたシフトレジスタで構成されるリニアフィードバックシフトレジスタを用いてテストパタンを生成し、生成したテストパタンを前記スキャン機能付きフリップフロップの初段に入力する乱数発生器と、排他的論理和ゲートで帰還をかけたシフトレジスタで構成されるリニアフィードバックシフトレジスタを用いて前記スキャン機能付きフリップフロップの最終段から入力されたテスト結果のデータを圧縮して前記外部端子に出力するデータ圧縮器とを内蔵することを特徴とする。
【００１１】
この発明によれば、リニアフィードバックシフトレジスタで構成した乱数発生器で乱数を発生させ、その乱数をテストパタンに用いて組合せ回路のテストを行い、そのテスト結果のデータをリニアフィードバックシフトレジスタで構成したデータ圧縮器で圧縮して外部端子に出力するようにしている。
【００１２】
つぎの発明にかかる半導体集積回路は、上記の発明において、選択信号に基づいて前記外部入力端子から入力されるテストパタンおよび前記乱数発生器で生成されたテストパタンのどちらかを選択し、前記スキャン機能付きフリップフロップの初段に入力するセレクタをさらに備えたことを特徴とする。
【００１３】
この発明によれば、セレクタは、選択信号に基づいてシフト入力から入力されるテストパタンと乱数発生器で生成されたテストパタンのどちらか一方を選択してスキャン機能付きフリップフロップの初段に入力するようにしている。
【００１４】
つぎの発明にかかる半導体集積回路は、上記の発明において、前記半導体集積回路にＣＰＵが内蔵されている場合、前記ＣＰＵは、前記乱数発生器を構成するリニアフィードバックシフトレジスタと前記データ圧縮器を構成するリニアフィードバックシフトレジスタの初期値を設定し、前記データ圧縮器により圧縮されたテスト結果のデータを読み出し、読み出したデータと予め定められた期待値とを比較して半導体集積回路の良／不良を判定することを特徴とする。
【００１５】
この発明によれば、ＣＰＵは、乱数発生器を構成するリニアフィードバックシフトレジスタとデータ圧縮器を構成するリニアフィードバックシフトレジスタに初期値を設定し、データ圧縮器により圧縮されたテスト結果のデータを読み出し、読み出したデータと予め定められた期待値とを比較して良／不良を判定するようにしている。
【００１６】
つぎの発明にかかる半導体集積回路は、前記乱数発生器および前記データ圧縮器を１つのリニアフィードバックシフトレジスタで構成することを特徴とする。
【００１７】
この発明によれば、乱数発生器とデータ圧縮器を１個のリニアフィードバックシフトレジスタで構成し、テストパタンに用いる乱数を発生させると同時に、組合せ回路のテスト結果のデータを圧縮するようにしている。
【００１８】
つぎの発明にかかる半導体集積回路は、前記リニアフィードバックシフトレジスタを前記スキャン機能付きフリップフロップを用いて構成することを特徴とする。
【００１９】
この発明によれば、スキャンパスを構成するスキャン機能付きフリップフロップがシフトレジスタであることに着目し、このシフトレジスタに排他的論理和ゲートで帰還をかけリニアフィードバックシフトレジスタを構成し、スキャン機能付きフリップフロップを乱数発生器およびデータ圧縮器として動作させるようにしている。
【００２０】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかる半導体集積回路の好適な実施の形態を詳細に説明する。
【００２１】
実施の形態１．
図１〜図３を用いてこの発明の実施の形態１を説明する。図１は、実施の形態１の半導体集積回路１の構成を示すブロック図である。実施の形態１の半導体集積回路１は、図８を用いて説明した従来技術のスキャンパス設計手法により設計された半導体集積回路であり、スキャン機能付きフリップフロップ２ａ〜２ｉと、組合せ回路３と、乱数発生器４と、データ圧縮器５と、セレクタ６とで構成される。
【００２２】
乱数発生器４は乱数を自動生成する機能を備えている。図２は、図１に示した乱数発生器４の構成の一例を示すブロック図である。乱数発生器４は、９個のフリップフロップ４１ａ〜４１ｉと排他的論理和ゲートであるＥＸＯＲ４２とで構成される。フリップフロップ４１ａ〜４１ｉは、フリップフロップ４１ａ，４１ｂ，４１ｃ…の順に接続されシフトレジスタを構成し、フリップフロップ４１ｅとフリップフロップ４１ｉの出力がＥＸＯＲ４２に入力される。ＥＸＯＲ４２の出力は、フリップフロップ４１ａに入力される。すなわち、この乱数発生器４はＥＸＯＲ４２で帰還をかけた９ビットのシフトレジスタで構成されるリニアフィードバックシフトレジスタ（ＬＦＳＲ）である。乱数発生器４は、セレクタ６にシフト動作毎に乱数ビットストリーム（この場合、スキャン機能付きフリップフロップ４１ｉの出力）を出力する。なお、ＥＸＯＲ４２に入力される信号は、フリップフロップ４１ｅ，４１ｉの出力に限定されるものではなく、シフトレジスタを構成するフリップフロップ４１ａ〜４１ｉの出力であればよい。
【００２３】
セレクタ６は、選択信号１５に基づきシフト入力または乱数発生器４の出力のどちらか一方を選択し、スキャン機能付きフリップフロップ２ａに選択した信号を出力する。
【００２４】
スキャン機能付きフリップフロップ２ａ〜２ｉは、組合せ回路３のデータをラッチし、組合せ回路３に出力する通常の機能とともにスキャン機能付きフリップフロップ２ａ，２ｂ，２ｃ…の順にシリアル接続されたシフトレジスタを構成する。最終段のスキャン機能付きフリップフロップ２ｉの出力は、データ圧縮器５と半導体集積回路１のシフト出力１４に出力される。
【００２５】
データ圧縮器５は、スキャン機能付きフリップフロップ２ａ〜２ｉで構成されるスキャンパスの最終段のスキャン機能付きフリップフロップ２ｉの出力、すなわち、スキャンテストの結果を圧縮し、圧縮したテスト結果のデータを圧縮データ１６に出力する。図３は、図１に示したデータ圧縮器５の構成の一例を示すブロック図である。データ圧縮器５は、９個のフリップフロップ５１ａ〜５１ｉと２個の排他的論理和ゲートであるＥＸＯＲ５２，５３とで構成される。フリップフロップ５１ａ〜５１ｉは、フリップフロップ５１ａ，５１ｂ，５１ｃ…の順に接続されシフトレジスタを構成し、フリップフロップ５１ｅとフリップフロップ５１ｉの出力がＥＸＯＲ５２に入力される。ＥＸＯＲ５２の出力は、ＥＸＯＲ５３に入力される。ＥＸＯＲ５３のもう一方の入力には、スキャン機能付きフリップフロップ２ｉの出力が入力される。ＥＸＯＲ５３の出力は、フリップフロップ５１ａに入力される。すなわち、このデータ圧縮器５は、ＥＸＯＲ５２，５３で帰還をかけた９ビットのシフトレジスタで構成されるＬＦＳＲであり、ＥＸＯＲ５３においてスキャン機能付きフリップフロップ２ｉの出力（スキャンテスト結果）とデータ圧縮器５内部で生成された信号とでデータ圧縮が成される。圧縮されたデータ、すなわち、ＥＸＯＲ５３の出力は、フリップフロップ５１ａに入力される。なお、ＥＸＯＲ５２に入力される信号は、フリップフロップ５１ｅ，５１ｉの出力に限定されるものではなく、シフトレジスタを構成するフリップフロップ５１ａ〜５１ｉの出力であればよい。
【００２６】
つぎに、この実施の形態１の半導体集積回路１の動作を説明する。選択信号１５にシフト入力を選択する信号が入力された場合、半導体集積回路１は、図８に示した従来の半導体集積回路と同様にスキャンテストを実行する。つまり、入力端子１１に所定の信号が入力されており、セレクタ６はシフト入力を選択し、スキャンパスの初段のスキャン機能付きフリップフロップ２ａにシフト入力１３を出力する。スキャン機能付きフリップフロップ２ａ〜２ｉは、シフト機能を用いてシフト入力のデータをスキャン機能付きフリップフロップ２ｉまでシフトする。そして、スキャン機能付きフリップフロップ２ａ〜２ｉは、スキャン機能付きフリップフロップ２ａ〜２ｉの出力を擬似入力として動作した組合せ回路３の出力をラッチする。さらに、スキャン機能付きフリップフロップ２ａ〜２ｉは、シフト機能を用いて組合せ回路３のテスト結果のデータをシフト出力１４に出力する。シフト出力１４に出力されたテスト結果は、期待値と比較される。
【００２７】
選択信号１５に乱数発生器４の出力を選択する信号が入力された場合、セレクタ６は、乱数発生器４の出力を選択し、スキャンパスの初段のスキャン機能付きフリップフロップ２ａに乱数発生器４の出力を出力する。
【００２８】
乱数発生器４は、組合せ回路３のテストパタンとして用いる乱数を発生する。具体的には、フリップフロップ４１ａ〜４１ｉには、予め定められた初期値が設定される。ＥＸＯＲ４２は、フリップフロップ４１ｅの出力とフリップフロップ４１ｉの出力との排他的論理和をとって、その結果をフリップフロップ４１ａに出力する。フリップフロップ４１ａ〜４１ｉは、フリップフロップ４１ａ，４１ｂ，４１ｃ…の順にデータをシフトする。すなわち、ＥＸＯＲ４２で帰還をかけることで乱数を発生させる。フリップフロップ４１ｉは、セレクタ６に発生した乱数ビットストリームを出力する。
【００２９】
セレクタ６は、この乱数を選択し、スキャン機能付きフリップフロップ２ａに出力する。スキャン機能付きフリップフロップ２ａ〜２ｉは、シフト機能を用いて、スキャン機能付きフリップフロップ２ａ，２ｂ，２ｃ…の順に乱数発生器４が発生した乱数をシフトする。乱数がスキャン機能付きフリップフロップ２ｉまでシフトされると、スキャン機能付きフリップフロップ２ａ〜２ｉは、シフトされた乱数を組合せ回路３に入力し、組合せ回路３の出力をラッチする。乱数発生器４で発生した乱数をテストパタンとした組合せ回路３の出力をラッチすると、スキャン機能付きフリップフロップ２ａ〜２ｉは、シフト機能を用いて、スキャン機能付きフリップフロップ２ｉの出力を順にデータ圧縮器５に出力する。
【００３０】
データ圧縮器５は、スキャン機能付きフリップフロップ２ｉから入力された組合せ回路３のテスト結果のデータを圧縮する。具体的には、ＥＸＯＲ５３は、スキャン機能付きフリップフロップ２ｉより入力されたテスト結果とＥＸＯＲ５２の出力との排他的論理和をとり、その結果をフリップフロップ５１ａに出力する。フリップフロップ５１ａ〜５１ｉは、フリップフロップ５１ａ，５１ｂ，５２ｃ…の順にテスト結果のデータをシフトする。このとき、フリップフロップ５１ｅ，５１ｉの出力は、ＥＸＯＲ５２により排他的論理和がとられ、ＥＸＯＲ５３に出力される。すなわち、スキャン機能付きフリップフロップ２ｉから入力されるテスト結果のデータをフリップフロップ５１ａ〜５１ｉとＥＸＯＲ５２で構成するＬＦＳＲで発生された乱数を用いてデータ圧縮する動作を繰り返す。そして、圧縮結果であるフリップフロップ５１ｉの出力を圧縮データ１６に出力する。圧縮データ１６に出力された圧縮されたテスト結果は、期待値と比較される。このとき、テスト結果は圧縮されているので、テスト開始から終了までの全ての圧縮データ１６を期待値と比較する必要はなく、テスト終了よりデータ圧縮器５のシフトレジスタの段数分（図３の場合は、フリップフロップ５１ａ〜５１ｉの９段）前からテスト終了までのビット数を期待値と比較すればよい。
【００３１】
このようにこの実施の形態１では、ＬＦＳＲで構成した乱数発生器４で乱数を発生させ、その乱数をテストパタンに用いて組合せ回路３のテストを行う。そして、テスト結果のデータをＬＦＳＲで構成したデータ圧縮器５で圧縮し出力している。すなわち、組合せ回路３のテストパタン生成とテスト結果のデータ圧縮を半導体集積回路１内部で行っているため、シフト入力１３からテストパタンを入力する必要が無く、圧縮データ１６に出力されるテスト結果の圧縮データと期待値との比較も全て行う必要が無い。これにより、たとえば、圧縮データ１６をオシロスコープで観測して半導体集積回路の良／不良の判定が可能となる。すなわち、ＬＳＩテスタを用いることなく半導体集積回路１のテストを行い良／不良の判定が可能となる。
【００３２】
また、外部から信号を与えることなく半導体集積回路１を動作させることができるため、半導体集積回路１の初期不良を検出するためのバーインテスト時に半導体集積回路１を動作させるために入力端子１１を動作させる必要がない。これにより、バーインテストの治具を簡素化することができる。
【００３３】
さらに、選択信号１５により、組合せ回路３のテストパタンを外部からのシフト入力１３と内部の乱数発生器４のどちらかを選択するようにしているため、ウエハテストではＬＳＩテスタを用いてシフト入力１３を用いたスキャンテストを行い、ＬＳＩテスタの使用が困難なバーインテストや半導体集積回路１をシステム基盤に実装後のテストでは乱数発生器４とデータ圧縮器５を用いてテストすることができる。すなわち、半導体集積回路１の状態に適した方法でテストを行うことができる。
【００３４】
実施の形態２．
図４および図５を用いてこの発明の実施の形態２を説明する。実施の形態１では、乱数発生器４とデータ圧縮器５とを半導体集積回路１内に備え、組合せ回路３のテストパタン生成とテスト結果のデータ圧縮を実現した。しかし、乱数発生器４とデータ圧縮器５は、テストのための回路であり、半導体集積回路１の動作に不要の回路である。つまり、テストを容易化するために半導体集積回路１の回路規模が大きくなってしまう。
【００３５】
実施の形態２では、このような問題を解決するために、乱数発生器４とデータ圧縮器５とを同一回路で実現するものである。
【００３６】
図４は、実施の形態２の半導体集積回路１の構成を示すブロック図である。実施の形態２の半導体集積回路１は、乱数発生器４とデータ圧縮器５の代りに乱数発生・データ圧縮器７を備えている。実施の形態１と同じ機能を持つ構成部分には同一符号を付し、重複する説明は省略する。
【００３７】
乱数発生・データ圧縮器７は、組合せ回路３のテストパタンに用いる乱数を発生し、その乱数ビットストリームをセレクタ６に出力するとともに、発生した乱数をテストパタンに用いてテストされた組合せ回路３のテスト結果のデータを圧縮する。そして、乱数発生・データ圧縮器７は、圧縮データ１６に圧縮したテスト結果のデータを出力する。
【００３８】
図５は、図４に示した乱数発生・データ圧縮器７の構成の一例を示すブロック図である。乱数発生・データ圧縮器７は、９個のフリップフロップ７１ａ〜７１ｉと２個の排他的論理和ゲートであるＥＸＯＲ７２，７３とで構成される。フリップフロップ７１ａ〜７１ｉは、フリップフロップ７１ａ，７１ｂ，７１ｃ…の順に接続されシフトレジスタを構成し、フリップフロップ７１ｅとフリップフロップ７１ｉの出力がＥＸＯＲ７２に入力される。ＥＸＯＲ７２の出力は、ＥＸＯＲ７３に入力される。もう一方のＥＸＯＲ７３の入力には、組合せ回路３のテスト結果であるスキャン機能付きフリップフロップ２ｉの出力が入力される。ＥＸＯＲ７３の出力は、フリップフロップ７１ａに入力される。すなわち、この乱数発生・データ圧縮器７は、ＥＸＯＲ７２，７３で帰還をかけた９ビットのシフトレジスタで構成されるＬＦＳＲである。フリップフロップ７１ａ〜７１ｉとＥＸＯＲ７２とを用いて乱数を発生させ、発生した乱数を用いてＥＸＯＲ７３がテスト結果であるスキャン機能付きフリップフロップ２ｉの出力を圧縮する。フリップフロップ７１ｉは、セレクタ６と圧縮データ１６にデータを出力する。
【００３９】
つぎに、この実施の形態２の半導体集積回路１の動作を説明する。選択信号１５にシフト入力を選択する信号が入力された場合の半導体集積回路１の動作については、実施の形態１と同じ動作であるので、説明を省略する。また、乱数発生・データ圧縮器７が発生した乱数を用いて組合せ回路３のテストをする動作についても、実施の形態１と同じ動作であるので、詳細な説明は省略する。
【００４０】
選択信号１５に乱数発生器４の出力を選択する信号が入力された場合、セレクタ６は、乱数発生・データ圧縮器７の出力を選択し、スキャンパスの初段のスキャン機能付きフリップフロップ２ａに乱数発生・データ圧縮器７の出力を出力する。
【００４１】
乱数発生・データ圧縮器７は、組合せ回路３のテストパタンとして用いる乱数を発生する。具体的には、フリップフロップ７１ａ〜７１ｉには、予め定められた初期値が設定される。ＥＸＯＲ７２は、フリップフロップ７１ｅの出力とフリップフロップ７１ｉの出力との排他的論理和をとって、その結果をＥＸＯＲ７３に出力する。ＥＸＯＲ７３は、ＥＸＯＲ７２の出力とスキャン機能付きフリップフロップ２ｉの出力の排他的論理和をとり、フリップフロップ７１ａにその結果を出力する。フリップフロップ７１ａ〜７１ｉは、フリップフロップ７１ａ，７１ｂ，７１ｃ…の順にデータをシフトする。すなわち、ＥＸＯＲ７２，７３で帰還をかけることで乱数を発生させる。フリップフロップ７１ｉは、セレクタ６に発生した乱数ビットストリームを出力する。
【００４２】
セレクタ６は、この乱数を選択し、スキャン機能付きフリップフロップ２ａに出力する。スキャン機能付きフリップフロップ２ａ〜２ｉは、シフト機能を用いて、乱数発生・データ圧縮器７が発生した乱数をシフトする。スキャン機能付きフリップフロップ２ａ〜２ｉは、シフトされた乱数を組合せ回路３に入力し、組合せ回路３の出力をラッチする。そして、スキャン機能付きフリップフロップ２ａ〜２ｉは、シフト機能を用いて、スキャン機能付きフリップフロップ２ｉの出力、すなわち、テスト結果のデータを乱数発生・データ圧縮器７に出力する。
【００４３】
乱数発生・データ圧縮器７は、上述したようにフリップフロップ７１ａ〜７１ｉとＥＸＯＲ７２，７３を用いて組合せ回路３のつぎのテストパタンとなる乱数を発生させるとともにＥＸＯＲ７３にてスキャン機能付きフリップフロップ２ｉから入力された組合せ回路３のテスト結果との排他的論理和をとり、テスト結果のデータを圧縮する動作を繰り返す。そして、圧縮結果であるフリップフロップ７１ｉの出力を圧縮データ１６に出力する。圧縮データ１６に出力された圧縮されたテスト結果は、期待値と比較される。
【００４４】
このようにこの実施の形態２では、乱数発生・データ圧縮器７は、フリップフロップ７１ａ〜７１ｉとＥＸＯＲ７２，７３を用いてＬＦＳＲを構成し、組合せ回路３のテストパタンとして用いる乱数を発生させると同時に、組合せ回路３のテスト結果のデータを圧縮するようにしているため、半導体集積回路１の回路規模を抑えることができる。
【００４５】
実施の形態３．
図６を用いてこの発明の実施の形態３を説明する。実施の形態２では、テストパタンとして用いる乱数発生器とテスト結果のデータ圧縮器を同一の回路で実現することで回路規模を抑えるようにした。しかし、ＬＦＳＲを構成するフリップフロップの段数によっては、回路規模が大きくなる。
【００４６】
実施の形態３では、スキャンパスを構成するスキャン機能付きフリップフロップがシフトレジスタを構成していることに着目し、このスキャン機能付きフリップフロップを利用して、乱数発生器およびデータ圧縮器を実現するものである。
【００４７】
図６は、実施の形態３の半導体集積回路１の構成を示すブロック図である。実施の形態３の半導体集積回路１は、スキャン機能付きフリップフロップ２ａ〜２ｉと、組合せ回路３と、セレクタ６と、排他的論理和ゲートであるＥＸＯＲ８とで構成される。実施の形態１と同じ機能を持つ構成部分には同一符号を付し、重複する説明は省略する。
【００４８】
スキャン機能付きフリップフロップ２ａ〜２ｉは、スキャン機能付きフリップフロップ２ａ，２ｂ，２ｃ…の順にシリアル接続されている。フリップフロップ２ｆとフリップフロップ２ｉの出力は、ＥＸＯＲ８に入力され、排他的論理和が取られる。すなわち、選択信号１５がＥＸＯＲ８の出力を選択する信号の場合、セレクタ６を介して、スキャン機能付きフリップフロップ２ａ〜２ｉで構成されるシフトレジスタは、ＥＸＯＲ８で帰還をかけるＬＦＳＲを構成する。これにより、フリップフロップ２ａ〜２ｉとＥＸＯＲ８は、乱数発生器として機能する。また、ＥＸＯＲ８は、スキャン機能付きフリップフロップ２ｉの出力とシフトレジスタ２ｆの出力との排他的論理和をとることで、データを圧縮する。圧縮されたデータ（この場合は、スキャン機能付きフリップフロップ２ｉの出力）は、シフト出力１４に出力される。
【００４９】
つぎに、この実施の形態３の半導体集積回路１の動作を説明する。選択信号１５にシフト入力を選択する信号が入力された場合の半導体集積回路１の動作については、実施の形態１の同じ動作であるので、説明を省略する。
【００５０】
選択信号１５にスキャン機能付きフリップフロップ２ｉの出力を選択する信号が入力された場合、セレクタ６は、スキャン機能付きフリップフロップ２ｉの出力を選択し、スキャンパスの初段のスキャン機能付きフリップフロップ２ａに選択したスキャン機能付きフリップフロップ２ｉの出力を出力する。
【００５１】
スキャン機能付きフリップフロップ２ａ〜２ｉは、シフト機能を用いてスキャン機能付きフリップフロップ２ａ，２ｂ，２ｃ…の順にデータをシフトする。シフト動作毎に、ＥＸＯＲ８は、スキャン機能付きフリップフロップ２ｆの出力とスキャン機能付きフリップフロップ２ｉの出力との排他的論理和をとり、その結果を、セレクタ６を介してスキャン機能付きフリップフロップ２ａに出力する。
【００５２】
最初にスキャン機能付きフリップフロップ２ａに入力されたデータが、最終段のスキャン機能付きフリップフロップ２ｉまでシフトされると、スキャン機能付きフリップフロップ２ａ〜２ｉは、組合せ回路３の出力をラッチする。すなわち、スキャン機能付きフリップフロップ２ａ〜２ｉとＥＸＯＲ８とで生成された乱数をテストパタンとした組合せ回路３のテスト結果のデータをラッチする。
【００５３】
スキャン機能付きフリップフロップ２ａ〜２ｉは、シフト機能を用いてデータをシフトする。シフト毎にＥＸＯＲ８は、スキャン機能付きフリップフロップ２ｆの出力とスキャン機能付きフリップフロップ２ｉの出力との排他的論理和をとり、セレクタ６を介してその結果をスキャン機能付きフリップフロップ２ａに出力する。すなわち、組合せ回路３のつぎのテストパタンとなる乱数を発生させるとともにテスト結果のデータを圧縮する動作を繰り返す。そして、圧縮結果であるスキャン機能付きフリップフロップ２ｉの出力をシフト出力１４に出力する。シフト出力１４に出力された圧縮されたテスト結果は、期待値と比較される。
【００５４】
このようにこの実施の形態３では、スキャンパスを構成するスキャン機能付きフリップフロップ２ａ〜２ｉがシフトレジスタであることに着目し、ＥＸＯＲ８を追加することで、シフトレジスタに帰還をかけたＬＦＳＲを構成し、乱数発生器およびデータ圧縮器としても動作させるようにしているため、半導体集積回路１の回路規模を抑えることができる。
【００５５】
なお、ＬＦＳＲを構成するためのスキャン機能付きフリップフロップは、半導体集積回路１内の全てのスキャン機能付きフリップフロップを使用する必要はなく、スキャン機能付きフリップフロップの一部を用いるようにしてもよい。
【００５６】
実施の形態４．
図７を用いてこの発明の実施の形態４を説明する。図７は、実施の形態４の半導体集積回路１の構成を示すブロック図である。実施の形態４の半導体集積回路１は、スキャン機能付きフリップフロップ２ａ〜２ｉと、組合せ回路３と、乱数発生器４と、データ圧縮器５と、セレクタ６と、テストモードレジスタ９ａと、ＣＰＵ９ｂとで構成される。実施の形態１と同じ機能を持つ構成部分には同一符号を付し、重複する説明は省略する。
【００５７】
ＣＰＵ９ｂは、データバス９ｃにより乱数発生器４とデータ圧縮器５とテストモードレジスタ９ａに接続され、乱数発生器４およびデータ圧縮器５の初期値の設定、データ圧縮器５に蓄えられたテスト結果の圧縮データと期待値との比較を行い、組合せ回路３の良／不良を判定する。また、テストモードレジスタ９ａにシフト入力１３を用いて組合せ回路３のテストを行うか、乱数発生器４およびデータ圧縮器５を用いて組合せ回路３のテストを行うかを決定するテストモードを設定する。
【００５８】
テストモードレジスタ９ａは、ＣＰＵ９ｂにより設定されたテストモードを保持し、そのテストモードをセレクタ６に出力する。セレクタ６は、このテストモードに基づいて、シフト入力１３または乱数発生器４の出力のどちらか一方を選択する。
【００５９】
つぎに、この実施の形態４の半導体集積回路１の動作を説明する。テストモードレジスタ９ａに設定されたテストモードがシフト入力を用いて組合せ回路３のテストを行う場合の半導体集積回路１の動作と乱数発生器４が乱数を生成する動作とデータ圧縮器５がデータを圧縮する動作については、実施の形態１と同じ動作であるので、説明を省略する。
【００６０】
ＣＵＰ９ｂは、予め記憶されているプログラムにしたがってテストモードを決定し、データバス９ｃを介してテストモードレジスタ９ａにテストモードを設定する。テストモードレジスタ９ａに設定されたテストモードが、シフト入力を用いてテストを行うテストモードの場合は、セレクタ６は、シフト入力１３を選択し、スキャンパスを構成するスキャン機能付きフリップフロップ２ａ〜２ｉにデータを設定し、組合せ回路３のテストを行い、その結果をシフト出力１４に出力する。
【００６１】
乱数発生器４とデータ圧縮器５を用いて組合せ回路３のテストを行う場合、ＣＰＵ９ｂは、データバス９ｃを介して、乱数発生器４のフリップフロップ４１ａ〜４１ｉとデータ圧縮器５のフリップフロップ５１ａ〜５１ｉに初期値を設定する。その後、データバス９ｃを介してテストモードレジスタ９ａに乱数発生器４とデータ圧縮器５を用いて組合せ回路３のテストを行うテストモードを設定する。
【００６２】
セレクタ６は、乱数発生器４の出力を選択し、スキャンパスを構成するスキャン機能付きフリップフロップ２ａに出力する。スキャン機能付きフリップフロップ２ａ〜２ｉは、シフト機能を用いて順にデータをシフトし、組合せ回路３のテストを行い、その結果をデータ圧縮器５に出力する。データ圧縮器５は、テスト結果のデータを圧縮する。
【００６３】
予め定められたパタンを用いて組合せ回路３のテストが終了すると、ＣＰＵ９ｂは、データバス９ｃを介してデータ圧縮器５のデータを読み出す。そして、このデータと期待値とを比較する。ＣＰＵ９ｂは、比較結果が一致したか否かにより組合せ回路３のテスト結果の合否を判定する。
【００６４】
このようにこの実施の形態４では、所定のプログラムによりＣＰＵ９ｂが、テストモードを決定する。乱数発生器４およびデータ圧縮器５を用いてテストを行う場合、ＣＰＵ９ｂは、乱数発生器４およびデータ圧縮器５の初期値の設定、テスト結果の判定を行うようにしているため、外部端子による制御を行うことなく、半導体集積回路１のテストを行うことができる。
【００６５】
なお、実施の形態４では、乱数発生器４とデータ圧縮器５を用いて説明したが、乱数発生・データ圧縮器７を用いても同様の効果が得られる。
【００６６】
【発明の効果】
以上説明したように、この発明によれば、リニアフィードバックシフトレジスタで構成した乱数発生器で乱数を発生させ、その乱数をテストパタンに用いて組合せ回路のテストを行い、そのテスト結果のデータをリニアフィードバックシフトレジスタで構成したデータ圧縮器で圧縮して外部端子に出力するようにしているため、ＬＳＩテスタを用いることなく半導体集積回路のテストを行うことができる。
【００６７】
つぎの発明によれば、セレクタは、選択信号に基づいてシフト入力から入力されるテストパタンと乱数発生器で生成されたテストパタンのどちらか一方を選択してスキャン機能付きフリップフロップの初段に入力するようにしているため、ウエハテストではＬＳＩテスタを用いてシフト入力を用いたスキャンテストを行い、ＬＳＩテスタでのテストが困難なバーイン中や実装後のテストでは乱数発生器とデータ圧縮器を用いてテストを行うことができる。
【００６８】
つぎの発明によれば、ＣＰＵは、乱数発生器を構成するリニアフィードバックシフトレジスタとデータ圧縮器を構成するリニアフィードバックシフトレジスタに初期値を設定し、データ圧縮器により圧縮されたテスト結果のデータを読み出し、読み出したデータと予め定められた期待値とを比較して良／不良を判定するようにしているため、外部端子による制御を行うことなく半導体集積回路のテストを行うことができる。
【００６９】
つぎの発明によれば、乱数発生器とデータ圧縮器を１個のリニアフィードバックシフトレジスタで構成し、テストパタンに用いる乱数を発生させると同時に、組合せ回路のテスト結果のデータを圧縮するようにしているため、半導体集積回路のテストのための回路規模を抑えることができる。
【００７０】
つぎの発明によれば、スキャンパスを構成するスキャン機能付きフリップフロップがシフトレジスタであることに着目し、このシフトレジスタに排他的論理和ゲートで帰還をかけリニアフィードバックシフトレジスタを構成し、スキャン機能付きフリップフロップを乱数発生器およびデータ圧縮器として動作させるようにしているため、半導体集積回路のテストのための回路規模を抑えることができる。
【図面の簡単な説明】
【図１】実施の形態１の半導体集積回路の構成を示すブロック図である。
【図２】図１に示した乱数発生器の構成の一例を示すブロック図である。
【図３】図１に示したデータ圧縮器の構成の一例を示すブロック図である。
【図４】実施の形態２の半導体集積回路の構成を示すブロック図である。
【図５】図２に示した乱数発生・データ圧縮器の構成の一例を示すブロック図である。
【図６】実施の形態３の半導体集積回路の構成を示すブロック図である。
【図７】実施の形態４の半導体集積回路の構成を示すブロック図である。
【図８】従来の半導体集積回路の構成を示すブロック図である。
【符号の説明】
１，１００　半導体集積回路、２ａ，２ｂ，２ｃ，２ｄ，２ｅ，２ｆ，２ｇ，２ｈ，２ｉ，１１０，１１１，１１２，１１３，１１４，１１５，１１６，１１７，１１８　スキャン機能付きフリップフロップ、３，１２０　組合せ回路、４乱数発生器、５　データ圧縮器、６　セレクタ、７　乱数発生・データ圧縮器、８，４２，５２，５３，７２，７３　ＥＸＯＲ、９ａ　テストモードレジスタ、９ｂ　ＣＰＵ、９ｃ　データバス、１１，１３０　入力端子、１２，１４０　出力端子、１３，１５０　シフト入力、１４，１６０　シフト出力、１５　選択信号、１６　圧縮データ、４１ａ，４１ｂ，４１ｃ，４１ｄ，４１ｅ，４１ｆ，４１ｇ，４１ｈ，４１ｉ，５１ａ，５１ｂ，５１ｃ，５１ｄ，５１ｅ，５１ｆ，５１ｇ，５１ｈ，５１ｉ，７１ａ，７１ｂ，７１ｃ，７１ｄ，７１ｅ，７１ｆ，７１ｇ，７１ｈ，７１ｉ　フリップフロップ。
【図１】
2004045152.tif 000003
【図２】
2004045152.tif 000004
【図３】
2004045152.tif 000005
【図４】
2004045152.tif 000006
【図５】
2004045152.tif 000007
【図６】
2004045152.tif 000008
【図７】
2004045152.tif 000009
【図８】
2004045152.tif 000010