(57)【要約】【課題】記憶素子を備える回路の遅延故障を確実に検出する。【解決手段】現在値選択保持部４４０は、所定の規則に従って順方向または逆方向へ遷移する値である遷移値の中のいずれかの時点の遷移値を選択して現在値として保持する。順演算部４３０は、現在値から順方向へ遷移した時点の遷移値を規則に基づいて演算する。逆演算部４２０は、現在値から逆方向へ遷移した時点の遷移値を規則に基づいて演算する。演算制御部４１０は、現在値選択保持部４４０に保持された現在値を順演算部４３０により演算された遷移値によって更新するとともに第１のテストパターンとして現在値選択保持部４４０に出力させた後、現在値選択保持部４４０に保持された現在値を逆演算部４２０により演算された遷移値によって更新するとともに第２のテストパターンとして現在値選択保持部４４０に出力させる。【選択図】図２
2012098151.tif 000002
【特許請求の範囲】
【請求項１】
所定の規則に従って順方向または逆方向へ遷移する値である遷移値の中のいずれかの時点の遷移値を選択して現在値として保持する現在値選択保持部と、
前記現在値から順方向へ遷移した時点の遷移値を前記規則に基づいて演算する順演算部と、
前記現在値から逆方向へ遷移した時点の遷移値を前記規則に基づいて演算する逆演算部と、
前記現在値保持部に保持された前記現在値を前記順演算部により演算された遷移値によって更新するとともに前記順演算部により演算された遷移値を第１のテストパターンとして前記現在値選択保持部に出力させた後、前記現在値選択保持部に保持された前記現在値を前記逆演算部により演算された遷移値によって更新するとともに前記逆演算部により演算された遷移値を第２のテストパターンとして前記現在値選択保持部に出力させる演算制御部と
を具備するテストパターン生成器。
【請求項２】
前記現在値選択保持部は、
所定の規則に従って順方向または逆方向へ遷移する値である遷移値の中のいずれかの時点の遷移値を選択する選択部と、
前記選択部より選択された前記遷移値を現在値として保持する現在値保持部と、
前記現在値を退避値として保持する退避部と
を具備し、
前記演算制御部は、前記第１のテストパターンを前記現在値選択保持部に出力させた後、前記現在値を退避値として前記退避部に保持させ、前記第２のテストパターンを前記現在値選択保持部に出力させた後、前記退避部に保持させた前記退避値により前記現在値保持部に保持させた前記現在値を更新するとともに前記第１のテストパターンとして前記現在値選択保持部に出力させる請求項１記載のテストパターン生成器。
【請求項３】
前記演算制御部は、前記現在値保持部に保持された前記現在値を前記順演算部により演算された遷移値によって複数回更新するとともに前記順演算部により演算された遷移値を第１のテストパターンとして前記現在値選択保持部に出力させた後、前記現在値選択保持部に保持された前記現在値を前記逆演算部により演算された遷移値によって複数回更新するとともに前記逆演算部により演算された遷移値を第２のテストパターンとして前記現在値選択保持部に出力させる請求項１記載のテストパターン生成器。
【請求項４】
前記遷移値は、ビット列であり、
前記規則は、前記ビット列を一方向に１ビットシフトさせてシフト後ビット列を生成し、前記シフト後ビット列の一部を、前記ビット列の一部の排他的論理和で置き換える規則を含む請求項１記載のテストパターン生成器。
【請求項５】
前記第１のテストパターン、および、前記第２のテストパターンは、記憶装置のアドレスを含む請求項１記載のテストパターン生成器。
【請求項６】
所定の規則に従って順方向または逆方向へ遷移する値である遷移値の中のいずれかの時点の遷移値を選択して現在値として保持する現在値選択保持部と、前記現在値から順方向へ遷移した時点の遷移値を前記規則に基づいて演算する順演算部と、前記現在値から逆方向へ遷移した時点の遷移値を前記規則に基づいて演算する逆演算部とを具備するテストパターン生成器において、
前記現在値選択保持部に保持された前記現在値を前記順演算部により演算された遷移値によって更新するとともに前記順演算部により演算された遷移値を第１のテストパターンとして前記遷移値選択保持部に出力させる順演算手順と、
前記順演算手順の後に、前記現在値選択保持部に保持された前記現在値を前記逆演算部により演算された遷移値によって更新するとともに前記逆演算部により演算された遷移値を第２のテストパターンとして前記現在値選択保持部に出力させる逆演算手順と、
を具備するテストパターン生成器の制御方法。
【請求項７】
所定の規則に従って順方向または逆方向へ遷移する値である遷移値の中のいずれかの時点の遷移値を選択して現在値として保持する現在値選択保持部と、前記現在値から順方向へ遷移した時点の遷移値を前記規則に基づいて演算する順演算部と、前記現在値から逆方向へ遷移した時点の遷移値を前記規則に基づいて演算する逆演算部と、前記現在値保持部に保持された前記現在値を前記順演算部により演算された遷移値によって更新するとともに前記順演算部により演算された遷移値を第１のテストパターンとして前記現在値選択保持部に出力させた後、前記現在値選択保持部に保持された前記現在値を前記逆演算部により演算された遷移値によって更新するとともに前記逆演算部により演算された遷移値を第２のテストパターンとして前記現在値選択保持部に出力させる演算制御部とを具備するテストパターン生成器と、
前記第１のテストパターンに基づいて記憶装置へデータを書き込み、前記第２のテストパターンに基づいて前記記憶装置からデータを読み出し、書き込んだ前記データと、読み出した前記データとを比較し、比較した結果が一致していなければ前記記憶装置の故障を検出する比較器と
を具備する故障検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テストパターン生成器に関し、特に、記憶素子を備える回路の故障を検出するためのテストパターンを生成するテストパターン生成器、テストパターン生成器の制御方法、および、故障検出装置に関する。
【背景技術】
【０００２】
記憶素子を備える回路の故障を検出するために、従来、各種のテスト回路や、そのテスト回路を制御するプログラムが設計されている。記憶素子を備える回路としては、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などのメモリデバイスを有する回路が想定される。
【０００３】
テスト回路が検出する故障としては、縮退故障や遅延故障などがある。縮退故障とは、回路を構成する素子への入力値にかかわらず、その素子からの出力値が０または１に固定される故障である。遅延故障とは、回路を構成する素子や配線の遅延が増加し、回路の誤動作が生じる故障である。近年では、回路の微細化や動作速度の高速化に伴い、遅延故障の検出が重要性を増している。
【０００４】
これらの縮退故障や遅延故障を検出するために、テスト回路には、テストパターン列が与えられる。テストパターン列は、書込みアドレスおよび書込みデータを含むテストパターンと、読出しアドレスおよび期待値データを含むテストパターンとが、書込み、読出しの実行順に記載されたものである。期待値データは、読み出したデータと比較するためのデータである。テスト回路は、これらのテストパターンに従って、各アドレスにデータを書き込み、それらのアドレスから書き込んだデータを読み出す。そして、テスト回路は、アドレスごとに、そのアドレスに書き込んだデータと、そのアドレスから読み出したデータとを比較し、それらが不一致であれば、検査対象の回路の故障を検出する。
【０００５】
検査対象の回路が備える記憶素子が多くなるほど、必要とされるテストパターンの数は増大する。このため、記憶素子の搭載数が増加する傾向にある近年では、テストパターン列の生成において、テストパターン列を自動生成する機器やプログラムがよく用いられる。
【０００６】
例えば、ＬＦＳＲ（Linear Feedback Shift Register：線形帰還シフトレジスタ）を使用してテストパターン列を自動生成するテストパターン生成器が提案されている（例えば、特許文献１参照。）。このＬＦＳＲは、シフト前のビット列の一部の排他的論理和を入力ビットの一部として用いるシフトレジスタである。このＬＳＦＲを用いることにより、局所的にはランダムであるが、大局的には周期性を有するテストパターン列を生成することができる。生成されたテストパターン列は局所的にランダムであるから、多数の記憶素子をテスト回路が効率的に網羅することができる。このため、テスト回路は、効率的に故障を検出することができる。
【０００７】
また、テストパターン列に周期性を持たせることにより、テストパターン生成器は効率的にテストパターン列を生成することができる。具体的には、所定の周期に達して、網羅した記憶素子の数が一定数に達した時点でテストパターン生成器がテストパターンの生成を終了する。この手順により、テストパターン生成器は、自身が無駄にテストパターンを生成することを防止できる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−２０４４０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述の従来技術では、遅延故障を十分に検出できないことがあった。記憶素子を備える回路では、回路内の配線やその回路を構成する素子の状態により、アドレスにアクセスするときに生じる遅延が想定以上に大きくなることがある。この遅延により、記憶素子を備える回路に遅延故障が生じうる。具体的には、アクセス時の遅延が想定以上に大きいと、あるアドレスに回路がアクセスしようとしたにもかかわらず、そのアドレスとは別のアドレスにアクセスしてしまうことがある。
【００１０】
上述の従来技術のテストパターン生成器は、テストパターンの生成において、書込み先アドレスと読出しアドレスとを規則に従って同じ順番で遷移させている。例えば、このテストパターン生成器は、「アドレス１」、「アドレス２」の順番でデータを書き込んだ後、「アドレス１」、「アドレス２」の順番でデータを読み出すためのテストパターン列を生成している。このようにテストパターン列を生成した場合、遅延故障をテスト回路が検出できないことがある。
【００１１】
一例として、テスト回路の制御に従い、検査対象の回路が、「アドレス１」に「０」のデータを書き込み、「アドレス２」に「１」のデータを書き込んだ後、「アドレス１」、「アドレス２」の順で、各アドレスからデータを読み出すテストについて考える。そして、検査対象の回路が「アドレス１」に「０」を書き込んだ後、「アドレス２」に「１」を書き込もうとしたところ、想定以上の遅延の影響により、「アドレス２」とは別の「アドレスａ」に「１」を書き込んでしまった場合を考える。次に、検査対象の回路が「アドレス１」から「０」を読み出した後、「アドレス２」からデータを読み出そうとしたところ、想定以上の遅延の影響により、「アドレス２」とは別の「アドレスａ」から「１」を読み出してしまったとする。この場合、書き込んだデータと読み出したデータとが一致するため、遅延故障が生じているにもかかわらず、テスト回路は故障を検出できない。
【００１２】
このように上述の従来技術では、遅延故障を十分に検出できないことがあった。本発明はこのような状況に鑑みてなされたものであり、記憶素子を備える回路において、遅延故障を確実に検出することを目的とする。
【課題を解決するための手段】
【００１３】
本発明は、上記課題を解決するためになされたものであり、その第１の側面は、所定の規則に従って順方向または逆方向へ遷移する値である遷移値の中のいずれかの時点の遷移値を選択して現在値として保持する現在値選択保持部と、上記現在値から順方向へ遷移した時点の遷移値を上記規則に基づいて演算する順演算部と、上記現在値から逆方向へ遷移した時点の遷移値を上記規則に基づいて演算する逆演算部と、上記現在値保持部に保持された上記現在値を上記順演算部により演算された遷移値によって更新するとともに上記順演算部により演算された遷移値を第１のテストパターンとして上記現在値選択保持部に出力させた後、上記現在値選択保持部に保持された上記現在値を上記逆演算部により演算された遷移値によって更新するとともに上記逆演算部により演算された遷移値を第２のテストパターンとして上記現在値選択保持部に出力させる演算制御部とを具備するテストパターン生成器、および、その制御方法である。これにより、遷移値を任意の方向に遷移させて現在値を設定させるという作用をもたらす。
【００１４】
また、この第１の側面において、上記現在値選択保持部は、所定の規則に従って順方向または逆方向へ遷移する値である遷移値の中のいずれかの時点の遷移値を選択する選択部と、上記選択部より選択された上記遷移値を現在値として保持する現在値保持部と、上記現在値を退避値として保持する退避部とを具備し、上記演算制御部は、上記第１のテストパターンを上記現在値選択保持部に出力させた後、上記現在値を退避値として上記退避部に保持させ、上記第２のテストパターンを上記現在値選択保持部に出力させた後、上記退避部に保持させた上記退避値により上記現在値保持部に保持させた上記現在値を更新するとともに上記第１のテストパターンとして上記現在値選択保持部に出力させてもよい。これにより、逆方向への遷移前に現在値を退避させ、逆方向への遷移後に、退避させた現在値を復元させるという作用をもたらす。
【００１５】
また、この第１の側面において、上記演算制御部は、上記現在値保持部に保持された上記現在値を上記順演算部により演算された遷移値によって複数回更新するとともに上記順演算部により演算された遷移値を第１のテストパターンとして上記現在値選択保持部に出力させた後、上記現在値選択保持部に保持された上記現在値を上記逆演算部により演算された遷移値によって複数回更新するとともに上記逆演算部により演算された遷移値を第２のテストパターンとして上記現在値選択保持部に出力させてもよい。これにより、遷移値を順方向および逆方向へ複数回遷移させて現在値を設定させるという作用をもたらす。
【００１６】
また、この第１の側面において、上記遷移値は、ビット列であり、上記規則は、上記ビット列を一方向に１ビットシフトさせてシフト後ビット列を生成し、上記シフト後ビット列の一部を、上記ビット列の一部の排他的論理和で置き換える規則を含むこととしてもよい。これにより、遷移によって、ビット列がシフトし、シフト後のビット列の一部が直前のビット列の一部の排他的論理和に置換させるという作用をもたらす。
【００１７】
また、この第１の側面において、上記第１のテストパターン、および、上記第２のテストパターンは、記憶装置のアドレスを含むこととしてよい。これにより、遷移値を任意の方向に遷移させてアドレスを設定させるという作用をもたらす。
【００１８】
また、本発明の第２の側面は、所定の規則に従って順方向または逆方向へ遷移する値である遷移値の中のいずれかの時点の遷移値を選択して現在値として保持する現在値選択保持部と、上記現在値から順方向へ遷移した時点の遷移値を上記規則に基づいて演算する順演算部と、上記現在値から逆方向へ遷移した時点の遷移値を上記規則に基づいて演算する逆演算部と、上記現在値保持部に保持された上記現在値を上記順演算部により演算された遷移値によって更新するとともに上記順演算部により演算された遷移値を第１のテストパターンとして上記現在値選択保持部に出力させた後、上記現在値選択保持部に保持された上記現在値を上記逆演算部により演算された遷移値によって更新するとともに上記逆演算部により演算された遷移値を第２のテストパターンとして上記現在値選択保持部に出力させる演算制御部とを具備するテストパターン生成器と、上記第１のテストパターンに基づいて記憶装置へデータを書き込み、上記第２のテストパターンに基づいて上記記憶装置からデータを読出し、書き込んだ上記データと、読み出した上記データとを比較し、比較した結果が一致していなければ上記記憶装置の故障を検出する比較器とを具備する故障検出装置である。これにより、遷移値を任意の方向に遷移させて現在値を設定させ、その現在値に基づいて回路の故障を検出させるという作用をもたらす。
【発明の効果】
【００１９】
本発明によれば、記憶素子を備える回路における遅延故障を確実に検出することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１の実施の形態における電子機器の一構成例を示すブロック図である。
【図２】本発明の第１の実施の形態におけるテストパターン生成器の一構成例を示すブロック図である。
【図３】本発明の第１の実施の形態における順演算部、逆演算部、および、現在値選択保持部を実現する回路の一構成例を示す回路図である。
【図４】本発明の第１の実施の形態における現在値選択保持回路の一構成例を示す回路図である。
【図５】本発明の第１の実施の形態におけるセレクタの動作の一例を示す真理値表である。
【図６】本発明の第１の実施の形態における現在値保持回路の動作の一例を示す真理値表である。
【図７】本発明の第１の実施の形態におけるテスト機能付きバスマスタの制御手順の一例を示すフローチャートである。
【図８】本発明の第１の実施の形態におけるテストパターン生成器の制御手順の一例を示すフローチャートである。
【図９】本発明の第１の実施の形態におけるテストパターン生成器の動作結果の一例を示すタイミングチャートである。
【図１０】本発明の第１の実施の形態におけるテストパターン生成器が生成したテストパターン列の一例を示す図である。
【図１１】本発明の第２の実施の形態におけるテストパターン生成器の一構成例を示すブロック図である。
【図１２】本発明の第２の実施の形態における順演算部、逆演算部、および、現在値選択保持部を実現する回路の一構成例を示す回路図である。
【図１３】本発明の第２の実施の形態における現在値選択保持回路の一構成例を示す回路図である。
【図１４】本発明の第２の実施の形態におけるセレクタの動作の一例を示す真理値表である。
【図１５】本発明の第２の実施の形態における退避値保持回路の動作の一例を示す真理値表である。
【図１６】本発明の第２の実施の形態におけるテストパターン生成器の制御手順の一例を示すフローチャートである。
【図１７】本発明の第２の実施の形態におけるテストパターン生成器の動作結果の一例を示すタイミングチャートである。
【図１８】本発明の実施の形態におけるテストパターン生成器の変形例を示す回路図である。
【図１９】本発明の実施の形態における電子機器の変形例を示すブロック図である。
【図２０】本発明の実施の形態における電子機器の変形例を示すブロック図である。
【図２１】本発明の実施の形態における電子機器の変形例を示すブロック図である。
【発明を実施するための形態】
【００２１】
以下、本発明を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（テストパターン生成器：順演算および逆演算を実行する例）
２．第２の実施の形態（テストパターン生成器：遷移値を退避させる例）
３．変形例
【００２２】
＜１．第１の実施の形態＞
［電子機器の構成］
図１は、本発明の実施の第１の形態における電子機器の一構成例を示す全体図である。この電子機器は、バスマスタ１００、バス２００、テスト機能付きバスマスタ３００、セレクタ７６０、メモリコントローラ８００、および、ＤＲＡＭ９００を備える。
【００２３】
バスマスタ１００は、バス２００を介して、バス２００に接続されたデバイスを制御できるデバイスである。第１の実施の形態では、バスマスタ１００は、メモリコントローラ８００を制御する。具体的には、バスマスタ１００は、セレクタ７６０を介してメモリコントローラ８００へリクエスト信号を送信する。このリクエスト信号には、ＤＲＡＭ９００内の書込みアドレスおよび書込みデータ、または、ＤＲＡＭ９００内の読出しアドレスを示す情報がバスマスタ１００により乗せられている。そして、バスマスタ１００は、セレクタ７６０を介さずに、メモリコントローラ８００からレスポンス信号を受信する。このレスポンス信号には、書込みの成否、または、読出しの成否および読み出したデータがメモリコントローラ８００により乗せられている。
【００２４】
バス２００は、バスマスタ１００、および、メモリコントローラ８００がデータを送受信するための共通の経路である。
【００２５】
テスト機能付きバスマスタ３００は、バスプロトコルを使用して所定のデバイスを制御すると共に、そのデバイスがアクセスしうる回路を検査するものである。具体的には、テスト機能付きバスマスタ３００は、メモリコントローラ８００を制御し、ＤＲＡＭ９００を検査する。テスト機能付きバスマスタ３００は、テストパターン生成器４００、および、期待値比較器７５０を備える。
【００２６】
テストパターン生成器４００は、テストパターン列を生成するものである。テストパターン列は、アクセスの実行順に複数のテストパターンを並べたものである。各テストパターンは、書込みアドレスおよび書込みデータ、または、読出しアドレスおよび期待値データを含む。期待値データは、読み出されたデータと比較するためのデータである。
【００２７】
期待値比較器７５０は、テストパターン列に基づいて、検査対象の回路の故障の有無を検査するものである。期待値比較器７５０は、バスプロトコルを使用してセレクタ７６０を介してメモリコントローラ８００へリクエスト信号を送信して、テストパターン列の並び順に、ＤＲＡＭ９００の各アドレスにデータを書き込むことを要求する。そして、期待値比較器７５０は、セレクタ７６０を介さずにメモリコントローラ８００から、書込みの成否を示すレスポンス信号を受信する。次に、期待値比較器７５０は、バスプロトコルを使用してセレクタ７６０を介してメモリコントローラ８００へリクエスト信号を送信して、テストパターンの並び順にデータを読み出すことを要求する。期待値比較器７５０は、セレクタ７６０を介さずにメモリコントローラ８００から、読出しの成否および読み出されたデータを示すレスポンス信号を受信する。期待値比較器７５０は、テストパターンの示す期待値データと、読み出したデータとを比較する。これらのデータの値が不一致であれば、期待値比較器７５０は、ＤＲＡＭ９００の故障を検出する。
【００２８】
セレクタ７６０は、バス２００からのリクエスト信号、または、テスト機能付きバスマスタ３００からのリクエスト信号を選択して、メモリコントローラ８００へ送信する。第１の実施の形態では、図示しないＣＰＵ（Central Processing Unit）がセレクタ７６０を制御する。ＣＰＵは、テスト機能付きバスマスタ３００に検査を実行させる場合にセレクタ７６０にテスト機能付きバスマスタ３００を選択させ、そうでない場合にバス２００を選択させる。
【００２９】
メモリコントローラ８００は、ＤＲＡＭ９００を制御するデバイスである。メモリコントローラ８００は、リクエスト受信部８１０、および、レスポンス送信部８２０を備える。リクエスト受信部８１０は、バスマスタ１００またはテスト機能付きバスマスタ３００から、セレクタ７６０を介してリクエスト信号を受信するものである。レスポンス送信部８２０は、バスマスタ１００およびテスト機能付きバスマスタ３００へレスポンス信号を送信するものである。
【００３０】
メモリコントローラ８００は、リクエスト受信部８１０が受信したリクエスト信号に基づいてＤＲＡＭ９００にアクセスする。そして、メモリコントローラ８００は、アクセスの結果をレスポンス送信部８２０に送信させる。
【００３１】
ＤＲＡＭ９００は、複数の記憶素子を備え、メモリコントローラ８００の制御に従って、データを記憶素子に記憶したり、記憶素子からデータを読み出してメモリコントローラ８００へ送信したりするものである。
【００３２】
図２は、本発明の第１の実施の形態が具現化されるテストパターン生成器の一例としてのテストパターン生成器４００の一構成例を示すブロック図である。テストパターン生成器は、演算制御部４１０、逆演算部４２０、順演算部４３０、および、現在値選択保持部４４０を備える。
【００３３】
現在値選択保持部４４０は、所定の規則に従って順方向または逆方向に遷移する値の中のいずれかを選択して現在値として保持するものである。第１の実施の形態では、現在値選択保持部４４０は、所定個（例えば、１６個）のビットからなるビット列を現在値として選択し、保持する。この現在値は、テストパターンにおけるアクセス先のアドレスとして用いられる。現在値選択保持部４４０は、セレクタ４６０および現在値保持部４８０を備える。
【００３４】
セレクタ４６０は、逆演算部４２０が演算した値、または、順演算部４３０が演算した値を演算制御部４１０の制御に従って選択し、現在値保持部４８０へ出力するものである。具体的には、セレクタ４６０は、演算制御部４１０から１ビットの「ＤＩＲ」信号を受信する。その「ＤＩＲ」信号の値が「０」の場合、セレクタ４６０は、順演算部４３０の演算結果を選択して出力し、ＤＩＲ」信号の値が「１」の場合、セレクタ４６０は、逆演算部４２０の演算結果を選択して出力する。
【００３５】
現在値保持部４８０は、現在値を保持し、セレクタ４６０により選択された値により保持している現在値を更新するものである。現在値保持部４８０は、例えば、複数個のフリップフロップを備え、システムクロックに同期して、保持した現在値を更新して出力する。ここで、現在値保持部４８０は、演算制御部４１０から１ビットの「ＥＮ」信号を受信している。「ＥＮ」信号が「０」の場合、現在値を更新せずに前回のクロックの値をホールドして出力する。「ＥＮ」信号が「１」の場合、セレクタ４６０により選択された値で現在値を更新して期待値比較器７６０（不図示）へ出力する。
【００３６】
順演算部４３０は、現在値保持部４８０により出力された現在値が順方向へ遷移した値を演算し、演算結果をセレクタ４６０へ出力するものである。値の遷移規則は、遷移により遷移前の値と異なる値になる規則とする。例えば、順演算部４３０は、ＬＳＦＲ（Linear Feedback Shift Register）における回路状態の遷移規則を用いる。ＬＳＦＲは、遷移前のビット列の一部の排他的論理和を入力ビットとするシフトレジスタである。
【００３７】
逆演算部４２０は、現在値保持部４８０により出力された現在値が逆方向へ遷移した値を演算し、演算結果をセレクタ４６０へ出力するものである。逆演算部４２０が行う演算は、順演算部４３０が行う演算の逆算である。
【００３８】
演算制御部４１０は、現在値保持部４８０が保持する現在値を、順演算部４３０または逆演算部４２０の演算結果により更新させる制御を行うものである。具体的には、演算制御部４１０は、順演算部４３０の演算結果をセレクタ４６０に選択させることにより、現在値保持部４８０の現在値を順演算部４３０の演算結果によって更新させる。この更新により、順演算部４３０の演算結果が現在値保持部４８０から期待値比較器７５０へ出力される。このとき、演算制御部４１０は、出力された現在値が書込みアドレスである旨と、そのアドレスに書き込むデータとを示す情報を期待値比較器７５０へ出力する。期待値比較器７５０は、現在値保持部４８０から出力された現在値と演算制御部４１０からのデータとをライト用のテストパターンとして記憶する。
【００３９】
次に、演算制御部４１０は、逆演算部４２０の演算結果をセレクタ４６０に選択させることにより、現在値保持部４８０の現在値を逆演算部４２０の演算結果によって更新させる。更新により、逆演算部４２０の演算結果が現在値保持部４８０から期待値比較器７５０へ出力される。このとき、演算制御部４１０は、出力された現在値が読出しアドレスである旨と、期待値データとを示す情報を期待値比較器７５０へ出力する。期待値比較器７５０は、現在値保持部４８０から出力された現在値と演算制御部４１０からのデータとをリード用のテストパターンとして記憶する。
【００４０】
これらの順演算部４３０の演算結果による更新と逆演算部４２０の演算結果による更新とを、演算制御部４１０は、少なくとも１回ずつ実行させる。順演算部４３０に対応する更新回数と、逆演算部４２０に対応する更新回数とは、同一とする。また、ライト用のテストパターンの数とリード用のテストパターンの数とを同一にするため、演算制御部４１０は、順演算部４３０の演算結果による最後の更新を実行させたとき、現在値保持部４８０にテストパターンを出力させない。具体的には、演算制御部３１０は、最後の更新により出力された現在値が書込みアドレスである旨と、そのアドレスに書き込むデータとを示す情報を出力しない。
【００４１】
このように演算制御部４１０が、順演算部４３０の演算結果により現在値選択保持部４４０に現在値を更新および出力させ、次に、逆演算部４２０の演算結果により現在値選択保持部４４０に現在値を更新および出力させる。そして、期待値比較器７５０は、順演算部４３０の演算結果を書込みアドレスとして使用し、逆演算部４２０の演算結果を読出しアドレスとして使用する。この構成により、テストパターン生成器４００は、書込み時と読出し時とにおいて、アクセス先のアドレスの順番が異なるテストパターン列を生成することができる。このため、書込み時と読出し時とにおいて、アクセス先のアドレスの順番を同じにしたことを原因とする、遅延故障の検出失敗を防止することができる。
【００４２】
なお、上述の実施の形態におけるテストパターン生成器４００は、特許請求の範囲に記載のテストパターン生成器の一例である。上述の実施の形態の演算制御部４１０は、特許請求の範囲に記載の演算制御部の一例である。上述の実施の形態の順演算部４３０は、特許請求の範囲に記載の順演算部の一例である。上述の実施の形態の逆演算部４２０は、特許請求の範囲に記載の逆演算部の一例である。上述の実施の形態の現在値選択保持部４４０は、特許請求の範囲に記載の現在値選択保持部の一例である。上述の実施の形態の期待値比較器７５０は、特許請求の範囲に記載の比較器の一例である。上述の実施の形態のテスト機能付きバスマスタ３００は、特許請求の範囲に記載の故障検出装置の一例である。
【００４３】
図３は、逆演算部４２０、順演算部４３０、および、現在値選択保持部４４０を実現する回路の一構成例を示す回路図である。
【００４４】
現在値選択保持部４４０は、現在値選択保持回路４４１乃至４５６を備える。順演算部４３０は、ＸＯＲゲート４３１乃至４３３を備える。逆演算部４２０は、ＸＯＲゲート４２１乃至４２３を備える。現在値選択保持回路４４１乃至４５６の構成の詳細については、図４を参照して後述する。
【００４５】
現在値選択保持回路４４１乃至４５６のそれぞれには、「Ｄｆ」端子、「Ｑｆ」端子、「Ｄｒ」端子、「Ｑｒ」端子、「ＥＮ」端子（不図示）、および、「ＤＩＲ」端子（不図示）が設けられる。「ＥＮ」端子は、演算制御部４１０（不図示）からの１ビットの「ＥＮ」信号が入力される入力端子である。「ＤＩＲ」端子は、演算制御部４１０からの１ビットの「ＤＩＲ」信号が入力される入力端子である。「Ｑｆ」端子および「Ｑｒ」端子は１ビットの信号が出力される出力端子であり、「Ｄｆ」端子および「Ｄｒ」端子は、１ビットの信号が入力される入力端子である。
【００４６】
ＸＯＲゲート４３１は、現在値選択保持回路４４２の「Ｑｆ」端子からの出力値と、現在値選択保持回路４５６の「Ｑｆ」端子からの出力値との排他的論理和を現在値選択保持回路４４３の「Ｄｆ」端子に入力する。ＸＯＲゲート４３２は、現在値選択保持回路４４３の「Ｑｆ」端子からの出力値と、現在値選択保持回路４５６の「Ｑｆ」端子からの出力値との排他的論理和を現在値選択保持回路４４４の「Ｄｆ」端子に入力する。ＸＯＲゲート４３３は、現在値選択保持回路４４５の「Ｑｆ」端子からの出力値と、現在値選択保持回路４５６の「Ｑｆ」端子からの出力値との排他的論理和を現在値選択保持回路４４６の「Ｄｆ」端子に入力する。
【００４７】
現在値選択保持回路４４１は、「Ｑｆ」端子からの出力値を現在値選択保持回路４４２の「Ｄｆ」端子に入力し、現在値選択保持回路４４４は、「Ｑｆ」端子からの出力値を現在値選択保持回路４４５の「Ｄｆ」端子に入力する。現在値選択保持回路４４６乃至４５５は、それぞれの「Ｑｆ」端子からの出力値を後段の現在値選択保持回路４４７乃至４５６の「Ｄｆ」端子に入力する。現在値選択保持回路４５６は、「Ｑｆ」端子からの出力値を現在値選択保持回路４４１の「Ｄｆ」端子に入力する。
【００４８】
このようにＸＯＲゲート４３１乃至４３３、および、各「Ｑｆ」端子と各「Ｄｆ」端子とを接続する配線、ならびに、ＸＯＲゲート４３１乃至４３３と現在値選択保持回路４４２乃至４４６および４５６とを接続する配線により、図２の順演算部４３０が実現される。
【００４９】
ＸＯＲゲート４２１は、現在値選択保持回路４４３の「Ｑｒ」端子からの出力値と、現在値選択保持回路４５６の「Ｑｒ」端子からの出力値との排他的論理和を現在値選択保持回路４４２の「Ｄｒ」端子に入力する。ＸＯＲゲート４２２は、現在値選択保持回路４４４の「Ｑｒ」端子からの出力値と、現在値選択保持回路４５６の「Ｑｒ」端子からの出力値との排他的論理和を現在値選択保持回路４４３の「Ｄｒ」端子に入力する。ＸＯＲゲート４２３は、現在値選択保持回路４４６の「Ｑｒ」端子からの出力値と、現在値選択保持回路４５６の「Ｑｒ」端子からの出力値との排他的論理和を現在値選択保持回路４４５の「Ｄｒ」端子に入力する。
【００５０】
現在値選択保持回路４４１は、「Ｑｒ」端子からの出力値を現在値選択保持回路４５６の「Ｄｒ」端子に入力し、現在値選択保持回路４４２は、「Ｑｒ」端子からの出力値を現在値選択保持回路４４１の「Ｄｒ」端子に入力する。現在値選択保持回路４４５は、「Ｑｒ」端子からの出力値を現在値選択保持回路４４４の「Ｄｒ」端子に入力する。現在値選択保持回路４４７乃至４５６は、それぞれの「Ｑｒ」端子からの出力値を前段の現在値選択保持回路４４６乃至４５５の「Ｄｒ」端子に入力する。
【００５１】
このようにＸＯＲゲート４２１乃至４２３、および、各「Ｑｒ」端子と各「Ｄｒ」端子とを接続する配線、ならびに、ＸＯＲゲート４２１乃至４２３と現在値選択保持回路４４２乃至４４６および４５６とを接続する配線により、図２の逆演算部４２０が実現される。
【００５２】
また、現在値選択保持回路４４１乃至４５６のそれぞれは、「Ｑｆ」端子からの出力値を期待値比較器７５０（不図示）へ出力する。
【００５３】
図４は、図３の現在値選択保持回路４４１の一構成例を示す回路図である。現在値選択保持回路４４２乃至４５６の構成は、現在値選択保持回路４４１の構成と同様である。現在値選択保持回路４４１は、セレクタ４６１および現在値保持回路４８１を備える。また、現在値選択保持回路４４１には、「Ｄｆ」端子、「Ｑｆ」端子、「Ｄｒ」端子、「Ｑｒ」端子、「ＤＩＲ」端子、および、「ＥＮ」端子が設けられる。
【００５４】
セレクタ４６１は、「ＤＩＲ」端子からの「ＤＩＲ」信号に応じて、「Ｄｒ」端子からの信号、または、「Ｄｆ」端子からの信号を選択して現在値保持回路４８１へ出力する。具体的には、セレクタ４６１は、「ＤＩＲ」信号がローレベルの場合、「Ｄｆ」端子からの信号を現在値保持回路４８１へ出力し、「ＤＩＲ」信号がハイレベルの場合、「Ｄｒ」端子からの信号を現在値保持回路４８１へ出力する。
【００５５】
現在値保持回路４８１は、１ビットの情報を現在値として保持する。現在値保持回路４８１は、「ＥＮ」端子からの「ＥＮ」信号がハイレベルの場合、システムクロックに同期して、セレクタ４６１からの入力信号により現在値を更新して「Ｑｆ」端子および「Ｑｒ」端子へ出力する。現在値保持回路４８１は、「ＥＮ」信号がローレベルの場合、現在値を更新せずに、前回のクロックにおける値を「Ｑｆ」端子および「Ｑｒ」端子へ出力する。
【００５６】
図４を参照して説明したように、現在値選択保持回路４４１乃至４５６のそれぞれは１ビットの情報を現在値として保持する。このため、現在値選択保持回路４４１乃至４５６は、合計で１６ビットからなるビット列を現在値として保持する。ここで、ビット列において、現在値選択保持回路４４１が保持するビットを１ビット目とする。
【００５７】
図３および図４に示した構成より、「ＤＩＲ」信号がローレベルの場合、このビット列において、前回の２ビット目および１６ビット目の値の排他的論理和が今回の３ビット目となる。また、前回の３ビット目および１６ビット目の値の排他的論理和が今回の４ビット目となり、前回の５ビット目および１６ビット目の値の排他的論理和が６ビット目となる。前回の１６ビット目が今回の１ビット目となり、前回の４ビット目および６乃至１５ビット目は、今回の５ビット目および７乃至１６ビット目となる。つまり、ＸＯＲゲート４３１乃至４３３および現在値選択保持回路４４１乃至４５６は、前回のビット列の一部の排他的論理和を入力ビットとするシフトレジスタとして動作する。ＸＯＲゲート４３１乃至４３３および現在値選択保持回路４４１乃至４５６によるビット列の遷移を順方向とする。
【００５８】
一方、「ＤＩＲ」信号がハイレベルの場合、ＸＯＲゲート４２１乃至４２３および現在値選択保持回路４４１乃至４５６は、順方向とは逆の方向へビット列を遷移させる。
【００５９】
図５は、セレクタ４６１の動作の一例を示す真理値表である。演算制御部４１０からの「ＤＩＲ」信号の値が「０」の場合、セレクタ４６１は、「Ｄｆ」端子からの順演算の結果を入力元として選択する。「ＤＩＲ」信号の値が「１」の場合、セレクタ４６１は、「Ｄｒ」端子からの逆演算の結果を入力元として選択する。
【００６０】
図６は、現在値保持回路４８１の動作の一例を示す真理値表である。演算制御部４１０からの「ＥＮ」信号の値が「０」の場合、現在値保持回路４８１は、セレクタ４６１からの入力値にかかわらず、前回のクロックの現在値を保持して、保持している現在値を出力する。「ＥＮ」信号の値が「１」の場合、現在値保持回路４８１は、セレクタ４６１からの入力値で現在値を更新して出力する。
【００６１】
［電子機器の動作］
図７は、本発明の第１の実施の形態のテスト機能付きバスマスタ３００の制御手順の一例を示すフローチャートである。この制御手順は、テスト機能付きバスマスタ３００に電源が投入されたとき、または、回路を検査するためのアプリケーションが実行されたときなどに開始される。
【００６２】
テストパターン生成器４００は、テストパターンを生成するためのテストパターン生成処理を実行する（ステップＳ９１０）。期待値比較器７５０は、ライト用のテストパターンに基づいて、メモリコントローラ８００へリクエスト信号を送信して各アドレスへのデータの書込みを要求する（ステップＳ９５０）。期待値比較器７５０は、リード用のテストパターンに基づいて、メモリコントローラ８００へリクエスト信号を送信して各アドレスからのデータの読出しを要求する（ステップ９６０）。期待値比較器７５０は、読み出したデータと、リード用のテストパターンに記載の期待値データとを比較する（ステップＳ９７０）。
【００６３】
期待値比較器７５０は、比較したデータが不一致であるか否かを判断する（ステップＳ９８０）。データが不一致であれば（ステップＳ９８０：Ｙｅｓ）、期待値比較器７５０は、ＤＲＡＭ９００の故障を検出する（ステップＳ９９０）。データが一致する場合（ステップＳ９８０：Ｎｏ）、またはステップＳ９９０の後、期待値比較器７５０は、故障の検出のための動作を終了する。
【００６４】
図８は、本発明の第１の実施の形態のテストパターン生成処理の一例を示すフローチャートである。演算制御部４１０は、ローレベルの「ＥＮ」信号を送信することにより、現在値をライト用のテストパターンにおけるアドレスとして現在値保持部４８０に出力させる。また、演算制御部４１０は、アドレスを順方向に遷移させるため、「ＤＩＲ」信号をローレベルにしておく（ステップＳ９１１）。
【００６５】
「ＤＩＲ」信号がローレベルであるため、順演算部４３０の演算結果が現在値保持部４８０に入力される。演算制御部４１０は、「ＥＮ」信号をハイレベルにすることにより、順演算部４３０の演算結果で現在値保持部４８０に現在値を更新させ、ライト用のテストパターンにおけるアドレスとして出力させる（ステップＳ９１２）。
【００６６】
演算制御部４１０は、現在値保持部４８０がライト用のテストパターンをＮ個（Ｎは、自然数）出力したか否かを判断する（ステップＳ９１３）。ライト用のテストパターンをＮ個出力していなければ（ステップＳ９１３：Ｎｏ）、演算制御部４１０は、ステップＳ９１２に戻る。
【００６７】
ライト用のテストパターンをＮ個出力したのであれば（ステップＳ９１３：Ｙｅｓ）、演算制御部４１０は、１クロックの間、現在値をテストパターンとして出力させない。また、演算制御部４１０は、アドレスを逆方向へ遷移させるため「ＤＩＲ」信号をハイレベルにしておく（ステップＳ９１４）。
【００６８】
「ＤＩＲ」信号がハイレベルであるため、逆演算部４２０の演算結果が現在値保持部４８０に入力される。演算制御部４１０は、「ＥＮ」信号をハイレベルにすることにより、逆演算部４２０の演算結果で現在値保持部４８０に現在値を更新させ、リード用のテストパターンにおけるアドレスとして出力させる（ステップＳ９１５）。
【００６９】
演算制御部４１０は、現在値保持部４８０がリード用のテストパターンをＮ個出力したか否かを判断する（ステップＳ９１６）。リード用のテストパターンをＮ個出力していなければ（ステップＳ９１６：Ｎｏ）、演算制御部４１０は、ステップＳ９１５に戻る。
【００７０】
リード用のテストパターンをＮ個出力したのであれば（ステップＳ９１６：Ｙｅｓ）、演算制御部４１０は、テストパターン生成処理を終了する。
【００７１】
図９は、本発明の第１の実施の形態におけるテストパターン生成器４００の動作結果の一例を示すタイミングチャートである。この例では、テストパターン生成器４００は、書込みアドレス、読出しアドレスのそれぞれを５個ずつ生成するものとする。「Ａ０」、「Ａ１」、「Ａ２」、「Ａ３」、および、「Ａ４」は、テストパターン生成器４００により生成されたアドレスである。「Ａ」に付随する数字が小さいアドレスから、「Ａ」に付随する数字が大きいアドレスへの遷移は、順方向への遷移とする。一方、「Ａ」に付随する数字が大きいアドレスから、「Ａ」に付随する数字が小さいアドレスへの遷移は、逆方向への遷移とする。
【００７２】
「Ｔ０」のクロックにおいて、演算制御部４１０は、ローレベルの「ＥＮ」信号を現在値保持部４８０へ出力し、ローレベルの「ＤＩＲ」信号をセレクタ４６０へ出力する。現在値保持部４８０は、「ＥＮ」信号がローレベルであるため、現在値「Ａ０」をホールドして「Ｑｆ」端子および「Ｑｒ」端子から出力する。出力された現在値はライト用のテストパターンとして使用される。逆演算部４２０は、現在値「Ａ０」を逆方向へ遷移させたアドレスを演算して「Ｄｒ」端子からセレクタ４６０へ出力し、順演算部４３０は現在値「Ａ０」を順方向へ遷移させたアドレス「Ａ１」を演算して「Ｄｆ」端子からセレクタ４６０へ出力する。セレクタ４６０は、「ＤＩＲ」信号がローレベルであるため、順演算部４３０の演算結果「Ａ１」を選択して現在値保持部４８０へ出力する。
【００７３】
「Ｔ１」のクロックにおいて、演算制御部４１０は、現在値保持部４８０に現在値を更新させるため「ＥＮ」信号をローレベルからハイレベルにする。現在値保持部４８０は、「ＥＮ」信号がハイレベルであるため、セレクタ４６０により選択された順演算部４３０の演算結果「Ａ１」によって現在値を更新して「Ｑｆ」端子および「Ｑｒ」端子から出力する。出力された現在値はライト用のテストパターンとして使用される。逆演算部４２０は、現在値「Ａ１」を逆方向へ遷移させたアドレス「Ａ０」を演算して「Ｄｒ」端子からセレクタ４６０へ出力し、順演算部４３０は現在値「Ａ１」を順方向へ遷移させたアドレス「Ａ２」を演算して「Ｄｆ」端子からセレクタ４６０へ出力する。セレクタ４６０は、「ＤＩＲ」信号がローレベルであるため、順演算部４３０の演算結果「Ａ２」を選択して現在値保持部４８０へ出力する。
【００７４】
「Ｔ２」、「Ｔ３」のクロックにおいても、「Ｔ１」のクロックと同様に現在値保持部４８０は、順演算部４３０の演算結果により現在値を「Ａ２」、「Ａ３」に更新して出力する。
【００７５】
「Ｔ４」のクロックにおいて、演算制御部４１０は、逆方向へアドレスを遷移させるために「ＤＩＲ」信号をローレベルからハイレベルにする。現在値保持部４８０は、「ＥＮ」信号がハイレベルであるため、セレクタ４６０により選択された順演算部４３０の演算結果「Ａ４」によって現在値を更新して「Ｑｆ」端子および「Ｑｒ」端子から出力する。ライト用のテストパターンが４個生成されたため、このクロックにおいて、演算制御部４１０は、テストパターンを出力させない。順演算部４３０は「Ａ５」の値を演算して「Ｄｆ」端子からセレクタ４６０へ出力し、逆演算部４２０は、「Ａ３」の値を演算して「Ｄｒ」端子からセレクタ４６０へ出力する。セレクタ４６０は、「ＤＩＲ」信号がハイレベルであるため、逆演算部４２０の演算結果「Ａ３」を選択して現在値保持部４８０へ出力する。
【００７６】
「Ｔ５」のクロックにおいて、演算制御部４１０は、現在値保持部４８０に現在値を更新させるため「ＥＮ」信号をハイレベルにする。現在値保持部４８０は、「ＥＮ」信号がハイレベルであるため、セレクタ４６０により選択された逆演算部４２０の演算結果「Ａ３」によって現在値を更新して「Ｑｆ」端子および「Ｑｒ」端子から出力する。出力された現在値はリード用のテストパターンとして使用される。順演算部４３０は「Ａ４」の値を演算して「Ｄｆ」端子からセレクタ４６０へ出力し、逆演算部４２０は、「Ａ２」の値を演算して「Ｄｒ」端子からセレクタ４６０へ出力する。セレクタ４６０は、「ＤＩＲ」信号がハイレベルであるため、逆演算部４２０の演算結果「Ａ２」を選択して現在値保持部４８０へ出力する。
【００７７】
「Ｔ６」、「Ｔ７」、および、「Ｔ８」のクロックにおいても、「Ｔ５」のクロックと同様に現在値保持部４８０は、逆演算部４２０の演算結果により現在値を「Ａ２」、「Ａ１」、および、「Ａ０」に更新して出力する。
【００７８】
「Ｔ９」のクロックにおいて、演算制御部４１０は、リード用のテストパターンが４個生成されたため、テストパターンの生成を終了するため、「ＥＮ」信号をハイレベルからローレベルにする。
【００７９】
図１０は、本発明の第１の実施の形態におけるテストパターン生成器４００が生成したテストパターン列の一例を示す図である。テストパターン列には、「Ｒ／Ｗ」欄と、「アドレス」欄と「データ」欄とが設けられている。
【００８０】
「Ｒ／Ｗ」欄の「Ｗ０」、「Ｗ１」、「Ｗ２」、「Ｗ３」、および、「Ｗ４」の中の「Ｗ」の記号は、対応するアドレスが書込みアドレスであることを示す。「Ｒ／Ｗ」欄の「Ｒ０」、「Ｒ１」、「Ｒ２」、「Ｒ３」、および、「Ｒ４」の中の「Ｒ」の記号は、対応するアドレスが読出しアドレスであることを示す。「Ｗ」または「Ｒ」に付随する数字はアドレスの遷移の順番を示す。この数字が小さいものから大きいものへの遷移は、順方向への遷移であり、この数字が小さいものから大きいものへの遷移は、逆方向への遷移である。「Ｗ」に付随する数字と「Ｒ」に付随する数字とが同じ場合、それらに対応するアドレスは同一であるものとする。アドレスは、図３に例示した回路が動作することにより遷移するものとする。「アドレス」欄には、１６ビットのビット列がアドレスとして記載される。「データ」欄には、「アドレス」欄の各アドレスと対応付けて、１６ビットのビット列が書込み用のデータまたは読出し用のデータとして記載される。「Ｗ」に付随する数字と「Ｒ」に付随する数字とが同じ場合、それらに対応する「データ」欄には、同一の値のデータが記載されるものとする。
【００８１】
最初に現在値保持部４８０が保持していた初期値は、全ての値が０のビット列を除く、１６ビットのビット列の中のいずれかの値である。例えば、初期値を「０１００１０１０１００１０１０１」とする。演算制御部４１０は、現在値保持部４８０に、この現在値をホールドさせて出力させる。演算制御部４１０は、出力された現在値が書込みアドレスであることを示す情報（例えば、「Ｗ」を示す情報）と、「データ」欄の所定のデータとをさらに出力する。所定のデータは、例えば、アドレスの初期値と異なる値を初期値として、予め図３に例示した回路等を使用して生成しておいたデータである。なお、予め所定のデータを定めておくのではなく、テストパターン生成器４０１が図３に例示した回路を２つ備え、アドレスに加えて、データも順演算および逆演算により生成してもよいのは、勿論である。
【００８２】
次のクロックにおいて、演算制御部４１０は、順演算部４３０の演算結果により現在値保持部４８０に現在値を更新させて出力させる。図３に例示したように、順方向への遷移においては、前回の２ビット目「１」および１６ビット目「１」の排他的論理和「０」が今回の３ビット目となる。また、前回の３ビット目「０」および１６ビット目「１」の排他的論理和「１」が今回の４ビット目となり、前回の５ビット目「１」および１６ビット目「１」の排他的論理和「０」が６ビット目となる。前回の１６ビット目「１」が今回の１ビット目「１」となり、前回の４ビット目および６乃至１５ビット目は、今回の５ビット目および７乃至１６ビット目となる。この遷移規則により、テストパターン生成器４００は、初期値「０１００１０１０１００１０１０１」から、「１００１０００１０１００１０１０」の今回のビット列を生成する。
【００８３】
同様の遷移規則に従って、テストパターン生成器４００は、「Ｗ２」、「Ｗ３」、および、「Ｗ４」に対応するアドレスを生成する。ただし、演算制御部３１０は、最後の更新により出力された「Ｗ４」のアドレスが書込みアドレスである旨と、そのアドレスに書き込むデータとを示す情報を出力しない。このため、「Ｗ４」に対応するアドレスは、テストパターンとして出力されない。
【００８４】
そして、演算制御部４１０は、現在値保持部４８０に現在値を１クロックの間ホールドさせて出力させる。続いて、演算制御部４１０は、逆演算部４２０の演算結果により現在値保持部４８０に現在値を更新させて出力させる。演算制御部４１０は、これらの現在値が読出しアドレスであることを示す情報（例えば、「Ｒ」を示す情報）と、所定の期待データ（不図示）とをさらに出力する。ライト用のテストパターンと同数のリード用のテストパターンを生成した後、演算制御部４１０は、テストパターンの生成を終了する。
【００８５】
図１０に例示したように、テストパターン列において、書込みアドレス列の順番と読出しアドレス列の順番とが異なる。このため、テスト機能付きバスマスタ３００は、書込み時と読出し時とにおいてアクセスするアドレスの順番を同じにしたことに基づく遅延故障の未検出を防止することができる。
【００８６】
例えば、「Ｗ０」のアドレス、「Ｗ１」のアドレスの順に、データを書き込むテストを考える。このテストにおいて、アクセスレイテンシにより「Ｗ０」のアドレスにデータを書き込んだ後、「Ｗ１」のアドレスに書き込むべきデータを「Ｗ１」と別の「Ｗａ」のアドレスに書き込んでしまう遅延故障が生じると想定する。そして、テストパターン生成器４００は、逆演算部４２０の演算結果に基づき、「Ｒ１」のアドレス、「Ｒ０」のアドレスの順にリード用のテストパターンを生成している。このように、読出しにおけるアドレスの遷移パターンが書込みにおけるアドレスの遷移パターンと異なるため、読出しにおいて、書込み時と同様の遅延故障が発現しない。そして、データの比較において「Ｗ１」のアドレスには、そのアドレスに書き込むべきデータが書き込まれていないため、「Ｗ１」のアドレスから読み出されたデータは期待値と一致しない。このため、テスト機能付きバスマスタ３００は、遅延故障の検出に失敗しない。
【００８７】
このように第１の実施の形態によれば、テストパターン生成器４００は、演算により遷移値を任意の方向に遷移させて現在値を設定することができる。テストパターン生成器４００が書込み時と読出し時とにおいて遷移の方向を異ならせる設定を行えば、テスト機能付きバスマスタ３００が書込み時と同じ順番にアドレスを読み出することを原因とする、遅延故障の未検出が生じない。従って、テスト機能付きバスマスタ３００は、記憶素子を備える回路の遅延故障を確実に検出することができる。さらに、演算により遷移値を遷移させるため、テストパターン生成器４００は、書込みの順番の履歴を記憶しておかなくても、書込み時と異なる順番の読出し用のテストパターンを生成することができる。
【００８８】
なお、第１の実施の形態では、テスト機能付きバスマスタ３００は、ＤＲＡＭの故障を検出する構成としているが、ＳＲＡＭや、フリップフロップなど、ＤＲＡＭ以外の記憶素子を備える回路の故障を検出することもできる。
【００８９】
第１の実施の形態では、テストパターン生成器４００は、ＬＦＳＲにおける回路状態の遷移と同様の規則に従って値を遷移させている。しかし、確定的な規則に基づいて順方向および逆方向のいずれにも値を遷移させることができるのであれば、値を遷移させるのに別の規則を用いてもよい。例えば、シフトレジスタにおける回路状態の遷移規則や、ＬＦＳＲ以外の擬似乱数生成アルゴリズムを使用してもよい。
【００９０】
第１の実施の形態では、図３および図４に例示した回路を動作させることにより値を遷移させている。しかし、図２に例示したテストパターン生成器４００の機能を実現することができるのであれば、コンピュータプログラムを実行することにより値を遷移させることもできる。
【００９１】
＜２．第２の実施の形態＞
［電子機器の構成］
次に図１１乃至図１８を参照して本発明の第２の実施の形態について説明する。第２の実施の形態のテストパターン生成器は、順方向へ遷移後に現在値を退避値として退避させておき、逆方向への遷移後に退避値を復元する点において、第１の実施の形態のテストパターン生成器と異なる。第２の実施の形態のテスト機能付きバスマスタ３００は、テストパターン生成器４００の代わりにテストパターン生成器４０１を備える点で第１の実施の形態のテスト機能付きバスマスタ３００と異なる。
【００９２】
図１１は、本発明の実施の第２の形態におけるテストパターン生成器４０１の一構成例を示す全体図である。テストパターン生成器４０１は、演算制御部４１０および現在値選択保持部４４０の代わりに演算制御部４１１および現在値選択保持部５００を備える点において第１の実施の形態のテストパターン生成器４００と異なる。現在値選択保持部５００は、セレクタ４６０の代わりにセレクタ５４０を備え、退避値保持部５２０をさらに備える点において第１の実施の形態の現在値選択保持部４４０と異なる。
【００９３】
退避値保持部５２０は、演算制御部４１１の制御に従って現在値保持部４８０の保持する現在値を退避値として保持し、保持している退避値をセレクタ５４０へ出力するものである。具体的には、退避値保持部５２０は、演算制御部４１１から１ビットの「ＳＶ」信号を受信する。「ＳＶ」信号がローレベルであれば、退避値保持部５２０は、保持している値をホールドして出力し、「ＳＶ」信号がハイレベルであれば、退避値保持部５２０は、保持している値を現在値保持部４８０の保持する現在値により更新して出力する。
【００９４】
セレクタ５４０は、演算制御部４１１の制御に従って、逆演算部４２０が演算した値と、順演算部４３０が演算した値と、退避値保持部５２０からの退避値との中のいずれかを選択して現在値保持部４８０に入力するものである。具体的には、セレクタ５４０は、演算制御部４１１から１ビットの「ＤＩＲ」信号および「ＬＤ」信号を受信する。「ＬＤ」信号の値が「０」かつ「ＤＩＲ」信号の値が「０」の場合、セレクタ５４０は、順演算部４３０の演算結果を選択する。「ＬＤ」信号の値が「０」かつ「ＤＩＲ」信号の値が「１」の場合、セレクタ５４０は、逆演算部４２０の演算結果を選択する。「ＬＤ」信号の値が「１」の場合、「ＤＩＲ」信号の値にかかわらず、セレクタ５４０は、退避値保持部５２０からの退避値を選択する。
【００９５】
演算制御部４１１は、ライト用のテストパターン列と、リード用のテストパターン列とを交互に複数回生成するものである。
【００９６】
詳細には、演算制御部４１１は、生成したライト用のテストパターンが所定個となった時点において、退避値保持部５２０に現在値を退避値として保持させることにより、現在値を退避させる。そして、演算制御部４１１は、退避させてから生成したリード用のテストパターンが所定個となった時点において、現在値保持部４８０に現在値を退避値で更新させることにより、退避値を復元する。
【００９７】
演算制御部４１１は、ライト用のテストパターンの生成から、現在値の退避、リード用のテストパターンの生成、および、退避値の復元までの、上述の一連の手順を複数回繰り返す。これらの手順により、ライト用のテストパターン列と、リード用のテストパターン列とが交互に複数回生成される。
【００９８】
なお、本発明の第２の実施の形態のセレクタ５４０は、特許請求の範囲に記載の選択部の一例である。本発明の第２の実施の形態の現在値保持部は、特許請求の範囲に記載の現在値保持部の一例である。本発明の第２の実施の形態の退避値保持部５２０は、特許請求の範囲に記載の退避値保持部の一例である。
【００９９】
図１２は、逆演算部４２０、順演算部４３０、および、現在値選択保持部５００を実現する回路の一構成例を示す回路図である。
【０１００】
逆演算部４２０は、第１の実施の形態と同様にＸＯＲゲート４２１乃至４２３を備え、順演算部４３０は、第１の実施の形態と同様にＸＯＲゲート４３１乃至４３３を備える。現在値選択保持部５００は、現在値選択保持回路５０１乃至５１６を備える。
【０１０１】
現在値選択保持回路５０１乃至５１６のそれぞれには、第１の実施の形態の現在値選択保持回路４４１乃至４４５が備える端子と同様の端子が設けられ、さらに「ＳＶ」端子（不図示）および「ＬＤ」端子（不図示）が設けられる。現在値選択保持回路５０１乃至５１６の構成の詳細については、図１３を参照して後述する。「ＳＶ」端子は、演算制御部４１１からの「ＳＶ」信号が入力される入力端子であり、「ＬＤ」端子は、演算制御部４１１からの「ＬＤ」信号が入力される入力端子である。
【０１０２】
現在値選択保持回路４４１乃至４５６を現在値選択保持回路５０１乃至５１６に置換えて「ＳＶ」端子および「ＬＤ」端子を追加した点以外は、図１２に例示した回路の構成は、図３に例示した第１の実施の形態の回路の構成と同様である。
【０１０３】
図１３は、図１２の現在値選択保持回路５０１の一構成例を示す回路図である。現在値選択保持回路５０２乃至５１６の構成は、現在値選択保持回路５０１の構成と同様である。現在値選択保持回路５０１は、現在値保持回路４８１、退避値保持回路５２１、セレクタ５４１、および、ＯＲゲート５６１を備える。また、現在値選択保持回路５０１には、「Ｄｆ」端子、「Ｑｆ」端子、「Ｄｒ」端子、「Ｑｒ」端子、「ＤＩＲ」端子、「ＥＮ」端子、「ＳＶ」端子、および、「ＬＤ」端子が設けられる。
【０１０４】
セレクタ５４１は、「ＤＩＲ」端子からの「ＤＩＲ」信号と「ＬＤ」端子からの「ＬＤ」信号とに基づいて、「Ｄｆ」端子からの信号、「Ｄｒ」端子からの信号、および、退避値保持回路５２１からの信号の中のいずれかを選択して現在値保持回路４８１へ出力する。具体的には、「ＤＩＲ」信号および「ＬＤ」信号がローレベルの場合、セレクタ５４１は、「Ｄｆ」端子からの信号を選択して出力する。「ＤＩＲ」信号がハイレベルかつ「ＬＤ」信号がローレベルの場合、セレクタ５４１は、「Ｄｒ」端子からの信号を選択して出力する。「ＬＤ」信号がハイレベルの場合、「ＤＩＲ」信号の値にかかわらず、セレクタ５４１は、退避値保持回路５２１からの信号を選択して出力する。
【０１０５】
ＯＲゲート５６１は、「ＬＤ」端子からの「ＬＤ」信号の値と「ＥＮ」端子からの「ＥＮ」信号の値との論理和を現在値保持回路４８１へ出力する。
【０１０６】
現在値保持回路４８１は、１ビットの情報を現在値として保持する。現在値保持回路４８１は、ＯＲゲート５６１からの信号がハイレベルの場合、システムクロックに同期して、セレクタ５４１からの入力信号により現在値を更新して「Ｑｆ」端子、「Ｑｒ」端子、および、退避値保持回路５２１へ出力する。現在値保持回路４８１は、ＯＲゲート５６１からの信号がローレベルの場合、現在値を更新せずに、前回のクロックにおける値を「Ｑｆ」端子および「Ｑｒ」端子、および、退避値保持回路５２１へ出力する。
【０１０７】
退避値保持回路５２１は、１ビットの情報を退避値として保持する。退避値保持回路５２１は、「ＳＶ」端子からの「ＳＶ」信号がハイレベルの場合、システムクロックに同期して、現在値保持回路４８１から出力された信号により退避値を更新してセレクタ５４１へ出力する。退避値保持回路５２１は、「ＳＶ」信号がローレベルの場合、退避値を更新せずに、前回のクロックにおける値をセレクタ５４１へ出力する。
【０１０８】
図１４は、セレクタ５４１の動作の一例を示す真理値表である。演算制御部４１１からの「ＬＤ」信号および「ＤＩＲ」信号の値が「０」の場合、セレクタ５４１は、「Ｄｆ」端子からの順演算の結果を入力元として選択する。「ＬＤ」信号の値が「０」かつ「ＤＩＲ」信号の値が「１」の場合、セレクタ５４１は、「Ｄｒ」端子からの逆演算の結果を入力元として選択する。「ＬＤ」信号の値が「１」の場合、「ＤＩＲ」信号の値にかかわらず、セレクタ５４１は退避値保持回路５２１からの退避値を入力元として選択する。
【０１０９】
図１５は、退避値保持回路５１１の動作の一例を示す真理値表である。演算制御部４１１からの「ＳＶ」信号が「０」の場合、退避値保持回路５２１は、現在値保持回路４８１からの入力値にかかわらず、前回のクロックの退避値を保持して、保持している値を出力する。「ＥＮ」信号が「１」の場合、退避値保持回路５２１は、現在値保持回路４８１からの入力値で退避値を更新して出力する。
【０１１０】
［電子機器の動作］
図１６は、本発明の第２の実施の形態のテストパターン生成処理の一例を示すフローチャートである。第２の実施の形態では、テストパターン生成器４０１は、複数セットのテストパターン列を生成する。ここで、１セットは、現在値の初期値を出力してから最初に退避値を退避させるまでの間のテストパターン列、または、退避値を復元してから次に退避値を退避させるまでの間のテストパターン列である。
【０１１１】
演算制御部４１１はローレベルの「ＥＮ」信号を送信する。現在値保持部４８０は現在値を、セット内の最初のライト用のテストパターンとして出力する。また、演算制御部４１１は、「ＤＩＲ」信号、「ＬＤ」信号、および、「ＳＶ」をローレベルにしておく（ステップＳ９２１）。
【０１１２】
「ＬＤ」信号および「ＤＩＲ」信号がローレベルであるため、順演算部４３０の演算結果が現在値保持部４８０に入力される。演算制御部４１１は、「ＥＮ」信号をハイレベルにする。演算制御部４１１は、順演算部４３０の演算結果により現在値保持部４８０に現在値を更新させてライト用のテストパターンとして出力させる（ステップＳ９２２）。
【０１１３】
演算制御部４１１は、セット内において、現在値保持部４８０がライト用のテストパターンをＮ個（Ｎは、自然数）出力したか否かを判断する（ステップＳ９２３）。ライト用のテストパターンをＮ個出力していなければ（ステップＳ９２３：Ｎｏ）、演算制御部４１１は、ステップＳ９２２に戻る。
【０１１４】
セット内において、ライト用のテストパターンをＮ個出力したのであれば（ステップＳ９２３：Ｙｅｓ）、演算制御部４１１は、「ＳＶ」信号をハイレベルにすることにより、現在値保持部４８０が保持する現在値を退避値保持部５２０へ退避しておく。また、このとき、現在値保持部４８０は、順演算部４３０の演算結果により現在値を更新して出力するが、演算制御部４１１は、この現在値が書込み先または読出し先である旨の情報を出力しない。このため、現在値保持部４８０が出力した現在値は、テストパターンとして使用されない。そして、演算制御部４１１は、「ＤＩＲ」信号をハイレベルにしておく（ステップＳ９２４）。
【０１１５】
「ＬＤ」信号がローレベルかつ「ＤＩＲ」信号がハイレベルであるため、逆演算部４２０の演算結果が現在値保持部４８０に入力される。「ＥＮ」信号および「ＬＤ」信号の論理和を「１」とすることにより、演算制御部４１１は、逆演算部４２０の演算結果により現在値保持部４８０に現在値を更新させてリード用のテストパターンとして出力させる（ステップＳ９２５）。
【０１１６】
演算制御部４１１は、セット内において、現在値保持部４８０がリード用のテストパターンをＮ個出力したか否かを判断する（ステップＳ９２６）。リード用のテストパターンをＮ個出力していなければ（ステップＳ９２６：Ｎｏ）、演算制御部４１１は、ステップＳ９２５に戻る。
【０１１７】
セット内において、リード用のテストパターンをＮ個出力したのであれば（ステップＳ９２６：Ｙｅｓ）、演算制御部４１１は、現在値保持部４８０がテストパターン列をＫセット（Ｋは、自然数）出力したか否かを判断する（ステップＳ９２７）。
【０１１８】
テストパターン列をＫセット出力していなければ（ステップＳ９２７：Ｎｏ）、演算制御部４１１は、「ＬＤ」信号をハイレベルにする。演算制御部４１１は、退避値で現在値保持部４８０に現在値を更新させて、セット内の最初のライト用のテストパターンとして出力させる（ステップＳ９２８）。ステップＳ９２８の後、演算制御部４１１は、ステップＳ９２２に戻る。
【０１１９】
テストパターン列をＫセット出力したのであれば（ステップＳ９２７：Ｙｅｓ）、演算制御部４１１は、テストパターン生成処理を終了する。
【０１２０】
図１７は、本発明の第２の実施の形態におけるテストパターン生成器４０１の動作結果の一例を示すタイミングチャートである。この例では、テストパターン生成器４０１は、書込みアドレス４個と、読出しアドレス４個とからなるセットを複数セット生成する構成としている。
【０１２１】
「Ｔ０」のクロックにおいて、演算制御部４１１は、「ＥＮ」信号、「ＬＤ」信号、「ＤＩＲ」信号、および、「ＳＶ」信号をローレベルにする。現在値保持部４８０は、「ＥＮ」信号および「ＬＤ」信号の論理和が「０」であるため、前回のクロックの現在値「Ａ０」をホールドして「Ｑｆ」端子、「Ｑｒ」端子、および、退避値保持部５２０へ出力する。出力された現在値はライト用のテストパターンとして使用される。
【０１２２】
逆演算部４２０は、現在値「Ａ０」が逆方向へ遷移したアドレスを演算して「Ｄｒ」端子からセレクタ５４０へ出力し、順演算部４３０は現在値「Ａ０」が順方向へ遷移したアドレス「Ａ１」を演算して「Ｄｆ」端子からセレクタ５４０へ出力する。退避値保持部５２０は、「ＳＶ」信号がローレベルであるため、保持している値を更新せずにホールドしてセレクタ５４０へ出力する。セレクタ５４０は、「ＬＤ」信号および「ＤＩＲ」信号がローレベルであるため、順演算部４３０の演算結果「Ａ１」を選択して現在値保持部４８０へ出力する。
【０１２３】
「Ｔ１」のクロックにおいて、演算制御部４１１は、「ＥＮ」信号をハイレベルにする。現在値保持部４８０は、「ＥＮ」信号がハイレベルであるため、順演算部４３０の演算結果「Ａ１」によって現在値を更新して「Ｑｆ」端子、「Ｑｒ」端子、および、退避値保持部５２０へ出力する。出力された現在値はライト用のテストパターンとして使用される。逆演算部４２０は、逆方向へ遷移したアドレス「Ａ０」を演算して「Ｄｒ」端子からセレクタ５４０へ出力し、順演算部４３０は順方向へ遷移したアドレス「Ａ２」を演算して「Ｄｆ」端子からセレクタ５４０へ出力する。セレクタ５４０は、「ＬＤ」信号および「ＤＩＲ」信号がローレベルであるため、順演算部４３０の演算結果「Ａ２」を選択して現在値保持部４８０へ出力する。
【０１２４】
「Ｔ２」、「Ｔ３」のクロックにおいても、「Ｔ１」のクロックと同様に現在値保持部４８０は、順演算部４３０の演算結果により現在値を「Ａ２」、「Ａ３」に更新して出力する。
【０１２５】
「Ｔ４」のクロックにおいて、生成したライト用のテストパターンが４個になったため、演算制御部４１１は、現在値を退避させるために「ＳＶ」信号をハイレベルにする。また、演算制御部４１１は、リード用のテストパターンを生成するために「ＤＩＲ」信号をハイレベルにする。
【０１２６】
現在値保持部４８０は、「ＥＮ」信号がハイレベルであるため、順演算部４３０の演算結果「Ａ４」によって現在値を更新して「Ｑｆ」端子、「Ｑｒ」端子、および、退避値保持部５２０へ出力する。演算制御部４１１は、現在値が書込みアドレスまたは読出しアドレスである旨を示す情報を出力しない。このため、出力された現在値はテストパターンとして使用されない。逆演算部４２０は、逆方向へ遷移したアドレス「Ａ３」を「Ｄｒ」端子からセレクタ５４０へ出力し、順演算部４３０は順方向へ遷移したアドレス「Ａ５」を演算して「Ｄｆ」端子からセレクタ５４０へ出力する。退避値保持部５２０は、「ＳＶ」信号がハイレベルであるため、現在値「Ａ４」を退避値として保持してセレクタ５４０へ出力する。セレクタ５４０は、「ＬＤ」信号がローレベルかつ「ＤＩＲ」信号がハイレベルであるため、逆演算部４２０の演算結果「Ａ３」を選択して現在値保持部４８０へ出力する。
【０１２７】
「Ｔ５」のクロックにおいて、現在値を退避済みであるため、演算制御部４１１は「ＳＶ」信号をローレベルにする。
【０１２８】
現在値保持部４８０は、「ＥＮ」信号および「ＬＤ」信号の論理和が「１」であるため、現在値「Ａ０」を逆演算部４２０の演算結果「Ａ３」により更新して「Ｑｆ」端子、「Ｑｒ」端子、および、退避値保持部５２０へ出力する。出力された現在値はリード用のテストパターンとして使用される。
【０１２９】
逆演算部４２０は、逆方向へ遷移したアドレス「Ａ２」を「Ｄｒ」端子からセレクタ５４０へ出力し、順演算部４３０は順方向へ遷移したアドレス「Ａ４」を演算して「Ｄｆ」端子からセレクタ５４０へ出力する。退避値保持部５２０は、「ＳＶ」信号がローレベルであるため、現在値「Ａ４」を更新せずにセレクタ５４０へ出力する。セレクタ５４０は、「ＬＤ」信号がローレベルかつ「ＤＩＲ」信号がハイレベルであるため、逆演算部４２０の演算結果「Ａ２」を選択して現在値保持部４８０へ出力する。
【０１３０】
「Ｔ６」、「Ｔ７」、および、「Ｔ８」のクロックにおいても、「Ｔ５」のクロックと同様に現在値保持部４８０は、順演算部４３０の演算結果により現在値を「Ａ２」、「Ａ１」、「Ａ０」に更新して出力する。
【０１３１】
「Ｔ９」のクロックにおいて、生成したリード用のテストパターンが４個になったが生成したセット数は１つだけであるため、次のセット生成に備えて、演算制御部４１１は、退避値を復元する目的で「ＬＤ」信号をハイレベルにする。また、演算制御部４１１は、復元中に現在値を更新させないために「ＥＮ」信号をローレベルにする。
【０１３２】
現在値保持部４８０は、「ＥＮ」信号がローレベルであるため、現在値「Ａ０」をホールドして出力する。演算制御部４１１は、現在値が書込みアドレスまたは読出しアドレスである旨を示す情報を出力しない。このため、出力された現在値はテストパターンとして使用されない。逆演算部４２０は、逆方向へ遷移したアドレスを演算して「Ｄｒ」端子からセレクタ５４０へ出力し、順演算部４３０は順方向へ遷移したアドレス「Ａ１」を演算して「Ｄｆ」端子からセレクタ５４０へ出力する。セレクタ５４０は、「ＬＤ」信号がハイレベルであるため、退避値「Ａ４」を選択して現在値保持部４８０へ出力する。
【０１３３】
「Ｔ１０」のクロックにおいて、演算制御部４１１は、次のセット内のライト用のテストパターンを生成するため「ＥＮ」信号をハイレベルにし、「ＤＩＲ」信号をローレベルにする。また、退避値を復元したため、演算制御部４１１は、「ＬＤ」信号をローレベルにする。
【０１３４】
現在値保持部４８０は、「ＥＮ」信号がハイレベルであるため、退避値「Ａ４」によって現在値を更新して「Ｑｆ」端子、「Ｑｒ」端子、および、退避値保持部５２０へ出力する。出力された現在値はライト用のテストパターンとして使用される。逆演算部４２０は逆方向へ遷移したアドレス「Ａ３」を「Ｄｒ」端子からセレクタ５４０へ出力し、順演算部４３０は順方向へ遷移したアドレス「Ａ５」を演算して「Ｄｆ」端子からセレクタ５４０へ出力する。退避値保持部５２０は、「ＳＶ」信号がローレベルであるため、退避値「Ａ４」をホールドしてセレクタ５４０へ出力する。セレクタ５４０は、「ＬＤ」信号および「ＤＩＲ」信号がローレベルであるため、順演算部４３０の演算結果「Ａ５」を選択して現在値保持部４８０へ出力する。
【０１３５】
「Ｔ１１」乃至「Ｔ２０」のクロックにおいては、「Ｔ１」乃至「Ｔ１０」のクロックと同様にライト用のテストパターンの生成、現在値の退避、リード用テストパターンの生成、および、退避値の復元が実行される。
【０１３６】
このように第２の実施の形態によれば、テストパターン生成器４０１は、ライト用のテストパターンを生成した後に現在値を退避しておき、リード用テストパターンを生成したあと退避値を復元することができる。復元した現在値をさらに遷移させることにより、テストパターン生成器４０１は、ライト用のテストパターン列およびリード用のテストパターン列に続いて再度ライト用のテストパターン列を生成することができる。このようにしてライト用のテストパターンの生成から退避値の復元までの手順を繰り返すことにより、テストパターン生成器４０１は、ライト用のテストパターン列とリード用のテストパターン列とを交互に複数回生成することができる。このため、テスト機能付きバスマスタ３００は、データの書込み処理、および、データの読出し処理と、故障検出の処理とを並列に実行することができる。従って、ライト用のテストパターン列とリード用のテストパターン列とが交互に複数回生成されない場合と比較して、テスト機能付きバスマスタ３００は、故障の検出の速度を向上することができる。
【０１３７】
＜３．変形例＞
［電子機器の構成］
【０１３８】
次に図１８は、本発明の実施の形態におけるテストパターン生成器の変形例を示す回路図である。このテストパターン生成器は、データを反転させるＸＯＲゲート７０１乃至７１６をさらに備える点において、第１の実施形態のテストパターン生成器４００と異なる。
【０１３９】
ＸＯＲゲート７０１乃至７１６のそれぞれは、１ビットの「ＩＮＶＥＲＴ」信号が入力される。
【０１４０】
ＸＯＲゲート７０１乃至７１６は、現在値選択保持回路６４１乃至６５６の「Ｑｆ」端子からの出力値と、「ＩＮＶＥＲＴ」信号の値との排他的論理和を出力するものである。
【０１４１】
このように、「ＩＮＶＥＲＴ」信号に応じて、現在値を反転するＸＯＲゲート７０１乃至７１６を反転する構成とすることにより、値が反転したテストパターンを生成することができる。
【０１４２】
図１９乃至２１は、それぞれ本発明の実施の形態における電子機器の変形例を示すブロック図である。
【０１４３】
図１９に例示した電子機器の構成は、セレクタ７６０を備えず、テスト機能付きバスマスタ３００がバス２００に接続されている点で図１に例示した電子機器と異なる。テスト機能付きバスマスタ３００は、バスプロトコルを使用してバス２００を介してメモリコントローラ８００を制御する。
【０１４４】
このように電子機器にセレクタ７６０を設けない構成とすることにより、電子機器の部品点数を削減することができる。また、セレクタ７６０と、バス２００、テスト機能付きバスマスタ３００、および、メモリコントローラ８００との間の配線が不要となる。このため、セレクタ７６０を設ける場合と比較して、回路の自己診断機能を電子機器に持たせることが容易となる。
【０１４５】
図２０に例示した電子機器の構成は、テスト機能付きバスマスタ３００の代わりにテスト機能付きバスマスタ３０３を備えている点で図１に例示した電子機器と異なる。また、図２０に例示した電子機器の構成は、バスマスタ１１０、バス２１０、セレクタ７７０、メモリコントローラ８５０、および、ＤＲＡＭ９５０をさらに備える点で図１に例示した電子機器と異なる。
【０１４６】
バスマスタ１１０は、バス２００を介してメモリコントローラ８５０を制御するデバイスである。
【０１４７】
テスト機能付きバスマスタ３０３は、バスプロトコルを使用してメモリコントローラ８００および８５０を制御すると共に、ＤＲＡＭ９００および９５０を検査するものである。テスト機能付きバスマスタ３０３の制御および検査の手順は、検査対象のＤＲＡＭの数を増加させた点以外は、第１の実施の形態のテスト機能付きバスマスタ３００の手順と同様である。
【０１４８】
セレクタ７７０は、ＣＰＵの制御に従って、バスマスタ１１０からのリクエスト信号、または、テスト機能付きバスマスタ３０３からのリクエスト信号を選択してメモリコントローラ８５０へ出力する。
【０１４９】
メモリコントローラ８５０は、ＤＲＡＭ９５０を制御するものである。バス２１０は、バスマスタ３０３とメモリコントローラ８００および８５０とがデータを送受信する共通の経路である。
【０１５０】
このようにテスト機能付きバスマスタ３０３は、複数のＤＲＡＭを検査することもできる。
【０１５１】
図２１に例示した電子機器の構成は、セレクタ７６０および７７０を備えず、テスト機能付きバスマスタ３０３がバス２００に接続されている点で図２６に例示した電子機器と異なる。テスト機能付きバスマスタ３０３は、バスプロトコルを使用してバス２００を介してメモリコントローラ８００および８５０を制御する。
【０１５２】
このようにセレクタ７６０および７７０を備えず、複数のＤＲＡＭを検査する構成とすることもできる。電子機器にセレクタ７６０および７７０を設けない構成とすることにより、電子機器の部品点数を削減することができる。また、セレクタ７６０および７７０と、バスマスタ１００および１１０、バス２００、メモリコントローラ８００、および、８５０との間の配線が不要となる。このため、セレクタ７６０および７７０を設ける場合と比較して、回路の自己診断機能を電子機器に持たせることが容易となる。
【０１５３】
なお、本発明の第１乃至第３の実施の形態は本発明を具現化するための一例を示したものであり、本発明の第１乃至第３の実施において明示したように、本発明の各実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本発明の各実施の形態における事項とはそれぞれ対応関係を有する。ただし、本発明は各実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において各実施の形態に種々の変形を施すことにより具現化することができる。
【０１５４】
また、本発明の各実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【符号の説明】
【０１５５】
１００  バスマスタ
１１０  バスマスタ
２００  バス
２１０  バス
３００  テスト機能付きバスマスタ
３０３  テスト機能付きバスマスタ
４００  テストパターン生成器
４０１  テストパターン生成器
４１０  演算制御部
４１１  演算制御部
４４０  現在値選択保持部
４６０  セレクタ
４６１  セレクタ
４８０  現在値保持部
４８１  現在値保持回路
４２１〜４２３  ＸＯＲゲート
４３１〜４３３  ＸＯＲゲート
４４１〜４５６  現在値選択保持回路
５００  現在値選択保持部
５２０  退避値保持部
５４０  セレクタ
７５０  期待値比較器
７６０  セレクタ
８００  メモリコントローラ
８５０  メモリコントローラ
８６０  リクエスト受信部
８７０  レスポンス送信部
９００  ＤＲＡＭ
７０１〜７１６  ＸＯＲゲート
７７０  セレクタ
【図１】
2012098151.tif 000003
【図２】
2012098151.tif 000004
【図３】
2012098151.tif 000005
【図４】
2012098151.tif 000006
【図５】
2012098151.tif 000007
【図６】
2012098151.tif 000008
【図７】
2012098151.tif 000009
【図８】
2012098151.tif 000010
【図９】
2012098151.tif 000011
【図１０】
2012098151.tif 000012
【図１１】
2012098151.tif 000013
【図１２】
2012098151.tif 000014
【図１３】
2012098151.tif 000015
【図１４】
2012098151.tif 000016
【図１５】
2012098151.tif 000017
【図１６】
2012098151.tif 000018
【図１７】
2012098151.tif 000019
【図１８】
2012098151.tif 000020
【図１９】
2012098151.tif 000021
【図２０】
2012098151.tif 000022
【図２１】
2012098151.tif 000023