(57)【特許請求の範囲】
【請求項１】
デジタルシステムのハードウェア構成及びプログラムの内容を示す設計データに基づき前記デジタルシステムのシミュレーションを行うことにより、前記プログラムを実行している状態にある前記デジタルシステム内の各ブロックの動作状態を時系列的に取得すると共に、各ブロックの動作状態の変化時における前記デジタルシステム内のプログラムカウンタの値を取得するシミュレーション部と、
前記シミュレーション部による前記プログラムカウンタの値と、前記プログラムとに基づき、前記プログラムに含まれる各関数について、その関数が実行される期間を特定する関数トレース部と、
成立しているか否かが前記デジタルシステムの１つ以上のブロックの動作状態と前記プログラムの１つ以上の関数の実行状態とから定まる制約条件を操作者から取得する取得部と、
前記シミュレーション部による各ブロックの動作状態の結果と前記関数トレースによる各関数が実行される期間の特定結果とに基づき、前記取得部によって取得された前記制約条件が成立しない期間を特定する制約条件検証部と、
前記シミュレーション部によって把握された各ブロックの時系列的な動作状態を示す情報、前記関数トレース部によって特定された各関数が実行される期間を示す情報、及び、前記制約条件検証部によって特定された前記制約条件が成立しない期間を示す情報を含む検証結果を出力する出力部と
を備えることを特徴とする検証装置。
【請求項２】
前記シミュレーション部による各ブロックの動作状態に基づき、前記デジタルシステムについての、各種時刻における統計量を算出する統計量算出部を、さらに備え、
前記出力部は、
前記シミュレーション部によって取得された各ブロックの時系列的な動作状態を示す情報、前記関数トレース部によって特定された各関数が実行される期間を示す情報、前記制約条件検証部によって特定された前記制約条件が成立しない期間を示す情報、及び、前記統計量算出部によって算出された各種時刻における統計量を示す情報を含む検証結果を出力する
ことを特徴とする請求項１記載の検証装置。
【請求項３】
前記取得部は、
前記デジタルシステムの１つ以上のブロックの動作状態を指定する指定情報、前記プログラムの１つ以上の関数の実行状態を指定する指定情報、及び、前記デジタルシステムについての前記統計量の値を指定する指定情報の中の，１種乃至３種の指定情報を含む制約条件を操作者から取得し、
前記制約条件検証部は、
前記シミュレーション部による各ブロックの動作状態、前記関数トレースによる各関数が実行される期間、及び、前記統計量算出部によって算出された各種時刻における統計量の中の、前記取得部によって取得された前記制約条件の内容に応じた数、種類の情報に基づき、当該制約条件が成立しない期間を特定する
ことを特徴とする請求項２記載の検証装置。
【請求項４】
前記シミュレーション部として機能するハードウェア論理シミュレータを備え、
前記制約条件検証部は、
前記シミュレーション部による各ブロックの動作状態と、前記特定部による各関数が実行された期間とを入力すると、前記制約条件が満たされていない期間だけに他の期間とは異なるレベルとなる信号を出力する回路の構成を示すハードウェア記述を前記取得部によって取得された前記制約条件に基づき生成し、生成したハードウェア記述に基づくシミュレーションを前記ハードウェア論理シミュレータに行わせることにより、前記制約条件が成立しない期間を特定する
ことを特徴とする請求項１乃至請求項３のいずれか一項に記載の検証装置。
【請求項５】
コンピュータに、
プログラムを実行するデジタルシステム内の１つ以上のブロックの動作状態と前記プログラムの１つ以上の関数の実行状態とから成立しているか否かが定まる制約条件を操作者から取得する取得手順と、
シミュレーションにより得られた、前記プログラムを実行している状態にある前記デジタルシステム内の各ブロックの各時刻における動作状態を示すハードウェア状態情報、及び前記デジタルシステムによる前記プログラムの実行中に前記プログラムに含まれる各関数が実行される期間を示すプログラム状態情報に基づき、前記取得手順によって取得された前記制約条件が成立しない期間を特定する制約条件検証手順と、
前記ハードウェア状態情報、前記プログラム状態情報、及び、前記制約条件検証手順により特定された前記制約条件が成立しない期間に基づき、前記デジタルシステム内の各ブロックの時系列的な動作状態を示す情報、前記プログラム内の各関数が実行される期間を示す情報、及び、前記制約条件が成立しない期間を示す情報を含む検証結果を出力する出力手順と
を実行させることを特徴とする検証プログラム。
【請求項６】
デジタルシステムのハードウェア構成及びプログラムの内容を示す設計データに基づき前記デジタルシステムのシミュレーションを行うことにより、前記プログラムを実行している状態にある前記デジタルシステム内の各ブロックの動作状態を時系列的に把握すると共に、各ブロックの動作状態の変化時における前記デジタルシステム内のプログラムカウンタの値を把握するシミュレーション部と、
前記シミュレーション部による前記プログラムカウンタの値の把握結果と、前記プログラムとに基づき、前記プログラムに含まれる各関数について、その関数が実行される期間を特定し、かつ、関数のコール関係を解析し、呼び出し元別の関数毎に、その関数の実行状態の時間変化を示す、ハードウェア向けの波形表示ツールに入力可能な波形データを生成する関数トレース部と
を備えることを特徴とする検証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを実行するデジタルシステムのハードウェアとソフトウェアの協調検証を行うための検証装置及び検証プログラムに関する。
【背景技術】
【０００２】
今日のデジタルシステムの多くは、ソフトウェアとハードウェアが混在したシステム、つまり、ソフトウェア（プログラム）の実行状態を考慮しなければハードウェアの実行状態の妥当性を実証できないシステムとなっている。そのため、そのようなデジタルシステムの設計時には、さまざまな方法（手順）、例えば、ハードウェアとソフトウェアとを個別にシミュレーションしてシミュレーション結果を比較するといった方法や、ハードウェア論理シミュレータからＡＰＩ経由でソフトウェアをシミュレーションするオブジェクトを呼び出すといった方法で、ソフトウェアとハードウェアの協調検証が行われている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−３２１８４８号公報
【特許文献２】特開２０００−１１３０２１号公報
【特許文献３】特開２００３−２０８３３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
さて、デジタルシステムのソフトウェアとハードウェアの協調検証時には、ソフトウェアの状態とハードウェアの状態とが意図通りに変化することを確認しなければならない。ただし、既存の協調検証方法は、そのことの確認（又は、不具合箇所の特定）に時間がかかるものとなっている。何故ならば、既存の協調検証方法は、煩雑な，時間がかかる作業（各時刻におけるシミュレーション結果の比較等）を行わないと、各時刻におけるソフトウェアの状態とハードウェアの状態との関係を把握できないものとなっているからである。
【０００５】
そこで、開示の技術の課題は、プログラムを実行するデジタルシステムのハードウェアとソフトウェアの協調検証を行うための検証装置及び検証プログラムであって、各時刻におけるソフトウェアの状態とハードウェアの状態との関係を簡単にチェックすることが出来る検証装置及び検証プログラムを提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、開示の技術の一態様の検証装置は、デジタルシステムのハードウェア構成及びプログラムの内容を示す設計データに基づき前記デジタルシステムのシミュレーションを行うことにより、前記プログラムを実行している状態にある前記デジタルシステム内の各ブロックの動作状態を時系列的に取得すると共に、各ブロックの動作状態の変化時における前記デジタルシステム内のプログラムカウンタの値を取得するシミュレーション部と、前記シミュレーション部による前記プログラムカウンタの値と、前記プログラムとに基づき、前記プログラムに含まれる各関数について、その関数が実行される期間を特定する関数トレース部と、成立しているか否かが前記デジタルシステムの１つ以上のブロックの動作状態と前記プログラムの１つ以上の関数の実行状態とから定まる制約条件を操作者から取得する取得部と、前記シミュレーション部による各ブロックの動作状態の結果と前記関数トレースによる各関数が実行される期間の特定結果とに基づき、前記取得部によって取得された前記制約条件が成立しない期間を特定する制約条件検証部と
、前記シミュレーション部によって把握された各ブロックの時系列的な動作状態を示す情報、前記関数トレース部によって特定された各関数が実行される期間を示す情報、及び、前記制約条件検証部によって特定された前記制約条件が成立しない期間を示す情報を含む検証結果を出力する出力部とを備える。
【０００７】
また、開示の技術の一態様の検証プログラムは、コンピュータに、プログラムを実行するデジタルシステム内の１つ以上のブロックの動作状態と前記プログラムの１つ以上の関数の実行状態とから成立しているか否かが定まる制約条件を操作者から取得する取得手順と、前記プログラムを実行している状態にある前記デジタルシステム内の各ブロックの各時刻における動作状態を示すハードウェア状態情報と、前記デジタルシステムによる前記プログラムの実行中に前記プログラムに含まれる各関数が実行される期間を示すプログラム状態情報とに基づき、前記取得手順によって取得された前記制約条件が成立しない期間を特定する制約条件検証手順と、前記ハードウェア状態情報、前記プログラム状態情報、及び、前記制約条件検証手順により特定された前記制約条件が成立しない期間に基づき、前記デジタルシステム内の各ブロックの時系列的な動作状態を示す情報、前記プログラム内の各関数が実行される期間を示す情報、及び、前記制約条件が成立しない期間を示す情報を含む検証結果を出力する出力手順とを実行させる構成を有する。
【発明の効果】
【０００８】
上記構成を有する検証装置及び検証プログラムによれば、制約条件の入力により、各時刻におけるソフトウェアの状態とハードウェアの状態、さらに、統計データや電力データとの関係を目視でチェックまたは自動でチェックできるので、協調検証に要する時間や不具合箇所の特定に要する時間を短縮できることになる。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係る検証装置の構成図。
【図２】実施形態に係る検証装置の全体的な動作内容を示すデータフロー図。
【図３】検証装置１内のＣＰＵが検証プログラムに従って実行する処理の流れ図。
【図４】プログラム内の各関数に割り当てられる関数ＩＤの説明図。
【図５】関数トレース処理（通常モード）の内容を説明するための図。
【図６】関数に関する各状態値に割り当てられる関数値ＩＤの説明図。
【図７】関数トレース処理（通常モード）により生成される関数トレースデータの内容を説明するための図。
【図８】関数トレース処理（通常モード）により生成される関数トレースデータの内容を説明するための図。
【図９】関数トレース処理（シンプルモード）により生成される関数トレースデータの内容を説明するための図。
【図１０】検証装置内のＣＰＵが検証プログラムに従って実行するアサーション処理の流れ図。
【図１１】ＨＷアクティビティデータの一例の説明図。
【図１２】関数トレースデータの一例の説明図。
【図１３】図１１のＨＷアクティビティデータから、アサーション検査処理時に生成されるＨＷアクティビティデータの説明図。
【図１４】アサーション検査回路の設計例の説明図。
【図１５】アサーション検査回路内のＨＷデータローダ回路の設計データの説明図。
【図１６】ＨＷデータローダ回路の機能の説明図。
【図１７】検証装置の表示装置に処理結果として表示される情報の説明図。
【発明を実施するための形態】
【００１０】
以下、発明者らが開発した検証装置の一例（以下、実施形態に係る検証装置と表記する
）を、図面を参照して詳細に説明する。なお、以下の説明では、ハードウェア記述言語のことを、ＨＤＬと表記し、或るハードウェアの構成をＨＤＬで記述したデータのことを、設定データと表記する。
【００１１】
図１に示してあるように、実施形態に係る検証装置１は、表示装置１０ａ及び入力装置１０ｂが接続されているコンピュータ１０に、ハードウェア論理シミュレータ１１、波形ビューワ１２及び検証プログラム１３をインストールした装置である。
【００１２】
この検証装置１は、マイクロコントローラ等の，ハードウェアとソフトウェアが混在したデジタルシステムのＨＷ／ＳＷ（ハードウェア／ソフトウェア）協調検証を行うための装置である。
【００１３】
検証装置１にインストールされているハードウェア論理シミュレータ１１（以下、ＨＷ論理シミュレータ１１とも表記する）は、或るハードウェアの設計データに基づき、そのハードウェアのシミュレーションを行えるプログラムである。波形ビューワ１２は、所定フォーマット（本実施形態では、ＶＣＤ(Value Change Dump)フォーマット）の波形デー
タに基づき、その波形データが示している各種波形のグラフィック表示を行うプログラムである。これらのプログラムは、従来より使用されているプログラム（検証装置１用に開発したものではないプログラム）となっている。
【００１４】
検証プログラム１３は、検証装置１用のものとして開発したプログラム（詳細は後述）である。そして、本検証装置１は、ＨＷ論理シミュレータ１１及び波形ビューワ１２をインストール済みのコンピュータ１０に、検証プログラム１３を、それを記録した可搬型記録媒体（図示略）から追加的にインストールした装置となっている。
【００１５】
以上のことを前提に、以下、実施形態に係る検証装置１の構成及び動作をさらに具体的に説明する。なお、以下の説明では、検証装置１を用いて、ＨＷ／ＳＷ協調検証を行う，ハードウェアとソフトウェアが混在したデジタルシステムのことを、検証対象システムと表記する。
【００１６】
まず、検証装置１についてのデータフロー図である図２を用いて、検証装置１の利用時（検証装置１を用いて検証対象システムのＨＷ／ＳＷ協調検証を行う場合）に、オペレータが行う情報入力作業の内容を説明する。
【００１７】
検証装置１の利用時には、検証装置１に、検証対象システムの設計データ２３と検証対象システム用のプログラム２５とが入力される。なお、検証装置１に入力される設計データ２３は、検証対象システムが実行するプログラム２３ａを含むもの（プログラム２３ａを記憶したＲＯＭが記述されているもの）である。また、検証装置１に入力されるプログラム２５は、プログラム２３ａ自体ではなく、プログラム２３ａのソースデータである。
【００１８】
検証装置１の利用時には、幾つかのアクティビティ計測回路の設計データ２１及び幾つかの統計データ計測回路の設計データ２２も、検証装置１に入力される。ここで、アクティビティ計測回路とは、検証対象システム内の特定のブロック（特定の処理を行うための回路）の動作状態（アクティブ状態、アイドル状態等）を示す数値情報をアクティビティとして出力する回路のことである。また、統計データ計測回路とは、検証対象システム内の特定のブロックに関する統計データ（流量等）を出力する回路のことである。
【００１９】
設計データ２１、２２の入力は、通常、検証装置１を用いて、ＨＷ／ＳＷ協調検証のためにアクティビティ／統計データを収集（計測）したいブロック毎に、アクティビティ計測回路／統計データ計測回路を設計することにより行われる。なお、本明細書において、
〜回路を設計するとは、〜回路の構成をＨＤＬで記述する（つまり、〜回路の設計データを作成する）ということである。
【００２０】
この際、設計するアクティビティ計測回路は、目的とするブロックのアクティビティ（動作状態を示す数値情報）を計測・出力できるものでありさえすれば、どのような回路構成のものであっても良い。従って、例えば、「スタートレジスタに１が書き込まれたときに動作を開始し、動作終了時にエンドレジスタに１を書き込む、アイドル状態とアクティブ状態しかないブロックα」用のアクティビティ計測回路としては、「ブロックαのスタートレジスタに１が立ってからブロックαのエンドレジスタに１が立つまでの間に限り、その値が１（又は０）となるアクティビティ（１ビットの信号）を出力する回路」を採用（設計）することが出来る。また、３種以上の動作状態（アイドル状態と２種以上のアクティブ状態）があるブロック用のアクティビティ計測回路としては、例えば、当該ブロック内の幾つかのレジスタの値に基づき、当該ブロックのアクティビティを計測し、計測結果を２ビット以上の信号で出力する回路を採用することが出来る。
【００２１】
統計データ計測回路も、どのような回路構成のものであっても良い。例えば、或るブロックの流量を計測するための統計データ計測回路としては、当該ブロックの入力ポート、出力ポートのそれぞれについて有意なデータが書き込まれた回数をカウントし、各ポートについてのカウント結果を規定時間毎に出力する回路等を採用することが出来る。
【００２２】
検証装置１の利用時には、電力ライブラリ２６を検証装置１に入力（設定）する作業も行われる。ここで、電力ライブラリ２６とは、アクティビティ計測回路を用意した各ブロックについての，各動作状態における消費電力値（単位時間当たりの消費電力量）からなる情報（一種のデータベース）のことである。なお、検証対象システムの各ブロックの消費電力値が分かっていることは少ない。そのため、この電力ライブラリ２６内の各消費電力値としては、通常、検証対象システムの設計者の予測（推定）値が使用される。もちろん、既存回路の流用であれば過去の測定値を流用してもよい。
【００２３】
また、検証装置１の利用時には、アサーション記述を入力する作業も行われる。検証装置１に入力されるアサーション記述は、“アサーション記述”と一般的に呼ばれているものと同様に、常に成立すると期待されている条件を規定する情報である。
【００２４】
ただし、検証装置１は、信号間に成立する条件を規定するアサーション記述のみならず、以下のようなアサーション記述を入力できる装置（詳細は後述）となっている。
assert(FuncB.is_run & Top.BLOCKB.Active !=1)〔意味：関数ＢとブロックＢとは、排他的に動作する〕
assert(!Top.BLOCKB.Active & (Total_Power<10.5mW))〔意味：ブロックＢがアクティ
ブでない場合には、トータルパワーが10.5mW未満となる〕
【００２５】
次に、図２及び図３〜図１７を用いて、上記情報に基づき検証装置１が実行する処理の内容を説明する。
【００２６】
上記した情報の入力が完了すると、検証装置１は、検証対象システムのＨＷ／ＳＷ協調検証を実際に行える状態となるため、オペレータは、検証装置１に対して、所定の動作開始指示操作を行う。なお、オペレータは、必要である場合には、動作開始指示操作を行う前に、関数トレースモード（詳細は後述）をデフォルトの通常モードからシンプルモードへ変更するための操作を行っておく。
【００２７】
動作開始指示操作が行われると、検証装置１内のＣＰＵが、検証プログラム１３に従って、図３に示した手順の処理を開始する。
【００２８】
すなわち、ＣＰＵは、まず、ＨＷ論理シミュレータ１１を利用することにより、各アクティビティ計測回路及び統計データ計測回路を組み込んだ検証対象システムのシミュレーションを実行する処理（Ｓ１０１）を行う。より具体的には、ＣＰＵは、『設計データ２１〜２３に基づき、検証対象システム内のプログラムカウンタの値を、各アクティビティ計測回路からのアクティビティや、各統計データ計測回路からの統計データと共に、シミュレートできるシミュレーション環境（いわゆるテストベンチ）を用意した後、ハードウェア論理シミュレータ１１に従って、当該シミュレーション環境での検証対象システムのシミュレーションを実行する処理』を行う。
【００２９】
以下、このＳ１０１の処理により得られる、統計データ、プログラムカウンタ値、アクティビティの計測／収集結果のこと（図２参照）を、それぞれ、カウントデータ３１、ソフトウェアＰＣデータ３２、ハードウェアアクティビティデータ４２（又は、ＨＷアクティビティデータ４２）と表記する。
【００３０】
図３のＳ１０１（図２のＳ０１）の処理を終えたＣＰＵは、プログラム２５を参照することにより、ソフトウェアＰＣデータ３２から、関数トレースデータ４３を生成する処理（図３：Ｓ１０２、図２：Ｓ０２）を行う。
【００３１】
このＳ１０２の処理（以下、関数トレース処理と表記する）時、ＣＰＵは、まず、関数トレースモードとして、シンプルモード、通常モードのいずれが設定されているかを判断する。
【００３２】
関数トレースモードがシンプルモードであった場合、ＣＰＵは、ソフトウェアＰＣデータ３２に基づき、プログラム２５（プログラム２３ａ）内のＮ個の関数（通常の関数と、割り込みにより実行されるルーチン）のそれぞれについて、その関数が実行されている時間帯と実行されていない時間帯とを特定する。そして、ＣＰＵは、関数トレースデータ４３として、プログラム２５内のＮ個の関数のそれぞれについて、その関数の実行状態の時間変化通りに時間変化する信号波形情報を含む波形データを生成する。なお、この際、ＣＰＵが生成する関数トレースデータ４３（波形データ）は、波形ビューワ１２による内容表示が可能なＶＣＤフォーマット（各信号にユニークな番号を付けておく必要があるフォーマット）のデータである。
【００３３】
一方、関数トレースモードが通常モードであった場合、ＣＰＵは、プログラム２５内の各関数が実行されている時間帯と実行されていない時間帯とを、その呼び出し元別に、特定する。
【００３４】
具体的には、この場合、ＣＰＵは、図４に例示したように、各関数にユニークな関数ＩＤを割り当てた上で、ソフトウェアＰＣデータ３２の内容を解析していく。そして、ＣＰＵは、例えば、mainからFuncAがコールされた後、FuncAからFuncBがコールされ、さらに
、FuncBからFuncAのコールされていた場合には、図５に模式的に示したように、mainからコールされたFuncAが実行されている状態、FuncBからコールされたFuncAが実行されてい
る状態を、それぞれ、状態値[[0,1]]、状態値[[0,1,2,1]]を有する状態として管理すると共に、各状態が持続した時間帯を、状態毎に、特定していく。
【００３５】
なお、割り込みが発生している状態は、通常の状態とは異なる状態である。そのため、検証プログラム１３は、割り込みが発生している状態の状態値を、[[0,1,4]]等ではなく
、[[0,1],[4]]（図５参照）等としてＣＰＵに管理させるプログラムとして作成されてい
る。
【００３６】
ＣＰＵは、各種状態についての時間帯の特定が完了した場合には、ＶＣＤフォーマットの波形データを生成できるようにするために、各状態の状態値に、図６に例示したように、ユニークな状態値ＩＤを付与する。そして、ＣＰＵは、各状態値に付与した状態値ＩＤを用いて、関数トレースデータ４３として、呼び出し元別の関数毎に、その関数の実行状態の時間変化通りに時間変化する信号波形情報を含む，ＶＣＤフォーマットの波形データを生成する。なお、この際、ＣＰＵが生成する関数トレースデータ４３（波形データ）は、各信号をグループ化して表示する（階層表示する）ための情報を含むものである。ハードウェアの場合、信号はシミュレーションの開始から終了まで存在し続けるので、一意番号を振ることは容易であるが、ソフトウェアの場合、予め、どのように関数が呼ばれるかはわからない。従って、状態値（関数のコール関係を示したリスト）にユニークな番号を振ることは容易にはできない。そこで、上記のように入力されたトレースデータを解析しながら、状態値と番号の対応表を作成しつつ、この対応表を使いながら、ＶＣＤフォーマットの信号変化データを作成し、次に状態値と番号の対応表からＶＣＤフォーマットの階層構造を示すデータを作成し、最後に先に作成した信号変化を記録したデータを連接してVCDフォーマットのデータを作成する。このようにして、波形データ（本来ハードウェア
の信号の状態値を記録するためもの）にソフトウェアの状態値をも加えられるのである。これは本技術の特徴の一つである。
【００３７】
ここで、関数トレースモードとして、通常モードとシンプルモードとを用意してある理由を簡単に説明しておくことにする。
【００３８】
詳細は後述するが、検証装置１は、最終的には、関数トレースデータ４３が示している各信号波形を、他の各種信号波形と共に表示装置１０ａの画面上に表示する装置となっている。そして、上記説明から明らかなように、関数トレース処理は、関数トレースモードとして通常モードが設定されている場合には、図７に例示したような波形表示を波形ビューワ１２に行わせることが可能な波形データ（関数トレースデータ４３）を生成する処理となっている。そのため、関数トレースモードを通常モードに設定しておけば、表示装置１０ａに表示される情報から、検証対象システムにおける，プログラム２３ａの各関数の呼び出し関係が、図８に示したようなものであることを確認できることになる。
【００３９】
ただし、プログラム２３ａが多数の関数を含むものである場合には、各関数の呼び出し関係が複雑になりすぎて、図７のような波形表示では、各関数の実行状況が逆に分かり難くなることがある。また、検証対象システムの中には、各関数の実行状態が、関数レベルで把握できさえすれば、ＨＷ／ＳＷ協調検証を行えるものも存在している。そのため、図９に例示したような波形表示を波形ビューワ１２に行わせることも出来るようにするために、関数トレースモードとして、上記内容の処理が行われるシンプルモードも用意してあるのである。
【００４０】
図３（及び図２）に戻って、検証装置１内のＣＰＵの動作説明を続ける。
【００４１】
関数トレース処理（Ｓ１０２）が完了した場合、ＣＰＵは、カウントデータ３１（各統計データ計測回路からの統計データの収集結果）から、波形データ形式の統計データ４１を生成する処理（図３：Ｓ１０３、図２：Ｓ０３）を行う。なお、波形データ形式の統計データ４１とは、波形ビューワ１２がサポートするフォーマット（本実施形態では、ＶＣＤフォーマット）のデータのことである。
【００４２】
この処理時、ＣＰＵは、上記した，各ポートについてのカウント結果を規定時間毎に出力する統計データ計測回路については、入力ポートについての規定時間当たりのカウント結果と出力ポートについての規定時間当たりのカウント結果とから、ｂｐｓ（bits per second）単位の流量を算出する。そして、ＣＰＵは、算出した流量の時間変化パターンを
示す波形情報等を含む統計データ４１を生成してから、Ｓ１０３の処理を終了する。
【００４３】
Ｓ１０３（Ｓ０３）の処理が完了した場合、ＣＰＵは、電力ライブラリ２６を参照することにより、ＨＷアクティビティデータ４２（各アクティビティ計測回路からのアクティビティの収集結果）に基づき、波形データ形式の電力値データ４４を生成する処理（図３：Ｓ１０４、図２：Ｓ０４）を行う。
【００４４】
より具体的には、ＣＰＵは、アクティビティが計測されている、２状態しか取り得ない各ブロックについては、所定の時間区分毎に、電力値として、“アイドル状態率・アイドル状態時消費電力値＋アクティブ状態率・アクティブ状態時消費電力値”を算出する。なお、この説明及び以下の説明において、〜状態率とは、上記時間区分中の，〜状態となっている時間的な割合のことであり、〜状態時消費電力値とは、電力ライブラリ２６内に設定されている，処理対象ブロックについての，〜状態における消費電力値のことである。
【００４５】
ＣＰＵは、アクティビティが計測されている、アイドル状態、第１アクティブ状態及び第２アクティブ状態を取り得る各ブロックについては、所定の時間区分毎に、電力値として、“アイドル状態率・アイドル状態時消費電力値＋第１アクティブ状態率・第１アクティブ状態時消費電力値＋第２アクティブ状態率・第２アクティブ状態時消費電力値”を算出する。また、ＣＰＵは、アクティビティが計測されている、４種以上の状態を取り得る各ブロックについても、同様の手順で、所定の時間区分毎に、電力値を算出する。
【００４６】
そして、ＣＰＵは、そのようにして算出した電力値群に基づき、各ブロックの消費電力の時間変化パターンを示す波形情報や、全ブロックの消費電力の総和の時間変化パターンを示す波形情報を含む電力値データ４４を生成してから、Ｓ１０４（Ｓ０４）の処理を終了する。
【００４７】
ＣＰＵは、Ｓ１０４（Ｓ０４）の処理が完了した場合には、アサーション検査処理（Ｓ１０５、図２：Ｓ０５）を実行する。
【００４８】
このアサーション検査処理は、基本的には、アサーション記述２４に基づき、アサーション検査結果を示す信号を出力するアサーション検査回路を設計し、そのシミュレーションを行う処理である。
【００４９】
以下、ブロックの動作状態と関数の実行状態との関係を規定するアサーション記述が入力されている場合を例に、ＣＰＵが実行するアサーション検査処理の内容を説明する。
【００５０】
この場合、ＣＰＵは、図１０に示した手順のアサーション検査処理を実行する。すなわち、ＣＰＵは、まず、ＨＷアクティビティデータ４２と関数トレースデータ４３とから、所定形式の（形式を変換した）ＨＷアクティビティデータと関数トレースデータとを生成する処理（Ｓ２０１）を行う。
【００５１】
このＳ２０１の処理は、図１１、図１２に模式的に示したような形式のＨＷアクティビティデータ４２、関数トレースデータ４３から、各時刻における各ブロック／関数の状態を把握しやすい形式のＨＷアクティビティデータ、関数トレースデータを生成する処理である。
【００５２】
具体的には、図１１に示してあるＨＷアクティビティデータ４２中の“（0）”,“（1
）”は、その左側に示してある名称（"Top.BLOCKA"等）で識別されるブロックの，検証対象システムの動作開始時における状態を示す情報である。なお、“（1）”がアクティブ
状態であり、“（0）”がアイドル状態である。また、図１１において、“（0）”又は“
（1）”の右側に示してある各数値は、対応するブロックの動作状態が変化した時間（検
証対象システムの動作開始後の経過時間）を示す情報である。
【００５３】
要するに、ＨＷアクティビティデータ４２は、各ブロックに関する情報（"(1) 5"等）
を全て読み出さないと、或る時刻における全ブロックの状態を特定できないデータとなっている。また、図１２に示してある関数トレースデータ４３も、同様のフォーマットのデータであるが故に、各関数に関する情報（"(0) 2 31"等）を全て読み出さないと、或る時刻における全関数の状態を特定できないデータとなっている。
【００５４】
そして、ハードウェアの状態とソフトウェアの状態が関係するアサーション検査は、同時刻のブロックの状態及び関数の状態を必要とするものである。従って、ＨＷアクティビティデータ４２、関数トレースデータ４３を、各時刻における各ブロック／関数の状態を把握しやすい形式のＨＷアクティビティデータ、関数トレースデータに変換しておいた方が、アサーション検査回路が設計しやすくなる。
【００５５】
Ｓ２０１の処理は、そのような形式のデータを用意するために行われている処理である。より具体的には、Ｓ２０１の処理は、図１１に示したＨＷアクティビティデータ４２から、図１３に示した形式のＨＷアクティビティデータ４２′、すなわち、『第０、第１、第２ビットの値が、それぞれ、BLOCKA、BLOCKB、BLOCKCの状態を表し、第４ビットより上位側の値が、各ブロックの状態がそのような状態となった時刻（検証対象システムの動作開始からの経過時間）を表す情報』（“00004”等）を変化時刻順に並べたＨＷアクティ
ビティデータ４２′を生成する処理となっている。
【００５６】
Ｓ２０１の処理を終えたＣＰＵは、“アサーション検査結果を示す信号を出力するアサーション検査回路”の設計データを自動生成する処理（Ｓ２０２）を行う。
【００５７】
このＳ２０２の処理（以下、検査回路設計処理と表記する）は、例えば、入力されているアサーション記述がassert(FuncB.is_run & Top.BLOCKB.Active !=1)であった場合、図１４に示した構成を有するアサーション検査回路を設計するものとなっている。
【００５８】
このアサーション検査回路内のＨＷデータローダ回路５１は、Ｓ２０１の処理により生成されたＨＷアクティビティデータ４２′（図１３）の内容を読み出すための回路である。また、アサーション検査回路内のＳＷデータローダ回路５２は、Ｓ２０１の処理により生成された関数トレースデータ４３′の内容を読み出すための回路である。また、統計データや電力値データに関するアサーションが含まれる場合には、統計データや電力値データ用のローダ回路も置かれる。先のアサーション記述例は、FuncBとBLOCKBの実行状態の
関係に関するものであるので、ここでは、５１、５２のみが置かれた例を示している。
【００５９】
検査回路設計処理は、ＨＷアクティビティデータ４２′が図１３に示した内容のものであった場合、ＨＷデータローダ回路５１の設計データ（アサーション検査回路の設計データの一部）として、図１５に示したような内容のものを自動生成する処理となっている。換言すれば、検査回路設計処理は、『ＨＷアクティビティデータ４２′の内容を読み込んで、図１６に示したように変化する信号out[3:0]を出力するＨＷデータローダ回路５１』を自動設計する処理となっている。なお、この図１５に示した設計データ中の“a.txt”
は、Ｓ２０１の処理にて生成されるＨＷアクティビティデータ４２′のファイル名である。
【００６０】
検査回路設計処理は、ＳＷデータローダ回路５２の設計データとしても同様のものを生成する処理となっている。
【００６１】
アサーション検査回路（図１４）内の回路５３は、ＨＷデータローダ回路５１から出力されるブロックＢの状態を示す信号（図１６におけるout[2]）と、ＳＷデータローダ回路５２から出力される関数Ｂの状態を示す信号との論理和を出力する回路である。アサーション検査回路内の回路５４は、回路５３の出力と“１”とが一致しているか否かを示す信号を出力する回路である。アサーション検査回路内のダンプ回路５５は、回路５４の出力信号の形状を示す波形データを、チェック結果４５（アサーション検査結果）として出力する回路である。
【００６２】
検査回路設計処理は、このような回路が必要とされることを、アサーション記述『assert(FuncB.is_run & Top.BLOCKB.Active !=1)』から把握し、各回路を自動設計する処理となっている。なお、詳細説明は省略するが、検査回路設計処理は、３種以上の情報（例えば、２種のブロックの動作状態に関する情報と関数の実行状態に関する情報）を必要とするアサーション検査用の回路も自動設計できる処理となっている。
【００６３】
アサーション検査回路の設計データが生成できた場合、ＣＰＵは、生成した設計データに基づき、ハードウェア論理シミュレータ１１に従って、アサーション検査回路のシミュレーションを実行する（図１０：Ｓ２０３）。
【００６４】
そして、Ｓ２０３の処理を終えたＣＰＵは、アサーション検査処理（図３：Ｓ１０５、図２：Ｓ０５）を終了し、波形ビューワ１２に従って、統計データ４１、ＨＷアクティビティデータ４２、関数トレースデータ４３、電力値データ４４、チェック結果４５（いずれも波形データ）の内容を表示装置１０ａの画面上に表示する処理（Ｓ１０６）を行う。なお、このＳ１０６の処理は、画面上にいずれの波形を表示させるかをオペレータが指定できる処理である。
【００６５】
既に説明したように、統計データ４１、ＨＷアクティビティデータ４２、関数トレースデータ４３、電力値データ４４、チェック結果４５は、いずれも波形データとなっている。そのため、上記したＳ１０６の処理が実行されると、表示装置１０ａの画面上に、図１７に示したような情報が表示されることになる。
【００６６】
従って、オペレータは、表示装置１０ａの画面上に表示される情報から、入力したアサーション記述〔図１７では、assert(FuncB.is_run & Top.BLOCKB.Active !=1)〕を満たさない時間帯がある（check0参照）ことや、各ブロックの動作状態と各関数の実行状態との関係が一目で分かることになる。
【００６７】
《変形形態》
上記した検証装置１に対しては、各種の変形を行うことが出来る。例えば、検証装置１を、ソフトウェアＰＣデータ３２、ハードウェアアクティビティデータ４２等を入力して使用する装置に変形することが出来る。また、検証装置１を、設計データ２３を解析することにより、上記したアクティビティ計測回路、統計データ計測回路に相当するものを、自動的に設計する装置に変形することも出来る。
【００６８】
また、検証プログラム１３を、ＨＷ論理シミュレータ１１及び／又は波形ビューワ１２としての機能も有するものに変形しても良いことや、ＨＷ論理シミュレータ１１や波形ビューワ１２として、既存のプログラムとは異なるものを採用しても良いことなどは、当然のことである。
【００６９】
以上、開示した技術に関し、更に以下の付記を開示する。
【００７０】
（付記１）  デジタルシステムのハードウェア構成及びプログラムの内容を示す設計デ
ータに基づき前記デジタルシステムのシミュレーションを行うことにより、前記プログラムを実行している状態にある前記デジタルシステム内の各ブロックの動作状態を時系列的に取得すると共に、各ブロックの動作状態の変化時における前記デジタルシステム内のプログラムカウンタの値を取得するシミュレーション部と、
前記シミュレーション部による前記プログラムカウンタの値と、前記プログラムとに基づき、前記プログラムに含まれる各関数について、その関数が実行される期間を特定する関数トレース部と、
成立しているか否かが前記デジタルシステムの１つ以上のブロックの動作状態と前記プログラムの１つ以上の関数の実行状態とから定まる制約条件を操作者から取得する取得部と、
前記シミュレーション部による各ブロックの動作状態の結果と前記関数トレースによる各関数が実行される期間の特定結果とに基づき、前記取得部によって取得された前記制約条件が成立しない期間を特定する制約条件検証部と、
前記シミュレーション部によって把握された各ブロックの時系列的な動作状態を示す情報、前記関数トレース部によって特定された各関数が実行される期間を示す情報、及び、前記制約条件検証部によって特定された前記制約条件が成立しない期間を示す情報を含む検証結果を出力する出力部と
を備えることを特徴とする検証装置。
【００７１】
（付記２）  前記シミュレーション部による各ブロックの動作状態に基づき、前記デジタルシステムについての、各種時刻における統計量を算出する統計量算出部を、さらに備え、
前記出力部は、
前記シミュレーション部によって取得された各ブロックの時系列的な動作状態を示す情報、前記関数トレース部によって特定された各関数が実行される期間を示す情報、前記制約条件検証部によって特定された前記制約条件が成立しない期間を示す情報、及び、前記統計量算出部によって算出された各種時刻における統計量を示す情報を含む検証結果を出力する
ことを特徴とする付記１記載の検証装置。
【００７２】
（付記３）  前記取得部は、
前記デジタルシステムの１つ以上のブロックの動作状態を指定する指定情報、前記プログラムの１つ以上の関数の実行状態を指定する指定情報、及び、前記デジタルシステムについての前記統計量の値を指定する指定情報の中の，１種乃至３種の指定情報を含む制約条件を操作者から取得し、
前記制約条件検証部は、
前記シミュレーション部による各ブロックの動作状態、前記関数トレースによる各関数が実行される期間、及び、前記統計量算出部によって算出された各種時刻における統計量の中の、前記取得部によって取得された前記制約条件の内容に応じた数、種類の情報に基づき、当該制約条件が成立しない期間を特定する
ことを特徴とする付記２記載の検証装置。
【００７３】
（付記４）  前記シミュレーション部として機能するハードウェア論理シミュレータを備え、
前記制約条件検証部は、
前記シミュレーション部による各ブロックの動作状態と、前記特定部による各関数が実行された期間とを入力すると、前記制約条件が満たされていない期間だけに他の期間とは異なるレベルとなる信号を出力する回路の構成を示すハードウェア記述を前記取得部によって取得された前記制約条件に基づき生成し、生成したハードウェア記述に基づくシミュレーションを前記ハードウェア論理シミュレータに行わせることにより、前記制約条件が
成立しない期間を特定する
ことを特徴とする付記１乃至付記３のいずれか一項に記載の検証装置。
【００７４】
（付記５）  コンピュータに、
プログラムを実行するデジタルシステム内の１つ以上のブロックの動作状態と前記プログラムの１つ以上の関数の実行状態とから成立しているか否かが定まる制約条件を操作者から取得する取得手順と、
前記プログラムを実行している状態にある前記デジタルシステム内の各ブロックの各時刻における動作状態を示すハードウェア状態情報と、前記デジタルシステムによる前記プログラムの実行中に前記プログラムに含まれる各関数が実行される期間を示すプログラム状態情報とに基づき、前記取得手順によって取得された前記制約条件が成立しない期間を特定する制約条件検証手順と、
前記ハードウェア状態情報、前記プログラム状態情報、及び、前記制約条件検証手順により特定された前記制約条件が成立しない期間に基づき、前記デジタルシステム内の各ブロックの時系列的な動作状態を示す情報、前記プログラム内の各関数が実行される期間を示す情報、及び、前記制約条件が成立しない期間を示す情報を含む検証結果を出力する出力手順と
を実行させることを特徴とする検証プログラム。
【００７５】
（付記６）  デジタルシステムのハードウェア構成及びプログラムの内容を示す設計データに基づき前記デジタルシステムのシミュレーションを行うことにより、前記プログラムを実行している状態にある前記デジタルシステム内の各ブロックの動作状態を時系列的に把握すると共に、各ブロックの動作状態の変化時における前記デジタルシステム内のプログラムカウンタの値を把握するシミュレーション部と、
前記シミュレーション部による前記プログラムカウンタの値の把握結果と、前記プログラムとに基づき、前記プログラムに含まれる各関数について、その関数が実行される期間を特定し、かつ、関数のコール関係を解析し、かつ、ハードウェア向けの波形表示ツールに入力可能な波形データを生成する関数トレース部と
を備えることを特徴とする検証装置。
【００７６】
（付記７）  前記コンピュータにインストールされているハードウェア論理シミュレータに、前記デジタルシステムのハードウェア構成及び前記プログラムの内容を示す設計データに基づくシミュレーションを行わせることによって前記ハードウェア状態情報を生成するとともに、各ブロックの動作状態の変化時における前記デジタルシステム内のプログラムカウンタの値を把握するシミュレーション手順と、
前記シミュレーション手順により把握された前記プログラムカウンタの値と、前記プログラムとに基づき、前記プログラムに含まれる各関数について、その関数が実行される期間を特定し、特定結果に基づき前記プログラム状態情報を生成する関数トレース手順と
を、さらに実行させることを特徴とする付記５記載の検証プログラム。
【００７７】
（付記８）  前記デジタルシステムのハードウェア構成及び前記プログラムの内容を示す設計データに基づくシミュレーションにより、前記ハードウェア状態情報を生成するとともに、各ブロックの動作状態の変化時における前記デジタルシステム内のプログラムカウンタの値を把握するシミュレーション手順と、
前記シミュレーション手順により把握された前記プログラムカウンタの値と、前記プログラムとに基づき、前記プログラムに含まれる各関数について、その関数が実行される期間を特定し、特定結果に基づき前記プログラム状態情報を生成する関数トレース手順と
を、さらに実行させることを特徴とする付記５記載の検証プログラム。
【００７８】
（付記９）  前記関数トレース手順は、
前記プログラム状態情報として、各関数をコールした関数を示す情報も含む情報を生成し、
前記出力手順は、
前記プログラム内の各関数が実行される期間が、各関数をコールした関数別に示される情報を含む検証結果を出力する
ことを特徴とする付記７又は付記８に記載の検証プログラム。
【００７９】
（付記１０）  時間経過に伴いその状態が変化する１つ以上の信号を示す，所定フォーマットの波形情報に従って前記１つ以上の信号を表示する波形ビューワが前記コンピュータにインストールされており、
前記ハードウェア状態情報が、
それぞれ、互いに異なる特定のブロックに対応づけられた，対応づけられているブロックの動作状態の時間変化どおりにその状態が時間変化する複数の信号を示す，前記所定フォーマットの波形情報であり、
前記ソフトウェア状態情報が、
それぞれ、互いに異なる特定の関数に対応づけられた，対応づけられている関数の状態の時間変化どおりにその状態が時間変化する複数の信号を示す，前記所定フォーマットの波形情報であり、
前記制約条件検証手順が、
前記制約条件が成立しない期間の状態と前記制約条件が成立する期間の状態とが異なる信号を示す，前記所定フォーマットの波形情報を出力する手順であり、
前記出力手順が、
前記波形ビューワに、
前記ハードウェア状態情報、前記プログラム状態情報、及び、前記制約条件検証手順が出力した波形情報に基づく信号表示を行わせる手順である
ことを特徴とする付記７又は付記８に記載の検証プログラム。
【００８０】
（付記１１）  前記関数トレース部は、
各関数をコールした関数も特定し、
前記出力部は、
前記関数トレース部による各関数が実行される期間及び各関数をコールした関数の特定結果に基づき、各関数が実行される期間が各関数をコールした関数別に示される情報を含む検証結果を出力する
ことを特徴とする付記１乃至付記４のいずれか一項に記載の検証装置。
【符号の説明】
【００８１】
１    検証装置
１０  コンピュータ
１０ａ  表示装置
１０ｂ  入力装置
１１  ハードウェア論理シミュレータ
１２  波形ビューワ
１３  検証プログラム
２１，２２，２３  設計データ
２３ａ，２５  プログラム
２６  電力ライブラリ
３１  カウントデータ
３２  ソフトウェアＰＣデータ
４１  統計データ
４２  ハードウェアアクティビティデータ
４３  関数トレースデータ
４４  電力値データ
４５  チェック結果
５１  ＨＷデータローダ回路
５２  ＳＷデータローダ回路
５３，５４  回路
５５  ダンプ回路
【図１】
0005515815.tif 000002
【図２】
0005515815.tif 000003
【図３】
0005515815.tif 000004
【図４】
0005515815.tif 000005
【図５】
0005515815.tif 000006
【図６】
0005515815.tif 000007
【図７】
0005515815.tif 000008
【図８】
0005515815.tif 000009
【図９】
0005515815.tif 000010
【図１０】
0005515815.tif 000011
【図１１】
0005515815.tif 000012
【図１２】
0005515815.tif 000013
【図１３】
0005515815.tif 000014
【図１４】
0005515815.tif 000015
【図１５】
0005515815.tif 000016
【図１６】
0005515815.tif 000017
【図１７】
0005515815.tif 000018