(57)【要約】【課題】コードカバレッジ計測をエミュレーションにおいて実行することができる回路検証装置を提供する。【解決手段】回路検証装置１は、ハードウエア記述言語により記述された検証対象回路記述１０７と複数の計測対象の情報が含まれるメトリクス情報１０８とを読み込み、検証対象回路記述１０７からコードカバレッジ計測のための複数の計測ポイントを抽出し、抽出した前記複数の計測ポイント中の所定の計測ポイントのみに集約したデータベースを生成するコードカバレッジ計測ポイント抽出部１１を有する。また、回路検証装置１は、所定の計測ポイントついて、それぞれ対応するアサーション記述に変換するアサーション変換部１４と、データベースとアサーション記述に基づいて計測を行い得られたアサーション結果１１２とを受け取り、コードカバレッジ結果１１３を生成するコードカバレッジ結果伸長部１３とを有する。【選択図】図２
2010067160.tif 000002
【特許請求の範囲】
【請求項１】
ハードウエア記述言語により記述された回路記述と複数の計測対象の情報が含まれる計測対象情報とを読み込み、前記計測対象情報に基づいて、前記回路記述からコードカバレッジ計測のための複数の計測ポイントを抽出し、抽出した前記複数の計測ポイント中の所定の計測ポイントのみに集約したデータベースを生成する計測ポイント抽出部と、
前記所定の計測ポイントついて、それぞれ対応するアサーション記述に変換するアサーション変換部と、
前記データベースと前記アサーション記述に基づいて計測を行い得られたアサーション結果とを受け取り、前記コードカバレッジ計測の結果を生成する計測結果生成部と、
を有することを特徴とする回路検証装置。
【請求項２】
前記所定の計測ポイントは、信号遷移、条件分岐、及びサブ条件の組み合わせに関する計測ポイントであって、
前記信号遷移、条件分岐、及びサブ条件の組み合わせに関する計測ポイントの少なくとも１つが、前記複数の計測ポイントのいずれかで代用可能か否かを判定し、代用可能な場合、前記複数の計測ポイントのいずれかで代用する圧縮処理を行うアサーション圧縮部を有することを特徴とする請求項１に記載の回路検証装置。
【請求項３】
前記信号遷移、条件分岐、及びサブ条件の組み合わせに関する計測ポイントの全てに、前記計測を１回実行した場合に前記計測を停止する停止機構を選択的に付加するアサーション停止部を有することを特徴とする請求項１または２に記載の回路検証装置。
【請求項４】
前記アサーション停止部は、前記信号遷移、条件分岐、及びサブ条件の組み合わせに関する計測ポイントの一部に前記停止機構を選択的に付加することを特徴とする請求項３に記載の回路検証装置。
【請求項５】
ハードウエア記述言語により記述された回路記述と複数の計測対象の情報が含まれる計測対象情報とを読み込み、前記計測対象情報に基づいて、前記回路記述からコードカバレッジ計測のための複数の計測ポイントを抽出し、抽出した前記複数の計測ポイント中の所定の計測ポイントのみに集約したデータベースを生成し、
前記所定の計測ポイントついて、それぞれ対応するアサーション記述に変換し、
前記データベースと前記アサーション記述に基づいて計測を行い得られたアサーション結果とを受け取り、前記コードカバレッジ計測の結果を生成することを有することを特徴とする回路検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路検証装置及び回路検証方法に関し、特に、コードカバレッジ計測を実行する回路検証装置及び回路検証方法に関する。
【背景技術】
【０００２】
近年、システムLSI設計における回路規模の増大、短TAT（Turn Around Time）化に伴い、検証漏れによる品質低下が問題となっている。
【０００３】
現在、論理回路のテスト網羅性、すなわち検証確度の代表的指標としてコードカバレッジが広く用いられている。このコードカバレッジは、回路記述の各コードが実行されたか否かを測定し、回路記述全体のうち、どの程度シミュレーションにおいてテストが実行されたかを定量的に指し示す指標である。
【０００４】
例えば、コードカバレッジを計測することができるLSI設計検証装置が提案されている（例えば、特許文献１参照）。
【０００５】
従来、コードカバレッジの計測は、実際の検証対象回路（DUT）をコピーした回路記述に対して、コードカバレッジ計測用のプローブと呼ばれるモニタ文を挿入する。そして、このプローブにより収集された情報に基づいて、コードカバレッジが計測される。
【０００６】
しかしながら、このプローブが多いほどシミュレーションにおいてオーバーヘッドが発生、即ち、論理検証にかかる時間が増大する。論理検証にかかる時間は、回路の大規模化、複雑化に伴い、さらに増大するという問題がある。
【０００７】
そのため、回路の大規模化、複雑化に対応する手段としてエミュレーションが用いられている。このエミュレーションは、検証対象回路をプロセッサあるいはFPGAなどのプログラマブルな回路へマッピングし、論理検証を行うことにより論理検証にかかる時間を大幅に短縮することができる。
【０００８】
しかし、コードカバレッジ計測用のプローブが挿入されている検証対象回路をプログラマブルな回路へマッピングすることは、回路規模が増大するため不可能である。即ち、現在エミュレーションにおいてコードカバレッジを計測することができないという問題がある。そのため、テスト網羅性が分からずに品質上問題である。
【０００９】
一方、LSI機能検証用の記述言語であるアサーション言語で記述されたアサーションを用いて論理検証を行うことが考えられる。例えば、アサーションテーマを入力して、そのアサーションテーマに従ったアサーションを自動生成する装置が提案されている（例えば、特許文献２参照）。
【００１０】
この装置では、入出力信号に対してtoggle計測用のアサーションを自動生成し、生成したアサーションを用いてコードカバレッジ計測をシミュレーションにおいて実行する。
【００１１】
しかしながら、この提案では、toggle計測用のアサーション以外については何ら開示されていない。また、エミュレーションを用いていないので、コードカバレッジ計測に多くの時間がかかるという問題がある。
【特許文献１】特許第３８４８１５７号公報
【特許文献２】米国特許出願公開第２００８／００６６０３０号明細書
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明は、コードカバレッジ計測をエミュレーションにおいて実行することができる回路検証装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の一態様によれば、ハードウエア記述言語により記述された回路記述と複数の計測対象の情報が含まれる計測対象情報とを読み込み、前記計測対象情報に基づいて、前記回路記述からコードカバレッジ計測のための複数の計測ポイントを抽出し、抽出した前記複数の計測ポイント中の所定の計測ポイントのみに集約したデータベースを生成する計測ポイント抽出部と、前記所定の計測ポイントついて、それぞれ対応するアサーション記述に変換するアサーション変換部と、前記データベースと前記アサーション記述に基づいて計測を行い得られたアサーション結果とを受け取り、前記コードカバレッジ計測の結果を生成する計測結果生成部とを有することを特徴とする回路検証装置を提供することができる。
【発明の効果】
【００１４】
本発明の回路検証装置によれば、コードカバレッジ計測をエミュレーションにおいて実行することができる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して本発明の実施の形態について詳細に説明する。  
まず、図１に基づき、本実施の形態に係る情報処理装置の構成を説明する。図１は、本実施の形態に係る情報処理装置の構成を示すブロック図である。図１に示すように、情報処理装置１００は、例えば、パーソナルコンピュータ等であり、本体装置１０１と、記憶装置１０２と、表示装置１０３と、キーボード１０４と、マウス１０５とを有して構成されている。また、本体装置１０１は、中央処理装置（以下、CPUという）１０１ａを有して構成されている。
【００１６】
記憶装置１０２には、回路検証プログラム１０６と、検証対象回路記述１０７と、メトリクス情報１０８とが記憶されている。回路検証プログラム１０６をCPU１０１ａ上で実行することで、後述する回路検証装置を実現する。また、回路検証プログラム１０６をCPU１０１ａ上で実行する際に、キーボード１０４及びマウス１０５を操作し、検証対象回路記述１０７及びメトリクス情報１０８を指定することにより、後述するコードカバレッジ計測を実行することができる。
【００１７】
図２は、本実施の形態に係る回路検証装置の構成を示すブロック図である。図２に示すように、回路検証装置１は、コードカバレッジ計測ポイント抽出部１１と、アサーション生成部１２と、コードカバレッジ結果伸長部１３とを有して構成されている。
【００１８】
また、アサーション生成部１２は、アサーション変換部１４と、アサーション圧縮部１５と、アサーション停止部１６とを有して構成されている。
【００１９】
また、回路検証装置１の外には、エミュレータまたはシミュレータにより構成される外部ツール１７を有している。なお、外部ツール１７は、プロパティチェッカ、デバッガ、セミフォーマル等を有していてもよい。
【００２０】
コードカバレッジ計測ポイント抽出部１１には、テスト対象かつコードカバレッジ計測対象である検証対象回路記述１０７と、コードカバレッジの評価指標であるメトリクス情報１０８とが入力される。コードカバレッジ計測ポイント抽出部１１は、メトリクス情報１０８により指定されたメトリクスのコードカバレッジ計測ポイントを検証対象回路記述１０７から抽出し、抽出したコードカバレッジ計測ポイントに基づいてデータベースを構築する。さらに、コードカバレッジ計測ポイント抽出部１１は、構築したデータベースの組み換え、ここでは、コードカバレッジ計測ポイントの整理を行い、組み換えたデータベースを計測ポイントデータ１０９としてアサーション生成部１２に出力する。
【００２１】
アサーション生成部１２のアサーション変換部１４は、計測ポイントデータ１０９内のコードカバレッジ計測ポイントをアサーション言語に変換し、アサーション１１０を生成する。このアサーション言語とは、LSI機能検証用の記述言語の１つである。また、アサーション変換部１４は、後述するアサーション結果及びassertionラベルの情報を追加してデータベースを結果伸長用データ１１１としてコードカバレッジ結果伸長部１３に出力する。
【００２２】
アサーション生成部１２のアサーション圧縮部１５は、計測ポイントデータ１０９内のコードカバレッジ計測ポイントが圧縮可能か否かを判定し、圧縮可能な場合、後述する圧縮を行う。
【００２３】
アサーション生成部１２のアサーション停止部１６は、計測を１回実行した場合に計測を停止する機構を選択的に追加する。
【００２４】
アサーション生成部１２は、アサーション変換部１４により生成されたアサーション１１０を外部ツール１７に出力する。また、アサーション生成部１２は、アサーション変換部１４及びアサーション圧縮部１５により変更された計測ポイントデータ１０９を結果伸長用データ１１１としてコードカバレッジ結果伸長部１３に出力する。
【００２５】
外部ツール１７は、アサーション１１０を受け取り、コードカバレッジ計測を実行し、アサーション結果１１２をコードカバレッジ結果伸長部１３に出力する。
【００２６】
コードカバレッジ結果伸長部１３は、アサーション生成部１２により生成された結果伸長用データ１１１と外部ツール１７により得られたアサーション結果１１２とに基づいて、コードカバレッジ計測の結果である最終的なコードカバレッジ結果１１３を生成する。このように、コードカバレッジ結果伸長部１３は、コードカバレッジ計測の結果を生成する計測結果生成部を構成する。
【００２７】
メトリクスとは、コードカバレッジ計測の対象となる評価指標であり、Statement、Branch、Condition、Toggle、FSM（Finite State Machine）State及びFSM Transitionの６つのメトリクスを有する。
【００２８】
Statementは、検証対象回路記述１０７の各行がCover、即ち、実行されたかを示す評価指標である。Branchは、各条件分岐、例えば、if条件文の真（Tule）及び偽（False）の組み合わせが実行されたかを示す評価指標である。Condition は、各サブ条件の組み合わせ、例えば、if条件文内の“＆”または“｜”により区切られた条件要素の真及び偽の組み合わせが実行されたかを示す評価指標である。Toggleは、各信号ビットのトグルが実行されたかを示す評価指標である。各信号ビットのトグルは、０から１への遷移（rise）、及び、１から０への遷移（fall）である。FSM Stateは、FSMの各ステートへの到達が実行されたかを示す評価指標である。FSM Transitionは、FSMの各ステート間遷移が実行されたかを示す評価指標である。
【００２９】
メトリクス情報１０８には、これらのメトリクスのうち、コードカバレッジの計測対象とするメトリクスの情報が含まれている。例えば、ユーザは、Toggleのみをコードカバレッジの計測対象としたい場合、メトリクス情報１０８内にToggleに関するメトリクスを記載し、上述した６つ全てのメトリクスをコードカバレッジの計測対象としたい場合、メトリクス情報１０８内に６つ全てのメトリクスを記載する。コードカバレッジ計測ポイント抽出部１１は、検証対象回路記述１０７からメトリクス情報１０８により指定された計測ポイントを抽出することができる。
【００３０】
図３は、検証対象回路記述と抽出した計測ポイントの例を説明するための説明図である。なお、図３は、上述した全てのメトリクスを計測対象とした場合の抽出した計測ポイントの例である。
【００３１】
図３に示す検証対象回路記述１０７は、ハードウエア記述言語の１つであるVerilog言語により記述された回路記述の一部を示している。
【００３２】
コードカバレッジ計測ポイント抽出部１１は、回路記述“reg state_cur[3:0]”から計測ポイント２１ａ、２１ｂ及び２１ｃを抽出する。計測ポイント２１ａは、toggleに関する計測ポイントである。図３では図示を省略しているが、４ビットの各ビットに対して、それぞれrise及びfallが測定される必要があるため、回路記述“reg state_cur[3:0]”から８個のtoggleに関する計測ポイントが抽出される。
【００３３】
同様に、コードカバレッジ計測ポイント抽出部１１は、回路記述“reg state_nxt[3:0]”から計測ポイント２１ｄを抽出し、回路記述“if(in1 & in2)”から計測ポイント２１ｅから２１ｈを抽出し、回路記述“state_nxt=s2”から計測ポイント２１iを抽出し、回路記述“if(in3)”から計測ポイント２１jを抽出する。
【００３４】
ここで、コードカバレッジ計測ポイント抽出部１１により抽出される各計測ポイント２１ａから２１ｊのデータ構造について説明する。図４は、計測ポイントのデータ構造の例を説明するための説明図である。各計測ポイント２１ａから２１ｊは、計測ポイントラベル２２と、行番号２３と、回路記述２４と、メトリクス２５との情報を有する。
【００３５】
計測ポイントラベル２２には、各計測ポイント２１ａから２１ｊに対して一意に割り振られた名前が格納される。行番号２３には、各計測ポイント２１ａから２１ｊの検証対象回路記述１０７内の行番号が格納される。回路記述２４には、各計測ポイント２１ａから２１ｊの対象記述が格納される。メトリクス２５には、上述した６つのメトリクスのいずれかが格納される。また、メトリクス２５は、計測対象のメトリクスに応じて、以下の情報を有する。
【００３６】
メトリクス２５がToggleの場合、信号ビットと、riseまたはfallとに関する情報を有する。メトリクス２５がBranchの場合、条件のTrue／Falseの組み合わせに関する情報を有する。Trueの場合は“条件記述”のまま、Falseの場合は“！（条件記述）”とする。メトリクス２５がConditionの場合、サブ条件のTrue／Falseの組み合わせに関する情報を有する。Trueの場合は“条件記述”のまま、Falseの場合は“！（条件記述）”とする。メトリクス２５がFSM Stateの場合、ステートに関する情報を有する。メトリクス２５がFSM Transitionの場合、ステート遷移前及びステート遷移後に関する情報を有する。メトリクス２５がStatementの場合、回路記述２４と同等である代入記述に関する情報を有する。
【００３７】
（コードカバレッジ計測ポイント抽出部１１の動作）
図５は、図３の検証対象回路記述から構築されるデータベースの例を説明するための説明図である。なお、図５では、重複したメトリクスの計測ポイントに関しては省略している。即ち、図５は、計測ポイント２１ａ、２１ｂ、２１ｃ、２１ｅ、２１ｈ及び２１ｉにより構築されるデータベースを示している。
【００３８】
コードカバレッジ計測ポイント抽出部１１は、これらの抽出した各計測ポイント２１ａ、２１ｂ、２１ｃ、２１ｅ、２１ｈ及び２１ｉからデータベースを構築する。各計測ポイント２１ａ、２１ｂ、２１ｃ、２１ｅ、２１ｈ及び２１ｉには、それぞれ計測ポイントラベル２２ａ、２２ｂ、２２ｃ、２２ｅ、２２ｈ及び２２ｉが対応付けられている。
【００３９】
また、各計測ポイントラベル２２ａ、２２ｂ、２２ｃ、２２ｅ、２２ｈ及び２２ｉには、それぞれ行番号、回路記述、メトリクスなどの情報が対応付けられている。即ち、各計測ポイント２１ａ、２１ｂ、２１ｃ、２１ｅ、２１ｈ及び２１ｉは、それぞれ図４に示すデータ構造になっている。
【００４０】
コードカバレッジ計測ポイント抽出部１１は、各計測ポイント２１ａ、２１ｂ、２１ｃ、２１ｅ、２１ｈ及び２１ｉを捜査した順番に接続し、図５に示すリスト構造のデータベースを構築する。
【００４１】
次に、コードカバレッジ計測ポイント抽出部１１は、計測ポイント２１ａ、２１ｂ、２１ｃ、２１ｅ、２１ｈ及び２１ｉの組み換え、言い換えると、リスト構造のリンクの組み換えを行う。図６は、計測ポイントの組み換えを行ったデータベースの例を説明するための説明図である。
【００４２】
回路記述は信号宣言部と信号間の関係を表した信号関係部で表される。信号関係部は、条件文と、その条件が満たされた結果実行される代入文とから構成される。そのため、信号関係部では条件文のみ計測し、代入文は条件文の真偽（BranchまたはCondition）のCoverと一致するため計測不要である。Statementは代入文の実行を計測、FSM State、FSM Transitionは代入文より計測可能なため計測不要である。つまり、計測対象のメトリクスはToggle、Branch、Conditionに集約される。
【００４３】
このように、計測対象のメトリクスがToggle、Branch、Conditionに集約されたデータベースを図６に示している。next_allポインタは、組み換え前と同じ次の計測ポイントを指すポインタである。upポインタは、カバレッジ結果を共有する計測ポイントを指すポインタである。nextポインタは、upポインタを持たない計測ポイント間、ここでは、計測ポイント２１ａと計測ポイント２１ｅとの間及び計測ポイント２１ｅと計測ポイント２１ｊとの間を接続するポインタである。
【００４４】
このように計測ポイントの組み換えが行われたデータベースは、計測ポイントデータ１０９として、アサーション生成部１２に出力される。
【００４５】
アサーション生成部１２のアサーション変換部１４は、計測ポイントデータ１０９をnextポインタに従って走査し、計測内容に従ったアサーション１１０を生成する。このとき、アサーション変換部１４は、アサーション１１０にassertionラベルを付与すると共に、付与したassertionラベルをデータベースに追加する。さらに、アサーション変換部１４は、コードカバレッジの結果を格納するためのカバレッジ結果をデータベースに追加する。
【００４６】
図７は、assertionラベルとカバレッジ結果を追加したデータベースの例を説明するための説明図である。図７に示すように、計測ポイント２１ａにカバレッジ結果２６ａが追加され、計測ポイント２１ｅにカバレッジ結果２６ｂが追加されている。これらのカバレッジ結果２６ａ及び２６ｂには、それぞれ計測が実行されていないことを示すNot Coverが初期値として格納される。また、計測ポイント２１ａにC_T_1というassertionラベル２７ａが付与され、計測ポイント２１ｅにC_C_1というassertionラベル２７ｂが付与されている。
【００４７】
カバレッジ結果２６ａ及び２６ｂは、それぞれ後の外部ツール１７により計測されるコードカバレッジの結果である。また、assertionラベル２７ａ及び２７ｂは、それぞれnextポインタで接続された計測ポイントごと、ここでは、計測ポイント２１ａ及び２１ｅごとに有する一意のassertionラベルである。
【００４８】
このように、カバレッジ結果２６ａ及び２６ｂとassertionラベル２７ａ及び２７ｂとが追加されたデータベースは、結果伸長用データ１１１としてコードカバレッジ結果伸長部１３に出力される。
【００４９】
（アサーション変換部１４の動作）
アサーション生成する計測メトリクスはToggle、Branch、Conditionのいずれかである。それぞれのアサーション変換方法についてSVA(System Verilog Assertion)アサーション言語を使用した例で説明する。なお、生成するアサーションは、SVAアサーション言語に限定されることなく、他のアサーション言語であってもよい。
【００５０】
アサーション変換部１４におけるアサーション変換の処理について説明する。図８は、アサーション変換の処理の流れの例を示すフローチャートである。
【００５１】
アサーション１１０を生成するアサーション変換処理は、計測ポイントデータ１０９がアサーション変換部１４に入力されることにより開始される。まず、アサーション変換部１４は、計測ポイントラベルを選択する（ステップＳ１）。次に、アサーション変換部１４は、選択した計測ポイントラベルからアサーションを生成する（ステップＳ２）。アサーション変換部１４は、選択した計測ポイントラベルのメトリクスがToggleか否かを判定する（ステップＳ３）。メトリクスがToggleの場合、YESとなり、アサーション変換部１４は、riseか否かを判定する（ステップＳ４）。riseの場合、YESとなり、アサーション変換部１４は、ステップＳ５に示すアサーションに変換し、ステップＳ１０に進む。riseでない場合、NOとなり、アサーション変換部１４は、ステップＳ６に示すアサーションに変換し、ステップＳ１０に進む。
【００５２】
一方、ステップＳ３において、メトリクスがToggleでない場合、NOとなり、アサーション変換部１４は、選択した計測ポイントラベルのメトリクスがBranchか否かを判定する（ステップＳ７）。メトリクスがBranchの場合、YESとなり、ステップＳ８に示すアサーションに変換し、ステップＳ１０に進む。メトリクスがBranchでない場合、NOとなり、ステップＳ９に示すアサーションに変換し、ステップＳ１０に進む。上述したように、アサーションを生成するメトリクスは、Toggle、Branch、Conditionのいずれかであるため、メトリクスがToggle及びBranchでない場合、メトリクスはConditionとなる。最後に、アサーション変換部１４は、nextポインタの先に計測ポイント、即ち、計測ポイントラベルがあるか否かを判定する（ステップＳ１０）。計測ポイントがある場合、YESとなり、アサーション変換部１４は、ステップＳ１に戻り、nextポインタの先の計測ポイントラベルを選択し、同様の処理を繰り返す。一方、nextポインタの先に計測ポイントがない場合、NOとなり、処理を終了する。
【００５３】
図９は、図６の計測ポイントデータに対してアサーションを生成した場合のアサーション記述の例を説明するための説明図である。
【００５４】
アサーション記述３１は、計測ポイント２１ａに対して生成されたアサーションの例であり、アサーション記述３２は、計測ポイント２１ｅに対して生成されたアサーションの例であり、アサーション記述３３は、計測ポイント２１ｊに対して生成されたアサーションの例である。
【００５５】
計測ポイント２１ａのメトリクスは、riseに関するtoggleであるため、ステップＳ５に示すアサーションに基づいて、アサーション記述３１が生成される。また、計測ポイント２１ｅのメトリクスは、Conditionであるため、ステップＳ９に示すアサーションに基づいて、アサーション記述３２が生成される。同様に、計測ポイント２１ｊのメトリクスは、Branchであるため、ステップＳ８に示すアサーションに基づいて、アサーション記述３３が生成される。このように生成されたアサーション記述３１から３３は、アサーション１１０として外部ツール１７に出力される。
【００５６】
（アサーション圧縮部１５の動作）
アサーション圧縮部１５には、図７に示すデータベースが入力される。アサーション圧縮部１５は、計測ポイント２１ａ、２１ｅ及び２１ｊが圧縮できるか否か、即ち、他の計測ポイントで代用可能で自身は計測不要か否かを判定する。アサーション圧縮部１５は、圧縮できると判定した場合、計測不要となった計測ポイントの接続先を代用可能な計測ポイントに変更する。この圧縮により、計測ポイントを削減し、後の外部ツールでのコードカバレッジ計測に伴う時間的、面積的オーバーヘッドを削減することを目的とする。
【００５７】
圧縮方法は、Toggle内の圧縮、Branch及びCondition内の圧縮、ToggleからBranchの圧縮、及びFSM TransitionからToggleまたはBranchの圧縮の４つのタイプに大別される。
【００５８】
図１０は、Toggle内の圧縮の例を説明するための説明図である。  
回路記述３４は、assign（wire）などの継続代入において、演算を含まない接続の場合の回路記述の例である。この回路記述３４において、out_1のtoggleは、mid_1のtoggleと一致するため圧縮可能である。また、out_2[23:0]の各ビットのtoggleは、mid_2[7:0]、mid_3[7:0]及びmid_4[7:0]の各ビットのtoggleと一致するため圧縮可能である。
【００５９】
回路記述３５は、条件のtoggle計測から出力信号のtoggleが決定されるバイトイネーブル信号などの場合の回路記述の例である。この回路記述３５において、Biten_next[31:24]のtoggleは、byteen[3]に一致するため圧縮可能である。
【００６０】
回路記述３６は、代入変数のtoggleを他の信号（主にリセット）の条件とCross化することで、回路記述３４の圧縮と同様に圧縮可能である。この回路記述３６の場合、RST_X==1’b1の際は、mid_6と同等のtoggleとなる。一方、この圧縮をするために元のアサーション記述にRST_X==1’b1なる条件が追加される。これを「クロスカバレッジ化」と呼ぶことにする。
【００６１】
アサーション記述３７は、クロスカバレッジ化前の圧縮先アサーションの例であり、アサーション記述３８は、クロスカバレッジ化後の圧縮先アサーションの例である。クロスカバレッジ化によりアサーション記述３８に“&&RST_X”の記述が追加されている。クロスカバレッジ化を施すと、Coverとなる条件が厳しくなるため圧縮元と圧縮先共に実際のカバレッジより落ちる可能性があるが、リセットが入力される頻度が低いため、余り影響はない。また、リセットが入力されていないときのtoggleをより重要視することもあるため問題ない。なお、このクロスカバレッジ化による圧縮は、オプションにより圧縮の実行または停止を制御することを可能とする。
【００６２】
図１１は、BranchおよびCondition内の圧縮の例を説明するための説明図である。  
回路記述３９は、リセット有無のBranchに対して、他の出力信号間で共有可能であるため圧縮可能である。
【００６３】
回路記述４０は、条件変数が同じで論理和演算（｜｜）を用いたConditionの場合、一方がTrueなら必然的に他方はFalseになる。アサーション記述４１は、S1==True、S3==FalseのConditionのクロスカバレッジ化前の圧縮先アサーションの例である。アサーション記述４２は、クロスカバレッジ化後の圧縮先アサーションの例である。（state_nxt==S1）のとき必ず“！（state_nxt==S3）”になるため、クロスカバレッジ化によりアサーション記述４１から“！（state_nxt==S3）”が削除されている。（state_nxt==S1）は、FSM Stateのカバレッジのため、自己が属するBranchまたはConditionの計測ポイントに圧縮可能である。
【００６４】
図１２は、ToggleからBranchの圧縮の例を説明するための説明図である。  
回路記述４３は、条件のtoggle計測からBranchが決定されるため圧縮可能である。即ち、If/elseのBranchは、byteen[3]のtoggleでCoverされるため圧縮可能である。
【００６５】
回路記述４４は、出力のtoggleからBranchのTrue/False双方がCoverされる。即ち、out_3のriseまたはfallにより、（in_3==2’b11）のTrue/FalseのBranch双方がCoverされるため圧縮可能である。
【００６６】
回路記述４５は、出力のtoggleからBranchが確定、即ち、True/FalseのバリエーションのないConditionが圧縮可能である。即ち、Out_4のriseまたはfallにより、BranchがFalseとなるin_4a:False、in_4b:False、及びin_4c:FalseのConditionが圧縮可能である。
【００６７】
図１３は、FSM TransitionからToggleまたはBranchの圧縮の例を説明するための説明図である。  
回路記述４６は、すでにBranchかConditionに圧縮されたFSM TransitionのCoverから、FSMのステートによって出力が決定される、いわゆるムーア型のFSMにおいて、出力信号または状態変数のtoggleを圧縮可能である。例えば、S2からS3への遷移が発生した場合、mode[0]のfall及びmode[1]のriseがCoverされる。一般的に各ビットのfall/riseは複数のFSM TransitionによってCoverされるため、複数の圧縮先にupポインタをリンクする。
【００６８】
回路記述４７は、すでに、BranchかConditionに圧縮されたFSM Transitionと入力信号のクロスカバレッジのCoverから、FSMのステートと入力信号によって出力が決定される、いわゆるミーリ型のFSMにおいて、出力信号のtoggleを圧縮可能である。例えば、in_1がTRUEの上でS1からS2への遷移が発生した場合、mode[0]のfall及びmode[1]のriseがカバレッジ化する必要がある。なお、このクロスカバレッジ化による圧縮についても、オプションにより圧縮の実行または停止を制御することを可能とする。アサーション記述４８は、クロスカバレッジ化前の圧縮先アサーションの例であり、アサーション記述４９は、クロスカバレッジ化後の圧縮先アサーションの例である。一般的に各ビットのfall/riseは複数のFSM TransitionによってCoverされうるので、複数の圧縮先をクロスカバレッジ化してupポインタをリンクする。
【００６９】
図１４は、アサーション圧縮部により圧縮されたデータベースの例を説明するための説明図である。図１４に示すデータベースは、図７のデータベースに対して図１３の回路記述４６で説明した圧縮を施した結果である。即ち、FSM TransitionのCoverから、toggleの圧縮が施されている。計測ポイント２１ａは圧縮により計測不要になった計測ポイントであり、アサーション圧縮部１５は、この圧縮に伴いポインタの接続を変更している。この結果、計測ポイント２１ａは、圧縮前に計測ポイント２１ｅに接続されていたが、圧縮後にupポインタにより、計測ポイント２１ｃに接続される。
【００７０】
アサーション変換部１４は、アサーション圧縮部１５より圧縮されたデータベースに対してアサーション変換を施すことにより、計測ポイントを削減したアサーション１１０を生成することができる。アサーション生成部１２は、その計測ポイントを削減したアサーション１１０を外部ツール１７に出力する。この結果、外部ツール１７でのコードカバレッジ計測に伴う時間的、面積的オーバーヘッドを削減することができる。
【００７１】
また、アサーション生成部１２は、圧縮が施された場合、アサーション圧縮部１５により圧縮された図１４に示すデータベースを結果伸長用データ１１１としてコードカバレッジ結果伸長部１３に出力する。
【００７２】
（アサーション停止部１６の動作）
アサーション停止部１６は、アサーション変換部１４により生成されたアサーション１１０に対して、コードカバレッジ計測が実行された場合に計測を停止する停止機構を付加する。図１５は、停止機構をSVAアサーション言語にて追加した例を説明するための説明図である。
【００７３】
コードカバレッジ計測は、一回以上計測が実行されたか否かに着目し、実行された回数には着目しない場合がある。そのため、シミュレーションにおいてコードカバレッジ計測を行う場合、停止機構を付加し、一回計測が実行されたことを確認後、計測を停止することでコードカバレッジ計測時の時間的なオーバーヘッドを削減できる。
【００７４】
一方、エミュレーションにおいてコードカバレッジ計測を行う場合、時間的なオーバーヘッドより、アサーション１１０をマッピングする際の面積的なオーバーヘッドが問題となる場合がある。そのため、エミュレーションにおいてコードカバレッジ計測を行う場合は、停止機構を付加することによる面積的なオーバーヘッドを抑制するため、停止機構を付加しないようにする。
【００７５】
そのため、アサーションは条件コンパイルを用いて、アサーション使用時に停止機構の使用を選択できるように生成する。即ち、シミュレーションを実行する場合は、停止機構を付加し（ＯＮ）、エミュレーションを実行する場合は、停止機構を付加しない（ＯＦＦ）。なお、停止機構は、計測ポイント全てに付加してもよいし、計測ポイント毎に付加する、あるいは付加しないこと選択できるようにしてもよい。
【００７６】
停止機構をSVAアサーション言語にて追加した例を以下に示す。実行時にデフォルトでは停止機構がＯＮになり、マクロ“DISABLE_COV”を追加した場合は停止機構がＯＦＦになるよう選択できる。
【００７７】
図１５において、プロパティ宣言部では、propertyがp_t_n_rの名で定義されている。また、DISABLE_COVが定義されていなければ、coverフラグp_disableが１の際、アサーションを評価しないようにしている。
【００７８】
Cover property記述部では、DISABLE_COVが定義されていなければ、coverフラグとして内部変数d_t_r_HPD_DILASTが定義される。また、property p_t_n_rに対して、cover property c_t_r_HPD_DILASTが定義される。DISABLE_COVが定義されていなければ、引数d_t_r_HPD_DILASTが与えられる。Coverされた際、即ち、計測が実行された場合、Coverフラグd_t_r_HDP_DILASTが１となる。
【００７９】
このように、アサーション停止部１６において、停止機構を選択的にアサーション１１０に付加することにより、コードカバレッジ計測における時間的なオーバーヘッドを削減することができる。
【００８０】
以上のアサーション生成部１２により、コードカバレッジ計測用のアサーション１１０が生成され、生成されたアサーション１１０は、外部ツール１７に出力される。このアサーション１１０はシミュレータのみならずエミュレータにも入力可能である。
【００８１】
シミュレータまたはエミュレータなどである外部ツール１７は、このアサーション１１０を受け取り、コードカバレッジ計測を実行し、実行して得られたアサーション結果１１２をコードカバレッジ結果伸長部１３に出力する。
【００８２】
また、外部ツール１７は、上述したように、プロパティチェッカ及びデバッガなどを有していてもよい。アサーション１１０をプロパティチェッカに入力することで、どのような入力でも実行されることがないデッドコンディションなどを判別でき、コードカバレッジ計測が実行されていない場合などに必要となる解析時間を削減することができる。また、アサーション１１０をデバッガの波形ビューワに入力することで、どのタイミングでCover、即ち、コードカバレッジ計測が実行されたかを確認でき、デバッグ時間の短縮を図ることができる。
【００８３】
（コードカバレッジ結果伸長部１３の動作）
コードカバレッジ結果伸長部１３は、アサーション生成部１２により得られた結果伸長用データ１１１と、外部ツール１７により生成されたアサーション結果１１２とを受け取り、最終的なコードカバレッジ結果１１３を生成する。
【００８４】
まず、コードカバレッジ結果伸長部１３は、以下の手順に従ってアサーション結果１１２から全計測ポイントのコードカバレッジ計測の結果（Cover/Not Cover）を確定する。コードカバレッジ結果伸長部１３は、外部ツール１７のアサーションレポート機能により生成されたアサーション結果１１２を走査する。コードカバレッジ結果伸長部１３は、アサーション結果１１２を走査して得られたassertionラベルごとのCover/Not Coverデータをデータベースへ格納する。
【００８５】
図１６は、アサーションラベルごとのCover/Not Coverデータをデータベースに格納したデータベースの例を説明するための説明図である。コードカバレッジ結果伸長部１３は、アサーション結果１１２を走査した結果、計測ポイント２１ｅのコードカバレッジ計測を行っている判定した場合、データベースのカバレッジ結果２６ｂにCoverを格納する。
【００８６】
次に、コードカバレッジ結果伸長部１３は、データベースのnext_allポインタに従い辿っていく。コードカバレッジ結果伸長部１３は、各計測ポイントの全てのupポインタが他を指さなくなる、言い換えると、Nullを指すまで辿り、その１つでもCoverがあれば自身もCoverとする。１つでもCoverを持っていいなければNot Coverとし、データベースに追加する。コードカバレッジ結果伸長部１３は、このデータベースを最終的なコードカバレッジ結果１１３として出力する。
【００８７】
図１７は、コードカバレッジ結果の例を説明するための説明図である。図１７に示すように、計測ポイント２１ｈ、２１ｉ、２２ｂ及び２２ｃにそれぞれカバレッジ結果２６ｃ、２６ｄ、２６ｅ及び２６ｄが追加されている。計測ポイント２１ｅのCoverにより、接続されている計測ポイント２１ｈ、２１ｉ、２１ｂ及び２１ｃのカバレッジ結果２６ｃ、２６ｄ、２６ｅ及び２６ｄも全てCoverとなる。また、計測ポイント２１ｃのCoverにより、接続されている計測ポイント２１ａのカバレッジ結果２６ａもCoverとなる。このように、カバレッジ結果２６ａ、２６ｃ、２６ｄ、２６ｅ及び２６ｄが追加されたデータベースは、最終的なコードカバレッジ結果１１３として、コードカバレッジ結果伸長部１３から出力される。
【００８８】
このように、コードカバレッジ結果伸長部１３の処理により、必要最小限の計測ポイントからコードカバレッジ情報を損なうことなく本来のカバレッジ結果を復元することができる。図１７の例では、計測ポイント２１ｅのカバレッジ結果２６ｂに基づいて、計測ポイント２１ａ、２１ｂ、２１ｃ、２１ｈ及び２１ｉのカバレッジ結果を得ることができる。
【００８９】
以上のように、回路検証装置１は、メトリクス情報１０８により指定されたメトリクスに基づいて、検証対象回路記述１０７から測定ポイントを抽出し、抽出した測定ポイントをアサーションに変換するようにした。この結果、エミュレータによるコードカバレッジ測定を実行することができる。
【００９０】
よって、本実施の形態の回路検証装置によれば、コードカバレッジ計測をエミュレーションにおいて実行することができる。
【００９１】
本明細書における各「部」は、実施の形態の各機能に対応する概念的なもので、必ずしも特定のハードウエアやソフトウエア・ルーチンに１対１には対応しない。従って、本明細書では、以上、実施の形態の各機能を有する仮想的回路ブロック（部）を想定して実施の形態を説明した。また、本明細書におけるフローチャート中の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
【００９２】
なお、以上説明した動作を実行するプログラムは、コンピュータプログラム製品として、フレキシブルディスク、ＣＤ−ＲＯＭ等の可搬媒体や、ハードディスク等の記憶媒体に、その全体あるいは一部が記録され、あるいは記憶されている。そのプログラムコードがコンピュータにより読み取られて、動作の全部あるいは一部が実行される。あるいは、そのプログラムの全体あるいは一部を通信ネットワークを介して流通または提供することができる。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールすることで、容易に本発明の回路検証装置を実現することができる。
【００９３】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【００９４】
【図１】本実施の形態に係る情報処理装置の構成を示すブロック図である。
【図２】本実施の形態に係る回路検証装置の構成を示すブロック図である。
【図３】検証対象回路記述と抽出した計測ポイントの例を説明するための説明図である。
【図４】計測ポイントのデータ構造の例を説明するための説明図である。
【図５】図３の検証対象回路記述から構築されるデータベースの例を説明するための説明図である。
【図６】計測ポイントの組み換えを行ったデータベースの例を説明するための説明図である。
【図７】assertionラベルとカバレッジ結果を追加したデータベースの例を説明するための説明図である。
【図８】アサーション変換の処理の流れの例を示すフローチャートである。
【図９】図６の計測ポイントデータに対してアサーションを生成した場合のアサーション記述の例を説明するための説明図である。
【図１０】Toggle内の圧縮の例を説明するための説明図である。
【図１１】BranchおよびCondition内の圧縮の例を説明するための説明図である。
【図１２】ToggleからBranchの圧縮の例を説明するための説明図である。
【図１３】FSM TransitionからToggleまたはBranchの圧縮の例を説明するための説明図である。
【図１４】アサーション圧縮部により圧縮されたデータベースの例を説明するための説明図である。
【図１５】停止機構をSVAアサーション言語にて追加した例を説明するための説明図である。
【図１６】アサーションラベルごとのCover/Not Coverデータをデータベースに格納したデータベースの例を説明するための説明図である。
【図１７】コードカバレッジ結果の例を説明するための説明図である。
【符号の説明】
【００９５】
１…回路検証装置、１１…コードカバレッジ計測ポイント抽出部、１２…アサーション生成部、１３…コードカバレッジ結果伸長部、１４…アサーション変換部、１５…アサーション圧縮部、１６…アサーション停止部、１７…外部ツール、１００…情報処理装置、１０１…本体装置、１０１ａ…中央処理装置、１０２…記憶装置、１０３…表示装置、１０４…キーボード、１０５…マウス、１０６…回路検証プログラム、１０７…検証対象回路記述、１０８…メトリクス情報、１０９…計測ポイントデータ、１１０…アサーション、１１１…結果伸長用データ、１１２…アサーション結果、１１３…コードカバレッジ結果
【図１】
2010067160.tif 000003
【図２】
2010067160.tif 000004
【図３】
2010067160.tif 000005
【図４】
2010067160.tif 000006
【図５】
2010067160.tif 000007
【図６】
2010067160.tif 000008
【図７】
2010067160.tif 000009
【図８】
2010067160.tif 000010
【図９】
2010067160.tif 000011
【図１０】
2010067160.tif 000012
【図１１】
2010067160.tif 000013
【図１２】
2010067160.tif 000014
【図１３】
2010067160.tif 000015
【図１４】
2010067160.tif 000016
【図１５】
2010067160.tif 000017
【図１６】
2010067160.tif 000018
【図１７】
2010067160.tif 000019