(57)【要約】【課題】既に発行された重複するトランザクションの再発行を防ぐ論理シミュレータ、論理回路検証方法及び論理回路検証プログラムを提供すること。【解決手段】論理シミュレータは、論理回路を検証するためのテストシナリオを制約付きでランダムに生成するテストシナリオ生成部と、前記テストシナリオ生成部で生成されたテストシナリオに基づくトランザクションを前記論理回路に発行するトランザクション発行部と、前記トランザクション発行部から前記論理回路に入力されるトランザクション及び前記論理回路の内部状態を取得するカバレッジ取得部と、前記カバレッジ取得部が取得したトランザクション及び前記論理回路の内部状態を時系列で記憶するカバレッジ記憶部と、前記カバレッジ記録部に記憶されている情報に基づいて、前記テストシナリオ生成部が生成した前記テストシナリオをフィルタリングするフィルタ部とを備える。【選択図】図１
2007280268.tif 000002
【特許請求の範囲】
【請求項１】
論理回路を検証するためのテストシナリオを制約付きでランダムに生成するテストシナリオ生成部と、
前記テストシナリオ生成部で生成されたテストシナリオに基づくトランザクションを前記論理回路に発行するトランザクション発行部と、
前記トランザクション発行部から前記論理回路に入力されるトランザクション及び前記論理回路の内部状態を取得するカバレッジ取得部と、
前記カバレッジ取得部が取得したトランザクション及び前記論理回路の内部状態を時系列で記憶するカバレッジ記憶部と、
前記カバレッジ記録部に記憶されている情報に基づいて、前記テストシナリオ生成部が生成した前記テストシナリオをフィルタリングするフィルタ部と、
を備えたことを特徴とする論理シミュレータ。
【請求項２】
請求項１記載の論理シミュレータであって、
トランザクション及び前記論理回路の内部状態の時系列の遷移を前記カバレッジ記憶部から取得する時系列遷移取得部を備え、
前記フィルタ部は、既に実行された時系列の配列と同じ配列の時系列を生じるトランザクションを前記トランザクション発行部が発行しないよう、前記テストシナリオをフィルタリングすることを特徴とする論理シミュレータ。
【請求項３】
請求項２記載の論理シミュレータであって、
前記時系列遷移取得部は、前記トランザクション発行部から発行されたトランザクションに応じた前記論理回路の内部状態を示すＮ系列（Ｎは２以上の自然数）の機能カバレッジ情報の遷移をＬ個（Ｌは２以上の自然数）前記カバレッジ記憶部から取得することを特徴とする論理シミュレータ。
【請求項４】
請求項１記載の論理シミュレータであって、
前記テストシナリオ生成部は前記フィルタ部を有することを特徴とする論理シミュレータ。
【請求項５】
請求項１記載の論理シミュレータであって、
前記カバレッジ記憶部は、外部に出力可能なファイル形式で、前記トランザクション及び前記論理回路の内部状態を時系列で記憶することを特徴とする論理シミュレータ。
【請求項６】
請求項１記載の論理シミュレータであって、
前記論理回路が修正された場合、修正前後の論理回路についての差分情報が抽出され、
前記テストシナリオ生成部は、前記差分情報に基づいて、修正された箇所に対する検証の優先度を上げるように前記テストシナリオを修正することを特徴とする論理シミュレータ。
【請求項７】
請求項６記載の論理シミュレータであって、
前記差分情報は、レジスタレベルおよびネットリストレベルの差分情報であり、
前記テストシナリオ生成部は、前記差分情報に基づいて、所望のレジスタのファンインを探索し、前記ファンインを活性化することを特徴とする論理シミュレータ。
【請求項８】
請求項１記載の論理シミュレータであって、
前記テストシナリオ生成部は、前記カバレッジ記憶部に記憶されている情報を参照して、活性率の低いパラメータ又は当該パラメータのＮ系列の遷移を抽出し、前記パラメータ又は当該パラメータのＮ系列の遷移を活性化することを特徴とする論理シミュレータ。
【請求項９】
論理回路を検証するためのテストシナリオを制約付きでランダムに生成し、
前記生成されたテストシナリオに基づくトランザクションを前記論理回路に発行し、
前記論理回路に入力されるトランザクション及び前記論理回路の内部状態を取得し、
前記取得されたトランザクション及び前記論理回路の内部状態を時系列で記憶し、
前記記憶された情報に基づいて、前記生成されたテストシナリオをフィルタリングすることを特徴とする論理回路検証方法。
【請求項１０】
コンピュータを、
論理回路を検証するためのテストシナリオを制約付きでランダムに生成するテストシナリオ生成部と、
前記テストシナリオ生成部で生成されたテストシナリオに基づくトランザクションを前記論理回路に発行するトランザクション発行部と、
前記トランザクション発行部から前記論理回路に入力されるトランザクション及び前記論理回路の内部状態を取得するカバレッジ取得部と、
前記カバレッジ取得部が取得したトランザクション及び前記論理回路の内部状態を時系列で記憶するカバレッジ記憶部と、
前記カバレッジ記録部に記憶されている情報に基づいて、前記テストシナリオ生成部が生成した前記テストシナリオをフィルタリングするフィルタ部と、
して機能させるための論理回路検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理シミュレータ、論理回路検証方法及び論理回路検証プログラムに関し、特に、トランザクションレベルでランダム検証を実施する論理シミュレータ、論理回路検証方法及び論理回路検証プログラムに関する。
【背景技術】
【０００２】
テストベンチは、ハードウェア記述言語等で設計された論理回路ハードウェアを検証するためのファイルである。論理シミュレータは、このテストベンチを用いて、論理回路の機能やタイミングを検証するためのツールである。この論理シミュレータは、論理回路のモデルに検証用パターン（例えば、トランザクションレベルのシミュレーションパターン）を入力して、論理回路の応答を観測し、論理回路の動作を検証する。
【０００３】
論理シミュレータによるに検証は、ゲートレベルでの検証とＲＴＬ（Register Transfer Level)レベルでの検証とがある。近年では、論理合成ツールが普及したため、ＲＴＬレベルでの検証が増加している。
【０００４】
現在、論理回路は、ＶＨＤＬやＶｅｒｉｌｏｇ−ＨＤＬといったハードウェア記述言語を用いてＲＴＬレベルで記述される。論理シミュレータによる検証では、テストパターンを効率良く自動的に作成することが重要である。このため、「ランダム検証」が利用されている。ランダム検証は、乱数を利用してテストパターンを自動的に発生するため、テストパターンの作成時間及び作成工数を大幅に短縮できる。また、ランダム検証では、予想困難な組み合わせのパターンを生成できるため、コーナーケースバグの発見確率を上げることができる。
【０００５】
論理シミュレータによる検証の進捗状況等を示す指標として「機能カバレッジ」が用いられる。機能カバレッジは、論理回路が有する機能の点から検証の完成度を示す。
【０００６】
特許文献１は、論理回路（ＡＳＩＣ）を検証するためのテストベンチを開示している。当該テストベンチは、Ｖｅｒｉｌｏｇ等の言語を用いてコーディングされており、論理回路に種々のテスト動作を実行させるための指示を出すソフトウェア化されたテストシナリオと、論理回路にバス接続されたＣＰＵを含むバス接続体のソフトウェア化されたバスモデルとを備えている。テストシナリオとバスモデルとは別個のファイル又は関数として作成されるため、テストベンチの生産性や再利用性を向上できる。また、複数のデータパスが存在する論理回路（ＡＳＩＣ）における同時動作の検証も行える。
【０００７】
【特許文献１】特開２００５−９３９２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
図５は、トランザクションレベルで制約付きのランダム検証を行う論理シミュレータの構成を示すブロック図である。図５に示された論理シミュレータ１は、テストシナリオ生成部１１と、バスファンクショナルモデル部（ＢＦＭ部）１３と、機能カバレッジ取得部１５とを備える。
【０００９】
テストシナリオ生成部１１は、論理回路２を検証するためのテストシナリオを制約付きでランダムに生成する。ＢＦＭ部１３は、テストシナリオ生成部１１で生成されたテストシナリオに基づくバストランザクション５１を論理回路２に発行する。機能カバレッジ取得部１５は、ＢＦＭ部１３から論理回路２に入力されるバストランザクション５１及び論理回路２の内部状態を取得する。
【００１０】
しかし、図５に示される論理シミュレータ１では、テストシナリオ生成部１１が制約付きランダムなテストシナリオを生成する結果、ＢＦＭ部１３から同一のバストランザクションが重複して発行されることがある。このため、効率的なシミュレーションの点から、既に発行された重複するバストランザクションの発行を行わない論理シミュレータが望まれていた。
【００１１】
本発明の目的は、既に発行された重複するトランザクションの再発行を防ぐ論理シミュレータ、論理回路検証方法及び論理回路検証プログラムを提供することである。
【課題を解決するための手段】
【００１２】
本発明は、論理回路を検証するためのテストシナリオを制約付きでランダムに生成するテストシナリオ生成部と、前記テストシナリオ生成部で生成されたテストシナリオに基づくトランザクションを前記論理回路に発行するトランザクション発行部と、前記トランザクション発行部から前記論理回路に入力されるトランザクション及び前記論理回路の内部状態を取得するカバレッジ取得部と、前記カバレッジ取得部が取得したトランザクション及び前記論理回路の内部状態を時系列で記憶するカバレッジ記憶部と、前記カバレッジ記録部に記憶されている情報に基づいて、前記テストシナリオ生成部が生成した前記テストシナリオをフィルタリングするフィルタ部と、を備えた論理シミュレータを提供する。このため、既に発行された重複するトランザクションの再発行を防ぐことができ、効率的なシミュレーションを行うことができる。
【００１３】
上記論理シミュレータは、トランザクション及び前記論理回路の内部状態の時系列の遷移を前記カバレッジ記憶部から取得する時系列遷移取得部を備え、前記フィルタ部は、既に実行された時系列の配列と同じ配列の時系列を生じるトランザクションを前記トランザクション発行部が発行しないよう、前記テストシナリオをフィルタリングしても良い。
【００１４】
上記論理シミュレータでは、前記時系列遷移取得部は、前記トランザクション発行部から発行されたトランザクションに応じた前記論理回路の内部状態を示すＮ系列（Ｎは２以上の自然数）の機能カバレッジ情報の遷移をＬ個（Ｌは２以上の自然数）前記カバレッジ記憶部から取得しても良い。
【００１５】
上記論理シミュレータでは、前記テストシナリオ生成部は前記フィルタ部を有しても良い。
【００１６】
上記論理シミュレータでは、前記カバレッジ記憶部は、外部に出力可能なファイル形式で、前記トランザクション及び前記論理回路の内部状態を時系列で記憶しても良い。
【００１７】
上記論理シミュレータでは、前記論理回路が修正された場合、修正前後の論理回路についての差分情報が抽出され、前記テストシナリオ生成部は、前記差分情報に基づいて、修正された箇所に対する検証の優先度を上げるように前記テストシナリオを修正しても良い。
【００１８】
上記論理シミュレータでは、前記差分情報は、レジスタレベルおよびネットリストレベルの差分情報であり、前記テストシナリオ生成部は、前記差分情報に基づいて、所望のレジスタのファンインを探索し、前記ファンインを活性化しても良い。
【００１９】
上記論理シミュレータでは、前記テストシナリオ生成部は、前記カバレッジ記憶部に記憶されている情報を参照して、活性率の低いパラメータ又は当該パラメータのＮ系列の遷移を抽出し、前記パラメータ又は当該パラメータのＮ系列の遷移を活性化しても良い。
【００２０】
本発明は、論理回路を検証するためのテストシナリオを制約付きでランダムに生成し、前記生成されたテストシナリオに基づくトランザクションを前記論理回路に発行し、前記論理回路に入力されるトランザクション及び前記論理回路の内部状態を取得し、前記取得されたトランザクション及び前記論理回路の内部状態を時系列で記憶し、前記記憶された情報に基づいて、前記生成されたテストシナリオをフィルタリングする論理回路検証方法を提供する。このため、既に発行された重複するトランザクションの再発行を防ぐことができ、効率的なシミュレーションを行うことができる。
【００２１】
本発明は、コンピュータを、論理回路を検証するためのテストシナリオを制約付きでランダムに生成するテストシナリオ生成部と、前記テストシナリオ生成部で生成されたテストシナリオに基づくトランザクションを前記論理回路に発行するトランザクション発行部と、前記トランザクション発行部から前記論理回路に入力されるトランザクション及び前記論理回路の内部状態を取得するカバレッジ取得部と、前記カバレッジ取得部が取得したトランザクション及び前記論理回路の内部状態を時系列で記憶するカバレッジ記憶部と、前記カバレッジ記録部に記憶されている情報に基づいて、前記テストシナリオ生成部が生成した前記テストシナリオをフィルタリングするフィルタ部と、して機能させるための論理回路検証プログラムを提供する。このため、既に発行された重複するトランザクションの再発行を防ぐことができ、効率的なシミュレーションを行うことができる。
【発明の効果】
【００２２】
本発明に係る論理シミュレータ、論理回路検証方法及び論理回路検証プログラムによれば、既に発行された重複するトランザクションの再発行を防ぐことができるため、効率的なシミュレーションを行うことができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施形態について、図面を参照して説明する。
【００２４】
（第１の実施形態）
図１は、第１の実施形態の論理シミュレータの構成を示すブロック図である。図１に示すように、第１の実施形態の論理シミュレータ１００は、テストシナリオ生成部１０１と、バスファンクショナルモデル部（ＢＦＭ部）１０３と、機能カバレッジ取得部１０５と、機能カバレッジ記憶部１０７と、時系列遷移取得部１０９と、フィルタ部１１１とを備える。なお、機能カバレッジ取得部１０５及び時系列遷移取得部１０９はＣ言語等で記述された構造体の配列、すなわちプログラムを実行することによって実現される。
【００２５】
テストシナリオ生成部１０１は、論理回路２を検証するためのテストシナリオを制約付きでランダムに生成する。ＢＦＭ部１０３は、テストシナリオ生成部１０１で生成されたテストシナリオに基づくバストランザクション１５１を論理回路２に発行する。
【００２６】
機能カバレッジ取得部１０５は、ＢＦＭ部１０３から論理回路２に入力されるバストランザクション１５１及び論理回路２の内部状態を取得する。機能カバレッジ記憶部１０７は、外部に出力可能なテキストファイル等の形式で、機能カバレッジ取得部１０５が取得したバストランザクション及び論理回路２の内部状態を時系列に記憶する。
【００２７】
時系列遷移取得部１０９は、バストランザクション及び論理回路２の内部状態の時系列の遷移を機能カバレッジ記憶部１０７から取得する。論理回路２の内部状態の時系列の遷移とは、例えば、ＢＦＭ部１０３から発行されたバストランザクション１５１に応じた論理回路２の内部状態を示すＮ系列（Ｎは２以上の自然数）の遷移である。なお、Ｎ系列とは、１〜Ｎ分の配列によって示される機能カバレッジ情報を単位とした系列である。時系列遷移取得部１０９は、図２に示すように、Ｎ系列の機能カバレッジ情報のＬ個（Ｌは２以上の自然数）の遷移を取得する。すなわち、時系列遷移取得部１０９は、１〜Ｎ分のＮ系列の遷移１、２〜Ｎ＋１分のＮ系列の遷移２、３〜Ｎ＋２分のＮ系列の遷移３、・・・及びＭ＋１〜Ｎ＋Ｍ分のＮ系列の遷移Ｌを順次取得する。
【００２８】
フィルタ部１１１は、テストシナリオ生成部１０１が生成したテストシナリオに基づいて先行発行されたＮ系列の配列と、時系列遷移取得部１０９が取得したＬ個のＮ系列の遷移の各配列とを比較する。当該比較の結果、先行発行されたバストランザクションによるＮ系列の配列と同じ配列の遷移が検出された場合、フィルタ部１１１は、前記先行発行したＮ系列の配列と同じ配列の時系列を生じるバストランザクションをＢＦＭ部１０３が発行しないよう、テストシナリオ生成部１０１が生成したテストシナリオをフィルタリングする。
【００２９】
図３は、本実施形態の論理シミュレータ１００の動作を示すフローチャートである。図３に示すように、テストシナリオ生成部１０１は、テストシナリオに基づいてバストランザクションを先行発行する（ステップＳ１０１）。次に、フィルタ部１１１は、Ｌ個のＮ系列の遷移の各配列を時系列遷移取得部１０９から取得する（ステップＳ１０３）。次に、フィルタ部１１１は、先行発行されたバストランザクションによるＮ系列の配列と一致する配列が前記Ｌ個のＮ系列の遷移の配列中にあるかを判断する（ステップＳ１０５）。ステップＳ１０５において、先行発行されたバストランザクションによるＮ系列の配列と一致する配列が検出された場合（ＹＥＳ）はステップＳ１０７に進み、検出されない場合（ＮＯ）はステップＳ１０９に進む。ステップＳ１０７では、フィルタ部１１１は、前記先行発行されたバストランザクションが発行されないようテストシナリオをフィルタリングする。一方、ステップＳ１０９では、ＢＦＭ部１０３は前記先行発行されたバストランザクションを論理回路２に発行する。
【００３０】
以上説明した時系列遷移取得部１０９によるＬ個のＮ系列の遷移の取得及びフィルタ部１１１によるフィルタリングは、論理シミュレータ１００による検証が終了するまで行われる。例えば、バストランザクションの組み合わせパラメータは、“５系列”、“リード”、“ライト”、“アドレス”、“ライトデータ”等のように区分されるため、全てのパラメータの組み合わせを終了すると論理シミュレータ１００はシミュレーションを終了する。
【００３１】
以上説明したように、第１の実施形態の論理シミュレータ１００によれば、既に発行された重複するバストランザクションが発行されないため、制約付きのランダム検証において効率的なシミュレーションを行うことができる。また、バストランザクション及び論理回路２の内部状態は時系列で記録されるため、時系列な機能カバレッジを取得することができる。
【００３２】
（第２の実施形態）
図４は、第２の実施形態の論理シミュレータの構成を示すブロック図である。第２の実施形態の論理シミュレータ２００が第１の実施形態の論理シミュレータ１００と異なる点は、フィルタ部１１１がテストシナリオ生成部内に設けられていることである。この点以外は第１の実施形態と同様であり、図４において、図１と共通する構成要素には同じ参照符号が付されている。
【００３３】
第２の実施形態では、フィルタ部１１１がテストシナリオ生成部１２１内に設けられているため、フィルタ部１１１が、Ｌ番目のＮ系列の遷移の配列と、１〜Ｌ−１分のＮ系列の遷移の配列とを比較することができる。このため、本実施形態のテストシナリオ生成部１２１は、バストランザクションを先行発行する必要がない。この結果、ＢＦＭ部１０３は、バストランザクションを効率良く発行できる。
【００３４】
上記第１及び第２の実施形態の論理シミュレータは、ＲＴＬが修正された際、元のＲＴＬと修正されたＲＴＬとの差分を取得しても良い。この場合、修正されたＲＴＬの差分レジスタやネットリストのファンインレジスタも探索し、バストランザクションモデルからアクセスして、テストシナリオ生成部は、ＲＴＬの修正された箇所に対する検証の優先度を上げるようテストシナリオを修正する。このため、論理回路の不具合が修正されたか否かを即座に判定できる。
【００３５】
論理回路の内部状態を示すＮ系列の遷移又はＲＴＬが修正された際、バストランザクションとは異なり、元のＲＴＬと修正されたＲＴＬとの差分を外部からの入力によって直接制御することはできない。このため、以下に示す手順でＮ系列の機能カバレッジ情報を取得する。まず、論理回路内の観測が望まれるレジスタのファインインレジスタを探索して、バストランザクションモデルからアクセスし、時系列の全ての遷移を実現する。
【００３６】
最初に定義したバストランザクションや論理回路の内部状態についてＮ系列の組み合わせを計算して機能カバレッジを定義する。バストランザクションの時系列の組み合わせを最初に定義した時系列の組み合わせの全てデータベース化し、検証の実施有無を記録しながらテキストファイル等のカバレッジデータベースにリアルタイムに反映する。このため、検証の進捗状況をリアルタイムに把握可能なシステムを実現できる。
【００３７】
また、リアルタイムにデータベース化されたファイルから活性率の低いパラメータやパラメータのＮ系列の遷移を抽出する。抽出されたパラメータがバストランザクションの場合、テストシナリオから当該パラメータを活性化する（アクティベートする）テストシナリオを生成する。例えば、抽出されたパラメータが内部状態の場合、活性化が望まれるレジスタのファインインレジスタを探索して、バストランザクションモデルからアクセスし、時系列の全ての遷移を実現する。
【００３８】
以上説明した論理シミュレータは、特定のプログラムをコンピュータ上で実行することによって実現しても良い。この場合、論理シミュレータが備える構成要素は当該プログラム中のサブルーチンに該当する。
【図面の簡単な説明】
【００３９】
【図１】第１の実施形態の論理シミュレータの構成を示すブロック図
【図２】Ｎ系列の機能カバレッジ情報のＬ個の遷移を示す図
【図３】第１の実施形態の論理シミュレータの動作を示すフローチャート
【図４】第２の実施形態の論理シミュレータの構成を示すブロック図
【図５】従来の論理シミュレータの構成を示すブロック図
【符号の説明】
【００４０】
１００，２００  論理シミュレータ
１０１，１２１  テストシナリオ生成部
１０３  バスファンクショナルモデル部（ＢＦＭ部）
１０５  機能カバレッジ取得部
１０７  機能カバレッジ記憶部
１０９  時系列遷移取得部
１１１  フィルタ部
２  論理回路
【図１】
2007280268.tif 000003
【図２】
2007280268.tif 000004
【図３】
2007280268.tif 000005
【図４】
2007280268.tif 000006
【図５】
2007280268.tif 000007