(57)【要約】  パワーゲーティング制御信号に応じて論理回路に電源電圧を供給するためのパワーゲーティング回路及びクランプ制御信号に応じて前記論理回路の出力信号をクランプするための第１のクランプ回路（２０４）を有する設計データを準備する準備ステップと、前記設計データを検証するために、前記設計データに対して、前記パワーゲーティング回路の代わりに、前記パワーゲーティング制御信号に応じて前記論理回路の出力信号をマスクするための第１のマスク回路（５０１，５０２）を追加した設計データを生成する生成ステップとを有することを特徴とする半導体集積回路の設計方法が提供される。
2008126207.tif 000002
【特許請求の範囲】
【請求項１】
パワーゲーティング制御信号に応じて論理回路に電源電圧を供給するためのパワーゲーティング回路及びクランプ制御信号に応じて前記論理回路の出力信号をクランプするための第１のクランプ回路を有する設計データを準備する準備ステップと、
前記設計データを検証するために、前記設計データに対して、前記パワーゲーティング回路の代わりに、前記パワーゲーティング制御信号に応じて前記論理回路の出力信号をマスクするための第１のマスク回路を追加した設計データを生成する生成ステップと
を有することを特徴とする半導体集積回路の設計方法。
【請求項２】
前記第１のマスク回路は、前記パワーゲーティング制御信号に応じて前記論理回路の出力信号又はマスクデータを選択して前記第１のクランプ回路に出力する第１のセレクタを有することを特徴とする請求項１記載の半導体集積回路の設計方法。
【請求項３】
前記第１のクランプ回路は、前記論理回路の出力信号及び前記クランプ制御信号の論理積信号を出力する第１の論理積回路を有することを特徴とする請求項１記載の半導体集積回路の設計方法。
【請求項４】
前記準備ステップは、さらに前記クランプ制御信号に応じて第１の論理信号をクランプして前記論理回路に出力するための第２のクランプ回路を有する設計データを準備することを特徴とする請求項１記載の半導体集積回路の設計方法。
【請求項５】
前記生成ステップは、さらに前記パワーゲーティング制御信号に応じて前記論理回路の入力信号をマスクするための第２のマスク回路を追加した設計データを生成することを特徴とする請求項４記載の半導体集積回路の設計方法。
【請求項６】
前記第２のマスク回路は、前記パワーゲーティング制御信号に応じて前記第２のクランプ回路の出力信号又はマスクデータを選択して前記論理回路に出力する第２のセレクタを有することを特徴とする請求項５記載の半導体集積回路の設計方法。
【請求項７】
前記第２のクランプ回路は、前記第１の論理信号及び前記クランプ制御信号の論理積信号を出力する第２の論理積回路を有することを特徴とする請求項４記載の半導体集積回路の設計方法。
【請求項８】
さらに、前記生成ステップにより生成された設計データを基にハードウェアエミュレータ又はＦＰＧＡ（Field Programmable Gate Array）により動作検証する検証ステップを有することを特徴とする請求項１記載の半導体集積回路の設計方法。
【請求項９】
パワーゲーティング制御信号に応じて論理回路に電源電圧を供給するためのパワーゲーティング回路及びクランプ制御信号に応じて前記論理回路の出力信号をクランプするための第１のクランプ回路を有する設計データを準備する準備ステップと、
前記設計データを検証するために、前記設計データに対して、前記パワーゲーティング制御信号及び前記クランプ制御信号を基にエラーを検出するためのエラー検出回路を追加した設計データを生成する生成ステップと
を有することを特徴とする半導体集積回路の設計方法。
【請求項１０】
前記第１のクランプ回路は、前記論理回路の出力信号及び前記クランプ制御信号の論理積信号を出力する第１の論理積回路を有することを特徴とする請求項９記載の半導体集積回路の設計方法。
【請求項１１】
前記準備ステップは、さらに前記クランプ制御信号に応じて第１の論理信号をクランプして前記論理回路に出力するための第２のクランプ回路を有する設計データを準備することを特徴とする請求項９記載の半導体集積回路の設計方法。
【請求項１２】
前記第２のクランプ回路は、前記第１の論理信号及び前記クランプ制御信号の論理積信号を出力する第２の論理積回路を有することを特徴とする請求項１１記載の半導体集積回路の設計方法。
【請求項１３】
さらに、前記生成ステップにより生成された設計データを基にハードウェアエミュレータ又はＦＰＧＡ（Field Programmable Gate Array）により動作検証する検証ステップを有することを特徴とする請求項９記載の半導体集積回路の設計方法。
【請求項１４】
パワーゲーティング制御信号に応じて論理回路に供給する電源電圧値を制御するためのパワーゲーティング回路及び前記論理回路の出力信号をレベルシフトすることにより前記論理回路の出力信号のレベルとは異なるレベルの信号を出力する第１のレベルシフト回路を有する設計データを準備する準備ステップと、
前記設計データを検証するために、前記設計データに対して、前記パワーゲーティング回路の代わりに、前記パワーゲーティング制御信号に応じた前記電源電圧値が動作可能電圧であるか否かを比較するための比較回路及び前記比較回路の比較結果に応じて前記論理回路の出力信号をマスクするための第１のマスク回路を追加した設計データを生成する生成ステップと
を有することを特徴とする半導体集積回路の設計方法。
【請求項１５】
前記準備ステップは、さらにクランプ制御信号に応じて前記論理回路の出力信号をクランプするための第１のクランプ回路を有する設計データを準備することを特徴とする請求項１４記載の半導体集積回路の設計方法。
【請求項１６】
前記第１のマスク回路は、前記比較回路の比較結果に応じて前記論理回路の出力信号又はマスクデータを選択して前記第１のレベルシフト回路に出力する第１のセレクタを有することを特徴とする請求項１４記載の半導体集積回路の設計方法。
【請求項１７】
前記第１のクランプ回路は、前記論理回路の出力信号及び前記クランプ制御信号の論理積信号を出力する第１の論理積回路を有することを特徴とする請求項１５記載の半導体集積回路の設計方法。
【請求項１８】
前記準備ステップは、さらに第１の論理信号をレベルシフトすることにより前記第１の論理信号のレベルとは異なるレベルの信号を前記論理回路に出力する第２のレベルシフト回路を有する設計データを準備することを特徴とする請求項１４記載の半導体集積回路の設計方法。
【請求項１９】
前記生成ステップは、さらに前記比較回路の比較結果に応じて前記論理回路の入力信号をマスクするための第２のマスク回路を追加した設計データを生成することを特徴とする請求項１８記載の半導体集積回路の設計方法。
【請求項２０】
さらに、前記生成ステップにより生成された設計データを基にハードウェアエミュレータ又はＦＰＧＡ（Field Programmable Gate Array）により動作検証する検証ステップを有することを特徴とする請求項１４記載の半導体集積回路の設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の設計方法に関し、特に複数の電源ブロックに分けられたＬＳＩの電源制御をハードウェアエミュレータやＦＰＧＡを用いて検証するための設計データを生成する設計方法に関する。
【背景技術】
【０００２】
近年、複数の電源ブロックに分けられたＬＳＩ（半導体集積回路）が開発されている。特定の電源ブロックの電源オン／オフ制御や、ＤＶＦＳ（Dynamic Voltage and Frequency Scaling）制御を行うことによりＬＳＩの低消費電力化を図ることができる。ＤＶＦＳ制御は、電源電圧及び動作周波数を動的に制御する。【０００３】
しかし、電源電圧の変更や電源電圧のオン／オフ制御に伴う製品不具合も多く発生しており、検証技術の強化が望まれている。これらのＬＳＩにおける障害の多くは、ソフトウェアとハードウェアの両方の動作がからみあった動作が原因となる場合が多いことが分かってきている。【０００４】
ところが、現時点において、電源管理制御に関する検証はソフトウェアシミュレータによってなされる場合がほとんどであり、シミュレーション実行時間の観点から、実際の電源管理アプリケーション等のソフトウェアのデバッグが適切に行えないという問題がある。【０００５】
そのため、シミュレーションよりも高速で検証可能なハードウェアエミュレータやＦＰＧＡ（Field Programmable Gate Array）で電源管理制御を検証する手法が必要となってくる。既存のハードウェアエミュレータは、ＦＰＧＡや専用のプロセッサにより構成されており、特定の論理ブロックの電源電圧のオン／オフや、電源電圧の動的変更を行うことはできず、ハードウェアエミュレータやＦＰＧＡによる電源管理制御の高速検証手法が確立されていないという問題がある。【０００６】
このような問題を解決しようとするエミュレータによる検証手法について、下記の特許文献１が開示されている。しかし、電源電圧をモニタすることができるエミュレータが存在することを前提としたものであり、現時点でこのようなエミュレータやＦＰＧＡが存在しなければ、直接的な解決策とはなっていないと考えられる。【０００７】
【特許文献１】特開２００６−３１４０８号公報
【発明の開示】
【０００８】
本発明の目的は、電源電圧のオン／オフ制御又は動的変更の際の動作をハードウェアエミュレータ又はＦＰＧＡにより検証することができる半導体集積回路の設計方法を提供することである。
【０００９】
本発明の半導体集積回路の設計方法は、パワーゲーティング制御信号に応じて論理回路に電源電圧を供給するためのパワーゲーティング回路及びクランプ制御信号に応じて前記論理回路の出力信号をクランプするための第１のクランプ回路を有する設計データを準備する準備ステップと、前記設計データを検証するために、前記設計データに対して、前記パワーゲーティング回路の代わりに、前記パワーゲーティング制御信号に応じて前記論理回路の出力信号をマスクするための第１のマスク回路を追加した設計データを生成する生成ステップとを有することを特徴とする。
【００１０】
また、本発明の半導体集積回路の設計方法は、パワーゲーティング制御信号に応じて論理回路に電源電圧を供給するためのパワーゲーティング回路及びクランプ制御信号に応じて前記論理回路の出力信号をクランプするための第１のクランプ回路を有する設計データを準備する準備ステップと、前記設計データを検証するために、前記設計データに対して、前記パワーゲーティング制御信号及び前記クランプ制御信号を基にエラーを検出するためのエラー検出回路を追加した設計データを生成する生成ステップとを有することを特徴とする。
【００１１】
また、本発明の半導体集積回路の設計方法は、パワーゲーティング制御信号に応じて論理回路に供給する電源電圧値を制御するためのパワーゲーティング回路及び前記論理回路の出力信号をレベルシフトすることにより前記論理回路の出力信号のレベルとは異なるレベルの信号を出力する第１のレベルシフト回路を有する設計データを準備する準備ステップと、前記設計データを検証するために、前記設計データに対して、前記パワーゲーティング回路の代わりに、前記パワーゲーティング制御信号に応じた前記電源電圧値が動作可能電圧であるか否かを比較するための比較回路及び前記比較回路の比較結果に応じて前記論理回路の出力信号をマスクするための第１のマスク回路を追加した設計データを生成する生成ステップとを有することを特徴とする。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の第１の実施形態の半導体集積回路の設計方法により設計するＬＳＩの構成例を示すブロック図である。
【図２】図２は、図１の各回路ブロックの構成例を示す回路図である。
【図３】図３は、図２の回路ブロックの正常動作を説明するためのタイミングチャートである。
【図４】図４は、図２の回路ブロックの誤動作を説明するためのタイミングチャートである。
【図５】図５は、ハードウェアエミュレータ又はＦＰＧＡで検証可能にするために、図２の回路ブロックを修正した回路ブロックの構成例を示す回路図である。
【図６】図６は、図５の回路ブロックの正常動作を説明するためのタイミングチャートである。
【図７】図７は、図５の回路ブロックの誤動作を説明するためのタイミングチャートである。
【図８】図８は、本発明の第２の実施形態による回路ブロックの構成例を示す回路図である。
【図９】図９は、図８の回路ブロックの誤動作を説明するためのタイミングチャートである。
【図１０】図１０は、本発明の第３の実施形態による各回路ブロックの構成例を示す回路図である。
【図１１】図１１は、図１０の回路ブロックの誤動作を説明するためのタイミングチャートである。
【図１２】図１２は、ハードウェアエミュレータ又はＦＰＧＡで検証可能にするために、図１０の回路ブロックを修正した回路ブロックの構成例を示す回路図である。
【図１３】図１３は、図１２の回路ブロックの誤動作を説明するためのタイミングチャートである。
【図１４】図１４は、本発明の第４の実施形態による回路ブロックの構成例を示す回路図である。
【図１５】図１５は、本発明の第５の実施形態による設計方法を実現するためのコンピュータのハードウェア構成例を示すブロック図である。
【図１６】図１６は、図１５のコンピュータに実行させるためのプログラムの処理例を示すフローチャートである。
【図１７】図１７は、図１５のコンピュータに実行させるためのプログラムの他の処理例を示すフローチャートである。
【発明を実施するための最良の形態】
【００１３】
（第１の実施形態）
図１は、本発明の第１の実施形態の半導体集積回路の設計方法により設計するＬＳＩ（大規模集積回路）１００の構成例を示すブロック図である。ＬＳＩ１００は、第１のＣＰＵ（中央処理ユニット）１０１、第２のＣＰＵ１０２、バスコンポーネント又は周辺モジュール１０３、オーディオ回路１０４、ビデオ回路１０５、カードインターフェース１０６、ボイスコーデック回路１０７、及び電源管理（パワーマネージメント）ユニット１１０を有する。バスコンポーネント又は周辺モジュール１０３は、オンチップバス（ＯＣＢ）、メモリコントローラ又はクロックジェネレータ等である。回路ブロック１０１〜１０７は、それぞれ論理回路を有する。電源管理ユニット１１０は、回路ブロック１０１〜１０７毎に電源電圧のオン／オフを制御し、ＣＰＵ１０１及び１０２毎にＤＶＦＳ（Dynamic Voltage and Frequency Scaling）制御を行うことにより、ＬＳＩ１００の低消費電力化を図ることができる。ＤＶＦＳ制御は、電源電圧及び動作周波数を動的に制御する。【００１４】
図２は、図１の各回路ブロック１０１〜１０７の構成例を示す回路図である。電源管理ユニット１１０は、回路ブロック１０１〜１０７毎にパワーゲーティング制御信号ＰＧＣ及びクランプ制御信号ＣＣＳを出力する。パワーゲーティング回路（セル）２０１は、ｎチャネル電界効果トランジスタであり、ゲートがパワーゲーティング制御信号ＰＧＣに接続され、ドレインが電源電圧Ｖｄｄに接続され、ソースが論理回路（ロジックブロック）２０２に接続される。パワーゲーティング回路２０１は、パワーゲーティング制御信号ＰＧＣに応じて論理回路２０２に電源電圧を供給する。なお、パワーゲーティング回路２０１は、ｐチャネル電界効果トランジスタで構成してもよい。【００１５】
クランプ回路（セル）２０３は、クランプ制御信号ＣＣＳに応じて論理信号ＳＡをクランプし、論理信号ＳＢを論理回路２０２に出力する。具体的には、クランプ回路２０３は、論理信号ＳＡ及びクランプ制御信号ＣＣＳの論理積信号ＳＢを論理回路２０２に出力する論理積（ＡＮＤ）回路を有する。【００１６】
クランプ回路（セル）２０４は、クランプ制御信号ＣＣＳに応じて論理回路２０２の出力論理信号ＳＣをクランプし、論理信号ＳＤを出力する。具体的には、クランプ回路２０４は、論理回路２０２の出力論理信号ＳＣ及びクランプ制御信号ＣＣＳの論理積信号ＳＤを出力する。【００１７】
図３は、図２の回路ブロックの正常動作を説明するためのタイミングチャートである。パワーゲーティング制御信号ＰＧＣがハイレベルになると、パワーゲーティング回路２０１がオンし、電源電圧Ｖｄｄが論理回路２０２に供給され、論理回路２０２が動作可能になる。これに対し、パワーゲーティング制御信号ＰＧＣがローレベルになると、パワーゲーティング回路２０１がオフし、電源電圧Ｖｄｄが論理回路２０２に供給されず、論理回路２０２は動作停止状態となり、消費電力を低減することができる。【００１８】
クランプ制御信号ＣＣＳは、パワーゲーティング制御信号ＰＧＣに応じて制御される。最初、クランプ制御信号ＣＣＳ及びパワーゲーティング制御信号ＰＧＣはハイレベルである。【００１９】
まず、電源電圧をオンからオフに制御する場合を説明する。まず、クランプ制御信号ＣＣＳがハイレベルからローレベルに変化し、その後に、パワーゲーティング制御信号ＰＧＣがハイレベルからローレベルに変化する。【００２０】
次に、電源電圧をオフからオンに制御する場合を説明する。まず、パワーゲーティング制御信号ＰＧＣがローレベルからハイレベルに変化し、その後に、クランプ制御信号ＣＣＳがローレベルからハイレベルに変化する。【００２１】
論理信号ＳＢは、クランプ制御信号ＣＣＳがローレベルのときにはローレベルになり、クランプ制御信号ＣＣＳがハイレベルのときには論理信号ＳＡと同じ信号になる。【００２２】
論理信号ＳＣは、パワーゲーティング制御信号ＰＧＣがローレベルのときには論理回路２０２に電源電圧Ｖｄｄが供給されないので、ハイインピーダンス状態ＨＺになる。【００２３】
論理信号ＳＤは、クランプ制御信号ＣＣＳがローレベルのときにはローレベルになり、クランプ制御信号ＣＣＳがハイレベルのときには論理信号ＳＣと同じ信号になる。制御信号ＳＣがハイインピーダンス状態ＨＺのときには、クランプ制御信号ＣＣＳがローレベルであるので、制御信号ＳＤはハイインピーダンス状態ＨＺにはならずにローレベルにクランプされる。すなわち、クランプ制御ＣＣＳに応じて論理信号ＳＣをクランプすることにより、論理信号ＳＣのハイインピーダンス状態ＨＺは後段の論理信号ＳＤに伝播されない。【００２４】
以上のように、回路ブロックの電源をオフにする場合には、電源をオフする前に、入力信号ＳＡ及び出力信号ＳＣについて、クランプ回路２０３及び２０４でクランプしてから電源オフを行う。そして、電源オフ状態から電源オン状態にする際には、その逆の手順を踏んで、まず電源をオンにしてからクランプセル２０３及び２０４によるクランプを解除する。こうすることで、論理回路２０２が電源オフとなっている場合に、その回路ブロックから出力されるハイインピーダンス状態（中間電位又は０Ｖ）ＨＺの不定値伝播による誤動作及び意図しないリーク電流が流れることを防止できる。なお、論理回路２０２をＣＭＯＳで構成し、全入力信号を通常のバッファやインバータ等で受けている場合には、論理信号ＳＡをクランプするクランプ回路２０３は省略しても問題ない。また、クランプ回路２０３及び２０４は、論理積回路に限定されず、論理和（ＯＲ）回路又はラッチ回路であってもよい。【００２５】
図４は、図２の回路ブロックの誤動作を説明するためのタイミングチャートであり、回路ブロックの電源供給のオン／オフ制御する際に、クランプ制御信号ＣＣＳとパワーゲーティング制御信号ＰＧＣとの関係を誤った場合に生じる障害事例を示す。本来、図３のように、パワーゲーティング制御信号ＰＧＣがローレベルからハイレベルに変化した後、クランプ制御信号ＣＣＳをローレベルからハイレベルに変化させなければならない。しかし、図４のように、誤って、パワーゲーティング制御信号ＰＧＣがローレベルからハイレベルに変化する前に、クランプ制御信号ＣＣＳをローレベルからハイレベルに変化させてしまった場合を説明する。論理信号ＳＣは、パワーゲーティング制御信号ＰＧＣがローレベルのときにはハイインピーダンス状態ＨＺとなる。ここで、論理信号ＳＤのタイミング４０１では、論理信号ＳＣがハイインピーダンス状態ＨＺであり、かつクランプ制御信号ＣＣＳがハイレベルであるので、論理信号ＳＤがハイインピーダンス状態ＨＺになってしまう。論理信号ＳＤにハイインピーダンス状態ＨＺが伝播されてしまうと、論理信号ＳＤを使用する後段の回路で誤動作を引き起こしてしまう。【００２６】
以上のように、回路ミスやソフトウェアによるミスで、電源オフ状態から電源オン状態にする際に、電源をオンする前にクランプ回路２０３及び２０４によるクランプを解除してしまうと、論理信号ＳＤに現れるハイインピーダンス状態ＨＺ（中間電位又は０Ｖ）の信号が伝播し、これが誤動作を引き起こしてしまうという障害が発生し得る。【００２７】
しかし、このようなハイインピーダンス状態ＨＺはハードウェアエミュレータ及びＦＰＧＡでは表現できないため、このような信号による誤動作をハードウェアエミュレータ又はＦＰＧＡにより検出できないという問題がある。【００２８】
図５は、ハードウェアエミュレータ又はＦＰＧＡで検証可能にするために、図２の回路ブロックを修正した回路ブロックの構成例を示す回路図である。図５は、図２の回路ブロックに対して、パワーゲーティング回路２０１を削除し、パワーゲーティング回路２０１の代わりにマスク論理回路５０１，５０３及びセレクタ５０２，５０４を追加したものである。以下、図５が図２と異なる点を説明する。マスク論理回路５０１及び５０３は、例えばハイレベル固定のマスクデータを出力する。【００２９】
セレクタ５０２は、パワーゲーティング制御信号ＰＧＣに応じてマスク論理回路５０１が出力するマスクデータ又はクランプ回路２０３が出力する論理信号ＳＢを選択して論理回路２０２に出力する。すなわち、セレクタ５０２は、パワーゲーティング制御信号ＰＧＣに応じて論理回路２０２の入力信号をマスクするためのマスク回路である。【００３０】
セレクタ５０４は、パワーゲーティング制御信号ＰＧＣに応じてマスク論理回路５０３が出力するマスクデータ又は論理回路２０２が出力する論理信号を選択して論理信号ＳＣとしてクランプ回路２０４に出力する。すなわち、セレクタ５０４は、パワーゲーティング制御信号ＰＧＣに応じて論理回路２０２の出力信号をマスクするためのマスク回路である。【００３１】
図６は、図５の回路ブロックの正常動作を説明するためのタイミングチャートである。セレクタ５０２は、パワーゲーティング制御信号ＰＧＣがハイレベルのときにはクランプ回路２０３の出力論理信号ＳＢを選択し、パワーゲーティング制御信号ＰＧＣがローレベルのときにはマスク論理回路５０１の出力マスクデータ（例えばハイレベル）を選択し、論理回路２０２に出力する。セレクタ５０４は、パワーゲーティング制御信号ＰＧＣがハイレベルのときには論理回路２０２の出力論理信号を選択し、パワーゲーティング制御信号ＰＧＣがローレベルのときにはマスク論理回路５０３の出力マスクデータ（例えばハイレベル）を選択し、クランプ回路２０４に出力する。【００３２】
クランプ制御信号ＣＣＳ、パワーゲーティング制御信号ＰＧＣ及び論理信号ＳＢは、図３と同じである。【００３３】
論理信号ＳＣは、パワーゲーティング制御信号ＰＧＣがハイレベルのときには論理回路２０２の出力論理信号と同じ信号になり、パワーゲーティング制御信号ＰＧＣがローレベルのときにはマスクデータ（例えばハイレベル）と同じ信号になる。すなわち、図３のハイインピーダンス状態ＨＺは、図６ではマスクデータ（例えばハイレベル）として表現される。【００３４】
論理信号ＳＤは、クランプ制御信号ＣＣＳがローレベルのときにはローレベルになり、クランプ制御信号ＣＣＳがハイレベルのときには論理信号ＳＣと同じ信号になる。制御信号ＳＣがマスクデータ（例えばハイレベル）のときには、クランプ制御信号ＣＣＳがローレベルであるので、制御信号ＳＤはマスクデータ（例えばハイレベル）にはならずにローレベルにクランプされる。すなわち、クランプ制御ＣＣＳに応じて論理信号ＳＣをクランプすることにより、論理信号ＳＣのマスクデータ（例えばハイレベル）は後段の論理信号ＳＤに伝播されない。【００３５】
図７は、図５の回路ブロックの誤動作を説明するためのタイミングチャートであり、回路ブロックの電源供給のオン／オフ制御する際に、クランプ制御信号ＣＣＳとパワーゲーティング制御信号ＰＧＣとの関係を誤った場合に生じる障害事例を示す。クランプ制御信号ＣＣＳ、パワーゲーティング制御信号ＰＧＣ及び論理信号ＳＢは、図４と同じである。【００３６】
論理信号ＳＣは、パワーゲーティング制御信号ＰＧＣがローレベルのときにはマスクデータ（例えばハイレベル）となり、パワーゲーティング制御信号ＰＧＣがハイレベルのときには論理回路２０２の出力論理信号と同じ信号になる。【００３７】
論理信号ＳＤのタイミング７０１では、論理信号ＳＣがマスクデータ（例えばハイレベル）であり、かつクランプ制御信号ＣＣＳがハイレベルであるので、論理信号ＳＤがマスクデータ（例えばハイレベル）と同じ信号になる。この状態をハードウェアエミュレータ又はＦＰＧＡが検出することにより、回路ブロックの誤動作（設計ミス）を検出可能になる。【００３８】
以上のように、ハードウェアエミュレータ及びＦＰＧＡでは、実際に図２のパワーゲーティング回路２０１を実現することはできないので、論理回路２０２の電源遮断（オフ）状態というのを、その論理回路２０２からの出力信号（又は入出力信号）を特定の値のマスクデータでマスクすることにより模擬する。セレクタ５０２及び５０４が、パワーゲーティング制御信号ＰＧＣに応じて、論理回路２０２への入出力信号をそのまま通過させるか、マスクデータでマスクした値にするかを選択する。電源遮断時には、マスクデータでマスクした値が選択されるようにする。もちろん、パワーゲーティング制御信号ＰＧＣをセレクト信号としてではなく、直接マスクデータとして使用することも可能である。これにより、図７のように、たとえクランプ制御信号ＣＣＳに制御ミスがあったとしても、論理回路２０２の出力信号ではなく、マスクデータを論理信号ＳＣとして出力するので、ハードウェアエミュレータ又はＦＰＧＡにおいても誤動作を検出可能となる。【００３９】
なお、論理回路２０２への入力信号側のマスク回路（マスク論理回路５０１及びセレクタ５０２を含む）については、省略可能である。また、マスク論理回路５０１及び５０３が出力するマスクデータは、ハイレベルに限定されず、ローレベル又は特定の変化する値でもよい。【００４０】
本実施形態によれば、検証のための回路ブロックの設計データを生成することにより、電源電圧のオン／オフ制御の際の動作が検証可能になる。また、ハードウェアエミュレータ又はＦＰＧＡにより検証することができるので、高速な検証が可能である。【００４１】
（第２の実施形態）
図８は、本発明の第２の実施形態による回路ブロックの構成例を示す回路図であり、ハードウェアエミュレータ又はＦＰＧＡで検証可能にするために、図２の回路ブロックを修正した回路ブロックの構成例を示す。図８は、図２の回路ブロックに対して、パワーゲーティング回路２０１を削除し、パワーゲーティング回路２０１の代わりにエラー条件検出回路８０１〜８０３、論理和（ＯＲ）回路８１１及びエラー記憶部８１２を追加したものである。以下、図８が図２と異なる点を説明する。【００４２】
第１のエラー条件検出回路８０１は、パワーゲーティング制御信号ＰＧＣ及びクランプ制御信号ＣＣＳを基に第１のエラー条件を満たすときにエラーを検出して出力する。第２のエラー条件検出回路８０２は、第２のエラー条件を満たすときにエラーを検出して出力する。第３のエラー条件検出回路８０３は、第３のエラー条件を満たすときにエラーを検出して出力する。論理和回路８１１は、エラー条件検出回路８０１〜８０３の出力信号の論理和信号をエラー検出信号ＥＲ１としてエラー記憶部８１２に出力する。エラー記憶部８１２は、エラー検出信号ＥＲ１がエラーを示すハイレベルになると、そのエラー状態をハイレベルとして保持してエラー検出信号ＥＲ２を出力する。【００４３】
図９は、図８の回路ブロックの誤動作を説明するためのタイミングチャートであり、回路ブロックの電源供給のオン／オフ制御する際に、クランプ制御信号ＣＣＳとパワーゲーティング制御信号ＰＧＣとの関係を誤った場合に生じる障害事例を示す。クランプ制御信号ＣＣＳ、パワーゲーティング制御信号ＰＧＣ及び論理信号ＳＢ，ＳＣ，ＳＤは、図４と同じである。【００４４】
第１のエラー条件検出回路８０１は、パワーゲーティング制御信号ＰＧＣ及びクランプ制御信号ＣＣＳを基にエラーを検出する。具体的には、第１のエラー条件検出回路８０１は、タイミング４０１のように、クランプ制御信号ＣＣＳがハイレベルであり、かつパワーゲーティング制御信号ＰＧＣがローレベルであるときにエラーを検出してハイレベルを出力し、それ以外のときにはローレベルを出力する。第１のエラー条件検出回路８０１の出力信号がエラー検出信号ＥＲ１となる。エラー検出信号ＥＲ２は、初期状態がローレベルであり、エラー検出信号ＥＲ１が一度ハイレベルになると、それ以後はエラー状態を示すハイレベルとなる。【００４５】
以上のように、本実施形態は、図２のクランプ回路２０３，２０４及び論理回路２０２の論理構成はそのままにして、パワーゲーティング制御信号ＰＧＣ及びクランプ制御信号ＣＣＳ等の特定の制御信号を用いて、エラー条件検出回路８０１〜８０３を追加するものである。エラー条件検出回路８０１〜８０３は、回路ブロックが誤動作を引き起こす可能性のある条件を検出する回路であればよい。例えば、エラー条件検出回路８０１は、クランプ制御信号ＣＣＳがハイレベルかつパワーゲーティング制御信号ＰＧＣがローレベルという条件をエラーとして検出する。そして、エラー条件検出回路８０１〜８０３が複数ある場合に、それらの検出結果を個別に、又は論理和回路８１１により集約したエラー検出信号ＥＲ１をエラー記憶部８１２に保持し、後に、エラーが発生したことを確認できるようにする。【００４６】
エラー条件検出回路８０１〜８０３及びエラー記憶部８１２は、予め回路中に冗長なテスト回路として設けておいてもよいし、ハードウェアエミュレータ又はＦＰＧＡに移植して検証する際に追加しても良い。また、エラー記憶部８１２の結果を読み出す方法としては、この結果を半導体チップ内のバスを介してＣＰＵ等により読み出せるようにしてもよいし、ハードウェアエミュレータ又はＦＰＧＡ向けにコンパイルする際に、エラー結果の読み出し用のインターフェース信号を追加してもよい。【００４７】
本実施形態によれば、検証のための回路ブロックの設計データを生成することにより、電源電圧のオン／オフ制御の際の動作が検証可能になる。また、ハードウェアエミュレータ又はＦＰＧＡにより検証することができるので、高速な検証が可能である。【００４８】
（第３の実施形態）
図１０は、本発明の第３の実施形態による各回路ブロック１０１〜１０７（図１）の構成例を示す回路図であり、図１１は図１０の回路ブロックの誤動作を説明するためのタイミングチャートである。図１０は、図２に対して、クランプ回路２０３及び２０４の代わりにレベルシフト機能付きクランプ回路１００３及び１００４を設けたものである。以下、図１０が図２と異なる点を説明する。【００４９】
パワーゲーティング回路２０１は、パワーゲーティング制御信号ＰＧＣに応じて論理回路２０２に供給する電源電圧値を制御する。例えば、パワーゲーティング回路２０１は、パワーゲーティング制御信号ＰＧＣが電圧Ｖ１になると論理回路２０２に１．２Ｖの電源電圧を供給し、パワーゲーティング制御信号ＰＧＣが電圧Ｖ２になると論理回路２０２に０．８Ｖの電源電圧を供給する。ここで、電圧Ｖ２は、電圧Ｖ１より低い電圧である。電圧Ｖ１及びＶ２は、０Ｖより高い電圧である。【００５０】
レベルシフト機能付きクランプ回路１００３は、クランプ回路及びレベルシフト回路を含む。クランプ回路１００３は、クランプ制御信号ＣＣＳに応じて論理信号ＳＡをクランプし、論理信号ＳＢを論理回路２０２に出力する。具体的には、クランプ回路１００３は、論理信号ＳＡ及びクランプ制御信号ＣＣＳの論理積信号ＳＢを論理回路２０２に出力する論理積回路を有する。また、クランプ回路（レベルシフト回路）１００３は、論理信号ＳＡをレベルシフトすることにより論理信号ＳＡのレベルとは異なるレベルの論理信号ＳＢを論理回路２０２に出力する。例えば、パワーゲーティング回路２０１が０．８Ｖの電源電圧を論理回路２０２に供給する場合、論理信号ＳＡはハイレベルが１．２Ｖ、ローレベルが０Ｖであり、論理信号ＳＢはハイレベルが０．８Ｖ、ローレベルが０Ｖである。この場合、クランプ回路１００３は、１．２Ｖから０．８Ｖへのレベルシフトを行う。【００５１】
レベルシフト機能付きクランプ回路１００４は、クランプ回路及びレベルシフト回路を含む。クランプ回路１００４は、クランプ制御信号ＣＣＳに応じて論理回路２０２の出力論理信号ＳＣをクランプして論理信号ＳＤを出力する。具体的には、クランプ回路１００４は、論理回路２０２の出力論理信号ＳＣ及びクランプ制御信号ＣＣＳの論理積信号ＳＤを出力する論理積回路を有する。また、クランプ回路（レベルシフト回路）１００４は、論理回路２０２の出力論理信号ＳＣをレベルシフトすることにより論理回路２０２の出力論理信号ＳＣのレベルとは異なるレベルの論理信号ＳＤを出力する。例えば、パワーゲーティング回路２０１が０．８Ｖの電源電圧を論理回路２０２に供給する場合、論理信号ＳＣはハイレベルが０．８Ｖ、ローレベルが０Ｖであり、論理信号ＳＤはハイレベルが１．２Ｖ、ローレベルが０Ｖである。この場合、クランプ回路１００４は、０．８Ｖから１．２Ｖへのレベルシフトを行う。【００５２】
図１１の誤動作を説明する。パワーゲーティング制御信号ＰＧＣが電圧Ｖ１のとき、パワーゲーティング回路２０１は１．２Ｖの電源電圧を論理回路２０２に供給する。また、パワーゲーティング制御信号ＰＧＣが電圧Ｖ２のとき、パワーゲーティング回路２０１は例えば０．６Ｖの電源電圧を論理回路２０２に供給するとする。ここで、論理回路２０２は、動作可能電圧が例えば０．８Ｖ以上であり、０．６Ｖの電源電圧では正常動作が保証されないとする。【００５３】
電圧Ｖ１及びＶ２は０Ｖより高い電圧であり、パワーゲーティング回路２０１は論理回路２０２に電源電圧を供給しているときには、クランプ制御信号ＣＣＳはハイレベルとなる。論理信号ＳＢは、クランプ制御信号ＣＣＳがハイレベルであるときには論理信号ＳＡと同じ信号になる。【００５４】
パワーゲーティング制御信号ＰＧＣが電圧Ｖ１であるときには、１．２Ｖの電源電圧が論理回路２０２に供給されるので、論理回路２０２は、正常な論理信号ＳＣを出力する。これに対し、パワーゲーティング制御信号ＰＧＣが電圧Ｖ２であるときには、０．６Ｖの電源電圧が論理回路２０２に供給されるので、正常な動作をせず、タイミング１１０１において論理回路２０２は不定値の論理信号ＳＣを出力する。論理信号ＳＤは、クランプ制御信号ＣＣＳがハイレベルのときには論理信号ＳＣと同じ信号になる。【００５５】
論理信号ＳＣの不定値が論理信号ＳＤに伝播してしまい、論理信号ＳＤを使用する後段の回路が誤動作を引き起こしてしまう問題が生ずる。ハードウェアエミュレータ及びＦＰＧＡは、このような不定値を表現できないので、上記の誤動作を検出できないという問題が生ずる。【００５６】
以上のように、回路ブロックの電源電圧値を変更する場合に、論理回路２０２が動作可能な電圧範囲から外れた電圧値に電源電圧を設定してしまった場合に誤動作が生じる。この場合、論理回路２０２に供給する電源電圧値を、電源管理ユニット１１０の指示により変更できる場合、例えば、論理回路２０２を構成する回路素子（組み合わせ回路、フリップフロップ等の順序回路、ＳＲＡＭ等のメモリ回路、その他アナログ回路等）が動作可能な電源電圧よりも供給電源電圧値を下げてしまった場合、論理回路２０２から出力される論理信号ＳＣは不定値となり、実際の回路では誤動作を生ずることとなる。【００５７】
しかし、ハードウェアエミュレータ及びＦＰＧＡは、論理回路２０２を実現する回路に常に一定の電源電圧を印加し続けるので、このような電源電圧低下による不定値を認識できず、誤動作を検出できないという問題がある。【００５８】
図１２は、ハードウェアエミュレータ又はＦＰＧＡで検証可能にするために、図１０の回路ブロックを修正した回路ブロックの構成例を示す回路図である。図１２は、図１０の回路ブロックに対して、パワーゲーティング回路２０１を削除し、パワーゲーティング回路２０１の代わりに電源電圧記憶部１２０１、動作可能電圧記憶部１２０２、比較回路１２０３、マスク論理回路１２０４，１２０６及びセレクタ１２０５，１２０７を追加したものである。以下、図１２が図１０と異なる点を説明する。【００５９】
電源電圧記憶部１２０１は、パワーゲーティング制御信号ＰＧＣに応じた電源電圧値を記憶する。例えば、パワーゲーティング制御信号ＰＧＣが電圧Ｖ１であれば電源電圧は１．２Ｖ、パワーゲーティング制御信号ＰＧＣが電圧Ｖ２であれば電源電圧は０．６Ｖである。動作可能電圧記憶部１２０２は、論理回路２０２の動作可能電圧を記憶する。例えば、論理回路２０２の動作可能電圧は、０．８Ｖ〜１．２Ｖである。比較回路１２０３は、電源電圧記憶部１２０１が記憶する電源電圧値が動作可能電圧記憶部１２０２が記憶する動作可能電圧であるか否かを比較し、比較結果を出力する。【００６０】
マスク論理回路１２０４及び１２０６は、例えばハイレベル固定のマスクデータを出力する。【００６１】
セレクタ１２０５は、比較回路１２０３の比較結果に応じてマスク論理回路１２０４が出力するマスクデータ又はクランプ回路１００３が出力する論理信号ＳＢを選択して論理回路２０２に出力する。すなわち、セレクタ１２０５は、比較回路１２０３の比較結果に応じて論理回路２０２の入力信号をマスクするためのマスク回路である。【００６２】
セレクタ１２０７は、比較回路１２０３の比較結果に応じてマスク論理回路１２０６が出力するマスクデータ又は論理回路２０２が出力する論理信号を選択して論理信号ＳＣとしてクランプ回路１００４に出力する。すなわち、セレクタ１２０７は、比較回路１２０３の比較結果に応じて論理回路２０２の出力信号をマスクするためのマスク回路である。【００６３】
図１３は、図１２の回路ブロックの誤動作を説明するためのタイミングチャートである。セレクタ１２０５は、電源電圧値が動作可能電圧であるときにはクランプ回路１００３の出力論理信号ＳＢを選択し、電源電圧値が動作可能電圧でないときにはマスク論理回路１２０４の出力マスクデータ（例えばハイレベル）を選択し、論理回路２０２に出力する。セレクタ１２０７は、電源電圧値が動作可能電圧であるときには論理回路２０２の出力論理信号を選択し、電源電圧値が動作可能電圧でないときにはマスク論理回路１２０６の出力マスクデータ（例えばハイレベル）を選択し、クランプ回路１００４に出力する。【００６４】
クランプ制御信号ＣＣＳ、パワーゲーティング制御信号ＰＧＣ及び論理信号ＳＡ，ＳＢは、図１１と同じである。【００６５】
論理信号ＳＣは、電源電圧値が動作可能電圧であるときには論理回路２０２の出力論理信号と同じ信号になり、電源電圧値が動作可能電圧でないときにはマスクデータ（例えばハイレベル）と同じ信号になる。すなわち、図１１のタイミング１１０１の不定値は、図１３のタイミング１３０１ではマスクデータ（例えばハイレベル）として表現される。【００６６】
論理信号ＳＤは、クランプ制御信号ＣＣＳがハイレベルのときには論理信号ＳＣと同じ信号になる。電源電圧値が動作可能電圧でないために生じる不定値をマスクデータとして表現し、マスクデータが論理信号ＳＣから論理信号ＳＤに伝播することにより、ハードウェアエミュレータ又はＦＰＧＡで誤動作を検出可能になる。【００６７】
以上のように、電源管理ユニット１１０から指示される供給電源電圧値を電源電圧記憶部（フリップ又はメモリ等）１２０１で記憶し、論理回路２０２が動作可能な電圧（最低電圧値及び／又は最高電圧値）を動作可能電圧記憶部（フリップフロップ又はメモリ等）１２０２で記憶する。比較回路１２０３は、供給電源電圧値と動作可能電圧とを比較する。この比較した結果、供給電源電圧が動作可能電圧でない場合には、セレクタ１２０５はマスクデータを論理回路２０２に出力し、セレクタ１２０６はマスクデータをクランプ回路１００４に出力する。もちろん、比較回路１２０３の比較結果出力信号をセレクト信号ではなく、直接マスクデータとして使用することも可能である。【００６８】
これにより、半導体チップ内の回路ブロックへの供給電源電圧値が不適切な値（動作不可能な電圧値）になった場合には、その論理回路２０２からの出力信号（又は入出力信号）をマスクデータでマスクすることにより、ハードウェアエミュレータ又はＦＰＧＡでこのような場合の誤動作を検出可能となる。【００６９】
なお、レベルシフト機能付きクランプ回路１００３及び１００４は、単にレベルシフト回路（クランプ機能なし）でもよい。【００７０】
本実施形態によれば、検証のための回路ブロックの設計データを生成することにより、電源電圧の動的変更の際の動作が検証可能になる。また、ハードウェアエミュレータ又はＦＰＧＡにより検証することができるので、高速な検証が可能である。【００７１】
（第４の実施形態）
図１４は、本発明の第４の実施形態による回路ブロックの構成例を示す回路図であり、ハードウェアエミュレータ又はＦＰＧＡで検証可能にするために、図１０の回路ブロックを修正した回路ブロックの構成例を示す。本実施形態は、第１〜第３の実施形態を組み合わせたものである。以下、図１４が図１２と異なる点を説明する。【００７２】
論理積回路１４０３は、比較回路１２０３の比較結果信号の論理反転信号とパワーゲーティング制御信号ＰＧＣとの論理積信号を出力する。セレクタ１２０５及び１２０７は、論理積回路１４０３の出力信号に応じて選択する。これにより、第１及び第３の実施形態による制御が可能である。【００７３】
また、エラー条件検出回路８０１〜８０３、論理和回路８１１及びエラー記憶部８１２の構成は、第２の実施形態（図８）と同じである。これにより、第２の実施形態による制御が可能である。【００７４】
以上のように、本実施形態は、第１〜第３の実施形態を組み合わせたものである。この場合、パワーゲーティング制御信号ＰＧＣがローレベルとなって電源オフとなった場合、又は供給電源電圧が動作可能電圧範囲外になって、比較回路１２０３の比較結果信号がハイレベルになった場合に、論理回路２０２の出力信号（又は入出力信号）をマスクする。【００７５】
これにより、論理回路２０２の電源がオフになった場合や、供給電源電圧値が動作不可能な電圧値に設定された場合に、論理信号ＳＤにマスクデータを伝播させるとともに、エラー条件検出回路８０１〜８０３により誤動作が発生したことを知ることができ、電源管理制御の検証をハードウェアエミュレータ又はＦＰＧＡで行うことが可能となる。【００７６】
なお、クランプ回路１００３及び１００４は、レベルシフト回路及びクランプ回路の各個別回路をシリアルに接続する構成であってもよい。【００７７】
本実施形態によれば、検証のための回路ブロックの設計データを生成することにより、電源電圧のオン／オフ制御及び動的変更の際の動作が検証可能になる。また、ハードウェアエミュレータ又はＦＰＧＡにより検証することができるので、高速な検証が可能である。【００７８】
（第５の実施形態）
図１５は、本発明の第５の実施形態による設計方法を実現するためのコンピュータ（設計装置）１５１０のハードウェア構成例を示すブロック図である。コンピュータ１５１０により、第１〜第４の実施形態の検証用回路ブロックの設計データを生成することができる。【００７９】
バス１５０１には、ＣＰＵ１５０２、ＲＯＭ１５０３、ＲＡＭ１５０４、ネットワークインターフェース１５０５、入力装置１５０６、出力装置１５０７及び外部記憶装置１５０８が接続されている。【００８０】
ＣＰＵ１５０２は、データの処理又は演算を行うと共に、バス１５０１を介して接続された各種構成要素を制御するものである。ＲＯＭ１５０３には、予めＣＰＵ１５０２の制御手順（コンピュータプログラム）を記憶させておき、このコンピュータプログラムをＣＰＵ１５０２が実行することにより、起動する。外部記憶装置１５０８にコンピュータプログラムが記憶されており、そのコンピュータプログラムがＲＡＭ１５０４にコピーされてＣＰＵ１５０２により実行される。ＲＡＭ１５０４は、データの入出力、送受信のためのワークメモリ、各構成要素の制御のための一時記憶として用いられる。外部記憶装置１５０８は、例えばハードディスク記憶装置やＣＤ−ＲＯＭ等であり、電源を切っても記憶内容が消えない。ＣＰＵ１５０２は、ＲＡＭ１５０４内のコンピュータプログラムを実行することにより、後に説明する図１６又は図１７の処理を行い、第１〜第４の実施形態の回路ブロックの設計データを生成する。【００８１】
ネットワークインターフェース１５０５は、ネットワークに接続するためのインターフェースであり、ハードウェアエミュレータ又はＦＰＧＡ１５２０に接続される。コンピュータ１５１０は、ネットワークインターフェース１５０５を介して、ハードウェアエミュレータ又はＦＰＧＡ１５２０に設計データを送信することができる。入力装置１５０６は、例えばキーボード及びマウス等であり、各種指定又は入力等を行うことができる。出力装置１５０７は、ディスプレイ及びプリンタ等である。【００８２】
図１６は、図１５のコンピュータ１５１０に実行させるためのプログラムの処理例を示すフローチャートである。コンピュータ１５１０は、プログラムを実行することにより、以下の処理を行う。【００８３】
まず、ステップ１６０１では、コンピュータ１５１０は、クランプ回路２０３，２０４又はレベルシフト機能付きクランプ回路１００３，１００４を含む回路ブロックのＲＴＬ（Register Transfer Level）設計データを準備し、外部記憶装置１５０８に記憶させる。第１及び第２の実施形態では、図２の回路ブロックを有する設計データを準備する。第３及び第４の実施形態では、図１０の回路ブロックを有する設計データを準備する。【００８４】
次に、ステップ１６０２では、コンピュータ１５１０は、前記ＲＴＬ設計データを検証するために、ＣＡＤ（Computer-Aided Design）ツール、ライブラリ１６０３及びマスク回路情報１６０４を用いて、前記ＲＴＬ設計データを基に、検証のための回路ブロックのＲＴＬ設計データを生成する。ライブラリ１６０３及びマスク回路情報１６０４は、外部記憶装置１５０８に記憶されている。第１の実施形態では、前記ＲＴＬ設計データを検証するために、前記ＲＴＬ設計データに対して、パワーゲーティング回路２０１の代わりに、マスク回路（マスク論理回路５０１，５０３及びセレクタ５０２，５０４を含む）を追加したＲＴＬ設計データを生成する。第２の実施形態では、前記ＲＴＬ設計データを検証するために、前記ＲＴＬ設計データに対して、エラー検出回路（エラー条件検出回路８０１〜８０３、論理和回路８１１及びエラー記憶部８１２を含む）を追加したＲＴＬ設計データを生成する。第３の実施形態では、前記ＲＴＬ設計データを検証するために、前記ＲＴＬ設計データに対して、パワーゲーティング回路２０１の代わりに、電源電圧記憶部１２０１、動作可能電圧記憶部１２０２、比較回路１２０３及びマスク回路（マスク論理回路１２０４，１２０６及びセレクタ１２０５，１２０７を含む）を追加したＲＴＬ設計データを生成する。【００８５】
次に、ステップ１６０５では、コンピュータ１５１０は、ステップ１６０２で生成されたＲＴＬ設計データを外部記憶装置１５０８に書き込む。【００８６】
次に、ステップ１６０６では、コンピュータ１５１０は、ハードウェアエミュレータ又はＦＰＧＡ１５２０用のネットリスト合成ツール及びライブラリ１６０７を用いて、ステップ１６０２で生成されたＲＴＬ設計データを基に、ハードウェアエミュレータ又はＦＰＧＡ１５２０のためのネットリスト設計データを生成する。ライブラリ１６０７は、外部記憶装置１５０８に記憶されている。【００８７】
次に、ステップ１６０８では、コンピュータ１５１０は、ステップ１６０６で生成されたネットリスト設計データを外部記憶装置１５０８に書き込み、ネットワークインターフェース１５０５を介してハードウェアエミュレータ又はＦＰＧＡ１５２０に送信する。【００８８】
次に、ステップ１６０９では、ハードウェアエミュレータ又はＦＰＧＡ１５２０は、コンピュータ１５１０からネットリスト設計データを受信し、動作検証を行う。ネットリスト設計データは、第１〜第４の実施形態で説明したように、誤動作が検証可能になっているので、ハードウェアエミュレータ又はＦＰＧＡ１５２０は、第１〜４の実施形態で示したような設計ミスによる誤動作を検証可能である。【００８９】
図１７は、図１５のコンピュータ１５１０に実行させるためのプログラムの他の処理例を示すフローチャートである。コンピュータ１５１０は、プログラムを実行することにより、以下の処理を行う。図１６では、ＲＴＬ設計データの段階で検証用の回路ブロックの設計データを生成する例を示した。図１７では、ネットリスト設計データの段階で検証用の回路ブロックの設計データを生成する例を説明する。【００９０】
まず、ステップ１７０１では、コンピュータ１５１０は、クランプ回路２０３，２０４又はレベルシフト機能付きクランプ回路１００３，１００４を設ける前の回路ブロックのＲＴＬ設計データを準備し、外部記憶装置１５０８に記憶させる。この回路ブロックのＲＴＬ設計データは、クランプ回路２０３，２０４又はレベルシフト機能付きクランプ回路１００３，１００４がない点を除き、ステップ１６０１と同じである。【００９１】
次に、ステップ１７０２では、コンピュータ１５１０は、論理合成ツール、ライブラリ１７０３及びクランプ回路又はレベルシフト回路情報１７０４を用いて、上記のＲＴＬ設計データに対して、クランプ回路２０３，２０４又はレベルシフト機能付きクランプ回路１００３，１００４を追加したネットリスト設計データを生成する。ライブラリ１７０３及びクランプ回路又はレベルシフト回路情報１７０４は、外部記憶装置１５０８に記憶されている。【００９２】
次に、ステップ１７０５では、コンピュータ１５１０は、ステップ１７０２で生成されたネットリスト設計データを外部記憶装置１５０８に書き込む。【００９３】
次に、ステップ１７０６では、コンピュータ１５１０は、前記ネットリスト設計データを検証するために、ＣＡＤツール、ライブラリ１７０７及びマスク回路情報１７０８を用いて、前記ネットリスト設計データを基に、検証のための回路ブロックのネットリスト設計データを生成する。ライブラリ１７０７及びマスク回路情報１７０８は、外部記憶装置１５０８に記憶されている。ステップ１７０６は、ステップ１６０２に対して、ＲＴＬ設計データの代わりにネットリスト設計データを生成する点を除き、同じである。【００９４】
次に、ステップ１７０９では、コンピュータ１５１０は、ステップ１７０６で生成されたネットリスト設計データを外部記憶装置１５０８に書き込む。【００９５】
次に、ステップ１７１０では、コンピュータ１５１０は、ハードウェアエミュレータ又はＦＰＧＡ１５２０用のネットリスト合成ツール及びライブラリ１７１１を用いて、ステップ１７０６で生成されたネットリスト設計データを基に、ハードウェアエミュレータ又はＦＰＧＡ１５２０のためのネットリスト設計データを生成する。ライブラリ１７１１は、外部記憶装置１５０８に記憶されている。【００９６】
次に、ステップ１７１２では、コンピュータ１５１０は、ステップ１７１０で生成されたネットリスト設計データを外部記憶装置１５０８に書き込み、ネットワークインターフェース１５０５を介してハードウェアエミュレータ又はＦＰＧＡ１５２０に送信する。【００９７】
次に、ステップ１７１３では、ハードウェアエミュレータ又はＦＰＧＡ１５２０は、コンピュータ１５１０からネットリスト設計データを受信し、動作検証を行う。ネットリスト設計データは、第１〜第４の実施形態で説明したように、誤動作が検証可能になっているので、ハードウェアエミュレータ又はＦＰＧＡ１５２０は、第１〜４の実施形態で示したような設計ミスによる誤動作を検証可能である。【００９８】
本実施形態は、コンピュータ１５１０がプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びコンピュータプログラムプロダクトは、本発明の範疇に含まれる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。【００９９】
以上のように、本実施形態では、回路ブロックの入出力信号に接続されているクランプ回路２０３，２０４又はレベルシフト機能付きクランプ回路１００３，１００４を例えば図１４の回路１４０１及び１４０２に自動的に回路変更するＣＡＤ処理を行う。これにより、より簡便かつ確実にハードウェアエミュレータ又はＦＰＧＡ１５２０で電源管理検証を行うことが可能となる。また、ステップ１６０２又はステップ１７０６により、マスク回路等を自動挿入することにより、簡便にハードウェアエミュレータ又はＦＰＧＡでの検証が可能となる。【０１００】
電源管理制御を行なった際の誤動作（制御信号の制御ミス、論理回路が動作可能な電圧よりも電源電圧を誤って下げてしまった場合の誤動作、等）を、ハードウェアエミュレータ又はＦＰＧＡで高速に検証可能となる。【０１０１】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【産業上の利用可能性】
【０１０２】
検証のための設計データを生成することにより、電源電圧のオン／オフ制御又は動的変更の際の動作が検証可能になる。また、ハードウェアエミュレータ又はＦＰＧＡにより検証することができるので、高速な検証が可能である。
【図１】
2008126207.tif 000003
【図２】
2008126207.tif 000004
【図３】
2008126207.tif 000005
【図４】
2008126207.tif 000006
【図５】
2008126207.tif 000007
【図６】
2008126207.tif 000008
【図７】
2008126207.tif 000009
【図８】
2008126207.tif 000010
【図９】
2008126207.tif 000011
【図１０】
2008126207.tif 000012
【図１１】
2008126207.tif 000013
【図１２】
2008126207.tif 000014
【図１３】
2008126207.tif 000015
【図１４】
2008126207.tif 000016
【図１５】
2008126207.tif 000017
【図１６】
2008126207.tif 000018
【図１７】
2008126207.tif 000019
【手続補正書】
【提出日】平成21年7月27日(2009.7.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
パワーゲーティング制御信号に応じて論理回路に電源電圧を供給するためのパワーゲーティング回路及びクランプ制御信号に応じて前記論理回路の出力信号をクランプするための第１のクランプ回路を有する設計データを準備する準備ステップと、
前記設計データを検証するために、前記設計データに対して、前記パワーゲーティング回路の代わりに、前記パワーゲーティング制御信号に応じて前記論理回路の出力信号をマスクするための第１のマスク回路を追加した設計データを生成する生成ステップと
を有することを特徴とする半導体集積回路の設計方法。
【請求項２】
前記第１のマスク回路は、前記パワーゲーティング制御信号に応じて前記論理回路の出力信号又はマスクデータを選択して前記第１のクランプ回路に出力する第１のセレクタを有することを特徴とする請求項１記載の半導体集積回路の設計方法。
【請求項３】
前記第１のクランプ回路は、前記論理回路の出力信号及び前記クランプ制御信号の論理積信号を出力する第１の論理積回路を有することを特徴とする請求項１記載の半導体集積回路の設計方法。
【請求項４】
前記準備ステップは、さらに前記クランプ制御信号に応じて第１の論理信号をクランプして前記論理回路に出力するための第２のクランプ回路を有する設計データを準備することを特徴とする請求項１記載の半導体集積回路の設計方法。
【請求項５】
前記生成ステップは、さらに前記パワーゲーティング制御信号に応じて前記論理回路の入力信号をマスクするための第２のマスク回路を追加した設計データを生成することを特徴とする請求項４記載の半導体集積回路の設計方法。
【請求項６】
前記第２のマスク回路は、前記パワーゲーティング制御信号に応じて前記第２のクランプ回路の出力信号又はマスクデータを選択して前記論理回路に出力する第２のセレクタを有することを特徴とする請求項５記載の半導体集積回路の設計方法。
【請求項７】
さらに、前記生成ステップにより生成された設計データを基にハードウェアエミュレータ又はＦＰＧＡ（Field Programmable Gate Array）により動作検証する検証ステップを有することを特徴とする請求項１記載の半導体集積回路の設計方法。
【請求項８】
パワーゲーティング制御信号に応じて論理回路に電源電圧を供給するためのパワーゲーティング回路及びクランプ制御信号に応じて前記論理回路の出力信号をクランプするための第１のクランプ回路を有する設計データを準備する準備ステップと、
前記設計データを検証するために、前記設計データに対して、前記パワーゲーティング制御信号及び前記クランプ制御信号を基にエラーを検出するためのエラー検出回路を追加した設計データを生成する生成ステップと
を有することを特徴とする半導体集積回路の設計方法。
【請求項９】
パワーゲーティング制御信号に応じて論理回路に供給する電源電圧値を制御するためのパワーゲーティング回路及び前記論理回路の出力信号をレベルシフトすることにより前記論理回路の出力信号のレベルとは異なるレベルの信号を出力する第１のレベルシフト回路を有する設計データを準備する準備ステップと、
前記設計データを検証するために、前記設計データに対して、前記パワーゲーティング回路の代わりに、前記パワーゲーティング制御信号に応じた前記電源電圧値が動作可能電圧であるか否かを比較するための比較回路及び前記比較回路の比較結果に応じて前記論理回路の出力信号をマスクするための第１のマスク回路を追加した設計データを生成する生成ステップと
を有することを特徴とする半導体集積回路の設計方法。
【請求項１０】
前記準備ステップは、さらにクランプ制御信号に応じて前記論理回路の出力信号をクランプするための第１のクランプ回路を有する設計データを準備することを特徴とする請求項９記載の半導体集積回路の設計方法。
【国際調査報告】
2008126207.tif 000020
2008126207.tif 000021