(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、実施形態を図面を用いて説明する。
【0011】
図1は、一実施形態におけるリコンフィギュラブル回路10の例を示している。
図1の太線は、テスト時のスキャンチェーンを示している。なお、
図1では、図を見やすくするため、スキャンチェーンを形成するための制御信号等の記載を省略している。リコンフィギュラブル回路10は、プロセッサエレメント20(以下、PEとも称する)等の論理ブロック間の接続を変更することにより任意の演算を実現する。例えば、リコンフィギュラブル回路10は、PE20、ネットワーク部30、データメモリ40、入力ポート50および出力ポート60を有している。
【0012】
PE20は、例えば、入力データに対して演算処理を実施する演算部(
図2の演算部OP10)を有している。例えば、PE20は、コンフィギュレーションデータCFIGを受け、コンフィギュレーションデータCFIGに基づいて任意の演算回路に設定される。コンフィギュレーションデータCFIGは、例えば、コンフィギュレーションデータを記憶しているコンフィギュレーションメモリから読み出される。
【0013】
ネットワーク部30は、PE20、データメモリ40、入力ポート50および出力ポート60に接続されている。例えば、ネットワーク部30は、コンフィギュレーションデータCFIGを受け、コンフィギュレーションデータCFIGに基づいてPE20間の接続を変更する。例えば、PE20は、アレー状に配置されている。
【0014】
データメモリ40は、例えば、PE20で使用されるデータ等を、ネットワーク部30を介して記憶する。入力ポート50は、リコンフィギュラブル回路10の外部から受ける入力データDINを、PE20やデータメモリ40等にネットワーク部30を介して供給する。出力ポート60は、例えば、PE20の演算結果等の出力データDOUTを、ネットワーク部30を介して受ける。そして、出力ポート60は、ネットワーク部30を介して受けた出力データDOUTを、リコンフィギュラブル回路10の外部に出力する。
【0015】
また、PE20およびネットワーク部30は、テストモード信号TSTMを受ける。例えば、リコンフィギュラブル回路10がテストされるとき、テストモード信号TSTMは、アサートされる。通常動作では、テストモード信号TSTMは、ネゲートされる。
【0016】
リコンフィギュラブル回路10のテストでは、例えば、リコンフィギュラブル回路10内のフリップフロップは、スキャンチェーン(
図1の太線)を形成する。フリップフロップの初期値は、スキャンイン端子SINに供給されるテストパターンにより設定される。例えば、スキャンチェーンの先頭のフリップフロップは、スキャン用のクロックに同期して、スキャンイン端子SINで受けるデータを順次取り込んで後段のフリップフロップに出力する。
【0017】
フリップフロップの初期値が設定された後、スキャンチェーンが解除され、リコンフィギュラブル回路10の動作テストが実施される。動作テストの結果は、フリップフロップに取り込まれる。リコンフィギュラブル回路10内のフリップフロップは、動作テストの結果がフリップフロップに記憶された後、スキャンチェーンを再度形成する。これにより、フリップフロップに記憶されたデータは、例えば、スキャン用のクロックに同期して、スキャンアウト端子SOUTから順次読み出される。読み出したデータの値と期待値とを比較することにより、故障の有無が判定される。
【0018】
図2は、
図1に示したプロセッサエレメント20の一例を示している。なお、
図2では、図を見やすくするため、フリップフロップFF10、FF20、FF30等に供給される動作クロックやスキャン用の信号の記載を省略している。PE20は、例えば、演算部OP10、回路ブロックBK(BK0−BK31)、論理和回路OR10およびフリップフロップFF20を有している。
【0019】
例えば、演算部OP10は、データDATAa、DATAbに対して演算処理を実施する。演算部OP10の出力データのバス幅は、例えば、32ビットである。なお、演算部OP10の出力データのバス幅は、32ビットに限定されない。また、演算部OP10の入力データは、2つ(データDATAa、DATAb)に限定されない。
【0020】
回路ブロックBK0−BK31は、例えば、演算部OP10の出力データ(演算結果)の各ビットに対応して設けられる。例えば、回路ブロックBK0は、演算部OP10の出力データ(
図2では、32ビットのデータ)の最下位ビットのデータをPE20の外部に転送する。また、例えば、回路ブロックBK31は、演算部OP10の出力データの最上位ビットのデータをPE20の外部に転送する。例えば、通常動作では、回路ブロックBK0から出力されるデータDATAo0は、演算部OP10の出力データの最下位ビットのデータであり、回路ブロックBK31から出力されるデータDATAo31は、演算部OP10の出力データの最上位ビットのデータである。
【0021】
各回路ブロックBKは、フリップフロップFF10、FF30、選択部SEL10、SEL20および論理積回路AND10を有している。回路ブロックBK0−BK31の構成は、互いに同じである。このため、回路ブロックBK0について説明する。フリップフロップFF10は、演算部OP10の出力データ(演算結果)の最下位ビットのデータをデータ入力端子Dで受け、受けたデータを一時的に記憶する。そして、フリップフロップFF10は、記憶したデータを、出力端子Qから選択部SEL10の入力端子IN0に動作クロックに同期して出力する。
【0022】
選択部SEL10は、演算部OP10の出力データ(演算結果)の最下位ビットのデータを入力端子IN1で受ける。また、選択部SEL10は、選択信号を選択端子Sで受ける。例えば、選択部SEL10は、選択端子Sで受けた選択信号が“0”のとき、入力端子IN0で受けたデータを出力端子OUTから出力する。また、例えば、選択部SEL10は、選択端子Sで受けた選択信号が“1”のとき、入力端子IN1で受けたデータを出力端子OUTから出力する。
【0023】
選択部SEL10の出力端子OUTは、例えば、ノードN1に接続されている。すなわち、選択部SEL10は、演算部OP10とノードN1との間に配置される。そして、選択部SEL10は、演算部OP10からノードN1までのデータ経路を、フリップフロップFF10を含む経路とフリップフロップFF10を含まない経路とのいずれかに、選択端子Sで受けた選択信号に基づいて設定する。このように、選択部SEL10は、フリップフロップFF10を含む経路を介して演算部OP10から受けたデータとフリップフロップFF10を含まない経路を介して演算部OP10から受けたデータのいずれかを出力する。
【0024】
選択部SEL10の出力端子OUT(ノードN1)は、例えば、選択部SEL20の入力端子IN0および論理和回路ORの入力端子に接続されている。したがって、選択部SEL20は、選択部SEL10の出力データを入力端子IN0で受ける。また、選択部SEL20は、フリップフロップFF20の出力端子Qから出力されるデータを入力端子IN1で受ける。
【0025】
さらに、選択部SEL20は、選択信号を選択端子Sで受ける。例えば、選択部SEL20は、選択端子Sで受けた選択信号が“0”のとき、入力端子IN0で受けたデータを出力端子OUTからPE20の外部に出力する。また、例えば、選択部SEL20は、選択端子Sで受けた選択信号が“1”のとき、入力端子IN1で受けたデータを出力端子OUTからPE20の外部に出力する。すなわち、選択部SEL20は、ノードN1とPE20の出力端との間に配置される。そして、選択部SEL20は、ノードN1からPE20の出力端までのデータ経路を、選択端子Sで受けた選択信号に基づいて設定する。
【0026】
フリップフロップFF30は、コンフィギュレーションデータCFIGをデータ入力端子Dで受け、受けたデータCFIGを一時的に記憶する。そして、フリップフロップFF30は、記憶したデータCFIGを、出力端子Qから選択部SEL10の選択端子Sおよび論理積回路AND10の入力端子に動作クロックに同期して出力する。すなわち、フリップフロップFF30が受けるコンフィギュレーションデータCFIGは、選択部SEL10の選択信号に対応している。
【0027】
論理積回路AND10は、選択部SEL20を制御する制御部として機能する。例えば、論理積回路AND10は、テストモード信号TSTMおよびフリップフロップFF30の出力データを受ける。そして、論理積回路AND10は、テストモード信号TSTMとフリップフロップFF30の出力データとの論理積結果を、選択部SEL20の選択端子Sに出力する。
【0028】
すなわち、選択部SEL20の選択信号は、論理積回路AND10により生成される。例えば、テストモード信号TSTMが“1”のとき、選択部SEL20の選択信号(論理積回路AND10の出力)は、選択部SEL10の選択信号と同じになる。また、例えば、テストモード信号TSTMが“0”のとき、選択部SEL20の選択信号は、選択部SEL10の選択信号の値に拘わらず、“0”である。
【0029】
したがって、通常動作(例えば、テストモード信号TSTMが“0”のとき)では、論理積回路AND10および選択部SEL20は、演算部OP10からPE20の出力端までのデータ経路に、フリップフロップFF20が含まれないように動作する。すなわち、通常動作では、選択部SEL20は、選択部SEL10から受けたデータを出力する。したがって、通常動作では、フリップフロップFF20によるデータ遅延は、発生しない。
【0030】
また、リコンフィギュラブル回路10のテスト(例えば、テストモード信号TSTMが“1”のとき)では、論理積回路AND10および選択部SEL20は、演算部OP10からPE20の出力端までのデータ経路に、フリップフロップFF10、FF20の一方が含まれるように動作する。例えば、選択部SEL20は、フリップフロップFF10を含む経路のテストでは、選択部SEL10から受けたデータを出力し、フリップフロップFF10を含まない経路のテストでは、フリップフロップFF20から受けたデータを出力する。
【0031】
なお、選択部SEL20を制御する制御部は、論理積回路AND10に限定されない。例えば、PE20は、論理積回路AND10の代わりに、否定論理積回路を有してもよい。このときには、例えば、選択部SEL20は、フリップフロップFF20の出力端子Qから出力されるデータを入力端子IN0で受け、選択部SEL10の出力データを入力端子IN1で受ける。
【0032】
論理和回路OR10は、各回路ブロックBK0−BK31の選択部SEL10から出力されるデータを受ける。そして、論理和回路OR10は、各回路ブロックBK0−BK31の選択部SEL10から出力されるデータ(例えば、32ビットの各値)の論理和を演算し、論理和結果をフリップフロップFF20のデータ入力端子Dに出力する。すなわち、論理和回路OR10は、演算部OP10の出力データを、選択部SEL10を介して受ける。そして、論理和回路OR10は、演算部OP10の出力データの各ビット値を用いて論理演算を実施し、論理演算結果をフリップフロップFF20に出力する。
【0033】
フリップフロップFF20は、論理和回路OR10から受けたデータ(論理和結果)を一時的に記憶する。そして、フリップフロップFF20は、記憶したデータを、出力端子Qから各回路ブロックBK0−BK31の選択部SEL20の入力端子IN1に動作クロックに同期して出力する。すなわち、フリップフロップFF20は、回路ブロックBK0−BK31で共有されている。回路ブロックBK0−BK31が演算部OP10の出力データの各ビットに対応して設けられているため、フリップフロップFF20は、演算部OP10の出力データの各ビットで共有される。
【0034】
図3は、
図2に示したプロセッサエレメント20のテスト経路の一例を示している。破線の経路PTH10および一点鎖線の経路PTH11は、演算部OP10からノードN1までのデータ経路を示している。例えば、経路PTH10は、フリップフロップFF10を含むデータ経路を示し、経路PTH11は、フリップフロップFF10を含まないデータ経路を示している。また、破線の経路PTH20および一点鎖線の経路PTH21は、ノードN1からPE20の出力端までのデータ経路を示している。例えば、経路PTH20は、フリップフロップFF20を含まないデータ経路を示し、経路PTH21は、フリップフロップFF20を含むデータ経路を示している。以下、フリップフロップFF10、FF20を含まない経路PTH11、PTH20をスルー経路PTH11、PTH20とも称する。
【0035】
PE20内のテスト経路は、フリップフロップFF30に設定される値とテストモード信号TSTMの値とにより設定される。例えば、PE20内の故障を検出するためのテストでは、テストモード信号TSTMは、“1”に設定される。また、フリップフロップFF10、FF20、FF30の値は、
図1に示したスキャンイン端子SINに供給されるテストパターンにより設定される。そして、フリップフロップFF10、FF20、FF30に値が設定された後、スキャンチェーンは解除される。これにより、PE20内のデータ経路等が設定される。
【0036】
例えば、フリップフロップFF30に“0”を設定するテストパターンでは、演算部OP10からPE20の出力端までのデータ経路として、破線の経路PTH10、PTH20が選択される。また、例えば、フリップフロップFF30に“1”を設定するテストパターンでは、演算部OP10からPE20の出力端までのデータ経路として、一点鎖線の経路PTH11、PTH21が選択される。
【0037】
このように、選択部SEL20は、経路PTH10が選択されるテストでは、ノードN1からPE20の出力端までのデータ経路として、スルー経路PTH20を選択する。また、選択部SEL20は、スルー経路PTH11が選択されるテストでは、ノードN1からPE20の出力端までのデータ経路として、経路PTH21を選択する。
【0038】
すなわち、演算部OP10からPE20の出力端までのデータ経路には、フリップフロップFF10、FF20の一方が含まれる。これにより、演算部OP10の出力データ(動作テストの結果)は、フリップフロップFF10、FF20のいずれかに取り込まれ、後段のPE20の演算部OP10には転送されない。したがって、この実施形態では、リコンフィギュラブル回路10の動作テストを実施したときに、ループが発生することを防止できる。
【0039】
フリップフロップFF10、FF20に設定された値の一方は、例えば、後段のPE20の演算部OP10にネットワーク部30を介して転送される。例えば、経路PTH10が選択されるテストでは、選択部SEL20は、選択部SEL10から受けたデータ(フリップフロップFF10に設定された値)を出力する。また、スルー経路PTH11が選択されるテストでは、選択部SEL20は、フリップフロップFF20から受けたデータ(フリップフロップFF20に設定された値)を出力する。なお、演算部OP10の出力データは、フリップフロップFF10、FF20の一方に記憶される。
【0040】
例えば、経路PTH10が選択されるテストでは、フリップフロップFF10に設定された値が後段のPE20に転送された後、演算部OP10の出力データがフリップフロップFF10に記憶される。また、例えば、スルー経路PTH11が選択されるテストでは、フリップフロップFF20に設定された値が後段のPE20に転送された後、演算部OP10の出力データ(より詳細には、演算部OP10の出力データの各ビット値の論理和結果)がフリップフロップFF20に記憶される。このように、この実施形態では、スルー経路PTH11を含むデータ経路をテストするときにも、ループが発生することを防止できる。
【0041】
演算部OP10の出力データ(動作テストの結果)がフリップフロップFF10、FF20の一方に記憶された後、スキャンチェーンは再度形成される。そして、フリップフロップFF10、FF20、FF30に記憶されているデータは、例えば、スキャン用のクロックに同期して、
図1に示したスキャンアウト端子SOUTから順次読み出される。この実施形態では、読み出したデータの値と期待値とを比較することにより、PE20内に故障が存在するか否かを判定できる。
【0042】
この実施形態では、スルー経路PTH11を含むデータ経路をテストできるため、故障検出率を向上できる。例えば、この実施形態では、経路PTH10が選択されるテストパターンと、スルー経路PTH11が選択されるテストパターンとの両方を実施することにより、故障検出率を向上できる。なお、スルー経路PTH11が選択されるテストでは、例えば、論理和回路OR10の32入力の1つのみを“1”にするテストパターン(32パターン)と論理和回路OR10の32入力の全てを“0”にするテストパターンとが使用される。
【0043】
ここで、例えば、PE20内の信号線の論理レベルが“0”か“1”に固定される故障がPE20内に1箇所のみ存在すると仮定した故障モデルでは、故障は、セルの入力端子および出力端子に定義される。
図3の例では、故障は、フリップフロップFFの2端子(端子D、Q)、選択部SELの4端子(端子IN0、IN1、OUT、S)、論理積回路AND10の3端子(2入力、1出力)および論理和回路OR10の33端子(32入力、1出力)に、定義される。
【0044】
フリップフロップFFは、PE20内に65個(2×32+1)配置され、選択部SELは、PE20内に64個(2×32)配置されている。また、論理積回路AND10は、PE20内に32個(1×32)配置され、論理和回路OR10は、PE20内に1個配置されている。したがって、PE20内のセルの端子数は、515個(2×65+4×64+3×32+33×1)である。各端子に“0”固定および“1”固定の故障が定義されるため、定義される故障数は、端子数の2倍である。したがって、
図3の例では、定義される故障数は、1030個である。
【0045】
リコンフィギュラブル回路10のテストでは、テストモード信号TSTMが“1”に固定される。すなわち、この実施形態では、論理積回路AND10の入力端子の一方に“0”のテストモード信号TSTMを供給することで検証される32個(1×32)の故障は、検出されない。例えば、論理積回路AND10では、テストモード信号TSTMを受ける入力端子の“1”固定の故障は、検出されない。その他の故障(998個の故障)は、検出可能である。したがって、この実施形態では、故障検出率は、0.97(=998/1030)である。
【0046】
なお、PE20の構成は、この例に限定されない。例えば、演算部OP10の出力データを各回路ブロックBK0−BK31の選択部SEL10を介して受け、演算部OP10の出力データの各ビット値を用いて論理演算を実施し、論理演算結果をフリップフロップFF20に出力する論理演算回路は、論理和回路OR10でなくてもよい。例えば、PE20は、論理和回路OR10の代わりに、演算部OP10の出力データの各ビット値の排他的論理和を演算する排他的論理和回路を有してもよい。
【0047】
論理和回路OR10の代わりに排他的論理和回路が形成されたPE20では、テストパターンの数を、論理和回路OR10を使用するときに比べて少なくできる。例えば、スルー経路PTH11が選択されるテストでは排他的論理和回路の32入力の全てを“1”にするテストパターンと、排他的論理和回路の32入力の全てを“0”にするテストパターンと、排他的論理和回路の32入力の少なくとも1つを他と異なる論理レベルにするテストパターンとが使用される。
【0048】
あるいは、PE20は、論理和回路OR10の代わりに、否定論理和回路を有してもよい。また、PE20は、論理和回路OR10の代わりに、論理積回路を有してもよいし、否定論理積回路を有してもよい。論理和回路OR10、否定論理和回路、論理積回路および否定論理積回路は、排他的論理和回路に比べて回路規模を小さくできる。したがって、例えば、論理和回路OR10でフリップフロップFF20の入力データを生成するPE20では、排他的論理和回路でフリップフロップFF20の入力データを生成するPE20に比べて、レイアウト面積を小さくできる。
【0049】
図4は、比較例のプロセッサエレメント20EXのテスト経路を示している。
図4の二点鎖線は、PE20EXのテストで検証されない信号線を示している。比較例のPE20EXでは、
図2に示したPE20から論理和回路OR10およびフリップフロップFF20が省かれている。そして、PE20EXは、回路ブロックBKの代わりに回路ブロックBKEX(BKEX0−BKEX31)を有している。PE20EXのその他の構成は、PE20と同じである。
【0050】
回路ブロックBKEXでは、
図2に示した回路ブロックBKから選択部SEL20が省かれている。そして、回路ブロックBKEXは、論理積回路AND10の代わりに、論理積回路AND20を有している。論理積回路AND20の出力は、選択部SEL10の選択端子Sに接続されている。回路ブロックBKEXのその他の構成は、回路ブロックBKと同じである。なお、選択部SEL20が省かれているため、選択部SEL10の出力データは、PE20EXの出力データDATAoである。
【0051】
論理積回路AND20は、テストモード信号TSTMおよびフリップフロップFF30の出力データを受ける。論理積回路AND20は、テストモード信号TSTMとフリップフロップFF30の出力データとの論理積結果を、選択部SEL10の選択端子Sに出力する。なお、論理積回路AND20は、テストモード信号TSTMを負論理で処理する。例えば、論理積回路AND20の出力は、テストモード信号TSTMが“1”のとき、フリップフロップFF30の出力値に拘わらず、“0”である。
【0052】
回路ブロックBKEX内では、フリップフロップFF10の2端子(端子D、Q)、フリップフロップFF30の2端子(端子D、Q)、選択部SEL10の4端子(端子IN0、IN1、OUT、S)および論理積回路AND20の3端子(2入力、1出力)に、故障が定義される。したがって、PE20EXでは、352個(11×32)の端子に“0”固定および“1”固定の故障が定義される。すなわち、PE20EXでは、定義される故障数は、704個である。
【0053】
比較例のリコンフィギュラブル回路のテストでは、ループの発生を回避するために、演算部OP10からPE20EXの出力端までのデータ経路に、フリップフロップFF10を含める。したがって、選択部SEL10の選択端子Sは、“0”に固定される。このため、選択部SEL10では、選択端子Sの“0”固定の故障および入力端子IN1の故障(“0”固定および“1”固定)は、検出されない。
【0054】
また、論理積回路AND20では、出力端子の“0”固定の故障、フリップフロップFF30の出力データを受ける入力端子の故障(“0”固定および“1”固定)およびテストモード信号TSTMを受ける入力端子の“1”固定の故障は、検出されない。したがって、PE20EXでは、224個(3×32+4×32)の故障は、検出されない。その他の故障(480個の故障)は、検出可能である。したがって、比較例のリコンフィギュラブル回路のテストでは、故障検出率は、0.68(=480/704)である。このように、比較例のPE20EXの故障検出率は、
図2に示したPE20の故障検出率に比べて低下する。すなわち、
図2に示したPE20では、故障検出率を向上できる。
【0055】
図5は、
図1に示したネットワーク部30の要部を示している。なお、
図5では、図を見やすくするために、
図2に示した演算部OP10のデータが伝送される信号線を示し、その他の信号線(コンフィギュレーションデータCFIGやテストモード信号TSTM等)の記載を省略している。
【0056】
ネットワーク部30は、各PE20の入力データ(例えば、
図2に示したデータDATAa、DATAb)を選択するためのデータ選択部DSEL(DSELl10a−DESL15a、DESL10b−DESL15b)を有している。例えば、データ選択部DSELは、全てのPE20の出力データ(
図2に示したデータDATAo)および
図1に示した入力ポート50等からのデータを受ける。なお、
図5では、
図1に示した入力ポート50等からのデータが伝送される信号線の記載を省略している。
【0057】
そして、データ選択部DSELは、対応するPE20に出力するデータを、PE20から受けたデータから選択する。例えば、通常動作では、各データ選択部DSELから出力されるデータは、コンフィギュレーションデータCFIGに基づいて選択される。また、リコンフィギュラブル回路10のテストでは、各データ選択部DSELから出力されるデータは、テストモード信号TSTM等に基づいて選択される。
【0058】
なお、ネットワーク部30の構成は、この例に限定されない。例えば、データ選択部DSELは、任意のPE20の出力データを受けてもよい。例えば、データ選択部DSELは、出力先のPE20を除く全てのPE20の出力データを受けてもよい。
【0059】
図6は、
図1に示したリコンフィギュラブル回路10のテスト経路の一例を示している。
図6の太線は、データ選択部DSEL10b、DESL15bにより選択されたテスト経路を示している。例えば、
図6の左上に示したPE20は、右下に示したPE20の出力データDATAoを、入力データDATAbとして、データ選択部DSEL10bを介して受ける。そして、
図6の右下に示したPE20は、左上に示したPE20の出力データDATAoを、入力データDATAbとして、データ選択部DSEL15bを介して受ける。
【0060】
ここで、例えば、
図6の太線で示したテスト経路にフリップフロップが存在しないときには、ループが発生する。例えば、
図4に示した比較例のPE20EXのテストでは、フリップフロップFF10を含まない経路(
図4の演算部OP10、選択部SEL10間の二点鎖線で示した信号線)が選択されたとき、ループが発生する。このため、
図4に示した比較例のPE20EXのテストでは、フリップフロップFF10を含まない経路は、選択されない。
【0061】
なお、この実施形態では、
図3で説明したように、PE20内のテスト経路に、フリップフロップFF10、FF20の一方が含まれる。このため、この実施形態では、
図6の太線で示したテスト経路が形成されたときにも、ループが発生することを防止できる。例えば、この実施形態では、フリップフロップFF10を含まない経路PTH11が選択されたときには、PE20内のテスト経路にフリップフロップFF20が含まれる。したがって、この実施形態のリコンフィギュラブル回路10のテストでは、フリップフロップFF10を含まない経路PTH11が選択されたときにも、ループが発生することを防止できる。
【0062】
図7は、
図1に示したプロセッサエレメント20の別の例を示している。
図1−
図6で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
図7に示したPE20では、
図2に示したPE20から論理和回路OR10およびフリップフロップFF20が省かれている。そして、
図7に示したPE20は、回路ブロックBKの代わりに回路ブロックBKA(BKA0−BKA31)を有している。
図7に示したPE20のその他の構成は、
図2に示したPE20と同じである。また、回路ブロックBKAの構成は、フリップフロップFF21が追加されていることを除いて、
図2に示した回路ブロックBKと同じである。
【0063】
例えば、回路ブロックBKA0−BKA31は、演算部OP10の出力データ(演算結果)の各ビットに対応して設けられる。各回路ブロックBKAは、フリップフロップFF10、FF21、FF30、選択部SEL10、SEL20および論理積回路AND10を有している。例えば、フリップフロップFF21は、選択部SELの出力端子OUTから出力されるデータをデータ入力端子Dで受け、受けたデータを一時的に記憶する。そして、フリップフロップFF21は、記憶したデータを、出力端子Qから選択部SEL20の入力端子IN1に動作クロックに同期して出力する。
【0064】
図8は、
図7に示したプロセッサエレメント20のテスト経路の一例を示している。破線の経路PTH10および一点鎖線の経路PTH11は、演算部OP10からノードN1までのデータ経路を示している。例えば、経路PTH10は、フリップフロップFF10を含むデータ経路を示し、スルー経路PTH11は、フリップフロップFF10を含まないデータ経路を示している。また、破線の経路PTH20および一点鎖線の経路PTH21’は、ノードN1からPE20の出力端までのデータ経路を示している。例えば、スルー経路PTH20は、フリップフロップFF21を含まないデータ経路を示し、経路PTH21’は、フリップフロップFF21を含むデータ経路を示している。
【0065】
PE20内の故障を検出するためのテストでは、テストモード信号TSTMは、“1”に設定される。また、フリップフロップFF10、FF21、FF30の値は、
図1に示したスキャンイン端子SINに供給されるテストパターンにより設定される。そして、フリップフロップFF10、FF21、FF30に値が設定された後、スキャンチェーンは解除される。これにより、PE20内のデータ経路等が設定される。
【0066】
例えば、フリップフロップFF30に“0”を設定するテストパターンでは、演算部OP10からPE20の出力端までのデータ経路として、破線の経路PTH10、PTH20が選択される。また、例えば、フリップフロップFF30に“1”を設定するテストパターンでは、演算部OP10からPE20の出力端までのデータ経路として、一点鎖線の経路PTH11、PTH21’が選択される。
【0067】
このように、選択部SEL20は、経路PTH10が選択されるテストでは、ノードN1からPE20の出力端までのデータ経路として、スルー経路PTH20を選択する。また、選択部SEL20は、スルー経路PTH11が選択されるテストでは、ノードN1からPE20の出力端までのデータ経路として、経路PTH21’を選択する。
【0068】
すなわち、演算部OP10からPE20の出力端までのデータ経路には、フリップフロップFF10、FF21の一方が含まれる。これにより、演算部OP10の出力データ(動作テストの結果)は、フリップフロップFF10、FF21のいずれかに取り込まれ、後段のPE20の演算部OP10には転送されない。したがって、このPE20を含むリコンフィギュラブル回路10においても、テストを実施したときに、ループが発生することを防止できる。
【0069】
フリップフロップFF10、FF21に設定された値の一方は、例えば、後段のPE20の演算部OP10にネットワーク部30を介して転送される。例えば、経路PTH10が選択されるテストでは、選択部SEL20は、選択部SEL10から受けたデータ(フリップフロップFF10に設定された値)を出力する。また、スルー経路PTH11が選択されるテストでは、選択部SEL20は、フリップフロップFF21から受けたデータ(フリップフロップFF21に設定された値)を出力する。なお、演算部OP10の出力データは、フリップフロップFF10、FF21の一方に記憶される。
【0070】
例えば、経路PTH10が選択されるテストでは、フリップフロップFF10に設定された値が後段のPE20に転送された後、演算部OP10の出力データがフリップフロップFF10に記憶される。また、例えば、スルー経路PTH11が選択されるテストでは、フリップフロップFF21に設定された値が後段のPE20に転送された後、演算部OP10の出力データがフリップフロップFF21に記憶される。このように、
図7に示したPE20においても、スルー経路PTH11を含むデータ経路をテストするときに、ループが発生することを防止できる。
【0071】
演算部OP10の出力データ(動作テストの結果)がフリップフロップFF10、FF21の一方に記憶された後、スキャンチェーンは再度形成される。そして、フリップフロップFF10、FF21、FF30に記憶されているデータは、例えば、スキャン用のクロックに同期して、
図1に示したスキャンアウト端子SOUTから順次読み出される。読み出したデータの値と期待値とを比較することにより、PE20内に故障が存在するか否かが判定される。
【0072】
このように、
図7に示したPE20においても、スルー経路PTH11を含むデータ経路をテストできるため、故障検出率を向上できる。例えば、経路PTH10が選択されるテストパターンと、スルー経路PTH11が選択されるテストパターンとの両方を実施することにより、故障検出率は向上する。なお、
図7に示したPE20では、フリップフロップFF21が演算部OP10の出力データの各ビットに対応して設けられるため、
図2に示したPE20に比べて、テストパターンの数を少なくできる。例えば、
図7に示したPE20では、演算部OP10の出力データの各ビット値の論理演算を実施する論理演算回路を使用していない。このため、
図7に示したPE20のテストでは、論理演算回路(例えば、
図2に示した論理和回路OR10)の32入力の1つのみを“1”にするようなテストパターンは、不要である。
【0073】
ここで、
図8の例では、故障は、フリップフロップFFの2端子(端子D、Q)、選択部SELの4端子(端子IN0、IN1、OUT、S)および論理積回路AND10の3端子(2入力、1出力)に、定義される。フリップフロップFFは、PE20内に96個(3×32)配置され、選択部SELは、PE20内に64個(2×32)配置されている。また、論理積回路AND10は、PE20内に32個(1×32)配置されている。したがって、PE20内のセルの端子数は、544個(2×96+4×64+3×32)である。各端子に“0”固定および“1”固定の故障が定義されるため、定義される故障数は、1088個である。
【0074】
リコンフィギュラブル回路10のテストでは、テストモード信号TSTMが“1”に固定される。すなわち、論理積回路AND10の入力端子の一方に“0”のテストモード信号TSTMを供給することで検証される32個(1×32)の故障は、検出されない。例えば、論理積回路AND10では、テストモード信号TSTMを受ける入力端子の“1”固定の故障は、検出されない。その他の故障(1056個の故障)は、検出可能である。したがって、故障検出率は、0.97(=1056/1088)である。このように、
図7に示したPE20においても、
図4に示した比較例のPE20EXに比べて、故障検出率を向上できる。
【0075】
図9は、上述したプロセッサエレメント20の故障検出率とレイアウト増加分の一例を示している。レイアウト増加分は、
図4に示した比較例のPE20EXを基準にしたときの各PE20のレイアウト増加分を、フリップフロップFFの個数に換算して示している。例えば、32入力の論理和回路OR10のレイアウト面積は、フリップフロップFFのレイアウト面積の約2倍である。また、選択部SEL20のレイアウト面積は、フリップフロップFFのレイアウト面積の約0.36倍である。
【0076】
図2に示したPE20のレイアウト増加分は、論理和回路OR10、フリップフロップFF20および32個の選択部SEL20のレイアウト面積に対応している。したがって、
図2に示したPE20のレイアウト増加分は、約15個(2×1+1+0.36×32)のフリップフロップFFのレイアウト面積に相当する。なお、
図2に示したPE20の故障検出率は、97%であり、比較例のPE20EXの故障検出率(68%)に比べて向上している。
【0077】
図7に示したPE20のレイアウト増加分は、32個のフリップフロップFF21および32個の選択部SEL20のレイアウト面積に対応している。したがって、
図7に示したPE20のレイアウト増加分は、約44個(32+0.36×32)のフリップフロップFFのレイアウト面積に相当する。すなわち、
図7に示したPE20のレイアウト増加分は、
図2に示したPE20のレイアウト増加分の約3倍である。なお、
図7に示したPE20の故障検出率は、97%であり、比較例のPE20EXの故障検出率(68%)に比べて向上している。
【0078】
このように、この実施形態(
図2に示したPE20および
図7に示したPE20)では、比較例のPE20EXに比べて、故障検出率を向上できる。なお、
図2に示したPE20では、
図7に示したPE20に比べて、レイアウト面積の増加を低減できる。また、
図7に示したPE20では、
図8で説明したように、テストパターンの数を
図2に示したPE20に比べて低減できる。
【0079】
以上、この実施形態では、PE20は、入力データに対して演算処理を実施する演算部OP10と、2つのフリップフロップFF(
図2ではフリップフロップFF10、FF20、
図7ではフリップフロップFF10、FF21)と、選択部SEL10、SEL20とを有している。フリップフロップFF10は、例えば、演算部OP10の出力データを一時的に記憶する。フリップフロップFF20は、例えば、演算部OP10の出力データの各ビット値の論理演算結果を一時的に記憶する。フリップフロップFF21は、例えば、選択部SEL10の出力データを一時的に記憶する。
【0080】
選択部SEL10は、演算部OP10からノードN1までのデータ経路を、フリップフロップFF10を含む経路PTH10とフリップフロップを含まないスルー経路PTH11とのいずれかに設定する。また、選択部SEL20は、選択部SEL10の出力端子OUT(ノードN1)からPE20の出力端までのデータ経路を設定する。
【0081】
例えば、
図2に示した選択部SEL20は、通常動作では、フリップフロップFF20を含まないスルー経路PTH20を選択する。そして、選択部SEL20は、経路PTH10が選択されるテストでは、スルー経路PTH20を選択し、スルー経路PTH11が選択されるテストでは、フリップフロップFF20を含む経路PTH21を選択する。
【0082】
また、例えば、
図7に示した選択部SEL20は、通常動作では、フリップフロップFF21を含まないスルー経路PTH20を選択する。そして、選択部SEL20は、経路PTH10が選択されるテストでは、スルー経路PTH20を選択し、スルー経路PTH11が選択されるテストでは、フリップフロップFF21を含む経路PTH21’を選択する。
【0083】
このように、選択部SEL20は、PE20内のテスト経路に、フリップフロップFFが含まれるように、選択部SEL10の出力端子OUT(ノードN1)からPE20の出力端までのデータ経路を設定する。これにより、この実施形態では、スルー経路PTH11を含むデータ経路をテストできる。この結果、この実施形態では、故障検出率を向上できる。
【0084】
なお、上述した実施形態では、論理ブロックがプロセッサエレメント20で形成される例について述べたが、論理ブロックの構成は、プロセッサエレメント20に限定されない。例えば、PE20に相当する論理ブロックは、FPGA(Field Programmable Gate Array)の論理ブロックでもよい。このときには、演算部OP10は、FPGAのLUT(Look Up Table)に対応する。このときにも、上述した実施形態と同様の効果を得ることができる。
【0085】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。