(57)【特許請求の範囲】
【請求項１】
被試験設計（ＤＵＴ）の信号を追跡する指示を記憶する非一時的コンピュータ可読媒体であって、前記指示によって、エミュレータは、
エミュレートされているＤＵＴの複数の信号を受信し、
前記ＤＵＴのクロックよりも高い周波数で動作する電力解析クロックの第１サイクル中に前記複数の信号から信号を選択し、
前記選択された信号について状態イベントが検出されるか否かを判定し、
前記選択された信号について前記状態イベントが検出されることに応じて、前記選択された信号に関連付けられた状態計数をインクリメントするように構成され、前記状態計数は、前記ＤＵＴのエミュレーション中、前記選択された信号について検出された状態イベントの数を示し、
前記電力解析クロックの第２サイクル中に前記複数の信号から追加信号を選択し、
前記追加信号について前記状態イベントが検出されるか否かを判定し、
前記追加信号について前記状態イベントが検出されることに応じて、前記追加信号に関連付けられた追加状態計数をインクリメントするように構成され、前記追加状態計数は、前記ＤＵＴのエミュレーション中、前記追加信号について検出された状態イベントの数を示す、
非一時的コンピュータ可読媒体。
【請求項２】
前記指示によって、さらに、前記エミュレータは、
前記状態計数をインクリメントしたことに応じて、前記状態計数が閾値回数に達したか否かを判定し、
前記状態計数が前記閾値回数に達した旨の判定に応じて、ホストシステムに計数更新信号を送信するように構成され前記計数更新信号は、前記状態計数が前記閾値回数に達したことを示す請求項１に記載の非一時的コンピュータ可読媒体。
【請求項３】
前記ホストシステムは、前記計数更新信号に基づき、前記選択された信号について保持された合計計数を前記閾値回数でインクリメントし、前記合計計数は、前記ＤＵＴのエミュレーション中、前記選択された信号について検出された状態イベントの総数を示す請求項２に記載の非一時的コンピュータ可読媒体。
【請求項４】
前記指示によって、さらに、前記エミュレータは、
前記ＤＵＴの前記エミュレーションの終了判定に応じて、前記状態計数の現在の値をホストシステムに送信するように構成され、前記ホストシステムは、前記現在の値に基づき、前記選択された信号についての合計計数を更新し、前記ＤＵＴのエミュレーション中、前記選択された信号について検出された状態イベントの総数を示す請求項１に記載の非一時的コンピュータ可読媒体。
【請求項５】
前記状態イベントは、２つの状態間における前記選択された信号のトグルであり、前記指示によって、さらに、前記エミュレータは、
前記ＤＵＴのクロックの現在のサイクル中における前記選択された信号の状態を、前記クロックの以前のサイクル中における前記選択された信号の状態と比較し、
前記現在のサイクル中における前記選択された信号の前記状態が前記以前のサイクル中における前記選択された信号の前記状態とは異なることに応じて、前記状態イベントを検出するように構成される、請求項１に記載の非一時的コンピュータ可読媒体。
【請求項６】
前記状態イベントは、前記選択された信号がロー状態を有することである請求項１に記載の非一時的コンピュータ可読媒体。
【請求項７】
前記状態イベントは、前記選択された信号がハイ状態を有することである請求項１に記載の非一時的コンピュータ可読媒体。
【請求項８】
前記状態イベントは、２つの状態間における前記選択された信号のトグルであり、前記指示によって、さらに、前記エミュレータは、
前記選択された信号がロー状態であるか否かを判定し、
前記選択された信号がハイ状態であるか否かを判定し、
前記選択された信号が前記ロー状態である旨の判定に応じて、前記選択された信号に関連付けられた、前記ＤＵＴのエミュレーション中の前記選択された信号について検出されたロー状態の数を示すロー計数をインクリメントし、
前記選択された信号が前記ハイ状態である旨の判定に応じて、前記選択された信号に関連付けられた、前記ＤＵＴのエミュレーション中の前記選択された信号について検出されたハイ状態の数を示すハイ計数をインクリメントするように構成される請求項１に記載の非一時的コンピュータ可読媒体。
【請求項９】
前記状態計数は、前記選択された信号を含む前記ＤＵＴの信号群に関連付けられ、前記状態計数は、前記群において前記信号について検出された前記状態イベントの数を示す請求項１に記載の非一時的コンピュータ可読媒体。
【請求項１０】
電力解析論理回路であって、
エミュレータによってエミュレートされている被試験設計（ＤＵＴ）の複数の信号を受信し、前記ＤＵＴのクロックよりも高い周波数で動作する電力解析クロックの第１サイクル中に前記複数の信号から信号を選択し、かつ、前記電力解析クロックの第２サイクル中に前記複数の信号から追加信号を選択するように構成されたマルチプレクサと、
前記選択された信号について状態イベントが検出されるか否かを判定し、かつ、前記追加信号について前記状態イベントが検出されるか否かを判定するように構成されたイベント検出器と、
前記選択された信号について前記状態イベントが検出されることに応じて、前記選択された信号に関連付けられた状態計数をインクリメントし、かつ、前記追加信号について前記状態イベントが検出されることに応じて、前記追加信号に関連付けられた追加状態計数をインクリメントするように構成されたアキュムレータとを備え、前記状態計数は、前記ＤＵＴのエミュレーション中、前記選択された信号について検出された状態イベントの数を示し、前記追加状態計数は、前記ＤＵＴのエミュレーション中、前記追加信号について検出された状態イベントの数を示し、
前記電力解析論理回路は、前記ＤＵＴの前記エミュレーション中、エミュレーションのために、前記ＤＵＴの前記エミュレーションに先立って、前記ＤＵＴに組み込まれるような構造を有する電力解析論理回路。
【請求項１１】
前記状態計数のインクリメントに応じて、前記状態計数を記憶し、
前記状態計数が閾値回数に達したか否かを判定し、
前記状態計数が前記閾値回数に達した旨の判定に応じて計数更新信号をホストシステムに送信するように構成されたカウンタメモリをさらに備え、前記計数更新信号は、前記状態計数が前記閾値回数に達したことを示す請求項１０に記載の電力解析論理回路。
【請求項１２】
前記ホストシステムは、前記計数更新信号に基づき、前記選択された信号について保持された合計計数を前記閾値回数でインクリメントし、前記合計計数は、前記ＤＵＴのエミュレーション中、前記選択された信号について検出された状態イベントの総数を示す請求項１１に記載の電力解析論理回路。
【請求項１３】
前記状態計数を記憶し、
前記ＤＵＴの前記エミュレーションの終了の判定に応じて、前記状態計数の現在の値をホストシステムに送信するように構成されたカウンタメモリをさらに備え、前記ホストシステムは、前記現在の値に基づき、前記選択された信号についての合計計数を更新し、前記ＤＵＴのエミュレーション中、前記選択された信号について検出された状態イベントの総数を示す請求項１０に記載の電力解析論理回路。
【請求項１４】
前記状態イベントは、２つの状態間における前記選択された信号のトグルであり、前記電力解析論理回路は、さらに、
前記ＤＵＴのクロックの以前のサイクル中における前記選択された信号の状態を出力するように構成された状態メモリをさらに備え、
前記イベント検出器は、さらに、
前記クロックの現在のサイクル中における前記選択された信号の状態を、前記以前のサイクル中における前記選択された信号の前記状態と比較し、
前記現在のサイクル中における前記選択された信号の前記状態が前記以前のサイクル中における前記選択された信号の前記状態とは異なることに応じて、前記状態イベントを検出するように構成される請求項１０に記載の電力解析論理回路。
【請求項１５】
前記現在のサイクル中における前記選択された信号は、ハイ状態であり、前記以前のサイクル中における前記選択された信号は、ロー状態である請求項１４に記載の電力解析論理回路。
【請求項１６】
前記現在のサイクル中における前記選択された信号は、ロー状態であり、前記以前のサイクル中における前記選択された信号は、ハイ状態である請求項１４に記載の電力解析論理回路。
【請求項１７】
前記状態イベントは、前記選択された信号がロー状態を有することである請求項１０に記載の電力解析論理回路。
【請求項１８】
前記状態イベントは、前記選択された信号がハイ状態を有することである請求項１０に記載の電力解析論理回路。
【請求項１９】
前記信号に対応するアドレスを出力するように構成された信号制御器をさらに備え、
前記マルチプレクサは、さらに、前記信号制御器によって出力された前記アドレスに基づき、前記複数の信号から前記信号を選択するように構成される請求項１０に記載の電力解析論理回路。
【請求項２０】
指示を記憶するように構成された非一時的コンピュータ可読媒体であって、前記指示は、少なくとも１つのプロセッサによる実行時、
ホストシステムに、エミュレータによってエミュレートされる被試験設計（ＤＵＴ）の記述を受信させ、
前記ホストシステムに、前記ＤＵＴのエミュレーション中、前記ＤＵＴの複数の信号の状態を追跡するように構成された電力解析論理回路を前記ＤＵＴの前記記述に組み込ませ、
前記ホストシステムに、前記ＤＵＴのエミュレーションのために前記電力解析論理回路が組み込まれた前記ＤＵＴに関連付けられた情報を前記エミュレータに送信させ、
前記ホストシステムに、前記複数の信号の各々について、前記ＤＵＴのエミュレーション中、前記複数の信号から信号について検出された状態イベントの総数を示す少なくとも１つの合計計数を保持させ、
前記ホストシステムに、前記信号について前記エミュレータによって保持された状態計数が閾値回数に達したことを示す計数更新信号の受信に応じて、前記複数の信号から前記信号について保持された前記合計計数を更新させ、前記計数更新信号は、前記電力解析論理回路のエミュレーションに基づいて受信される非一時的コンピュータ可読媒体。
【請求項２１】
前記エミュレータに保持された前記状態計数は、前記ＤＵＴのエミュレーション中、前記複数の信号のうち前記信号について検出された状態イベントの数を示し、前記状態計数は、前記閾値回数に達したことに応じてリセットされる請求項２０に記載の非一時的コンピュータ可読媒体。
【請求項２２】
前記少なくとも１つのプロセッサによる実行時、前記合計計数を更新させる前記指示は、前記少なくとも１つのプロセッサに前記合計計数を前記閾値回数でインクリメントさせる指示をさらに備える請求項２０に記載の非一時的コンピュータ可読媒体。
【請求項２３】
方法であって、
ホストシステムにより、エミュレータによってエミュレートされる被試験設計（ＤＵＴ）の記述を受信し、
前記ホストシステムにより、前記ＤＵＴのエミュレーション中、前記ＤＵＴの複数の信号の状態を追跡するように構成された電力解析論理回路を前記ＤＵＴの前記記述に組み込み、
前記ホストシステムにより、前記ＤＵＴのエミュレーションのために前記電力解析論理回路が組み込まれた前記ＤＵＴに関連付けられた情報を前記エミュレータに送信し、
前記ホストシステムにより、前記複数の信号の各々について、前記ＤＵＴのエミュレーション中、前記複数の信号のうち信号について検出された状態イベントの総数を示す少なくとも１つの合計計数を保持し、
前記ホストシステムにより、前記信号について前記エミュレータによって保持された状態計数が閾値回数に達したことを示す計数更新信号の受信に応じて、前記複数の信号から前記信号について保持された前記合計計数を更新することを備え、前記計数更新信号は、前記電力解析論理回路のエミュレーションに基づいて受信される方法。
【請求項２４】
被試験設計（ＤＵＴ）の信号を追跡するためにエミュレータによって実行される方法であって、
エミュレートされているＤＵＴの複数の信号を受信し、
前記ＤＵＴのクロックよりも高い周波数で動作する電力解析クロックの第１サイクル中に前記複数の信号から信号を選択し、
前記選択された信号について状態イベントが検出されるか否かを判定し、
前記選択された信号について前記状態イベントが検出されることに応じて、前記選択された信号に関連付けられた状態計数をインクリメントすることを備え、前記状態計数は、前記ＤＵＴのエミュレーション中、前記選択された信号について検出された状態イベントの数を示し、
前記電力解析クロックの第２サイクル中に前記複数の信号から追加信号を選択し、
前記追加信号について前記状態イベントが検出されるか否かを判定し、
前記追加信号について前記状態イベントが検出されることに応じて、前記追加信号に関連付けられた追加状態計数をインクリメントするように構成され、前記追加状態計数は、前記ＤＵＴのエミュレーション中、前記追加信号について検出された状態イベントの数を示す、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して回路のエミュレーションに関し、特に、エミュレートされた回路の信号状態の追跡に関する。
【背景技術】
【０００２】
高度に複雑な集積回路の設計及びデバッグを行う際に回路設計者を補助するため、エミュレータが開発されてきた。エミュレータは、被試験設計（ＤＵＴ：Design Under Test）の動作を協働して模倣できる、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）等の複数の再構成可能な構成要素を含む。設計者は、ＤＵＴの動作を模倣するためにエミュレータを使用することにより、製造に先立ってＤＵＴが種々の設計要件に適合することを検証可能である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
エミュレーションの態様は、ＤＵＴの電力消費を解析することを含む。電力解析には、ＤＵＴにおける複数の信号の状態を追跡することが含まれる。追跡される各信号について、エミュレータは、通常、多数のハードウェアリソース（例えば、複数のレジスタ又はメモリ）を実装しなければならない。通常、数十億の信号が追跡されるため、エミュレータに膨大な量のハードウェアリソースが実装されなければならず、これがエミュレーションプロセスを減速し、電力解析が実施可能であるＤＵＴのサイズを限定する。
【０００４】
また、ＤＵＴにおける信号追跡により、結果として、エミュレータが多量のデータ（例えば、数テラバイトのデータ）を生成する。データは、処理を行うために、ホストシステムに転送される。しかしながら、ホストシステムへのデータの転送には、多量の帯域幅が必要となる。従って、エミュレーション環境における従来の電力解析は、ハードウェアリソース及び通信リソースの点で不十分である。
【図面の簡単な説明】
【０００５】
本開示の実施形態は、詳細な説明、添付の請求項、及び添付の図面（又は製図）からより容易に明らかとなる他の効果及び特徴を有する。図面を以下に簡単に紹介する。
【０００６】
【図１】一実施形態に係るエミュレーションの環境のブロック図である。
【０００７】
【図２】一実施形態に係るホストシステムを示すブロック図である。
【０００８】
【図３】一実施形態に係る被試験設計（ＤＵＴ）に含まれる電力解析論理のブロック図である。
【０００９】
【図４】一実施形態に係るトグル計数論理の回路図である。
【００１０】
【図５】一実施形態に係るロー状態計数論理及びハイ状態計数論理の回路図である。
【００１１】
【図６】一実施形態に係るエミュレーションのためにＤＵＴを準備するホストシステムを示すフロー図である。
【００１２】
【図７】一実施形態に係る、電力解析論理を組み込んだＤＵＴのエミュレーション中にエミュレータからエミュレーション結果を取得するホストシステムを示すフロー図である。
【００１３】
【図８】一実施形態に係る、ＤＵＴに組み込まれた計数論理をエミュレートする時にエミュレータにより実施されるプロセスを示すフロー図である。
【００１４】
【図９】機械可読媒体からの指示を読み取り、プロセッサ（又は、コントローラ）内でそれらを実行することのできる一例としての機械の構成要素の一実施形態を示す図である。
【発明を実施するための形態】
【００１５】
図面（図）及び以下の説明は、単なる例示としての好適な実施形態に関する。以下の検討より、本明細書に開示の構造及び方法の代替実施形態が、請求項の原則から逸脱することなく、採用されてもよい実行可能な実施形態として、容易に認識されることに留意しなければならない。
【００１６】
一方、いくつかの実施形態を詳細に参照し、その例を添付の図面中に示す。図面は、例示のみを目的として、開示のシステム（又は、方法）の実施形態を示している。以下の説明より、本明細書中に示される構造及び方法の代替実施形態が、本明細書に記載の原則から逸脱することなく採用されてもよいことを認識しなければならない。
【００１７】
＜構成概説＞
本開示のシステム（並びに、方法及びコンピュータプログラム製品）は、信号状態の追跡に使用されるハードウェアリソースの量を限定し、エミュレーション中の通信帯域幅を低減することにより、デジタル回路の効率的な電力解析を実施するエミュレーション環境を含む。
【００１８】
エミュレーション環境の一実施形態は、ホストシステムと、エミュレータとを含む。ホストシステムは、電力解析論理を被試験設計（ＤＵＴ）に組み込み、エミュレータを電力解析論理が組み込まれたＤＵＴをエミュレートするように構成する。エミュレーション中、電力解析論理は、ＤＵＴの複数の信号を追跡する。ホストシステムは、追跡された信号に基づき、電力解析を実施する。
【００１９】
一態様において、電力解析論理は、多重化を通じて、限定されたハードウェアリソースで複数の信号を追跡することができる。さらに、電力解析論理は、分散して、追跡された信号の状態、イベント計数、又は状態計数を送信することにより、ホストシステムとエミュレータとの間で必要となる通信帯域幅を低減する。本明細書に記載の通り、電力解析とは、設計で消費する電力量を評価することを目標とし、設計のグローバル又はローカルなアクティビティを収集及び／又は解析することをいう。
【００２０】
＜一例としてのエミュレーション環境＞
図１は、一実施形態に係るエミュレーション環境１００を示すブロック図である。エミュレーション環境１００は、ホストシステム１１０と、エミュレータ１２０とを含む。ホストシステム１１０は、インタフェース１１５を通じてエミュレータ１２０と通信する。
【００２１】
ホストシステム１１０は、ＤＵＴをエミュレートするようにエミュレータ１２０を構成し、ＤＵＴのエミュレーション中、エミュレータ１２０と通信する。ＤＵＴは、エミュレータ１２０によるエミュレートの対象である１つ以上の回路設計である。ホストシステム１１０は、単一のコンピュータであるか、又は複数のコンピュータの集合であってもよい。ホストシステム１１０が複数のコンピュータからなる実施形態において、ホストシステム１１０によって実施されるものとして本明細書中に記載された機能は、複数のコンピュータ間に分散されてもよい。
【００２２】
ホストシステム１１０は、ユーザから、エミュレートされるＤＵＴの記述を受信する。ＤＵＴの記述は、例えば、レジスタ転送言語（ＲＴＬ：Register Transfer Language）等の一種のハードウェア記述言語（ＨＤＬ：Hardware Description Language）によるものである。ホストシステム１１０は、ＤＵＴのＨＤＬ記述に基づき、ゲートレベルネットリストを作成する。ホストシステム１１０は、ネットリストを使用して、ＤＵＴをパーティション化し、各パーティションをエミュレータ１２０内に含まれる１つ以上の論理回路にマップする。
【００２３】
ホストシステム１１０は、ＤＵＴに、ＤＵＴ内の複数の信号の状態を追跡する電力解析論理を組み込む。一実施形態において、各追跡信号について、電力解析論理は、ハイ状態の数、ロー状態の数、及びロー状態とハイ状態の間、又はその逆のトグルの数を追跡する。他の実施形態において、個々の追跡信号ごとにハイ状態、ロー状態、及びトグルを計数する代わりに、各計数が複数の信号について関連付け／保持される。一例として、第１信号及び第２信号を含む信号群について、電力解析論理は、統括的に、信号群が「１２０」のトグル（例えば、第１信号により「８０」のトグルと、第２信号により「４０」のトグル）を有したことを計数してもよい。
【００２４】
一実施形態において、ホストシステム１１０は、ゲートレベルネットリストの作成に先立って、電力解析論理をＤＵＴに組み込む。他の実施形態において、電力解析論理は、ゲートレベルネットリストの作成後、且つ、ＤＵＴのパーティション化前又は後に、ＤＵＴに組み込まれる。或いは、電力解析論理は、異なる段階でＤＵＴに組み込まれてもよい。例えば、電力解析論理の一部がゲートレベルネットリストの作成前に組み込み可能であり、他の部分が、ゲートレベルネットリストの作成後に組み込み可能である。
【００２５】
ホストシステム１１０は、インタフェース１１５を通じて、１つ以上のビットストリームで、電力解析論理が組み込まれたＤＵＴの記述（ゲートレベル又はＲＴＬ記述）をエミュレータ１２０に送信する。ビットストリームは、また、ＤＵＴ、パーティション化情報、マッピング情報、及びエミュレータ１２０を構成するための設計上の制約の表現を含んでもよい。
【００２６】
さらに、エミュレータ１２０によるＤＵＴのエミュレーション中、ホストシステム１１０は、インタフェース１１５を通じてエミュレータ１２０から、エミュレーション結果を受信する。エミュレーション結果は、ＤＵＴのエミュレーションに基づき、エミュレータ１２０によって生成された情報である。一態様において、エミュレーション結果は、ＤＵＴの電力消費を判定する際に使用される情報である電力解析情報を含む。エミュレータから受信された電力解析情報は、エミュレーション中におけるＤＵＴ内の複数の信号の状態の計数を含む。エミュレータ１２０は、ＤＵＴ内に組み込まれた電力解析論理のエミュレーションに基づき、計数を生成する。
【００２７】
ホストシステム１１０は、解析及びユーザへの表示のために、エミュレーション結果を処理及び変換してもよい。ユーザは、エミュレーション結果に基づき、ＤＵＴを修正するプロセスを反復し、設計要件が満たされるまで、エミュレーションを実行し、解析を実施してもよい。
【００２８】
エミュレータ１２０は、ＤＵＴをエミュレートするハードウェアシステムである。エミュレータ１２０は、協働してＤＵＴをエミュレートすることのできる複数の構成可能な論理回路を含む。一実施形態において、エミュレータに含まれる論理回路は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）である。
【００２９】
エミュレートされるＤＵＴについて、エミュレータ１２０は、ホストシステム１１０又は他の演算装置（図示せず）から、電力解析論理が組み込まれたＤＵＴの記述を含む１つ以上のビットストリームを受信する。ビットストリームは、さらに、ホストシステム１１０により作成されたＤＵＴのパーティション、エミュレータ１２０のＦＰＧＡに対するパーティションのマッピング、及び設計上の制約を記述する。エミュレータ１２０は、ビットストリームに基づき、ＤＵＴの機能を実行するようにＦＰＧＡを構成する。
【００３０】
エミュレータ１２０は、組み込まれた電力解析論理とともにＤＵＴをエミュレートする。エミュレーションに基づき、エミュレータ１２０は、エミュレーション結果を生成し、これは、解析のためにホストシステム１１０に送信される。
【００３１】
インタフェース１１５は、ホストシステム１１０とエミュレータ１２０との間で通信を行わせる通信媒体である。一実施形態において、インタフェース１１５は、電気接続を伴うケーブルである。例えば、インタフェース１１５は、ＲＳ２３２ケーブル、ＵＳＢケーブル、ＬＡＮケーブル、光学ケーブル、又は特注ケーブルであってもよい。他の実施形態において、インタフェース１１５は、無線通信媒体又はネットワークである。例えば、インタフェース１１５は、Ｂｌｕｅｔｏｏｔｈ（登録商標）又はＩＥＥＥ８０２．１１プロトコルを採用した無線通信媒体であってもよい。
【００３２】
図２は、一実施形態に係るホストシステム１１０をより詳細に示すブロック図である。ホストシステム１１０は、設計コンパイラ２１０、マッピングモジュール２２０、ランタイムモジュール２３０、追跡モジュール２４０、及びストレージ２５０を含む。これらの構成要素は、各々、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせとして実施されてもよい。これらの構成要素は、ともに、エミュレータ１２０を構成し、エミュレーション結果をモニタリングする設計を提供する。
【００３３】
設計コンパイラ２１０は、ＤＵＴのＨＤＬをゲートレベル論理に変換する。エミュレートされるＤＵＴについて、設計コンパイラ２１０は、ＨＤＬ（例えば、ＲＴＬ又はその他のレベルの抽象化）でＤＵＴの記述を受信する。設計コンパイラ２１０は、ＤＵＴのＨＤＬを合成し、ゲートレベル論理でのＤＵＴの記述を用いてゲートレベルネットリストを作成する。
【００３４】
一実施形態において、設計コンパイラ２１０は、電力解析論理をＤＵＴに組み込む。一実施形態において、設計コンパイラ２１０は、ネットリスト作成のためのＨＤＬの合成に先立って、電力解析論理を組み込む。本実施形態において、設計コンパイラ２１０は、合成に先立って、ストレージ２５０から電力解析論理のＨＤＬを検索し、ＤＵＴのＨＤＬを編集して、検索された電力解析論理のＨＤＬを含めるようにする。
【００３５】
他の実施形態において、設計コンパイラ２１０は、ＤＵＴについてのネットリストを作成した後に、電力解析論理を組み込む。本実施形態において、設計コンパイラ２１０は、ストレージ２５０から電力解析論理のゲートレベル記述を検索し、ゲートレベルネットリストを編集して、電力解析論理のゲートレベル記述を含めるようにする。
【００３６】
他の実施形態において、設計コンパイラ２１０は、分散レベルで電力解析論理を組み込む。設計コンパイラ２１０は、ＨＤＬの合成に先立って電力解析論理の一部を組み込み、ＨＤＬの合成後に電力解析論理の他の部分を組み込む。
【００３７】
図３は、一実施形態に係るＤＵＴに組み込まれた電力解析論理３２０を示している。電力解析論理３２０は、トグル計数論理３２２と、ロー状態計数論理３２４と、ハイ状態計数論理３２６（「計数論理」と総称する）を含む。各計数論理は、ＤＵＴからの信号３１０（「設計信号」とも称する）と、電力解析クロック３４０で生成された電力解析クロック信号３５０とを受信する。電力解析クロック３４０は、ＤＵＴの設計クロック（図示せず）より高い周波数で電力解析クロック信号３５０を生成する。電力解析クロック信号３５０をより高い周波数で生成することにより、計数論理にＤＵＴの設計クロックの１サイクル中、各設計信号３１０を解析させる。例えば、ＤＵＴの動作周波数は、１ＭＨｚであってもよく、電力解析クロック３４０の最大周波数は、１ＧＨｚであり、１設計クロックサイクル毎に「１０００」の設計信号３１０までを解析してもよい（すなわち、多重化レートは「１０００」である）。
【００３８】
各計数論理は、各設計信号の状態イベントの数を計数する。状態イベントは、信号の状態に関連するイベントである。一実施形態において、トグル計数論理３２２が各設計信号３１０について計数する状態イベントは、トグルの数（すなわち、トグルイベントの数）である。トグルは、信号が１つの状態から他の状態に推移する時である。例えば、信号が、ハイ状態（例えば、論理「１」、「ハイ」、「真」、又はＶＤＤ）からロー状態（例えば、論理「０」、「ロー」「偽」、又は接地）に推移する時、又はロー状態からハイ状態に推移する時である。各設計信号３１０についてロー状態計数論理３２４が計数する状態イベントは、ロー状態の数（すなわち、ロー状態イベントの数）である。各設計信号３１０について、ハイ状態計数論理３２６は、ハイ状態の数（すなわち、ハイ状態イベントの数）を計数する。
【００３９】
電力解析クロック３４０の各サイクル中、各計数論理は、選択された設計信号３１０を解析して、その各状態イベントが発生したか否かを判定する。従って、トグル計数論理３２２は、選択された設計信号３１０がトグルされたか否か（例えば、選択された信号３１０が、現在のサイクル中、以前のサイクルにおける状態とは異なる状態に推移したか否か）を判定し、ロー状態計数論理３２４は、選択された信号３１０がロー状態であるか否かを判定し、ハイ状態計数論理３２６は、選択された信号３１０がハイ状態であるか否かを判定する。
【００４０】
計数論理が、選択された設計信号３１０に対してその各状態イベントが発生したと判定した場合、計数論理は、選択された設計信号３１０について保持されている状態計数を１つインクリメントする。一実施形態において、トグル計数論理３２２は、各設計信号３１０について、信号のトグルの数のトグル計数を保持し、ロー状態計数論理３２４は、信号のロー状態の数のロー計数を保持し、ハイ状態計数論理３２６は、信号のハイ状態の数のハイ計数を保持する。他の実施形態において、設計信号は、グループ化され、各計数論理は、信号群について発生した状態イベントの数の計数を保持する。
【００４１】
電力解析クロック３４０の次のサイクル中、計数論理により、新たな設計信号３１０が選択及び解析される。上述の通り、電力解析クロック３４０は、ＤＵＴの設計クロックより高速であるため、計数論理は、ＤＵＴの設計クロックの１サイクル中に各設計信号３１０の解析を行うことができる。
【００４２】
計数論理が設計信号３１０の計数をインクリメントする時、計数論理は、計数が閾値回数までインクリメントされたか否かを判定する。計数が閾値回数に達した場合、計数論理は、計数更新信号３３０を出力し、計数を初期値（例えば、ゼロ）にリセットする。例えば、閾値回数を「１６」とし、設計信号３１０についてトグル計数論理３２２に保持されるトグル計数が、現在、「１５」であると想定する。トグル計数論理３２２が設計信号３１０を解析し、追加トグルが発生したと判定する場合、トグル計数を「１６」にインクリメントする際、トグル計数論理３２２は、計数更新信号３３０を出力し、計数をゼロにリセットする。計数更新信号３３０は、ホストシステム１１０に、閾値回数に達しており、以下に図２の追跡モジュール２４０に関してより詳細に説明する通り、設計信号３１０について合計計数を更新可能である旨を通知する。
【００４３】
計数論理の計数が閾値回数に達した時に計数更新信号３３０を出力するだけで、電力解析論理３２０を備えたＤＵＴのエミュレーション中におけるエミュレータ１２０とホストシステム１１０との間の通信量を最少化する。従って、ホストシステム１１０は、信号について検出された個々の状態イベントについて通知されない。さらに、電力解析論理３２０は、複数の設計信号３１０の状態を追跡することができるため、設計信号３１０の状態の追跡のためにエミュレータ１２０によってエミュレートされる必要のあるハードウェアリソースの量を最少化する。各計数論理の回路については、図４及び図５を参照して以下に説明する。
【００４４】
図２を参照すると、マッピングモジュール２２０は、ＤＵＴをパーティション化し、パーティションをエミュレータ構成要素にマップする。設計コンパイラ２１０がＤＵＴのゲートレベルネットリストを作成した後、マッピングモジュール２２０は、ネットリストを使用して、ゲートレベルにてＤＵＴをパーティション化し、多数のパーティションに分ける。設計コンパイラ２１０が電力解析論理をＤＵＴに組み込む実施形態において、マッピングモジュール２２０は、電力解析論理が組み込まれたＤＵＴをパーティション化する。他の実施形態において、マッピングモジュール２２０は、設計コンパイラ２１０の代わりに、電力解析論理を組み込む。本実施形態において、マッピングモジュール２２０は、ＤＵＴのゲートレベルネットリストに基づき、ＤＵＴをパーティション化し、電力解析論理を１つ以上のパーティションに組み込む。
【００４５】
マッピングモジュール２２０は、各パーティションを、エミュレータ１２０の１つ以上のＦＰＧＡにマップする。マッピングモジュール２２０は、設計ルール、設計上の制約（例えば、タイミング又は論理上の制約）、及びエミュレータ１２０についての情報を使用して、パーティション化及びマッピングを実施する。各パーティションについて、マッピングモジュール２２０は、パーティションと、前記エミュレータ１２０の１つ以上のＦＰＧＡへのマッピングとに含まれる設計論理を記述するビットストリームを生成する。ビットストリームは、また、構成要素と他の設計情報との間の繋がりについての情報を含んでもよい。マッピングモジュール２２０は、エミュレータ１２０のＦＰＧＡが電力解析論理３２０を備えたＤＵＴをエミュレートするように構成可能となるように、ビットストリームをエミュレータ１２０に送信する。
【００４６】
ランタイムモジュール２３０は、エミュレータ１２０上で実施されるエミュレーションを制御する。ランタイムモジュール２３０は、エミュレータ１２０に、エミュレーションの実行を開始又は停止させてもよい。さらに、ランタイムモジュール２３０は、エミュレータ１２０に入力信号／データを提供してもよい。入力信号は、インタフェース１１５を通じてエミュレータ１２０に直接提供されてもよく、又は他の入力信号装置を通じて間接的に提供されてもよい。例えば、ランタイムモジュール２３０を備えたホストシステム１１０は、テストボード、信号生成器、又は電源等の入力信号装置を制御して、エミュレータ１２０に入力信号を提供してもよい。
【００４７】
追跡モジュール２４０は、エミュレータ１２０によって生成されたエミュレーション結果を処理する。エミュレータ１２０によるＤＵＴのエミュレーション中、追跡モジュール２４０は、エミュレータ１２０からエミュレーション結果を受信する。エミュレータ１２０から受信されたエミュレーション結果には、計数更新信号３３０が含まれる。計数更新信号３３０は、電力解析論理３２０によって追跡されている設計信号３１０の特定状態計数が閾値回数に達したことを示す。
【００４８】
電力解析論理３２０によって追跡されているＤＵＴの各設計信号３１０について、追跡モジュール２４０は、合計トグル計数、合計ロー計数、及び合計ハイ計数をストレージ２５０に保持する。合計トグル計数は、ＤＵＴのエミュレーション中、設計信号３１０について計数されたトグルの総数である。合計ロー計数は、エミュレーション中に計数されたロー状態の総数であり、合計ハイ計数は、計数されたハイ状態の総数である。
【００４９】
追跡モジュール２４０が、設計信号３１０の特定の状態計数が閾値回数に達したことを示す計数更新信号３３０を受信した時、追跡モジュール２４０は、適切な合計計数を更新する。一実施形態において、追跡モジュール２４０は、適切な合計計数を閾値回数でインクリメントする。従って、計数更新信号３３０が、設計信号３１０についてトグル計数論理３２２に保持されたトグル計数が閾値回数に達したことを示す場合、追跡モジュール２４０は、ストレージ２５０内の設計信号３１０の合計トグル計数を閾値回数でインクリメントする。計数更新信号３３０が、設計信号３１０についてロー状態計数論理３２４に保持されたロー計数が閾値回数に達したことを示す場合、追跡モジュール２４０は、設計信号３１０の合計ロー計数を閾値回数でインクリメントする。同様に、計数更新信号３３０が、設計信号３１０についてハイ状態計数論理３２６に保持されたハイ計数が閾値回数に達したことを示す場合、追跡モジュール２４０は、設計信号３１０の合計ハイ計数を閾値回数でインクリメントする。
【００５０】
一実施形態において、ＤＵＴのエミュレーションが完了した時、追跡モジュール２４０は、各設計信号３１０について、エミュレータ１２０から、計数論理によって現在記憶されているトグル計数、ロー計数、及びハイ計数の現在の値を受信する。追跡モジュール２４０は、各設計信号３１０について、設計信号３１０の合計トグル計数を、受信した現在のトグル計数値でインクリメントし、設計信号３１０の合計ロー計数を受信した現在のロー計数値でインクリメントし、設計信号３１０の合計ハイ計数を受信した現在のハイ計数値でインクリメントする。これは、エミュレーションの終了時に各合計計数がエミュレーション中に発生した状態イベントの総数の真の値を含むように実施される。
【００５１】
例えば、エミュレーションの終了時、設計信号３１０についてトグル計数論理３２２に保持されたトグル計数が「１５」の値を有すると想定する。さらに、計数によって閾値回数「１６」に達した時、トグル計数論理３２２が計数更新信号のみを出力したと想定する。トグル計数値は「１６」に達しなかったため、現在の値「１５」は考慮されていない。従って、エミュレーションの完了時、設計信号３１０の合計トグル計数は「１５」でインクリメントされなければならない。
【００５２】
さらに、ＤＵＴのエミュレーションの完了時、追跡モジュール２４０は、各設計信号３１０の合計トグル計数、合計ロー計数、及び合計ハイ計数を含む結果ファイルを作成する。一実施形態において、結果ファイルは、Ｓｗｉｔｃｈｉｎｇ  Ａｃｔｉｖｉｔｙ  Ｉｎｔｅｒｃｈａｎｇｅ  Ｆｏｒｍａｔ（ＳＡＩＦ）ファイルである。追跡モジュール２４０は、ストレージ２５０に結果ファイルを記憶する。ファイルを使用して、ＤＵＴの電力消費を判定してもよい。
【００５３】
図４は、一実施形態に係るトグル計数論理３２２の回路図である。トグル計数論理３２２は、マルチプレクサ（ＭＵＸ）４１０、イベント検出器４２０、状態メモリ４３０、アキュムレータ４４０、カウンタメモリ４５０、信号制御器４６０、及び出力生成器４７０を含む。これらの構成要素は、ともに、ＤＵＴの電力解析を実施するために、各設計信号３１０についてトグルの数を計数する。
【００５４】
信号制御器４６０は、設計信号３１０の多重化に従ってトグルの数を計数するためにトグル計数論理３２２を制御する。一実施形態において、信号制御器４６０は、カウンタ論理回路である。信号制御器４６０は、電力解析クロック３４０から電力解析クロック信号３５０を受信する。信号制御器４６０は、出力として、ＭＵＸ４１０、状態メモリ４３０、及びカウンタメモリ４５０への設計信号アドレス出力４６５を生成する。
【００５５】
設計クロックサイクルにおいて、信号制御器４６０は、電力解析クロック信号３５０に応じて初期数から最大数まで設計信号アドレスを計数する。初期数は、第１設計信号アドレス（例えば、ゼロ）に対応し、最大数は、最終信号アドレス（例えば、多重化レート、又は設計信号３１０の数−１）に対応する。各設計信号アドレスは、設計信号３１０に対応する。各電力解析クロックサイクル中、信号制御器４６０は、設計信号アドレスをインクリメントし、インクリメントされた設計信号アドレスを設計信号アドレス出力４６５として出力する。設計信号アドレス出力４６５は、ＭＵＸ４１０、状態メモリ４３０、及びカウンタメモリ４５０に、現在の電力解析クロックサイクル中、トグル計数論理３２２によって解析される設計信号３１０を示す。設計信号アドレスが最大数にインクリメントされるか、又は次の設計クロックサイクルが開始する時、信号制御器４６０は、設計信号アドレスを、第１の設計信号アドレスに対応する初期数にリセットする。従って、信号制御器４６０は、単一の設計クロックサイクルにおける各電力解析クロック信号３５０について、設計信号アドレスを初期数から最大数に連続的にインクリメントすることにより、設計信号アドレス出力４６５を生成する。
【００５６】
ＭＵＸ４１０は、電力解析クロック３４０の現在のサイクル中に解析される設計信号３１０を選択する。ＭＵＸ４１０は、入力として、ＤＵＴの設計信号３１０を受信し、選択された設計信号４１５を出力する。ＭＵＸ４１０は、ＭＵＸ４１０が入力として受信した複数の設計信号３１０から、選択された設計信号４１５として出力される単一の設計信号３１０を選択する。ＭＵＸ４１０は、信号制御器４６０から受信した設計信号アドレス出力４６５に対応する設計信号３１０を選択する。
【００５７】
状態メモリ４３０は、以前の設計クロックサイクルにおける各設計信号３１０の状態を記憶する。状態メモリ４３０は、ＭＵＸ４１０からの選択された設計信号４１５と、信号制御器４６０からの設計信号アドレス出力４６５を入力として受信する。状態メモリ４３０は、設計信号アドレス出力４６５に基づき、以前の設計クロックサイクルにおける選択された設計信号４１５の状態を出力する。以前の設計クロックサイクルにおける状態は、状態メモリ４３０により、以前の設計信号４３５として出力される。さらに、状態メモリ４３０は、ＭＵＸ４１０から受信した、選択された設計信号４１５の現在の状態を記憶する。記憶された現在の状態は、次の設計クロックサイクル中に使用される。
【００５８】
イベント検出器４２０は、選択された設計信号４１５に対してトグルイベントが発生したか否かを判定する。イベント検出器４２０は、ＭＵＸ４１０からの選択された設計信号４１５と、状態メモリ４３０からの以前の設計信号４３５とを入力として受信する。イベント検出器４２０は、選択された設計信号４１５の状態と、以前の設計信号４３５の状態とを比較する。イベント検出器４２０は、選択された設計信号が以前の設計信号４３５の状態と同一であるか否かを示す比較に基づき、イベント検出信号４２５を出力する。従って、イベント検出信号４２５は、現在の設計クロックサイクル中、選択された設計信号４１５がその以前の状態からトグルしているか否かを示す。例えば、イベント検出信号４２５は、選択された設計信号４１５がトグルした場合にはハイ状態を有してもよく、選択された設計信号４１５がトグルしていない場合にはロー状態を有してもよい。
【００５９】
アキュムレータ４４０は、トグルイベントの発生時、トグル計数をインクリメントする。アキュムレータ４４０は、イベント検出器４２０からのイベント検出信号４２５と、カウンタメモリ４５０からの以前の状態計数４５２とを入力として受信する。以前の状態計数４５２は、選択された設計信号４１５について計数されたトグルイベントの数であるトグル計数を示す。イベント検出信号４２５が、トグルイベントが発生した（すなわち、選択された設計信号４１５がその以前の状態からトグルされた）ことを示す場合、アキュムレータ４４０は、選択された設計信号４１５のトグル計数をインクリメントする。一実施形態において、アキュムレータ４４０は、トグル計数を１の値でインクリメントする。イベント検出信号４２５が、トグルイベントが発生しなかったことを示す場合、アキュムレータ４４０は、選択された設計信号４１５のトグル計数をその現在の値に維持する。アキュムレータ４４０は、トグルイベントが発生したか否かを考慮した後、トグル計数の現在の値を現在の状態計数４４５として出力する。
【００６０】
カウンタメモリ４５０は、各設計信号３１０のトグル計数を記憶する。カウンタメモリ４５０は、信号制御器４６０からの設計信号アドレス出力４６５と、アキュムレータ４４０からの現在の状態計数４４５とを入力として受信する。カウンタメモリ４５０は、設計信号アドレス出力４６５に基づき、選択された設計信号４１５について保持されたトグル計数の現在の値を特定し、前述の通り、アキュムレータ４４０による使用のため、現在の値を以前の状態計数４５２として出力する。カウンタメモリ４５０がアキュムレータ４４０から現在の状態計数４４５を受信する時、現在の状態計数４４５は、現在の設計クロックサイクル中、トグルイベントが発生したか否かを考慮した後、トグル計数がどのような値であるべきかを示す。一実施形態において、現在の状態計数４４５において受信した値が選択された設計信号４１５について記憶されたトグル計数値と異なる場合、カウンタメモリ４５０は、アキュムレータ４４０から受信した値を有するようにトグル計数を更新する。他の実施形態において、カウンタメモリ４５０は、値が変わったか否かに関わらず、現在の状態計数４４５によって示される値を有するようにトグル計数を更新する。
【００６１】
出力生成器４７０は、現在の状態計数４４５及び閾値インジケータ４７５を受信する。一実施形態において、現在の状態計数４４５に基づき、選択された設計信号４１５のトグル計数がカウンタメモリ４５０において更新される場合、出力生成器４７０は、トグル計数について閾値インジケータ４７５に従った閾値回数に達したか否かを判定する。閾値回数に達した場合、出力生成器４７０は、計数更新信号３３０をホストシステム１１０に出力する。計数更新信号３３０は、選択された設計信号４１５のトグル計数について閾値回数に達した旨をホストシステム１１０に示す。図２を参照して上述した通り、ホストシステム１１０により、計数更新信号３３０を使用して、選択された設計信号４１５について保持された合計トグル計数を更新する。さらに、出力生成器４７０は、カウンタメモリ４５０にリセット信号４８０を出力し、選択された設計信号４１５のトグル計数を初期値（例えば、０）にリセットする。
【００６２】
図５は、一実施形態に係るロー状態計数論理３２４及びハイ状態計数論理３２６のために使用される回路５０５を示す回路図である。従って、１つの回路５０５は、ロー状態計数論理３２４のために含まれ、他の回路５０５は、ハイ状態計数論理のために含まれるであろう。ロー状態計数論理３２４として実装された回路５０５は、各設計信号３１０のロー状態の数を計数する。ハイ状態計数論理３２６として実装された回路５０５は、各設計信号３１０のハイ状態の数を計数する。
【００６３】
他の実施形態において、１つの回路５０５のみが電力解析論理３２０に含まれ、設計信号３１０についての一方の状態の計数を取得するものとしてもよい。設計信号３１０についての他方の状態の計数は、設計クロックサイクルの総数から取得された一方の状態の計数を減算することによって取得されてもよい。例えば、電力解析論理３２０は、ロー状態計数論理３２４として各設計信号についてロー状態の数を計数する回路５０５を含むものの、ハイ状態の数を計数する回路５０５を含まなくてもよい。設計信号のハイ状態の数は、設計クロックサイクルの総数からロー状態の計数された数を減算することによって取得することができる。
【００６４】
回路５０５は、信号制御器５６０、ＭＵＸ５１０、状態比較器５２０、アキュムレータ５４０、カウンタメモリ５５０、及び出力生成器５７０を含む。回路５０５の構成要素及び構成要素の構成は、図４に示すトグル計数論理３２２のものと同様である。１つの差異としては、設計信号３１０の以前の状態はモニタされる必要がないため、回路５０５は状態メモリ４３０を含まないことがある。他の差異としては、回路５０５は、イベント検出器４２０の代わりに状態比較器５２０を含むことである。
【００６５】
信号制御器５６０は、設計信号３１０の多重化に従って、回路５０５を制御する。信号制御器５６０は、電力解析クロック３４０から電力解析クロック信号３５０を受信し、出力として、ＭＵＸ５１０及びカウンタメモリ５５０への設計信号アドレス出力５６５を生成する。トグル計数論理３２２の信号制御器４６０と同様に、信号制御器５６０は、各電力解析クロックサイクル中、設計信号アドレスをインクリメントし、設計信号アドレス出力５６５として、インクリメントされた設計信号アドレスを出力する。
【００６６】
ＭＵＸ５１０は、入力として設計信号３１０を受信し、単一の設計信号３１０を選択して、選択された設計信号５１５として出力する。ＭＵＸ５１０は、信号制御器５６０から受信された設計信号アドレス出力５６５に対応する設計信号３１０を選択する。
【００６７】
状態比較器５２０は、状態イベントが、選択された設計信号５１５に対して発生したか否かを判定する。ロー状態計数論理３２４として実装された回路５０５に対する状態比較器５２０は、選択された設計信号５１５に対してロー状態イベントが発生したか否かを判定する。ハイ状態計数論理３２６として実装された回路５０５に対する状態比較器５２０は、選択された設計信号５１５に対してハイ状態イベントが発生したか否かを判定する。状態比較器５２０は、ＭＵＸ５１０からの選択された設計信号５１５を入力として受信する。状態比較器５２０は、選択された設計信号５１５の状態を判定する。ロー状態計数論理３２４に実装された状態比較器５２０は、選択された設計信号５１５がロー状態であるか否かを判定し、現在の設計クロックサイクル中、選択された設計信号５１５がロー状態であるか否かを示すイベント検出信号５２５を出力する。ハイ状態計数論理３２６に実装される状態比較器５２０は、選択された設計信号５１５がハイ状態であるか否かを判定し、現在の設計クロックサイクル中、選択された設計信号５１５がハイ状態であるか否かを示すイベント検出信号５２５を出力する。
【００６８】
回路５０５のためのアキュムレータ５４０は、状態イベントの発生時に計数をインクリメントする。ロー状態計数論理３２４として実装された回路５０５のためのアキュムレータ５４０は、ロー状態イベントの発生時、ロー計数をインクリメントする。ハイ状態計数論理３２６として実装された回路５０５のためのアキュムレータ５４０は、ハイ状態イベントの発生時、ハイ計数をインクリメントする。アキュムレータ５４０は、状態比較器５２０からのイベント検出信号５２５と、カウンタメモリ５５０からの以前の状態計数５５２とを入力として受信する。
【００６９】
ロー状態計数論理３２４に実装されたアキュムレータ５４０について、受信された以前の状態計数５５２は、選択された設計信号５１５について計数されたロー状態イベントの数であるロー計数を示す。イベント検出信号５２５が、選択された設計信号５１５がロー状態にある旨を示す場合、アキュムレータ５４０は、ロー計数を（例えば、１の値で）インクリメントする。一方、イベント検出信号５２５が、選択された設計信号５１５がロー状態にない旨を示す場合、アキュムレータ５４０は、ロー計数をその現在の値として残す。アキュムレータ５４０は、選択された設計信号５１５の状態を考慮した後、ロー計数の現在の値を現在の状態計数５４５として出力する。
【００７０】
ハイ状態計数論理３２６に実装されたアキュムレータ５４０について、受信された以前の状態計数５５２は、選択された設計信号５１５について計数されたハイ状態イベントの数であるハイ計数を示す。イベント検出信号５２５が、選択された設計信号５１５がハイ状態にある旨を示す場合、アキュムレータ５４０は、ハイ計数を（例えば、１の値で）インクリメントする。一方、イベント検出信号５２５が、選択された設計信号５１５がハイ状態にない旨を示す場合、アキュムレータ５４０は、ハイ計数をその現在の値として残す。アキュムレータ５４０は、選択された設計信号５１５の状態を考慮した後、ハイ計数の現在の値を現在の状態計数５４５として出力する。
【００７１】
カウンタメモリ５５０は、各設計信号３１０について状態計数を記憶する。ロー状態計数論理３２４として実装された回路５０５のためのカウンタメモリ５５０は、各設計信号３１０のロー計数を記憶する。ハイ状態計数論理３２６として実装された回路５０５のためのカウンタメモリ５５０は、各設計信号３１０についてのハイ計数を記憶する。カウンタメモリ５５０は、設計信号アドレス出力５６５と現在の状態計数５４５とを入力として受信する。
【００７２】
カウンタメモリ５５０は、設計信号アドレス出力５６５に基づき、選択された設計信号５１５について保持された状態計数の現在の値（ロー状態計数論理３２４についてのロー計数と、ハイ状態計数論理３２６についてのハイ計数）を特定し、現在の値を、アキュムレータ５４０による使用のために、以前の状態計数５５２として出力する。カウンタメモリ５５０がアキュムレータ５４０から現在の状態計数５４５を受信する時、現在の状態計数５４５は、選択された設計信号５１５については状態計数がどの値であるべきかを示す。カウンタメモリ５５０は、現在の状態計数５４５によって示される値を有するように状態計数を更新する。
【００７３】
出力生成器５７０は、現在の状態計数５４５と閾値インジケータ５７５とを受信する。一実施形態において、選択された設計信号５１５の対応計数（例えば、ロー計数又はハイ計数）が現在の状態計数５４５に基づいてカウンタメモリ５５０内で更新される場合、出力生成器５７０は、対応計数について閾値インジケータ５７５に従った閾値回数に達したか否かを判定する。閾値回数に達した場合、出力生成器５７０は、対応する計数更新信号３３０をホストシステム１１０に出力する。また、出力生成器５７０は、リセット信号５８０をカウンタメモリ５５０に出力し、選択された設計信号５１５の計数を初期値（例えば、０）にリセットする。一実施形態において、計数更新信号３３０は、他の計数更新信号３３０又は他の情報とともに、ホストシステム１１０への送信のために多重化可能である。
【００７４】
トグル計数論理３２２、ロー状態計数論理３２４、及びハイ状態計数論理３２６が各々の回路構成要素を有するものとして説明したが、他の実施形態において、計数論理は、１つ以上の構成要素を共有してもよい。例えば、計数論理は、少なくともＭＵＸ、信号制御器、及びイベント検出器を共有してもよい。
【００７５】
有益なことに、電力解析論理３２０は、エミュレータ１２０上に実装されるハードウェアの数の削減を達成する。一例として、ＤＵＴがモニタ対象の設計信号を１０億個含む場合、本開示の電力解析論理３２０がなければ、少なくとも１０億個のカウンタを各状態イベントに対して実装しなければならないであろう。状態イベントのサンプルを「２５６」まで計数するために、各カウンタは、少なくとも「８」個のレジスタ（例えば、ビット）を実装する。従って、電力解析論理３２０を設けることなく、各設計信号３１０についてのトグル数、ロー状態、及びハイ状態を追跡するには、合計「２４０」億個のレジスタが必要とされるであろう。電力解析論理３２０は、「２４０」億個のレジスタをたった数千個のメモリ（例えば、ＦＰＧＡに内蔵される）に置き換え、電力解析を実施するために実装されるハードウェアを大幅に低減する。
【００７６】
さらに、電力解析論理３２０は、設計信号３１０の多重化によって実装される論理回路の削減を可能にする。上述の例については、多重化レート「１００」でＤＵＴの設計信号３１０を多重化することにより、「１」千万の電力解析論理３２０を実装してもよい。多重化により、電力解析論理３２０は、実装されるカウンタ論理をほぼ多重化レート程度、低減した。
【００７７】
さらに、カウンタメモリにおける所定の閾値まで計数することにより、アキュムレータのサイズをさらに小さくしてもよい。また、ホストシステム１１０との通信帯域幅が低減される。例えば、所定の閾値は、「４」であってもよく、従って、各アキュムレータにはたったの「２」ビットが必要とされてもよい。さらに、アキュムレータ４４０のサイズを一層小さくする。また、計数更新信号３３０の送信が分散され、計数が所定閾値に達する時、計数更新信号３３０が２値表現で送信されるため、状態イベント計数を同時にすべて、又は恒常的に送信する場合に比べて、ホストシステム１１０との通信帯域幅を低減する。
【００７８】
図６は、一例としての実施形態に係るエミュレーションのためにＤＵＴを準備するホストシステム１１０を示すフロー図である。他の実施形態では、図６のステップを異なる順に実施することができる。また、他の実施形態では、本明細書に記載のものとは異なる且つ／又は追加のステップを含むことができる。
【００７９】
ホストシステム１１０は、ユーザから、ＨＤＬによるＤＵＴの記述を取得する（６１０）。ホストシステム１１０は、ＤＵＴのＨＤＬ記述を編集することにより、電力解析論理３２０をＤＵＴに組み込む（６２０）。ホストシステム１１０は、電力解析論理３２０が組み込まれたＤＵＴのＨＤＬ記述を合成して（６３０）、ゲートレベルネットリストを作成する。他の実施形態において、合成に先立って電力解析論理３２０をＤＵＴに組み込む代わりに、ＤＵＴのＨＤＬ記述の合成後に電力解析論理３２０を組み込む。
【００８０】
ホストシステム１１０は、ゲートレベルネットリストを使用して、ゲートレベルにおいてＤＵＴをパーティション化し、多数のパーティションに分ける（６４０）。ホストシステム１１０は、各パーティションをエミュレータ１２０の１つ以上のＦＰＧＡにマップする（６５０）。
【００８１】
図７は、一実施形態に係る、電力解析論理３２０が組み込まれたＤＵＴのエミュレーション中、エミュレータ１２０からエミュレーション結果を取得するホストシステム１１０を示すフロー図である。他の実施形態では、図７のステップを異なる順に実施することができる。また、他の実施形態では、本明細書に記載のものとは且つ／又は追加のステップを含むことができる。
【００８２】
ホストシステム１１０は、エミュレータ１２０を始動し（７１０）、ＤＵＴのエミュレーションを実行する。ホストシステム１１０は、エミュレータ１２０からの計数更新信号３３０の受信についてモニタする（７２０）。エミュレータ１２０から、設計信号３１０の特定の状態計数が閾値回数に達した旨を示す計数更新信号３３０を受信したことに応じて、ホストシステム１１０は、設計信号３１０の状態について適切な合計計数をインクリメントする（７３０）。従って、計数更新信号３３０が、設計信号３１０のトグル計数が閾値回数に達した旨を示す場合、ホストシステム１１０は、設計信号３１０の合計トグル計数をインクリメントする。同様に、計数更新信号３３０が、信号３１０のロー計数が閾値に達した旨を示す場合、設計信号３１０の合計ロー計数をインクリメントする。計数更新信号３３０が、信号のハイ計数が閾値に達した旨を示す場合、設計信号３１０の合計ハイ計数がインクリメントされる。一実施形態において、ホストシステム１１０は、適切な合計計数を閾値回数でインクリメントする。
【００８３】
ホストシステム１１０は、エミュレーションの実行が完了したか否かを判定する（７５０）。エミュレーションの実行が完了していない場合、ホストシステム１１０は、ステップ７２０に戻り、追加の計数更新信号３３０についてモニタを行う。一方、エミュレーションの実行が完了した場合、ホストシステム１１０は、エミュレータ１２０から、各設計信号３１０について、設計信号３１０について保持された各状態計数の現在の値（少なくともトグル計数、ロー計数、及びハイ計数の現在の値）を取得する（７６０）。
【００８４】
ホストシステム１１０は、各設計信号３１０について、取得された現在の値に基づき、適切な合計計数をインクリメントする（７７０）（例えば、合計トグル計数を、取得された現在のトグル計数値で更新する）。ホストシステム１１０は、合計計数を含む結果ファイルを作成する（７８０）。従って、各設計信号３１０について、結果ファイルは、ＤＵＴのエミュレーション中に発生した、少なくともトグル総数（合計トグル計数）、ロー状態の総数（合計ロー計数）、及びハイ状態の総数（合計ハイ計数）を含む。
【００８５】
図８は、一例としての実施形態に係る、ＤＵＴに組み込まれた計数論理（トグル計数論理３２２、ロー状態計数論理３２４、又はハイ状態計数論理３２６）のエミュレート時にエミュレータ１２０によって実施されるプロセスを示すフロー図である。図８に示されるプロセスは、ＤＵＴの単一の設計クロックサイクル中に実施される。このプロセスは、各後続設計クロックサイクルについて反復される。他の実施形態では、図８のステップを異なる順に実施することができる。また、他の実施形態では、本明細書に記載のものとは且つ／又は追加のステップを含むことができる。
【００８６】
プロセス開始時、エミュレータ１２０は、ＤＵＴの複数の設計信号を受信する（８１０）。エミュレータ１２０は、受信された設計信号から設計信号３１０を選択する（８２０）。エミュレータ１２０は、選択された設計信号について計数論理によって追跡された状態イベント（トグルイベント、ロー状態イベント、又はハイ状態イベント）が検出されるか否かを判定する（８３０）。状態イベントが検出されない場合、エミュレータ１２０は後述のステップ８７０までスキップする。
【００８７】
状態イベントが検出された場合、エミュレータ１２０は、選択された設計信号の状態イベントに関連付けられた状態計数をインクリメントし（８４０）、状態計数が所定閾値に達したか否かを判定する（８５０）。状態計数が閾値に達していない場合、エミュレータ１２０は、後述のステップ８７０までスキップする。状態計数が閾値に達した場合、エミュレータ１２０は、選択された設計信号の状態計数が閾値に達した旨を示す計数更新信号をホストシステム１１０に出力する（８６０）。プロセスは、ステップ８７０に移行する。
【００８８】
ステップ８７０において、エミュレータ１２０は、現在の設計クロックサイクル中、受信された各設計信号が解析されたか否かを判定する（８７０）。各設計信号が解析されていない場合、エミュレータ１２０は、未解析の他の設計信号を選択し（８８０）、ステップ８３０までスキップする。一方、現在の設計クロックサイクル中、各設計信号が解析された場合、プロセスは終了する。
【００８９】
＜演算機械の構造＞
以下、図９を参照すると、同図は、機械可読媒体からの指示を読み取り、プロセッサ（又はコントローラ）でそれらを実行可能な一例としての機械の構成要素を示すブロック図である。具体的には、図９は、機械に図１〜図８に記載の方法論のうちの任意の１つ以上を実施（実行）させる指示９２４（例えば、ソフトウェア又はプログラムコード）を備えたコンピュータシステム９００という一例としての形態における機械を図式的に示している。コンピュータシステム９００は、図１のエミュレーション環境１００に示される実体（例えば、ホストシステム１１０、エミュレータ１２０）のうちの１つ以上に使用されてもよい。
【００９０】
この例としてのコンピュータシステム９００は、ハードウェアプロセッサ９０２（例えば、中央処理部（ＣＰＵ））、グラフィクス処理部（ＧＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、１つ以上のアプリケーション専用集積回路（ＡＳＩＣ）、１つ以上の無線周波数集積回路（ＲＦＩＣ）、又はこれらの任意の組み合わせ）と、メインメモリ９０４と、静的メモリ９０６とを含み、これらは、バス９０８を介して互いに通信するように構成される。コンピュータシステム９００は、さらに、グラフィクス表示部９１０（例えば、プラズマディスプレイパネル（ＰＤＰ）、液晶ディスプレイ（ＬＣＤ）、プロジェクタ、又はブラウン管（ＣＲＴ））を含んでもよい。コンピュータシステム９００は、また、英数字入力装置９１２（例えば、キーボード）、カーソル制御装置９１４（例えば、マウス、トラックボール、ジョイスティック、動きセンサ、又はその他のポインティング装備）、記憶部９１６、信号生成装置９１８（例えば、スピーカ）、及びネットワークインタフェース装置９２０を含んでもよく、これらも、バス９０８を介して通信するように構成される。
【００９１】
記憶部９１６は、本明細書に記載の方法論又は機能のうちの任意の１つ以上を実施する指示９２４（例えば、ソフトウェア）の記憶された機械可読媒体９２２を含む。指示９２４（例えば、ソフトウェア）は、また、コンピュータシステム９００によって実行されている間、完全に、又は少なくとも部分的に、メインメモリ９０４内又はプロセッサ９０２内（例えば、プロセッサのキャッシュメモリ内）に存在してもよく、メインメモリ９０４及びプロセッサ９０２もまた機械可読媒体を構成している。指示９２４（例えば、ソフトウェア）は、ネットワークインタフェース装置９２０を介してネットワーク９２６によって送受信されてもよい。
【００９２】
一例としての実施形態において、単一の媒体であるものとして機械可読媒体９２２を示しているが、「機械可読媒体」という用語は、指示（例えば、指示９２４）を記憶可能な単一の媒体又は複数の媒体（例えば、中央化又は分散化されたデータベース、又は関連キャッシュ及びサーバ）を含むものと捉えられなければならない。「機械可読媒体」という用語は、また、機械による実行のために指示（例えば、指示９２４）を記憶することができ、機械に、本明細書に記載の方法論のうちの任意の１つ以上を実施させる任意の媒体を含むものとして捉えられなければならない。「機械可読媒体」という用語は、固体メモリ、光学媒体、及び磁気媒体の形態のデータリポジトリを含むが、これに限定されるものでない。
【００９３】
当分野で既知の通り、コンピュータシステム９００は、図９に示すものとは異なる且つ／又は他の構成要素を有することができる。また、コンピュータシステム９００は、図示のうちの特定の構成要素を省略することができる。例えば、エミュレータ１２０として作用するコンピュータシステム９００は、他の構成要素の中でも、ハードウェアプロセッサ９０２、記憶部９１６、ネットワークインタフェース装置９２０、及び複数の構成可能な論理回路（図１を参照して上述の通り）を含んでもよく、英数字入力装置９１２及びカーソル制御装置９１４を省略してもよい。
【００９４】
＜追加構成の考察＞
本主題はデジタル回路及びシステムのエミュレーションのためのエミュレーション環境の文脈の中で説明を行ったが、記載の原則は、任意にデジタル電子装置の解析に適用されてもよいことに留意しなければならない。本開示の構成の効果には、複雑なデジタル回路及びシステムの電力解析を効率的に実施するためにハードウェアリソースを共有することと、ホストシステム及びエミュレータの間で転送されるデータの帯域幅を削減することとが含まれる。さらに、本明細書中の例はエミュレーション環境の文脈におけるものであったが、本明細書に記載の原則は、ＦＰＧＡ及びＡＳＩＣを含むデジタル回路のハードウェア実装の他の解析、又はＥＤＡ等のソフトウェアシミュレーションに適用可能である。
【００９５】
本明細書を通じて、複数の事例により、単一の事例として説明した構成要素、動作、又は構造を実装してもよい。１つ以上の方法の個々の動作を別の動作として図示及び説明したが、個々の動作のうちの１つ以上は、同時に実施されてもよく、動作を図示の順に実施する必要はない。例としての構成において別の構成要素として提示された構造及び機能は、組み合わせられた構造又は構成要素として実装されてもよい。同様に、単一の構成要素として提示された構造及び機能は、別の構成要素として実装されてもよい。これらのバリエーション、修正、追加、及び改良、並びに他のバリエーション、修正、追加、及び改良は、本明細書の主題の範囲内である。
【００９６】
本明細書中、特定の実施形態について、例えば、図１〜図８に示される通り、論理又は多数の構成要素、モジュール、又は機構を含むものとして説明した。モジュールは、ソフトウェアモジュール（例えば、機械可読媒体又は送信信号に組み込まれたコード）又はハードウェアモジュールのいずれかからなってもよい。ハードウェアモジュールは、特定の動作を実施可能な有形ユニットであり、特定の方法で構成又は配置されてもよい。一例としての実施形態において、１つ以上のコンピュータシステム（例えば、スタンドアロン型、クライアント又はサーバコンピュータシステム）又はコンピュータシステムの１つ以上のハードウェアモジュール（例えば、プロセッサ又はプロセッサ群）が、本明細書に記載の特定の動作を実施するように動作するハードウェアモジュールとしてソフトウェア（例えば、アプリケーション又はアプリケーション部分）によって構成されてもよい。
【００９７】
種々の実施形態において、ハードウェアモジュールは、機械的又は電子的に実装されてもよい。例えば、ハードウェアモジュールは、特定の動作を実施するように永続的に構成された（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又はアプリケーション専用集積回路（ＡＳＩＣ）等の特殊目的プロセッサ）専用回路又は論理からなってもよい。ハードウェアモジュールは、また、特定の動作を実施するようにソフトウェアで一時的に構成されたプログラマブル論理又は回路（例えば、汎用プロセッサ又はその他のプログラマブルプロセッサに含まれる）からなってもよい。専用且つ永続的に構成された回路又は一時的に構成された（例えば、ソフトウェア（又はコンピュータプログラムコード）で構成された）回路のいずれにおいて機械的にハードウェアモジュールを実装するかは、コスト及び時間を考慮して決定されてもよいことが認識されるであろう。
【００９８】
本明細書に記載の例としての方法の種々の動作は、少なくとも部分的に、関連動作を実施するように一時的に（例えば、ソフトウェアによって）構成されたか、又は永続的に構成された、例えば、プロセッサ９０２等の１つ以上のプロセッサによって実施されてもよい。一時的に構成されるか、永続的に構成されるかに関わらず、このようなプロセッサは、１つ以上の動作又は機能を実施するように動作するプロセッサ実装モジュールからなってもよい。本明細書中で言及するモジュールとは、いくつかの例としての実施形態においては、プロセッサ実装モジュールからなってもよい。
【００９９】
１つ以上のプロセッサは、また、「クラウドコンピューティング」環境において、又は「サービスとしてのソフトウェア（ＳａａＳ）として、関連動作の性能をサポートするように動作してもよい。例えば、動作のうちの少なくともいくつかは、コンピュータ群（プロセッサを含む機械の例として）によって実施されてもよく、これらの動作は、ネットワーク（例えば、インターネット）及び１つ以上の適切なインタフェース（例えば、アプリケーションプログラムインタフェース（ＡＰＩ））を介してアクセス可能であってもよい。
【０１００】
特定の動作の性能は、単一の機械に存在するものだけでなく、多数の機械に亘って展開している１つ以上のプロセッサ間で分散されてもよい。いくつかの例としての実施形態において、１つ以上のプロセッサ又はプロセッサ実装モジュールは、単一の地理的位置（例えば、家庭環境、オフィス環境、又はサーバファーム）に配置されてもよい。他の例としての実施形態において、１つ以上のプロセッサ又はプロセッサ実装モジュールは、多数の地理的位置に亘って分散されてもよい。
【０１０１】
本明細書のいくつかの部分は、機械メモリ（例えば、コンピュータメモリ）内にビット又は２値デジタル信号として記憶されたデータへの動作のアルゴリズム又は符号表現として提示した。これらのアルゴリズム又は符号表現は、データ処理分野の当業者が、自らの仕事の内容を他の当業者に伝達する際に使用する技術の例である。本明細書において使用される通り、「アルゴリズム」は、動作の自己無撞着シーケンスであるか、又は所望の結果を導く同様の処理である。この文脈において、アルゴリズム及び動作は、物理的実体の物理的操作を含む。通常、このような実体は、機械による記憶、アクセス、転送、結合、比較、又はその他の操作の可能な電気信号、磁気信号、又は光学信号の形態を採ってもよいが、必ずしもこれに限られない。時として、原則的には、一般的使用のために、「データ」「コンテンツ」「ビット」「値」「要素」「符号」「文字」「用語」「数」「数値」等の単語を使用してこのような信号を言及することが簡便である。しかしながら、これらの単語は、単に簡便なラベルであり、適切な物理的実体と関連付けられなければならない。
【０１０２】
特段の指摘のない限り、「処理」「演算」「計算」「判定」「提示」「表示」等の単語を使用した、本明細書における検討は、情報の受信、記憶、送信、又は表示を行う、１つ以上のメモリ（例えば、揮発性メモリ、不揮発性メモリ、又はそれらの組み合わせ）、レジスタ、又は他の機械構成要素内の物理的（例えば、電子的、磁気的、又は光学的）実体として表現れるデータを操作又は変換する機械（例えば、コンピュータ）の作用又はプロセスをいうものであってもよい。
【０１０３】
本明細書で使用される通り、「一実施形態」又は「実施形態」という任意の言及は、その実施形態との関係で説明した特定の要素、特徴、構造、又は性質が少なくとも１つの実施形態に含まれることを意味する。本明細書中、種々の箇所で現れる「一実施形態において」というフレーズは、必ずしも、同一の実施形態をいうものでない。
【０１０４】
いくつかの実施形態は、「連結された」及び「接続された」という表現をそれらの派生語とともに使用して説明されてもよい。例えば、いくつかの実施形態では、「連結された」という用語を使用して、２つ以上の要素が直接的な物理的又は電気的接触状態にあることを示してもよい。しかしながら、「連結された」という用語は、また、２つ以上の要素が互いに直接接触していないものの、依然として互いに協働又は相互作用する場合も意味してよい。実施形態は、この文脈において限定されるものでない。
【０１０５】
本明細書において使用される通り、「備える」「備えた」「含む」「含んだ」「有する」「有した」という用語、又はこれらの他の任意のバリエーションは、非排他的包含を網羅することを意図されている。例えば、要素を列挙されたプロセス、方法、物体、又は装置は、必ずしも、これらの要素のみに限定されるものでなく、明示的に列挙されていないか、若しくはこれらのプロセス、方法、物体、又は装置に伴う他の要素を含んでもよい。さらに、否定的内容の明示がない限り、「又は」とは、包括的な「又は」をいうものであり、排他的な「又は」でない。例えば、条件Ａ又はＢは、以下のうちのいずれか１つによって満たされる。Ａが真であり（又は、存在する）、Ｂが偽である（又は、存在しない）か、Ａが偽であり（又は、存在しない）、Ｂが真である（又は存在する）か、Ａ及びＢの双方が真である（又は、存在する）。
【０１０６】
また、本明細書の実施形態の要素及び構成要素を説明するために不定冠詞の使用を採用した。これは、単に簡便性のためであり、本発明の一般性を与えるためである。本記載は、１つ、又は少なくとも１つを含むものとして読み取られなければならず、及び単数は、そうでないことが明らかでない限り、複数も含む。
【０１０７】
当業者は、本開示を熟読することにより、本明細書に開示の原則を通じて、デジタル回路の効率的な電力解析を行うためのシステム及びプロセスについてさらなる代替の構造的設計及び機能的設計を認識するであろう。従って、特定の実施形態及び応用について図示及び説明を行ったが、本開示の実施形態は、本明細書に開示の厳密な構造及び構成要素に限定されるものでないことを理解されなければならない。添付の請求項に規定の精神及び範囲から逸脱することなく、本明細書に開示の方法及び装置の配置、動作、及び詳細には、当業者にとって明らかとなる種々の修正、変更、及びバリエーションが加えられてもよい。
【図１】
0006527226.tif 000002
【図２】
0006527226.tif 000003
【図３】
0006527226.tif 000004
【図４】
0006527226.tif 000005
【図５】
0006527226.tif 000006
【図６】
0006527226.tif 000007
【図７】
0006527226.tif 000008
【図８】
0006527226.tif 000009
【図９】
0006527226.tif 000010