(57)【要約】      （修正有）【課題】論理検証において検証精度を維持しながら、報告回数の増加による論理シミュレーションの実行時間の長期化を防止する。【解決手段】検証対象の論理回路に論理シミュレーションを実行し、所定の着目事象の発生状況をカバレジとして取得する論理検証システムにおいて、テストデータを入力とする論理演算を行い、演算結果を出力する論理回路２１１Ａと、論理回路２１１Ａから出力される演算結果を保持し出力する演算結果保持部と、演算結果保持部から出力される演算結果に基づいて、論理回路２１１Ａで着目事象が発生したか検出する着目事象検出部２１４Ａと、着目事象の発生が検出されるたびに着目事象の発生回数を計数するカウンタ部２１５Ａとを備える。カウンタ部２１５Ａは、計数した着目事象の発生回数が予め設定された規定回数に一致する場合に、規定回数分の着目事象が発生したことを示す規定回数発生報告をカバレジとして出力する。【選択図】図３
2014002622.tif 000002
【特許請求の範囲】
【請求項１】
検証対象の論理回路にテストデータを入力する論理シミュレーションを実行し、前記論理シミュレーションにおける所定の着目事象の発生状況をカバレジとして取得する論理検証システムにおいて、
前記テストデータを入力とする論理演算を行い、演算結果を出力する論理回路と、
前記論理回路から出力される演算結果を保持し出力する演算結果保持部と、
前記演算結果保持部から出力される前記演算結果に基づいて、前記論理回路で前記着目事象が発生したか検出する着目事象検出部と、
前記着目事象検出部によって前記着目事象の発生が検出されるたびに前記着目事象の発生回数を計数するカウンタ部と
を備え、
前記カウンタ部は、前記計数した着目事象の発生回数が予め設定された規定回数に一致する場合に、前記規定回数分の着目事象が発生したことを示す規定回数発生報告をカバレジとして出力する
ことを特徴とする論理検証システム。
【請求項２】
前記カウンタ部は、前記計数した着目事象の発生回数が、予め設定された複数の規定回数のそれぞれに一致するたびに、前記規定回数発生報告を出力する
ことを特徴とする請求項１に記載の論理検証システム。
【請求項３】
前記カウンタ部には、前記着目事象の発生頻度を推定し得る複数の規定回数が設定される
ことを特徴とする請求項２に記載の論理検証システム。
【請求項４】
前記演算結果保持部と、該演算結果に接続される前記着目事象検出部と、該着目事象検出部に接続される前記カウンタ部とが、１つのモジュールに纏められて形成される
ことを特徴とする請求項１に記載の論理検証システム。
【請求項５】
前記着目事象検出部は、前記演算結果保持部から出力される信号について、複数の前記着目事象を組の動作として検出した場合に、前記着目事象が１回発生したと検出する
ことを特徴とする請求項１に記載の論理検証システム。
【請求項６】
検証対象の論理回路にテストデータを入力する論理シミュレーションを実行し、前記論理シミュレーションにおける所定の着目事象の発生状況をカバレジとして取得する論理検証システムのカバレジ取得方法において、
論理回路が、前記テストデータを入力とする論理演算を行い、演算結果を出力する論理演算ステップと、
演算結果保持部が、前記論理演算ステップで前記論理回路から出力される演算結果を保持し出力する演算結果保持ステップと、
着目事象検出部が、前記演算結果保持ステップで前記演算結果保持部から出力される前記演算結果に基づいて、前記論理回路で前記着目事象が発生したか検出する着目事象検出ステップと、
カウンタ部が、前記着目事象検出ステップで前記着目事象検出部によって前記着目事象の発生が検出されるたびに前記着目事象の発生回数を計数する発生回数計数ステップと、
前記カウンタ部が、前記発生回数計数ステップで計数した着目事象の発生回数が予め設定された規定回数に一致する場合に、前記規定回数分の着目事象が発生したことを示す規定回数発生報告をカバレジとして出力する規定回数発生報告ステップと
を有することを特徴とするカバレジ取得方法。
【請求項７】
前記規定回数発生報告ステップで、前記カウンタ部が、前記計数した着目事象の発生回数が、予め設定された複数の規定回数のそれぞれに一致するたびに、前記規定回数発生報告を出力する
ことを特徴とする請求項６に記載のカバレジ取得方法。
【請求項８】
前記規定回数発生報告ステップで、前記カウンタ部には、前記着目事象の発生頻度を推定し得る複数の規定回数が設定される
ことを特徴とする請求項７に記載のカバレジ取得方法。
【請求項９】
前記着目事象検出ステップでは、前記着目事象検出部が、前記演算結果保持部から出力される信号について、複数の前記着目事象を組の動作として検出した場合に、前記着目事象が１回発生したと検出する
ことを特徴とする請求項６に記載のカバレジ取得方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理検証システム及びカバレジ取得方法に関し、例えば、大規模集積回路の開発において論理設計後に論理シミュレーションによって論理検証を行う論理検証システム及びカバレジ取得方法に適用して好適なものである。
【背景技術】
【０００２】
近年、大規模集積回路（ＬＳＩ：Large Scale Integration）の開発において、プロセスの微細化が進んだことにより、大規模なＬＳＩの実現が可能になっている。
【０００３】
ＬＳＩの論理設計では、ハードウェア記述言語（ＨＤＬ：Hardware Description Language）によって記述されるＲＴＬ（Resister Transfer Level）という抽象レベルの論理が使用される。ＨＤＬによって記述されるＲＴＬは、論理合成ツールで取り扱いが可能なフリップフロップと組合せ論理回路とから構成される。ＨＤＬの一例として、SystemVerilogやVerilogHDL及びＶＨＤＬ等がある。
【０００４】
論理設計が行われると、ＨＤＬで記述したＲＴＬを検証対象として、検証対象の論理回路（検証対象論理回路）が設計者の意図した通りに動作するかを検証する論理検証が行われる。論理検証は、実機を用いることなく、検証対象論理回路をテストベンチにかけて論理シミュレータによる論理シミュレーションを行い、その動作結果を確認する方法が一般的である。例えば、論理シミュレーションの動作結果について、着目したい所定の事象（以下、着目事象という）の発生状況をカバレジとして取得し、当該発生頻度を計測することによって検証対象論理回路が設計者の意図した通りの動作を行っているかどうかを判断する。論理検証におけるカバレジの取得においては、検証時間の短縮と検証精度の向上とが重要な課題である。
【０００５】
ここで、前述したようにＬＳＩが大規模化している現状では、論理検証における論理シミュレーションにおいて、論理回路の大規模化及び組合せ状態数の増加によって複雑さが増加し、テストデータの数が増える傾向にある。そして、テストデータの数が増える事により、論理シミュレーションの実行に必要な時間が増加するという問題がある。このような問題を解決する技術の一例として、下記の特許文献１又は特許文献２があげられる。
【０００６】
例えば特許文献１には、論理シミュレータを用いて論理検証を行う論理検証充分性評価システムが記載されている。特許文献１に記載された論理検証充分性評価システムは、着目事象の発生を計測する機能をシミュレーション対象回路の中に実現して論理シミュレーション実行中に着目事象の発生の計測を実行可能とすることにより、シミュレーション結果データの容量を不必要に増やさず、また、既存の論理シミュレータに特別な機構を付加することなく、高速にカバレジの取得を行う。
【０００７】
また、特許文献２には、相関図を用いた検証方式が記載されている。特許文献２に記載された検証方式では、カバレジの取得結果からテストデータの検証範囲を推定し、設計者が検証するべき事象の網羅性を確認して有効性の高いテストデータの作成を補助する。特許文献２に記載された検証方式では、このような観点から作成されたテストデータと観測点との相関図を生成し、当該相関図に基づいてテストデータと論理回路動作部との関係を可視化することにより、論理シミュレーションの効率化を図りつつ設計者の意図通りに論理シミュレーションができているかを確認することができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第３０５２２６３号公報
【特許文献２】特開２０１１−１５０４４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、論理シミュレーションで検証対象論理回路における着目事象の発生頻度を計測する場合には、着目事象の発生を報告するカバレジ取得記述が設けられるが、特許文献１に記載された論理検証充分性評価システム及び特許文献２に記載された検証方式では、着目事象が発生するたびに発生報告が行われる。検証対象論理回路が複雑になると、検証対象論理回路が設計者の意図通りに動作するかを確認するために必要な検証対象論理回路の動作回数が増加するので、着目事象の発生回数も増加し、その結果、発生報告の報告回数が増加する。発生報告という出力処理は、論理シミュレーションにおけるオーバヘッドと考えられるが、発生報告の報告回数が増加すると、その回数分だけオーバヘッドが増加し、論理シミュレーションの実行に要する時間が長くなってしまうという課題があった。
【００１０】
また、着目事象の発生頻度を計測するためには、発生頻度を知るために発生報告の総報告回数を把握する必要があるが、特許文献１に記載された論理検証充分性評価システム及び特許文献２に記載された検証方式では、論理シミュレータの出力先に当該総報告回数を計測するための部品を備える必要があった。
【００１１】
本発明は以上の点を考慮してなされたもので、論理検証において検証精度を維持しながら、報告回数の増加による論理シミュレーションの実行時間の長期化を防止し得る論理検証システム及びカバレジ取得方法を提案しようとするものである。
【課題を解決するための手段】
【００１２】
かかる課題を解決するため本発明においては、検証対象の論理回路にテストデータを入力する論理シミュレーションを実行し、前記論理シミュレーションにおける所定の着目事象の発生状況をカバレジとして取得する論理検証システムにおいて、前記テストデータを入力とする論理演算を行い、演算結果を出力する論理回路と、前記論理回路から出力される演算結果を保持し出力する演算結果保持部と、前記演算結果保持部から出力される前記演算結果に基づいて、前記論理回路で前記着目事象が発生したか検出する着目事象検出部と、前記着目事象検出部によって前記着目事象の発生が検出されるたびに前記着目事象の発生回数を計数するカウンタ部とを備え、前記カウンタ部は、前記計数した着目事象の発生回数が予め設定された規定回数に一致する場合に、前記規定回数分の着目事象が発生したことを示す規定回数発生報告をカバレジとして出力する論理検証システムが提供される。
【００１３】
また、かかる課題を解決するため本発明においては、検証対象の論理回路にテストデータを入力する論理シミュレーションを実行し、前記論理シミュレーションにおける所定の着目事象の発生状況をカバレジとして取得する論理検証システムのカバレジ取得方法において、論理回路が、前記テストデータを入力とする論理演算を行い、演算結果を出力する論理演算ステップと、演算結果保持部が、前記論理演算ステップで前記論理回路から出力される演算結果を保持し出力する演算結果保持ステップと、着目事象検出部が、前記演算結果保持ステップで前記演算結果保持部から出力される前記演算結果に基づいて、前記論理回路で前記着目事象が発生したか検出する着目事象検出ステップと、カウンタ部が、前記着目事象検出ステップで前記着目事象検出部によって前記着目事象の発生が検出されるたびに前記着目事象の発生回数を計数する発生回数計数ステップと、前記カウンタ部が、前記発生回数計数ステップで計数した着目事象の発生回数が予め設定された規定回数に一致する場合に、前記規定回数分の着目事象が発生したことを示す規定回数発生報告をカバレジとして出力する規定回数発生報告ステップとを有するカバレジ取得方法が提供される。
【発明の効果】
【００１４】
本発明によれば、論理検証において検証精度を維持しながら、報告回数の増加による論理シミュレーションの実行時間の長期化を防止し得る。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態による論理検証システムのハードウェア構成を示すブロック図である。
【図２】図１に示す論理シミュレータと、論理シミュレータに入出力される種々のデータ等との関係を示す説明図である。
【図３】図１に示す論理シミュレータの機能的構成の一例を示すブロック図である。
【図４】図１に示す論理シミュレータによる論理シミュレーション実行時の処理の流れを示すフローチャートである。
【図５】従来の論理シミュレータの機能的構成の一例を示すブロック図である。
【図６】第２の実施の形態による論理検証システムにおける論理シミュレータの機能的構成の一例を示すブロック図である。
【図７】論理シミュレータの具体的な作成例を示すＨＤＬ記述である。
【図８】図７に示したＨＤＬ記述を用いて論理シミュレーションを行った実行結果の一例を示す説明図である。
【発明を実施するための形態】
【００１６】
（１）第１の実施の形態
本実施の形態による論理検証システムは、検証対象論理回路に対する論理シミュレーションを実行することによって、検証対象論理回路における着目事象の発生頻度を認識する。特に、着目事象の発生に伴う発生報告の実行頻度を抑制し、着目事象の発生回数が規定回数に達した場合にのみ規定回数発生報告を行うことにより、論理検証の検証精度を維持しながら、発生報告の出力処理に要する処理時間を削減して論理シミュレーションの全体的な処理時間の増加を防止することを特徴としている。
【００１７】
（１−１）第１の実施の形態による論理検証システムの構成
図１は、第１の実施の形態による論理検証システムのハードウェア構成を示す。図１に示すように、論理検証システム１は、主制御装置１１、主記憶装置１２、補助記憶装置１３、入力装置１４、出力装置１５、及び波形表示装置１６を備える。
【００１８】
主制御装置１１は、例えばＣＰＵ（Central Processing Unit）であり、論理検証システム１の各部における動作を制御する。主記憶装置１２は、例えばＤＲＡＭ（Dynamic Random Access Memory）又はＳＲＡＭ（Static Random Access Memory）等の記憶装置である。
【００１９】
主記憶装置１２には、主制御装置１１が補助記憶装置１３に格納されているデータの読取り及びプログラムの実行を行う場合に、当該データ及びプログラムが読み出されて一時的に格納される。また、主記憶装置１２には、設計された論理回路の論理検証を行う論理シミュレータ２００が格納される。論理シミュレータ２００は、例えば、主記憶装置１２に格納されるプログラムが起動されることによって形成されるモジュールであり、実際に論理回路を形成することなく論理シミュレーションを実行できる。
【００２０】
補助記憶装置１３は、例えばハードディスクドライブ（ＨＤＤ：Hard Disk Drive）又はフラッシュメモリ等の記憶装置であり、検証対象論理回路データ１３１、テストベンチプログラム１３２、ライブラリ１３３、テストデータ１３４、実行ログ１３５、信号観測波形データ１３６、及びカバレジ取得結果データ１３７が格納される。
【００２１】
検証対象論理回路データ１３１には、論理シミュレータ２００による論理検証の対象となる検証対象論理回路（図３に示す検証対象論理回路２１０に相当）を示す情報が格納される。例えば、検証対象論理回路データ１３１には、検証対象論理回路を構成するＲＴＬが格納されている。テストベンチプログラム１３２は、その実行によってテストベンチ（図３に示すテストベンチ２２０に相当）を形成するプログラムである。ライブラリ１３３は、検証対象論理回路２１０で使用される部品を定義したライブラリであって、論理シミュレータ２００及びテストベンチプログラム１３２の実行時等に参照される。テストデータ１３４は、論理検証時に使用されるテストデータであり、検証対象論理回路２１０の論理検証を希望する全てのテストパターンについてのテストデータが設計者によって作成される。後述する論理シミュレーション時には、テストデータ１３４に記載されたスティミュラスが、直接又はテストベンチ２２０を介して論理シミュレータ２００に入力される。
【００２２】
実行ログ１３５には、論理検証時に出力される動作ログが記録される。信号観測波形データ１３６には、論理検証時に論理シミュレータ２００内の各部で観測される出力信号の信号値が記録される。カバレジ取得結果データ１３７には、論理シミュレーションにおけるカバレジ取得結果として着目事象の発生頻度を示す情報が記録される。論理シミュレータ２００による論理シミュレーションについては、後に詳細に説明する。
【００２３】
入力装置１４は、例えばキーボードであり、設計者によって論理シミュレータ２００による論理検証の開始を指示する操作やテストデータを入力する操作等が行われる装置である。入力操作が行われた入力装置１４は、当該入力操作に応じた信号を主制御装置１１に通知する。出力装置１５は、主制御部１１の制御に従って、論理検証システム１における論理検証の結果（例えば、実行ログ１３５及びカバレジ取得結果データ１３７）を表示又は出力する装置である。波形表示装置１６は、主制御部１１の制御に従って信号の波形を表示する装置であり、信号観測波形データ１３６に記録された信号値の履歴に基づいて、論理検証時に観測された出力信号の波形を表示する。
【００２４】
図２は、図１に示す論理シミュレータと、論理シミュレータに入出力される種々のデータ等との関係を示す説明図である。論理シミュレータ２００では、検証対象論理回路データ１３１、テストベンチプログラム１３２、ライブラリ１３３、及びテストデータ１３４が入力されて、検証対象論理回路に対する論理シミュレーションが実行される。そして、論理シミュレーションの結果、論理シミュレータ２００は、実行ログ１３５、信号観測波形データ１３６、及びカバレジ取得結果データ１３７を出力する。
【００２５】
（１−２）論理シミュレータの機能的構成
図３は、図１に示す論理シミュレータの機能的構成の一例を示すブロック図である。図３を参照して、論理シミュレータ２００の機能的構成について説明する。論理シミュレータ２００は、検証対象論理回路２１０及びテストベンチ２２０を含んで構成される。
【００２６】
検証対象論理回路２１０は、論理シミュレータ２００による論理検証の対象となる論理回路であって、検証対象論理回路データ１３１が論理シミュレータ２００に入力されることにより生成される。検証対象論理回路２１０では、組合せ論理回路２１１Ａ，２１１Ｂ間にフリップフロップ２１２Ａが配置され、組合せ論理回路２１１Ｂ，２１１Ｃ間にフリップフロップ２１２Ｂが配置される。
【００２７】
組合せ論理回路２１１（個別には、組合せ論理回路２１１Ａ〜２１１Ｃ）は、検証対象論理回路２１０のうち、スティミュラスが入力されて検証対象となる論理演算を実際に行う論理回路である。フリップフロップ２１２（個別には、フリップフロップ２１２Ａ，２１２Ｂ）は、一般的なフリップフロップであり、例えば、クロックを入力の１つとするポジティブエッジトリガ型のフリップフロップを用いる。フリップフロップ２１２は、組合せ論理回路２１１の出力値を入力の１つとし、入力クロックの０から１への変化に応じて組合せ論理回路２１１からの入力を保持し、保持している値を出力する。
【００２８】
検証対象論理回路２１０は、テストベンチ２２０からフリップフロップ２１２Ａ，２１２Ｂにクロックが入力されることにより、組合せ論理回路２１１Ａ，２１１Ｂ，２１１Ｃを、入力クロックの０から１への変化に同期して論理動作させることができる。なお、図３では一例として、３つの組合せ論理回路２１１Ａ，２１１Ｂ，２１１Ｃとフリップフロップ２１２Ａ，２１２Ｂが示されているが、組合せ論理回路２１１とフリップフロップ２１２の個数及び配置関係は、これに限定されるものではない。
【００２９】
テストベンチ２２０は、論理検証時に論理シミュレータ２００と併せて動作し、例えば、入力されたスティミュラスを模擬的に処理し、処理後の信号を組合せ論理回路２１１Ａに出力する。また、テストベンチ２２０は、フリップフロップ２１２（個別にはフリップフロップ２１２Ａ及び２１２Ｂ）にクロックを入力する。フリップフロップ２１２は、入力クロックの０から１への変化に同期して、組合せ論理回路２１１からの入力を保持する。
【００３０】
また、検証対象論理回路２１０には、１以上のカバレジ取得記述２１３（個別にはカバレジ取得記述２１３Ａ，２１３Ｂ）が設けられている。カバレジ取得記述２１３Ａはフリップフロップ２１２Ａの出力側に接続され、カバレジ取得記述２１３Ｂはフリップフロップ２１２Ｂの出力側に接続される。カバレジ取得記述２１３は、検証対象論理回路２１０に対する論理シミュレーションの実行中に所定の着目事象が発生した場合に、その発生を検出し、検出した着目事象の発生に基づいて発生報告を行う。
【００３１】
カバレジ取得記述２１３Ａは、内部に着目事象検出部２１４Ａ及びカウンタ部２１５Ａを有する。着目事象検出部２１４Ａは、組合せ論理回路２１１Ａで着目事象が発生した場合に、着目事象の発生を示す信号が入力されることにより着目事象の発生を検出する。また、着目事象検出部２１４Ａは、着目事象の発生を示す信号をカウンタ部２１５Ａに入力する。カウンタ部２１５Ａは、着目事象検出部２１４Ａからの入力に基づいて着目事象の発生回数を計数し、計数した発生回数が規定の回数（規定回数）に達した場合にのみ、着目事象が規定回数分発生したことを報告する発生報告として、規定回数発生報告を行う。
【００３２】
なお、カバレジ取得記述２１３Ｂもカバレジ取得記述２１３Ａと同様に、着目事象検出部２１４Ｂ及びカウンタ部２１５Ｂを有する構成となっている（図示せず）が、説明を省略する。論理シミュレータ２００では、カウンタ部２１５Ａ又はカウンタ部２１５Ｂによる規定回数発生報告がカバレジの取得に相当し、規定回数発生報告の報告回数がカバレジ取得データ１３７に記録される。
【００３３】
（１−３）論理シミュレータによる論理シミュレーション
図４は、図１に示す論理シミュレータによる論理シミュレーション実行時の処理の流れを示すフローチャートである。図４では、一例として組合せ論理回路２１１Ａ、フリップフロップ２１２Ａ、及びカバレジ取得記述２１３Ａにおける処理を説明するが、論理シミュレーションの実行時には、組合せ論理回路２１１Ｂ及び２１１Ｃでも、組合せ論理回路２１１Ａでの処理と並行して同様の動作が行われる。
【００３４】
まず、テストデータ１３４に記載されたスティミュラスが、テストベンチ２２０に入力される（ステップＳ１０１）。次に、テストベンチ２２０が、入力されたスティミュラスを模擬的に処理し、クロックの出力タイミングに合わせて、処理後の信号を組合せ論理回路２１１Ａに出力する（ステップＳ１０２）。なお、ステップＳ１０１においてスティミュラスが直接検証対象論理回路２１０の組合せ論理回路２１１Ａに入力されてもよく、このような場合には、ステップＳ１０２の処理が行われずにステップＳ１０３の処理が行われる。
【００３５】
ステップＳ１０３において、組合せ論理回路２１１Ａでは、入力された信号に基づいて論理演算が行われる（ステップＳ１０３）。そして、組合せ論理回路２１１Ａからの出力はフリップフロップ２１２Ａに入力され、フリップフロップ２１２Ａに記憶される（ステップＳ１０４）。
【００３６】
ステップＳ１０５では、フリップフロップ２１２Ａからの入力を着目事象検出部２１４Ａで判定し、着目事象であった場合には（ステップＳ１０５のＹＥＳ）、カウンタ部２１５Ａに着目事象の発生を示す信号を出力する。また、フリップフロップ２１２Ａからの入力が着目事象でなかった場合には（ステップＳ１０５のＮＯ）、現在のクロックタイミングにおける論理シミュレーションの処理を終了し、次以降のクロックタイミングにおける論理シミュレーションの実行まで待機する。
【００３７】
カバレジ取得記述２１３Ａでは、着目事象検出部２１４Ａが着目事象の発生を検出してカウンタ部２１５Ａに信号を転送する。そして、カウンタ部２１５Ａは、着目事象検出部２１４Ａからの入力に基づいて着目事象の発生回数を計数し（ステップＳ１０６）、計数した発生回数が規定の回数（規定回数）に達した場合にのみ（ステップＳ１０７のＹＥＳ）、規定回数発生報告を出力する（ステップＳ１０８）。なお、規定回数は、複数種類が予め規定されていてもよい。従って例えば、カウンタ部２１５Ａは、規定回数が８回及び６４回に規定されていた場合には、着目事象の発生を示す信号が入力された回数が８回目及び６４回目のときだけ、規定回数発生報告を論理シミュレータ２００に出力する。
【００３８】
一方、ステップＳ１０６で計数した発生回数が規定回数に達していない、又は規定回数を超えている場合には（ステップＳ１０７のＮＯ）、カウンタ部２１５Ａは規定回数発生報告を出力せずに現在のクロックタイミングにおける論理シミュレーションの処理を終了し、次以降のクロックタイミングにおける論理シミュレーションの実行まで待機する。
【００３９】
ステップＳ１０８で規定回数発生報告が出力されると、論理シミュレータ２００は、カバレジ取得結果データ１３７に、フリップフロップ２１２Ａの入力に繋がる組合せ論理回路２１１Ａにおいて着目事象の発生回数が規定回数に達したことを記録し（ステップＳ１０９）、現在のクロックタイミングにおける論理シミュレーションの処理を終了する。
【００４０】
なお、前述したように、組合せ論理回路２１１Ａ以外の組合せ論理回路２１１Ｂ，２１１Ｃ等でも、ステップＳ１０１〜Ｓ１０９と同様の処理が同期をとって行われ、着目事象が発生するか否かの検出と、着目事象の発生回数が規定回数であるか否かに基づいた既定回数発生報告の出力とが行われる。そして、テストデータ１３４に格納された全てのテストパターンについて、スティミュラスがクロックタイミングに合わせて論理シミュレータ２００に入力され、論理シミュレーションが繰り返し行われる。
【００４１】
上記のような論理シミュレーションが行われることにより、論理シミュレータ２００の動作ログが実行ログ１３５に記録され、論理シミュレータ２００内の各部における出力信号の波形が信号観測波形データ１３６に記録され、着目事象の発生回数が規定回数に達した場合に報告される規定回数発生報告がカバレジ取得結果データ１３７に記録される。設計者はこれらのデータを参照することによって、検証対象論理回路２１０が設計者の意図した通りに動作したか判断する。
【００４２】
例えば、組合せ論理回路２１１の機能検証を行うために適切な規定回数が設定されている場合に、カバレジ取得結果データ１３７にカバレジ取得記述２１３Ａから出力された規定回数発生報告が記録されていれば、カバレジ取得記述２１３Ａに繋がる組合せ論理回路２１１Ａにおいて十分な回数の着目事象の発生が検出されたことを示しているので、設計者は、組合せ論理回路２１１Ａが設計者の意図した通りに動作したと判断できる。更に例えば、カバレジ取得結果データ１３７にカバレジ取得記述２１３Ｂから出力された規定回数発生報告が記録されていなければ、カバレジ取得記述２１３Ｂに繋がる組合せ論理回路２１１Ｂにおいて十分な回数の着目事象の発生が検出されなかったことを示し、設計者は、組合せ論理回路２１１Ｂでは十分な回数の論理検証が行われなかったと判断できる。この場合に、設計者は、検証対象論理回路２１０に対してテストデータ１３４を用いた論理シミュレータ２００の論理シミュレーションについて、検証された範囲を組合せ論理回路２１１Ａまでと推定することができる。
【００４３】
（１−４）従来の論理シミュレータによる論理シミュレーション
図５は、従来の論理シミュレータの機能的構成の一例を示すブロック図である。以下では、第１の実施の形態による論理シミュレータ２００と比較するために、従来の論理シミュレータ９００による論理シミュレーションの処理を説明する。論理シミュレータ９００の構成は、カバレジ取得記述９１３内にカウンタ部を有していない点以外は、図３に示す論理シミュレータ２００の構成と同様であり、その説明を省略する。
【００４４】
テストデータに記載されたスティミュラスが入力されて論理シミュレータ９００による論理シミュレーションが開始されると、直接又はテストベンチ９２０を介してスティミュラスが入力された組合せ論理回路９１１が論理演算を行う。組合せ論理回路９１１からの出力はフリップフロップ９１２に記憶され、着目事象が発生した場合には、カバレジ取得記述９１３の着目事象検出部９１４が、着目事象が発生したことを示す発生報告を論理シミュレータ９００に出力する。
【００４５】
（１−５）第１の実施の形態による論理検証システムの効果
図５に示した従来の論理シミュレータ９００による論理シミュレーションでは、例えば組合せ論理回路９１１で着目事象が発生するたびに、カバレジ取得記述９１３から発生報告が出力されることになる。発生報告という出力処理は、論理シミュレーションにおけるオーバヘッドと考えられるが、着目事象が発生するたびに発生報告の出力処理が必要となることにより、従来の論理シミュレータ９００では、全てのテストデータに対する論理シミュレーションを実行する場合に、膨大なオーバヘッド処理時間が発生してしまう。特にＬＳＩ設計のように大規模な論理設計を行う場合には、大量のテストデータによる論理シミュレーションが必要となることから、その影響は非常に大きなものとなってしまう。一方、前述した第１の実施の形態による論理シミュレータ２００では、カバレジ取得記述２１３のカウンタ部２１５が、着目事象の発生回数を計数し、着目事象の発生回数が規定回数に達した場合にのみ規定回数発生報告を出力する。
【００４６】
具体的には例えば、論理シミュレータ２００における規定回数を１００回と規定し、従来の論理シミュレータ９００と第１の実施の形態による論理シミュレータ２００とのそれぞれにおいて着目事象が１２０回発生するような論理シミュレーションを行った場合を考える。このとき、従来の論理シミュレータ９００は１２０回分の発生報告に対する出力処理を行わなければならない。一方、第１の実施の形態による論理シミュレータ２００は、着目事象の１００回目の発生時に、１回の規定回数発生報告に対する出力処理を行うのみでよく、論理シミュレーションにおけるオーバヘッドが大幅に短縮されることがわかる。
【００４７】
すなわち、第１の実施の形態による論理検証システム１では、論理シミュレータ２００による論理シミュレーションの実行において着目事象の発生報告を発生回数が規定回数に達した場合にのみ行うようにすることにより、論理検証において検証精度を維持しながら、着目事象の報告回数の増加による論理シミュレーションの実行時間の長期化を防止し得る。
【００４８】
さらに、論理シミュレータ２００に複数の規定回数を設定した場合であっても、着目事象の発生回数が増加すればするほど、従来の論理シミュレータ９００における発生報告によるオーバヘッド処理時間と比べて、第１の実施の形態による論理シミュレータ２００におけるオーバヘッド処理時間が短縮されることは明らかである。従って、第１の実施の形態による論理検証システム１によれば、同一の着目事象について規定回数の異なる報告タイミングを設けたとしても、論理検証において着目事象の報告回数の増加による論理シミュレーションの実行時間の長期化を防止し得る。
【００４９】
また、論理シミュレータ２００に複数の規定回数を設定した場合には、設計者は、カバレジ取得結果データ１３７に記録された規定回数発生報告の出力を示すデータを参照することにより、論理シミュレーションによって発生した着目事象の発生回数の概数を認識することができるので、着目事象の総発生回数を計数するための部品を備えることなく着目事象の発生頻度を得ることが可能である。さらに、検証対象論理回路２１０が設計者の意図する通りに動作していると判断し得る規定回数を設定すれば、設計者は、当該規定回数に基づく規定回数発生報告の有無を確認するだけで、論理検証の結果を判断することが可能である。
【００５０】
また前述したように、第１の実施の形態による論理検証システム１によれば、カバレジ取得結果データ１３７に記録された、検証対象論理回路２１０内のそれぞれの組合せ論理回路２１１に対応するカバレジ取得記述２１３から出力された規定回数発生報告を参照することにより、論理シミュレーションで検証対象論理回路２１０に対して用いたテストデータ１３４の検証範囲を推定することができるので、テストデータ１３４の有効性を判断する際に有用な効果を奏する。例えば、第１の実施の形態による論理検証システム１の論理検証によるカバレジ取得結果データ１３７を用いて検証対象論理回路２１０に対して十分な検証範囲を有するテストデータ１３４を検討し、検討して作成したテストデータを特許文献２に記載された検証方式に活用すれば、より効率的な相関図の作成に寄与する効果が期待できる。
【００５１】
（１−６）拡張フリップフロップ
なお、図３に示す論理シミュレータ２００では、検証対象論理回路２１０内に、組合せ論理回路２１１、フリップフロップ２１２、及びカバレジ取得記述２１３が個々に配置される構成について説明したが、論理シミュレータ２００の構成はこれに限らず、例えば図３に破線で示すように、フリップフロップ２１２と当該フリップフロップ２１２に繋がるカバレジ取得記述２１３とを１つにまとめ、拡張フリップフロップ２１６（個別には、拡張フリップフロップ２１６Ａ，２１６Ｂ）としてもよい。
【００５２】
このような場合に、設計者は、検証対象論理回路を構成するＲＴＬをＨＤＬで記述する場合に、拡張フリップフロップ２１６に対応するＲＴＬを１つのモジュールとして記述することができるので、異なる検証対象論理回路を作成する場合に、毎回フリップフロップ２１２とカバレジ取得記述２１３とを別々に記述せずに済み、設計者の負担を軽減することができる。これは、例えばＬＳＩのような大規模な論理回路の設計時に論理検証を行う場合に特に有用である。
【００５３】
（２）第２の実施の形態
第２の実施の形態による論理検証システムは、論理シミュレーション実行時に異なる着目事象を検出するようなカバレジ取得記述に対応した論理シミュレータを備え、特に、異なる着目事象を組の動作として検出することで着目事象の発生回数を１回とみなし、着目事象の発生回数が規定回数に達した場合にのみ規定回数発生報告を行うことにより、発生報告の出力処理に要する処理時間を削減して論理シミュレーションの全体的な処理時間の増加を防止することを特徴としている。
【００５４】
（２−１）第２の実施の形態による論理シミュレータの機能的構成及び動作
図６は、第２の実施の形態による論理検証システムにおける論理シミュレータの機能的構成の一例を示すブロック図である。図６に示す論理シミュレータ３００は、図３の論理シミュレータ２００と同様に、テストベンチや組合せ論理回路を含むが、それら記載が省略されている。また、第２の実施の形態による論理検証システムのハードウェア構成は、図１に示した第１の実施の形態による論理検証システム１のハードウェア構成と同様であり、その説明を省略する。
【００５５】
なお、図６に示す論理シミュレータ３００では、第１の実施の形態で説明した拡張フリップフロップ２１６と同様に、フリップフロップ３１２とフリップフロップ３１２に繋がるカバレジ取得記述３１３とを１つにまとめた拡張フリップフロップ３１１が用いられているが、例えば拡張フリップフロップ３１１を用いずに、フリップフロップ３１２とカバレジ取得記述３１３とを別々に記述して作成するようにしてもよい。
【００５６】
フリップフロップ３１２は、組合せ論理回路における論理演算結果が入力され、例えばテストベンチから入力されるクロックが０から１に変化するときに、出力値を組合せ論理回路から入力された値に変更し、それ以外のタイミングでは出力値を保持する。
【００５７】
カバレジ取得記述３１３は、着目事象検出部３１４とカウンタ部３１５とを有する。着目事象検出部３１４には、立上り検出部３１６、立下り検出部３１７、トグル検出部３１８とが設けられている。フリップフロップ３１２からの信号が入力された場合に、着目事象検出部３１４では、当該信号の立上りを立上り検出部３１６が検出し、当該信号の立下りを立下り検出部３１７が検出し、これらの立上り及び立下りの組合せをトグル検出部３１８が検出する。従って、トグル検出部３１８は、フリップフロップ３１２からの入力に、立上り変化後に立下り変化、又は立下り変化後に立上り変化するトグルを検出すると、着目事象の発生を示す信号をカウンタ部３１５に出力する。トグル検出部３１８は、着目事象の発生を１回検出するごとに、カウンタ部３１５に信号を出力する。
【００５８】
カウンタ部３１５には、検出回数計数器３１９及び規定回数比較器３２０が設けられている。検出回数計数器３１９は、トグル検出部３１８から着目事象の発生を１回検出するごとに出力される信号を、検出回数として計数し、計数結果を規定回数比較器３２０に入力する。規定回数比較器３２０は、検出回数計数器３１９から入力される検出回数の計数結果と、別入力から入力される規定回数の値とに基づいて比較を行い、検出回数の計数結果が規定回数に一致するか否かを判定する。そして、規定回数比較器３２０は、検出回数の計数結果が規定回数に一致する場合にのみ、規定回数発生報告を出力する。規定回数比較器３２０から出力された規定回数発生報告は、論理シミュレータ３００によってカバレジ取得結果データ１３７に記録される。
【００５９】
（２−２）第２の実施の形態による論理シミュレータのＨＤＬ記述例
図７は、論理シミュレータの具体的な作成例を示すＨＤＬ記述である。図７では、図６に示す論理シミュレータ３００をSystemVerilogによって記述している。SystemVerilogは、米国電気電子学会（ＩＥＥＥ：The Institute of Electrical and Electronics Engineers, Inc.）のＳｔｄ（Standard）１８００で標準化されたハードウェア記述言語である。図７の各行の右側に記載された「Line」は、行数を示す。
【００６０】
図７のLine007〜Line009の記述は、フリップフロップ３１２に相当し、Line013〜Line046の記述は、カバレジ取得記述３１３に相当する。なお、SystemVerilog の仕様により、Line012の「// synopsys synthesis_off」とLine047の「// synopsys synthesis_on」との間の記述は、論理シミュレーションの実行時のみ読み込まれる。従って、図７に示すコードは、論理シミュレーションの実行時にのみ、Line013〜Line046に記述されたカバレジ取得記述３１３の構成が読み込まれるので、論理検証後に実際に論理合成を行う際には読み込まれず、コードをそのまま流用できるという利便性を有している。
【００６１】
また、Line024〜Line026の記述は、着目事象検出部３１４に相当し、Line028〜Line045の記述は、カウンタ部３１５に相当する。Line028〜Line030の記述は、検出回数計数器３１９に相当し、一例として２進数８ビット幅のカウンタが用いられている。Line032〜Line040の記述は、規定回数比較器３２０に相当し、一例として、Line034〜Line037の各行の記述で１２８回、６４回、８回、及び１回が規定されている。そして、Line042〜Line045には、着目事象の発生回数が上記の規定回数に達した場合に、規定回数発生報告を行うことが記述されている。
【００６２】
図７に示したコードでは、カウンタの計数上限あたり１回の規定回数発生報告が行われるように記述されているので、カウンタのビット幅を大きくして計数上限を増やせば、着目事象の発生によるトグル回数が規定回数よりも大きくなった場合に、報告回数を低減することができる。
【００６３】
（２−３）第２の実施の形態による論理シミュレーションの実行結果例
図８は、図７に示したＨＤＬ記述を用いて論理シミュレーションを行った実行結果の一例を示す説明図である。報告箇所欄８１０には、規定回数発生報告を行うカウンタが記載され、報告回数欄８２０には、テストデータＡ及びテストデータＢの２つのテストデータによる論理シミュレーション実行時の、各報告箇所における報告回数が記載されている。
【００６４】
なお、図８には、比較のために、従来の論理シミュレーション欄８３１に、着目事象が発生するたびに発生報告を行う従来の論理シミュレータにおける発生報告の回数が記載されている。具体的には、Qriseは信号の立上りを着目事象として検出して発生報告を行い、Qfallは信号の立下りを着目事象として検出して発生報告を行う。
【００６５】
また、論理シミュレータ３００による論理シミュレーション欄８３２には、２進数８ビット幅で計数上限である２５６回ごとにカウントがループするカウンタに規定回数を規定した場合の、規定回数発生報告の報告回数が記載されている。具体的には、Qchg001、Qchg008、Qchg064、及びQchg128は、それぞれ１回目、８回目、６４回目、及び１２８回目の着目事象発生時に規定回数発生報告を行う。
【００６６】
ここで図８を参照すると、テストデータＡを入力した場合には、従来の論理シミュレーション欄８３１のQrise及びQfallの報告回数がそれぞれ２０４８回であることから、着目事象の発生回数が２０４８回であったことが分かる。そして、このとき、従来の論理シミュレータは、合計４０９６回分の発生報告に伴う出力処理が行われる。一方、論理シミュレータ３００による論理シミュレーション欄８３２の各カウンタによる規定回数発生報告の回数は、それぞれ１６回に留まっており、全カウンタによる規定回数発生報告の回数を合計しても、論理シミュレータ３００は６４回分の規定回数発生報告に伴う出力処理を行うだけでよい。従って、論理シミュレータ３００は、論理シミュレーションの発生報告に伴うオーバヘッドの処理時間について、従来の論理シミュレータと比較して１．６％程度（６４／４０９６＝０．０１６…）の処理時間しか必要としないことが分かり、全体的な処理時間の増加を大幅に抑制することが確認できた。
【００６７】
また、同様にテストデータＢを入力した場合について考察すると、着目事象の発生回数が３５回であったときに、従来の論理シミュレータでは合計７０回の発生報告に伴う出力処理が必要となるのに対して、論理シミュレータ３００では合計３回の規定回数発生報告に伴う出力処理しか行われない。このとき、論理シミュレータ３００は、論理シミュレーションの発生報告に伴うオーバヘッドの処理時間について、従来の論理シミュレータと比較して４．３％程度（３／７０＝０．０４３…）の処理時間しか必要としないことが分かり、全体的な処理時間の増加を大幅に抑制することが再び確認できた。
【００６８】
さらに、テストデータＢを入力した場合の論理シミュレータ３００による規定回数発生報告の報告回数に注目すると、Qchg064による規定回数発生報告はあるが、Qchg128による規定回数発生報告がなかったことから、着目事象の発生回数が６４回以上〜１２８回未満であったことが分かる。すなわち、設計者は、着目事象の発生回数を別途計数するような部品を用いることなく、規定回数発生報告の報告回数を見るだけで、着目事象の発生頻度の概数を容易に知ることができる。
【００６９】
またさらに、論理シミュレータ３００によれば、従来の論理シミュレータによる論理シミュレーションと比較して、より少ないデータ数でカバレジ取得結果をカバレジ取得結果データ１３７に記録することができるので、着目事象の発生回数を増やして多くのカバレジ取得を試みた場合にも容易に対応することが可能であり、このようにして収集したカバレジ取得結果を用いて設計者がテストデータの検証を行うことによって、より効率的なテストデータの作成を補助する効果も期待できる。
【００７０】
（２−４）第２の実施の形態による論理検証システムの効果
上記のように、図６に示した論理シミュレータ３００による論理シミュレーションでは、着目事象検出部３１４が信号の立上り及び立下りをトグルで検出し、カウンタ部３１５がトグル検出の結果に基づいて着目事象の発生回数を計数し、当該発生回数が規定回数に一致する場合にのみ規定回数発生報告を出力することにより、着目事象が規定回数分だけ発生した場合に初めて１回の規定回数発生報告が行われる。これに対し、従来の論理シミュレータによる論理シミュレーションでは、信号の立上り及び立下りについて、それぞれを検出するたびに発生報告を行う必要があった。
【００７１】
具体的には例えば、論理シミュレータ３００における規定回数を１００回と規定し、従来の論理シミュレータと第２の実施の形態による論理シミュレータ３００とのそれぞれにおいてトグルが１２０回発生するような論理シミュレーションを行った場合を考える。このとき、従来の論理シミュレータでは、１２０回のトグルの発生について、それぞれ信号の立上がりと立下りのタイミングで発生報告を行うので、２４０回の発生報告に対する出力処理が必要になる。一方、第２の実施の形態による論理シミュレータ３００では、着目事象の１００回目の発生時に、１回の規定回数発生報告を行うだけであるから、規定回数発生報告に対する出力処理を１回行うだけで済む。
【００７２】
従って、第２の実施の形態による論理検証システムでは、カバレジ取得記述３１３が信号の立上り及び立下りをそれぞれ検出するように記述されている場合でも、着目事象検出部３１４が論理シミュレーション実行時に信号の立上り及び立下りをトグル検出することにより、着目事象の発生を検出するごとにカウンタ部３１５に入力が１回行われ、第１の実施の形態による論理検証システム１と同様に、論理検証の検証精度を維持しながら、着目事象の報告回数の増加による論理シミュレーションの実行時間の長期化を防止し得る。
【００７３】
（３）他の実施の形態
なお、上記の第２の実施の形態による論理検証システムでは、論理シミュレータ３００の実装例として図７にSystemVerilogを用いた記述を示したが、本発明はこれに限定されるものではなく、第１の実施の形態による論理検証システム１の論理シミュレータ２００も同様に記述することができる。また、これらの論理シミュレータ２００又は論理シミュレータ３００を記述するＨＤＬは、SystemVerilogに限定されるものではなく、例えば、ＩＥＥＥのＳｔｄ１３６４で標準化されたVerilogと、ＩＥＥＥのＳｔｄ１８５０で標準化されたＰＳＬ（Property Specification Language）とを用いて記述するようにしてもよい。また、Verilogの代わりに、ＩＥＥＥのＳｔｄ１０７６で標準化されたＶＨＤＬ（VHSIC Hardware Description Language）を用いて記述するようにしてもよい。このように、第１及び第２の実施の形態による論理検証システムの論理シミュレータ２００，３００は、複数種類のＨＤＬで記述して実装することが可能なことから、論理設計において幅広く利用することができる。
【符号の説明】
【００７４】
１      論理検証システム
１１    主制御装置
１２    主記憶装置
１３    補助記憶装置
１４    入力装置
１５    出力装置
１６    波形表示装置
１３１  検証対象論理回路データ
１３２  テストベンチプログラム
１３３  ライブラリ
１３４  テストデータ
１３５  実行ログ
１３６  信号観測波形データ
１３７  カバレジ取得結果データ
２００，３００  論理シミュレータ
２１０，３１０  検証対象論理回路
２１１  組合せ論理回路
２１２，３１２  フリップフロップ
２１３，３１３  カバレジ取得記述
２１４，３１４  着目事象検出部
２１５，３１５  カウンタ部
２１６，３１１  拡張フリップフロップ
２２０  テストベンチ
３１６  立上り検出部
３１７  立下り検出部
３１８  トグル検出部
３１９  検出回数計数器
３２０  規定回数比較器
９００  従来の論理シミュレータ
【図１】
2014002622.tif 000003
【図２】
2014002622.tif 000004
【図３】
2014002622.tif 000005
【図４】
2014002622.tif 000006
【図５】
2014002622.tif 000007
【図６】
2014002622.tif 000008
【図７】
2014002622.tif 000009
【図８】
2014002622.tif 000010