次に、本発明の実施の形態について、図面を参照しつつ説明する。以下の図の記載において、同一又は類似の部分には同一又は類似の符号を付して表している。図は、模式的なものであり、必ずしも実際の寸法や比率等とは一致しない。図相互間においても互いの寸法の関係や比率が異なる部分が含まれていることがある。
図1は、本発明の一実施形態に係る半導体集積回路の概略構成を示す図である。同図に示すように、本実施形態に係る半導体集積回路100は、マスターコア110と、スレーブコア120(1)乃至120(n)とからなるマスター/スレーブ型コア構成を備えたマルチプロセッサシステムである。本実施形態に係る半導体集積回路100は、また、チェックパターン設定ブロック130と、チェックタイミング記憶ブロック140と、動作状態記憶ブロック150と、出力制御回路160と、動作状態設定ブロック170と、検出結果記憶ブロック180と、論理和回路190とを含んで構成される。これらのコンポーネントは、例えば、ASICのような1つの半導体集積回路として構成される。
マスターコア110は、例えば図示しないPLL(Phase Locked Loop)から供給されるクロックCLK_Mに従って、各スレーブコア120を制御しながら、所定の処理を実行するマイクロプロセッサである。本実施形態では、マスターコア110は、スレーブコア120(1)乃至120(n)の動作状態をチェックするタイミングを示すタイミングパターン(以下「チェックタイミングパターン」という。)をチェックパターン設定ブロック130に設定する。具体的には、マスターコア110は、チェックタイミングパターンの設定を行うために、イネーブル状態(例えば“1”)のセットイネーブル信号SET_ENをチェックパターン設定ブロック130に出力し、チェックパターン設定ブロック130をイネーブル状態にして、スレーブコア120(1)乃至120(n)のそれぞれに対応する値信号V(1)乃至V(n)をチェックパターン設定ブロック130に、クロックCLK_Mの周期に従って、出力する。これによって、チェックパターン設定ブロック130には、スレーブコア120(1)乃至120(n)の動作状態をそれぞれチェックするためのタイミングが設定される。
また、マスターコア110は、後述する半導体集積回路100のチェック機構によって正常に動作していないスレーブコア120が検出された場合に、実行中の処理に支障を来さないよう、少なくとも該正常に動作していないスレーブコア120の制御を行う。具体的には、マスターコア110は、スレーブコア120(1)乃至120(n)のいずれかが正常に動作していないことを示す割り込み信号INTを論理和回路190から受け取ると、通常モードから割り込み処理モードに移行し、正常に動作していないスレーブコア120の動作を停止させてこれを切り離すように制御を行う。或いは、マスターコア110は、該割り込みモードにおいて、該スレーブコア120の再起動するように制御を行っても良い。マスターコア110は、このような制御を行った後、通常モードに復帰する。
スレーブコア120は、マスターコア110の制御の下、クロックCLK_Mと非同期の関係にありクロックCLK_Mの周波数以下の周波数で交番するクロックCLK_Sに基づいて動作するマイクロプロセッサである。スレーブコア120(1)乃至120(n)のそれぞれに入力されるクロックCLK_S(1)乃至CLK_S(n)は、互いに非同期の関係にあっても良いし、異なる周波数でも良い。スレーブコア120(1)乃至120(n)のそれぞれは、正常に動作している間は、所定の周期で正常に動作していることを示す値に変化するフラグを動作状態記憶ブロック150に出力する。
具体的には、スレーブコア120(1)乃至120(n)のそれぞれは、例えば、図示しないカウンタを有し、スレーブコア120が正常に動作している間、クロックCLK_Sの交番数をカウントする。スレーブコア120は、該カウンタのカウント値が所定の値に達していない場合、スレーブコア120が正常に動作していることを示さないフラグを動作状態記憶ブロック150に出力する。一方、スレーブコア120は、該カウント値が所定の値に達した場合、該カウンタをリセットするとともに、スレーブコア120が正常に動作していること示すフラグを動作状態記憶ブロック150に出力する。つまり、スレーブコア120は、正常に動作している場合(すなわち、カウンタが動作する場合)、カウンタが所定の値を示したタイミングで、スレーブコア120が正常に動作していることを示すフラグを動作状態記憶ブロック150に出力する一方で、スレーブコア120が正常に動作していることを示さない場合(すなわち、カウンタが動作しない場合)、スレーブコア120が正常に動作していることを示さないフラグを動作状態記憶ブロック150に出力する。
チェックパターン設定ブロック130は、スレーブコア120(1)乃至120(n)のそれぞれに対するチェックタイミングパターンをそれぞれ記憶するチェックパターン設定回路131(1)乃至131(n)を含んで構成される。チェックタイミングパターンは、例えば所定長のビットパターンとして表現され、“1”のビット値が参照される場合にのみ、スレーブコア120の動作状態がチェックされる。ビットパターンの長さは、適宜に、設定されて良い。チェックパターン設定回路131(1)乃至131(n)は、マスターコア110から出力されるセットイネーブル信号SET_ENがイネーブル状態の間、クロックCLK_Mに従って、マスターコア110から出力される値信号V(1)乃至V(n)の値を順次に記憶する。チェックパターン設定回路131は、例えば選択回路及びシフトレジスタが環状に接続されることによって構成される循環型シフトレジスタである。或いは、チェックパターン設定回路131は、順序回路及びカウンタによって構成される回路であっても良い。なお、チェックパターン設定ブロック130は、チェックタイミング記憶ブロック140と、動作状態記憶ブロック150と、出力制御回路160と、動作状態設定ブロック170と、検出結果記憶ブロック180と、論理和回路190とともに、本発明の状態検出回路を構成する。
チェックタイミング記憶ブロック140は、クロックCLK_Mに基づいて、チェックパターン設定回路131(1)乃至131(n)から出力されるチェックタイミングパターンのビット値を記憶する順序回路141(1)乃至141(n)を含んで構成される。本例では、順序回路141は、例えばD型フリップフロップであるが、これに限られない。
動作状態記憶ブロック150は、スレーブコア120(1)乃至120(n)の動作状態をそれぞれ記憶する順序回路151(1)乃至151(n)を含む。本例では、順序回路151は、例えばセット機能付きD型フリップフロップであるが、これに限られない。順序回路151(1)乃至151(n)のそれぞれは、対応するスレーブコア120から出力されるフラグが示す動作状態を一時的に記憶し、該記憶した動作状態を所定のタイミングで出力制御回路160に出力する。つまり、動作状態記憶ブロック150には、クロックCLK_Sに従うスレーブコア120の動作タイミングで該スレーブコア120の動作状態が供給され、クロックCLK_Mに従うタイミングで、これを記憶するとともに記憶した動作状態を出力制御回路160に出力する。また、動作状態記憶ブロック150は、スレーブコア120がフラグを出力するタイミングと、チェックタイミング記憶ブロック140がスレーブコア120の動作状態をチェックするタイミングとの同期をとるために、動作状態設定ブロック170から出力されるセット信号SETに従って該順序回路151が記憶する動作状態をセット信号SETの動作状態に、クロックCLK_Mに従うタイミングで、設定する。
出力制御回路160は、動作状態記憶ブロック150が記憶する動作状態を検出し、チェックタイミング記憶ブロック140から出力されるチェックタイミングパターンの値に従って、該検出した動作状態の出力を制御する。具体的には、出力制御回路160は、チェックタイミング記憶ブロック140の順序回路141の出力が、対応するスレーブコア120の動作状態をチェックすべきタイミングであることを示す場合、動作状態記憶ブロック150の対応する順序回路151が記憶する動作状態を検出し、該検出結果を検出結果記憶ブロック180の対応する順序回路181に出力するとともに、動作状態設定ブロック170の対応する順序回路171が記憶する動作状態を初期状態にする。一方、出力制御回路160は、該順序回路141の出力が、対応するスレーブコア120の動作状態をチェックするタイミングでないことを示す場合、該順序回路151が記憶する動作状態を検出し、該動作状態を該順序回路171に出力する。
動作状態設定ブロック170は、クロックCLK_Mに基づいて、チェックタイミング記憶ブロック140の出力がスレーブコア120の動作状態をチェックするタイミングを示しておらず、かつ、動作状態記憶ブロック150からスレーブコア120が正常に動作していることを示す動作状態が出力されていた場合に、該動作状態を例えば順序回路171(1)乃至171(n)によって記憶するとともに、該記憶した動作状態をセット信号SETとして動作状態記憶ブロック150に出力する。また、動作状態設定ブロック170は、クロックCLK_Mに基づいて、チェックタイミング記憶ブロック140の出力がスレーブコア120の動作状態を確認するタイミングであることを示す場合、該記憶した動作状態を初期状態にするとともに、該記憶した初期状態をセット信号SETとして動作状態記憶ブロック150に出力する。つまり、動作状態設定ブロック170は、スレーブコア120がフラグを出力するタイミングと、チェックタイミング記憶ブロック140の出力が示すスレーブコア120の動作状態をチェックするタイミングとの間で同期をとるために、チェックタイミング記憶ブロック140の出力がスレーブコアの動作状態をチェックするタイミングを示すまで、スレーブコア120が正常に動作していたことを動作状態記憶ブロック150の出力が示す場合に該動作状態を記憶し、さらに、動作状態設定ブロック170は、動作状態記憶ブロック150の動作状態を該記憶した動作状態(すなわち正常動作)に設定する。なお、順序回路171は、例えばD型フリップフロップであるが、これに限られない。
検出結果記憶ブロック180は、クロックCLK_Mに基づいて、チェックタイミング記憶ブロック140の出力が、対応するスレーブコア120の動作状態をチェックするタイミングであることを示す場合に、読み出された動作状態記憶ブロック150が記憶する動作状態を例えば順序回路181(1)乃至181(n)によって一時的に記憶し、該記憶した動作状態を所定のタイミングで論理和回路190に出力する。つまり、検出結果記憶ブロック180は、チェックパターン設定ブロック130と、チェックタイミング記憶ブロック140と、動作状態記憶ブロック150と、出力制御回路160と、動作状態設定ブロック170とによってチェックされたスレーブコア120の動作状態を記憶し出力する。なお、順序回路181は、例えばD型フリップフロップであるが、これに限られない。
論理和回路190は、スレーブコア120(1)乃至120(n)の少なくとも1つが正常に動作していないことを示している場合、スレーブコア120が正常に動作していないことを示す割り込み信号INT(例えば“1”)をマスターコア110に出力する。つまり、論理和回路190は、検出結果記憶ブロック180の順序回路181(1)乃至181(n)から出力される動作状態に対して論理和演算を行い、該演算の結果を割り込み信号INTとしてマスターコア110に出力する。
以上のように構成される半導体集積回路100は、まず、チェックパターン設定ブロック130によってスレーブコア120(1)乃至120(n)のそれぞれの動作状態をチェックするチェックタイミングパターンを設定し、チェックタイミング記憶ブロック140にチェックパターンのビット値を記憶させる。半導体集積回路100は、スレーブコア120(1)乃至120(n)の動作状態を、クロックCLK_Sに従って、動作状態記憶ブロック150に出力する。半導体集積回路100は、チェックタイミング記憶ブロック140の出力がスレーブコア120の動作状態をチェックするタイミングでないことを示す場合、動作状態記憶ブロック150が記憶するスレーブコア120の動作状態を退避させるために動作状態設定ブロック170に一時的に記憶するとともに、該動作状態設定ブロック170が記憶する動作状態を該動作状態記憶ブロック150の動作状態に設定する。一方、半導体集積回路100は、チェックタイミング記憶ブロック140の出力がスレーブコア120の動作状態をチェックするタイミングであることを示す場合、該動作状態設定ブロック170が記憶する動作状態を初期状態にするとともに、該動作状態記憶ブロック150が記憶する動作状態を検出結果記憶ブロック180に記憶し、検出結果記憶ブロック180の出力の論理和をマスターコア110に出力する。これによって、マスターコア110は、検出結果記憶ブロック180の出力の論理和に従って、スレーブコア120の動作を制御する。
このように、半導体集積回路100は、スレーブコア120(1)乃至120(n)の動作周期に関係なく、チェックタイミングパターンに従ってスレーブコア120(1)乃至120(n)の動作状態をチェックする。この場合、動作状態のチェックタイミングよりも早いタイミングでスレーブコア120が正常に動作していることを示した場合に、半導体集積回路100は、チェックタイミングになるまで、該動作状態を動作状態設定ブロック170の対応する順序回路171に退避させ、記憶する。これにより、半導体集積回路100は、マスターコア110及びスレーブコア120(1)乃至120(n)の動作に用いられるクロックCLK_M、及びCLK_S(1)乃至CLK_S(n)が互いに同期関係にない場合でも、スレーブコア120(1)乃至120(n)に応じた適切なタイミングでスレーブコア120(1)乃至120(n)の動作状態の検出を行うことができる。
なお、本例では、検出結果記憶ブロック180の出力に対して論理和演算を行った結果が、割り込み信号INTとしてマスターコア110に出力されるが、これに限られるものではない。半導体集積回路100においては、論理和回路190が省略され、検出結果記憶ブロック180の順序回路181(1)乃至181(n)の出力がそれぞれ割り込み信号INT(1)乃至INT(n)としてマスターコア110に出力されても良い。かかる場合、半導体集積回路100は、正常に動作していないスレーブコア120を個別に検出することができ、半導体集積回路100全体を再起動させることなく、正常に動作していないスレーブコア120のみを切り離し又は再起動させることによって、実行中の処理を継続させることができる。
また、本例では、上述した各ブロック乃至はコンポーネントが1つの半導体集積回路100に設けられているが、これに限られるものではない。これらのブロック乃至はコンポーネントは、それぞれ別個のASICとして構成されても良く、或いは、それぞれ別個のプリント基板に設けられても良い。
図2は、本発明の一実施形態に係るチェックパターン設定回路の構成の一例を示す図である。同図に示すように、チェックパターン設定回路131(i)は、順序回路1312(1)乃至1312(m)からなるシフトレジスタと、該シフトレジスタの最前段及び最後段を接続する選択回路1311とを含んで構成される循環型シフトレジスタである。
選択回路1311は、例えばマルチプレクサであるが、これに限られない。選択回路1311は、選択端子SLに入力されるセットイネーブル信号SET_ENがイネーブル状態を示す場合、入力端子A1に入力される値信号V(i)を選択する一方、セットイネーブル信号SET_ENがイネーブル状態を示さない場合、入力端子A0に入力されるシフトレジスタの最後段の順序回路1312(m)の出力を選択し、該選択した結果を出力端子Yからシフトレジスタの最前段の順序回路1312(1)に出力する。つまり、選択回路1311は、チェックタイミングパターンを設定する設定モード、又は設定されたチェックタイミングパターンを出力する出力モードのいずれかを選択し、該選択したモードにチェックパターン設定回路131(i)のモードを設定する。
順序回路1312は、例えばD型フリップフロップであるが、これに限られない。順序回路1312は、クロックCLK_Mに基づいて、前段に接続される回路から出力される信号を後段に接続される回路に出力する。
以上のように構成されるチェックパターン設定回路131(i)は、セットイネーブル信号SET_ENがイネーブル状態を示す場合、設定モードとなり、マスターコア110から出力される値信号V(i)の値を取り込むことによって、対応するスレーブコア120(i)の動作状態をチェックするチェックタイミングパタ−ンを設定する。一方、チェックパターン設定回路131(i)は、セットイネーブル信号SET_ENがイネーブル状態を示さない場合、出力モードとなり、設定されたチェックタイミングパターンで、対応するスレーブコア120(i)の動作状態をチェックするタイミングであることを示す信号をチェックタイミング記憶ブロック140の対応する順序回路141(i)に出力する。これにより、チェックパターン設定回路131(i)は、単純な構成でチェックタイミングパターンを設定することができる。
図3は、本発明の一実施形態に係る出力制御回路の構成の一例を示す図である。同図に示すように、本実施形態に係る出力制御回路160は、論理積回路161(1)乃至161(n)と、論理積回路162(1)乃至162(n)とを含んで構成される。
論理積回路161は、動作状態記憶ブロック150における対応する順序回路151から出力される、対応するスレーブコア120の動作状態を示す信号に対してチェックタイミング記憶ブロック140の出力信号との論理積の信号を動作状態設定ブロック170における対応する順序回路171に出力する。また、論理積回路161は、チェックタイミング記憶ブロック140における対応する順序回路141の出力が、対応するスレーブコア120の動作状態をチェックすべきタイミングであることを示す場合、値を“0”として該順序回路171に出力する。つまり、論理積回路161は、対応する順序回路141からの出力に対する論理否定と、対応する順序回路151からの出力とに対して論理積演算を行い、該演算の結果を出力する。
論理積回路162は、イネーブル端子ENAに、チェックタイミング記憶ブロック140の対応する順序回路141から対応するスレーブコア120の動作状態を確認するタイミングであることを示す信号が入力された場合、対応する順序回路151から出力される対応するスレーブコア120の動作状態の論理否定に対して論理積演算を行った結果を検出結果記憶ブロック180の対応する順序回路181に出力する。つまり、論理積回路162は、対応する順序回路151からの出力に対する論理否定と、対応する順序回路141からの出力とに対して論理積演算を行い、該演算の結果を出力するものであっても良い。
以上のように構成される出力制御回路160は、チェックタイミング記憶ブロック140の順序回路141の出力が、対応するスレーブコア120の動作状態をチェックするタイミングであることを示す場合、動作状態記憶ブロック150における対応する順序回路151が記憶する動作状態を検出し、該検出結果を検出結果記憶ブロック180の対応する順序回路181に出力するとともに、動作状態設定ブロック170における対応する順序回路171を初期状態にする。一方、出力制御回路160は、該順序回路141の出力が、対応するスレーブコア120の動作状態をチェックするタイミングでないことを示す場合、対応する該順序回路151が記憶する動作状態を検出し、検出した該動作状態を動作状態設定ブロック170の対応する順序回路171に出力する。
図4は、本発明の一実施形態に係る半導体集積回路の各ブロックが記憶する動作状態の伝搬を説明するための図である。ここでは、スレーブコア120が3個(すなわち、n=3)である場合を例にして説明する。また、本例では、動作状態記憶ブロック150の順序回路151(1)乃至151(3)は、それぞれ、ある時点において、“1”、“0”、及び“1”を記憶しているものと仮定する。ここで、“1”は、例えば、対応するスレーブコア120が正常動作していることを示すフラグを出力していることを示し、“0”は、例えば、対応するスレーブコア120が正常に動作していることを示さないフラグを出力していることを示す。また、本例では、チェックタイミング記憶ブロック140の順序回路141(1)乃至141(3)がそれぞれ“0”、“1”及び“1”を記憶するものと仮定する。
まず、スレーブコア120(1)に関して、各コンポーネントが記憶する値の伝搬について説明する。チェックタイミング記憶ブロック140の順序回路141(1)が記憶する値が“0”である。また、動作状態記憶ブロック150の順序回路151(1)は、スレーブコア120(1)が正常に動作していることを示す“1”を記憶している。
出力制御回路160は、順序回路141(1)が記憶する“0”を受けてその論理否定“1”と、順序回路151(1)が記憶する“1”との論理積“1”を動作状態設定ブロック170の順序回路171(1)に出力するとともに、順序回路141(1)が記憶する“0”を受けて、スレーブコア120(1)が正常に動作していることを示す、順序回路151(1)が記憶する“1”の論理否定との論理積“0”を検出結果記憶ブロック180の順序回路181(1)に出力する。
これにより、動作状態設定ブロック170の順序回路171(1)は、出力制御回路160から出力される順序回路151(1)が記憶する“1”を記憶するとともに、該値をセット信号SET(1)として順序回路151(1)に出力することによって、順序回路151(1)が記憶する値を“1”に設定する。
一方、検出結果記憶ブロック180の順序回路181(1)は、出力制御回路160から出力される“0”を記憶し、スレーブコア120が正常に動作していることを示す信号を論理和回路190に出力する。
このように、チェックタイミング記憶ブロック140が、スレーブコア120の動作状態をチェックするタイミングでないことを示す値を記憶し、かつ、動作状態記憶ブロック150が、スレーブコア120が正常に動作していることを示す値を記憶している場合、動作状態記憶ブロック150が記憶していた値は、動作状態設定ブロック170に伝搬され、記憶される。また、動作状態設定ブロック170が記憶していた値は、該動作状態記憶ブロック150に設定される。
次に、スレーブコア120(2)に関して、各コンポーネントが記憶する値の伝搬について説明する。チェックタイミング記憶ブロック140の順序回路141(2)が記憶する値が“1”である。また、動作状態記憶ブロック150の順序回路151(2)は、スレーブコア120(2)が正常に動作していないことを示す“0”を記憶している。
出力制御回路160は、順序回路141(2)が記憶している“1”を受けてその論理否定“0”と、順序回路151(2)が記憶する“0”との論理積“0”を動作状態設定ブロック170の順序回路171(2)に出力するとともに、順序回路141(2)が記憶する“0”を受けて、スレーブコア120(2)が正常に動作していることを示さない、順序回路151(2)が記憶する“0”の論理否定との論理積“1”を検出結果記憶ブロック180の順序回路181(2)に出力する。
これにより、動作状態設定ブロック170の順序回路171(2)は、出力制御回路160から出力される順序回路151(2)が記憶する“0”を記憶するとともに、該値をセット信号SET(2)として順序回路151(2)に出力することによって、順序回路151(2)が記憶する値を“0”に設定する。
一方、検出結果記憶ブロック180の順序回路181(2)は、出力制御回路160から出力される“1”を記憶し、スレーブコア120が正常に動作していることを示さない信号“1”を論理和回路190に出力する。
このように、チェックタイミング記憶ブロック140が、スレーブコア120の動作状態をチェックするタイミングであることを示す値を記憶し、かつ、動作状態記憶ブロック150が、スレーブコア120が正常に動作していることを示さない値を記憶している場合、動作状態記憶ブロック150が記憶していた値は、動作状態設定ブロック170に伝播され、記憶される。また、動作状態記憶ブロック150が記憶していた値は、該動作状態設定ブロック170が記憶する値に設定される。
次に、スレーブコア120(3)に関して、各コンポーネントが記憶する値の伝搬について説明する。チェックタイミング記憶ブロック140の順序回路141(3)が記憶する値が“1”である。また、動作状態記憶ブロック150の順序回路151(3)は、スレーブコア120(1)が正常動作していることを示す“1”を記憶している。
出力制御回路160は、順序回路141(3)が記憶している“1”を受けてその論理否定“0”と、順序回路151(3)が記憶する“1”との論理積“0”を動作状態設定ブロック170の順序回路171(3)に出力するとともに、順序回路141(3)が記憶する“1”を受けて、スレーブコア120(3)が正常に動作していることを示す、順序回路151(3)が記憶する“1”の論理否定との論理積“0”を検出結果記憶ブロック180の順序回路181(3)に出力する。
これにより、動作状態設定ブロック170の順序回路171(3)は、出力制御回路160から出力される順序回路151(3)が記憶する“0”を記憶するとともに、該値をセット信号SET(3)として順序回路151(3)に出力することによって、順序回路151(3)が記憶する値を“0”に設定する。
一方、検出結果記憶ブロック180の順序回路181(3)は、出力制御回路160から出力される“0”を記憶し、スレーブコア120(3)が正常に動作していることを示さない信号“0”を論理和回路190に出力する。
このように、チェックタイミング記憶ブロック140が、スレーブコア120の動作状態をチェックするタイミングであることを示す値を記憶し、かつ、動作状態記憶ブロック150が、スレーブコア120が正常動作していることを示す値を記憶している場合、動作状態記憶ブロック150が記憶していた値は、動作状態設定ブロック170が記憶する動作状態を初期状態にして、動作状態記憶ブロック150に対する設定を解除するとともに、スレーブコア120が正常動作していることを示す“0”を検出結果記憶ブロック180に記憶する。
そして、検出結果記憶ブロック180は、順序回路181(1)乃至181(3)にそれぞれ“0”、“1”、及び“0”を記憶するとともに、該記憶した値を、クロックCLK_Mに同期して、論理和回路190に出力する。論理和回路190は、検出結果記憶ブロック180から出力された値に対して論理和演算を行うため、割り込み信号INTの値を正常に動作していないスレーブコア120があることを示す“1”として、該信号をマスターコア110に出力する。
図5は、本発明の一実施形態に係る半導体集積回路の動作を示すタイミングチャートである(なお、図4に示した設定状態とは異なる。)。同図において、クロックCLK_Mが交番するタイミングは、時刻t1乃至t10として示されている。
まず、スレーブコア120(1)に関する各コンポーネントの動作について説明する。時刻t1で、スレーブコア120(1)は、正常に動作していることを示す“1”を動作状態記憶ブロック150の順序回路151(1)に出力している。
時刻t2で、チェックタイミング記憶ブロック140の順序回路141(1)は、スレーブコア120(1)の動作状態をチェックするタイミングであることを示す“1”を、チェックパターン設定ブロック130の順序回路131(1)から受け、記憶する。また、動作状態記憶ブロック150の順序回路151(1)は、スレーブコア120(1)からスレーブコア120(1)が正常に動作していることを示す“1”を受け、該値を記憶する。
時刻t3で、出力制御回路160は、順序回路141(1)からスレーブコア120(1)の動作状態をチェックするタイミングであることを示す“1”を受ける一方、順序回路151(1)からスレーブコア120(1)が正常に動作していることを示す“1”を受け、順序回路181(1)にスレーブコア120(1)が正常に動作していることを示す“0”を出力する。順序回路181(1)は、スレーブコア120が正常に動作していることを示す“0”を記憶する。また、スレーブコア120(1)は、正常に動作していることを示さない“0”を動作状態記憶ブロック150の順序回路151(1)に出力する。
時刻t6で、チェックタイミング記憶ブロック140の順序回路141(1)は、スレーブコア120(1)の動作状態を確認するタイミングであることを示す“1”を、チェックパターン設定ブロック130の順序回路131(1)から受け、記憶する。また、動作状態記憶ブロック150の順序回路151(1)は、スレーブコア120(1)からスレーブコア120(1)が正常に動作していることを示さない“0”を受け、該値を記憶する。
時刻t7で、出力制御回路160は、順序回路141(1)からスレーブコア120(1)の動作状態を確認するタイミングであることを示す“1”を受ける一方、順序回路151(1)からスレーブコア120(1)が正常に動作していることを示さない“0”を受け、論理演算の結果として、順序回路181(1)にスレーブコア120(1)が正常に動作していないことを示す“1”を出力する。順序回路181(1)は、スレーブコア120が正常に動作していないことを示す“1”を記憶する。
このように、半導体集積回路100は、スレーブコア120(1)が正常に動作している場合、順序回路181(1)にスレーブコア120(1)が正常に動作していることを示す“0”を記憶する一方で、スレーブコア120(1)が正常に動作していない場合、順序回路181(1)にスレーブコア120(1)が正常に動作していないことを示す“1”を記憶する。
次に、スレーブコア120(2)に関する各コンポーネントの動作について説明する。時刻t1で、スレーブコア120(2)は、正常に動作していることを示す“1”を動作状態記憶ブロック150の順序回路151(2)に出力している。
時刻t2で、チェックタイミング記憶ブロック140の順序回路141(2)は、スレーブコア120(2)の動作状態を確認するタイミングであることを示す“1”を、チェックパターン設定ブロック130の順序回路131(2)から受け、記憶する。また、動作状態記憶ブロック150の順序回路151(2)は、スレーブコア120(2)からスレーブコア120(2)が正常に動作していることを示す“1”を受け、該値を記憶する。
時刻t2と時刻t3との間で、スレーブコア120(2)は、正常に動作していることを示さない“0”を動作状態記憶ブロック150の順序回路151(2)に出力する。
時刻t3で、出力制御回路160は、順序回路141(2)からスレーブコア120(2)の動作状態を確認するタイミングであることを示す“1”を受ける一方、順序回路151(2)からスレーブコア120(2)が正常に動作していることを示す“1”を受け、順序回路181(2)にスレーブコア120(2)が正常に動作していることを示す“0”を出力する。順序回路181(2)は、スレーブコア120(2)が正常に動作していることを示す“0”を記憶する。
時刻t3と時刻t4との間で、スレーブコア120(2)は、正常に動作していることを示す“1”を動作状態記憶ブロック150の順序回路151(2)に出力する。
時刻t4で、順序回路141(2)は、スレーブコア120(2)の動作状態を確認するタイミングでないことを示す“0”を、チェックパターン設定ブロック130の順序回路131(2)から受け、記憶する。また、時刻t4で、順序回路151(2)は、スレーブコア120(2)からスレーブコア120(2)が正常に動作していることを示す“1”を受け、該値を記憶する。
時刻t4と時刻t5との間で、スレーブコア120(2)は、正常に動作していることを示さない“0”を動作状態記憶ブロック150の順序回路151(2)に出力する。
時刻t5で、出力制御回路160は、順序回路141(2)からスレーブコア120(2)の動作状態を確認するタイミングでないことを示す“0”を、チェックパターン設定ブロック130の順序回路131(2)から受ける一方、順序回路151(2)からスレーブコア120(2)が正常に動作していることを示す“1”を受け、動作状態設定ブロック170の順序回路171(2)にスレーブコア120(2)が正常に動作していることを示す“1”を出力する。順序回路171(2)は、スレーブコア120(2)が正常に動作していることを示す“1”を記憶するとともに、順序回路151(2)が記憶する値をスレーブコア120(2)が正常に動作していることを示す“1”に設定する。また、順序回路141(2)は、スレーブコア120(2)の動作状態を確認するタイミングであることを示す“1”を、チェックパターン設定ブロック130の順序回路131(2)から受け、記憶する。
時刻t6で、出力制御回路160は、順序回路141(2)からスレーブコア120(2)の動作状態を確認するタイミングであることを示す“1”を受ける一方、順序回路151(2)からスレーブコア120(2)が正常に動作していることを示す“1”を受け、順序回路181(2)にスレーブコア120(2)が正常に動作していることを示す“0”を出力する。順序回路181(2)は、スレーブコア120が正常に動作していることを示す“0”を記憶する。また、順序回路171(2)は、順序回路151(2)に対する順序回路151(2)が記憶する値の設定を初期化する。
時刻t8で、順序回路141(2)は、スレーブコア120(2)の動作状態を確認するタイミングであることを示す“1”を、チェックパターン設定ブロック130の順序回路131(2)から受け、記憶する。また、時刻t8で、順序回路151(2)は、スレーブコア120(2)からスレーブコア120(2)が正常に動作していることを示さない“0”を受け、該値を記憶する。
時刻t9で、出力制御回路160は、順序回路141(2)からスレーブコア120(2)の動作状態を確認するタイミングであることを示す“1”を受ける一方、順序回路151(2)からスレーブコア120(2)が正常に動作していることを示さない“0”を受け、順序回路181(2)にスレーブコア120(2)が正常に動作していないことを示す“1”を出力する。順序回路181(2)は、スレーブコア120が正常に動作していないことを示す“1”を記憶する。
このように、半導体集積回路100は、スレーブコア120(2)の動作状態をチェックするタイミングで、スレーブコア120(2)が正常に動作している場合、順序回路181(2)にスレーブコア120(2)が正常に動作していることを示す“1”を記憶する一方で、スレーブコア120(2)の動作状態をチェックしないタイミングにおいて、スレーブコア120(2)が正常に動作している場合、順序回路171(2)にスレーブコア120(2)が正常に動作していることを示す“1”を記憶するとともに、順序回路151(2)が記憶する値を、スレーブコア120(2)が正常に動作していることを示す“1”に設定する。これに対して、半導体集積回路100は、スレーブコア120(1)が正常に動作していない場合、順序回路181(1)にスレーブコア120(1)が正常に動作していないことを示す“1”を記憶する。
図6は、本発明の一実施形態に係る半導体集積回路の動作を示すフローチャートである。同図に示すように、半導体集積回路100は、まず、チェックパターン設定ブロック130に、スレーブコア120(1)乃至120(n)のそれぞれの動作状態をチェックするタイミングを示すチェックタイミングパターンを設定する(S601)。
次に、半導体集積回路100は、チェックタイミング記憶ブロック140の順序回路141が記憶する値、すなわち、チェックタイミングパターンに従ってチェックすべきタイミングであるか否かをチェックするする(S602)。半導体集積回路100は、順序回路141の記憶する値が、対応するスレーブコア120の動作状態をチェックするタイミングであることを示す場合(S603のYes)、動作状態記憶ブロック150の順序回路151が記憶する対応するスレーブコア120の動作状態を検出し(S604)、該検出結果を検出結果記憶ブロック180の順序回路181に記憶する(S605)。また、半導体集積回路100は、動作状態設定ブロック170の対応する順序回路171の状態を初期化する(S606)。半導体集積回路100は、順序回路181が記憶する動作状態をマスターコア110に出力し(S607)、ステップS612の処理に進む。
これに対して、半導体集積回路100は、順序回路141が記憶する値が対応するスレーブコア120の動作状態をチェックするタイミングでないことを示す場合(S603のNo)、動作状態記憶ブロック150の順序回路151が記憶する対応するスレーブコア120の動作状態を確認する(S608)。半導体集積回路100は、順序回路151が記憶する値が、対応するスレーブコア120が正常に動作していることを示す場合(S609のYes)、動作状態設定ブロック170の対応する順序回路171に順序回路151の状態を記憶し(S610)、順序回路151が記憶する動作状態を順序回路171が記憶する動作状態に設定し(S611)、ステップS612の処理に進む。一方、半導体集積回路100は、順序回路151が記憶する値が、対応するスレーブコア120が正常に動作していることを示さない場合(S609のNo)、ステップS612の処理に進む。
半導体集積回路100は、マスターコア110によってスレーブコア120の動作を停止させるか或いは再起動させる(S612)。
なお、同図中、理解の容易のため、半導体集積回路100の処理の流れをステップごとに逐次的に説明したが、各ステップは、適宜、並列的に実行されうる。
図7は、本発明の一実施形態に係る半導体集積回路の概略構成の他の例を示す図である。同図に示すように、本実施形態に係る半導体集積回路100Aは、動作状態記憶ブロック150の代わりに動作状態記憶ブロック150Aを含んで構成される以外は、半導体集積回路100と同じである。なお、同図では、半導体集積回路100と同じコンポーネントについては、同じ符号が付され、したがって、その説明を適宜省略する。
動作状態記憶ブロック150Aは、順序回路151の代わりに、順序回路151A及び論理和回路152を含んで構成される以外は、動作状態記憶ブロック150と同じである。すなわち、動作状態記憶ブロック150Aは、順序回路151A及び論理和回路152によって、スレーブコア120から出力されるフラグが示す動作状態を記憶し、該記憶した動作状態を出力制御回路160に出力する。また、動作記憶状態ブロック150Aは、動作状態設定ブロック170からセット信号SETが出力される場合、該論理和回路152の出力をセット信号SETが示す動作状態とする。
順序回路151Aは、例えばD型フリップフロップであるが、これに限られない。順序回路151Aは、クロックCLK_Mに基づいて、対応するスレーブコア120から出力されるフラグが示す動作状態を記憶し、該記憶した動作状態を対応する論理和回路152に出力する。
論理和回路152は、対応する順序回路151Aからの出力と、動作状態設定ブロック170の対応する順序回路171からの出力とに対して論理和演算を行い、該演算の結果を出力制御回路160に出力する。
以上のように構成される半導体集積回路100Aは、セット機能を必要としないD型フリップフロップと、論理和回路とからなる単純な構成によって、動作状態記憶ブロック150Aを実現でき、半導体集積回路100と同様の機能を実現することができる。
図8は、本発明の一実施形態に係る半導体集積回路の概略構成の他の例を示す図である。同図に示すように、半導体集積回路100Cは、半導体集積回路100に対して異常状態記憶ブロック1000がさらに追加されることによって構成される。なお、同図には、マスターコア110、チェックパターン設定ブロック130及びスレーブコア120(1)乃至120(n)が図示されていないが、半導体集積回路100Cは、該コンポーネントを含むものとする。また、同図では、半導体集積回路100と同じコンポーネントについては、同じ符号が付され、したがって、その説明を適宜省略する。
異常状態記憶ブロック1000は、割り込み信号INTに従って、検出結果記憶ブロック180の出力が示す動作状態を記憶する。具体的には、異常状態記憶ブロック1000は、割り込み信号INTがスレーブコア120(1)乃至120(n)のうちいずれかが正常に動作していないことを示す場合に、検出結果記憶ブロック180が記憶し出力するスレーブコア120(1)乃至120(n)の動作状態を記憶し続ける。異常状態記憶ブロック1000は、異常状態検出回路1010と、バッファ回路1020(1)乃至1020(n)と、順序回路1030(1)乃至1030(n)とを含んで構成される。
異常状態検出回路1010は、論理和回路190から出力される割り込み信号INTがスレーブコア120(1)乃至120(n)のいずれかが正常に動作していないことを示す場合、論理和回路190及び順序回路1013の出力に対して論理和演算を行い、該演算結果を出力する論理和回路1011と、論理和回路1011の出力に対して所定の遅延を与えるバッファ回路1012と、クロックCLK_Mに基づいてバッファ回路1012からの出力を論理和回路1011及びバッファ回路1020に出力する順序回路1013との環状構造によって、該割り込み信号INTが示す値を記憶し続けるとともに該記憶した値をバッファ回路1020(1)乃至1020(n)に出力する。また、異常状態検出回路1010は、マスターコア110から出力されるクリア信号CLRを受けて、バッファ回路1020によって該記憶した値を初期状態にする。つまり、異常状態検出回路1010は、割り込み信号INTがスレーブコア120(1)乃至120(n)が正常に動作していないことを示す場合、クリア信号CLRによって初期状態にされるまで、該割り込み信号INTが示す値を記憶し続ける。
バッファ回路1020は、異常状態検出回路1010から出力される信号がスレーブコア120(1)乃至120(n)のいずれかが正常に動作していないことを示す場合、検出結果記憶ブロック180の対応する順序回路181から出力される信号に対して所定の遅延を与え、該遅延を与えた信号を対応する順序回路1030に出力する。一方、バッファ回路1020は、異常状態検出回路1010から出力される信号がスレーブコア120(1)乃至120(n)のいずれも正常に動作していることを示す場合、対応する順序回路1030への信号の出力を停止する。また、バッファ回路1020は、マスターコア110からクリア信号CLRが出力される場合、スレーブコア120(1)乃至120(n)のいずれも正常に動作していることを示す“0”を対応する順序回路1030に出力する。つまり、バッファ回路1020は、対応する順序回路181からの出力と、異常状態検回路1010からの出力と、クリア信号CLRに対する論理否定とに対して論理積演算を行い、該演算の結果を対応する順序回路1013に出力する。
順序回路1030は、例えばD型フリップフロップであるが、これに限られない。順序回路1030は、クロックCLK_Mに基づいて、対応するバッファ回路1020からの出力が示す動作状態を記憶し、該記憶した動作状態をステータス信号STとしてマスターコア110に出力する。
以上のように構成される半導体集積回路100Cは、異常状態記憶ブロック1000により、スレーブコア120(1)乃至120(n)のいずれかが正常に動作していない場合、どのスレーブコア120が正常に動作していないかに関する情報を記憶し続けることができる。したがって、半導体集積回路100Cは、正常に動作していないスレーブコア120の動作状態に関する情報をマスターコア110がクリア信号CLRを出力するまで利用し続けることができる。
図9は、本発明の一実施形態に係るチェックタイミング設定ブロックのチェックパターン設定回路の構成の他の例を示す図である。同図に示すように、本実施形態に係るチェックパタ−ン設定回路131D(i)は、順序回路1312(1)乃至1312(m)と、否定排他的論理和回路1313(1)乃至1313(m)と、論理積回路1314と、カウンタ1315とを含んで構成される。なお、本実施形態に係るチェックパターン設定回路131D(i)は、セットイネーブル信号SET_ENが入力されることを必要としない。
順序回路1312は、クロックCLK_Mに基づいて、マスターコア110から出力される値信号V(i)が示す値を記憶し、該記憶した値を対応する否定排他的論理和回路1313に出力する。なお、順序回路1312(1)乃至1312(m)のそれぞれが記憶する値は、カウンタ1315がカウントするカウント値の上限の各桁に対応する。
否定排他的論理和回路1313は、対応する順序回路1312からの出力と、カウンタ1315の対応する桁のカウント値算出回路1350からの出力とが一致する場合、値が一致することを示す信号を論理積回路1314に出力する一方で、対応する順序回路1312からの出力と、カウンタ1315の対応する桁のカウント値算出回路1350からの出力とが一致しない場合、値が一致しないことを示す信号を論理積回路1314に出力する。つまり、否定排他的論理和回路1313は、対応する順序回路1312からの出力と、カウンタ1315の対応する桁のカウント値算出回路1350からの出力とに対して否定排他的論理和演算を行い、該演算の結果を論理積回路1314に出力する。
論理積回路1314は、順序回路1312(1)乃至1312(m)が記憶する値と、カウンタ1315が出力するカウント値とが一致した場合に、該一致を示す信号をカウンタ1315とチェックタイミング記憶ブロック140とに出力する。つまり、論理積回路1314は、各否定排他的論理和回路1313(1)乃至1313(m)の出力に対して論理積演算を行い、該演算の結果をカウンタ1315と、チェックタイミング記憶ブロック140とに出力する。
カウンタ1315は、クロックCLK_Mに基づいて、順序回路1312(1)乃至1312(m)が記憶する値までカウントを行い、該順序回路1312が記憶する値にカウント値が達したらカウント値を初期状態にするという動作を繰り返す。カウンタ1315は、カウント値の各桁の値を算出するカウント値算出部1350(1)乃至1350(m)を含んで構成される。
カウント値算出部1350は、カウンタ1315がカウントするカウント値における対応する桁の値を算出する。具体的には、カウント値算出部1350は、後段の回路に出力する信号に対して論理否定演算を行った結果と、前段のカウント値算出部1350から出力される信号とに対して排他的論理和演算を行い、該演算の結果を後段のカウント値算出部1350と、対応する否定排他的論理和回路1313とに出力することによって、カウント値の対応する桁の値を算出する。カウント値算出部1350は、例えば排他的論理和回路1351と、バッファ回路1352と、順序回路1353とを含んで構成される。なお、最前段のカウント値算出部1350には、前段のカウント値算出部1350から出力される信号の代わりに、例えば接地電位と同じ電位を有する接地信号GNDが入力される。
排他的論理和回路1351は、前段の回路から出力される信号と、対応する順序回路1353の出力端子Qから出力される信号に対して論理否定演算を行った信号を出力する出力端子QBから出力される信号とに対して排他的論理和演算を行い、該演算の結果を対応するバッファ回路1352に出力する。
バッファ回路1352は、対応する排他的論理和回路1351から出力される信号に対して所定の遅延を与え、該遅延を与えた信号を対応する順序回路1353のデータ端子Dに出力する。また、バッファ回路1352は、順序回路1312(1)乃至1312(m)が記憶する値と、カウンタ1315が出力するカウント値の各桁とが全て一致することを論理積回路1314から出力される信号が示す場合、対応する順序回路1353を初期状態にする。つまり、バッファ回路1352は、対応する排他的論理和回路1351からの出力と、論理積回路1314からの出力に対する論理否定とに対して論理積演算を行い、該演算の結果を対応する順序回路1353に出力する。
順序回路1353は、例えばD型フリップフロップであるが、これに限られない。順序回路1353は、クロックCLK_Mに基づいて、対応するバッファ回路1352から出力される信号を対応する否定排他的論理和回路1313と、後段のカウント値算出回路1350とに出力するとともに、該信号に対して論理否定演算を行った結果を対応する排他的論理和回路1351に出力する。
以上のように構成されるチェックパターン設定回路131D(i)は、順序回路1312(1)乃至1312(m)がカウント値の各桁に対応する値を記憶するため、チェックパターン設定回路131と比べて、少ない素子数で高精度にチェックタイミングパターンを設定することができる。
上記各実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱しない限り、さまざまな形態で実施することができる。
また、本明細書に開示される方法においては、その結果に矛盾が生じない限り、ステップ、動作又は機能を並行して又は異なる順に実施しても良い。説明されたステップ、動作及び機能は、単なる例として提供されており、ステップ、動作及び機能のうちのいくつかは、発明の要旨を逸脱しない範囲で、省略でき、また、互いに結合させることで一つのものとしてもよく、また、他のステップ、動作又は機能を追加してもよい。
また、本明細書では、さまざまな実施形態が開示されているが、一の実施形態における特定のフィーチャ(技術的事項)を適宜改良しながら、他の実施形態に追加し、又は該他の実施形態における特定のフィーチャと置換することができ、そのような形態も本発明の要旨に含まれる。