(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024064075
(43)【公開日】2024-05-14
(54)【発明の名称】半導体装置、および半導体装置の起動制御方法
(51)【国際特許分類】
G01R 31/28 20060101AFI20240507BHJP
G01R 31/3185 20060101ALI20240507BHJP
H01L 21/822 20060101ALI20240507BHJP
G06F 11/16 20060101ALI20240507BHJP
G06F 1/24 20060101ALI20240507BHJP
【FI】
G01R31/28 G
G01R31/3185
G01R31/28 V
H01L27/04 T
G06F11/16 641
G06F1/24 A
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2022172398
(22)【出願日】2022-10-27
(71)【出願人】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】110002066
【氏名又は名称】弁理士法人筒井国際特許事務所
(72)【発明者】
【氏名】早瀬 清
(72)【発明者】
【氏名】早川 雄貴
(72)【発明者】
【氏名】加谷 俊之
(72)【発明者】
【氏名】山口 恭平
(72)【発明者】
【氏名】入田 隆宏
(72)【発明者】
【氏名】芝原 真一
【テーマコード(参考)】
2G132
5B034
5F038
【Fターム(参考)】
2G132AA03
2G132AA05
2G132AB01
2G132AC02
2G132AC14
2G132AD06
2G132AK09
2G132AK21
2G132AK23
5B034CC01
5F038DT06
5F038DT08
5F038EZ20
(57)【要約】
【課題】ロックステップ動作を開始する前に複数のプロセッサコアがそれぞれ有する記憶回路の記憶状態を一致させる。
【解決手段】半導体装置100は、ロックステップ動作を実行するように構成され、かつスキャンチェーン110,120を含んだプロセッサコア11,12を有する。さらに、半導体装置100は、スキャンチェーン110,120を用いたプロセッサコア11,12のスキャンテストを制御するスキャンテスト制御部30と、プロセッサコア11,12をリセット状態にするリセット信号RSTを出力する起動制御部20とを備える。起動制御部20は、ロックステップ動作を開始する前に、初期化用スキャン要求INI_REQを出力し、スキャンテスト制御部30は、プロセッサコア11,12に対して初期化用パタンを用いた初期化用スキャンテスト動作を実行する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ロックステップ動作を実行するように構成される第1および第2のプロセッサコアと、
前記第1プロセッサコアに設けられる第1のスキャンチェーンと、
前記第2プロセッサコアに設けられる第2のスキャンチェーンと、
前記第1および第2のスキャンチェーンを用いた前記第1および第2のプロセッサコアのスキャンテストを制御するスキャンテスト制御部と、
前記第1および第2のプロセッサコアをリセット状態にするリセット信号を出力する起動制御部と、
を備え、
前記起動制御部は、前記ロックステップ動作を開始するために前記第1および第2のプロセッサコアのリセット状態を解除する前に、初期化用スキャン要求を生成し、
前記スキャンテスト制御部は、前記初期化用スキャン要求に基づいて、前記第1および第2のプロセッサコアに対して初期化用パタンを用いた初期化用スキャンテスト動作を実行する
半導体装置。
【請求項2】
前記起動制御部は、前記半導体装置に電源が投入された後、前記ロックステップ動作を開始する前に、前記初期化用スキャン要求を出力する
請求項1に記載の半導体装置。
【請求項3】
前記スキャンテスト制御部は、さらに故障検出用スキャンテストを制御するように構成され、
前記スキャンテスト制御部は、
前記故障検出用スキャンテストにおいて、スキャンイン動作、キャプチャ動作およびスキャンアウト動作を順に行い、
前記初期化用スキャンテスト動作において、前記スキャンイン動作および前記キャプチャ動作を行い、前記キャプチャ動作後に初期化用スキャンテスト動作完了通知を発行する
請求項1に記載の半導体装置。
【請求項4】
前記起動制御部は、前記初期化用スキャンテスト動作完了通知に基づいて、前記第1および第2のプロセッサコアの前記リセット状態を解除する
請求項3に記載の半導体装置。
【請求項5】
第1のクロックイネーブル信号に基づき前記第1のプロセッサコアへのクロック供給を制御する第1のクロックゲーティングセルと、
前記第1のプロセッサコアに入力する入力データ信号を入力し、前記入力データ信号を所定サイクル数分遅延させて前記第2のプロセッサコアに入力する第1の遅延回路と、
前記第1のクロックゲーティングセルに与えられる前記第1のクロックイネーブル信号を前記所定サイクル数分遅延させ第2のクロックイネーブル信号を生成する第2の遅延回路と、
前記第2のクロックイネーブル信号に基づき前記第2のプロセッサコアへのクロック供給を制御する第2のクロックゲーティングセルと、
をさらに備える請求項1に記載の半導体装置。
【請求項6】
前記第1のクロックイネーブル信号を生成するクロック制御部をさらに有し、
前記クロック制御部は、前記起動制御部が前記初期化用スキャンテスト動作を実行後に出力するリセット信号に応じて前記第1のクロックイネーブル信号をリセットし、
前記第2の遅延回路は、前記リセット信号に基づいて前記第2のクロックイネーブル信号をリセットする
請求項5に記載の半導体装置。
【請求項7】
前記第2の遅延回路は、直列接続した複数のフリップフロップを含み、
前記複数のフリップフロップの最終段のフリップフロップは、前記起動制御部からの前記リセット信号に応じてリセットするリセット機能付きフリップフロップである、
請求項5に記載の半導体装置。
【請求項8】
半導体装置の起動制御方法であって、前記半導体装置は、ロックステップ動作を実行するように構成される第1および第2のプロセッサコアを有し、前記第1のプロセッサコアは第1のスキャンチェーンを含み、前記第2のプロセッサコアは第2のスキャンチェーンを含み、前記起動制御方法は、
前記半導体装置に電源が投入された後、初期化用パタンを用いて前記第1および第2のプロセッサコアの初期化用スキャンテスト動作を実行し、
前記初期化用スキャンテスト実行後に前記第1および第2のプロセッサコアの前記ロックステップ動作を開始すること
を含む、
起動制御方法。
【請求項9】
前記初期化用スキャンテスト動作は、
前記初期化用パタンを前記第1および第2のスキャンチェーンにスキャンインし、
前記スキャンイン後に、キャプチャ動作を実行し、
前記キャプチャ動作完了後に、初期化用スキャンテスト動作完了通知を発行する
請求項8に記載の起動制御方法。
【請求項10】
前記起動制御方法は、
前記初期化用スキャンテスト動作完了通知に応じて、前記第1および第2のプロセッサコアをリセットし、
当該リセットを解除した後に、前記ロックステップ動作を開始する
請求項9に記載の起動制御方法。
【請求項11】
前記半導体装置は、
前記第1および第2のプロセッサコアをリセット状態にするリセット信号を出力する起動制御部と、
第1のクロックイネーブル信号を生成するクロック制御部と、
前記第1のクロックイネーブル信号に基づき前記第1のプロセッサコアへのクロック供給を制御する第1のクロックゲーティングセルと、
前記第1のクロックゲーティングセルに与えられる前記第1のクロックイネーブル信号を前記所定サイクル数分遅延させて第2のクロックイネーブル信号を生成する遅延回路と、
前記第2のクロックイネーブル信号に基づき前記第2のプロセッサコアへのクロック供給を制御する第2のクロックゲーティングセルと、
をさらに備え、
前記第1のクロックイネーブル信号および前記第2のクロックイネーブル信号は、前記起動制御部からの前記リセット信号に基づいてリセットされる
請求項10に記載の起動制御方法。
【請求項12】
前記遅延回路は、直列接続した複数のフリップフロップを有し、
前記複数のフリップフロップのうち最終段のフリップフロップは、リセット機能付きフリップフロップである
請求項11に記載の起動制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は半導体装置に関し、例えば、少なくとも二つのプロセッサコアを有し、これら2つのプロセッサコアに同一のプログラムを実行させるロックステップモードを有する半導体装置、およびその起動制御方法に関する。
【背景技術】
【0002】
車載用のマイクロコントローラは、SRAMやフラッシュメモリなどに付加するECC(ERROR Correction CODE)を用いた誤り検出訂正回路や、自己診断を行うBIST(Built in Self Test)回路などの安全機構を備えている。加えて、車載用のマイクロコントローラは、プロセッサコアの動作を監視する安全機構を備えている。
【0003】
プロセッサコアの動作を監視する安全機構として、一般的な機構がロックステップである。ロックステップは、1つの半導体装置に複数の同一のプロセッサコアを搭載し、その複数のプロセッサコアが同じ動作をしているか否かを判定する。例えば、ロックステップ方式については特開2010-198131号公報(特許文献1)に記載されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
ロックステップ方式では、ロックステップ動作を開始する前に、複数のプロセッサコアの内部状態を一致させる必要がある。複数のプロセッサコアの内部状態が一致していない状態でロックステップ動作を開始すると、複数のプロセッサコアの出力データが相違し、エラーとして検出されてしまうためである。複数のプロセッサコアの内部状態を一致させるために、例えば、プロセッサコアそれぞれに含まれているすべてのフリップフロップをリセット機能付きフリップフロップに置き換えることが考えられる。しかしながら、すべてのフリップフロップをリセット機能付きフリップフロップに置き換えると、回路面積が増大してしまう。
【0006】
特許文献1は、一方のプロセッサコアの記憶素子と、他方のプロセッサコアの記憶素子間を接続する信号線群を備えたプロセッサシステムを開示する。特許文献1のプロセッサシステムは、ロックステップモードに切り替えるときに、一方のプロセッサコアの記憶素子の記憶データを、信号線群を介して他方のプロセッサコアの記憶素子に転送する。特許文献1のプロセッサシステムは、このようにして2つのプロセッサコアの記憶内容を一致させている。
【0007】
しかしながら、記憶データを転送するために、記憶素子間に信号線群を備えると、回路面積が増大してしまう。
【0008】
その他の課題および新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0009】
一実施の形態によれば、半導体装置は、ロックステップ動作を実行するように構成される第1および第2のプロセッサコアを有する。第1および第2のプロセッサコアは、第1のスキャンチェーンと第2のスキャンチェーンをそれぞれ備える。さらに、半導体装置は、第1および第2のスキャンチェーンを用いた第1および第2のプロセッサコアのスキャンテストを制御するスキャンテスト制御部と、第1および第2のプロセッサコアをリセット状態にするリセット信号RSTを出力する起動制御部とを備える。起動制御部は、ロックステップ動作を開始する前に、初期化用スキャン要求INI_REQを出力し、スキャンテスト制御部は、第1および第2のプロセッサコアに対して初期化用パタンを用いた初期化用スキャンテスト動作を実行する。
【発明の効果】
【0010】
前記一実施の形態によれば、回路面積の増大を抑えつつ、ロックステップ動作を行う複数のプロセッサコアがそれぞれ有する記憶素子の記憶内容を一致させることができる。
【図面の簡単な説明】
【0011】
【
図1】
図1は、実施の形態1に係る半導体装置における主要部の構成例を示す概略図である。
【
図2】
図2は、実施の形態1に係る半導体装置の起動制御方法を示すフローチャートである。
【
図3】
図3は、実施の形態2に係る半導体装置における主要部の構成例を示す概略図である。
【
図4】
図4は、実施の形態2に係る遅延回路の構成を示すブロック図である。
【
図5】
図5は、実施の形態2に係る比較部の構成を示すブロック図である。
【
図6】
図6は、実施の形態2に係る半導体装置の起動制御方法を示すフローチャートである。
【
図7】
図7は、実施の形態2に係る半導体装置の起動制御時における内部波形を示す波形図である。
【発明を実施するための形態】
【0012】
以下、一実施の形態に係る半導体装置について、図面を参照して詳細に説明する。なお、明細書および図面において、同一の構成要件または対応する構成要件には、同一の符号を付し、重複する説明は省略する。また、図面では、説明の便宜上、構成を省略または簡略化している場合もある。また、各実施の形態の少なくとも一部は、互いに任意に組み合わされてもよい。
【0013】
(実施の形態1)
図1は、実施の形態1に係る半導体装置100において、主要部の構成例を示す概略図である。構成について説明する。
図1に示す半導体装置100は、例えば、一つの半導体チップで構成されるMCU(Micro Controller Unit)等である。
図1に示す半導体装置100は、処理部10と、起動制御部20と、スキャンテスト制御部30とを備える。
【0014】
処理部10は、第1のプロセッサコア11、第2のプロセッサコア12、比較部13を有する。以降、第1のプロセッサコア11はマスタコア11と称し、第2のプロセッサコア12はチェッカーコア12と称する。また、処理部10は、RAM(Random Access Memory)およびフラッシュメモリ等の内部メモリ(不図示)をさらに含む。内部メモリは、例えば、マスタコア11およびチェッカーコア12によって実行されるプログラムを格納する。
【0015】
マスタコア11は、内部メモリに格納された複数の命令(プログラム)を順次読み込み(フェッチし)、その命令に従い処理を実行する。例えば、マスタコア11は、命令に従った処理を実行することにより生成したデータを内部メモリに書き込んだり、内部メモリに格納されたデータを読み出したりする。また、マスタコア11は、命令に従った処理の結果を、バス(不図示)を介して周辺回路(不図示)に出力する。
【0016】
チェッカーコア12は、マスタコア11と同一の構成を有している。換言すれば、チェッカーコア12は、マスタコア11と冗長な構成を有している。
【0017】
処理部10は、マスタコア11とチェッカーコア12とからなるデュアルコア・ロックステップ構成を採用している。デュアルコア・ロックステップ構成とは、2つのプロセッサコアが同じ処理を実行し、それらの処理結果を比較することで不具合を検出する構成のことである。このように2つのプロセッサコアが同一の状態で動作している間、ロックステップ動作をしているという。本実施の形態では、入力データ信号DINおよびクロック信号CLKが、マスタコア11とチェッカーコア12に共通に入力される。本実施の形態のロックステップ動作において、マスタコア11の出力結果が周辺回路(不図示)に出力される。
【0018】
マスタコア11は、スキャンテストを実施するために、スキャンチェーン(第1のスキャンチェーン)110を備える。スキャンチェーン110は、nを2以上の整数として、n個のスキャンフリップフロップ111-11nを有する。チェッカーコア12も同様に、スキャンテストを実施するためにスキャンチェーン(第2のスキャンチェーン)120を備える。スキャンチェーン120もn個のスキャンフリップフロップ121-12nを有する。スキャンチェーン110とスキャンチェーン120は同一構成である。なお、
図1では、スキャンチェーンの経路のみが示されている。また、以降、スキャンフリップフロップはスキャンFFと称する。
【0019】
比較部13は、ロックステップ動作が開始されるときに有効化される。有効化された比較部13は、マスタコア11の出力とチェッカーコア12の出力とを比較する。マスタコア11およびチェッカーコア12の出力が一致していない場合、比較部13は、いずれかのプロセッサコアに故障が発生していることを示すエラー信号ERRをアサートする。
【0020】
起動制御部20は、半導体装置100の電源投入を検出し、所定の期間、処理部10をリセット状態にするためのリセット信号RSTを出力する。リセット信号RSTは、処理部10のマスタコア11およびチェッカーコア12に共通に入力される。リセット信号RSTがアサートされると処理部10はリセット状態に設定される。一方、リセット信号RSTがネゲートされると処理部10のリセットが解除される。起動制御部20は、ステートマシンを有し、処理部10のロックステップ動作を開始するためのリセット解除前に、スキャンテスト制御部30に初期化用スキャン要求INI_REQを出力する。
【0021】
スキャンテスト制御部30は、半導体装置100の外部または内部からのスキャンテスト要求(不図示)を受けて、マスタコア11およびチェッカーコア12のスキャンテストを制御する。具体的には、スキャンテスト制御部30は、スキャンチェーン110、120の動作モードを設定するスキャンモード信号SMを生成する。また、スキャンテスト制御部30は、スキャンテストパタンSIを生成するパタン生成回路(不図示)を有し、スキャンチェーン110、120に共通に入力する。さらに、スキャンテスト制御部30は、マスタコア11およびチェッカーコア12のスキャンテストの出力結果SO1、SO2と期待値とを比較して、故障を検出する検出回路(不図示)を有する。マスタコア11およびチェッカーコア12の故障検出用スキャンテストは、一般的な故障検出用スキャンテストと同様に、スキャンイン動作、キャプチャ動作、スキャンアウト動作が順に行われる。
【0022】
上述のとおり、スキャンテスト制御部30は、起動制御部20から初期化用スキャン要求INI_REQを受ける。スキャンテスト制御部30は、初期化用スキャン要求INI_REQに基づいて、マスタコア11およびチェッカーコア12の初期化用スキャンテスト動作を制御する。
【0023】
続いて、
図2を参照して、半導体装置100の起動制御方法を説明する。
図2は、半導体装置100の起動制御方法を示すフローチャートである。
【0024】
半導体装置100に電源が投入されると、起動制御部20は、所定の期間、リセット信号RSTをアサートする(ステップS1)。アサートされたリセット信号RSTは、処理部10、すなわち、マスタコア11およびチェッカーコア12に供給され、マスタコア11およびチェッカーコア12がリセット状態となる。所定の期間経過後、起動制御部20は、リセット信号RSTをネゲートしてリセットを解除し(ステップS2)、初期化用スキャン要求INI_REQを出力する(ステップS3)。スキャンテスト制御部30は、初期化用スキャン要求INI_REQを受けて、初期化用スキャンテスト動作を実行する(ステップS4)。
【0025】
初期化用スキャンテスト動作について詳細に説明する。スキャンテスト制御部30は、初期化用スキャン要求INI_REQを受けると、スキャンイン動作を行う。このスキャンイン動作のために、スキャンテスト制御部30は、スキャンシフトモードを示すスキャンモード信号SMと、初期化用スキャンテスト動作のための初期化用パタンSIとを出力する。これによって、スキャンチェーン110、120に、初期化用パタンSIがスキャンインされる。
【0026】
次に、スキャンテスト制御部30は、キャプチャ動作を行う。キャプチャ動作を行うために、スキャンテスト制御部30は、スキャンモード信号SMを切り替える。キャプチャ動作では、通常動作と同様に、スキャンFF間の組合せ回路(不図示)が動作する。これにより、マスタコア11の内部状態と、チェッカーコア12の内部状態とを一致させることができる。キャプチャ動作が完了すると、スキャンテスト制御部30は、起動制御部20に初期化用スキャンテスト動作完了通知INI_ACKを出力する。
【0027】
起動制御部20は、初期化用スキャンテスト動作完了通知INI_ACKを受け取ると、再度リセット信号RSTをアサートし、処理部10をリセット状態に設定する(ステップS5)。このとき、例えば、マスタコア11およびチェッカーコア12が有するプログラムカウンタの初期化、タイマや入出力ポートの初期化が行われる。その後、起動制御部20はリセット信号RSTをネゲートして、処理部10のリセットを解除する(ステップS6)。続いて、比較部13が有効化される(ステップS7)。例えば、比較部13のイネーブル信号(不図示)がアサートされることにより実現される。そして、マスタコア11およびチェッカーコア12に共通にクロック信号CLKが供給され、ロックステップ動作が開始される(ステップS8)。
【0028】
本実施の形態にかかる半導体装置100は、電源投入後、ロックステップ動作の開始前に、初期化用スキャンテスト動作を実行する。初期化用スキャンテスト動作におけるスキャンイン動作において、マスタコア11のスキャンチェーン110とチェッカーコア12のスキャンチェーン120に同一のパタンがスキャンインされる。この状態で、キャプチャ動作を行うことによって、マスタコア11とチェッカーコア12の内部状態を一致させることができる。
【0029】
マスタコア11およびチェッカーコア12は、リセット機能を持たない記憶素子を含む。これらリセット機能を持たない記憶素子は、電源投入後のリセットに応じて初期化することができない。しかしながら、本実施の形態によれば、各コアのスキャンチェーンに同一のパタンを設定し、キャプチャ動作を行う。これにより、リセット機能を持たない記憶素子にも値を設定することができる。したがって、コアの内部回路の複雑さに関わらず、マスタコア11とチェッカーコア12内の記憶素子の記憶内容を一致させることができる。
【0030】
また、本実施の形態における初期化用スキャンテスト動作は、マスタコア11およびチェッカーコア12がそれぞれ有する記憶素子の記憶内容を一致させればよいため、一般的な故障検出用スキャンテストで行われるスキャンアウト動作は省略できる。また、本実施の形態における初期化用スキャンテスト動作は、故障検出用のスキャンテストを実行するためのテストパタンに比べて短いパタンでよい。したがって、初期化用スキャンテスト動作は短時間で実行可能である。すなわち、ロックステップ動作開始前にマスタコア11およびチェッカーコア12の内部状態を一致させるための処理時間を短縮することができる。
【0031】
なお、本実施の形態において、初期化用スキャンテスト動作は、各コアの故障検出用スキャンテストを実行するために予め設けられているスキャンチェーンを利用する。したがって、各コアの内部状態を一致するために新たな回路を設ける必要はない。すなわち、回路規模を増大することなく、各コアの内部状態を一致させることができる。
【0032】
(実施の形態2)
次に、実施の形態2について説明する。実施の形態2では、実施の形態1に係る半導体装置100の別の形態となる半導体装置100aについて説明する。
図3は、実施の形態2に係る半導体装置100aにおいて、主要部の構成例を示す概略図である。
図3に示される構成例は、
図1に示した構成例と比較して、次の2点が異なっている。1点目の相違点は、クロック制御部40をさらに備える点である。2点目の相違点は、処理部10が処理部10aに置き換えられているという点である。処理部10aは、入力制御部14をさらに備える点で、実施の形態1で説明した処理部(
図1参照)と異なる。これ以外の構成および動作については、実施の形態1で説明した半導体装置100と同様であるので、同一の構成については同一の符号を付し、繰り返しの説明は省略する。
【0033】
図3に示されるように、半導体装置100aは、クロック制御部40を備える。クロック制御部40は、マスタコア11およびチェッカーコア12にクロック信号CLKを供給するか否かを制御する。クロック制御部40は、起動制御部20からリセット信号RSTを受ける。クロック制御部40は、アサートされたリセット信号RSTが入力されると、クロックイネーブル信号CENをネゲートし、マスタコア11およびチェッカーコア12へのクロック供給を停止する。一方、リセットが解除されリセット信号RSTがネゲートされると、クロック制御部40は、クロックイネーブル信号CENをアサートし、マスタコア11およびチェッカーコア12へのクロック供給を開始する。
【0034】
処理部10aは、クロック遅延型デュアルコア・ロックステップ構成を採用している。処理部10aはマスタコア11、チェッカーコア12に加えて、入力制御部14を備える。入力制御部14は、クロックゲーティングセル(以降、CGCと称する)141、142、遅延回路143,144を有する。また、処理部10aは、実施の形態1の比較部13に代えて比較部13aを有する。
【0035】
CGC141は、クロック信号CLKを受信し、クロックイネーブル信号CENに基づいて、クロック信号CLKをマスタコア11に供給するか、または、クロック信号CLKの供給を停止する。CGC142は、クロックイネーブル信号CENdに基づいて、チェッカーコア12へのクロック信号CLKの供給を制御する。
【0036】
遅延回路143は、入力データ信号DINを所定クロックサイクル数分遅延させる。以降、遅延回路143によって遅延された入力データ信号DINを、入力データ信号DINdと称する。入力データ信号DINdは、チェッカーコア12に供給される。
【0037】
遅延回路144は、クロックイネーブル信号CENを所定クロックサイクル数分遅延させる。以降、遅延回路144によって遅延されたクロックイネーブル信号CENを、クロックイネーブル信号CENdと称する。クロックイネーブル信号CENdは、CGC142に供給される。
【0038】
このように、チェッカーコア12は、マスタコア11よりも遅れて入力データ信号DINを受信する。また、チェッカーコア12は、クロックイネーブル信号CENdによってマスタコア11より遅れてクロック信号CLKが供給される。すなわち、チェッカーコア12は、マスタコア11と同一の処理を、所定クロックサイクル数分遅れて実行する。チェッカーコア12の処理タイミングを遅延させることで、消費電力のピーク等を分散させることができる。
【0039】
次に、遅延回路143、144の構成について説明する。
図4は、本実施の形態に係る遅延回路143,144の構成の一例を示すブロック図である。
【0040】
遅延回路143は、複数のフリップフロップ(FF)1430-1434を含む。複数のフリップフロップ1430-1434は直列に接続され、クロック信号CLKをシフトクロックとするシフトレジスタとして機能する。本実施の形態では、遅延回路143は、入力データ信号DINを5クロックサイクル数分遅延させた入力データ信号DINdを出力する例を示すが、これに限定されない。
【0041】
遅延回路144は、複数のフリップフロップ(FF)1440-1444を含む。複数のフリップフロップ1440-1444は直列に接続され、クロック信号CLKをシフトクロックとするシフトレジスタとして機能する。本実施の形態において、遅延回路144は、クロックイネーブル信号CENを遅延回路143と同じクロックサイクル(5クロックサイクル)数分遅延したクロックイネーブル信号CENdを出力する。遅延回路144は、遅延回路143とほぼ同一の構成を有しているが、最終段のフリップフロップ1444がリセット機能付きフリップフロップである点で遅延回路143と異なる。リセット機能付きフリップフロップ1444は、起動制御部20が生成するリセット信号RSTによってリセットされる。
【0042】
図5は、本実施の形態に係る比較部13aの構成の一例を示すブロック図である。比較部13aは、遅延回路131aと比較回路132aとを含む。遅延回路131aは、マスタコア11の出力を、遅延回路143と同一のクロックサイクル数分遅延させる。遅延回路131aは、遅延回路143と同等の構成であればよい。比較部13aは、遅延回路131aによって遅延されたマスタコア11の出力と、チェッカーコア12の出力とを比較する。これによって、マスタコア11とチェッカーコア12の同一の処理に基づく出力を比較する。比較結果が一致を示していない場合、比較部13aは、いずれかのプロセッサコアに故障が発生していることを示すエラー信号ERRをアサートする。
【0043】
本実施の形態2にかかる半導体装置100aは、実施の形態1と同様に、マスタコア11およびチェッカーコア12がそれぞれ有するスキャンチェーンを利用して、ロックステップ動作を開始する前に、マスタコア11とチェッカーコア12の内部状態を一致させるための初期化用スキャンテスト動作を実行する。
【0044】
図6、7を参照して、本実施の形態2にかかる半導体装置100aの起動制御方法を説明する。
図6は、半導体装置100aの起動制御方法を示すフローチャートである。
図7は、半導体装置100aの起動制御時における内部波形の一例を示す波形図である。
【0045】
まず、半導体装置100aに電源が投入されると、起動制御部20は、所定の期間、リセット信号RSTをアサートする(ステップS10)。クロック制御部40は、アサートされたリセット信号RSTに応じて、クロックイネーブル信号CENをネゲートする。アサートされたリセット信号RSTは、処理部10a、すなわち、マスタコア11およびチェッカーコア12に供給され、マスタコア11およびチェッカーコア12はリセット状態となる。
【0046】
所定の期間経過後、起動制御部20は、リセット信号RSTをネゲートしてリセットを解除する(ステップS20)。リセット信号RSTがネゲートされると、クロック制御部40は、クロックイネーブル信号CENをアサートする。アサートされたクロックイネーブル信号CENに基づいて、CGC141,142がそれぞれ、マスタコア11およびチェッカーコア12へのクロック信号CLKの供給を開始する。
【0047】
続いて、起動制御部20は、初期化用スキャン要求INI_REQを出力する(ステップS30)。スキャンテスト制御部30は、初期化用スキャン要求INI_REQを受けて、初期化用スキャンテスト動作を実行する(ステップS40)。本実施の形態における初期化用スキャンテスト動作は、実施の形態1で説明した初期化用スキャンテスト動作と同様であるので、詳細な説明を省略する。スキャンテスト制御部30は、初期化用スキャンテスト動作が完了すると、起動制御部20に初期化用スキャンテスト動作完了通知INI_ACKを通知する。
【0048】
起動制御部20は、初期化用スキャンテスト動作完了通知INI_ACKを受けて、再度リセット信号RSTをアサートする(ステップS50)。
図7に示されるように、時刻T1においてリセット信号RSTがアサートされると、クロック制御部40は、クロックイネーブル信号CENをネゲートする。
図7において、アサートされた信号はハイレベルを示し、ネゲートされた信号はロウレベルを示すが、これに限定されない。CGC141は、ネゲートされたクロックイネーブル信号CENに基づいて、マスタコア11へのクロック信号CLKの供給を停止する。このとき、CGC142は、遅延回路144を介して、ネゲートされたクロックイネーブル信号CENdを受け取る。しかしながら、遅延回路144が有する複数のフリップフロップのうち最終段のフリップフロップ1444は、リセット機能付きフリップフロップである。したがって、
図7に示されるように、CGC142に供給されるクロックイネーブル信号CENdは、CGC141に供給されるクロックイネーブル信号CENと同一のタイミング(時刻T1)でネゲートされる。これによって、初期化用スキャンテスト動作開始から完了までに、マスタコア11およびチェッカーコア12に入力されるクロックの数を揃えることができる。すなわち、マスタコア11とチェッカーコア12間の内部状態が一致している状態が維持される。
【0049】
その後、起動制御部20はリセット信号RSTをネゲートして、リセットを解除する(ステップS60)。リセット解除に応じて、クロック制御部40は、クロックイネーブル信号CENをアサートする(
図7の時刻T2)。クロックイネーブル信号CENに基づいて、マスタコア11のクロック信号CLKの供給が開始される。また、クロックイネーブル信号CENの遅延信号(クロックイネーブル信号CENd)に基づいて、チェッカーコア12へのクロック信号CLKの供給が開始される(
図7の時刻T3)。続いて、比較部13aが有効化され(ステップS70)、ロックステップ動作が開始される(ステップS80)。
【0050】
このように、
図7では、クロック制御部40は、起動制御部20が初期化用スキャンテスト動作を実行後に出力するリセット信号RSTに応じてクロックイネーブル信号CENをリセットする。詳細には、クロック制御部40は、リセット信号RSTのアサート/ネゲートに応じて、クロックイネーブル信号CENをネゲート/アサートする。また、遅延回路144は、リセット信号RSTに基づいてクロックイネーブル信号CENdをリセットする。詳細には、遅延回路144は、リセット信号RSTのアサートに応じてクロックイネーブル信号CENdをネゲートし、リセット信号RSTのネゲートから所定サイクル数分遅延後にクロックイネーブル信号CENdをアサートする。
【0051】
本実施の形態では、マスタコア11およびチェッカーコア12間で、初期化用スキャンテスト動作において供給されるクロック数を同一にするために、遅延回路144の最終段フリップフロップをリセット機能付きフリップフロップで構成する。初期化用スキャンテスト動作における各コアに供給されるクロック数を同一にするためだけであれば、遅延回路144に含まれるすべてのフリップフロップをリセット機能付きフリップフロップで構成することも可能である。この場合、リセットを解除したときに遅延回路144から出力されるクロックイネーブル信号CENdが不定となる可能性がある。そのため、ロックステップ動作を開始する前に各コアに与えられるクロック数が異なり、結果、マスタコア11およびチェッカーコア12間でロックステップ動作開始時の記憶回路に設定されている値が一致しないかもしれない。しかしながら、本実施の形態では、遅延回路144の最終段フリップフロップ1444のみをリセット機能付きフリップフロップで構成しているため、リセットが解除されると、フリップフロップ1444は、前段のフリップフロップ1443が出力している値を取り込み、出力する(
図7、時刻T2参照)。したがって、リセット解除時にクロックイネーブル信号CENdが不定になることはない。
【0052】
実施の形態2によれば、クロック遅延型デュアルロックステップ構成を採用する処理部10aであっても、処理部内の二つのコアの初期化用スキャンテスト動作を実施することによって、ロックステップ動作開始前の各コアの内部状態を一致させることができる。
【0053】
実施の形態2では、遅延回路144の最終段のフリップフロップ1444のみリセット機能付きフリップフロップで構成するとしたが、リセットを解除したときに遅延回路144から出力されるクロックイネーブル信号CENdが不定とならなければ、遅延回路144内の複数のフリップフロップをリセット機能付きフリップフロップとしてもよい。
【0054】
なお、実施の形態1および2において、初期化用スキャンテスト動作は、スキャンイン動作およびキャプチャ動作を含むと説明した。初期化用スキャンテスト動作は故障検出を目的としていないため、スキャンアウト動作は必須ではない。しかしながら、初期化用スキャンテスト動作において、キャプチャ動作に続いてスキャンアウト動作が実施されてもよい。
【0055】
また、半導体装置は、含まれるマスタコア11およびチェッカーコア12が同一の処理を実行するロックステップ動作モードに加えて、マスタコア11およびチェッカーコア12がそれぞれ異なる処理を実行するフリーステップ動作モードを有していてもよい。フリーステップ動作モードからロックステップ動作モードに切り替えるときに、二つのプロセッサコアの内部状態を一致させるために、本実施の形態で説明した初期化用スキャンテスト動作を行ってもよい。
【0056】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【0057】
11,12…プロセッサコア、20…起動制御部、30…スキャンテスト制御部、100…半導体装置、110,120…スキャンチェーン、141,142…クロックゲーティングセル、143,144…遅延回路、CEN,CENd…クロックイネーブル信号、FF…フリップフロップ、INI_ACK…初期化用スキャンテスト動作完了通知、INI_REQ…初期化用スキャン要求、RST…リセット信号