特許第6201382号(P6201382)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社ソシオネクストの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6201382
(24)【登録日】2017年9月8日
(45)【発行日】2017年9月27日
(54)【発明の名称】論理検証装置及び論理検証方法
(51)【国際特許分類】
   G06F 17/50 20060101AFI20170914BHJP
【FI】
   G06F17/50 670Z
【請求項の数】7
【全頁数】30
(21)【出願番号】特願2013-79691(P2013-79691)
(22)【出願日】2013年4月5日
(65)【公開番号】特開2014-203296(P2014-203296A)
(43)【公開日】2014年10月27日
【審査請求日】2015年12月28日
(73)【特許権者】
【識別番号】514315159
【氏名又は名称】株式会社ソシオネクスト
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(72)【発明者】
【氏名】谷川 元哉
(72)【発明者】
【氏名】池田 則之
(72)【発明者】
【氏名】渡辺 暁児
(72)【発明者】
【氏名】田之脇 潤
【審査官】 合田 幸裕
(56)【参考文献】
【文献】 特開平05−108746(JP,A)
【文献】 特開平03−078086(JP,A)
【文献】 特開2011−028313(JP,A)
【文献】 特開2011−060267(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/50
IEEE Xplore
JSTPlus(JDreamIII)
(57)【特許請求の範囲】
【請求項1】
検証対象回路の動作を記述した記述データを記憶した記憶部と、
前記記憶部の前記記述データから得られる結線情報に基づいて、前記検証対象回路内の論理毎の入出力に関する接続関係を導出して、導出した前記接続関係に基づいて前記論理を検証する第1の優先度を決定し、前記結線情報に基づいて前記論理への入力に関連する外部とのインターフェースである関連I/Fを抽出し、前記第1の優先度に基づき前記関連I/Fを検証する第2の優先度を決定する優先度決定部と、
を有し、
前記優先度決定部は、
前記記述データから前記論理毎に前記論理へ入力する入力信号と前記入力信号の数、及び、前記論理の出力先となる論理と前記出力先の数とを抽出して接続数リストを前記記憶部に作成する優先部抽出部を更に有し、
前記記憶部から前記接続数リストを参照して、前記論理毎に、当該論理の出力の後段1段目に接続されている前記論理の数をカウントし、カウント数に基づいて前記第1の優先度を決定することを特徴とする論理装置。
【請求項2】
検証対象回路の動作を記述した記述データを記憶した記憶部と、
前記記憶部の前記記述データから得られる結線情報に基づいて、前記検証対象回路内の論理毎の入出力に関する接続関係を導出して、導出した前記接続関係に基づいて前記論理を検証する第1の優先度を決定し、前記結線情報に基づいて前記論理への入力に関連する外部とのインターフェースである関連I/Fを抽出し、前記第1の優先度に基づき前記関連I/Fを検証する第2の優先度を決定する優先度決定部と、
を有し、
前記優先度決定部は、
前記記述データから前記論理毎に前記論理へ入力する入力信号と前記入力信号の数、及び、前記論理の出力先となる論理と前記出力先の数とを抽出して接続数リストを前記記憶部に作成する優先部抽出部を更に有し、
前記記憶部から前記接続数リストを参照して、前記論理の入力で組み合わされている信号の数をカウントし、カウント数に基づいて前記第1の優先度を決定することを特徴とする論理装置。
【請求項3】
検証対象回路の動作を記述した記述データを記憶した記憶部と、
前記記憶部の前記記述データから得られる結線情報に基づいて、前記検証対象回路内の論理毎の入出力に関する接続関係を導出して、導出した前記接続関係に基づいて前記論理を検証する第1の優先度を決定し、前記結線情報に基づいて前記論理への入力に関連する外部とのインターフェースである関連I/Fを抽出し、前記第1の優先度に基づき前記関連I/Fを検証する第2の優先度を決定する優先度決定部と、
を有し、
前記優先度決定部は、
前記記述データから前記論理毎に前記論理へ入力する入力信号と前記入力信号の数、及び、前記論理の出力先となる論理と前記出力先の数とを抽出して接続数リストを前記記憶部に作成する優先部抽出部を更に有し、
前記記憶部から前記接続数リストを参照して、前記各論理への信号の入力経路を抽出し、前記記述データの修正前後の該入力経路を比較することによって、修正された前記論理と、前記修正された論理を駆動する前記関連I/Fに含まれる入力信号及び論理の一覧を優先項目として前記第1の優先度を決定することを特徴とする論理装置。
【請求項4】
前記優先度決定部は、
前記記憶部の前記記述データから得た前記結線情報に基づいて、前記記述データによって記述される前記各論理について、前記論理の入力側の接続をバックトレースして、前記論理に関連する前記関連I/Fを抽出し、抽出された前記関連I/Fが駆動する前記論理の前記第1の優先度の値を累積した値に基づき前記第2の優先度を決定することを特徴とする請求項乃至のいずれか一項記載の論理装置。
【請求項5】
コンピュータによって実行される論理方法であって、
憶部に記憶された検証対象回路の動作を記述した記述データから結線情報を取得し、
前記記述データから得られた前記結線情報に基づいて、前記検証対象回路内の論理毎の入力および出力に関する接続関係を導出し、
導出した前記接続関係に基づいて前記論理を検証する第1の優先度を決定し、前記結線情報に基づいて前記論理への入力に関連する外部とのインターフェースである関連I/Fを抽出し、前記第1の優先度に基づき前記関連I/Fを検証する第2の優先度を決定し、
前記第1の優先度の決定では、
前記記述データから前記論理毎に前記論理へ入力する入力信号と前記入力信号の数、及び、前記論理の出力先となる論理と前記出力先の数とを抽出して接続数リストを前記記憶部に作成し、
前記記憶部から前記接続数リストを参照して、前記論理毎に、当該論理の出力の後段1段目に接続されている前記論理の数をカウントし、カウント数に基づいて前記第1の優先度を決定する
ことを特徴とする論理方法。
【請求項6】
コンピュータによって実行される論理検証方法であって、
記憶部に記憶された検証対象回路の動作を記述した記述データから結線情報を取得し、
前記記述データから得られた前記結線情報に基づいて、前記検証対象回路内の論理毎の入出力に関する接続関係を導出し
導出した前記接続関係に基づいて、前記検証対象回路内の論理毎の入出力に関する接続関係を導出して、導出した前記接続関係に基づいて前記論理を検証する第1の優先度を決定し、前記結線情報に基づいて前記論理への入力に関連する外部とのインターフェースである関連I/Fを抽出し、前記第1の優先度に基づき前記関連I/Fを検証する第2の優先度を決定し、
前記第1の優先度の決定では、
前記記述データから前記論理毎に前記論理へ入力する入力信号と前記入力信号の数、及び、前記論理の出力先となる論理と前記出力先の数とを抽出して接続数リストを前記記憶部に作成し、
前記記憶部から前記接続数リストを参照して、前記論理の入力で組み合わされている信号の数をカウントし、カウント数に基づいて前記第1の優先度を決定する
ことを特徴とする論理検証方法。
【請求項7】
コンピュータによって実行される論理検証方法であって、
記憶部に記憶された検証対象回路の動作を記述した記述データから結線情報を取得し、
前記記述データから得られた前記結線情報に基づいて、前記検証対象回路内の論理毎の入出力に関する接続関係を導出し、
導出した前記接続関係に基づいて前記論理を検証する第1の優先度を決定し、前記結線情報に基づいて前記論理への入力に関連する外部とのインターフェースである関連I/Fを抽出し、前記第1の優先度に基づき前記関連I/Fを検証する第2の優先度を決定し、
前記第1の優先度の決定では、
前記記述データから前記論理毎に前記論理へ入力する入力信号と前記入力信号の数、及び、前記論理の出力先となる論理と前記出力先の数とを抽出して接続数リストを前記記憶部に作成する優先部抽出部を更に有し、
前記記憶部から前記接続数リストを参照して、前記各論理への信号の入力経路を抽出し、前記記述データの修正前後の該入力経路を比較することによって、修正された前記論理と、前記修正された論理を駆動する前記関連I/Fに含まれる入力信号及び論理の一覧を優先項目として前記第1の優先度を決定する
ことを特徴とする論理検証方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体集積回路の論理シミュレーションに関する。
【背景技術】
【0002】
従来より、設計した回路を論理シミュレーションにより検証することが行われている。検証する際には、検証項目を決め、次に検証項目の優先順位(優先項目を実施する順序)を決め、検証項目の優先順位に従って論理シミュレーションパターンを指示するシナリオを作成して論理シミュレーションが実行される。
【0003】
ここで、検証項目の優先順位は、「検証の必要性の高い項目」によって決められている。「検証の必要性の高い項目」とは、具体的にはバグを含んでいそうな箇所や、バグが見つかった場合のRTL(Register Transfer Level)の修正が他の論理へ大きな影響を及ぼすような箇所を検証する項目のことを示す。
【0004】
また、一般に、論理シミュレーションの検証によってバグが見つかり、そのバグに対してRTLの修正が施された場合、修正内容の確認及びその修正が周辺論理に与える影響を確認する目的で、再度、検証を実施する。その際、RTLの修正された論理を活性化させる検証項目も「検証の必要性の高い項目」となる。
【0005】
修正が影響を及ぼす箇所を抽出する観点において、初回の論理シミュレーションの結果出力と回路データとを読み込み、エラーが発生した回路内のセルと該セルの出力信号が影響する後段のセルを判別すること、または回路変更後の回路接続情報内のセルの中でレジスタ又は外部出力ピンを始点として、レジスタ又は外部入力ピンに到達するまで回路接続情報のセルの接続情報をバックトレースすること等を利用することが考えられる。
【0006】
また、検証を行なう順位付けに関して、回路の検証対象箇所に対する信号の遷移確認検証を行い、信号遷移の割合に応じて検証テストパターンもしくは検証対象箇所を順位付けし、順位付けに基づく順番に検証を行なうこと、検証対象である論理回路に入力される入力信号について、入力信号が変化したときに論理回路の動作に与える影響度の順位付けを行うこと等が提案されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平11−161693号公報
【特許文献2】特開2004−334795号公報
【特許文献3】特開平11−265980号公報
【特許文献4】特開2002−351939号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、検証項目の優先順位は、検証項目と同様に検証対象回路(DUT:Design Under TEST)の仕様書及び関連する規格書に記載されている内容(入出力端子、レジスタマップ、外部から見える機能の動作)に基づいて、決定することが一般的である。更に、設計者が考えている、検証すべき機能を反映させる場合もある。
【0009】
しかし、一般に仕様書は自然言語で記述されており、あいまいな、説明不足な、又は冗長した記述を含んでいることがある。更に、DUT内部の情報については示されていないことも多い。そのため、仕様書の中から検証項目の優先順位を決めるための情報を読み解くのは労力を要する作業であり、決定した優先順位もこれらの情報からの類推であり、確からしさに限界があると言える。
【0010】
1つの側面において、本発明の目的は、半導体集積回路の論理シミュレーションによる検証項目の優先順位を効率的に設定可能とすることである。
【課題を解決するための手段】
【0011】
本実施例の一態様によれば、検証項目抽出装置は、検証対象回路の動作を記述した記述データを記憶した記憶部と、前記記憶部の前記記述データから得られる結線情報に基づいて、前記検証対象回路内の論理毎の入力および出力に関する接続関係を導出して、導出した該接続関係に基づいて該論理を検証する第1の優先度を決定し、前記結線情報に基づいて前記論理への入力に関連する外部とのインターフェースである関連I/Fを抽出し、前記第1の優先度に基づき前記関連I/Fを検証する第2の優先度を決定する優先度決定部とを有する。
【0012】
また、上記課題を解決するための手段として、コンピュータに上記検証項目抽出装置として機能させるためのプログラム、そのプログラムを記録した記録媒体、及び検証項目抽出方法とすることもできる。
【発明の効果】
【0013】
本実施例の一態様によれば、半導体集積回路の論理シミュレーションによる検証項目の優先順位を効率的に設定可能とすることができる。
【図面の簡単な説明】
【0014】
図1】検証対象回路の回路構成例を示す図である。
図2】論理検証装置のハードウェア構成を示す図である。
図3】後段1段目のFFの個数比較を例示する図である。
図4】前段1段目のFFの個数比較を例示する図である。
図5】FFを駆動しうる信号経路の例を示す図である。
図6】入力信号に基づくバックトレース例を示す図である。
図7】論理検証装置の機能構成例を示す図である。
図8】本実施の形態に係る検証項目抽出処理の全体処理を説明するための図である。
図9】優先度決定処理の概要を説明するためのフローチャート図である。
図10】優先部抽出処理を説明するためのフローチャート図である。
図11】DUTの回路構成に対応付けられる変数名の例を示す図である。
図12】DUTのRTL記述例を示す図である。
図13】出力表のデータ例を示す図である。
図14】出力カウントリストのデータ例を示す図である。
図15】入力カウントリストのデータ例を示す図である。
図16】入力経路リストのデータ例を示す図である。
図17】関連I/F抽出処理を説明するためのフローチャート図である。
図18】影響度を基準とした場合の関連I/F対応表のデータ例を示す図である。
図19】影響度を基準とした場合の優先度表のデータ例を示す図である。
図20】動かしにくさを基準とした場合の関連I/F対応表のデータ例を示す図である。
図21】動かしにくさを基準とした場合の優先度表のデータ例を示す図である。
図22】変更箇所を基準とした場合の入力経路ツリー情報のデータ例を示す図である。
図23】本実施の形態と関連技術との比較を示すグラフ図である。
【発明を実施するための形態】
【0015】
以下、本発明の実施の形態を図面に基づいて説明する。論理シミュレーションによる回路検証では、「検証の必要性の高い項目」から実施するよう検証項目の優先順位(以下、「検証項目優先順位」と言う。)に基づいて論理シミュレーションにより検証(以下、「論理シミュレーション検証」と言う。)を実施した場合であっても、実際には検証作業の後半で実施した項目で影響の大きいバグが見つかることがある。仕様書及び規格書に基づいて決定した検証項目優先順位は、必ずしも精度が高くない。
【0016】
これは、検証項目優先順位が仕様書、規格書等のDUTの外部で得られる情報から導き出されているのに対して、実際の「検証の必要性の高い項目」は、論理構造等の回路内部の性質によっても変化することが原因となっている。
【0017】
ある論理(具体的には、レジスタ(FF:Flip Flop))において、その後段が多数の論理(FF)に接続され、参照されているような構造の箇所は、修正が入ると回路全体への影響が大きく、更に、ある論理の前段に多数の論理が接続された入力の多い論理においては、入力条件が多岐にわたるため、動作させることが困難である。図1に例示する検証対象回路であるDUT8において、FF2が後段1段目に接続されるFFの個数が多く、影響が大きい箇所であると考えられる。
【0018】
従って、このような部分を試験する検証項目の優先順位は高くする必要があるが、そのような情報は使用者、規格書等から得ることができない。
【0019】
また、検証項目優先順位の検討時に、設計者が考えている検証すべき機能や構造的に危ないと考えられる部分の情報に関して、設計者による意見を得られる場合もあるが、そのような場合であっても、設計者の思い込み等により、必要性の高い項目を見逃してしまう場合がある。
【0020】
更に、RTL修正が行われた場合、修正目的以外の機能にも影響がある場合があるが、それは回路の記述に依存するため、DUT8の外部の情報からでは判断し難く、優先的に検証する項目であっても見逃してしまう場合もある。
【0021】
上述より、発明者等は、検証項目の優先順位を決定する際には、以下の事項について考慮することとした。
【0022】
(A1)検証項目の優先順位は、自然言語で書かれた仕様書等から得られる情報のみに頼って決定しない。
【0023】
(A2)DUTの内部構造に即して、後段の理論の多いFFの検証を優先される項目(以下、「優先項目」と言う。)として抽出する。修正によってDUT8への影響が大きくなる、又は、動作させることが困難なため論理シミュレーションの手間が掛かると判断でき、優先項目として抽出する。図1に示すDUT8では、FF2等が優先項目として抽出されるのが望ましい。
【0024】
(A3)DUTの修正に際して、修正されたFFとそれを駆動する項目を優先項目として抽出する。図1に示すDUT8において、FF2が修正されたとすると、FF2の前段部分がFF2を駆動する部分であり、優先項目として抽出されるのが望ましい。
【0025】
上記項目(A1)から(A3)に関して、発明者等は、RTLから検証項目の優先順位の指標となる情報を抽出することに着目した。RTLで抽出する「検証の必要性の高い箇所」としては、具体的に以下の箇所が挙げられる。
【0026】
(B1)修正が入ると影響が大きいところ
即ち、FF出力が後段で多数のFFで使用されている部分である。後段のFFへの影響を検証するために十分な動作が要求されるFFが、RTLからの抽出対象となる。
【0027】
(B2)論理シミュレーション検証のために用意する検証項目が多く手間の掛かるところ
駆動するための条件が複雑な部分である。複雑な駆動条件のため、なかなか駆動しないFFがRTLからの抽出対象となる。
【0028】
(B3)修正が行われたところ
RTLが修正されたことによる周辺論理(レジスタ(FF))に与える影響を検証するために十分な動作が要求されるFFが、RTLからの抽出対象となる。
【0029】
上述した部分(B1)〜(B3)を抽出する仕組みについて検討する。部分(B1)〜(B3)を抽出したとしても、抽出される情報は、RTL内で定義される信号情報であるため、DUT8に対して外部から定義した記述に基づく検証項目と関連付けることができない。
【0030】
従って、本実施の形態では、両者を関連付けるためには、RTLの記述から抽出した信号情報が関連している外部入出力端子、CPU9によってアクセスされるレジスタであるユーザI/F8fのFFを導き出し、一覧を作成して表示させる。
【0031】
本実施例に係る論理検証装置は、図2に示すようなハードウェア構成を有する。図2は、論理検証装置のハードウェア構成を示す図である。図2において、論理検証装置100は、コンピュータによって制御される端末であって、CPU(Central Processing Unit)11と、主記憶装置12と、補助記憶装置13と、入力装置14と、表示装置15と、出力装置16と、通信I/F(インターフェース)17と、ドライブ18とを有し、バスBに接続される。
【0032】
CPU11は、主記憶装置12に格納されたプログラムに従って論理検証装置100を制御する。主記憶装置12には、RAM(Random Access Memory)、ROM(Read-Only Memory)等が用いられ、CPU11にて実行されるプログラム、CPU11での処理に必要なデータ、CPU11での処理にて得られたデータ等を格納する。また、主記憶装置12の一部の領域が、CPU11での処理に利用されるワークエリアとして割り付けられている。
【0033】
補助記憶装置13には、ハードディスクドライブが用いられ、各種処理を実行するためのプログラム等のデータを格納する。補助記憶装置13に格納されているプログラムの一部が主記憶装置12にロードされ、CPU11に実行されることによって、各種処理が実現される。記憶部130は、主記憶装置12及び/又は補助記憶装置13を有する。
【0034】
入力装置14は、マウス、キーボード等を有し、ユーザが論理検証装置100による処理に必要な各種情報を入力するために用いられる。表示装置15は、CPU11の制御のもとに必要な各種情報を表示する。出力装置16は、プリンタ等を有し、ユーザからの指示に応じて各種情報を出力するために用いられる。通信I/F17は、例えばインターネット、LAN(Local Area Network)等に接続し、外部装置との間の通信制御をするための装置である。通信I/F17による通信は無線又は有線に限定されるものではない。
【0035】
論理検証装置100によって行われる処理を実現するプログラムは、例えば、CD−ROM(Compact Disc Read-Only Memory)等の記憶媒体19によって論理検証装置100に提供される。即ち、プログラムが保存された記憶媒体19がドライブ18にセットされると、ドライブ18が記憶媒体19からプログラムを読み出し、その読み出されたプログラムがバスBを介して補助記憶装置13にインストールされる。そして、プログラムが起動されると、補助記憶装置13にインストールされたプログラムに従ってCPU11がその処理を開始する。尚、プログラムを格納する媒体としてCD−ROMに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。コンピュータ読取可能な記憶媒体として、CD−ROMの他に、DVDディスク、USBメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリであっても良い。
【0036】
本実施の形態に係る論理検証装置100では、
(a)「検証の必要性の高い箇所」をRTLの記述を参照して、FFの結線情報に基づいて抽出し(優先部抽出)、
(b)上記(a)で抽出したRTL内の論理夫々に対して、信号の入力側の接続をバックトレースして、外部入力端子及びCPU9によってアクセスされるレジスタであるユーザI/F8fのFFとの関連を抽出して、優先順位に従ってリストアップ(関連I/F抽出)、
する処理を行う。
【0037】
上記(a)の優先部抽出処理の概要を説明する。「検証の必要性の高い箇所」は、下記の部分を示す。
【0038】
(a−1)FF出力が多数のFFで使用されているため、後段のFFへの影響を検証するために、良く動かさなければならないFFである。具体的には、FFの後段1段目のFFの数をカウントする。数の多いFFからリストアップする。
【0039】
図3は、後段1段目のFFの個数比較を例示する図である。図3に例示されるように、FF1の値は後段の1個のFFは1個のみで使用されているのに対して、FF2の値は後段の4個のFFで使用されているため、FF2の方が後段のFFへの影響が大きいと判断する。
【0040】
(a−2)複雑な駆動条件のため駆動頻度の少ないFFである。具体的には、前段1段目からの、条件数に相当するFF入力の組合せ信号数をカウントし、数の多いFFからリストアップする。
【0041】
図4は、前段1段目のFFの個数比較を例示する図である。図4に例示されるように、FF1の値は前段の1個の入力信号値のみで変化するのに対し、FF2の値は前段の4個の入力信号値の組合せ条件が一致したときに変化するため、FF2の方が値を変化させるための条件が複雑であると判断する。
【0042】
(a−3)RTLの修正による周辺論理に与える影響を検証するために、良く動かさなくてはならないFFである。具体的には、修正前に実施しておいた各FFと各FFを駆動するユーザI/F8fのFFや入力信号の情報と、修正後に行われた同様の情報とを比較して、変更が加えられたFFとそのFFを駆動するユーザI/F8fのFFや入力信号をリストアップする。
【0043】
図5は、FFを駆動しうる信号経路の例を示す図である。図5に例示されるように、FF1〜FF4について、それらFF1〜FF4を駆動しうる入力信号及びユーザI/F8fのFFから信号経路を抽出する。FF1〜FF4を含めて全てのFFについて信号経路を抽出して、信号経路ツリーを作成する。修正前の信号経路ツリーと修正後の信号経路ツリーとを比較して、変更FFと変更FFを駆動する入力信号及びユーザI/F8fのFFが優先項目であると判断する。
【0044】
上記(b)の関連I/F抽出処理の概要を説明する。上記(a)の優先部抽出処理によって抽出したRTL内の論理夫々に対して、信号の入力側の接続をバックトレースして、外部入力端子及びユーザI/F8fのFFとの関連を抽出し、上記(a)の優先部抽出処理にてカウントした個数の大きいFFから順にリストアップする。
【0045】
バックトレースで辿り着くべきユーザI/F8fのFFの具体的な入力信号情報は、下記の手段のいずれかで得るものとする。
【0046】
(b−1)外部から信号情報のリストを与える。
【0047】
(b−2)外部からレジスタアドレスのオフセット値を与え、その値を用いて自動抽出する。具体的には、オフセット値から始まるレジスタアドレスに対して網羅的に読み書き操作を実施したときに、どのFFから値が読み出されるか、また、どのFFから値が書き込まれるかをRTLの記述から抽出し、リストアップする。
【0048】
図6は、入力信号に基づくバックトレース例を示す図である。図6において、先ず、FF2について入力側につながっているFF(又は外部入力信号)を1段探す(SC1)。次に、探した信号が外部入力信号又はユーザI/F8fのFFでない場合は、更に入力側のFFを探す。この操作を繰り返し、探した信号が全て外部入力信号又はユーザI/F8fのFFに辿り着いたらバックトレースが完了する(SC2)。
【0049】
図7は、論理検証装置の機能構成例を示す図である。図7において、論理検証装置100は、検証項目抽出部41と、優先度決定部42と、優先順位設定部43と、シナリオ策定部44と、検証部45とを有する。検証項目抽出部41と、優先度決定部42と、優先順位設定部43と、シナリオ策定部44と、検証部45とは、CPU11が対応するプログラムを実行することで行われる処理によって実現される。
【0050】
記憶部130には、仕様書31、RTL記述データ32、検証項目データ33、優先順位データ34、検証シナリオデータ35、接続数リスト36、入力経路リスト37、関連I/F対応表38、優先度表39等を記憶する。
【0051】
検証項目抽出部41では、検証者が、自然言語で書かれた仕様書31を参照して検証項目を作成する。検証者によって作成された検証項目は、論理検証装置100に記憶される。
【0052】
優先度決定部42は、記憶部130からRTL記述データ32を参照して、上述した「検証の必要性の高い箇所」に対応するインターフェース部分を検証時の優先順で一覧にした優先度表39を検証者に提供する。
【0053】
優先度決定部42は、更に、優先部抽出部421と、関連I/F抽出部423とを有する。優先部抽出部421は、RTL記述データ32からDUT8における「検証の必要性の高い箇所」を抽出する。関連I/F抽出部423は、優先部抽出部421によって抽出された「検証の必要性の高い箇所」に対応する関連I/Fを抽出して、優先順位に従ってリストアップする。関連I/Fとは、外部からの入力を受けるI/F部分であり、「検証の必要性の高い箇所」に関連する外部入力端子及びユーザI/F8fのFFが相当する。
【0054】
優先順位設定部43では、検証者が、検証項目データ33と、優先度表39とに基づいて、作成した検証項目の論理シミュレーションで実施する優先順位を設定する。検証項目の優先順位を示す優先順位データ34が記憶部130に記憶される。
【0055】
シナリオ策定部44は、検証項目データ33と、優先順位データ34とに基づいて、論理シミュレーション検証における検証シナリオを策定する。策定された検証シナリオデータ35が記憶部130に記憶される。
【0056】
検証部45は、論理シミュレーションによりDUT8を検証する。検証結果は、表示装置15に表示され、検証者によって、DUTバグの検出の有無が判断される。DUTバグの検出が確認されると、設計者によってRTL記述データ32が修正される。DUT8の設計内容が修正された場合、優先度決定部42による処理が行われ検証項目の優先順位が再度見直される。見直した検証項目の優先順位に従って、論理シミュレーション検証が再度行なわれる。
【0057】
仕様書31は、自然言語で記載されたDUT8の動作を定義したデータファイルである。RTL記述データ32は、仕様書31に基づいて、設計者がDUT8の動作をハードウェア記述言語で記述したデータファイルである。
【0058】
検証項目データ33は、DUT8の動作を検証する項目データである。優先順位データ34は、検証する項目の優先順を示すデータファイルである。検証シナリオデータ35は、優先順位データ34に従って検証項目データ33で論理シミュレーションが実施されるように作成された検証シナリオが記憶されたデータファイルである。
【0059】
接続数リスト36は、「検証の必要性の高い箇所」として判断したFF毎に、FFから後段1段目への接続数、又は、FFへの入力に係る前段1段目からの接続数を対応付けリストである。入力経路リスト37は、DUT8の修正前後のFF毎の経路情報を対応付けたリストである。優先度表39は、関連I/FをFFの優先度に基づいて順位付して一覧にしたリストである。
【0060】
図7において、検証項目抽出装置102は、検証項目抽出部41と、優先度決定部42とを有し、また、仕様書31、RTL記述データ32、検証項目データ33、接続数リスト36、入力経路リスト37、関連I/F対応表38、優先度表39等のデータを有する部分に相当する。検証項目抽出装置102による検証項目抽出処理について以下に説明する。
【0061】
図8は、本実施の形態に係る検証項目抽出処理の全体処理を説明するための図である。図8において、検証項目抽出部41は、検証者によって検証項目の作成経験に基づき、検証項目が作成された検証項目データ33を、検証者から取得して記憶部130に格納する(ステップS11)。
【0062】
一方、優先度決定部42において、優先部抽出部421は、「検証の必要性の高い個所」、即ち、優先部を抽出する(ステップS21)。ステップS21での優先部の抽出処理では、RTL記述データ32から、影響の多いFFを抽出すること(ステップS21a)、動かしにくいFFを抽出すること(ステップS21b)、又は、FFの経路情報を抽出すること(ステップS21c)の少なくとも1処理を行う。ステップS21a又はステップS21bでは、接続数リスト36が記憶部130に出力される。ステップS21cでは、入力経路リスト37が記憶部130に出力される。
【0063】
次に、優先度決定部42は、関連I/F抽出部423による関連I/F抽出処理を行う(ステップS22)。関連I/F抽出部423は、優先部抽出部421によって抽出されたFFを動かすユーザI/F8fのFF及び外部入力端子を示すインターフェース(I/F)を抽出する(ステップS22a)。関連I/F対応表38が記憶部130に記憶される。そして、関連I/F抽出部423は、影響が多い順に関連I/Fをリストアップする(ステップS22b)。優先度表39が記憶部130に記憶される。
【0064】
優先順位設定部43は、検証者の指示に応じて、検証項目データ33と優先度表39とを表示して、検証者の指定に従って、検証項目の優先順位を設定する(ステップS12)。優先順位データ34が記憶部130に記憶される。
【0065】
シナリオ策定部44は、優先順位データ34に従って、検証項目データ33に基づく論理シミュレーションが行われるように検証シナリオデータ35を記憶部に作成する(ステップS13)。
【0066】
そして、検証部45は、検証者による検証指示に応じて、論理シミュレーションでDUT8を検証する(ステップS14)。検証部45は、DUT8にバグを検出したか否かを判断する(ステップS15)。DUT8にバグを検出した場合(ステップS15のYes)、検証部45は、バグ検出を検証者に通知する。DUT8の動作を表すRTL記述データ32の修正後(ステップS17)、優先度決定部42による処理が行われる。この場合、上述したステップS21cによる処理と、ステップS22a及びS22bによる処理が実行され、優先度表39が更新される。更新された優先度表39を用いて、上述したステップS12からの処理が繰り返される。
【0067】
一方、バグを検出しなかった場合(ステップS15のNo)、検証部45は、全ての検証項目を終了したか否かを判断する(ステップS16)。全ての検証項目を終了していない場合(ステップS16のNo)、論理検証装置100は、ステップS14へ戻り、上述同様の処理を繰り返す。
【0068】
優先度決定部42による優先度決定処理の概要について図9で説明する。図9は、優先度決定処理の概要を説明するためのフローチャート図である。図9に示す優先度決定部42による優先度決定処理では、優先部抽出部421によって優先部抽出処理が行われ(ステップS21)、関連I/F抽出部423による関連I/F抽出処理が行われる(ステップS22)。
【0069】
優先部抽出処理(ステップS21)において、影響の多いFFを抽出する処理を行った場合、出力カウントリスト36aが記憶部130に出力される。
【0070】
そして、関連I/F抽出処理(ステップS22)によって、抽出されたFFの関連I/F(外部入力端子及びユーザI/F8fのFF)に対する優先度を一覧にした優先度表39aが記憶部130に出力され記憶される。優先度表39aは、抽出されたFFの後段への影響度を基準とした関連I/Fの優先順位を示す(影響度基準)。優先度を決定する際には、関連I/F毎に予め設定しておいた重み付け表22を参照して、関連I/Fに対して重み付けをして優先度を決定してもよい。
【0071】
優先部抽出処理(ステップS21)において、動かしにくいFFを抽出する処理を行った場合、入力カウントリスト36bが記憶部130に出力される。
【0072】
そして、関連I/F抽出処理(ステップS22)によって、抽出されたFFの関連I/F(外部入力端子及びユーザI/F8fのFF)に対する優先度を一覧にした優先度表39bが記憶部130に出力され記憶される。優先度表39bは、抽出されたFFの前段からの入力を基準とした関連I/Fの優先順位を示す(動かしにくさ基準)。優先度を決定する際には、関連I/F毎に予め設定しておいた重み付け表22を参照して、関連I/Fに対して重み付けをして優先度を決定してもよい。
【0073】
優先部抽出処理(ステップS21)において、RTL記述データ32とレジスタマップ定義データ21とに基づいて、FFの経路情報を抽出する処理を行った場合、入力経路リスト37が記憶部130に出力される。レジスタマップ定義データ21は、検証者が予め作成したレジスタマップの定義データ、又は、予めCPUインターフェース操作の解析で自動検出して作成したレジスタマップの定義データである。
【0074】
そして、関連I/F抽出処理(ステップS22)によって、抽出されたFFの関連I/F(外部入力端子及びユーザI/F8fのFF)に対する優先度を一覧にした優先度表39cが記憶部130に出力され記憶される。優先度表39cは、変更されたFFを基準とした関連I/Fの優先順位を示す(変更箇所基準)。優先度を決定する際には、関連I/F毎に予め設定しておいた重み付け表22を参照して、関連I/Fに対して重み付けをして優先度を決定してもよい。
【0075】
優先部抽出部421による優先部抽出処理について説明する。図10は、優先部抽出処理を説明するためのフローチャート図である。図10において、優先部抽出部421は、影響の多いFFを抽出する処理と、動かしにくいFFを抽出する処理と、及び、FFの経路情報を抽出する処理とを有する。
【0076】
優先部抽出部421は、RTL記述データ32からFF(変数、入出力)を検出(ステップS31)、“output”とモジュール内の変数とを探す(ステップS32)。“output”、“input”、“reg”、“wire”などの変数定義から変数名を取得する。また、優先部抽出部421は、ステップS32で取得した変数名が右辺に存在する、信号値を生成する演算式をRTL記述データ32から探す(ステップS33)。
【0077】
優先部抽出部421は、ステップS31、S32、及びS33による結果を示す出力表23を記憶部130に作成する(ステップS34)。
【0078】
そして、優先部抽出部421は、出力表23から行き先の信号数をリストアップする(ステップS35a)。FF毎にFFが後段に与える影響度をFFの出力信号から分岐した信号数でカウントした出力カウントリスト36aが、記憶部130に記憶される。出力カウントリスト36aは、FFを影響の多い順で示す。
【0079】
或いは、優先部抽出部421は、出力表23から各変数への入力信号数をリストアップする(ステップS35b)。FF毎にFFの駆動条件の複雑度をFFへ入力される入力信号数でカウントした入力カウントリスト36bが、記憶部130に記憶される。入力カウントリスト36bは、FFを動かしにくい順で示す。
【0080】
また、優先部抽出部421は、出力表23から信号経路(ツリー)を生成する(ステップS35c)。入力経路リスト37が、記憶部130に記憶される。入力経路リスト37は、FFへの入力経路をツリー構造で示す。
【0081】
上述した図10のフローチャートにおいて、ステップS31、S32、S33、S34、及びS35aの処理が影響の多いFFを抽出する処理に相当し、ステップS31、S32、S33、S34、及びS35bの処理が動かしにくいFFを抽出する処理に相当し、ステップS31、S32、S33、S34、及びS35cの処理がFFの経路情報を抽出する処理に相当する。
【0082】
上述した優先度決定処理の一例を図11及び図12で説明する。図11は、DUTの回路構成に対応付けられる変数名の例を示す図である。図12は、DUTのRTL記述例を示す図である。図12では、Verilog HDLによって記述したRTL記述例が示されるが、この例によって記述言語を限定するものではない。
【0083】
図10のステップS31の処理では、RTL記述データ32(図12)からFF情報、及び、FF以外の情報を取得する。図11のDUT8の回路構成例では、config、txenable、txstart、txmode、及びreg_1〜reg_12の信号をFFとして取得する。
【0084】
図10のステップS32の処理では、RTL記述データ32(図12)からoutput、input、reg、wireで宣言された信号(変数)を探す。図11のDUT8の回路構成例では、RTL記述データ32(図12)によって信号又は変数として宣言されたO_STATUS、I_SPEED、I_INIT、config、txenable、txstart、txmode、reg_1〜reg_12、及びA〜Kを検出する。
【0085】
図10のステップS33の処理では、RTL記述データ32(図12)からステップS32で取得した変数が右辺に使用されている、信号値を生成する演算式を探す。図12に例示されるRTL記述データ32では、記述201による"cpu_data[3]<=txenable"、記述202による"reg_1<=A"、記述203による"B=txenable&txstart"、記述203による"reg_2<=B"等が検出される。
【0086】
図10のステップS34の処理では、ステップS32で検出した全信号に対して、ステップS31で検出したFF情報及び非FF情報を区別する。FF情報である場合は、出力表23において、FFフラグをセットする。また、ステップS33で検出した信号値を生成する演算式に現れる全信号を取得する。
【0087】
ステップS32で検出した全信号と、ステップS33で検出した全信号とをリストアップして、出力表23を記憶部130に作成する。
【0088】
ここで、出力表23のデータ例を参照し説明する。図13は、出力表のデータ例を示す図である。図13において、出力表23は、FFフラグ、信号、入力信号、FF置き換え、重複整理後の信号等の情報を有する。
【0089】
優先部抽出部421は、作成した出力表23において、「入力信号」欄に示されている信号が非FF信号(wire等)であった場合、その非FF信号に対する入力信号に基づいて、FFである信号だけで構成されるように置き換えを行う。置き換えた内容は、「FF置き換え」欄に設定される。
【0090】
入力信号が非FF信号(wire等)であるかどうかの判断を行う。対象とする信号はいずれかのレコードの「信号」欄に設定されている。従って、出力表23の全レコードにおいて、「FFフラグ」欄の有無で判断すればよい。置き換えは、対象とする検索した信号をその信号の「入力信号」に置き換えることで行う。その置き換え結果に対しても、非FF信号があれば同様の検索及び置き換えを実施することにより、全レコードの「入力信号」欄は、FF信号又は外部入力信号で示されることになる。
【0091】
図13に示す出力表23では、入力信号が「信号」自身である場合は「入力信号」欄から除外されている。「置き換え」欄の"―"は、「入力信号」欄の信号に対して、非FF信号(RTL記述データ32(図12)によってwireで定義される信号)からFF信号への置き換えを行わなかったことを示す。また、「重複整理後の信号」欄では、「FF置き換え」欄の信号に対して、重複する信号を除外した結果が示される。重複する信号が無かった場合、"―"で示される。
【0092】
出力表23において、Top.Aは非FF信号であるので、「信号」欄にTop.Aが示されるレコードの「入力信号」欄の値「Top.I_SPEED, Top.regblok.config」を「入力信号」欄にTop.Aが設定されているレコードの「FF置き換え」欄に設定することによって、FF置き換えが行われる。他レコードについても同様に非FF信号が「入力信号」欄に設定されている場合には、同様に、FF置き換えが行われる。
【0093】
FFを影響の多い順にリストアップするステップS35aでの処理について説明する。図14は、出力カウントリストのデータ例を示す図である。図14に示す出力カウントリスト36aは、FFフラグ、信号、入力信号、「入力信号」への出現回数等の項目を有する。
【0094】
出力カウントリスト36aは、図13に示す出力表23の「FFフラグ」欄がFFを示すレコードにおいて、「信号」欄の信号(以下、FF信号と言う。)が「入力信号」欄に出現する回数をカウントし、カウント結果を「「入力信号」への出現回数」欄に設定したリストである。
【0095】
「FFフラグ」欄にFFが設定されたレコードにおいて、「入力信号」欄にTop.reg_3が出現する回数をカウントしてカウント結果「2」を得た場合、「信号」欄にTop.reg_3が設定されているレコードの「「入力信号」の出現回数」にカウント結果「2」を設定する。
【0096】
また、「入力信号」欄にTop.reg_4が出現する回数をカウントしてカウント結果「4」を得た場合、「信号」欄にTop.reg_4が設定されているレコードの「「入力信号」の出現回数」にカウント結果「4」を設定する。各レコードについて同様の処理が行われ、「「入力信号」の出現回数」欄に値が設定される。
【0097】
出力カウントリスト36aを参照することにより、RTL記述データ32で記述されるFF夫々について、RTL記述データ32内の他のFFに対するFFの影響の大きさの指標を得ることができる。
【0098】
FFを動かしにくい順にリストアップするステップS35bでの処理について説明する。図15は、入力カウントリストのデータ例を示す図である。図15に示す入力カウントリスト36bは、FFフラグ、信号、入力信号、「入力信号」の信号数等の項目を有する。
【0099】
入力カウントリスト36bは、図13に示す出力表23の「FFフラグ」欄がFFを示すレコードにおいて、「入力信号」欄に設定された信号数をカウントし、カウント結果を「「入力信号」への信号数」欄に設定したリストである。
【0100】
「FFフラグ」欄にFFが設定されたレコードにおいて、「信号」欄にTop.reg_1が設定されるレコードでは、「入力信号」欄に設定された信号数をカウントした結果「2」を得ると、「「入力信号」の信号数」にカウント結果「2」を設定する。各レコードについて同様の処理が行われ、「「入力信号」の信号数」欄に値が設定される。
【0101】
出力カウントリスト36bを参照することにより、RTL記述データ32で記述されるFF夫々について、そのFFをRTL記述データ32内の他のFFから操作する場合の操作のし難さの指標を得ることができる。
【0102】
FFの経路情報をリストアップするステップS35bでの処理について説明する。図16は、入力経路リストのデータ例を示す図である。図16に示す入力経路リスト37、FFフラグ、信号、入力信号、関連I/Fからの経路等の項目を有する。
【0103】
入力経路リスト37図16に示す出力表23の「FFフラグ」欄がFFを示すレコードにおいて、「入力信号」欄にFF信号が示されているレコードaを検索する。レコードaが検索された場合、そのレコードaの「関連I/Fからの経路」欄入力経路に従い入力信号をリストアップする。
【0104】
「関連I/Fからの経路」欄にリストアップされた各入力信号について、「FFフラグ」欄がFFを示すレコードbの「信号」欄から検索する。そして、検索されたレコードbの「入力信号」欄に示されているFF信号を、先のレコードaの「関連I/Fからの経路」欄において、経路順になるように設定する。
【0105】
上述した処理を外部入力端子及びユーザI/F8fのFFを起点とする、入力信号の経路(ツリー)が「関連I/Fからの経路」欄にリストアップされるまで繰り返す。レジスタマップ定義データ21からユーザI/F8fのFFの情報を取得しておく。ユーザI/F8fのFFに辿り着いた場合に、この経路を辿る繰り返し処理を終了する。
【0106】
上述のような処理によって得られた入力経路リスト37参照することにより、RTL記述データ32の一部に修正が加えられた場合、修正されたFFに影響を与える外部入力端子及びユーザI/F8fのFF等の修正FFに係る関連I/Fの情報を得ることができる。
【0107】
以下に、関連I/F抽出部423による関連I/F抽出処理について説明する。図17は、関連I/F抽出処理を説明するためのフローチャート図である。図17では、影響度に基づいて優先度を決定する場合、動かしにくさに基づいて優先度を決定する場合、変更箇所に基づいて優先度を決定する場合の各々について説明する。図18は、関連I/F対応表のデータ例を示す図である。
【0108】
影響度を基準として優先度を決定する場合、関連I/F抽出部423は、出力カウントリスト36aに基づいて関連I/F対応表38aを記憶部130に作成する(ステップS41)。
【0109】
関連I/F対応表38aは、図18に例示されるように、FFフラグ、信号、「入力信号」への出現回数、関連I/F、関連I/Fの点数、累積点数等の項目を有する。出力カウントリスト36aに存在する「FFフラグ」欄及び「「入力信号」への出現回数」欄の値が、関連I/F対応表38aの同一項目に設定される。
【0110】
関連I/F抽出部423は、各FF信号を動かす関連I/Fの情報は、入力経路リスト37の「関連I/Fからの経路」欄から取得して、関連I/F対応表38aの「関連I/F」欄にリストアップする。
【0111】
次に、関連I/F抽出部423は、関連I/Fを点数付けする(ステップS42)。関連I/F抽出部423は、関連I/F対応表38aのFFの「「入力信号」への出現回数」欄の値を、「関連I/F」欄にリストアップされている各信号に対応付けて「関連I/Fの点数」欄に設定する。
【0112】
「「入力信号」への出現回数」欄で「n」回のFFについて、その「関連I/F」欄にリストアップされている各信号に対応させて「n」点を「関連I/Fの点数」欄に設定する。
【0113】
つまり、「信号」欄にTop.reg_1が設定されているレコードでは、「「関連I/F」欄にリストアップされているTop.I_SPEED、及びTop.regblk.configの夫々に対応させて、「入力信号」への出現回数」欄で示される「1」回が「関連I/Fの点数」欄に設定される。
【0114】
また、「信号」欄にTop.reg_2が設定されているレコードでは、「関連I/F」欄にリストアップされているTop.regblk.txenable、及びTop.regblk.txstartの夫々に対応させて、「「入力信号」への出現回数」欄で示される「1」回が「関連I/Fの点数」欄に設定される。
【0115】
同様に、「信号」欄にTop.reg_3が設定されているレコードには、信号毎に「関連I/F」欄に「2」が設定され、「信号」欄にTop.reg_4が設定されているレコードには、信号毎に「関連I/F」欄に「4」が設定される。
【0116】
「FFフラグ」欄にFFが設定された複数のレコードにおいて、「関連I/F」欄に現れる信号に対して、関連I/Fの点数を出現順に累積した値が「累積点数」欄に設定される。累積することによって、影響度の高い多数のFFを動かす関連I/Fの合計点が高くなっていく。
【0117】
例えば、「信号」欄にTop.reg_3が設定されているレコードでは、「関連I/F」欄にリストされるTop.regblk.txstartに対応付けられる「関連I/Fの点数」欄の値「2」と、このレコードの前に出現するTop.regblk.txstartに対する「累積点数」欄の値「1」とを加算して、当該レコードの「累積点数」欄に「3」が設定される。
【0118】
更に、「信号」欄にTop.reg_4が設定されているレコードでは、「関連I/F」欄にリストされるTop.regblk.txstartに対応付けられる「関連I/Fの点数」欄の値「4」と、このレコードの前に出現するTop.regblk.txstartに対する「累積点数」欄の値「3」とを加算して、当該レコードの「累積点数」欄に「7」が設定される。
【0119】
従って、Top.regblk.txstartは、Top.reg_2、Top.reg_3、及びTo.reg_4の「関連I/F」欄にリストアップされ、夫々「1」点、「2」点、及び「4」点が「関連I/Fの点数」欄に設定される。最後に「関連I/F」欄にTop.regblk.txstartが出現するレコードでは、「累積点数」欄に「7」が示される。Top.regblk.txstartの合計点は「7」となる。上述したような「累積点数」欄への設定を、「関連I/F」欄に現れる各信号に対して行う。
【0120】
そして、関連I/F抽出部423は、関連I/Fの累積点数でソートする(ステップS43)。関連I/F対応表38aの全レコードにおいて、「関連I/F」欄に出現する同じ信号毎に最大の累積点数を取得して、その最大の累積点数で信号をソートする。
【0121】
ソート結果をそのまま優先順位とすると、「関連I/F」欄への出現回数は多いが、検証項目の優先度検討にさほど意味がない関連I/Fの信号(以下、単に「関連I/F」と言う。)であっても優先度が高くなってしまう場合がある。優先的に検証する項目ではないSCANテスト信号、リセット信号などが相当する。このような場合を考慮して、関連I/F毎に重み付けを行ってもよい。
【0122】
関連I/F抽出部423は、関連I/F重み付け表22を参照して、関連I/Fの累積点数を調整する(ステップS45)。関連I/F抽出部423は、関連I/F重み付け表22を参照して、検証者又は設計者によって予め設定された関連I/F毎の重み付けを取得して、関連I/Fの累積点数に乗算して調整値を取得する。
【0123】
関連I/F抽出部423によって、図19に示されるような影響度を基準とした優先度表39aが記憶部130に作成される。図19は、影響度を基準とした場合の優先度表のデータ例を示す図である。図19において、優先度表39aは、関連I/F、累積点数、重み付け、調整値等の項目を有する。
【0124】
優先度表39aでは、関連I/F対応表38aの全レコードにおいて「関連I/F」欄に出現する信号別にレコードが作成される。優先度表39aにおいて、「関連I/F」欄には、関連I/Fとして特定される信号が設定され、「累積点数」欄には、最大の累積点数が設定される。
【0125】
累積点数に基づいた優先度は、Top.regblk.txstart、Top.regblk.txmode、Top.I_INT、Top.regblk.txenable、Top.regblk.config、Top.I_SPEED、・・・の順となる。
【0126】
一方、重み付け後では、Top.I_INTとTop.regblk.txenableとが入れ替わり、Top.regblk.txstart、Top.regblk.txmode、Top.regblk.txenable、Top.I_INT、Top.regblk.config、Top.I_SPEED、・・・の順となる。
【0127】
このようにして優先度表39aが作成され、表示装置15に表示される。検証者又は設計者は、RTL記述データ32に基づいて影響度の大きさの指標が関連I/Fに対して示されるため、効率的に検証項目の優先順位を決定することができる。
【0128】
検証者又は設計者は、マニュアルで作成した検証項目について各検証項目に用いられる外部入力端子及びユーザI/F8fのFFとしての関連I/Fの点数を確かめる際に、影響度の大きさを優先する検証項目の判断基準の一つとして利用することができる。
【0129】
次に、動かしにくさを基準として優先度を決定する場合、関連I/F抽出部423は、入力カウントリスト36bに基づいて関連I/F対応表38bを記憶部130に作成する(ステップS51)。
【0130】
関連I/F対応表38bは、図20に例示されるように、FFフラグ、信号、「入力信号」の信号数、関連I/F、関連I/Fの点数、累積点数等の項目を有する。入力カウントリスト36bに存在する「FFフラグ」欄及び「「入力信号」の信号数」欄の値が、関連I/F対応表38bの同一項目に設定される。
【0131】
関連I/F抽出部423は、各FF信号を動かす関連I/Fの情報は、入力経路リスト37の「関連I/Fからの経路」から取得して、関連I/F対応表38bの「関連I/F」欄にリストアップする。
【0132】
次に、関連I/F抽出部423は、関連I/Fを点数付けする(ステップS52)。関連I/F抽出部423は、関連I/F対応表38bのFFの「「入力信号」の信号数」欄の値を、「関連I/F」欄にリストアップされている各信号に対応付けて「関連I/Fの点数」欄に設定する。
【0133】
「「入力信号」の信号数」欄で「n」回のFFについて、その「関連I/F」欄にリストアップされている各信号に対応させて「n」点を「関連I/Fの点数」欄に設定する。
【0134】
つまり、「信号」欄にTop.reg_1が設定されているレコードでは、「「関連I/F」欄にリストアップされているTop.I_SPEED、及びTop.regblk.configの夫々に対応させて、「入力信号」の信号数」欄で示される「2」回が「関連I/Fの点数」欄に設定される。
【0135】
また、「信号」欄にTop.reg_2が設定されているレコードでは、「関連I/F」欄にリストアップされているTop.regblk.txenable、及びTop.regblk.txstartの夫々に対応させて、「「入力信号」の信号数」欄で示される「2」回が「関連I/Fの点数」欄に設定される。
【0136】
同様に、「信号」欄にTop.reg_3が設定されているレコードには、信号毎に「関連I/F」欄に「2」が設定され、「信号」欄にTop.reg_4が設定されているレコードには、信号毎に「関連I/F」欄に「3」が設定される。
【0137】
「FFフラグ」欄にFFが設定された複数のレコードにおいて、「関連I/F」欄に現れる信号に対して、関連I/Fの点数を出現順に累積した値が「累積点数」欄に設定される。累積することによって、最も動かしにくいFFに係る関連I/Fの合計点が高くなっていく。
【0138】
例えば、「信号」欄にTop.reg_3が設定されているレコードでは、「関連I/F」欄にリストされるTop.regblk.txstartに対応付けられる「関連I/Fの点数」欄の値「2」と、このレコードの前に出現するTop.regblk.txstartに対する「累積点数」欄の値「2」とを加算して、当該レコードの「累積点数」欄に「4」が設定される。
【0139】
更に、「信号」欄にTop.reg_4が設定されているレコードでは、「関連I/F」欄にリストされるTop.regblk.txstartに対応付けられる「関連I/Fの点数」欄の値「3」と、このレコードの前に出現するTop.regblk.txstartに対する「累積点数」欄の値「4」とを加算して、当該レコードの「累積点数」欄に「7」が設定される。
【0140】
従って、Top.regblk.txstartは、Top.reg_2、Top.reg_3、及びTo.reg_4の「関連I/F」欄にリストアップされ、夫々「2」点、「4」点、及び「7」点が「関連I/Fの点数」欄に設定される。最後に「関連I/F」欄にTop.regblk.txstartが出現するレコードでは、「累積点数」欄に「7」が示される。Top.regblk.txstartの合計点は「7」となる。上述したような「累積点数」欄への設定を、「関連I/F」欄に現れる各信号に対して行う。
【0141】
そして、関連I/F抽出部423は、関連I/Fの累積点数でソートする(ステップS53)。関連I/F対応表38bの全レコードにおいて、「関連I/F」欄に出現する同じ信号毎に最大の累積点数を取得して、その最大の累積点数で信号をソートする。
【0142】
影響度を基準として優先度を決定する場合と同様の理由により、関連I/F毎に重み付けを行ってもよい。
【0143】
関連I/F抽出部423は、関連I/F重み付け表22を参照して、関連I/Fの累積点数を調整する(ステップS55)。関連I/F抽出部423は、関連I/F重み付け表22を参照して、検証者又は設計者によって予め設定された関連I/F毎の重み付けを取得して、関連I/Fの累積点数に乗算して調整値を取得する。
【0144】
関連I/F抽出部423によって、図21に示されるような動かしにくさを基準とした優先度表39bが記憶部130に作成される。図21は、動かしにくさを基準とした場合の優先度表のデータ例を示す図である。図21において、優先度表39aと同様に、優先度表39bは、関連I/F、累積点数、重み付け、調整値等の項目を有する。
【0145】
優先度表39bでは、関連I/F対応表38bの全レコードにおいて「関連I/F」欄に出現する信号別にレコードが作成される。優先度表39bにおいて、「関連I/F」欄には、関連I/Fとして特定される信号が設定され、「累積点数」欄には、最大の累積点数が設定される。
【0146】
累積点数に基づいた優先度は、Top.regblk.txstart、Top.regblk.txmode、Top.regblk.config、Top.I_INT、Top.regblk.txenable、Top.I_SPEED、・・・の順となる。
【0147】
一方、重み付け後では、Top.regblk.configがTop.regblk.txmodeより低い優先度となり、Top.regblk.txstart、Top.regblk.txenable、Top.regblk.txmode、Top.I_INT、Top.regblk.config、Top.I_SPEED、・・・の順となる。
【0148】
このようにして優先度表39が作成され、表示装置15に表示されることによって、検証者又は設計者は、RTL記述データ32に基づいて動かしにくさの指標が関連I/Fに対して示されるため、効率的に検証項目の優先順位を決定することができる。
【0149】
検証者又は設計者は、マニュアルで作成した検証項目について各検証項目に用いられる外部入力端子及びユーザI/F8fのFFとしての関連I/Fの点数を確かめる際に、動かしにくさのを優先する検証項目の判断基準の一つとして利用することができる。
【0150】
次に、変更箇所を基準として優先度を決定する場合、関連I/F抽出部423は、入力経路リスト37に基づいてFF毎の入力経路をツリー構造で表した入力経路ツリー情報37−1を記憶部130に作成する(ステップS61)。
【0151】
入力経路ツリー情報37−1は、図22に例示されるように、FFフラグ、信号、入力信号(1段前FF)、2段前FF、3段前等の項目を有する。入力経路リスト37に存在する「FFフラグ」欄及び「信号」欄の値が、入力経路ツリー情報37−1の同一項目に設定される。
【0152】
関連I/F抽出部423は、各FF信号を動かす1段前の入力信号の情報を、入力経路リスト37の「入力信号」欄から取得して、入力経路ツリー情報37−1の「入力信号(1段前FF)」欄に設定する。
【0153】
また、関連I/F抽出部423は、入力経路リスト37の「関連I/Fからの経路」欄の値に従って、「2段前FF」欄に「入力信号(1段前FF)」欄に設定した信号への入力信号を設定し、「3段前」欄に「2段前FF」欄に設定した信号への入力信号を設定する。
【0154】
信号経路の別の設定方法として、前段信号へのリンクを設定することでも良い。つまり、Top.reg_3に対する入力にTop.reg_2があるが、入力経路ツリー情報37−1においてTop.reg_2が設定されている「信号」欄へリンクするようにしても良い。
【0155】
RTL記述データ32の論理を修正した場合、入力経路ツリー情報37−1を再度作成する。再度作成された入力経路ツリー情報37−1と前回作成した前回入力経路ツリー情報37−2とを比較することにより、RTL記述データ32内の修正された箇所、及び、その修正論理を駆動する外部入力端子又はユーザI/F8fのFFである関連I/Fの情報も取得することができる。
【0156】
例えば、論理修正後の入力経路ツリー情報37−1と前回入力経路ツリー情報37−2との比較により、この表のTop.reg_2に違いが現れた場合、それを駆動するためにはTop.regblk.txenable及びTop.regblk.txstartのFFを操作すればよいことが判る。
【0157】
次に、本実施の形態と関連技術との比較を、一例を用いて説明する。図11のDUT8の回路構成を用いて、RTL記述データ32を用いたDUT8内部のFFの影響度を基準として検証項目の優先順位を決める場合で説明する。
【0158】
関連技術では、回路の仕様及び利用方法に基づいて項目の抽出を行う。具体的には、レジスタマップ及び外部端子の記述に基づいて、各々へ与える信号の値とそれを与えた場合に期待される動作が抽出される。
【0159】
例えば、仕様書31の回路図における各レジスタフィールドが以下のように定義されているとする。
config :(Read/Write) データパケットの形式を選択するFFであることを示す
txenable:(Read Only) データの送信が可能な状態にあることを示す
txstart :(Write Only) 1セットによりデータ送信を開始する
tx_mode :(Read/Write) 送信モードか受信モードかを選択する(1:送信,0:受信)
また、通常の手順として、以下のようなフローが決められている。
【0160】
(C1)tx_modeで送信を選択し、
(C2)config で送りたいデータパケットの種類を選択し、
(C3)txenable を確認しながら送信可能になるのを待ち、
(C4)データセット後 txstart 書き込みで送信を開始する。
この時、従来の検証項目の優先順位としては、設計者等の意見も踏まえて、以下のようになったとする。
【0161】
(D1)フローに従った正常な使い方で期待通りの動作をするかテストし、
(D2)configや、データに間違った値を与えてエラーを正しく検出するかテストし、
(D3)受信中にtxstart書き込みするなど間違った操作でエラーを正しく検出するかテストし、
(D4)これらを送信/受信単独で各々テストして、期待通りの動作を確認したのち、
送信と受信の通信動作中に、本来は許可されていないtx_modeをダイナミックに切り替えるなどのイリーガル試験を行い、コーナーケースをテストする。
【0162】
上述したような検証方法を用いると、reg_4の生成回路のtx_modeの使い方で起こるような致命的なバグがある場合、(D4)まで検証が進まないと検出されず、かつ、reg_4は多数の後段論理に影響を与えているため、修正により様々な影響を与える場合がある。
【0163】
一方、本実施の形態を適用すると、reg_4が検出される以前に「多段の行き先を持つ影響の大きいFF」であることを把握しておくことができ、かつ、reg_4はtx_modeによって動作されるFFであることも判る。言い換えると、tx_modeが影響度の大きいFFを駆動させるFFであることが判る。
【0164】
そのため、txmodeダイナミック切り替えによるイリーガル試験は、上記(D1)の直後くらいの検証の初期にテストしておくことが望ましいと判断でき、reg_4の生成回路にある致命的なバグを検証の初期段階で検出可能なように検証項目の優先順位を決定することができる。
【0165】
図23は、本実施の形態と関連技術との比較を示すグラフ図である。図23では、検証経過に応じたバグ検出累計を示すグラフが示され、縦軸にバグ検出累計を示し、横軸に検証項目実行数を示す。検証が進む程、検証項目の実行数が累積され、実行数に応じたバグの検出累計を例示している。
【0166】
関連技術91では、検証初期では緩やかにバグが検出され、検証後半でより多くのバグが検出されている様子を示している。影響の大きいバグに関わる検証項目が、検証後半に実施されることもある。
【0167】
バグが検出された場合、仕様書31又はRTL記述データ32の修正作業の期間が必要になる他、バグ検出時までに実施済みの検証項目の検証を再度実施する必要があるため、影響の大きいバグの検出が検証作業の後半になればなるほど、検証全体のスケジュールへの影響が大きくなってしまうという問題がある。検証作業の後半にバグが検出されると設計部門において、バグ対応のスケジュールが困難となり、検証作業が滞ってしまう場合がある。
【0168】
更に、検証を再度実施する際、RTL記述データ32の修正が影響を及ぼす周辺論理がどの検証項目に対応しているのかを示す指標がないため、全項目をやり直さなくてはならず、検証全体のスケジュールへ影響を与えてしまうこともある。
【0169】
一方、本実施の形態92では、検証項目の実行実績が少ない検証前半においてバグが多く検出されている。影響の大きいバグに係る検証項目を検証前半に行なうことで、DUT8の不具合を検証前半で洗い出すことができるため、DUT8に修正があった場合であっても、後戻りする検証項目の数を少なくすることができる。
【0170】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【0171】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
検証対象回路の動作を記述した記述データを記憶した記憶部と、
前記記憶部の前記記述データから得られる結線情報に基づいて、前記検証対象回路内の論理毎の入出力に関する接続関係を導出して、導出した前記接続関係に基づいて前記論理を検証する第1の優先度を決定し、前記結線情報に基づいて前記論理への入力に関連する外部とのインターフェースである関連I/Fを抽出し、前記第1の優先度に基づき前記関連I/Fを検証する第2の優先度を決定する優先度決定部と、
を有することを特徴とする検証項目抽出装置。
(付記2)
前記優先度決定部は、
前記記述データから前記論理毎に前記論理へ入力する入力信号と前記入力信号の数、及び、前記論理の出力先となる論理と前記出力先の数とを抽出して接続数リストを前記記憶部に作成する優先部抽出部を有することを特徴とする付記1記載の検証項目抽出装置。
(付記3)
前記優先度決定部は、
前記記憶部から前記接続数リストを参照して、前記論理毎に、当該論理の出力の後段1段目に接続されている前記論理の数をカウントし、カウント数に基づいて前記第1の優先度を決定することを特徴とする付記2記載の検証項目抽出装置。
(付記4)
前記優先度決定部は、
前記記憶部から前記接続数リストを参照して、前記論理の入力で組み合わされている信号の数をカウントし、カウント数に基づいて前記第1の優先度を決定することを特徴とする付記2記載の検証項目抽出装置。
(付記5)
前記優先度決定部は、
前記記憶部から前記接続数リストを参照して、前記各論理への信号の入力経路を抽出し、前記記述データの修正前後の該入力経路を比較することによって、修正された前記論理と、前記修正された論理を駆動する前記関連I/Fに含まれる入力信号及び論理の一覧を作成することを特徴とする付記2記載の検証項目抽出装置。
(付記6)
前記優先度決定部は、
前記記憶部の前記記述データから得た前記結線情報に基づいて、前記記述データによって記述される前記各論理について、前記論理の入力側の接続をバックトレースして、前記論理に関連する前記関連I/Fを抽出し、抽出された前記関連I/Fが駆動する前記論理の前記第1の優先度の値を累積した値に基づき前記第2の優先度を決定することを特徴とする付記2乃至5のいずれか一項記載の検証項目抽出装置。
(付記7)
コンピュータによって実行される検証項目抽出方法であって、
前記記憶部に記憶された検証対象回路の動作を記述した記述データから結線情報を取得し、
前記検証対象回路内の論理毎の入力および出力に関する接続関係を導出し、
導出した前記接続関係に基づいて前記論理を検証する第1の優先度を決定し、前記結線情報に基づいて前記論理への入力に関連する外部とのインターフェースである関連I/Fを抽出し、前記第1の優先度に基づき前記関連I/Fを検証する第2の優先度を決定する
ことを特徴とする検証項目抽出方法。
(付記8)
前記記憶部に記憶された検証対象回路の動作を記述した記述データから結線情報を取得し、
前記検証対象回路内の論理毎の入力および出力に関する接続関係を導出し、
導出した前記接続関係に基づいて前記論理を検証する第1の優先度を決定し、前記結線情報に基づいて前記論理への入力に関連する外部とのインターフェースである関連I/Fを抽出し、前記第1の優先度に基づき前記関連I/Fを検証する第2の優先度を決定する
処理をコンピュータに実行させる検証項目抽出プログラム。
【符号の説明】
【0172】
8 DUT
9 CPU
11 CPU
12 主記憶装置
13 補助記憶装置
14 入力装置
15 表示装置
16 出力装置
17 通信I/F
18 ドライブ
19 記憶媒体
23 出力表
31 仕様書
32 RTL記述データ
33 検証項目データ
34 優先順位データ
35 検証シナリオデータ
36 接続数リスト
36a 出力カウントリスト
36b 入力カウントリスト
36c 入力経路リスト
37 入力経路リスト
37−1 入力経路ツリー情報
37−2 前回入力経路ツリー情報
38 関連I/F対応表
39 優先度表
39a 優先度表(影響度基準)
39b 優先度表(動かしにくさ基準)
39c 優先度表(変更箇所基準)
41 検証項目抽出部
42 優先度決定部
421 優先部抽出部
423 関連I/F抽出部
43 優先順位設定部
44 シナリオ策定部
45 検証部
100 論理検証装置
102 検証項目抽出装置
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23