(57)【要約】【課題】  本発明の課題は、半導体集積回路の論理シミュレーションによる検証項目の優先順位を効率的に設定可能とすることを目的とする。【解決手段】  上記課題は、検証対象回路の動作を記述した記述データを記憶した記憶部と、前記記憶部の前記記述データから得られる結線情報に基づいて、前記検証対象回路内の論理毎の入出力に関する接続関係を導出して、導出した前記接続関係に基づいて前記論理を検証する第１の優先度を決定し、前記結線情報に基づいて前記論理への入力に関連する外部とのインターフェースである関連Ｉ／Ｆを抽出し、前記第１の優先度に基づき前記関連Ｉ／Ｆを検証する第２の優先度を決定する優先度決定部と、を有する検証項目抽出装置により達成される。【選択図】  図９
2014203296.tif 000002
【特許請求の範囲】
【請求項１】
検証対象回路の動作を記述した記述データを記憶した記憶部と、
前記記憶部の前記記述データから得られる結線情報に基づいて、前記検証対象回路内の論理毎の入出力に関する接続関係を導出して、導出した前記接続関係に基づいて前記論理を検証する第１の優先度を決定し、前記結線情報に基づいて前記論理への入力に関連する外部とのインターフェースである関連Ｉ／Ｆを抽出し、前記第１の優先度に基づき前記関連Ｉ／Ｆを検証する第２の優先度を決定する優先度決定部と、
を有することを特徴とする検証項目抽出装置。
【請求項２】
前記優先度決定部は、
前記記述データから前記論理毎に前記論理へ入力する入力信号と前記入力信号の数、及び、前記論理の出力先となる論理と前記出力先の数とを抽出して接続数リストを前記記憶部に作成する優先部抽出部を有することを特徴とする請求項１記載の検証項目抽出装置。
【請求項３】
前記優先度決定部は、
前記記憶部から前記接続数リストを参照して、前記論理毎に、当該論理の出力の後段１段目に接続されている前記論理の数をカウントし、カウント数に基づいて前記第１の優先度を決定することを特徴とする請求項２記載の検証項目抽出装置。
【請求項４】
前記優先度決定部は、
前記記憶部から前記接続数リストを参照して、前記論理の入力で組み合わされている信号の数をカウントし、カウント数に基づいて前記第１の優先度を決定することを特徴とする請求項２記載の検証項目抽出装置。
【請求項５】
前記優先度決定部は、
前記記憶部から前記接続数リストを参照して、前記各論理への信号の入力経路を抽出し、前記記述データの修正前後の該入力経路を比較することによって、修正された前記論理と、前記修正された論理を駆動する前記関連Ｉ／Ｆに含まれる入力信号及び論理の一覧を作成することを特徴とする請求項２記載の検証項目抽出装置。
【請求項６】
前記優先度決定部は、
前記記憶部の前記記述データから得た前記結線情報に基づいて、前記記述データによって記述される前記各論理について、前記論理の入力側の接続をバックトレースして、前記論理に関連する前記関連Ｉ／Ｆを抽出し、抽出された前記関連Ｉ／Ｆが駆動する前記論理の前記第１の優先度の値を累積した値に基づき前記第２の優先度を決定することを特徴とする請求項２乃至５のいずれか一項記載の検証項目抽出装置。
【請求項７】
コンピュータによって実行される検証項目抽出方法であって、
前記記憶部に記憶された検証対象回路の動作を記述した記述データから結線情報を取得し、
前記検証対象回路内の論理毎の入力および出力に関する接続関係を導出し、
導出した前記接続関係に基づいて前記論理を検証する第１の優先度を決定し、前記結線情報に基づいて前記論理への入力に関連する外部とのインターフェースである関連Ｉ／Ｆを抽出し、前記第１の優先度に基づき前記関連Ｉ／Ｆを検証する第２の優先度を決定する
ことを特徴とする検証項目抽出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の論理シミュレーションに関する。
【背景技術】
【０００２】
従来より、設計した回路を論理シミュレーションにより検証することが行われている。検証する際には、検証項目を決め、次に検証項目の優先順位（優先項目を実施する順序）を決め、検証項目の優先順位に従って論理シミュレーションパターンを指示するシナリオを作成して論理シミュレーションが実行される。
【０００３】
ここで、検証項目の優先順位は、「検証の必要性の高い項目」によって決められている。「検証の必要性の高い項目」とは、具体的にはバグを含んでいそうな箇所や、バグが見つかった場合のＲＴＬ（Register Transfer Level）の修正が他の論理へ大きな影響を及ぼすような箇所を検証する項目のことを示す。
【０００４】
また、一般に、論理シミュレーションの検証によってバグが見つかり、そのバグに対してＲＴＬの修正が施された場合、修正内容の確認及びその修正が周辺論理に与える影響を確認する目的で、再度、検証を実施する。その際、ＲＴＬの修正された論理を活性化させる検証項目も「検証の必要性の高い項目」となる。
【０００５】
修正が影響を及ぼす箇所を抽出する観点において、初回の論理シミュレーションの結果出力と回路データとを読み込み、エラーが発生した回路内のセルと該セルの出力信号が影響する後段のセルを判別すること、または回路変更後の回路接続情報内のセルの中でレジスタ又は外部出力ピンを始点として、レジスタ又は外部入力ピンに到達するまで回路接続情報のセルの接続情報をバックトレースすること等を利用することが考えられる。
【０００６】
また、検証を行なう順位付けに関して、回路の検証対象箇所に対する信号の遷移確認検証を行い、信号遷移の割合に応じて検証テストパターンもしくは検証対象箇所を順位付けし、順位付けに基づく順番に検証を行なうこと、検証対象である論理回路に入力される入力信号について、入力信号が変化したときに論理回路の動作に与える影響度の順位付けを行うこと等が提案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１１−１６１６９３号公報
【特許文献２】特開２００４−３３４７９５号公報
【特許文献３】特開平１１−２６５９８０号公報
【特許文献４】特開２００２−３５１９３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、検証項目の優先順位は、検証項目と同様に検証対象回路（ＤＵＴ：Design Under TEST）の仕様書及び関連する規格書に記載されている内容（入出力端子、レジスタマップ、外部から見える機能の動作）に基づいて、決定することが一般的である。更に、設計者が考えている、検証すべき機能を反映させる場合もある。
【０００９】
しかし、一般に仕様書は自然言語で記述されており、あいまいな、説明不足な、又は冗長した記述を含んでいることがある。更に、ＤＵＴ内部の情報については示されていないことも多い。そのため、仕様書の中から検証項目の優先順位を決めるための情報を読み解くのは労力を要する作業であり、決定した優先順位もこれらの情報からの類推であり、確からしさに限界があると言える。
【００１０】
１つの側面において、本発明の目的は、半導体集積回路の論理シミュレーションによる検証項目の優先順位を効率的に設定可能とすることである。
【課題を解決するための手段】
【００１１】
本実施例の一態様によれば、検証項目抽出装置は、検証対象回路の動作を記述した記述データを記憶した記憶部と、前記記憶部の前記記述データから得られる結線情報に基づいて、前記検証対象回路内の論理毎の入力および出力に関する接続関係を導出して、導出した該接続関係に基づいて該論理を検証する第１の優先度を決定し、前記結線情報に基づいて前記論理への入力に関連する外部とのインターフェースである関連Ｉ／Ｆを抽出し、前記第１の優先度に基づき前記関連Ｉ／Ｆを検証する第２の優先度を決定する優先度決定部とを有する。
【００１２】
また、上記課題を解決するための手段として、コンピュータに上記検証項目抽出装置として機能させるためのプログラム、そのプログラムを記録した記録媒体、及び検証項目抽出方法とすることもできる。
【発明の効果】
【００１３】
本実施例の一態様によれば、半導体集積回路の論理シミュレーションによる検証項目の優先順位を効率的に設定可能とすることができる。
【図面の簡単な説明】
【００１４】
【図１】検証対象回路の回路構成例を示す図である。
【図２】論理検証装置のハードウェア構成を示す図である。
【図３】後段１段目のＦＦの個数比較を例示する図である。
【図４】前段１段目のＦＦの個数比較を例示する図である。
【図５】ＦＦを駆動しうる信号経路の例を示す図である。
【図６】入力信号に基づくバックトレース例を示す図である。
【図７】論理検証装置の機能構成例を示す図である。
【図８】本実施の形態に係る検証項目抽出処理の全体処理を説明するための図である。
【図９】優先度決定処理の概要を説明するためのフローチャート図である。
【図１０】優先部抽出処理を説明するためのフローチャート図である。
【図１１】ＤＵＴの回路構成に対応付けられる変数名の例を示す図である。
【図１２】ＤＵＴのＲＴＬ記述例を示す図である。
【図１３】出力表のデータ例を示す図である。
【図１４】出力カウントリストのデータ例を示す図である。
【図１５】入力カウントリストのデータ例を示す図である。
【図１６】入力経路リストのデータ例を示す図である。
【図１７】関連Ｉ／Ｆ抽出処理を説明するためのフローチャート図である。
【図１８】影響度を基準とした場合の関連Ｉ／Ｆ対応表のデータ例を示す図である。
【図１９】影響度を基準とした場合の優先度表のデータ例を示す図である。
【図２０】動かしにくさを基準とした場合の関連Ｉ／Ｆ対応表のデータ例を示す図である。
【図２１】動かしにくさを基準とした場合の優先度表のデータ例を示す図である。
【図２２】変更箇所を基準とした場合の入力経路ツリー情報のデータ例を示す図である。
【図２３】本実施の形態と関連技術との比較を示すグラフ図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態を図面に基づいて説明する。論理シミュレーションによる回路検証では、「検証の必要性の高い項目」から実施するよう検証項目の優先順位（以下、「検証項目優先順位」と言う。）に基づいて論理シミュレーションにより検証（以下、「論理シミュレーション検証」と言う。）を実施した場合であっても、実際には検証作業の後半で実施した項目で影響の大きいバグが見つかることがある。仕様書及び規格書に基づいて決定した検証項目優先順位は、必ずしも精度が高くない。
【００１６】
これは、検証項目優先順位が仕様書、規格書等のＤＵＴの外部で得られる情報から導き出されているのに対して、実際の「検証の必要性の高い項目」は、論理構造等の回路内部の性質によっても変化することが原因となっている。
【００１７】
ある論理（具体的には、レジスタ（ＦＦ：Ｆｌｉｐ  Ｆｌｏｐ））において、その後段が多数の論理（ＦＦ）に接続され、参照されているような構造の箇所は、修正が入ると回路全体への影響が大きく、更に、ある論理の前段に多数の論理が接続された入力の多い論理においては、入力条件が多岐にわたるため、動作させることが困難である。図１に例示する検証対象回路であるＤＵＴ８において、ＦＦ２が後段１段目に接続されるＦＦの個数が多く、影響が大きい箇所であると考えられる。
【００１８】
従って、このような部分を試験する検証項目の優先順位は高くする必要があるが、そのような情報は使用者、規格書等から得ることができない。
【００１９】
また、検証項目優先順位の検討時に、設計者が考えている検証すべき機能や構造的に危ないと考えられる部分の情報に関して、設計者による意見を得られる場合もあるが、そのような場合であっても、設計者の思い込み等により、必要性の高い項目を見逃してしまう場合がある。
【００２０】
更に、ＲＴＬ修正が行われた場合、修正目的以外の機能にも影響がある場合があるが、それは回路の記述に依存するため、ＤＵＴ８の外部の情報からでは判断し難く、優先的に検証する項目であっても見逃してしまう場合もある。
【００２１】
上述より、発明者等は、検証項目の優先順位を決定する際には、以下の事項について考慮することとした。
【００２２】
（Ａ１）検証項目の優先順位は、自然言語で書かれた仕様書等から得られる情報のみに頼って決定しない。
【００２３】
（Ａ２）ＤＵＴの内部構造に即して、後段の理論の多いＦＦの検証を優先される項目（以下、「優先項目」と言う。）として抽出する。修正によってＤＵＴ８への影響が大きくなる、又は、動作させることが困難なため論理シミュレーションの手間が掛かると判断でき、優先項目として抽出する。図１に示すＤＵＴ８では、ＦＦ２等が優先項目として抽出されるのが望ましい。
【００２４】
（Ａ３）ＤＵＴの修正に際して、修正されたＦＦとそれを駆動する項目を優先項目として抽出する。図１に示すＤＵＴ８において、ＦＦ２が修正されたとすると、ＦＦ２の前段部分がＦＦ２を駆動する部分であり、優先項目として抽出されるのが望ましい。
【００２５】
上記項目（Ａ１）から（Ａ３）に関して、発明者等は、ＲＴＬから検証項目の優先順位の指標となる情報を抽出することに着目した。ＲＴＬで抽出する「検証の必要性の高い箇所」としては、具体的に以下の箇所が挙げられる。
【００２６】
（Ｂ１）修正が入ると影響が大きいところ
即ち、ＦＦ出力が後段で多数のＦＦで使用されている部分である。後段のＦＦへの影響を検証するために十分な動作が要求されるＦＦが、ＲＴＬからの抽出対象となる。
【００２７】
（Ｂ２）論理シミュレーション検証のために用意する検証項目が多く手間の掛かるところ
駆動するための条件が複雑な部分である。複雑な駆動条件のため、なかなか駆動しないＦＦがＲＴＬからの抽出対象となる。
【００２８】
（Ｂ３）修正が行われたところ
ＲＴＬが修正されたことによる周辺論理（レジスタ（ＦＦ））に与える影響を検証するために十分な動作が要求されるＦＦが、ＲＴＬからの抽出対象となる。
【００２９】
上述した部分（Ｂ１）〜（Ｂ３）を抽出する仕組みについて検討する。部分（Ｂ１）〜（Ｂ３）を抽出したとしても、抽出される情報は、ＲＴＬ内で定義される信号情報であるため、ＤＵＴ８に対して外部から定義した記述に基づく検証項目と関連付けることができない。
【００３０】
従って、本実施の形態では、両者を関連付けるためには、ＲＴＬの記述から抽出した信号情報が関連している外部入出力端子、ＣＰＵ９によってアクセスされるレジスタであるユーザＩ／Ｆ８ｆのＦＦを導き出し、一覧を作成して表示させる。
【００３１】
本実施例に係る論理検証装置は、図２に示すようなハードウェア構成を有する。図２は、論理検証装置のハードウェア構成を示す図である。図２において、論理検証装置１００は、コンピュータによって制御される端末であって、ＣＰＵ（Central Processing Unit）１１と、主記憶装置１２と、補助記憶装置１３と、入力装置１４と、表示装置１５と、出力装置１６と、通信Ｉ／Ｆ（インターフェース）１７と、ドライブ１８とを有し、バスＢに接続される。
【００３２】
ＣＰＵ１１は、主記憶装置１２に格納されたプログラムに従って論理検証装置１００を制御する。主記憶装置１２には、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read-Only Memory）等が用いられ、ＣＰＵ１１にて実行されるプログラム、ＣＰＵ１１での処理に必要なデータ、ＣＰＵ１１での処理にて得られたデータ等を格納する。また、主記憶装置１２の一部の領域が、ＣＰＵ１１での処理に利用されるワークエリアとして割り付けられている。
【００３３】
補助記憶装置１３には、ハードディスクドライブが用いられ、各種処理を実行するためのプログラム等のデータを格納する。補助記憶装置１３に格納されているプログラムの一部が主記憶装置１２にロードされ、ＣＰＵ１１に実行されることによって、各種処理が実現される。記憶部１３０は、主記憶装置１２及び／又は補助記憶装置１３を有する。
【００３４】
入力装置１４は、マウス、キーボード等を有し、ユーザが論理検証装置１００による処理に必要な各種情報を入力するために用いられる。表示装置１５は、ＣＰＵ１１の制御のもとに必要な各種情報を表示する。出力装置１６は、プリンタ等を有し、ユーザからの指示に応じて各種情報を出力するために用いられる。通信Ｉ／Ｆ１７は、例えばインターネット、ＬＡＮ（Local Area Network）等に接続し、外部装置との間の通信制御をするための装置である。通信Ｉ／Ｆ１７による通信は無線又は有線に限定されるものではない。
【００３５】
論理検証装置１００によって行われる処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ（Compact Disc Read-Only Memory）等の記憶媒体１９によって論理検証装置１００に提供される。即ち、プログラムが保存された記憶媒体１９がドライブ１８にセットされると、ドライブ１８が記憶媒体１９からプログラムを読み出し、その読み出されたプログラムがバスＢを介して補助記憶装置１３にインストールされる。そして、プログラムが起動されると、補助記憶装置１３にインストールされたプログラムに従ってＣＰＵ１１がその処理を開始する。尚、プログラムを格納する媒体としてＣＤ−ＲＯＭに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。コンピュータ読取可能な記憶媒体として、ＣＤ−ＲＯＭの他に、ＤＶＤディスク、ＵＳＢメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリであっても良い。
【００３６】
本実施の形態に係る論理検証装置１００では、
（ａ）「検証の必要性の高い箇所」をＲＴＬの記述を参照して、ＦＦの結線情報に基づいて抽出し（優先部抽出）、
（ｂ）上記（ａ）で抽出したＲＴＬ内の論理夫々に対して、信号の入力側の接続をバックトレースして、外部入力端子及びＣＰＵ９によってアクセスされるレジスタであるユーザＩ／Ｆ８ｆのＦＦとの関連を抽出して、優先順位に従ってリストアップ（関連Ｉ／Ｆ抽出）、
する処理を行う。
【００３７】
上記（ａ）の優先部抽出処理の概要を説明する。「検証の必要性の高い箇所」は、下記の部分を示す。
【００３８】
（ａ−１）ＦＦ出力が多数のＦＦで使用されているため、後段のＦＦへの影響を検証するために、良く動かさなければならないＦＦである。具体的には、ＦＦの後段１段目のＦＦの数をカウントする。数の多いＦＦからリストアップする。
【００３９】
図３は、後段１段目のＦＦの個数比較を例示する図である。図３に例示されるように、ＦＦ１の値は後段の１個のＦＦは１個のみで使用されているのに対して、ＦＦ２の値は後段の４個のＦＦで使用されているため、ＦＦ２の方が後段のＦＦへの影響が大きいと判断する。
【００４０】
（ａ−２）複雑な駆動条件のため駆動頻度の少ないＦＦである。具体的には、前段１段目からの、条件数に相当するＦＦ入力の組合せ信号数をカウントし、数の多いＦＦからリストアップする。
【００４１】
図４は、前段１段目のＦＦの個数比較を例示する図である。図４に例示されるように、ＦＦ１の値は前段の１個の入力信号値のみで変化するのに対し、ＦＦ２の値は前段の４個の入力信号値の組合せ条件が一致したときに変化するため、ＦＦ２の方が値を変化させるための条件が複雑であると判断する。
【００４２】
（ａ−３）ＲＴＬの修正による周辺論理に与える影響を検証するために、良く動かさなくてはならないＦＦである。具体的には、修正前に実施しておいた各ＦＦと各ＦＦを駆動するユーザＩ／Ｆ８ｆのＦＦや入力信号の情報と、修正後に行われた同様の情報とを比較して、変更が加えられたＦＦとそのＦＦを駆動するユーザＩ／Ｆ８ｆのＦＦや入力信号をリストアップする。
【００４３】
図５は、ＦＦを駆動しうる信号経路の例を示す図である。図５に例示されるように、ＦＦ１〜ＦＦ４について、それらＦＦ１〜ＦＦ４を駆動しうる入力信号及びユーザＩ／Ｆ８ｆのＦＦから信号経路を抽出する。ＦＦ１〜ＦＦ４を含めて全てのＦＦについて信号経路を抽出して、信号経路ツリーを作成する。修正前の信号経路ツリーと修正後の信号経路ツリーとを比較して、変更ＦＦと変更ＦＦを駆動する入力信号及びユーザＩ／Ｆ８ｆのＦＦが優先項目であると判断する。
【００４４】
上記（ｂ）の関連Ｉ／Ｆ抽出処理の概要を説明する。上記（ａ）の優先部抽出処理によって抽出したＲＴＬ内の論理夫々に対して、信号の入力側の接続をバックトレースして、外部入力端子及びユーザＩ／Ｆ８ｆのＦＦとの関連を抽出し、上記（ａ）の優先部抽出処理にてカウントした個数の大きいＦＦから順にリストアップする。
【００４５】
バックトレースで辿り着くべきユーザＩ／Ｆ８ｆのＦＦの具体的な入力信号情報は、下記の手段のいずれかで得るものとする。
【００４６】
（ｂ−１）外部から信号情報のリストを与える。
【００４７】
（ｂ−２）外部からレジスタアドレスのオフセット値を与え、その値を用いて自動抽出する。具体的には、オフセット値から始まるレジスタアドレスに対して網羅的に読み書き操作を実施したときに、どのＦＦから値が読み出されるか、また、どのＦＦから値が書き込まれるかをＲＴＬの記述から抽出し、リストアップする。
【００４８】
図６は、入力信号に基づくバックトレース例を示す図である。図６において、先ず、ＦＦ２について入力側につながっているＦＦ（又は外部入力信号）を１段探す（ＳＣ１）。次に、探した信号が外部入力信号又はユーザＩ／Ｆ８ｆのＦＦでない場合は、更に入力側のＦＦを探す。この操作を繰り返し、探した信号が全て外部入力信号又はユーザＩ／Ｆ８ｆのＦＦに辿り着いたらバックトレースが完了する（ＳＣ２）。
【００４９】
図７は、論理検証装置の機能構成例を示す図である。図７において、論理検証装置１００は、検証項目抽出部４１と、優先度決定部４２と、優先順位設定部４３と、シナリオ策定部４４と、検証部４５とを有する。検証項目抽出部４１と、優先度決定部４２と、優先順位設定部４３と、シナリオ策定部４４と、検証部４５とは、ＣＰＵ１１が対応するプログラムを実行することで行われる処理によって実現される。
【００５０】
記憶部１３０には、仕様書３１、ＲＴＬ記述データ３２、検証項目データ３３、優先順位データ３４、検証シナリオデータ３５、接続数リスト３６、入力経路リスト３７、関連Ｉ／Ｆ対応表３８、優先度表３９等を記憶する。
【００５１】
検証項目抽出部４１では、検証者が、自然言語で書かれた仕様書３１を参照して検証項目を作成する。検証者によって作成された検証項目は、論理検証装置１００に記憶される。
【００５２】
優先度決定部４２は、記憶部１３０からＲＴＬ記述データ３２を参照して、上述した「検証の必要性の高い箇所」に対応するインターフェース部分を検証時の優先順で一覧にした優先度表３９を検証者に提供する。
【００５３】
優先度決定部４２は、更に、優先部抽出部４２１と、関連Ｉ／Ｆ抽出部４２３とを有する。優先部抽出部４２１は、ＲＴＬ記述データ３２からＤＵＴ８における「検証の必要性の高い箇所」を抽出する。関連Ｉ／Ｆ抽出部４２３は、優先部抽出部４２１によって抽出された「検証の必要性の高い箇所」に対応する関連Ｉ／Ｆを抽出して、優先順位に従ってリストアップする。関連Ｉ／Ｆとは、外部からの入力を受けるＩ／Ｆ部分であり、「検証の必要性の高い箇所」に関連する外部入力端子及びユーザＩ／Ｆ８ｆのＦＦが相当する。
【００５４】
優先順位設定部４３では、検証者が、検証項目データ３３と、優先度表３９とに基づいて、作成した検証項目の論理シミュレーションで実施する優先順位を設定する。検証項目の優先順位を示す優先順位データ３４が記憶部１３０に記憶される。
【００５５】
シナリオ策定部４４は、検証項目データ３３と、優先順位データ３４とに基づいて、論理シミュレーション検証における検証シナリオを策定する。策定された検証シナリオデータ３５が記憶部１３０に記憶される。
【００５６】
検証部４５は、論理シミュレーションによりＤＵＴ８を検証する。検証結果は、表示装置１５に表示され、検証者によって、ＤＵＴバグの検出の有無が判断される。ＤＵＴバグの検出が確認されると、設計者によってＲＴＬ記述データ３２が修正される。ＤＵＴ８の設計内容が修正された場合、優先度決定部４２による処理が行われ検証項目の優先順位が再度見直される。見直した検証項目の優先順位に従って、論理シミュレーション検証が再度行なわれる。
【００５７】
仕様書３１は、自然言語で記載されたＤＵＴ８の動作を定義したデータファイルである。ＲＴＬ記述データ３２は、仕様書３１に基づいて、設計者がＤＵＴ８の動作をハードウェア記述言語で記述したデータファイルである。
【００５８】
検証項目データ３３は、ＤＵＴ８の動作を検証する項目データである。優先順位データ３４は、検証する項目の優先順を示すデータファイルである。検証シナリオデータ３５は、優先順位データ３４に従って検証項目データ３３で論理シミュレーションが実施されるように作成された検証シナリオが記憶されたデータファイルである。
【００５９】
接続数リスト３６は、「検証の必要性の高い箇所」として判断したＦＦ毎に、ＦＦから後段１段目への接続数、又は、ＦＦへの入力に係る前段１段目からの接続数を対応付けリストである。入力経路リスト３７は、ＤＵＴ８の修正前後のＦＦ毎の経路情報を対応付けたリストである。優先度表３９は、関連Ｉ／ＦをＦＦの優先度に基づいて順位付して一覧にしたリストである。
【００６０】
図７において、検証項目抽出装置１０２は、検証項目抽出部４１と、優先度決定部４２とを有し、また、仕様書３１、ＲＴＬ記述データ３２、検証項目データ３３、接続数リスト３６、入力経路リスト３７、関連Ｉ／Ｆ対応表３８、優先度表３９等のデータを有する部分に相当する。検証項目抽出装置１０２による検証項目抽出処理について以下に説明する。
【００６１】
図８は、本実施の形態に係る検証項目抽出処理の全体処理を説明するための図である。図８において、検証項目抽出部４１は、検証者によって検証項目の作成経験に基づき、検証項目が作成された検証項目データ３３を、検証者から取得して記憶部１３０に格納する（ステップＳ１１）。
【００６２】
一方、優先度決定部４２において、優先部抽出部４２１は、「検証の必要性の高い個所」、即ち、優先部を抽出する（ステップＳ２１）。ステップＳ２１での優先部の抽出処理では、ＲＴＬ記述データ３２から、影響の多いＦＦを抽出すること（ステップＳ２１ａ）、動かしにくいＦＦを抽出すること（ステップＳ２１ｂ）、又は、ＦＦの経路情報を抽出すること（ステップＳ２１ｃ）の少なくとも１処理を行う。ステップＳ２１ａ又はステップＳ２１ｂでは、接続数リスト３６が記憶部１３０に出力される。ステップＳ２１ｃでは、入力経路リスト３７が記憶部１３０に出力される。
【００６３】
次に、優先度決定部４２は、関連Ｉ／Ｆ抽出部４２３による関連Ｉ／Ｆ抽出処理を行う（ステップＳ２２）。関連Ｉ／Ｆ抽出部４２３は、優先部抽出部４２１によって抽出されたＦＦを動かすユーザＩ／Ｆ８ｆのＦＦ及び外部入力端子を示すインターフェース（Ｉ／Ｆ）を抽出する（ステップＳ２２ａ）。関連Ｉ／Ｆ対応表３８が記憶部１３０に記憶される。そして、関連Ｉ／Ｆ抽出部４２３は、影響が多い順に関連Ｉ／Ｆをリストアップする（ステップＳ２２ｂ）。優先度表３９が記憶部１３０に記憶される。
【００６４】
優先順位設定部４３は、検証者の指示に応じて、検証項目データ３３と優先度表３９とを表示して、検証者の指定に従って、検証項目の優先順位を設定する（ステップＳ１２）。優先順位データ３４が記憶部１３０に記憶される。
【００６５】
シナリオ策定部４４は、優先順位データ３４に従って、検証項目データ３３に基づく論理シミュレーションが行われるように検証シナリオデータ３５を記憶部に作成する（ステップＳ１３）。
【００６６】
そして、検証部４５は、検証者による検証指示に応じて、論理シミュレーションでＤＵＴ８を検証する（ステップＳ１４）。検証部４５は、ＤＵＴ８にバグを検出したか否かを判断する（ステップＳ１５）。ＤＵＴ８にバグを検出した場合（ステップＳ１５のＹｅｓ）、検証部４５は、バグ検出を検証者に通知する。ＤＵＴ８の動作を表すＲＴＬ記述データ３２の修正後（ステップＳ１７）、優先度決定部４２による処理が行われる。この場合、上述したステップＳ２１ｃによる処理と、ステップＳ２２ａ及びＳ２２ｂによる処理が実行され、優先度表３９が更新される。更新された優先度表３９を用いて、上述したステップＳ１２からの処理が繰り返される。
【００６７】
一方、バグを検出しなかった場合（ステップＳ１５のＮｏ）、検証部４５は、全ての検証項目を終了したか否かを判断する（ステップＳ１６）。全ての検証項目を終了していない場合（ステップＳ１６のＮｏ）、論理検証装置１００は、ステップＳ１４へ戻り、上述同様の処理を繰り返す。
【００６８】
優先度決定部４２による優先度決定処理の概要について図９で説明する。図９は、優先度決定処理の概要を説明するためのフローチャート図である。図９に示す優先度決定部４２による優先度決定処理では、優先部抽出部４２１によって優先部抽出処理が行われ（ステップＳ２１）、関連Ｉ／Ｆ抽出部４２３による関連Ｉ／Ｆ抽出処理が行われる（ステップＳ２２）。
【００６９】
優先部抽出処理（ステップＳ２１）において、影響の多いＦＦを抽出する処理を行った場合、出力カウントリスト３６ａが記憶部１３０に出力される。
【００７０】
そして、関連Ｉ／Ｆ抽出処理（ステップＳ２２）によって、抽出されたＦＦの関連Ｉ／Ｆ（外部入力端子及びユーザＩ／Ｆ８ｆのＦＦ）に対する優先度を一覧にした優先度表３９ａが記憶部１３０に出力され記憶される。優先度表３９ａは、抽出されたＦＦの後段への影響度を基準とした関連Ｉ／Ｆの優先順位を示す（影響度基準）。優先度を決定する際には、関連Ｉ／Ｆ毎に予め設定しておいた重み付け表２２を参照して、関連Ｉ／Ｆに対して重み付けをして優先度を決定してもよい。
【００７１】
優先部抽出処理（ステップＳ２１）において、動かしにくいＦＦを抽出する処理を行った場合、入力カウントリスト３６ｂが記憶部１３０に出力される。
【００７２】
そして、関連Ｉ／Ｆ抽出処理（ステップＳ２２）によって、抽出されたＦＦの関連Ｉ／Ｆ（外部入力端子及びユーザＩ／Ｆ８ｆのＦＦ）に対する優先度を一覧にした優先度表３９ｂが記憶部１３０に出力され記憶される。優先度表３９ｂは、抽出されたＦＦの前段からの入力を基準とした関連Ｉ／Ｆの優先順位を示す（動かしにくさ基準）。優先度を決定する際には、関連Ｉ／Ｆ毎に予め設定しておいた重み付け表２２を参照して、関連Ｉ／Ｆに対して重み付けをして優先度を決定してもよい。
【００７３】
優先部抽出処理（ステップＳ２１）において、ＲＴＬ記述データ３２とレジスタマップ定義データ２１とに基づいて、ＦＦの経路情報を抽出する処理を行った場合、入力経路リスト３７が記憶部１３０に出力される。レジスタマップ定義データ２１は、検証者が予め作成したレジスタマップの定義データ、又は、予めＣＰＵインターフェース操作の解析で自動検出して作成したレジスタマップの定義データである。
【００７４】
そして、関連Ｉ／Ｆ抽出処理（ステップＳ２２）によって、抽出されたＦＦの関連Ｉ／Ｆ（外部入力端子及びユーザＩ／Ｆ８ｆのＦＦ）に対する優先度を一覧にした優先度表３９ｃが記憶部１３０に出力され記憶される。優先度表３９ｃは、変更されたＦＦを基準とした関連Ｉ／Ｆの優先順位を示す（変更箇所基準）。優先度を決定する際には、関連Ｉ／Ｆ毎に予め設定しておいた重み付け表２２を参照して、関連Ｉ／Ｆに対して重み付けをして優先度を決定してもよい。
【００７５】
優先部抽出部４２１による優先部抽出処理について説明する。図１０は、優先部抽出処理を説明するためのフローチャート図である。図１０において、優先部抽出部４２１は、影響の多いＦＦを抽出する処理と、動かしにくいＦＦを抽出する処理と、及び、ＦＦの経路情報を抽出する処理とを有する。
【００７６】
優先部抽出部４２１は、ＲＴＬ記述データ３２からＦＦ（変数、入出力）を検出（ステップＳ３１）、"output"とモジュール内の変数とを探す（ステップＳ３２）。"output"、"input"、"reg"、"wire"などの変数定義から変数名を取得する。また、優先部抽出部４２１は、ステップＳ３２で取得した変数名が右辺に存在する、信号値を生成する演算式をＲＴＬ記述データ３２から探す（ステップＳ３３）。
【００７７】
優先部抽出部４２１は、ステップＳ３１、Ｓ３２、及びＳ３３による結果を示す出力表２３を記憶部１３０に作成する（ステップＳ３４）。
【００７８】
そして、優先部抽出部４２１は、出力表２３から行き先の信号数をリストアップする（ステップＳ３５ａ）。ＦＦ毎にＦＦが後段に与える影響度をＦＦの出力信号から分岐した信号数でカウントした出力カウントリスト３６ａが、記憶部１３０に記憶される。出力カウントリスト３６ａは、ＦＦを影響の多い順で示す。
【００７９】
或いは、優先部抽出部４２１は、出力表２３から各変数への入力信号数をリストアップする（ステップＳ３５ｂ）。ＦＦ毎にＦＦの駆動条件の複雑度をＦＦへ入力される入力信号数でカウントした入力カウントリスト３６ｂが、記憶部１３０に記憶される。入力カウントリスト３６ｂは、ＦＦを動かしにくい順で示す。
【００８０】
また、優先部抽出部４２１は、出力表２３から信号経路（ツリー）を生成する（ステップＳ３５ｃ）。入力経路リスト３７が、記憶部１３０に記憶される。入力経路リスト３７は、ＦＦへの入力経路をツリー構造で示す。
【００８１】
上述した図１０のフローチャートにおいて、ステップＳ３１、Ｓ３２、Ｓ３３、Ｓ３４、及びＳ３５ａの処理が影響の多いＦＦを抽出する処理に相当し、ステップＳ３１、Ｓ３２、Ｓ３３、Ｓ３４、及びＳ３５ｂの処理が動かしにくいＦＦを抽出する処理に相当し、ステップＳ３１、Ｓ３２、Ｓ３３、Ｓ３４、及びＳ３５ｃの処理がＦＦの経路情報を抽出する処理に相当する。
【００８２】
上述した優先度決定処理の一例を図１１及び図１２で説明する。図１１は、ＤＵＴの回路構成に対応付けられる変数名の例を示す図である。図１２は、ＤＵＴのＲＴＬ記述例を示す図である。図１２では、Verilog HDLによって記述したＲＴＬ記述例が示されるが、この例によって記述言語を限定するものではない。
【００８３】
図１０のステップＳ３１の処理では、ＲＴＬ記述データ３２（図１２）からＦＦ情報、及び、ＦＦ以外のＦＦ非情報を取得する。図１１のＤＵＴ８の回路構成例では、config、txenable、txstart、txmode、及びreg_1〜reg_12の信号をＦＦとして取得する。
【００８４】
図１０のステップＳ３２の処理では、ＲＴＬ記述データ３２（図１２）からoutput、input、reg、wireで宣言された信号（変数）を探す。図１１のＤＵＴ８の回路構成例では、ＲＴＬ記述データ３２（図１２）によって信号又は変数として宣言されたO_STATUS、I_SPEED、I_INIT、config、txenable、txstart、txmode、reg_1〜reg_12、及びA〜Kを検出する。
【００８５】
図１０のステップＳ３３の処理では、ＲＴＬ記述データ３２（図１２）からステップＳ３２で取得した変数が右辺に使用されている、信号値を生成する演算式を探す。図１２に例示されるＲＴＬ記述データ３２では、記述２０１による"cpu_data[3]<=txenable"、記述２０２による"reg_1<=A"、記述２０３による"B=txenable&txstart"、記述２０３による"reg_2<=B"等が検出される。
【００８６】
図１０のステップＳ３４の処理では、ステップＳ３２で検出した全信号に対して、ステップＳ３１で検出したＦＦ情報及び非ＦＦ情報を区別する。ＦＦ情報である場合は、出力表２３において、ＦＦフラグをセットする。また、ステップＳ３３で検出した信号値を生成する演算式に現れる全信号を取得する。
【００８７】
ステップＳ３２で検出した全信号と、ステップＳ３３で検出した全信号とをリストアップして、出力表２３を記憶部１３０に作成する。
【００８８】
ここで、出力表２３のデータ例を参照し説明する。図１３は、出力表のデータ例を示す図である。図１３において、出力表２３は、ＦＦフラグ、信号、入力信号、ＦＦ置き換え、重複整理後の信号等の情報を有する。
【００８９】
優先部抽出部４２１は、作成した出力表２３において、「入力信号」欄に示されている信号が非ＦＦ信号（wire等）であった場合、その非ＦＦ信号に対する入力信号に基づいて、ＦＦである信号だけで構成されるように置き換えを行う。置き換えた内容は、「ＦＦ置き換え」欄に設定される。
【００９０】
入力信号が非ＦＦ信号（wire等）であるかどうかの判断を行う。対象とする信号はいずれかのレコードの「信号」欄に設定されている。従って、出力表２３の全レコードにおいて、「ＦＦフラグ」欄の有無で判断すればよい。置き換えは、対象とする検索した信号をその信号の「入力信号」に置き換えることで行う。その置き換え結果に対しても、非ＦＦ信号があれば同様の検索及び置き換えを実施することにより、全レコードの「入力信号」欄は、ＦＦ信号又は外部入力信号で示されることになる。
【００９１】
図１３に示す出力表２３では、入力信号が「信号」自身である場合は「入力信号」欄から除外されている。「置き換え」欄の"―"は、「入力信号」欄の信号に対して、非ＦＦ信号（ＲＴＬ記述データ３２（図１２）によってwireで定義される信号）からＦＦ信号への置き換えを行わなかったことを示す。また、「重複整理後の信号」欄では、「ＦＦ置き換え」欄の信号に対して、重複する信号を除外した結果が示される。重複する信号が無かった場合、"―"で示される。
【００９２】
出力表２３において、Top.Aは非ＦＦ信号であるので、「信号」欄にTop.Aが示されるレコードの「入力信号」欄の値「Top.I_SPEED, Top.regblok.config」を「入力信号」欄にTop.Aが設定されているレコードの「ＦＦ置き換え」欄に設定することによって、ＦＦ置き換えが行われる。他レコードについても同様に非ＦＦ信号が「入力信号」欄に設定されている場合には、同様に、ＦＦ置き換えが行われる。
【００９３】
ＦＦを影響の多い順にリストアップするステップＳ３５ａでの処理について説明する。図１４は、出力カウントリストのデータ例を示す図である。図１４に示す出力カウントリスト３６ａは、ＦＦフラグ、信号、入力信号、「入力信号」への出現回数等の項目を有する。
【００９４】
出力カウントリスト３６ａは、図１３に示す出力表２３の「ＦＦフラグ」欄がＦＦを示すレコードにおいて、「信号」欄の信号（以下、ＦＦ信号と言う。）が「入力信号」欄に出現する回数をカウントし、カウント結果を「「入力信号」への出現回数」欄に設定したリストである。
【００９５】
「ＦＦフラグ」欄にＦＦが設定されたレコードにおいて、「入力信号」欄にTop.reg_3が出現する回数をカウントしてカウント結果「２」を得た場合、「信号」欄にTop.reg_3が設定されているレコードの「「入力信号」の出現回数」にカウント結果「２」を設定する。
【００９６】
また、「入力信号」欄にTop.reg_4が出現する回数をカウントしてカウント結果「４」を得た場合、「信号」欄にTop.reg_4が設定されているレコードの「「入力信号」の出現回数」にカウント結果「４」を設定する。各レコードについて同様の処理が行われ、「「入力信号」の出現回数」欄に値が設定される。
【００９７】
出力カウントリスト３６ａを参照することにより、ＲＴＬ記述データ３２で記述されるＦＦ夫々について、ＲＴＬ記述データ３２内の他のＦＦに対するＦＦの影響の大きさの指標を得ることができる。
【００９８】
ＦＦを動かしにくい順にリストアップするステップＳ３５ｂでの処理について説明する。図１５は、入力カウントリストのデータ例を示す図である。図１５に示す入力カウントリスト３６ｂは、ＦＦフラグ、信号、入力信号、「入力信号」の信号数等の項目を有する。
【００９９】
入力カウントリスト３６ｂは、図１３に示す出力表２３の「ＦＦフラグ」欄がＦＦを示すレコードにおいて、「入力信号」欄に設定された信号数をカウントし、カウント結果を「「入力信号」への信号数」欄に設定したリストである。
【０１００】
「ＦＦフラグ」欄にＦＦが設定されたレコードにおいて、「信号」欄にTop.reg_1が設定されるレコードでは、「入力信号」欄に設定された信号数をカウントした結果「２」を得ると、「「入力信号」の信号数」にカウント結果「２」を設定する。各レコードについて同様の処理が行われ、「「入力信号」の信号数」欄に値が設定される。
【０１０１】
出力カウントリスト３６ｂを参照することにより、ＲＴＬ記述データ３２で記述されるＦＦ夫々について、そのＦＦをＲＴＬ記述データ３２内の他のＦＦから操作する場合の操作のし難さの指標を得ることができる。
【０１０２】
ＦＦの経路情報をリストアップするステップＳ３５ｂでの処理について説明する。図１６は、入力経路リストのデータ例を示す図である。図１６に示す入力経路リスト３７ｃは、ＦＦフラグ、信号、入力信号、関連Ｉ／Ｆからの経路等の項目を有する。
【０１０３】
入力経路リスト３７ｃは、図１６に示す出力表２３の「ＦＦフラグ」欄がＦＦを示すレコードにおいて、「入力信号」欄にＦＦ信号が示されているレコードａを検索する。レコードａが検索された場合、そのレコードａの「関連Ｉ／Ｆからの経路」欄に入力経路に従い入力信号をリストアップする。
【０１０４】
「関連Ｉ／Ｆからの経路」欄にリストアップされた各入力信号について、「ＦＦフラグ」欄がＦＦを示すレコードｂの「信号」欄から検索する。そして、検索されたレコードｂの「入力信号」欄に示されているＦＦ信号を、先のレコードａの「関連Ｉ／Ｆからの経路」欄において、経路順になるように設定する。
【０１０５】
上述した処理を外部入力端子及びユーザＩ／Ｆ８ｆのＦＦを起点とする、入力信号の経路（ツリー）が「関連Ｉ／Ｆからの経路」欄にリストアップされるまで繰り返す。レジスタマップ定義データ２１からユーザＩ／Ｆ８ｆのＦＦの情報を取得しておく。ユーザＩ／Ｆ８ｆのＦＦに辿り着いた場合に、この経路を辿る繰り返し処理を終了する。
【０１０６】
上述のような処理によって得られた入力経路リスト３７ｃを参照することにより、ＲＴＬ記述データ３２の一部に修正が加えられた場合、修正されたＦＦに影響を与える外部入力端子及びユーザＩ／Ｆ８ｆのＦＦ等の修正ＦＦに係る関連Ｉ／Ｆの情報を得ることができる。
【０１０７】
以下に、関連Ｉ／Ｆ抽出部４２３による関連Ｉ／Ｆ抽出処理について説明する。図１７は、関連Ｉ／Ｆ抽出処理を説明するためのフローチャート図である。図１７では、影響度に基づいて優先度を決定する場合、動かしにくさに基づいて優先度を決定する場合、変更箇所に基づいて優先度を決定する場合の各々について説明する。図１８は、関連Ｉ／Ｆ対応表のデータ例を示す図である。
【０１０８】
影響度を基準として優先度を決定する場合、関連Ｉ／Ｆ抽出部４２３は、出力カウントリスト３６ａに基づいて関連Ｉ／Ｆ対応表３８ａを記憶部１３０に作成する（ステップＳ４１）。
【０１０９】
関連Ｉ／Ｆ対応表３８ａは、図１８に例示されるように、ＦＦフラグ、信号、「入力信号」への出現回数、関連Ｉ／Ｆ、関連Ｉ／Ｆの点数、累積点数等の項目を有する。出力カウントリスト３６ａに存在する「ＦＦフラグ」欄及び「「入力信号」への出現回数」欄の値が、関連Ｉ／Ｆ対応表３８ａの同一項目に設定される。
【０１１０】
関連Ｉ／Ｆ抽出部４２３は、各ＦＦ信号を動かす関連Ｉ／Ｆの情報は、入力経路リスト３７の「関連Ｉ／Ｆからの経路」欄から取得して、関連Ｉ／Ｆ対応表３８ａの「関連Ｉ／Ｆ」欄にリストアップする。
【０１１１】
次に、関連Ｉ／Ｆ抽出部４２３は、関連Ｉ／Ｆを点数付けする（ステップＳ４２）。関連Ｉ／Ｆ抽出部４２３は、関連Ｉ／Ｆ対応表３８ａのＦＦの「「入力信号」への出現回数」欄の値を、「関連Ｉ／Ｆ」欄にリストアップされている各信号に対応付けて「関連Ｉ／Ｆの点数」欄に設定する。
【０１１２】
「「入力信号」への出現回数」欄で「ｎ」回のＦＦについて、その「関連Ｉ／Ｆ」欄にリストアップされている各信号に対応させて「ｎ」点を「関連Ｉ／Ｆの点数」欄に設定する。
【０１１３】
つまり、「信号」欄にTop.reg_1が設定されているレコードでは、「「関連Ｉ／Ｆ」欄にリストアップされているTop.I_SPEED、及びTop.regblk.configの夫々に対応させて、「入力信号」への出現回数」欄で示される「１」回が「関連Ｉ／Ｆの点数」欄に設定される。
【０１１４】
また、「信号」欄にTop.reg_2が設定されているレコードでは、「関連Ｉ／Ｆ」欄にリストアップされているTop.regblk.txenable、及びTop.regblk.txstartの夫々に対応させて、「「入力信号」への出現回数」欄で示される「１」回が「関連Ｉ／Ｆの点数」欄に設定される。
【０１１５】
同様に、「信号」欄にTop.reg_3が設定されているレコードには、信号毎に「関連Ｉ／Ｆ」欄に「２」が設定され、「信号」欄にTop.reg_4が設定されているレコードには、信号毎に「関連Ｉ／Ｆ」欄に「４」が設定される。
【０１１６】
「ＦＦフラグ」欄にＦＦが設定された複数のレコードにおいて、「関連Ｉ／Ｆ」欄に現れる信号に対して、関連Ｉ／Ｆの点数を出現順に累積した値が「累積点数」欄に設定される。累積することによって、影響度の高い多数のＦＦを動かす関連Ｉ／Ｆの合計点が高くなっていく。
【０１１７】
例えば、「信号」欄にTop.reg_3が設定されているレコードでは、「関連Ｉ／Ｆ」欄にリストされるTop.regblk.txstartに対応付けられる「関連Ｉ／Ｆの点数」欄の値「２」と、このレコードの前に出現するTop.regblk.txstartに対する「累積点数」欄の値「１」とを加算して、当該レコードの「累積点数」欄に「３」が設定される。
【０１１８】
更に、「信号」欄にTop.reg_4が設定されているレコードでは、「関連Ｉ／Ｆ」欄にリストされるTop.regblk.txstartに対応付けられる「関連Ｉ／Ｆの点数」欄の値「４」と、このレコードの前に出現するTop.regblk.txstartに対する「累積点数」欄の値「３」とを加算して、当該レコードの「累積点数」欄に「７」が設定される。
【０１１９】
従って、Top.regblk.txstartは、Top.reg_2、Top.reg_3、及びTo.reg_4の「関連Ｉ／Ｆ」欄にリストアップされ、夫々「１」点、「２」点、及び「４」点が「関連Ｉ／Ｆの点数」欄に設定される。最後に「関連Ｉ／Ｆ」欄にTop.regblk.txstartが出現するレコードでは、「累積点数」欄に「７」が示される。Top.regblk.txstartの合計点は「７」となる。上述したような「累積点数」欄への設定を、「関連Ｉ／Ｆ」欄に現れる各信号に対して行う。
【０１２０】
そして、関連Ｉ／Ｆ抽出部４２３は、関連Ｉ／Ｆの累積点数でソートする（ステップＳ４３）。関連Ｉ／Ｆ対応表３８ａの全レコードにおいて、「関連Ｉ／Ｆ」欄に出現する同じ信号毎に最大の累積点数を取得して、その最大の累積点数で信号をソートする。
【０１２１】
ソート結果をそのまま優先順位とすると、「関連Ｉ／Ｆ」欄への出現回数は多いが、検証項目の優先度検討にさほど意味がない関連Ｉ／Ｆの信号（以下、単に「関連Ｉ／Ｆ」と言う。）であっても優先度が高くなってしまう場合がある。優先的に検証する項目ではないＳＣＡＮテスト信号、リセット信号などが相当する。このような場合を考慮して、関連Ｉ／Ｆ毎に重み付けを行ってもよい。
【０１２２】
関連Ｉ／Ｆ抽出部４２３は、関連Ｉ／Ｆ重み付け表２２を参照して、関連Ｉ／Ｆの累積点数を調整する（ステップＳ４５）。関連Ｉ／Ｆ抽出部４２３は、関連Ｉ／Ｆ重み付け表２２を参照して、検証者又は設計者によって予め設定された関連Ｉ／Ｆ毎の重み付けを取得して、関連Ｉ／Ｆの累積点数に乗算して調整値を取得する。
【０１２３】
関連Ｉ／Ｆ抽出部４２３によって、図１９に示されるような影響度を基準とした優先度表３９ａが記憶部１３０に作成される。図１９は、影響度を基準とした場合の優先度表のデータ例を示す図である。図１９において、優先度表３９ａは、関連Ｉ／Ｆ、累積点数、重み付け、調整値等の項目を有する。
【０１２４】
優先度表３９ａでは、関連Ｉ／Ｆ対応表３８ａの全レコードにおいて「関連Ｉ／Ｆ」欄に出現する信号別にレコードが作成される。優先度表３９ａにおいて、「関連Ｉ／Ｆ」欄には、関連Ｉ／Ｆとして特定される信号が設定され、「累積点数」欄には、最大の累積点数が設定される。
【０１２５】
累積点数に基づいた優先度は、Top.regblk.txstart、Top.regblk.txmode、Top.I_INT、Top.regblk.txenable、Top.regblk.config、Top.I_SPEED、・・・の順となる。
【０１２６】
一方、重み付け後では、Top.I_INTとTop.regblk.txenableとが入れ替わり、Top.regblk.txstart、Top.regblk.txmode、Top.regblk.txenable、Top.I_INT、Top.regblk.config、Top.I_SPEED、・・・の順となる。
【０１２７】
このようにして優先度表３９ａが作成され、表示装置１５に表示される。検証者又は設計者は、ＲＴＬ記述データ３２に基づいて影響度の大きさの指標が関連Ｉ／Ｆに対して示されるため、効率的に検証項目の優先順位を決定することができる。
【０１２８】
検証者又は設計者は、マニュアルで作成した検証項目について各検証項目に用いられる外部入力端子及びユーザＩ／Ｆ８ｆのＦＦとしての関連Ｉ／Ｆの点数を確かめる際に、影響度の大きさを優先する検証項目の判断基準の一つとして利用することができる。
【０１２９】
次に、動かしにくさを基準として優先度を決定する場合、関連Ｉ／Ｆ抽出部４２３は、入力カウントリスト３６ｂに基づいて関連Ｉ／Ｆ対応表３８ｂを記憶部１３０に作成する（ステップＳ５１）。
【０１３０】
関連Ｉ／Ｆ対応表３８ｂは、図２０に例示されるように、ＦＦフラグ、信号、「入力信号」の信号数、関連Ｉ／Ｆ、関連Ｉ／Ｆの点数、累積点数等の項目を有する。入力カウントリスト３６ｂに存在する「ＦＦフラグ」欄及び「「入力信号」の信号数」欄の値が、関連Ｉ／Ｆ対応表３８ｂの同一項目に設定される。
【０１３１】
関連Ｉ／Ｆ抽出部４２３は、各ＦＦ信号を動かす関連Ｉ／Ｆの情報は、入力経路リスト３７の「関連Ｉ／Ｆからの経路」から取得して、関連Ｉ／Ｆ対応表３８ｂの「関連Ｉ／Ｆ」欄にリストアップする。
【０１３２】
次に、関連Ｉ／Ｆ抽出部４２３は、関連Ｉ／Ｆを点数付けする（ステップＳ５２）。関連Ｉ／Ｆ抽出部４２３は、関連Ｉ／Ｆ対応表３８ｂのＦＦの「「入力信号」の信号数」欄の値を、「関連Ｉ／Ｆ」欄にリストアップされている各信号に対応付けて「関連Ｉ／Ｆの点数」欄に設定する。
【０１３３】
「「入力信号」の信号数」欄で「ｎ」回のＦＦについて、その「関連Ｉ／Ｆ」欄にリストアップされている各信号に対応させて「ｎ」点を「関連Ｉ／Ｆの点数」欄に設定する。
【０１３４】
つまり、「信号」欄にTop.reg_1が設定されているレコードでは、「「関連Ｉ／Ｆ」欄にリストアップされているTop.I_SPEED、及びTop.regblk.configの夫々に対応させて、「入力信号」の信号数」欄で示される「２」回が「関連Ｉ／Ｆの点数」欄に設定される。
【０１３５】
また、「信号」欄にTop.reg_2が設定されているレコードでは、「関連Ｉ／Ｆ」欄にリストアップされているTop.regblk.txenable、及びTop.regblk.txstartの夫々に対応させて、「「入力信号」の信号数」欄で示される「２」回が「関連Ｉ／Ｆの点数」欄に設定される。
【０１３６】
同様に、「信号」欄にTop.reg_3が設定されているレコードには、信号毎に「関連Ｉ／Ｆ」欄に「２」が設定され、「信号」欄にTop.reg_4が設定されているレコードには、信号毎に「関連Ｉ／Ｆ」欄に「３」が設定される。
【０１３７】
「ＦＦフラグ」欄にＦＦが設定された複数のレコードにおいて、「関連Ｉ／Ｆ」欄に現れる信号に対して、関連Ｉ／Ｆの点数を出現順に累積した値が「累積点数」欄に設定される。累積することによって、最も動かしにくいＦＦに係る関連Ｉ／Ｆの合計点が高くなっていく。
【０１３８】
例えば、「信号」欄にTop.reg_3が設定されているレコードでは、「関連Ｉ／Ｆ」欄にリストされるTop.regblk.txstartに対応付けられる「関連Ｉ／Ｆの点数」欄の値「２」と、このレコードの前に出現するTop.regblk.txstartに対する「累積点数」欄の値「２」とを加算して、当該レコードの「累積点数」欄に「４」が設定される。
【０１３９】
更に、「信号」欄にTop.reg_4が設定されているレコードでは、「関連Ｉ／Ｆ」欄にリストされるTop.regblk.txstartに対応付けられる「関連Ｉ／Ｆの点数」欄の値「３」と、このレコードの前に出現するTop.regblk.txstartに対する「累積点数」欄の値「４」とを加算して、当該レコードの「累積点数」欄に「７」が設定される。
【０１４０】
従って、Top.regblk.txstartは、Top.reg_2、Top.reg_3、及びTo.reg_4の「関連Ｉ／Ｆ」欄にリストアップされ、夫々「２」点、「４」点、及び「７」点が「関連Ｉ／Ｆの点数」欄に設定される。最後に「関連Ｉ／Ｆ」欄にTop.regblk.txstartが出現するレコードでは、「累積点数」欄に「７」が示される。Top.regblk.txstartの合計点は「７」となる。上述したような「累積点数」欄への設定を、「関連Ｉ／Ｆ」欄に現れる各信号に対して行う。
【０１４１】
そして、関連Ｉ／Ｆ抽出部４２３は、関連Ｉ／Ｆの累積点数でソートする（ステップＳ５３）。関連Ｉ／Ｆ対応表３８ｂの全レコードにおいて、「関連Ｉ／Ｆ」欄に出現する同じ信号毎に最大の累積点数を取得して、その最大の累積点数で信号をソートする。
【０１４２】
影響度を基準として優先度を決定する場合と同様の理由により、関連Ｉ／Ｆ毎に重み付けを行ってもよい。
【０１４３】
関連Ｉ／Ｆ抽出部４２３は、関連Ｉ／Ｆ重み付け表２２を参照して、関連Ｉ／Ｆの累積点数を調整する（ステップＳ５５）。関連Ｉ／Ｆ抽出部４２３は、関連Ｉ／Ｆ重み付け表２２を参照して、検証者又は設計者によって予め設定された関連Ｉ／Ｆ毎の重み付けを取得して、関連Ｉ／Ｆの累積点数に乗算して調整値を取得する。
【０１４４】
関連Ｉ／Ｆ抽出部４２３によって、図２１に示されるような動かしにくさを基準とした優先度表３９ｂが記憶部１３０に作成される。図２１は、動かしにくさを基準とした場合の優先度表のデータ例を示す図である。図２１において、優先度表３９ａと同様に、優先度表３９ｂは、関連Ｉ／Ｆ、累積点数、重み付け、調整値等の項目を有する。
【０１４５】
優先度表３９ｂでは、関連Ｉ／Ｆ対応表３８ｂの全レコードにおいて「関連Ｉ／Ｆ」欄に出現する信号別にレコードが作成される。優先度表３９ｂにおいて、「関連Ｉ／Ｆ」欄には、関連Ｉ／Ｆとして特定される信号が設定され、「累積点数」欄には、最大の累積点数が設定される。
【０１４６】
累積点数に基づいた優先度は、Top.regblk.txstart、Top.regblk.txmode、Top.regblk.config、Top.I_INT、Top.regblk.txenable、Top.I_SPEED、・・・の順となる。
【０１４７】
一方、重み付け後では、Top.regblk.configがTop.regblk.txmodeより低い優先度となり、Top.regblk.txstart、Top.regblk.txenable、Top.regblk.txmode、Top.I_INT、Top.regblk.config、Top.I_SPEED、・・・の順となる。
【０１４８】
このようにして優先度表３９ａが作成され、表示装置１５に表示されることによって、検証者又は設計者は、ＲＴＬ記述データ３２に基づいて動かしにくさの指標が関連Ｉ／Ｆに対して示されるため、効率的に検証項目の優先順位を決定することができる。
【０１４９】
検証者又は設計者は、マニュアルで作成した検証項目について各検証項目に用いられる外部入力端子及びユーザＩ／Ｆ８ｆのＦＦとしての関連Ｉ／Ｆの点数を確かめる際に、影響度の大きさを優先する検証項目の判断基準の一つとして利用することができる。
【０１５０】
次に、変更箇所を基準として優先度を決定する場合、関連Ｉ／Ｆ抽出部４２３は、入力経路リスト３７に基づいてＦＦ毎の入力経路をツリー構造で表した入力経路ツリー情報３７−１を記憶部１３０に作成する（ステップＳ６１）。
【０１５１】
入力経路ツリー情報３７−１は、図２２に例示されるように、ＦＦフラグ、信号、入力信号（１段前ＦＦ）、２段前ＦＦ、３段前等の項目を有する。入力経路リスト３７に存在する「ＦＦフラグ」欄及び「信号」欄の値が、入力経路ツリー情報３７−１の同一項目に設定される。
【０１５２】
関連Ｉ／Ｆ抽出部４２３は、各ＦＦ信号を動かす１段前の入力信号の情報を、入力経路リスト３７の「入力信号」欄から取得して、入力経路ツリー情報３７−１の「入力信号（１段前ＦＦ）」欄に設定する。
【０１５３】
また、関連Ｉ／Ｆ抽出部４２３は、入力経路リスト３７の「関連Ｉ／Ｆからの経路」欄の値に従って、「２段前ＦＦ」欄に「入力信号（１段前ＦＦ）」欄に設定した信号への入力信号を設定し、「３段前」欄に「２段前ＦＦ」欄に設定した信号への入力信号を設定する。
【０１５４】
信号経路の別の設定方法として、前段信号へのリンクを設定することでも良い。つまり、Top.reg_3に対する入力にTop.reg_2があるが、入力経路ツリー情報３７−１においてTop.reg_2が設定されている「信号」欄へリンクするようにしても良い。
【０１５５】
ＲＴＬ記述データ３２の論理を修正した場合、入力経路ツリー情報３７−１を再度作成する。再度作成された入力経路ツリー情報３７−１と前回作成した前回入力経路ツリー情報３７−２とを比較することにより、ＲＴＬ記述データ３２内の修正された箇所、及び、その修正論理を駆動する外部入力端子又はユーザＩ／Ｆ８ｆのＦＦである関連Ｉ／Ｆの情報も取得することができる。
【０１５６】
例えば、論理修正後の入力経路ツリー情報３７−１と前回入力経路ツリー情報３７−２との比較により、この表のTop.reg_2に違いが現れた場合、それを駆動するためにはTop.regblk.txenable及びTop.regblk.txstartのＦＦを操作すればよいことが判る。
【０１５７】
次に、本実施の形態と関連技術との比較を、一例を用いて説明する。図１１のＤＵＴ８の回路構成を用いて、ＲＴＬ記述データ３２を用いたＤＵＴ８内部のＦＦの影響度を基準として検証項目の優先順位を決める場合で説明する。
【０１５８】
関連技術では、回路の仕様及び利用方法に基づいて項目の抽出を行う。具体的には、レジスタマップ及び外部端子の記述に基づいて、各々へ与える信号の値とそれを与えた場合に期待される動作が抽出される。
【０１５９】
例えば、仕様書３１の回路図における各レジスタフィールドが以下のように定義されているとする。
config  ：(Read/Write) データパケットの形式を選択するＦＦであることを示す
txenable：(Read Only)  データの送信が可能な状態にあることを示す
txstart ：(Write Only) 1セットによりデータ送信を開始する
tx_mode ：(Read/Write) 送信モードか受信モードかを選択する(1:送信,0:受信)
また、通常の手順として、以下のようなフローが決められている。
【０１６０】
（Ｃ１）tx_modeで送信を選択し、
（Ｃ２）config で送りたいデータパケットの種類を選択し、
（Ｃ３）txenable を確認しながら送信可能になるのを待ち、
（Ｃ４）データセット後 txstart 書き込みで送信を開始する。
この時、従来の検証項目の優先順位としては、設計者等の意見も踏まえて、以下のようになったとする。
【０１６１】
（Ｄ１）フローに従った正常な使い方で期待通りの動作をするかテストし、
（Ｄ２）configや、データに間違った値を与えてエラーを正しく検出するかテストし、
（Ｄ３）受信中にtxstart書き込みするなど間違った操作でエラーを正しく検出するかテストし、
（Ｄ４）これらを送信/受信単独で各々テストして、期待通りの動作を確認したのち、
送信と受信の通信動作中に、本来は許可されていないtx_modeをダイナミックに切り替えるなどのイリーガル試験を行い、コーナーケースをテストする。
【０１６２】
上述したような検証方法を用いると、reg_4の生成回路のtx_modeの使い方で起こるような致命的なバグがある場合、（Ｄ４）まで検証が進まないと検出されず、かつ、reg_4は多数の後段論理に影響を与えているため、修正により様々な影響を与える場合がある。
【０１６３】
一方、本実施の形態を適用すると、reg_4が検出される以前に「多段の行き先を持つ影響の大きいＦＦ」であることを把握しておくことができ、かつ、reg_4はtx_modeによって動作されるＦＦであることも判る。言い換えると、tx_modeが影響度の大きいＦＦを駆動させるＦＦであることが判る。
【０１６４】
そのため、txmodeダイナミック切り替えによるイリーガル試験は、上記（Ｄ１）の直後くらいの検証の初期にテストしておくことが望ましいと判断でき、reg_4の生成回路にある致命的なバグを検証の初期段階で検出可能なように検証項目の優先順位を決定することができる。
【０１６５】
図２３は、本実施の形態と関連技術との比較を示すグラフ図である。図２３では、検証経過に応じたバグ検出累計を示すグラフが示され、縦軸にバグ検出累計を示し、横軸に検証項目実行数を示す。検証が進む程、検証項目の実行数が累積され、実行数に応じたバグの検出累計を例示している。
【０１６６】
関連技術９１では、検証初期では緩やかにバグが検出され、検証後半でより多くのバグが検出されている様子を示している。影響の大きいバグに関わる検証項目が、検証後半に実施されることもある。
【０１６７】
バグが検出された場合、仕様書３１又はＲＴＬ記述データ３２の修正作業の期間が必要になる他、バグ検出時までに実施済みの検証項目の検証を再度実施する必要があるため、影響の大きいバグの検出が検証作業の後半になればなるほど、検証全体のスケジュールへの影響が大きくなってしまうという問題がある。検証作業の後半にバグが検出されると設計部門において、バグ対応のスケジュールが困難となり、検証作業が滞ってしまう場合がある。
【０１６８】
更に、検証を再度実施する際、ＲＴＬ記述データ３２の修正が影響を及ぼす周辺論理がどの検証項目に対応しているのかを示す指標がないため、全項目をやり直さなくてはならず、検証全体のスケジュールへ影響を与えてしまうこともある。
【０１６９】
一方、本実施の形態９２では、検証項目の実行実績が少ない検証前半においてバグが多く検出されている。影響の大きいバグに係る検証項目を検証前半に行なうことで、ＤＵＴ８の不具合を検証前半で洗い出すことができるため、ＤＵＴ８に修正があった場合であっても、後戻りする検証項目の数を少なくすることができる。
【０１７０】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【０１７１】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
検証対象回路の動作を記述した記述データを記憶した記憶部と、
前記記憶部の前記記述データから得られる結線情報に基づいて、前記検証対象回路内の論理毎の入出力に関する接続関係を導出して、導出した前記接続関係に基づいて前記論理を検証する第１の優先度を決定し、前記結線情報に基づいて前記論理への入力に関連する外部とのインターフェースである関連Ｉ／Ｆを抽出し、前記第１の優先度に基づき前記関連Ｉ／Ｆを検証する第２の優先度を決定する優先度決定部と、
を有することを特徴とする検証項目抽出装置。
（付記２）
前記優先度決定部は、
前記記述データから前記論理毎に前記論理へ入力する入力信号と前記入力信号の数、及び、前記論理の出力先となる論理と前記出力先の数とを抽出して接続数リストを前記記憶部に作成する優先部抽出部を有することを特徴とする付記１記載の検証項目抽出装置。
（付記３）
前記優先度決定部は、
前記記憶部から前記接続数リストを参照して、前記論理毎に、当該論理の出力の後段１段目に接続されている前記論理の数をカウントし、カウント数に基づいて前記第１の優先度を決定することを特徴とする付記２記載の検証項目抽出装置。
（付記４）
前記優先度決定部は、
前記記憶部から前記接続数リストを参照して、前記論理の入力で組み合わされている信号の数をカウントし、カウント数に基づいて前記第１の優先度を決定することを特徴とする付記２記載の検証項目抽出装置。
（付記５）
前記優先度決定部は、
前記記憶部から前記接続数リストを参照して、前記各論理への信号の入力経路を抽出し、前記記述データの修正前後の該入力経路を比較することによって、修正された前記論理と、前記修正された論理を駆動する前記関連Ｉ／Ｆに含まれる入力信号及び論理の一覧を作成することを特徴とする付記２記載の検証項目抽出装置。
（付記６）
前記優先度決定部は、
前記記憶部の前記記述データから得た前記結線情報に基づいて、前記記述データによって記述される前記各論理について、前記論理の入力側の接続をバックトレースして、前記論理に関連する前記関連Ｉ／Ｆを抽出し、抽出された前記関連Ｉ／Ｆが駆動する前記論理の前記第１の優先度の値を累積した値に基づき前記第２の優先度を決定することを特徴とする付記２乃至５のいずれか一項記載の検証項目抽出装置。
（付記７）
コンピュータによって実行される検証項目抽出方法であって、
前記記憶部に記憶された検証対象回路の動作を記述した記述データから結線情報を取得し、
前記検証対象回路内の論理毎の入力および出力に関する接続関係を導出し、
導出した前記接続関係に基づいて前記論理を検証する第１の優先度を決定し、前記結線情報に基づいて前記論理への入力に関連する外部とのインターフェースである関連Ｉ／Ｆを抽出し、前記第１の優先度に基づき前記関連Ｉ／Ｆを検証する第２の優先度を決定する
ことを特徴とする検証項目抽出方法。
（付記８）
前記記憶部に記憶された検証対象回路の動作を記述した記述データから結線情報を取得し、
前記検証対象回路内の論理毎の入力および出力に関する接続関係を導出し、
導出した前記接続関係に基づいて前記論理を検証する第１の優先度を決定し、前記結線情報に基づいて前記論理への入力に関連する外部とのインターフェースである関連Ｉ／Ｆを抽出し、前記第１の優先度に基づき前記関連Ｉ／Ｆを検証する第２の優先度を決定する
処理をコンピュータに実行させる検証項目抽出プログラム。
【符号の説明】
【０１７２】
８            ＤＵＴ
９            ＣＰＵ
１１          ＣＰＵ
１２          主記憶装置
１３          補助記憶装置
１４          入力装置
１５          表示装置
１６          出力装置
１７          通信Ｉ／Ｆ
１８          ドライブ
１９          記憶媒体
２３          出力表
３１          仕様書
３２          ＲＴＬ記述データ
３３          検証項目データ
３４          優先順位データ
３５          検証シナリオデータ
３６          接続数リスト
３６ａ        出力カウントリスト
３６ｂ        入力カウントリスト
３６ｃ        入力経路リスト
３７          入力経路リスト
３７−１      入力経路ツリー情報
３７−２      前回入力経路ツリー情報
３８          関連Ｉ／Ｆ対応表
３９          優先度表
３９ａ        優先度表（影響度基準）
３９ｂ        優先度表（動かしにくさ基準）
３９ｃ        優先度表（変更箇所基準）
４１          検証項目抽出部
４２          優先度決定部
４２１        優先部抽出部
４２３        関連Ｉ／Ｆ抽出部
４３          優先順位設定部
４４          シナリオ策定部
４５          検証部
１００        論理検証装置
１０２        検証項目抽出装置
【図１】
2014203296.tif 000003
【図２】
2014203296.tif 000004
【図３】
2014203296.tif 000005
【図４】
2014203296.tif 000006
【図５】
2014203296.tif 000007
【図６】
2014203296.tif 000008
【図７】
2014203296.tif 000009
【図８】
2014203296.tif 000010
【図９】
2014203296.tif 000011
【図１０】
2014203296.tif 000012
【図１１】
2014203296.tif 000013
【図１２】
2014203296.tif 000014
【図１３】
2014203296.tif 000015
【図１４】
2014203296.tif 000016
【図１５】
2014203296.tif 000017
【図１６】
2014203296.tif 000018
【図１７】
2014203296.tif 000019
【図１８】
2014203296.tif 000020
【図１９】
2014203296.tif 000021
【図２０】
2014203296.tif 000022
【図２１】
2014203296.tif 000023
【図２２】
2014203296.tif 000024
【図２３】
2014203296.tif 000025