(57)【要約】【課題】乱数要素を持たせた論理検証において、検証論理にあるフリップフロップのうち全く動作しないものや、動作回数が著しく低いものがある。そして、検証論理に含まれるフリップフロップ全てがあらゆる条件下で動作するまで検証を行うと検証期間の増大する。【解決手段】検証論理に入力する命令およびデータのパターンを乱数を用いて生成するための制約条件を定義したシナリオファイルを複数用意し、複数のファイルから実行対象とするファイルをランダムに選び、検証実行時にカバレッジ情報を出力し、蓄積したカバレッジ情報を用いて低動作回数フリップフロップを抽出し、抽出したフリップフロップを動作させたファイルが多く実行されるように動作回数に応じて実行確率を算出する処理を行うことで、抽出したフリップフロップを動作させたファイルの実行回数を上げ、検証論理にある全フリップフロップの動作回数を平均的に上げ、効率がよい論理検証を可能にする。【選択図】  図１
2011076126.tif 000002
【特許請求の範囲】
【請求項１】
ＬＳＩの論理を検証する論理検証システムであって、
検証論理に入力する命令およびデータのパターン列を乱数を用いて生成するための制約条件を記述した複数のシナリオファイルの名称をデータテーブルに登録するシナリオ管理部と、前記各シナリオファイルごとに、論理シミュレーションを行う確率をデータテーブルに登録するシナリオ実行確率管理部と、前記登録した複数のシナリオファイルから論理シミュレーションを行う際に使用するシナリオファイルを前記シナリオ実行確率管理部がデータテーブルに登録した確率の値で、選択に重み付けしつつ選択を行うシナリオ実行順序決定部と、前記選択したシナリオファイルを読み込み、制約条件からデータパターン列に変換し、論理シミュレーションに送出するテストパターン送出部と、論理シミュレーションを実行し、得られたカバレッジ情報を収集し、カバレッジ情報から低動作回数フリップフロップを抽出し、低動作回数フリップフロップを動作させたシナリオファイルが多く実行されるように低動作回数フリップフロップの動作頻度に応じて実行確率を算出する処理を行うカバレッジ管理部と、を有することを特徴とした論理検証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアを検証する論理検証システムに関する。  
【背景技術】
【０００２】
ＬＳＩの論理検証については、乱数を用いて多様な検証パターンを自動的に生成する手法として、特開平６−２３１０００号に開示されている方法がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−２３１０００号
【特許文献２】特開２００７−２８０２６８号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１の検証方法は、論理シミュレーションに乱数要素を持たせることによって、人手で作成するには時間がかかりすぎ、論理シミュレーションの実行にも長い時間を要するような検証パターンを行うことができる。
【０００５】
その一方で、論理シミュレーションの終了条件を任意の実行回数にすると、たとえば、乱数を用いたシミュレーションでリソースが一杯になっていることを示すフリップフロップを動作させることは大変なように、検証対象論理に存在するフリップフロップのうちまったく動作していないものが出てしまう場合がある。また、特許文献２では、活性率の低いフリップフロップを活性化させるシナリオを自動生成させることによって、効率の良い論理検証方法を提案している。しかしながら、上記手法は、ある特定の動作条件でフリップフロップを動作させており、さまざまな動作条件でフリップフロップを動作させていないため、検証したい動作条件になっていない場合がある。
【０００６】
そして、上記方法で論理検証対象論理に含まれるフリップフロップ全てについてすべての条件下で動作するまで検証を行うと、多くの論理シミュレーション時間が必要となり、その結果論理検証期間の増大化に繋がっている。
【課題を解決するための手段】
【０００７】
本発明は、ハードウェアを検証する論理検証に関して、検証対象論理に入力する命令およびデータのパターンを乱数を用いて生成するための制約条件を定義したシナリオファイルを複数用意し、複数のシナリオファイルから実行対象とするシナリオファイルをランダムに選択し、論理検証実行時にカバレッジ情報を出力し、蓄積したカバレッジ情報を用いて保持状態の遷移がほとんどない低動作回数フリップフロップを抽出し、低動作回数フリップフロップを動作させたシナリオファイルが多く実行されるように低動作回数フリップフロップの動作頻度に応じて実行確率を算出する処理を行うことによって、低動作回数フリップフロップを動作させたシナリオファイルの実行回数を上げ、論理回路に存在する全フリップフロップの動作回数を平均的に上げることができ、効率がよい論理検証を可能にする。
【発明の効果】
【０００８】
本発明によれば、ハードウェアを検証する論理検証に関して、複数のシナリオファイルから実行対象シナリオファイルを選択し、論理シミュレーションを行い、カバレッジ情報から低動作回数フリップフロップを動作させるシナリオファイルを、次回以降の実行対象シナリオファイル選択の際に、選ばれる確率をあげることで、フリップフロップの動作回数を向上させることができ、それによって論理回路に存在する全フリップフロップの動作回数を平均的に上げることで、論理検証期間の短縮を実現する。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態を表すブロック図である。
【図２】本発明の一実施形態の処理フローを示す図である。
【図３】本発明の一実施形態のシナリオ情報テーブルを示す図である。
【図４】本発明の一実施形態の実行対象シナリオテーブルを示す図である。
【図５】本発明の一実施形態のカバレッジ情報テーブルを示す図である。
【発明を実施するための形態】
【００１０】
図１は、本発明の一実施形態の例を表すブロック図である。
【００１１】
本発明の一実施形態では、論理検証実行システム１０３は、コンピュータ１０２の中に存在し、シナリオ管理部１０４と、シナリオ実行確率管理部１０５と、シナリオ実行順序決定部１０６と、テストパターン送出部１０７と、カバレッジ管理部１０８から構成される。
【００１２】
シナリオ管理部１０４は、検証対象論理に入力する命令およびデータのパターンを乱数を用いて生成するための制約条件を定義したシナリオファイル１０１のファイル名称を、シナリオ情報テーブル１０９に登録する。
【００１３】
シナリオ実行確率管理部１０５は、シナリオファイル１０１の情報についてシナリオ情報テーブル１０９から取得し、各シナリオに対する実行確率を登録する。
【００１４】
シナリオ実行順序決定部１０６は、シナリオ情報テーブル１０９に存在するシナリオから、シナリオ連続送出数１１７を満たすシナリオ数だけ、実行対象とするシナリオをランダムに選択し、実行対象シナリオテーブル１１０にシナリオ番号を追加する。
【００１５】
テストパターン送出部１０７は、実行対象シナリオテーブル１１０から実行対象とするシナリオ番号を取得し、シナリオ情報テーブル１０９と照合を行って、一致したシナリオファイルを読み込み、ファイルに記述されている制約条件からデータパターン列に変換し、論理シミュレータ１１３に送信し、検証対象論理１１２について論理シミュレーションを行い、テスト結果１１４およびカバレッジ出力１１５を出力する。
【００１６】
カバレッジ管理部１０８は、カバレッジ出力１１５を読み込み、シナリオごとにカバレッジ情報テーブル１１１を作成、登録する。その際、たとえば論理の来歴管理などを埋め込むために固定値にしているフリップフロップなどの動作回数が上がらないことがあらかじめわかっているものをカバレッジ対象外フリップフロップ１１６に記載して、、カバレッジ情報テーブル１１１に登録しないようにする。また、シナリオごとのカバレッジ情報テーブル番号をシナリオ情報テーブル１０９に登録する。その後、実行シナリオ数がシナリオ連続送出数１１７になったら、カバレッジ情報テーブル１１１から最低動作回数や動作回数順位の最下位から数個などの低動作回数フリップフロップの判定条件を記述した低動作回数フリップフロップ判定条件１１８を満たす低動作回数フリップフロップを抽出し、該当フリップフロップを動作させたシナリオをカバレッジ情報テーブル１１１から取得し、シナリオ実行確率管理部１０５に伝達し、シナリオ情報テーブル１０９にある実行確率を上げる。カバレッジ情報テーブル１１１から低動作回数フリップフロップ判定条件１１８を満たす低動作回数フリップフロップが存在しなければ、論理検証実行を終了する。
【００１７】
次に、シナリオ情報テーブル１０９について、図３を用いて説明する。シナリオ情報テーブル１０９は、シナリオ管理部１０４がシナリオファイル１０１の名称を登録するシナリオファイル名称３０１、シナリオ実行確率管理部１０５がシナリオの実行確率を係数として登録あるいは修正するシナリオ実行確率係数３０２、カバレッジ管理部１０８がカバレッジ情報テーブル１１１のテーブル番号を登録するカバレッジ情報テーブル番号３０３からなっている。
【００１８】
次に、実行対象シナリオテーブル１１０について、図４を用いて説明する。実行対象シナリオテーブル１１０は、シナリオ実行順序決定部１０６が決定した実行対象シナリオを、シナリオ情報テーブル１０９にあるシナリオ情報テーブル番号４０１を登録し、シナリオ送出フラグ４０２を未送出として登録する。テストパターン送出部１０７でシナリオが送出されたら、シナリオ送出フラグ４０２を送出済みとして更新する。
【００１９】
次に、カバレッジ情報テーブル１１１について、図５を用いて説明する。カバレッジ情報テーブル１１１は、カバレッジ管理部１０８において、検証対象論理１１２に含まれるフリップフロップの名称をフリップフロップ名称５０１として登録する。また、実行したシナリオで動作した回数をフリップフロップごとに数え上げ、動作回数５０２に登録する。このカバレッジ情報テーブルをシナリオごとに作成する。
【００２０】
図２は上記実施例の処理フローである。
【００２１】
最初に、処理２０１ではシナリオ管理部１０４において、シナリオ１０１を論理検証実行システム１０３に入力し、シナリオ情報テーブル１０９にファイル名称を格納する。
【００２２】
次に、処理２０２ではシナリオ実行確率管理部１０５において、入力されたシナリオ１０１に対して実行確率を係数としてシナリオ情報テーブル１０９に設定する。
【００２３】
次に、処理２０３ではシナリオ実行順序決定部１０６において、シナリオ情報テーブル１０９に登録されているシナリオから、シナリオ連続送出数１１７に設定されている数だけシナリオをランダムに選択する。選択したシナリオを実行対象テーブル１１０に登録する。
【００２４】
次に、処理２０４ではテストパターン送出部１０７において、シナリオ実行対象テーブル１１０にシナリオがあるかどうかを判定する。実行対象シナリオに未送出がある場合は処理２０５に行き、シナリオ実行対象テーブル１１０に登録されているシナリオがすべて送出済みになったら、処理２０８に行く。
【００２５】
処理２０５ではテストパターン送出部１０７において、実行対象シナリオテーブル１１０に登録されているシナリオをデータパターンに変換後、順次論理シミュレータ１１３に送出する。
【００２６】
次に、処理２０６では、順次論理シミュレータ１１３と検証対象論理１１２とをあわせて論理シミュレーションを実施し、論理シミュレータは、テスト結果出力１１４とカバレッジ出力１１５を出力する。
【００２７】
次に、処理２０７では、カバレッジ管理部１０８においてカバレッジ出力１１５を取得し、カバレッジ対象外フリップフロップ１１６に登録されていないフリップフロップのカバレッジについて、カバレッジ情報テーブル１１１に登録する。
【００２８】
処理２０８では、カバレッジ管理部１０８においてカバレッジ情報テーブル１１１に低動作回数フリップフロップ判定条件１１８を満たすフリップフロップがあるかどうかを判定する。低動作回数フリップフロップ判定条件１１８を満たすフリップフロップがなくなれば、論理検証を終了する。低動作回数フリップフロップ判定条件１１８を満たすフリップフロップが存在すれば、処理２０９に進む。
【００２９】
次に、処理２０９では、カバレッジ管理部１０８において低動作回数フリップフロップ判定条件１１８を満たすフリップフロップを抽出する。
【００３０】
次に、処理２１０では、カバレッジ管理部１０８において処理２０９で抽出したフリップフロップを動作させたシナリオをシナリオ情報テーブル１０９から抽出する。
【００３１】
次に、処理２１１では、シナリオ実行確率管理部１０５において、処理２１０で抽出したシナリオのシナリオ実行確率係数３０２を変更する。
【００３２】
その後、処理２０３から再度繰り返し処理を行っていく。
【符号の説明】
【００３３】
１０１  シナリオ
１０２  コンピュータ
１０３  論理検証実行システム
１０４  シナリオ管理部
１０５  シナリオ実行確率管理部
１０６  シナリオ実行順序決定部
１０７  テストパターン送出部
１０８  カバレッジ管理部
１０９  シナリオ情報テーブル
１１０  実行対象シナリオテーブル
１１１  カバレッジ情報テーブル
１１２  検証対象論理
１１３  論理シミュレータ
１１４  テスト結果出力
１１５  カバレッジ出力
１１６  カバレッジ対象外フリップフロップ
１１７  シナリオ連続送出数
１１８  低動作回数フリップフロップ判定条件
【図１】
2011076126.tif 000003
【図２】
2011076126.tif 000004
【図３】
2011076126.tif 000005
【図４】
2011076126.tif 000006
【図５】
2011076126.tif 000007