(57)【特許請求の範囲】
【請求項１】
検査対象データのビット巾がＮ本の信号線の駆動状態を検査する論理回路であって、
前記検査対象データのビット１〜ｉ番目に少なくとも１つアクティヴであるビットがあるかを検査する第１の検査部と、前記検査対象データのビット１〜ｉ番目にアクティヴであるビットが２つ以上あるかを検査する第２の検査部とを有し、前記入力ビットデータ巾の数だけ鎖状に連結された複数の検査ユニットとを備え、
前記第１の検査部は、前記鎖状の後方側の第１の検査部への第１の検査結果出力と、前記第１の検査結果出力と同じビット幅を持つ第１の入力と、前記検査対象データが入力される第１のデータ入力とを有し、
前記第２の検査部は、前記鎖状の後方側の第２の検査部への第２の検査結果出力と、前記鎖状の前方側における第２の検査結果出力と同じビット幅を持つ第２の入力と、前記検査対象データ及び前記第１の検査結果出力が入力される第２のデータ入力とを有し、
前記検査ユニットは、前記鎖状の前方側の検査ユニットにおける前記第１及び第２の検査結果出力のデータを、それぞれ前記鎖状の後方側の検査ユニットの前記第１及び第２の入力に入力して用いる
ことを特徴とする論理回路。
【請求項２】
前記第２の検査部には、前記第２のデータ入力を通じて、前記第１の検査部と同一の検査対象データ、及び同一の前記鎖状の前方側における第１の検査結果出力が入力され、
前記第１及び第２のデータ入力から定められたデータが入力されたときは、前記第１及び第２の入力と同一の処理結果を前記第１及び第２の検査結果出力から出力し、前記定められたデータ以外のデータが入力されたときは、前記第１及び第２の入力と異なる処理結果を前記第１及び第２の検査結果出力から出力すること、又はその逆であることを特徴とする請求項１に記載の論理回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、論理回路及びプロセッサ装置に関し、特に半導体論理集積回路内部に設けられるバス方式においてＮ本の信号線のうち１つのみが駆動状態にあることを検査する回路に関するものである。
【０００２】
【従来の技術】
近年、電子回路の複雑化に伴い、信号線の配線も複雑化してきている。現在、この配線の複雑化を解決する手段としてバス方式が採用されている。このバス方式によれば、信号線の配線により、電子回路間での信号の送受が比較的円滑に行うことができる。
【０００３】
このバス方式のうち、バスに接続するバッファとしてトライステートバッファを用いたトライステートバスがあり、比較的広く利用されている。図１１は、かかるトライステートバッファの説明図である。同図において、（ａ）は、トライステートバッファ３１の概略構成図であり、（ｂ）はその真理値表である。
【０００４】
トライステートバッファ３１には、イネーブル信号ＥＮを入力する入力端子ＥＮと、入力値Ｄが入力される入力端子Ｄと、これらイネーブル信号ＥＮと入力値Ｄとの組み合わせに基づいて出力値Ｚを出力する出力端子Ｚとが接続されている。この出力値Ｚを決定するイネーブル信号ＥＮとデータ信号Ｄとの組み合わせは、同図（ｂ）の真理値表に示す通りである。
【０００５】
同図（ｂ）に示すように、例えば、イネーブル信号ＥＮが「１」のときは駆動状態となり入力値Ｄをそのまま出力するが、イネーブル信号ＥＮが「０」のときの出力端子Ｚは「ハイインピーダンス状態（ＨｉＺ）」となり、バッファは非駆動状態となる。
【０００６】
すなわち、出力端子Ｚからの出力値としては、「０」と「１」の他にかかる「ＨｉＺ」の３つがあり、このトライステートバッファ３１の「トライステート」とは、この３つの状態があることに由来するものである。
【０００７】
ところで、トライステートバッファ３１がこのハイインピーダンス状態にあるとき、バッファの入力端子ＥＮ及びＤと出力端子Ｚは切り離されたのと同じ状態にあることになる。図１２は、トライステートバス３０にトライステートバッファ３１が接続されている様子を表す回路図である。
【０００８】
同図に示すように、トライステートバス３０にトライステートバッファ３１が複数接続されている場合、同時に複数のバッファを駆動状態にすることはできないため、それぞれのトライステートバッファ３１にイネーブル信号用の入力端子ＥＮｎ（ｎ＝１，２，３，…）を設け、いずれか１つのトライステートバッファ３１を除いて、他のトライステートバッファ３１に対してイネーブル信号ＥＮを送出し、いずれか一つのトライステートバッファ３１のみが駆動状態になるよう排他制御している。
【０００９】
これらのイネーブル信号が正確に制御されていれば、同時に複数のトライステートバッファ３１が駆動状態になるようなコンフリクト状態や、いずれのトライステートバッファ３１も駆動状態にないようなフローティング状態になるようなことはない。
【００１０】
ところが、イネーブル信号が正確に制御されていないときには、上記フローティング状態やコンフリクト状態が起こり、正しい信号が伝搬されないおそれがある。さらにトライステートバス３０にフローティングが生じた場合、トライステートバス３０の電位が不安定となるため、回路動作が不安定になるおそれがある。一方、トライステートバス３０にコンフリクトが生じた場合、同時に駆動状態となった複数のトライステートバッファ３１間にＤＣ電流が流れてしまい、回路の劣化や破壊を引き起こす原因となってしまう。
【００１１】
このため、上述したバス方式において複数の信号線のうち一つのみがアクティヴになっているかどうかを検査する回路を設ける必要がある。図１３は、Ｎ本の信号線のうち１つのみが駆動状態にあることを検査する従来の論理回路の概略構成図である（ＵＳＰ  Ｎｏ．５，３７３，５１４）。
【００１２】
同図に示すように、この論理回路は、Ｎビットの信号のうち、いずれか１ビットのみが「１」のときに「１」となるすべての組み合わせの論理和をとっている。例えば、図の左からｉ番目のＮ入力ＡＮＤ回路１３１は入力Ｎビット・データの左からｉ番目のビットのデータのみが「１」で他のビットのデータが「０」であるような場合に「１」を出力するようになっている。
【００１３】
このような回路構成にすることにより、Ｎ本の信号線のうち１つのみが駆動状態にあることを検査することが可能になる。
【００１４】
また、上で説明したバス構造は書き換え可能なハードウェアであるＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などのプログラマブル素子にも利用されている。ＦＰＧＡには、このバス方式の他にマルチプレクサを用いて、論理ブロック同士の接続を行うものもある。この方式の場合、コンフリクトを防止することは可能だが信号線が多くなると配線の引き回しを避けることはできなくなり、また信号線の数が膨大になるとマルチプレクサも大きくなるのでデータ信号の遅延が大きくなってしまうという問題がある。
【００１５】
その点において、バス方式は配線の引き回しを避けられ、遅延が大きくならずに済むという利点がある。もちろんこのバス方式は、プログラマブル素子に読み込まれたコンフィギュレーション情報が正しくないと、コンフリクトやフローティング状態を引き起こす可能性があるという問題点を持つ。
【００１６】
そして、近年、そのプログラマブル素子をプロセッサに組み込んだリコンフィギュアラブル・プロセッサの研究及び製品開発が盛んになっている。このリコンフィギュアラブル・プロセッサの多くは、通常のプロセッサに存在するＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ）の他にＦＰＧＡなどにより構成されるリコンフィギュアラブル関数ユニットが設けられてあり、サイクル数のかかる命令等はその命令専用の回路をリコンフィギュアラブル関数ユニットに構成させ、そこにおいて実行させることで実効的なサイクル数を減らすことによって高速化を実現している。
【００１７】
リコンフィギュアラブル・プロセッサでは、頻繁に上記リコンフィギュアラブル関数ユニット内の回路構成を書き換えることが多い。そのため、バスにコンフリクトやフローティングを起こさないよう、入念にチェックしたコンフィギュレーション情報をリコンフィギュアラブル関数ユニットに入力すべきだが、それでは非常に時間がかかってしまうため、多くはリコンフィギュアラブル関数ユニット内にフローティング及びコンフリクト防止回路を導入しており、バスにコンフリクトやフローティングを引き起こしてしまうような誤ったコンフィギュレーション情報が入力されたら自動的にバスにコンフリクトやフローティングを生じさせないような回路構成にするようになっている。
【００１８】
【発明が解決しようとする課題】
しかしながら、Ｎ本の信号線のうち１つのみが駆動状態にあることを検査する論理回路は、Ｎが大きくなった場合回路構成に工夫をしないと回路規模が膨大になってしまう。例えば上で紹介した従来例では、ほぼＮの２乗に比例して回路規模が大きくなってしまう。
【００１９】
また、前記リコンフィギュアラブル・プロセッサにおいて、リコンフィギュアラブル関数ユニットに誤ったコンフィギュレーション情報が入力された場合、フローティング及びコンフリクト防止回路を導入してあれば、フローティングやコンフリクトを防止することができ、回路の劣化や破壊を防ぐことが可能であるが、それだけでは誤ったコンフィギュレーション情報が入力されたことがユーザ側にわからないまま処理が進んでしまい、結果的にユーザが意図した処理結果が出力されないことになる。そのため、誤ったコンフィギュレーション情報が入力されたことをユーザに伝え、それ以後ユーザが意図した処理を実現できるよう回路構成を修正できるようなシステムを構築すべきである。
【００２０】
本発明は上記の問題点を解決するためになされたものであり、Ｎ本の信号線のうち１つのみが駆動状態にあることを検査する回路を小規模な回路で実現することができる論理回路及びプロセッサ装置を提供することを課題とする。
【００２１】
【課題を解決するための手段】
上記課題を解決するために請求項１に係る発明は、検査対象データのビット巾がＮ本の信号線の駆動状態を検査する論理回路であって、前記検査対象データのビット１〜ｉ番目に所定値数のアクティヴであるビットがあるかを検査する第１の検査部と、前記検査対象データのビット１〜ｉ番目にアクティヴであるビットが前記所定値数以上あるかを検査する第２の検査部とを有し、前記入力ビットデータ巾の数だけ鎖状に連結された複数の検査ユニットとを備え、前記第１の検査部は、前記鎖状後方側の第１の検査部への第１の検査結果出力と、前記第１の検査結果出力と同じビット幅を持つ第１の入力と、前記検査対象データが入力される第１のデータ入力とを有し、前記第２の検査部は、前記鎖状後方側の第２の検査部への第２の検査結果出力と、前記第２の検査結果出力と同じビット幅を持つ第２の入力と、前記検査対象データ及び前記第１の検査結果出力が入力される第２のデータ入力とを有し、前記検査ユニットは、前記鎖状前方側の検査ユニットからの前記第１及び第２の検査結果出力のデータをそれぞれ前記鎖状後方側の検査ユニットの前記第１及び第２の入力に入力して用いるものである。
【００２２】
このような請求項１に係る発明によれば、検査対象データのビット幅を一つの論理回路の検査対象データのビット幅だけ増加させることが可能となり、１個の信号線を検査する論理回路をＮ個鎖状に連結する接続することによりＮ個の信号線に対して上記検査と同一の検査をまとめて行うことが出来る。
【００２３】
また、請求項２に係る発明は、上記発明において、前記第２の検査部には、前記第２のデータ入力を通じて、前記第１の検査部と同一の検査対象データ、及び同一の前記鎖状前方側における第１の検査結果出力が入力され、前記第１及び第２のデータ入力から定められたデータが入力されたときは、前記第１及び第２の入力と同一の処理結果を前記第１及び第２の検査結果出力から出力し、前記定められたデータ以外のデータが入力されたときは、前記第１及び第２の入力と異なる処理結果を前記第１及び第２の検査結果出力から出力すること、又はその逆であることを特徴とするするものである。
【００２４】
このような請求項２に係る発明によれば、Ｎ個の信号線のうち１つのみが駆動状態にあるか否かを検査する回路の規模を縮小することができる。
【００２７】
【発明の実施の形態】
［第１の実施形態］
（検査回路１５０の構成）
以下、本発明の第１の実施形態について説明する。図１（ａ）は、本実施形態に係る検査回路１５０のブロック図であり、図１（ｂ）は、（ａ）中の検査ユニット１０を拡大して示すブロック図である。
【００２８】
同図において、この検査回路１５０は、本実施形態では、検査ユニット１０を、入力ビット巾の数（すなわち入力ビットがＮビットであれば、検査ユニット１０をＮ個）だけ、横方向に連結するいわゆるカスケード接続することにより鎖状に構成されている。なお、ここでは、検査ユニット１０の機能について、図の左からｉ番目（ｉ＝１，２，３，…，Ｎ）の検査ユニット１０を取り上げて説明し、また、入力ＮビットデータはＭＳＢ（上位ビット）を１番目、ＬＳＢ（下位ビット）をＮ番目として説明する。
【００２９】
同図に示す検査ユニット１０において、第１の検査部１１は、入力Ｎビットデータの１〜ｉ番目に少なくとも１つアクティヴであるビットがあったかどうか検査する部分であり、一方、第２の検査部分１２は入力Ｎビットデータの１〜ｉ番目にアクティヴであるビットが２つ以上あったかどうか検査する部分である。
【００３０】
この検査ユニット１０に対する入力端子は、ＤＡＴＡｉ、ＣＨＥＣＫ＿１＿ＩＮ＊、ＣＨＥＣＫ＿２＿ＩＮ＊の３つがあり、出力端子は、ＣＨＥＣＫ＿１＿ＯＵＴ＊、ＣＨＥＣＫ＿２＿ＯＵＴ＊の２つがある。
【００３１】
入力端子ＤＡＴＡｉ、ＣＨＥＣＫ＿１＿ＩＮ＊、ＣＨＥＣＫ＿２＿ＩＮ＊には、それぞれ入力Ｎビット・データのｉ番目のビットデータ、ｉ−１番目の検査ユニット１０のＣＨＥＣＫ＿１＿ＯＵＴ＊出力結果（入力Ｎビットデータの１〜ｉ−１番目に少なくとも１つアクティヴであるビットがあったか否かの検査結果）、ｉ−１番目の検査ユニット１０のＣＨＥＣＫ＿２＿ＯＵＴ＊出力結果（入力Ｎビットデータの１〜ｉ−１番目にアクティヴであるビットが２つ以上あったか否かの検査結果）が入力される。
【００３２】
一方、ＣＨＥＣＫ＿１＿ＯＵＴ＊出力、ＣＨＥＣＫ＿２＿ＯＵＴ＊出力は、それぞれの検査結果（前者は入力Ｎビットデータの１〜ｉ番目に少なくとも１つアクティヴであるビットがあったか否かの検査結果、後者は入力Ｎビットデータの１〜ｉ番目にアクティヴであるビットが２つ以上あったか否かの検査結果）を、次段のｉ＋１番目の検査ユニット１０のＣＨＥＣＫ＿１＿ＩＮ＊、ｉ＋１番目の検査ユニット１０のＣＨＥＣＫ＿２＿ＩＮ＊に入力する。
【００３３】
最終的に図１中の最も右側（すなわち左からＮ番目）の検査ユニット１０のＣＨＥＣＫ＿１＿ＯＵＴ＊出力１３及びＣＨＥＣＫ＿２＿ＯＵＴ＊出力１４からは、それぞれ入力Ｎビットデータに少なくとも１つアクティヴであるビットがあったか否かの検査結果、及び入力Ｎビットデータにアクティヴであるビットが２つ以上あったか否かの検査結果が出力され、この２つの検査結果が論理回路１５に入力されて、Ｎ本の信号線のうち１つのみが駆動状態にあることに対する検査結果が出力される。
【００３４】
このような本実施形態に係る検査回路１５０によれば、Ｎ本の信号線のうち１つのみが駆動状態にあることを検査する回路を小規模な回路で実現することができ、さらに入力データのビットは場がＭ個増えた場合には、検査ユニット１０をＭ個増やせばよいため、検査回路の回路規模はビット幅Ｎに比例することになり、回路規模全体が増大するのを低減することができる。
【００３５】
さらに、この検査回路１５０によれば、基本的に検査ユニット１０を入力データのビット幅分だけ並べられることで構成されるという規則的な構造をしているため、設計においては１つの検査ユニット１０のみについて考慮すればいいことになり、図１２で示した従来例のようにＮビット全てにおいて考慮するような煩雑さはなくなる。
【００３６】
（検査回路の具体的構成）
図２（ａ）は、図１に示した本発明の第１の実施形態に係る検査回路１５０をより詳細に示すブロック図であり、図２（ｂ）は、（ａ）中に示す検査ユニット１０の内部構造を拡大して示すブロック図である。
【００３７】
同図（ｂ）に示すように、第１の検査部１１は、１つのＯＲ回路２０から構成される。そして、この第１の検査部１１には、初期値１（図の左から１番目の検査ユニット１０のＣＨＥＣＫ＿１＿ＩＮ＊入力）として「０」が入力され、その後それぞれの検査ユニット１０のＤＡＴＡｉ端子にＮビット・データの各ビット値が入力されるため、左からＮ番目の検査ユニット１０のＣＨＥＣＫ＿１＿ＯＵＴ＊出力１３からは、Ｎビット・データ入力の全ビット値の論理和が出力される。従って、入力Ｎビットデータに少なくとも１つアクティヴ（この実施形態では「１」）であるビットがあった場合は「１」、無かった場合は「０」という検査結果が出力されることになる。
【００３８】
一方、第２の検査部１２は、１つのＮＡＮＤ回路２１と、１つのマスク手段であるＡＮＤ回路２２から構成される。
【００３９】
先ず、ＮＡＮＤ回路１１によりＣＨＥＣＫ＿１＿ＩＮ＊とＤＡＴＡｉのＮＡＮＤ演算が行われる。すなわち、（ＣＨＥＣＫ＿１＿ＩＮ＊、ＤＡＴＡｉ）＝（１，１）が入力されたときのみ「０」を出力するので、図の左からｉ番目の検査ユニット１０においてはＮビット・データのｉ番目のビット値が「１」であり、且つ１〜ｉ−１番目の入力データの中に少なくのも１つ「１」がある場合に、ＮＡＮＤ回路２１の出力が「０」となる。
【００４０】
そして、ＡＮＤ回路２２は、ＣＨＥＣＫ＿２＿ＩＮ＊入力と前記ＮＡＮＤ回路２１出力値との論理積をとりＣＨＥＣＫ＿２＿ＯＵＴ＊に出力する。これよりＣＨＥＣＫ＿２＿ＩＮ＊入力が「１」のときのみ前記ＮＡＮＤ回路２１出力値がＣＨＥＣＫ＿２＿ＯＵＴ＊から出力される。
【００４１】
従って、検査ユニット１０をＮ個鎖状に連結した場合、図の左から１番目の検査ユニット１０のＣＨＥＣＫ＿２＿ＩＮ＊入力に初期値として「１」が入力されているので、Ｎビット・データにおいて「１」であるビットが１個以下であった場合は、ＡＮＤ回路２２の出力は常に「１」となり、図中最も右にある検査ユニット１０のＣＨＥＣＫ＿２＿ＯＵＴ＊出力１３も「１」となる。
【００４２】
これに対して、Ｎビット・データにおいて「１」であるビットが２個以上あった場合は、左から数えて２つめの「１」が立つビットに対応する検査ユニット１０では、ＡＮＤ回路２２の出力は「０」となるので、そこから右に位置する検査ユニットのＣＨＥＣＫ＿２＿ＯＵＴ＊出力は全て「０」となる。
【００４３】
この結果、図中最も右にある検査ユニット１０のＣＨＥＣＫ＿２＿ＯＵＴ＊出力１３も「１」となる。最後に、論理回路１５内のＡＮＤ回路２３により前記２出力信号の論理積がとられることにより、Ｎビット・データの中から「１」であるビットが１つだけか否かを検査することが可能となる。
【００４４】
この実施形態によれば、検査ユニット１０は３つの論理ゲートのみにより構成されており、入力Ｎビットデータのビット巾がＭ個増えた場合には検査ユニット１６をＭ個追加するだけでよい。これにより入力データのビット巾が大きくても、比較的小規模な回路構成により目的の論理回路が実現することが可能となる。
【００４５】
さらに前述のようにこの検査回路１５０は、検査ユニット１０が鎖状にＮ個並ぶという規則的な構造をしているので、検査回路１５０の回路規模や処理遅延等を考慮して設計する場合でも、１つの検査ユニット１０のみ考慮すればよいことになり、設計が容易になる。
【００４６】
［第２の実施形態］
次に本発明の第２の実施形態について説明する。本実施形態では、図２に示した検査回路１５０を、トライステートバス３０に接続される複数のトライステートバッファ３１の制御に用いることを特徴とする。図３は、本実施形態に係る論理回路２００を示すブロック図である。
【００４７】
この実施形態では、ＡＮＤ回路３３により求められた各検査ユニット１０におけるＣＨＥＣＫ＿１＿ＩＮ＊入力の反転と、ＤＡＴＡｉ入力の論理積とが各トライステートバッファ３１のイネーブル端子に入力されており、また、Ｎビットのイネーブル信号のフローティング検査結果出力１４がＶｄｄ電圧とトライステートバス３０を繋ぐＰＭＯＳトランジスタ３５のゲート端子に入力される構成となっている。
【００４８】
上記ＡＮＤ回路３３は、検査ユニット１０のＣＨＥＣＫ＿１＿ＩＮ＊入力、ＤＡＴＡｉ入力がそれぞれ「０」、「１」のときのみ「１」を出力しトライステートバッファ３１を駆動状態にするものである。ここで、検査ユニット１０のＣＨＥＣＫ＿１＿ＩＮ＊入力、ＤＡＴＡｉ入力がそれぞれ「０」、「１」となるのは、ＤＡＴＡｉ入力として「１」が入力される検査ユニット１０のうち最も左に位置するもののみである。
【００４９】
このような論理回路２００によれば、通常はイネーブル信号に基づいてＬｏｇｉｃＢｌｏｃｋ３２からのデータが、トライステートバッファ３１を介して、トライステートバス３０に出力されている。
【００５０】
そして、Ｎビットのイネーブル信号において２個以上「１」が立つビットがある場合（すなわち、コンフリクトを引き起こしてしまうようなイネーブル信号が入力された場合）においても、そのようなビットのうち最も左側にあるもののみ有効にすることで、コンフリクト状態を回避することが可能となる。
【００５１】
一方、Ｎビットのイネーブル信号において「１」の立つビットが１つも存在しない場合（すなわち、フローティングを引き起こしてしまうようなイネーブル信号が入力された場合）、フローティング検査結果出力１４が「０」を出力するため、ＰＭＯＳトランジスタ３５がＯＮ状態になる。これによりトライステートバス３０の電位はＶｄｄに固定され、トライステートバッファ３１が一つも駆動状態にならないことによるフローティング状態を回避することが可能となる。
【００５２】
［第３の実施形態］
次に、本発明の第３の実施形態について説明する。本実施形態では、第１の実施形態で説明した検査回路１５０をトライステートバス３０に接続される複数のトライステートバッファ３１の制御に用いることを特徴とする。図４は、本実施形態に係る論理回路３００を示すブロック図である。
【００５３】
この実施形態では、通常のイネーブル信号と、イネーブル信号ＲＯＭ４０に予め記憶されたイネーブル信号のいずれか一方とが、論理回路１５からの検査結果に応じてセレクタ４１により選択され、各トライステートバッファ３１のイネーブル端子に入力される様になっている。この、イネーブル信号ＲＯＭ４０には、フローティングもコンフリクトも引き起こさないようなイネーブル信号の組み合わせが記憶されている。
【００５４】
平常時においては、セレクタ４１は、通常のイネーブル信号を直接トライステートバッファ３１に入力させている。そして、通常のイネーブル信号がフローティング又はコンフリクトを起こすものであると論理回路１５が判断した場合、セレクタ４１は、通常のイネーブル信号に換えてイネーブル信号ＲＯＭ４０に記憶されたイネーブル信号を出力することによって、トライステートバス３０のフローティング及びコンフリクトを回避することが可能となる。
【００５５】
上述した第２の実施形態では、各々のトライステートバッファ３１に検査ユニット１０を直接接続させているため、高速にフローティング及びコンフリクト回避の制御が可能である。これに対し、本実施形態では、第２の実施形態と異なり、イネーブル信号の検査を事前に行ってから検査結果に基づいて適切なイネーブル信号をトライステートバッファ３１のイネーブル信号に入力するようにしているので、複数の同一構造を有するトライステートバスを持つデバイスにおいては、検査回路１５０をバス毎に１つ用意する必要がなく共有することができる。従って、本実施形態によれば、全体として回路規模をより縮小させることが可能になる。
【００５６】
［第４の実施形態］
次に、本発明の第４の実施形態について説明する。本実施形態では、第１の実施形態で説明した検査回路１５０において、Ｎ本の信号線のうち１つのみが駆動状態にあることに対する検査をより高速に実現するものである。図５は、本実施形態に係る論理回路４００を示すブロック図である。
【００５７】
前述した第１の実施形態では、Ｎ個の検査ユニット１０を鎖状に接続しているのに対し、本実施形態では、その鎖の長さを半分にし、Ｎ／２ビットずつ並列に検査している。
【００５８】
すなわち、ＡＮＤ回路５０、ＡＮＤ回路５１、ＯＲ回路５２により、検査回路１５０を２つに分けたとき、一方のＮ／２ビットデータにおいては「１」の立つビットは１個のみで、且つ他方のＮ／２ビットデータにおいては「１」のたつビットが存在しない場合（すなわちフローティング状態）のみに検査結果出力として「１」が立つように論理演算がされている。
【００５９】
このように検査回路を幾つかに分け、分けられた検査回路の各々についての並処理を併行に行うことで、検査処理全体の処理時間を短縮することができ、処理速度の高速化を実現することができる。
【００６０】
［第５の実施形態］
次に、本発明の検査回路の第５の実施形態について説明する。本実施形態では、本発明における論理回路を順序回路により構成したことを特徴とする。図６は、本実施形態に係る論理回路５００を示すブロック図である。
【００６１】
詳述すると、Ｎビット・データは図示しない制御回路によって直列的なデータストリームに変換され、各ビットのデータは順次第１の検査部１１に入力される。なお、このとき、図示しないが、レジスタ６０、レジスタ６１には初期値としてそれぞれ「０」、「１」が入力されている。
【００６２】
次いで、この入力されたデータに基づいて演算処理が行われ、第１，第２の検査部１１，１２から出力された検査結果は、一旦レジスタ６０、６１に保持され、この保持された検査結果は、次ビットのデータが第１の検出部１１に入力されると同時に、初期値として第１，第２の検査部１１，１２に入力され、これらのデータに基づいて検査処理が行われる。この処理を繰り返すことによって全てのビットにわたり終了した後、最終的な検査結果として論理回路１５に出力する。
【００６３】
このような本実施形態に係る論理回路５００によれば、上述した実施形態における検査ユニット１０を繰り返し利用する構造にしてあるため、ハードウェア量を小さく実現することが可能となる。
【００６４】
［第６の実施形態］
次に、本発明の検査回路の第６の実施形態について説明する。図７は、本実施形態に係る論理回路６００を示すブロック図である。
【００６５】
同図に示すように、本実施形態に係る論理回路６００は、それぞれ反対方向に演算結果を伝播する２つの検査チェーン（７６及び７７）と、Ｎ個のＡＮＤ回路７４、Ｎ入力ＯＲ回路７５により構成されることを特徴とする。また、本実施形態に係る論理回路６００においては、Ｎビット・データに沿って配列されたＡＮＤ回路７１、７３とＮ入力ＯＲ回路７０、７２及びＡＮＤ回路７４とによって検査ユニット７８を形成している。
【００６６】
同図において、検査チェーン７６のＯＲ回路７０は図２のＯＲ回路２０と全く同一の役割を果たしている。すなわち、左からｉ番目のＯＲ回路７０は１〜ｉ番目のビットデータの中に少なくとも１つ「１」があれば「１」を出力している。検査チェーン７６内の左からｉ番目にあるＡＮＤ回路７１は、図３のＡＮＤ回路３３と同じ役割をしており、ｉ−１番目のＯＲ回路７０の演算結果の反転とｉ番目のＯＲ回路７０の演算結果の論理積をとっている。これにより、  Ｎビットデータにおいて「１」であるビットの最も左側にあるものが左からｊ番目であったとすると、前記論理積の出力値は左からｊ（ｊ＝１，２，３，…，Ｎ）番目のものだけ「１」を出力することになる。
【００６７】
同様に、検査チェーン７７においては、Ｎビットデータにおいて「１」であるビットの最も右側にあるものが左からｋ（ｋ＝１，２，３，…，Ｎ）番目であったとすると、ＡＮＤ回路７３の出力値は左からｋ番目のものだけ「１」を出力することになる。Ｎビット・データの中で「１」であるビットが１つだけの場合ｊ＝ｋとなるので、このとき左からｊ（＝ｋ）番目にあるＡＮＤ回路７４が「１」が出力され、最終的な検査結果として「１」が出力される。
【００６８】
一方、Ｎビットデータの中に「１」であるビットが２つ以上ある場合はｊ≠ｋとなるため、全てのＡＮＤ回路７４の出力は「０」、またＮビットデータのなかに「１」であるビットが１つも無い場合もすべてのＡＮＤ回路７４の出力は「０」となるので検査結果は「０」が出力されることになる。このようにして目的の論理が可能になる。
【００６９】
上記実施例では、検査ユニット７８は５つの論理ゲートのみにより構成され、さらに入力Ｎビットデータのビット巾がＭ個増えた場合には検査ユニット７８をＭ個追加し、Ｎ入力ＯＲ回路７２を（Ｎ＋Ｍ）入力ＯＲ回路と置き換えればよい。これにより入力データのビット巾が大きくても、比較的小さい回路規模により目的の論理回路が実現することが可能となる。
【００７０】
さらにこの論理回路６００においても、図１の検査回路１５０と同様に、基本的に検査ユニット７８を入力データのビット幅分だけならべれば構成できるので、設計においては１つの検査ユニット７８のみについて考慮すればいいことになり、図１２で示した従来例のようにＮビット全てにおいて考慮しなければならないような煩雑さがなくなる。
【００７１】
［第７の実施形態］
次に、本発明の第７の実施形態について説明する。図８は本発明の１つである、ＦＰＧＡなどのバス構造を含む書き換え可能なハードウェアをプロセッサに組み込んだリコンフィギュアラブル・プロセッサにおいて、コンフィギュレーション情報の検査結果に応じたプロセッサの対処方法を示したフロー図（図８（ａ））及びブロック図（図８（ｂ））である。
【００７２】
ここで、ＦＰＧＡの回路構成を決定するコンフィギュレーション情報には、ＦＰＧＡ内に分布する論理ブロックを構成する部分と、各々の論理ブロック同士の接続を構成する部分とが存在する。前述のように、論理ブロック同士の接続はバス方式を用いたものの他にマルチプレクサを用いた方式もあるが、この場合信号線の数が多くなるとマルチプレクサにおける遅延も大きくなってしまう。
【００７３】
その点においてバス方式は優れているが、バスにおいて駆動状態になっている出力バッファは１つのみでなければならない。そのため、コンフィギュレーション情報を検査しフローティング及びコンフリクト検査をする必要がある。
【００７４】
図８（ａ）において処理フローを説明する。先ず、ステップＳＴ−８０においてＦＰＧＡ内にコンフィギュレーション情報がロードされた後、コンフィギュレーション情報のフローティング及びコンフリクト検査を各バスにおいて実施する（ステップＳＴ−８１）。このステップＳＴ−８１においてＮ本の信号線のうち１つのみが駆動状態にあることを検査する検査回路を用いて検査結果を得る。なお、この検査回路としては、上述した第１〜第６の実施形態で説明した検査回路や論理回路を用いることができる。
【００７５】
次に、ステップＳＴ−８２において、ステップＳＴ−８１による検査結果がＯＫであれば処理を続行するが（ステップＳＴ−８４）、検査結果がＮＧであった場合には例外処理を発生させるべく（ステップＳＴ−８３）、例外ハンドラを起動させる。
【００７６】
図８（ｂ）は、プロセッサを構成する各ユニットにおける情報及び命令の送受について説明するブロック図である。
【００７７】
同図に示すように、プロセッサ８５は、検査回路をもつプログラマブル演算回路８８と、例外処理を行う例外発生回路８９と、例外発生回路８９からの信号に基づいて演算回路８７やプログラマブル演算回路８８の停止処理などを行う制御回路８６とから概略構成される。なお、前記プログラマブル演算回路８８に備えられる検査回路としては、プログラマブル演算回路８８内に設けられるものであってもよく、またプログラマブル演算回路８８とは別途独立に設けられるものであってもよい。
【００７８】
このようなプロセッサ８５では、先ず、コンフィギュレーション情報をロードされた検査回路をもつプログラマブル演算回路８８は、検査回路においてバスのフローティング及びコンフリクト検査を行う。
【００７９】
その検査結果は、例外発生回路８９に送られ、例外発生回路８９において処理続行、或いは例外発生を指示する信号を制御回路８６に送る。これを受けた制御回路８６は例外を発生させ現行処理を停止させる。このとき、警告手段（図示せず）によって例外が発生した旨をユーザに通知するようにしてもよく、また、デバッグを起動するモードを設けて、デバッガを起動させて自動的にコンフィギュレーション情報を修正するようにしてもよい。
【００８０】
これにより例外ハンドラは、プロセスの停止、或いはデバッガの起動を行うことにより、フローティング又はコンフリクトを生じさせるような誤ったコンフィギュレーション情報が入力されたことによって生じる、ユーザが意図しない処理結果の出力がなされたまま、処理が続行されることを防ぐことができる。
【００８１】
さらに、デバッガを起動させて正しくないコンフィギュレーションが入力された部分をデバッグすることで、改めて処理を開始させることが可能となる。
【００８２】
［第８の実施形態］
次に、本発明の第８の実施形態について説明する。図９は、リコンフィギュアラブル・プロセッサに組み込んだ書き換え可能ハードウェア内にＭ個のバスがある場合における検査結果データの処理について示した図である。
【００８３】
同図において、検査回路［ｉ］９０（ｉ＝０，１，…，Ｍ−１）は、それぞれのバスに接続するトライステートバッファの中で駆動状態にあるものが１つだけであることを検査する回路であり、検査結果がＮＧであれば「０」を出力する。なお、この検査回路［ｉ］９０（ｉ＝０，１，…，Ｍ−１）としては、前述した第１〜第７の実施形態で説明した検査回路や論理回路を採用することができる。例えば、Ｍ個の検査回路９０から出力される検査結果データの処理をする回路は、図１と同様の構造を有する検査回路、すなわち検査ユニット９１をＭ個を鎖状に接続して構成した検査回路で実現できる。
【００８４】
第１の検査部９６ではＡＮＤ回路９２によりすべての検査回路９０の検査結果出力の論理積を求め、出力する。この検査結果９４は、検査回路９０の検査結果の中で少なくとも１つＮＧのものがあれば「０」を出力する。
【００８５】
このような構成によれば、正しくないコンフィギュレーション情報が入力されたかどうかを認知することができ、この信号を基に例外処理を発生させることが可能となる。
【００８６】
なお、第２の検査部９７は同じ検査ユニット９１の第１の検査部９６にあるＡＮＤ回路９２の出力と前段の加算器９３の出力を加算器９３により加算を行い出力する。検査回路９０の検査結果にＮＧがあった場合、その検査結果の中でもっともアドレス番号（［ｉ］の値）が小さい検査回路［ｉ］９０の検査結果が入力された検査ユニット９１のＡＮＤ回路９２の出力は「０」となり、それより後に接続されているＡＮＤ回路９２の出力はすべて「０」となる。
【００８７】
加算器９１においては、検査回路９０の検査結果がＯＫであるうちはＡＮＤ回路９２の出力が「１」であるので、加算器９１の出力は初期値０から１ずつ増加して行くが、検査回路［ｉ］９０においてはじめて検査結果がＮＧになるとＡＮＤ回路９２の出力は「０」となり、それより先にあるＡＮＤ回路９２の出力は「０」となるため、加算器９１の出力はｉとなりその先にある加算器９１についてもｉが出力される。
【００８８】
すなわち、図の上から数えて最初に検査結果がＮＧであった検査回路のアドレスがｉであったとき、最終的な加算器９１の出力であるアドレス９５はｉが出力されるので、これによりフローティング又はコンフリクトが生じたとき、そのようなバスのうちアドレスが最も小さいもののアドレス番号を知ることが出来る。
【００８９】
これにより、検査結果出力９４において「０」（すなわちＮＧ）が出力された場合には、例外ハンドラが起動されプロセスを停止し誤ったコンフィギュレーションデータが入力されたことに起因するユーザが意図しない処理結果を出力することを回避できる。さらにデバッガを起動したときは、アドレス出力９５の出力値を見ることによって、エラーの起こったバスのうち１つのバスについてのアドレスを検出することができ、そのバスのコンフィギュレーション情報をデバッグすればよい。２つ以上エラーの起こったバスが存在する場合は上のデバッグ作業を検査結果出力９４が「０」を出力されなくなるまで続ければよい。
【００９０】
また、上記回路において、なるべく回路規模を小さくそして高速に実現したい場合は、図９において上に位置する検査ユニット９１の加算器９３ほど小型化することが可能である。例えば、検査回路［１］９０に対応する検査ユニット９１の加算器９３は１ビットデータと１ビットデータを加算し２ビットデータを出力する加算器で十分であり、また検査回路［９］９０に対応する検査ユニット９１の加算器９３は１ビットデータと４ビットデータを加算し４ビットデータを加算する加算器で十分である。
【００９１】
このような構成により、同じ回路により構成される検査ユニット９１を並べるという規則性はなくなるが、回路規模の縮小を図ることができるとともに、処理速度の高速化を実現することが可能になる。
【００９２】
［第９の実施形態］
次に、本発明の第９の実施形態について説明する。図１０は、リコンフィギュアラブル・プロセッサに組み込んだ書き換え可能ハードウェア内にＭ個のバスがある場合における検査結果データの処理について他の例を示した図である。
【００９３】
ここでは、検査回路［ｊ，ｋ］１００を２次元的に配置し、エラーを出力した検査回路１００の中でｊの最も小さいもののなかでｋの最も小さい検査回路１００のアドレス［ｊ，ｋ］が判別できるようになっており、また鎖状に接続されたＡＮＤ回路１０４により検査回路１００のうち少なとも１つでエラーが起こったかどうか分かるようになっている。プライオリティエンコーダ１０７によりエラーが出された検査回路１００の中で最もｊが小さいもののアドレスｊの値がわかる。
【００９４】
さらに、ＯＲ回路１０３によるＡＮＤ回路１０４の出力の反転と検査回路１００の出力との論理和がとられていることにより前述のアドレスｊの列にある検査回路［ｊ，＊］１００以外のエラーが検出されないようになっており、これによりプライオリティエンコーダ１０６によりアドレスｊの列にある検査回路［ｊ，＊］１００のうちｋの最も小さいもののアドレスｋの値を調べることができる。
【００９５】
従って、Ｎ本の信号線のうち１つのみが駆動状態にあることを検査する回路を小規模に実現すること、またリコンフィギュアラブル・プロセッサにおいてバスのフローティング又はコンフリクトを生じさせるような誤ったコンフィギュレーション情報の入力に起因するユーザの意図しない処理を回避する手段を提供することが可能となる。
【００９６】
【発明の効果】
本発明によれば、Ｎ個の信号線のうち１つのみが駆動状態にあることを検査する回路において、回路規模の縮小化を実現することが可能になる。また、Ｎ個の信号線のうち１つのみが駆動状態にあることを検査する回路をリコンフィギュアラブル・プロセッサに組み込むことで、プログラマブル素子中に含まれるバスにフローティング又はコンフリクトを引き起こす原因となるコンフィギュレーション情報が入力されたことに起因するユーザの意図しない処理結果を出力することを回避することが可能となる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係る検査回路を示すブロック図である。
【図２】第１の実施形態において、具体的な構成をより詳細に示した回路図である。
【図３】本発明の第２の実施形態に係る論理回路を示すブロック図である。
【図４】本発明の第３の実施形態に係る論理回路を示すブロック図である。
【図５】本発明の第４の実施形態に係る論理回路を示すブロック図である。
【図６】本発明の第５の実施形態に係る論理回路を示すブロック図である。
【図７】本発明の第６の実施形態に係る論理回路を示すブロック図である。
【図８】本発明の第７の実施形態に係る論理回路において、Ｎビット・データのうち１ビットのみが「１」状態にあるこの検査結果に対し例外を発生するか処理を続行するかを決める方法を説明したフロー図及びブロック図である。
【図９】本発明の第８の実施形態において、リコンフィギュアラブル・プロセッサに組み込んだ書き換え可能ハードウェア内にＭ個のバスがある場合における検査結果データの処理についての第１の実施例を示した図である。
【図１０】本発明の第９の実施形態において、リコンフィギュアラブル・プロセッサに組み込んだ書き換え可能ハードウェア内にＭ個のバスがある場合における検査結果データの処理についての第２の実施例を示した図である。
【図１１】（ａ）は、従来のトライステートバッファを示すブロック図であり、（ｂ）はその真理値表である。
【図１２】従来のトライステートバスに、トライステートバッファが接続されている様子を示す図である。
【図１３】Ｎビット・データのうち１ビットのみが「１」状態にあることを検査する従来の回路のブロック図である。
【符号の説明】
１０…検査ユニット、１１…第１の検査部、１２…第２の検査部
１３…ＣＨＥＣＫ＿２＿ＯＵＴ＊出力、１４…ＣＨＥＣＫ＿１＿ＯＵＴ＊出力
１５…論理回路、２０…ＯＲ回路、２１…ＮＡＮＤ回路、２２…ＡＮＤ回路、
２３…ＡＮＤ回路、３０…トライステートバス、
３１…トライステートバッファ、３２…論理ブロック
３３…ＡＮＤ回路、３４…フローティング防止回路、
３５…ＰＭＯＳトランジスタ、４０…コンフィギュレーションＲＯＭ、
４１…セレクタ、５０…ＡＮＤ回路、５１…ＡＮＤ回路、５２…ＯＲ回路、
６０…レジスタ、６１…レジスタ、７０…ＯＲ回路、７１…ＡＮＤ回路、
７２…ＯＲ回路、７３…ＡＮＤ回路、７４…ＡＮＤ回路、
７５…Ｎ入力ＯＲ回路、７６…検査チェーン、７７…検査チェーン、
７８…検査ユニット、８５…プロセッサ、８６…制御回路、８７…演算回路、
８８…検査回路をもつプログラマブル演算回路、８９…例外発生回路、
９０…検査回路、９１…検査ユニット、９２…ＡＮＤ回路、９３…加算器、
９６…第１の検査部、９７…第２の検査部、１００…検査回路、
１０１…ＡＮＤ回路、１０２…ＡＮＤ回路、１０３…ＯＲ回路、
１０４…ＡＮＤ回路、１０５…ＮＯＴ回路、
１０６…プライオリティエンコーダ、１０７…プライオリティエンコーダ、
１２０…入力バッファ  １３０…ＮＯＴ回路、１３１…Ｎ入力ＡＮＤ回路、
１３２…Ｎ入力ＯＲ回路、１５０…検査回路、
２００，３００，４００，５００，６００…論理回路
【図１】
0003576029.tif 000002
【図２】
0003576029.tif 000003
【図３】
0003576029.tif 000004
【図４】
0003576029.tif 000005
【図５】
0003576029.tif 000006
【図６】
0003576029.tif 000007
【図７】
0003576029.tif 000008
【図８】
0003576029.tif 000009
【図９】
0003576029.tif 000010
【図１０】
0003576029.tif 000011
【図１１】
0003576029.tif 000012
【図１２】
0003576029.tif 000013
【図１３】
0003576029.tif 000014