(57)【要約】【課題】  集積回路が稼動中でも故障診断が可能であり、この集積回路の診断中に別の回路からのアクセスが起こっても、このアクセスに応答しながら診断動作を続けたり、適切に診断動作を中断して診断前の状態に復帰したりすることが可能な集積回路を提供する。【解決手段】  論理回路１の診断回路２を有する集積回路において、論理回路１の内部状態を保持するレジスタ５４と、レジスタ５４に保持された内部状態を論理回路１に入力できる復帰回路４を有し、集積回路は通常動作と診断動作の切り替えが可能であり、通常動作から診断動作に移行する間に論理回路１の内部状態をレジスタ５４に保持して診断動作となり、診断動作中に集積回路に対して起こったアクセスに対してはレジスタ５４によって応答したり、復帰回路４によってレジスタ５４に保持した内部状態を論理回路１に復帰させたりする。【選択図】  図１
2006300650.tif 000002
【特許請求の範囲】
【請求項１】
論理回路と、前記論理回路の故障診断を行う診断回路とから成る集積回路であって、
前記論理回路の内部状態を保持する記憶回路と、前記記憶回路に保持された内部状態を前記論理回路に入力する復帰回路とを有し、
前記論理回路が通常動作中は前記診断回路と前記記憶回路と前記復帰回路は動作を行わず、前記論理回路が通常動作から診断動作に移行する間に前記論理回路の内部状態が前記記憶回路に保持され、前記診断回路が動作して前記論理回路の故障診断を行う診断動作中となり、前記論理回路が診断動作から通常動作に移行する間に前記復帰回路によって前記記憶回路に保持された内部状態が前記論理回路に入力されることを特徴とする集積回路。
【請求項２】
請求項１記載の集積回路において、
前記論理回路への入力信号を元に前記論理回路へ診断を開始することを示す診断開始信号を出力し、診断動作から通常動作へ移行することを示す復帰要求信号を前記復帰回路へ出力する応答回路を有し、
前記論理回路が通常動作中は前記診断開始信号と前記復帰要求信号を無効にしたまま通常動作を続け、前記診断開始信号が有効になると前記論理回路が通常動作から診断動作へ移行し、前記論理回路が診断動作中に前記論理回路に対するアクセスがあった場合は、前記応答回路が前記アクセスの内容を判断して前記復帰回路に復帰要求信号を有効にして出力し、前記復帰回路は前記記憶回路に保持された内部状態を前記論理回路に入力して前記論理回路を通常動作に移行させることを特徴とする集積回路。
【請求項３】
請求項２記載の集積回路において、
出力データを制御するデータ出力信号が前記応答回路から前記論理回路に入力され、前記論理回路が診断動作中に前記論理回路に対するアクセスによって値の出力を要求された場合は前記データ出力信号を有効にして前記記憶回路に保持された値を前記論理回路の外部に出力し、前記論理回路は診断動作を続けることを特徴とする集積回路。
【請求項４】
請求項１記載の集積回路において、
前記診断回路は、組み込み型自己診断方式であるＢＩＳＴ構造により、診断用のスキャンインデータを生成する擬似乱数パターン発生回路と、前記スキャンインデータを前記論理回路に挿入して試験動作後に取り出されるスキャンアウトデータを圧縮して出力する圧縮回路とを含み、
期待値を保持するメモリと、前記圧縮回路により出力された圧縮結果と前記期待値とを比較する比較器とを有し、
前記論理回路が通常動作中は前記擬似乱数パターン発生回路と前記圧縮回路は動作を行わず、前記論理回路が診断動作中は前記擬似乱数パターン発生回路からスキャンインデータが生成されて前記論理回路に挿入され、前記論理回路から出力されるスキャンアウトデータが前記圧縮回路に入力されて得られた圧縮結果と、前記メモリに保持された前記期待値とを前記比較器によって比較することで前記論理回路の故障検出を行うことを特徴とする集積回路。
【請求項５】
請求項４記載の集積回路において、
前記擬似乱数パターン発生回路から生成されるスキャンインデータの順列を一時的に保持するパターン保持回路と、前記論理回路から出力される第１の圧縮結果の順列を一時的に保持し、前記第１の圧縮結果の順列を保持したタイミングと別のタイミングで保持された第２の圧縮結果の順列を統合する診断結果統合回路とを有し、
前記論理回路が診断動作から通常動作へ移行するときに前記パターン保持回路は診断中のスキャンインデータを保持し続け、前記診断結果統合回路は統合された圧縮結果を保持し続け、論理回路が通常動作から診断動作へ移行するときに前記保持されたスキャンインデータを前記論理回路へ挿入して前記論理回路の診断動作を再開し、前記保持された圧縮結果と前記圧縮回路から出力される圧縮結果を統合することを特徴とする集積回路。
【請求項６】
請求項１記載の集積回路において、
ｎ個の論理回路と、前記ｎ個の論理回路から出力されるｎ個の内部状態信号を選択して前記記憶回路に出力するセレクタとを有し、
前記ｎ個の論理回路のうち、１個の論理回路が診断動作中となって前記セレクタに内部状態が保持されることを特徴とする集積回路。
【請求項７】
請求項６記載の集積回路において、
前記ｎ個の論理回路がそれぞれ数値で示される優先度を有し、前記優先度の高いものほど診断動作に費やす時間が長くなることを特徴とする集積回路。
【請求項８】
請求項７記載の集積回路において、
前記優先度の高いものほど通常動作から診断動作へ切り替わる回数が多くなることを特徴とする集積回路。
【請求項９】
請求項８記載の集積回路において、
前記ｎ個の論理回路が前記優先度を保持する優先度記憶回路を有し、前記優先度記憶回路に保持される値は命令やプログラムによって値を書き換えることが可能なことを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理回路と、この論理回路の故障診断を行う診断回路から成る集積回路に関し、特に、この論理回路が稼動中に発生した故障を検出する技術に適用して有効な技術に関するものである。
【背景技術】
【０００２】
例えば、自動車におけるエックス・バイ・ワイヤ（Ｘ−ｂｙ−Ｗｉｒｅ）技術や、より高速で安全な鉄道システムなど、電子機器による制御システムが必要不可欠な社会において、それらシステムの中核を成す集積回路に要求される事項としては、大量生産を実現する低コスト化や、安全性を保障する高信頼化が求められている。
【０００３】
集積回路を高信頼化するための手法として、故障を検出する診断回路を集積回路に組み込み、集積回路の稼動時に特定のタイミングで診断回路を動作させて故障を検出する仕組みなどがあり、一例として特許文献１に示されたものがある。
【０００４】
この例では、集積回路が稼動中に回路の診断が可能なタイミングを予めプロトコルで規定しておき、集積回路が診断可能な期間において、集積回路の内部状態を破壊しない試験データを挿入して該集積回路の診断を行う手法が示されている。
【特許文献１】特開２００２−１４８３１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、前記のような集積回路の診断回路について、本発明者が検討した結果、以下のようなことが明らかとなった。
【０００６】
例えば、集積回路が稼動中に診断をしても良いタイミングを予めプロトコルによって規定し、診断が可能な期間にしか診断できないため、例えば、自動車システムなどにおいて、この集積回路が診断動作中であり、かつ予想外の急ブレーキなどに対するアクセスが求められた場合、即座に診断を中止して前記アクセスに対する応答はできないので、高いリアルタイム性が要求される場合への適用が困難である。あるいは、応答するためには診断を中断して、この集積回路を再起動する必要があったため、特にリアルタイム性の要求されるようなシステムに搭載された集積回路の稼動時診断をすることができなかった。
【０００７】
また、１つの集積回路に対し専用の診断回路が必要になるため、トランジスタ数が増加して集積回路のコストが増加したり、特定の試験データを挿入しなければならないので故障検出率があまり上がらなかったりという問題が考えられる。
【０００８】
そこで、本発明の目的は、集積回路が稼動中でも故障診断が可能な診断回路を有する集積回路であって、この集積回路の診断中に別の回路からのアクセスが起こっても、このアクセスに応答しながら診断動作を続けたり、適切に診断動作を中断して診断前の状態に復帰したりすることが可能な集積回路を提供することである。
【０００９】
更に、１つの診断回路で複数の集積回路の診断を行うことで、トランジスタ数の増大を防ぎ、コスト性に優れた集積回路を提供することである。
【００１０】
また更に、故障検出率の高い診断手法を活用し、集積回路の信頼性をより高めることである。
【００１１】
本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１２】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１３】
すなわち、本発明は、論理回路と、論理回路の故障診断を行う診断回路から成る集積回路において、論理回路の内部状態を保持する記憶回路と、記憶回路に保持された内部状態を論理回路に入力する復帰回路を有し、論理回路が通常動作中は診断回路と記憶回路と復帰回路は動作を行わず、論理回路が通常動作から診断動作に移行する間に論理回路の内部状態が記憶回路に保持され、診断回路が動作して論理回路の故障診断を行う診断動作中となり、論理回路が診断動作から通常動作に移行する間に復帰回路によって記憶回路に保持された内部状態が論理回路に入力されることを特徴とし、この集積回路の故障検出を可能にするものである。
【００１４】
また、本発明の集積回路において、診断回路は、組み込み型自己診断方式であるＢＩＳＴ（Ｂｕｉｌｔ−Ｉｎ−Ｓｅｌｆ−Ｔｅｓｔ）構造の採用に加え、生成されるスキャンインデータの順列を一時的に保持するパターン保持回路と、論理回路から出力される第１の圧縮結果の順列を一時的に保持し、第１の圧縮結果の順列を保持したタイミングと別のタイミングで保持された第２の圧縮結果の順列を統合する診断結果統合回路を有し、論理回路が診断動作から通常動作へ移行するときにパターン保持回路は診断中のスキャンインデータを保持し続け、診断結果統合回路は統合された圧縮結果を保持し続け、論理回路が通常動作から診断動作へ移行するときに保持されたスキャンインデータを論理回路へ挿入して論理回路の診断動作を再開し、保持された圧縮結果と圧縮回路から出力される圧縮データを統合することを特徴とし、診断動作の中断と再開を可能にするものである。
【発明の効果】
【００１５】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下のとおりである。
【００１６】
（１）集積回路が診断動作中にアクセスが来ても診断を中断することなく応答したり、適切に診断を中断して通常動作に復帰して応答したりすることが可能な集積回路を実現することができ、リアルタイム性が必要とされるシステムに対しても、この集積回路を適用することができる。
【００１７】
（２）集積回路の稼動中にＢＩＳＴを使った故障診断を行うことができ、更に故障診断中の回路へのアクセスによって故障診断を中断した場合、中断時のスキャンインデータと診断の途中結果を保持しておき、再び診断動作に入った時に中断したスキャンインデータから再開することができる。
【００１８】
（３）一組の診断回路で、共通のインタフェースを持つ複数の集積回路の診断を行うことができ、集積回路の製造コストの増大を抑えることができる。
【発明を実施するための最良の形態】
【００１９】
（本発明の概念）
図１は、本発明に係る集積回路の構成の一例を示すブロック図である。
【００２０】
本発明に係る集積回路は、論理回路１と、この論理回路１の故障診断を行う診断回路２と、論理回路１の内部状態を保持する記憶回路であるレジスタ５４と、このレジスタ５４に保持された内部状態を論理回路１に入力する復帰回路４などを有して構成される。更には、後述の図２に示すが、論理回路１への入力信号を元に論理回路１へ診断を開始することを示す診断開始信号を出力し、診断動作から通常動作へ移行することを示す復帰要求信号を復帰回路４へ出力する応答回路３を有する。
【００２１】
本発明に係る集積回路では、集積回路が稼動中でも故障診断を行うことができる診断回路２を有し、集積回路の診断中に別の回路からのアクセスが来ても、このアクセスに応答しながら診断を続けたり、適切に診断動作を中断して診断前の状態に復帰したりすることが可能な集積回路を実現している。
【００２２】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００２３】
（実施の形態１）
図２は、本発明の実施の形態１における集積回路の構成の一例を示すブロック図であり、この例では、前記図１に示した、論理回路１、応答回路３、復帰回路４、レジスタ５４を相互に接続した形で回路を表している。
【００２４】
本実施の形態においては、論理回路１は診断回路２を内蔵しており、診断回路２の構成の一例の詳細は後述する。なお、診断回路２は、論理回路１に内蔵される場合に限らず、前記図１のように別々に設けることも可能である。
【００２５】
この論理回路１は、値を保持するスキャンレジスタ５１，５２，５３を内蔵しており、それぞれの間が組合せ論理回路５５，５６及びセレクタ５７によって接続され、ラッチ５８，５９、トライステートバッファ６０を経て、出力４０７，４０８に出力される構造となっている。
【００２６】
図３は、スキャンレジスタ５１の詳細構成の一例を示す図である。
【００２７】
スキャンレジスタ５１は、セレクタ７２とリセット付きフリップフロップ７１で構成されており、診断選択信号３０３の値が０の時は論理回路５５からの信号４０１を選択し、一方、診断選択信号３０３の値が１の時はスキャンインデータ３０２を選択して、リセット付きフリップフロップ７１へ出力する。
【００２８】
リセット付きフリップフロップ７１は、復帰制御信号２０２の値が１の時に初期値が設定され、それ以外の時はセレクタ７２から入力された値４０３を出力する。
【００２９】
図２のスキャンレジスタ５２，５３についても、図３と同様の構成である。
【００３０】
図２の論理回路１は、通常動作と診断動作の２つの動作をすることができ、通常動作中は診断選択信号３０３の値が０であり、データ選択信号２０３の値も０である。
【００３１】
通常動作中はコマンド出力１０２の値により論理回路１に対する動作が異なり、コマンド出力１０２およびコマンド１０１は、Ｎｏｎ−ＯＰｅｒａｔｏｎコマンド（“ＮＯＰ”）、リードコマンド（“ＲＤ”）、ライトコマンド（“ＷＲ”）の３種類を持ち、論理回路１のスキャンレジスタ５２に対して単一のリード動作、ライト動作ができる。
【００３２】
このスキャンレジスタ５２は論理回路１の制御を外部からコントロールする上で必要なレジスタであるが、スキャンレジスタ５１と５３は論理回路１の動作を実装する上で必要なレジスタであり、制御をコントロールするためのレジスタではない。
【００３３】
スキャンレジスタ５２の値は、ラッチ５８とトライステートバッファ６０を経て、出力４０８として読み出すことができ、また、ラッチ５８と５９は、ラッチホールド信号１０８の値が１の時は入力された値をそのまま出力するが、ラッチホールド信号１０８の値が０の時は直前に入力された値を保持し続ける。
【００３４】
また、出力４０８はいわゆるデータバスに接続することがあり、他の集積回路から出力される信号との競合を防ぐため、スキャンレジスタ５２の値をリードする要求があるとき以外はトライステートバッファ６０の働きによってハイインピーダンス状態を出力するように、応答回路３より出力される出力タイミング信号１０９によって制御される。
【００３５】
出力タイミング信号１０９の値が０のときはトライステートバッファ６０のはたらきによって出力４０８をハイインピーダンスにし、出力タイミング信号１０９の値が１の時は、出力４０８はラッチ５８から出力される信号４０９を出力する。
【００３６】
また、レジスタ５４は診断開始信号１０５の値が１の時にイネーブルとなって信号４０４の値を保持し、診断開始信号１０５の値が０の時には前のクロックサイクルの値を保持し続ける。
【００３７】
図４は、応答回路３の詳細構成の一例を示す図である。
【００３８】
外部からのコマンド１０１はバッファ７４を経てコマンド出力１０２として出力される。
【００３９】
データ１０３は、バッファ７５を経てデータ出力１０４として出力される一方、イネーブル付きフリップフロップ７３にも入力され、保持データイネーブル回路６による保持データイネーブル信号１１２のタイミングで保持され、保持データ１１１として出力される。
【００４０】
保持データイネーブル回路６は、診断状態信号１０７の値が１かつコマンド１０１が“ＷＲ”の時に保持データイネーブル信号１１２の値を１にする回路である。
【００４１】
応答ステートマシン回路５は、コマンド１０１と診断状態信号１０７の各入力をもとに、診断開始信号１０５、復帰要求信号１０６、ラッチホールド信号１０８、出力タイミング信号１０９の各出力を制御するもので、回路動作の詳細は、図５の状態遷移図に示す。
【００４２】
図５は、応答ステートマシン回路５の制御の詳細の一例を示す状態遷移図であり、メインシーケンスをミーリ型記述で表し、図５中の矢印は遷移を表すもので符号とともに遷移条件／出力を記載している。
【００４３】
応答回路３のメインシーケンスにおけるステートとして、まず、通常動作中に関連するものとして、有効なコマンドが無いＩＤＬＥステート１５１、リードアクセスが起こったＲＥＡＤステート１５２、ライトアクセスが起こったライトステート１５３がある。
【００４４】
更に、診断動作中に関連するものとして、診断が開始されるＴＳＴＡＴステート１５４、診断中を表すＴＥＳＴステート１５５、診断中にリードアクセスが起こったＴＲＥＡＤステート１５６、診断終了後に通常動作に復帰するＲＥＣＯＶステート１５７、診断動作中にライトアクセスが起こったために通常動作に復帰するＷＲＥＣステート１５８がある。
【００４５】
応答ステートマシン回路５の初期状態はＩＤＬＥステート１５１であり、コマンド１０１（ｃｍｄ）が“ＲＤ”であれば、遷移２５１によりＲＥＡＤステート１５２に移行してリード動作が行われた後、遷移２５２によりＩＤＬＥステート１５１に戻り、またＩＤＬＥステート１５１においてコマンド１０１（ｃｍｄ）が“ＷＲ”であれば、遷移２５３によりＷＲＩＴＥステート１５３に移行してライト動作が行われた後、遷移２５４によりＩＤＬＥステート１５１に戻る。
【００４６】
ＩＤＬＥステート１５１において、コマンド１０１（ｃｍｄ）が“ＮＯＰ”である場合、論理回路１に対してのアクセスが無いと判断し、遷移２５５により診断開始信号１０５（ｔｓｔａｒｔ）の値を１にして出力し、診断を開始するＴＳＴＡＴステート１５４に移行する。
【００４７】
ＴＳＴＡＴステート１５４に移行後、続けて遷移２５６によりＴＥＳＴステート１５５に移行するが、このとき診断開始信号１０５（ｔｓｔａｒｔ）の値は０に、ラッチホールド信号１０８（ｌｈｏｌｄ）の値は０として出力される。
【００４８】
診断動作中であるＴＥＳＴステート１５５では、コマンド１０１（ｃｍｄ）が“ＮＯＰ”でかつ診断状態信号１０７（ｔｅｓｔ）の値が１である限り、遷移２５７によって各出力信号の値を保持したままＴＥＳＴステート１５５にとどまり、診断動作を続けている。
【００４９】
ＴＥＳＴステート１５５において、コマンド１０１（ｃｍｄ）が“ＮＯＰ”でかつ診断状態信号１０７（ｔｅｓｔ）の値が０になったら、診断動作が終了したことになるので、遷移２６０によって復帰要求信号１０６（ｒｅｃｔ）の値を１にし、ＲＥＣＯＶステート２６１に移行する。
【００５０】
ＲＥＣＯＶステート２６１では論理回路１が診断動作から通常動作に復帰するために必要なクロックサイクル中は遷移２６１によりＲＥＣＯＶステート１５７にとどまり、復帰要求信号１０６（ｒｅｃｔ）の値に１を出力し続ける。
【００５１】
復帰するために必要なクロックサイクルが終了後、遷移２６２により復帰要求信号１０６（ｒｅｃｏｖ）の値を０に戻し、ラッチホールド信号１０８（ｌｈｏｌｄ）の値を１にして、ＩＤＬＥステート１５１に移行する。
【００５２】
ＴＥＳＴステート１５５において、コマンド１０１（ｃｍｄ）が“ＲＤ”になって論理回路１のスキャンレジスタ５２に対するリードアクセスが起こった場合、論理回路１は診断動作中であるが、レジスタ５４にスキャンレジスタ５２の値が保持されているので、これを利用して応答することが可能で、これはＴＲＥＡＤステート１５６を使って実現する。
【００５３】
ＴＥＳＴステート１５５からコマンド１０１（ｃｍｄ）が“ＲＤ”になったことを受け、遷移２５８によってＴＲＥＡＤステート１５６に移行する。
【００５４】
ＴＲＥＡＤステート１５６においてリードアクセスに応答した後、遷移２５９によって再びＴＥＳＴステート１５５に移行するが、このとき出力タイミング信号１０９（ｄｔｉｍｅ）の値を１にして出力する。
【００５５】
ＴＥＳＴステート１５５において、コマンド１０１（ｃｍｄ）が“ＷＲ”になって論理回路１のスキャンレジスタ５２へのライトアクセスが起こった場合、診断動作中である論理回路１を通常動作に戻してライト動作を行わなければならず、これはＷＲＥＣステート１５８を使って実現する。
【００５６】
ＴＥＳＴステート１５５からコマンド１０１（ｃｍｄ）が“ＷＲ”になったことを受け、遷移２６３によってＷＲＥＣステート１５８に移行し、このときに復帰要求信号１０６（ｒｅｃｔ）の値を２にする。
【００５７】
ＷＲＥＣステート１５８では、論理回路１が診断動作から通常動作に復帰するために必要なクロックサイクル中は遷移２６４によりＷＲＥＣステート１５８にとどまり、復帰要求信号１０６（ｒｅｃｔ）の値に２を出力し続ける。
【００５８】
復帰するために必要なクロックサイクルが終了後、遷移２６５によりＷＲＩＴＥステート１５３に移行する際に、復帰要求信号１０６（ｒｅｃｔ）の値を０に戻し、ラッチホールド信号１０８（ｌｈｏｌｄ）の値を１にして、診断動作中に発生したライトアクセスによるライトデータを正しくスキャンレジスタ５２に反映させる。
【００５９】
図６は、復帰回路４の詳細構成の一例を示す図である。
【００６０】
フリップフロップ７６のはたらきにより、復帰要求信号１０６（ｒｅｃｔ）は、１クロックサイクル遅れて復帰要求バッファ信号１１０（ｒｅｃｔｂ）として出力される。
【００６１】
また、復帰ステートマシン回路７は、復帰要求信号１０６、保持データ１１１、レジスタデータ２０１の各入力をもとに、復帰制御信号２０２、データ選択信号２０３、復帰データ２０４の各出力を制御するもので、回路動作の詳細は、図７の状態遷移図に示す。
【００６２】
図７は、復帰ステートマシン回路７の制御の詳細の一例を示す状態遷移図であり、メインシーケンスをミーリ型記述で表したものである。
【００６３】
復帰回路４のメインシーケンスにおけるステートとして、復帰回路４に対するアクセスが起こらず待ち状態であるＷＡＩＴステート１６１、診断動作から通常動作に復帰するための制御を行うＲＥＣＯＶステート１６２がある。
【００６４】
復帰ステートマシン回路７の初期状態はＷＡＩＴステート１６１であり、復帰要求信号１０６（ｒｅｃｔ）の値が０である間は遷移２７１によりＷＡＩＴステート１６１にとどまり、復帰制御信号２０２（ｒｅｃｏｖ）、データ選択信号２０３（ｒｓｅｌ）の値をそれぞれ０にして出力し、復帰データ２０４（ｒｏｕｔ）の出力値は特に指定しないので“ｘ”で表している。
【００６５】
ＷＡＩＴステート１６１において復帰要求信号１０６（ｒｅｃｔ）の値が１または２になると、遷移２７２により復帰制御信号２０２（ｒｅｃｏｖ）の値を１に、データ選択信号２０３（ｒｓｅｌ）の値を１に、復帰データ２０４（ｒｏｕｔ）の値としてレジスタデータ２０１（ｒｄａｔａ）を出力し、ＲＥＣＯＶステート１６２に移行する。
【００６６】
ＲＥＣＯＶステート１６２では、論理回路１が診断動作から通常動作に復帰するために必要なクロックサイクル中は遷移２７３によりＲＥＣＯＶステート１６２にとどまり、復帰制御信号２０２（ｒｅｃｏｖ）の値に１を、データ選択信号２０３（ｒｓｅｌ）の値に１をそれぞれ出力し続け、復帰データ２０４（ｒｏｕｔ）にはレジスタデータ２０１（ｒｄａｔａ）を選択して出力し続けることで、診断動作前のスキャンレジスタ５２の値を復帰させる。
【００６７】
復帰するために必要なクロックサイクルが終了後、遷移２７４によりＷＡＩＴステート１６１に移行する際に、復帰制御信号２０２（ｒｅｃｏｖ）の値を０に戻し、データ選択信号２０３（ｒｓｅｌ）の値を１にし、復帰データ２０４（ｒｏｕｔ）には、復帰要求バッファ信号１１０（ｒｅｃｔｂ）の値によって、レジスタデータ２０１（ｒｄａｔａ）か保持データ１１１（ｗｄａｔａ）のいずれかを選択して出力することで、診断動作前の値をスキャンレジスタ５２に戻したり、診断動作中に発生したライトアクセスによるライトデータを正しくスキャンレジスタ５２に反映させたりする。
【００６８】
図２に示す論理回路１内の診断回路２は、診断動作中に論理回路１に対して診断用のデータを挿入し、その結果を解析して故障検出を行う自己診断回路である。
【００６９】
この例では、診断回路２はいわゆるスキャンテスト回路で実装されており、通常動作中は診断状態信号１０７の値を０として出力するが、診断動作中は診断状態信号１０７の値を１として出力し、スキャンデータ３０２からスキャンインデータを挿入し、論理回路１から出力されるスキャンアウトデータ３０５を取り込んで、内部で妥当性を判断することで論理回路１の故障診断を行うものである。
【００７０】
図８は、集積回路が通常動作から診断動作に移行し、診断動作中にリードアクセスが起こった場合の各信号の波形の一例を示す図であり、図２の論理回路１と応答回路３、復帰回路４、レジスタ５４を使い、診断動作中にスキャンレジスタ５２へのリードアクセスが起こった場合の動作波形を示したものである。
【００７１】
この論理回路１はクロック信号に同期して動作する回路で、図８はクロックサイクルａからクロックサイクルｋまでの各信号の動作波形を示し、クロックサイクルｅは、各信号値が直前のクロックサイクルｄと同じ状態がしばらく続いていることを表す。
【００７２】
出力４０８はスキャンレジスタ５２の値を論理回路１の外部に出力するための信号であるが、トライステートバッファ６０のはたらきにより、リードアクセスが起こっていない期間はハイインピーダンス状態であり、網掛けで示されている。
【００７３】
また、応答ステートは図５で示した各ステート、復帰ステートは図７で示した各ステートに相当する。
【００７４】
図８では、まずクロックサイクルａでコマンド１０１（ｃｍｄ）が“ＲＤ”となってリードアクセスが起こり、次のクロックサイクルｂで出力タイミング信号１０９（ｄｔｉｍｅ）の値が１となって出力４０８にスキャンレジスタ５２に保持されていた値“Ａ”が読み出される。
【００７５】
クロックサイクルｃで出力タイミング信号１０９（ｄｔｉｍｅ）の値が０になって出力４０８はハイインピーダンス状態に戻り、コマンド１０５（ｃｍｄ）が“ＮＯＰ”でアイドル状態であることを受け、論理回路１を通常動作から診断動作するため診断開始信号１０５（ｔｓｔａｒｔ）の値が１になり、応答ステートはＴＳＴＡＴステート１５４に移行する。
【００７６】
このとき、スキャンレジスタ５２に保持されている値“Ａ”はレジスタ５４に保持される。
【００７７】
クロックサイクルｃで応答ステートがＴＳＴＡＴステート１５４になったことを受け、クロックサイクルｄでは診断回路２から診断状態信号１０７（ｔｅｓｔ）の値に１が出力され、診断開始信号１０５（ｔｓｔａｒｔ）の値は０になって診断動作中となる。
【００７８】
このクロックサイクルｄでラッチホールド信号１０８（ｌｈｏｌｄ）の値が０になるので、診断動作中の論理回路１の出力４０７の値は固定され、外部の別の集積回路に対しては影響を与えず、またスキャンレジスタ５２の値“Ａ”はラッチ５８で保持される。
【００７９】
クロックサイクルｅからクロックサイクルｆは、クロックサイクルｄにより開始された論理回路１の診断が続いている状態を示しており、応答ステートはＴＥＳＴステート１５５のまま、各信号の値に変化は無い。
【００８０】
クロックサイクルｇで、論理回路１が診断動作中であるときにコマンド１０１（ｃｍｄ）が“ＲＤ”となりリードアクセスが起こった場合、遷移２５８によって応答ステートはＴＥＳＴステート１５５からＴＲＥＡＤステート１５６に移行し、更にクロックサイクルｈで遷移２５９によりＴＲＥＡＤステート１５６からＴＥＳＴステート１５５に戻る際に出力タイミング信号１０９（ｄｔｉｍｅ）の値が１になるので、トライステートバッファ６０は一時的にハイインピーダンス状態からスキャンレジスタ５２の値を出力する状態になり、クロックサイクルｈにおける出力４０８の値はスキャンレジスタ５２に保持されている値“Ａ”が出力される。
【００８１】
このようにクロックサイクルｇ，ｈにおけるリード動作では、応答ステートマシン回路５、ラッチ５８、トライステートバッファ６０の働きによって、診断動作を中断させることなくリードアクセスに対応する。
【００８２】
クロックサイクルｊで、診断回路２より出力される診断状態信号１０７（ｔｅｓｔ）の値が０になり、論理回路１の診断が終了したことを受け、応答ステートは遷移２６０によりＴＥＳＴステート１５５からＲＥＣＯＶステート１５７へ移行し、復帰ステートは遷移２７２によりＷＡＩＴステート１６１からＲＥＣＯＶステート１６２へ移行する。
【００８３】
この論理回路１は診断動作から通常動作へ復帰するのにクロックサイクルｊとｋの２クロックサイクルを要し、その間、遷移２６１によって応答ステートはＲＥＣＯＶステート２６１にとどまり続け、復帰要求信号１０６（ｒｅｃｔ）の値を１にして出力し続ける。
【００８４】
一方、遷移２７３により復帰ステートはＲＥＣＯＶステート１６２にとどまり続けるので、その間、復帰制御信号２０２（ｒｅｃｏｖ）の値は１が出力されて論理回路１内の各レジスタを初期化し、データ選択信号２０３（ｒｓｅｌ）の値は１が出力され復帰データ２０４（ｒｏｕｔ）にはレジスタデータ２０１（ｒｄａｔａ）が出力され、論理回路１を通常動作に復帰させる。
【００８５】
クロックサイクルｌにおいて遷移２６２により応答ステートはＩＤＬＥステート１５１に戻り、復帰要求信号１０６（ｒｅｃｔ）の値が０になるので、遷移２７４により復帰ステートはＷＡＩＴステート２７１に戻る。
【００８６】
このクロックサイクルｌでは、復帰要求バッファ信号（ｒｅｃｔｂ）の値が１なので、復帰データ２０４（ｒｏｕｔ）の値にはレジスタデータ２０１（ｒｄａｔａ）を続けて出力し、スキャンレジスタ５２の値が診断動作前の状態に戻り、再び論理回路１が動作を続けていく。
【００８７】
図９は、集積回路が通常動作から診断動作に移行し、診断動作中にライトアクセスが起こった場合の各信号の波形の一例を示す図であり、論理回路１の別の動作波形であるが、クロックサイクルａからｆまでは図８で示した波形と同じで、クロックサイクルｇでコマンド１０１（ｃｍｄ）が“ＷＲ”となった場合を示している。
【００８８】
クロックサイクルｇにおいて、論理回路１が診断動作中であるときにコマンド１０１（ｃｍｄ）が“ＷＲ”となりライトアクセスが起こった場合、遷移２６３によって応答ステートはＴＥＳＴステート１５５からＷＲＥＣステート１５８に移行し、復帰ステートは遷移２７２によりＷＡＩＴステート１６１からＲＥＣＯＶステート１６２へ移行する。
【００８９】
論理回路１が診断動作から通常動作へ復帰するクロックサイクルｇとｈの間、遷移２６４によって応答ステートはＷＲＥＣステート１５８にとどまり、復帰要求信号１０６（ｒｅｃｔ）の値を２にして出力し続け、遷移２７３によって復帰ステートはＲＥＣＯＶステート１６２にとどまり続ける。
【００９０】
クロックサイクルｉにおいて遷移２６５により応答ステートはＷＲＩＴＥステート１５３に移行し、復帰要求信号１０６（ｒｅｃｔ）の値が０になるので、遷移２７４により復帰ステートはＷＡＩＴステート２７１に戻る。
【００９１】
このクロックサイクルｉでは復帰要求バッファ信号（ｒｅｃｔｂ）の値が２なので、復帰データ２０４（ｒｏｕｔ）の値には保持データ１１１（ｗｄａｔａ）を出力し、スキャンレジスタ５２の値が診断動作前の状態に戻り、スキャンレジスタ５２へのライト動作を行う。
【００９２】
ライト動作が行われた後、クロックサイクルｊでは遷移２５４によって応答ステートはＩＤＬＥステート１５１に戻り、再び論理回路１が動作を続けていく。
【００９３】
これらのことにより、診断回路２を有する集積回路において、この集積回路が診断動作中にアクセスが来ても診断を中断することなく応答したり、適切に診断を中断して通常動作に復帰して応答したりすることが可能な集積回路を実現できる。
【００９４】
また、図２ではスキャンレジスタ５２の値を保持するためのレジスタの代わりに、メモリなどの記憶素子を使用してもよい。
【００９５】
また更に、図２では論理回路１が診断回路２を内蔵する構成で示したが、診断回路は集積回路の外部に実装する構成としたり、診断回路と集積回路を基盤上で分けて実装する構成としたりしてもよい。
【００９６】
また更に、リードアクセス、ライトアクセス以外の動作についても、適切に入出力信号を追加してステートマシン回路を構成することで、さまざまなアクセスに対する応答ができる構成としてもよい。
【００９７】
（実施の形態２）
次に、本発明による、稼動中に故障診断を行う集積回路において、診断動作の中断が可能な診断回路の実施の形態について説明する。
【００９８】
図１０は、前記図２に示した診断回路２の詳細の一例を示すブロック図であり、診断方式としてＢＩＳＴ（Ｂｕｉｌｔ−Ｉｎ−Ｓｅｌｆ−Ｔｅｓｔ）を適用した構成例の一つである。
【００９９】
診断回路２は、擬似乱数パターン発生回路８１、圧縮回路８２、比較器８３、メモリ８４、パターン長カウント回路８５、ＡＮＤゲート８６が相互に接続されて構成されている。
【０１００】
擬似乱数パターン発生回路８１は、非特許文献１（Ｄｅｓｉｇｎ  Ｗａｖｅ  Ｍａｇａｚｉｎｅ  ２００１  Ｍａｒｃｈ，ＣＱ出版社、Ｎｏ．４０．，ｐ．５５−６６）に示されているようなロジックＢＩＳＴにおけるスキャンインデータを生成する回路であり、この例では３ビットのスキャンインデータ３０２ａ，３０２ｂ，３０２ｃを論理回路１に対して出力する。
【０１０１】
診断開始時の初期化処理として、パターン初期化タイミング信号６５１の値が１になった時、セレクタ７０４のはたらきによりメモリ８４からパターン初期値６０１が選択されてフリップフロップ７０１に入力されてスキャンインデータ３０２ａとなり、クロックサイクルが進むにつれて順次スキャンインデータ３０２ｂ，３０２ｃに伝達され、初期化処理が終了するとパターン初期化タイミング信号６５１の値が０になって信号６０２がフリップフロップ７０１の新たな入力となり、以降、スキャンインデータの生成が続けられる。
【０１０２】
信号６０２は、スキャンインデータ３０２ｂと３０２ｃからＸＯＲゲート７０５によって排他的論理和で作られた信号であり、スキャンインデータ３０２ａ，３０２ｂ，３０２ｃのクロックサイクルごとの値は図１１に示すようになる。
【０１０３】
図１１は、擬似乱数パターン発生回路８１から生成されるスキャンインデータのパターン列の一例を示す図である。
【０１０４】
図１１により、スキャンインデータ３０２ａ，３０２ｂ，３０２ｃの各値がそれぞれ１、０、０となるように初期値をメモリ８４から擬似乱数パターン発生回路８１に挿入すれば、ＸＯＲゲート７０５によって、以降のクロックサイクルにおいてランダム性のある３ビットのスキャンインデータが生成され、クロックサイクル８で再びクロックサイクル１に戻る。
【０１０５】
なお、この擬似乱数パターン発生回路８１では、スキャンインデータの初期値が３ビット全て０である場合を除き、ランダム性の高いスキャンインデータが生成される。
【０１０６】
圧縮回路８２も、前記非特許文献１に示されているようなロジックＢＩＳＴの圧縮回路であり、この例では３ビットのスキャンアウトデータ３０５ａ，３０５ｂ，３０５ｃを入力し、ＸＯＲゲート７１４，７１５，７１６とフリップフロップ７１１，７１２，７１３によって圧縮された圧縮結果６１６が順次出力される。
【０１０７】
ところで、一般に広く使われているＢＩＳＴは、集積回路の外部からテスタを使って圧縮結果６１６を取り出し、予め用意した期待値と比較するが、本発明における診断方式は出荷後の稼動時診断を対象としておりテスタを使用しないので、メモリ８４に保持されている期待値６６１と圧縮結果６１６を比較するための比較器８３と、スキャンチェーンの長さを元にＢＩＳＴに必要なクロックサイクルをカウントするパターン長カウント回路８５を内蔵している。
【０１０８】
比較器８３では、診断結果の期待値６６１と論理回路１を診断したことによって得られた圧縮結果６１６を比較し、一致していれば０の値を、不一致であれば１の値を比較結果６６２として出力するものである。
【０１０９】
更に比較結果６６２はＡＮＤゲート８６よって、比較タイミング信号６５２との論理積により診断結果３０４として出力され、この診断結果３０４の値が０の時は論理回路１には故障箇所が無いことを表し、値が１の時は論理回路１に故障箇所が存在することを示す信号である。
【０１１０】
パターン長カウント回路８５は、診断開始信号１０５の値が０の間はパターン初期化タイミング信号６５１、診断状態信号１０７、診断選択信号３０３、比較タイミング信号６５２の各信号の値を０にして出力している。
【０１１１】
診断開始信号１０５の値が１になって論理回路１が通常動作から診断動作に移行すると、診断状態信号１０７、診断選択信号３０３の各信号の値を１にすると同時に、パターン長カウント回路８５のカウント機能によって、この例では３クロックサイクルの間パターン初期化タイミング信号６５１の値を１にしてメモリ８４からパターン初期値６０１の値をフリップフロップ７０１，７０２，７０３に順次スキャンインデータを挿入し、４クロックサイクル目からパターン初期化タイミング信号６５１の値を０にする。
【０１１２】
論理回路１内のスキャンチェーンにスキャンインデータが挿入されると、診断選択信号３０３の値が１クロックサイクルだけ０になって論理回路１を動作させ、再び診断選択信号３０３の値が１になってスキャンアウトデータ３０５ａ，３０５ｂ，３０５ｃが順次圧縮回路８２に取り込まれていく。
【０１１３】
スキャンアウトデータ３０５ａ，３０５ｂ，３０５ｃが圧縮回路８２に取り込まれる各クロックサイクルにおいてパターン長カウント回路８５は比較タイミング信号６５２の値を１とし、期待値出力タイミング信号の値を１としてメモリ８４から期待値６６１が出力されるように制御することで、圧縮結果６１６と期待値６６１の比較結果６６２が有効な診断結果３０４として出力され、この値を論理回路１の外部で監視することで論理回路１内に発生した故障を検出できる。
【０１１４】
診断が終了すると、パターン長カウント回路８５は、パターン初期化タイミング信号６５１、診断状態信号１０７、診断選択信号３０３、比較タイミング信号６５２の各信号の値を０にして出力する。
【０１１５】
一方、診断動作中に復帰制御信号２０２の値が０から１になった場合、診断を止める必要があるので、パターン長カウント回路８５は、診断状態信号１０７、診断選択信号３０３、比較タイミング信号６５２の各信号の値を全て０にして出力する制御を行うことで、論理回路１の診断動作を止めて通常動作に移行する。
【０１１６】
これらのことにより、集積回路が稼動中に診断回路２を動作させて故障診断を行い、その診断結果を外部で監視できるので、故障が発生したことを検出したら全体をフェールセーフに制御するようなシステムを構築することが可能になる。
【０１１７】
なお、図１０に示したメモリ８４は診断回路２や集積回路の外部に配置する構成でも良い。
【０１１８】
また更に、図１０では簡単のためにスキャンインデータが３ビットである例を示したが、４ビット以上の大規模な回路についても同様に拡張して構成できる。
【０１１９】
（実施の形態３）
次に、本発明による、稼動中に診断を行う集積回路において、診断の中断と再開が可能な診断回路の実施の形態について説明する。
【０１２０】
図１２は、前記図２に示した診断回路２の詳細の一例を示すブロック図であり、前記図１０の診断回路と比較して、擬似乱数パターン発生回路８１の内部構成を変更し、パターン保持回路９１と診断結果統合回路９２を加えた構成である。
【０１２１】
パターン保持回路９１は、３つのイネーブル付きフリップフロップ９０１，９０２，９０３から構成されており、パターン保持イネーブル信号８０１の値が１の時のスキャンインデータ３０２ａ，３０２ｂ，３０２ｃの値をそれぞれ取り込み、パターン保持イネーブル信号８０１の値が０の時は直前のクロックサイクルで取り込んだ値を保持し続けて保持パターン８１１ａ，８１１ｂ，８１１ｃをそれぞれ出力する。
【０１２２】
擬似乱数パターン発生回路８１の各フリップフロップ７０１，７０２，７０３の直前には３入力セレクタ９０４，９０５，９０６が追加されており、パターン挿入タイミング信号８０２の値が０か１か２のいずれかによって選択される信号が変化する。
【０１２３】
パターン長カウント回路８５は、前記図１０で示したものと比較して、比較タイミング信号６５２に変わるものとしてパターン挿入タイミング信号８０２があり、パターン保持イネーブル信号８０１、圧縮タイミング信号８０３が追加されている。
【０１２４】
診断開始信号１０５の値が０の間はパターン挿入タイミング信号８０２、診断状態信号１０７、診断選択信号３０３、比較タイミング信号６５２、パターン保持イネーブル信号８０１、圧縮タイミング信号８０３の各信号の値を０にして出力している。
【０１２５】
診断開始信号１０５の値が１になって論理回路１が通常動作から診断動作に移行すると、診断状態信号１０７、診断選択信号３０３の各信号の値を１にすると同時に、パターン挿入タイミング信号８０２の値を１にしてメモリ８４からパターン初期値６０１ａ，６０１ｂ，６０１ｃの値をそれぞれフリップフロップ７０１，７０２，７０３に挿入し、次のクロックサイクルでパターン挿入タイミング信号８０２の値を０にする。
【０１２６】
論理回路１内のスキャンチェーンにスキャンインデータが挿入されると、診断選択信号３０３の値が１クロックサイクルだけ０になって論理回路１を動作させ、再び診断選択信号３０３の値が１になってスキャンアウトデータ３０５ａ，３０５ｂ，３０５ｃが順次圧縮回路８２に取り込まれていく。
【０１２７】
前記図１０で示した圧縮回路８２と同様にして得られた圧縮結果６１６は、図１２の診断回路では診断結果統合回路９２に入力される。
【０１２８】
説明を簡潔にするため、この論理回路１はＢＩＳＴによる１回の故障診断の結果が３ビットの値に圧縮される場合で例示している。
【０１２９】
診断結果統合回路９２には３つのフリップフロップ７２１，７２２，７２３があり、圧縮結果６１６の値が３クロックサイクルで各フリップフロップに挿入されて順次取り込まれるが、この間、圧縮タイミング８０３の値は０を出力するようにパターン長カウント回路８５が制御する。
【０１３０】
各フリップフロップ７２１，７２２，７２３に圧縮結果が挿入された時点で、圧縮タイミング信号８０３の値が１となり、各フリップフロップ７２４，７２５，７２６にはそれまで保持していた圧縮結果６１７ａ，６１７ｂ，６１７ｃと信号６２１，６２２，６２３を各ＸＯＲゲート７３０，７３１，７３２で排他的論理和をとった値が選択され、各フリップフロップ７２４，７２５，７２６に保持され、次のクロックサイクルで圧縮タイミング信号８０３の値が０になるので、各フリップフロップ７２４，７２５，７２６は値を保持し続ける。
【０１３１】
すなわち、これらの動作を繰り返すことで、ＢＩＳＴによる１回の故障診断の圧縮結果と、以前のＢＩＳＴによる複数回の故障診断の圧縮結果を統合したものとを圧縮して、新たな統合結果として保持することができる。
【０１３２】
ここで、論理回路１が診断動作中に復帰制御信号２０２の値が１になり、診断回路２の診断動作を止める要求が来た場合を考える。
【０１３３】
このとき、パターン長カウント回路８５が１クロックサイクルの間、パターン保持イネーブル信号の値を０から１にする制御を行って、その時点でのスキャンインデータ３０２ａ，３０２ｂ，３０２ｃの値をそれぞれフリップフロップ９０１，９０２，９０３に保持する。
【０１３４】
同時に、圧縮タイミング信号８０３の値が１であった場合には０にする制御を行うことで、その時点での圧縮結果６１７ａ，６１７ｂ，６１７ｃを各フリップフロップ７２４，７２５，７２６に保持する。
【０１３５】
このように診断動作が中断してしばらくした後、診断開始信号１０５の値が１になって診断を再開する要求が来た時点で、パターン長カウント回路８５はパターン挿入タイミング信号８０２の値を１クロックサイクルだけ２にする制御を行って、診断の中断時に保持したスキャンインデータを各フリップフロップ７０１，７０２，７０３に戻す。
【０１３６】
診断結果統合回路９２内の各フリップフロップ７２４，７２５，７２６には、診断の中断時に保持した圧縮結果が残っているため、診断再開時のスキャンインデータによる診断の圧縮結果６１６を取り込んで統合することができる。
【０１３７】
圧縮結果６１７ａ，６１７ｂ，６１７ｃは３ビットの圧縮結果６１７としてまとめられ、メモリ８４から出力される３ビットの期待値６６３と比較することで故障診断を行う。
【０１３８】
これらのことにより、ＢＩＳＴによる診断を一旦中断しても再開可能な集積回路を得ることができ、診断を最初からやり直す必要が無いので、リアルタイム性に優れた集積回路を実現することが可能になる。
【０１３９】
（実施の形態４）
図１３は、複数の集積回路の診断を行う場合の構成の一例を示すブロック図であり、一組の応答回路３、復帰回路４、レジスタ５４によって複数の集積回路１１，１２の故障診断を行う場合の構成である。
【０１４０】
集積回路１１，１２は、前記図２で示した論理回路１と同様のインタフェースを持つ回路であるが、モジュール選択信号１２１，１２２が追加されており、モジュール選択信号１２１の値が０の時には集積回路１１は全ての動作を行わず、また、モジュール選択信号１２２の値が０の時には集積回路１２は全ての動作を行わないように制御される。
【０１４１】
これらモジュール信号１２１，１２２は応答回路３に追加されたアドレス信号１２３をデコードした結果、集積回路１１を指すアドレスの場合にモジュール選択信号１２１の値を１にし、集積回路１２を指すアドレスの場合にモジュール選択信号１２２の値を１にすることで、集積回路１１，１２をワンホット制御する。
【０１４２】
セレクタ１３は、集積回路１１のレジスタ出力４１１と集積回路１２のレジスタ出力４１２のいずれかを選択してレジスタ５４に保持するもので、入力データを選択するためにここではモジュール選択信号１２２の値を使用している。
【０１４３】
ワンホット制御されるモジュール選択信号１２１，１２２によって集積回路１１と１２を切り替えながら、前記実施の形態１、前記実施の形態２、前記実施の形態３で説明した診断動作を適用させ、一組の応答回路３、復帰回路４、レジスタ５４を用いて２つの集積回路１１，１２を診断する。
【０１４４】
これらのことにより、複数の集積回路１１，１２の診断を行う場合でも、診断用に必要な回路を一組用意して切り替えて診断ができるため、コスト性に優れた集積回路を実現することが可能になる。
【０１４５】
また、図１３では診断対象の集積回路が２つの場合の構成例を示したが、集積回路を３つ以上に拡張しても同様に実装可能である。
【０１４６】
（実施の形態５）
次に、図１４と図１５と図１６を用いて、一組の応答回路、復帰回路、レジスタを用いて複数の集積回路の診断を行う場合の診断順番の決定方法について説明する。
【０１４７】
図１４は、複数の集積回路の診断に必要な仕様の一例を示す図であり、診断対象となる３つの集積回路Ａ、集積回路Ｂ、集積回路Ｃがあり、各集積回路のスキャンインデータの初期値、１回の診断に要する診断パターン長、優先度を示したもので、ここでの優先度とは、診断動作を行う頻度が高いことを表す。
【０１４８】
図１４において、集積回路Ａは３ビットのスキャンインデータの初期値が１００で、集積回路Ａを１回診断するために必要なパターン長が８ということを表し、集積回路Ｂ、集積回路Ｃのそれぞれについても同様に表している。
【０１４９】
集積回路Ａの優先度は３で３つの集積回路の中で最も高く、集積回路Ｃの優先度が１で最も低くなっている。
【０１５０】
これら３つの集積回路を一組の応答回路、復帰回路、レジスタを使って診断する順番を決定する一例を示したタイムチャートが図１５である。
【０１５１】
図１５は、複数の集積回路の診断を実行する順番の一例を示すタイムチャートであり、横軸は時刻に相当し、ｔ１からｔ８までの期間で示しており、各集積回路において、網掛けで表している部分が診断動作中、網掛けをしていない部分が通常動作中であることを表し、説明を簡潔にするため、診断動作と通常動作の切り替えに要する時間は表記していない。
【０１５２】
ｔ１期間では、集積回路Ａが診断動作中であり、集積回路Ｂと集積回路Ｃは通常動作をしている。
【０１５３】
ｔ２期間では、集積回路Ａは通常動作に戻り、代わりに集積回路Ｂが診断動作になる。
【０１５４】
ｔ３期間では、集積回路Ａが再び診断動作中となり、集積回路Ｂが通常動作に戻る。
【０１５５】
ｔ４期間では、集積回路Ａが通常動作に戻り、集積回路Ｂが診断動作になる。
【０１５６】
ｔ５期間では、集積回路Ａが三度診断動作中となり、集積回路Ｂが通常動作に戻る。
【０１５７】
ｔ６期間では、集積回路Ａが通常動作に戻り、集積回路Ｃが初めて診断動作になる。
【０１５８】
この例では、ｔ７期間以降は、ｔ１期間からｔ６期間の繰り返しとなる。
【０１５９】
このように、複数の集積回路にそれぞれ優先度を設定して診断をする順序および頻度を制御することで、故障した場合にシステム全体に致命的な障害を及ぼす可能性のある集積回路ほど診断回数を増やしたりする制御ができる。
【０１６０】
また、図１４および図１５では、診断対象となる３つの集積回路が異なる優先度を持つ場合で説明したが、診断対象となる集積回路の数が２つ以下や４つ以上であったり、同じ優先度を持つ集積回路同士の診断頻度を同程度にしたりする制御としてもよい。
【０１６１】
また、図１４および図１５の集積回路Ａのスキャンインデータが、図１６のサイクル１からサイクル８のように変化していき、診断動作と通常動作の切り替わりが２サイクル毎に切り替わるような場合を考える。図１６は、集積回路の診断を行うスキャンインデータのパターン列の一例を示す図である。
【０１６２】
この場合、ｔ１期間において、サイクル１とサイクル２で生成されるスキャンインデータによって得られた診断結果は、前記実施の形態４で示した回路を用いることで、次のサイクル３のスキャンインデータが保持され、サイクル１とサイクル２の診断で得られた診断結果を保持されるので、診断動作が中断しても、後ほど診断動作になった時にサイクル３から診断を再開することができる。
【０１６３】
図１６のサイクル３、サイクル４についてはｔ２期間で診断されて中断され、サイクル５、サイクル６についてはｔ３期間で診断されて中断され、サイクル７とサイクル８に至ると集積回路Ａの１回の診断が終了するので、診断結果と期待値を比較して、集積回路Ａに故障が発生していないかどうかを判定することができる。
【０１６４】
また更に、図１４では各集積回路の優先度が予め決まっている場合について示したが、図１７のような構成とすることも可能である。図１７（ａ）は、優先度指定レジスタを持つ集積回路の一例、図１７（ｂ）は優先度指定レジスタに値を設定するアセンブラプログラムの一例をそれぞれ示す図である。
【０１６５】
図１７（ａ）のように集積回路５０１の中に優先度を示す値を保持する記憶回路として優先度指定レジスタ５０２を持つような構造とし、レジスタライト信号５１１によって優先度指定レジスタ５０２の書き換えが可能な構成としてもよい。
【０１６６】
この場合、優先度指定レジスタ５０２がアドレス空間上でＨ’ＡＢＣＤ１２３４の位置に実装されていれば、図１７（ｂ）に示したアセンブラプログラムを用い、５０００番地で指定された命令（ＳＴ  ＃ＡＢＣＤ１２３４，Ｒ１）によって汎用レジスタＲ１にＨ’ＡＢＣＤ１２３４の値を格納し、５００４番地で指定された命令（ＳＴ  ＃３，Ｒ２）によって汎用レジスタＲ２に値３を格納し、５００８番地で指定された命令（ＳＴ  Ｒ２，＠Ｒ１）によって、汎用レジスタＲ２の値を汎用レジスタＲ１が示すアドレスに格納することで、優先度指定レジスタ５０２に値３を格納する動作がプログラム上で実現できる。
【０１６７】
これらのことにより、順番を切り替えて複数の集積回路の診断を行う場合に、設計者が指定した集積回路を重点的に診断したり、あるいは必要に応じて診断の優先度を下げたりすることができるので、指定の集積回路の使用頻度が高いときには故障の可能性も高まると予想して診断の頻度を上げたり、逆に使用頻度が低いときには故障の可能性が小さくなると予想して診断の頻度を下げたりする使い方ができる。
【０１６８】
（実施の形態６）
本発明における、高信頼性を実現する集積回路は、様々なシステムへ組み込んで利用することが可能である。
【０１６９】
図１８は、本発明における高信頼性を実現する集積回路を自動車に適用した場合の一例を示す図であり、これを用いて説明する。
【０１７０】
図１８の自動車３００３は、前輪３００４、後輪３００５、アクセル３００６、ブレーキ３００７、ハンドル３００８、エンジン３００９などを有しており、アクセル３００６が踏み込まれるとエンジン３００９の回転数が上昇して前輪３００４を駆動させて走行し、ハンドル３００８の操作がアクチュエータ３０１２によって前輪３００４に伝わって左右に曲がり、ブレーキ３００７を踏み込むと加圧器３０１０と３０１１がそれぞれ前輪３００４と後輪３００５を押し付けて停止する。
【０１７１】
この自動車３００３は、前記実施の形態１〜５を利用した集積回路３１０１，３１０２，３１０３を有しており、更に、各集積回路の状態を監視する監視装置３１１０を有している。
【０１７２】
集積回路３１０１はステアリング制御用に使用され、ハンドル３００８の操作を受けるアクチュエータ３０１２に対し、出力信号３２０１を出力し、一方、故障診断の診断結果３２０９を監視装置３１１０に出力する。
【０１７３】
集積回路３１０２はエンジン制御用に使用され、アクセル３００６からの速度信号３２０４を受け取り、出力信号３２０２をエンジン３００９に出力し、一方、診断結果３２１０を監視装置３１１０に出力する。
【０１７４】
集積回路３１０３はブレーキ制御用に使用され、ブレーキ３００７からの停止信号３２０５を受け取り、出力信号３２０３を加圧器３０１０と３０１１に出力し、一方、診断結果３２１１を監視装置３１１０に出力する。
【０１７５】
診断結果３２０９，３２１０，３２１１は、前記図１と図２の診断結果３０４に対応する。
【０１７６】
監視装置３１１０では、各集積回路からの診断結果を受け取り、集積回路に故障が発生していないかを逐次判断している。
【０１７７】
この自動車３００３が走行中に、集積回路の少なくとも１つが故障した場合に、自動車３００３を安全に停止させる場合の流れについて説明する。
【０１７８】
診断結果３２０９，３２１０，３２１１の少なくとも１つから不一致が検出された場合、監視装置３１１０は、アクチュエータ制御信号３２０６をアクチュエータ３０１２に出力してハンドル３００８のぶれを防ぎ、エンジン制御信号３２０７をエンジン３００９に出力してエンジンを安全に停止させ、加圧器制御信号３２０８を加圧器３０１０と３０１１に出力して前輪３００４と後輪３００５を押し付け、自動車３００３を安全に停止させる。
【０１７９】
図１９は、この自動車システムの動作例として、高信頼で自動車のブレーキ制御を行う場合の一例を示すフローチャートであり、このブレーキ制御を行う部分のシステム動作を説明する。
【０１８０】
図１９のステップ１００１からステップ１０１４までが、システムの一連の流れである。
【０１８１】
まず、ステップ１００１から始まり、ステップ１００２で集積回路が通常動作を開始し、ステップ１００３で診断タイミングになったかどうかを判定する。
【０１８２】
なお、ここでの診断タイミングとは、前記実施の形態１においてコマンドが“ＲＤ”でも“ＷＲ”でもなく、“ＮＯＰ”である場合に相当する。
【０１８３】
ステップ１００３で診断タイミングでなければステップ１００２で通常動作を続けるが、ステップ１００３で診断タイミングになったことを検出したら、ステップ１００４によって、前回の診断が完了したかどうかを判定する。
【０１８４】
これは、前記実施の形態３に示したように診断の途中結果を一時的に保持して続きができる仕組みにおいて、診断が途中で中断されているか、あるいは中断されずに全ての診断用データが使用され、診断が完了したかどうかということに相当する。
【０１８５】
ステップ１００４で前回の診断が完了していればステップ１００５で新規に診断を実行し、前回の診断が完了していなければステップ１００６で続きから診断を実行する。
【０１８６】
診断動作中のアクセスなどによって診断を中断する要求が来たかどうかはステップ１００７によって判定され、中断要求が来た場合はステップ１００８によって診断の途中状態を保持し、ステップ１００２の通常動作に戻る。
【０１８７】
ステップ１００７において診断動作中に診断を中断する要求が来ておらず、診断が完了したら、ステップ１００９で集積回路の診断結果と期待値とを比較し、一致していれば集積回路に故障は発生していないことになり、ステップ１００２の通常動作に戻る。
【０１８８】
一方、ステップ１００９において診断結果と期待値が不一致であった場合、集積回路に故障が発生したことになり、自動車システム全体に影響を及ぼす可能性がある。
【０１８９】
そのため、ステップ１００９で診断結果と期待値が不一致であった場合は、監視装置３１１０の働きによってステップ１０１０において割り込み処理を行い、ステップ１０１１において、ユーザに対して自動車に異常が起こったことを通知し、自動車に備え付けられている非常灯を点灯させるなどして周囲の自動車や歩行者に異常を知らせる。
【０１９０】
ステップ１０１２においてブレーキ制御を行う部分のシステムが停止し、続けてステップ１０１３において監視装置３１１０の働きにより加圧器制御信号３２０８が加圧器３０１０，３０１１に出力され、前輪３００４と後輪３００５が押し付けられて自動車が停止し、ステップ１０１４で終了に至る。
【０１９１】
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【０１９２】
本発明は、自動車システム、鉄道システム、その他の産業システムなどに一般に広く利用される集積回路について適用可能である。
【図面の簡単な説明】
【０１９３】
【図１】本発明に係る集積回路の構成の一例を示すブロック図である。
【図２】本発明の実施の形態１における集積回路の一例を示すブロック図である。
【図３】図２に示すスキャンレジスタの詳細構成の一例を示す図である。
【図４】図２に示す応答回路の詳細構成の一例を示す図である。
【図５】図４に示す応答ステートマシン回路の制御の詳細の一例を示す状態遷移図である。
【図６】図２に示す復帰回路の詳細構成の一例を示す図である。
【図７】図６に示す復帰ステートマシン回路の制御の詳細の一例を示す状態遷移図である。
【図８】本発明の実施の形態１において、集積回路が通常動作から診断動作に移行し、診断動作中にリードアクセスが起こった場合の各信号の波形の一例を示す図である。
【図９】本発明の実施の形態１において、集積回路が通常動作から診断動作に移行し、診断動作中にライトアクセスが起こった場合の各信号の波形の一例を示す図である。
【図１０】本発明の実施の形態２における診断回路の詳細の一例を示すブロック図である。
【図１１】図１０に示す擬似乱数パターン発生回路から生成されるスキャンインデータのパターン列の一例を示す図である。
【図１２】本発明の実施の形態３における診断回路の詳細の一例を示すブロック図である。
【図１３】本発明の実施の形態４における複数の集積回路の診断を行う場合の構成の一例を示すブロック図である。
【図１４】本発明の実施の形態５において、複数の集積回路の診断に必要な仕様の一例を示す図である。
【図１５】本発明の実施の形態５において、複数の集積回路の診断を実行する順番の一例を示すタイムチャートである。
【図１６】本発明の実施の形態５において、集積回路の診断を行うスキャンインデータのパターン列の一例を示す図である。
【図１７】（ａ）は本発明の実施の形態５における優先度指定レジスタを持つ集積回路の一例を、（ｂ）はレジスタに値を設定するアセンブラプログラムの一例をそれぞれ示す図である。
【図１８】本発明の実施の形態６において、本発明における集積回路を自動車に適用した場合に一例を示す図である。
【図１９】本発明の実施の形態６において、高信頼で自動車のブレーキ制御を行う場合の一例を示すフローチャートである。
【符号の説明】
【０１９４】
１…論理回路、２…診断回路、３…応答回路、４…復帰回路、５…応答ステートマシン回路、６…保持データイネーブル回路、７…復帰ステートマシン回路、１１，１２，５０１，３１０１〜３１０３…集積回路、１３，５７，７２，７０４，９０４〜９０６…セレクタ、５１〜５３…スキャンレジスタ、５４…レジスタ、５５，５６…論理回路、５８，５９…ラッチ、６０…トライステートバッファ、７１，７３，７６，７０１〜７０３，７１１〜７１３，７２１〜７２６，９０１〜９０３…フリップフロップ、７４，７５…バッファ、８１…擬似乱数パターン発生回路、８２…圧縮回路、８３…比較器、８４…メモリ、８５…パターン長カウント回路、８６…ＡＮＤゲート、９１…パターン保持回路、９２…診断結果統合回路、５０２…優先度指定レジスタ、７０５，７１４〜７１６，７３０〜７３２…ＸＯＲゲート、３００３…自動車、３００４…前輪、３００５…後輪、３００６…アクセル、３００７…ブレーキ、３００８…ハンドル、３００９…エンジン、３０１０，３０１１…加圧器、３０１２…アクチュエータ、３１１０…監視装置。
【図１】
2006300650.tif 000003
【図２】
2006300650.tif 000004
【図３】
2006300650.tif 000005
【図４】
2006300650.tif 000006
【図５】
2006300650.tif 000007
【図６】
2006300650.tif 000008
【図７】
2006300650.tif 000009
【図８】
2006300650.tif 000010
【図９】
2006300650.tif 000011
【図１０】
2006300650.tif 000012
【図１１】
2006300650.tif 000013
【図１２】
2006300650.tif 000014
【図１３】
2006300650.tif 000015
【図１４】
2006300650.tif 000016
【図１５】
2006300650.tif 000017
【図１６】
2006300650.tif 000018
【図１７】
2006300650.tif 000019
【図１８】
2006300650.tif 000020
【図１９】
2006300650.tif 000021