(57)【特許請求の範囲】
【請求項１】
ＲＴＬ記述されたＣＰＵの論理検証のためのテストプログラムを生成する論理検証シナリオ生成装置であって、
検証命令を複数有する検証命令リストと、前記検証命令の前に実行する前命令、及び後に実行する後命令の前後命令組合せを複数有する前後命令組合せリストとを格納するテストライブラリと、
前記ＣＰＵが前記命令を実行して出力するひとつまたは複数の出力信号項目を有する期待値フォーマットを格納する期待値フォーマット記憶部と、
前記検証命令を記憶するための検証命令アドレスと、前記前命令を格納する前命令空間と、前記後命令を格納する後命令空間と、前記命令がデータアクセス命令である場合のアクセス対象のデータ空間と、前記命令が分岐命令である場合の分岐先命令を格納する分岐命令空間と、前記命令が分岐後復帰命令である場合に復帰情報を格納するスタック空間とを有するメモリモジュールであって、前記テストライブラリから順次選択した前記検証命令と前記前後命令組合せとに基づいて、前記検証命令アドレスに前記検証命令を、前記前命令空間に前記前命令を、前記後命令空間に前記後命令を記憶すると共に、前記前命令が前記分岐命令である場合に前記前命令の分岐先アドレスに前記検証命令アドレスを記憶したメモリモジュールを前記テストプログラムとして生成するテストプログラム生成部と、
前記生成したテストプログラムの各命令について、当該命令に対応する前記期待値フォーマットを前記期待値フォーマット記憶部から取得し、当該命令をデコードしたデコード情報に基づいて前記出力信号項目に対応する期待値を生成する期待値生成部と、
を有することを特徴とする論理検証シナリオ生成装置。
【請求項２】
請求項１において、
前記テストライブラリは、さらに、前記検証命令アドレスを複数有する検証命令アドレスリストを格納し、
前記テストプログラム生成部は、さらに、前記テストライブラリから前記検証命令アドレスを順次選択することを特徴とする論理検証シナリオ生成装置。
【請求項３】
請求項１または２において、
前記テストライブラリは、さらに、前記検証命令に対して発生させる外部入力信号を複数有する外部入力信号リストを格納し、
前記テストプログラム生成部は、さらに、前記外部入力信号リストの各前記外部入力信号に対応する外部入力命令を格納する外部入力命令空間と、前記外部入力命令空間における各前記外部入力信号の前記外部入力命令のアドレスを格納するベクタテーブルとを有する前記メモリモジュールをテストプログラムとして生成し、
前記論理検証シナリオ生成装置は、さらに、
前記テストライブラリから順次選択した前記外部入力信号と、前記検証命令アドレスとに基づいて、前記検証命令に対して前記外部入力信号を発生させる外部入力信号生成モジュールを生成する外部入力信号生成部を有し、
前記期待値生成部は、前記検証命令について、前記外部入力信号に対応する前記期待値フォーマットを選択し、前記外部入力信号に基づいて前記期待値を生成することを特徴とする論理検証シナリオ生成装置。
【請求項４】
請求項３において、
前記テストライブラリは、さらに、前記外部入力信号を発生させる発生タイミングを複数有する発生タイミングリストを格納し、
外部入力信号生成部は、さらに、前記テストライブラリから順次選択した前記発生タイミングに基づいて前記外部入力信号生成モジュールを生成することを特徴とする論理検証シナリオ生成装置。
【請求項５】
ＲＴＬ記述されたＣＰＵの論理検証のためのテストプログラムを生成する論理検証シナリオ生成処理をコンピューターに実行させるコンピューター読み取り可能な論理検証シナリオ生成プログラムにおいて、
前記論理検証シナリオ生成処理は、
検証命令を複数有する検証命令リストと、前記検証命令の前に実行する前命令、及び後に実行する後命令の前後命令組合せを複数有する前後命令組合せリストとを格納するテストライブラリと、
前記ＣＰＵが前記命令を実行して出力するひとつまたは複数の出力信号項目を有する期待値フォーマットを格納する期待値フォーマット記憶部と、
前記検証命令を記憶するための検証命令アドレスと、前記前命令を格納する前命令空間と、前記後命令を格納する後命令空間と、前記命令がデータアクセス命令である場合のアクセス対象のデータ空間と、前記命令が分岐命令である場合の分岐先命令を格納する分岐命令空間と、前記命令が分岐後復帰命令である場合に復帰情報を格納するスタック空間とを有するメモリモジュールであって、前記テストライブラリから順次選択した前記検証命令と前記前後命令組合せとに基づいて、前記検証命令アドレスに前記検証命令を、前記前命令空間に前記前命令を、前記後命令空間に前記後命令を記憶すると共に、前記前命令が前記分岐命令である場合に前記前命令の分岐先アドレスに前記検証命令アドレスを記憶したメモリモジュールを前記テストプログラムとして生成するテストプログラム生成工程と、
前記生成したテストプログラムの各命令について、当該命令に対応する前記期待値フォーマットを前記期待値フォーマット記憶部から取得し、当該命令をデコードしたデコード情報に基づいて前記出力信号項目に対応する期待値を生成する期待値生成工程と、
を有することを特徴とする論理検証シナリオ生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理検証シナリオ生成装置、及び、論理検証シナリオ生成プログラムに関する。
【背景技術】
【０００２】
近年、電子機器等に用いられている集積回路（例えばＬＳＩ：Large Scale Integration）は、一般的にＨＤＬ（Hardware Description Language）を用いたＲＴＬ（Register Transfer Level）記述によって設計されている。そして、設計された集積回路が正常に動作するか否かを確認するために、論理検証が行われる。
【０００３】
集積回路の論理検証は、例えば、コンピューター上に構築されたシミュレータ等の論理検証環境上で行われる。検証者は、仕様書等に基づいて、手作業によって入力信号パターン等を含むテストパターンを用意し、テストパターンを元にシミュレータ上で検証対象の集積回路を実行して検証する。また、検証者は、シミュレーションの結果、出力が想定される出力値を期待値として予め用意しておき、シミュレーションの結果得られた出力値と期待値とが一致するか否かを検証する。
【０００４】
ただし、近年、集積回路の大規模集積化、機能の複雑化により、テストパターンの数が膨大になり、生成にかかる負荷が高くなっている。また、手作業によりテストパターンを生成することに因る検証漏れや検証ミスも課題となっていた。そこで、検証対象の集積回路に接続される周辺デバイスリスト、当該デバイスリストのパラメータ設定情報等の入力条件情報を予め用意しておき、当該入力条件情報に基づいて、シミュレータが実行する検証シナリオを自動生成する技術が知られている（特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２１０００４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、検証対象の集積回路がＣＰＵ（Central Processing Unit）である場合、入力信号に基づく集積回路の処理動作は、ＣＰＵに実行させる命令に加え、その前後に実行させる命令の組合せの影響を受ける。従って、検証対象の集積回路がＣＰＵである場合、複数の命令を有するテストプログラムに基づいた論理検証が必要となる。さらに、ＣＰＵの入力信号に基づく処理動作は、命令実行時に発生する割り込み命令等の外部入力要因にも影響を受ける。従って、複数の命令の組合せに加え、外部入力要因に対する論理検証も必要である。
【０００７】
また、集積回路の大規模化、複雑化によるテストパターンの増加に伴い、シミュレーションの出力値を検証するための期待値の量も膨大となり、期待値の生成にかかる負荷が高かった。
【０００８】
そこで、本発明では、ＲＴＬ（Register Transfer Level）記述されたＣＰＵの論理検証に用いる検証シナリオ、及び期待値の生成負荷を抑えた論理検証シナリオ生成装置、論理検証シナリオ生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
第１の側面は、ＲＴＬ記述されたＣＰＵの論理検証のためのテストプログラムを生成する論理検証シナリオ生成装置であって、
検証命令を複数有する検証命令リストと、前記検証命令の前に実行する前命令、及び後に実行する後命令の前後命令組合せを複数有する前後命令組合せリストとを格納するテストライブラリと、
前記ＣＰＵが前記命令を実行して出力するひとつまたは複数の出力信号項目を有する期待値フォーマットを格納する期待値フォーマット記憶部と、
前記検証命令を記憶するための検証命令アドレスと、前記前命令を格納する前命令空間と、前記後命令を格納する後命令空間と、前記命令がデータアクセス命令である場合のアクセス対象のデータ空間と、前記命令が分岐命令である場合の分岐先命令を格納する分岐命令空間と、前記命令が分岐後復帰命令である場合に復帰情報を格納するスタック空間とを有するメモリモジュールであって、前記テストライブラリから順次選択した前記検証命令と前記前後命令組合せとに基づいて、前記検証命令アドレスに前記検証命令を、前記前命令空間に前記前命令を、前記後命令空間に前記後命令を記憶すると共に、前記前命令が前記分岐命令である場合に前記前命令の分岐先アドレスに前記検証命令アドレスを記憶したメモリモジュールを前記テストプログラムとして生成するテストプログラム生成部と、
前記生成したテストプログラムの各命令について、当該命令に対応する前記期待値フォーマットを前記期待値フォーマット記憶部から取得し、当該命令をデコードしたデコード情報に基づいて前記出力信号項目に対応する期待値を生成する期待値生成部と、
を有する。
【発明の効果】
【００１０】
第１の側面によれば、検証シナリオ、及び期待値の生成にかかる負荷を抑えることができる。
【図面の簡単な説明】
【００１１】
【図１】論理検証対象のＣＰＵの入出力信号の一例を表す図である。
【図２】本実施の形態例におけるＲＴＬ記述されたＣＰＵの一例を表す図である。
【図３】シミュレータが実行するモジュール、テストベンチの一例を表す図である。
【図４】本実施の形態例における論理検証シナリオ生成装置の構成を表す図である。
【図５】論理検証シナリオ生成部の処理を表すフローチャート図である。
【図６】テストライブラリを表す図である。
【図７】本実施の形態例におけるメモリモジュールが定義するメモリ空間を表す図である。
【図８】第１の実施の形態例におけるテストプログラムの一例である。
【図９】期待値生成の処理を表すフローチャート図である。
【図１０】期待値生成部の検証シナリオ要素分解処理を表すフローチャート図である。
【図１１】期待値フォーマット選択処理を表すフローチャート図である。
【図１２】本実施の形態例における期待値フォーマットを表す図である。
【図１３】図８のテストプログラムに対応する期待値フォーマットを表す図である。
【図１４】図８のテストプログラムに対応する期待値を表す図である。
【図１５】外部入力要因リスト、外部入力タイミングリストを表す図である。
【図１６】割り込みの外部入力信号生成モジュールの一例を表す図である。
【図１７】第２の実施の形態例におけるテストプログラムの一例である。
【図１８】図１７のテストプログラムに対応する期待値フォーマットを表す図である。
【図１９】図１７のテストプログラムに対応する期待値を表す図である。
【図２０】本実施の形態例におけるシミュレータが動作するコンピューターの構成図である。
【発明を実施するための形態】
【００１２】
以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１３】
本実施の形態例における論理検証シナリオ生成装置は、「検証命令」、「検証命令」を記憶する「検証アドレス」、「検証命令」の前後に実行する「前後命令組合せ」等の検証シナリオ条件をテストライブラリから選択する。そして、論理検証シナリオ生成装置は、予め用途別に区分されたメモリ空間を定義し、「検証命令アドレス」に「検証命令」が、前命令空間に前命令が、後命令空間に後命令が記憶され、前命令が分岐命令である場合に前命令の分岐先アドレスに「検証命令アドレス」が記憶されるように記述したメモリモジュールをテストプログラムとして生成することにより、テストプログラムを生成する。そして、論理検証シナリオ生成装置は、テストプログラムの各命令について、当該命令に対応する期待値フォーマットを期待値フォーマット記憶部から取得し、命令をデコードしたデコード情報に基づいて期待値フォーマットの有する出力信号項目に対応する期待値を生成するものである。
【００１４】
図１は、論理検証対象のＣＰＵ（Central Processing Unit）１０の入出力信号の一例を表す図である。同図において、ＣＰＵ１０はＲＴＬ（Register Transfer Level）記述されており、同様にそれぞれＲＴＬ記述されたメモリモジュール１２、外部入力信号生成モジュール１１、出力信号トレースモジュール１３とバスを介して信号を入出力する。
【００１５】
一般的に、ＣＰＵ１０は、メモリと信号を入出力することによって、命令のフェッチ、デコード、実行等の命令サイクルを行う。具体的に、メモリモジュール１２からＣＰＵ１０への入力信号には、命令フェッチ用、命令の実行によって生じるデータアクセス用のリードデータ信号等がある。また、ＣＰＵ１０からメモリモジュール１２への出力信号には、アクセスストローブ信号、アクセスサイズ信号、リード／ライト信号、ライトデータ信号、アドレス信号等がある。
【００１６】
また、ＣＰＵ１０は、外部入力信号生成モジュール１１から割り込み要求やＣＰＵ１０の状態を制御する外部入力信号が入力される。具体的に、外部入力信号生成モジュール１１からＣＰＵ１０への入力信号には、クロック信号ＣＬＫ、リセット信号ＲＳＴ、モード信号、割り込み信号、例外信号、ブレーク信号等の信号がある。ＣＰＵ１０は、外部入力信号を受け付けると、実行中の処理を中断し、例えば、外部入力信号に応じた所定の処理ルーチンの実行やＣＰＵ状態の制御等を行う。
【００１７】
本実施の形態例のメモリモジュール１２はＲＴＬ記述されたＲＡＭ（Random Access Memory）等のメモリであり、ＣＰＵ１０を論理検証するテストプログラムが格納される。ＣＰＵ１０は、当該テストプログラムの命令の実行を通して、図１のような信号を入出力する。また、外部信号生成モジュール１１はＲＴＬ記述された擬似的な、タイマー、割り込みコントローラ、デバッガ等の周辺リソースであり、図１のような外部入力信号をＣＰＵ１０に入力する。
【００１８】
出力信号トレースモジュール１３は、命令の実行を通してＣＰＵ１０からメモリモジュール１２に出力されるデータアクセス時のアクセスサイズ信号や、リード／ライト信号、ライトデータ信号、アドレス信号等を取得する。また、出力信号トレースモジュール１３は、ＣＰＵ１０から実行命令のアドレスを表す命令アドレス信号や、当該命令が分岐元、分岐先であることを示す分岐情報信号、分岐要因を示す分岐要因信号、命令に外部入力信号が発生した場合の割り込みや例外等の要因を表すＥＩＴ要因信号、デバッグモード等のＣＰＵ１０の状態を表すＣＰＵ状態信号等を取得する。出力信号トレースモジュール１３の取得する出力信号は、ＣＰＵ１０の命令処理の論理正当性を検証するため、後述する期待値と比較される。
【００１９】
図２は、本実施の形態例におけるＲＴＬ記述されたＣＰＵ１０の一例を表す図である。ＣＰＵ１０は、例えば、ｖｅｒｉｌｏｇ ＨＤＬ（Hardware Description Language）やＶＨＤＬ（VHSIC Hardware Description Language）等のＲＴＬレベルのＨＤＬで記述され、同図に示すような各ブロックの機能を備える。
【００２０】
「信号の定義」ブロック１０１では、ＣＰＵ１０が入出力する信号と、ＣＰＵ１０の内部で使用される信号が宣言される。「命令のフェッチ」ブロック１０２では、実行対象の命令をメモリモジュール１２から読み出す処理が、「デコード」ブロック１０３では、フェッチによって読み出された命令をＣＰＵ１０が実行可能な命令にデコードする処理、及び、演算処理に必要なデータの選択処理が記述される。また、「演算」ブロック１０４では、数値演算やＰＣ（プログラムカウンター）の計算処理が、「メモリアクセス」ブロック１０５では、実行命令がロード・ストア系の命令である場合のメモリの読み書き処理が記述される。さらに、「ライトバック」ブロック１０６では、レジスタへのデータの書き込み処理が記述される。
【００２１】
また、図示しないが、メモリモジュール１２、外部入力信号生成モジュール１１、出力信号トレースモジュール１３も同様に、ｖｅｒｉｌｏｇ ＨＤＬやＶＨＤＬ等のＨＤＬで記述される。
【００２２】
図１、２で述べたＣＰＵ１０、メモリモジュール１２、外部入力信号生成モジュール１１、出力信号トレースモジュール１３は、コンピューター上のＯＳで動作するシミュレータ等のソフトウェアによって実行される。シミュレータは、各モジュールの初期値設定やシミュレーション手順を記述したテストベンチに基づいて、各モジュールをシミュレーションする。なお、テストベンチも同様にＨＤＬによって記述される。
【００２３】
図２０は、シミュレータが動作するコンピューター２００の構成を表す図である。コンピューター２００は、ＣＰＵ２０２、ＲＡＭ２０３、外部Ｉ／Ｆ２０４、メモリ（ファイル群）２０５を有する。シミュレータは、ＣＰＵ２０２が、メモリ（ファイル群）２０５に記憶された論理検証シミュレーションプログラム２０１を実行することによって実現される。
【００２４】
本実施の形態例におけるシミュレータには、論理検証対象のＣＰＵ（ＲＴＬ）１０と、検証命令群等を有するテストライブラリ２１４、期待値フォーマット記憶部２２１が提供される。そして、シミュレータは、まず、論理検証シナリオ生成プログラム（ＲＴＬ）２１、２２を実行し、テストライブラリ２１４、期待値フォーマット記憶部２２１に基づいて、ＣＰＵ（ＲＴＬ）１０の論理検証に用いるテストプログラムを格納するメモリモジュール（ＲＴＬ）１２、ＣＰＵ（ＲＴＬ）１０への外部入力信号を生成する外部入力信号生成モジュール（ＲＴＬ）１１、シミュレーションによってＣＰＵ（ＲＴＬ）１０が出力する信号の期待値を有する期待値データ（データファイル）２５を生成する（２０６）。
【００２５】
そして、シミュレータは、メモリモジュール１２に格納されたテストプログラムをＣＰＵ（ＲＴＬ）１０に実行させ、また、外部入力信号モジュール（ＲＴＬ）１１に外部入力信号を入力させることにより、ＣＰＵ（ＲＴＬ）１０の論理検証を行う（２０７）。また、シミュレータは、出力信号トレースモジュール（ＲＴＬ）１３を実行して、ＣＰＵ（ＲＴＬ）１０からの出力信号を取得する（２０７）。
【００２６】
図３は、本実施の形態例におけるシミュレータが実行するモジュールとテストベンチ３０の一例を表す図である。論理検証シナリオ生成部２１、及び、期待値生成部２２は、本実施の形態例の論理検証シナリオ生成装置の一例であり、図２０の論理検証シナリオ生成プログラム（ＲＴＬ）２１、２２がシミュレータにより実行されることによって実現される。
【００２７】
論理検証シナリオ生成部２１は、順次選択した検証シナリオ条件に基づいて、テストプログラムを記憶したメモリモジュール１２と、外部入力信号生成モジュール１１とを生成する。そして、期待値生成部２２は、生成されたテストプログラムの各命令について、各命令に対応する期待値フォーマットを期待値フォーマット記憶部２２１から取得し、期待値フォーマットの有する出力信号項目に対応する期待値データ２５を生成する。期待値とは、ＣＰＵ１０がテストプログラムの命令を実行して出力する出力信号を予め予測した値である。各部の処理の詳細については、後述する。
【００２８】
結果比較部２３は、出力信号トレースモジュール１３によって取得された出力信号を有するトレースデータと、期待値生成部２２によって生成された期待値データ２５とを比較し、その比較結果をシミュレータ出力部２４のログファイルに書き込む。ただし、結果比較部２３の代わりに、検証者がトレースデータと期待値データ２５を比較してもよい。結果比較部２３も同様にＨＤＬで記述される。
【００２９】
第１の実施の形態例における論理検証シナリオ生成部２１及び期待値生成部２２は、検証シナリオ条件として、ＣＰＵ１０に実行させる「検証命令」、「検証命令」のメモリモジュール１２における格納アドレスである「検証命令アドレス」、及び、「検証命令」の前にＣＰＵ１０実行させる前命令、及び、後に実行させる後命令の組合せを表す「前後命令組合せ」の組合せに基づいて、テストプログラムを格納したメモリモジュール１２と期待値データ２５とを生成する。
【００３０】
第２の実施の形態例における論理検証シナリオ生成部２１及び期待値生成部２２は、さらに、検証シナリオ条件として、「検証命令」に対して入力する「外部入力要因」と、当該「外部入力要因」の「外部入力タイミング」とを加えた検証シナリオ条件の組合せに基づいて、テストプログラムを格納したメモリモジュール１２と期待値データ２５、及び、外部入力信号生成モジュール１１を生成する。
【００３１】
［第１の実施の形態例］
図４は、本実施の形態例における論理検証シナリオ生成装置の構成を表す図である。なお、同図において、点線で表された外部入力信号生成部２１３、外部入力信号生成モジュール１１については、第２の実施の形態例において後述する。
【００３２】
論理検証シナリオ生成部２１は、テストライブラリ２１４、検証シナリオ条件入力部２１０、プログラム条件判定部２１１、テストプログラム生成部２１２を有し、テストプログラムを格納したメモリモジュール１２を生成する。また、期待値生成部２２は、テストプログラムの各命令について、期待値フォーマット記憶部２２１から対応する期待値フォーマットを選択し、期待値フォーマットが有する出力信号項目に対応する期待値データ２５を生成する。
【００３３】
図５は、本実施の形態例における論理検証シナリオ生成部２１の処理を表すフローチャート図である。以下、フローチャート図に基づいて説明する。まず、論理検証シナリオ生成部２１の検証シナリオ条件入力部２１０は、検証シナリオ条件２１５の入力を受け付ける（Ｓ１０１）。検証シナリオ条件入力部２１０は、テストライブラリ２１４に格納された「検証命令」、「検証命令アドレス」、「前後命令組合せ」の組合せを検証シナリオ条件２１５として受け付ける。
【００３４】
図６は、テストライブラリ２１４を表す図である。テストライブラリ２１４には、「検証命令」を複数有する検証命令リストＣＭ、「検証命令アドレス」を複数有する検証命令アドレスリストＣＭ＠、「前後命令組合せ」を複数有する前後命令組合せリストＣＭＬが格納される。各リストは、例えば、検証者等によって予め用意される。
【００３５】
具体的に「検証命令」は、例えば、「ＡＤＤ Ｒ１，Ｒ２」「ＪＭＰ ＠Ｒ６」等の命令であり、「検証命令アドレス」は、メモリモジュール１２が定義するメモリ空間上のアドレス、例えば「0x00000100」「0x00000050」である。「前後命令組合せ」は、「検証命令」の前後にＣＰＵ１０に実行させる処理の組合せであって、例えば、「（前命令）演算処理Ａ／（後命令）演算処理Ｂ」「（前命令）演算処理Ａ／（後命令）分岐処理Ａ」等である。前命令、後命令は、それぞれひとつまたは複数の命令を有する。
【００３６】
図６のように、テストライブラリ２１４において、「検証命令」、「検証命令アドレス」、「前後命令組合せ」は、それぞれ、例えば、「１〜ｎ」の数字等の識別記号に対応付けられる。検証シナリオ条件入力部２１０は、識別記号の組合せを検証シナリオ条件２１５として受け付ける。
【００３７】
図５のフローチャート図に戻り、検証シナリオ条件入力部２１０は、選択された検証シナリオ条件２１５がＣＰＵ１０の仕様制限に該当するか否かを検証する（Ｓ１０２）。検証シナリオ条件入力部２１０は、選択した検証シナリオの識別記号の組合せを、仕様制限に該当する検証シナリオ条件の識別記号の組合せと比較し一致する場合は（Ｓ１０２のＹＥＳ）、テストプログラムの生成処理を終了する。仕様制限に該当する検証シナリオ条件の組合せ情報は、検証者等によって予め用意される。
【００３８】
一方、選択された検証シナリオ条件がＣＰＵ１０の仕様制限に該当しない場合（Ｓ１０２のＮＯ）、検証シナリオ条件入力部２１０は、検証シナリオ条件判定処理として、選択した検証シナリオ条件２１５を分割し、「検証命令」を検証命令選択処理Ｓ１０４へ、「前後命令組合せ」を前後命令選択処理Ｓ１０５へ、「検証命令アドレス」を検証命令アドレス選択処理Ｓ１０６へ渡す（Ｓ１０３）。そして、プログラム条件判定部２１１は、検証命令選択処理として、「検証命令」の識別記号に基づいてテストライブラリ２１４から「検証命令」を選択する（Ｓ１０４）。同様に、論理検証シナリオ生成部２１は、前後命令選択処理として「前後命令組合せ」の識別記号に基づいて前命令と後命令とを（Ｓ１０５）、検証命令アドレス選択処理として「検証命令アドレス」の識別記号に基づいて「検証命令アドレス」を（Ｓ１０６）、テストライブラリ２１４からそれぞれ選択する。
【００３９】
続いて、論理検証シナリオ生成部２１のテストプログラム生成部２１２は、選択した「検証命令」、「検証命令アドレス」、「前後命令組合せ」に基づいて、テストプログラムを生成する（Ｓ１０７）。テストプログラム生成部２１２は、「検証命令」をメモリモジュール１２が定義する用途別に区分されたメモリ空間上の「検証命令アドレス」に、「前後命令組合せ」の前命令、後命令をそれぞれメモリ空間の前命令用空間、後命令用空間に記憶されるようにメモリモジュール１２を記述し生成する。即ち、テストプログラムの生成とは、シミュレーション対象のＣＰＵ１０がアクセスするメモリモジュール１２の生成を意味し、ＲＴＬ記述されたメモリモジュール１２の定義する各空間アドレスにテストプログラムが対応付けて記述される。
【００４０】
図７は、本実施の形態例におけるメモリモジュール１２が定義するメモリ空間を表す図である。本実施の形態例におけるメモリ空間は用途別に区分され、各空間のアドレスは予め決められている。まず、「前命令空間」７１は前命令を、「後命令空間」７２は後命令を記憶するための空間であり、「分岐先命令空間」７３は、テストプログラムの命令が分岐命令である場合の分岐先命令が予め格納される。また、「データ空間」７４は、テストプログラムの命令がデータアクセス命令である場合のアクセス用の空間であり、例えば、アクセス用のデータが予め格納される。
【００４１】
そして、「スタック空間」７５は、例えば、テストプログラムの命令が分岐命令である場合に、分岐元への復帰情報として、分岐元の次命令の情報等が記憶される空間である。また、「ブレーク空間」７６は、テストプログラムの命令が例えば、デバッグ用のブレーク命令である場合の分岐先命令が予め格納される。そして、「ベクタテーブル」７８は、例えば、トラップ命令等の分岐命令が実行された場合の分岐後命令を格納する「ＥＩＴルーチン空間」７７のアドレスが格納される。また、「ベクタテーブル」７８は、外部入力要因が発生した場合にも参照されるが、詳細は第２の実施の形態例において後述する。
【００４２】
具体的に、テストプログラム生成部２１２は、メモリ空間上の「検証命令アドレス」に「検証命令」、「前命令空間」７１に前命令、「後命令空間」７２に後命令が記憶されるようにメモリモジュール１２を記述する。また、テストプログラム生成部２１２は、前命令が分岐命令である場合、前命令の分岐先アドレスに「検証命令アドレス」が記憶されるようにメモリモジュール１２を記述する。これにより、論理検証シミュレート時、ＣＰＵ１０は、前命令が分岐命令である場合、分岐命令によって「検証命令アドレス」に分岐し「検証命令」を実行する。
【００４３】
ここで、具体例に基づいて、論理検証シナリオ生成部２１のテストプログラム生成処理を述べる。例えば、検証シナリオ条件入力部２１０は、図６の検証命令リストの「３（ＣＡＬＬ ＠Ｒ６）」、検証命令アドレスリストの「１（0x00000100）」、前後命令組合せリストの「３（（前命令）分岐処理Ａ／（後命令）演算処理Ａ）」の組合せの検証シナリオ条件を受け付ける（Ｓ１０１）。受け付けた検証シナリオ条件がＣＰＵ１０の仕様制限に該当しない場合（Ｓ１０２のＮＯ）、プログラム条件判定部２１１は、分割した検証シナリオ条件を各選択処理に渡す（Ｓ１０３）。
【００４４】
続いて、プログラム条件判定部２１１は、図６のテストライブラリ２１４から、検証命令リストＣＭの「３」に対応する「ＣＡＬＬ ＠Ｒ６」を、検証命令アドレスリストＣＭ＠の「１」に対応する「0x00000100」を、前後命令組合せリストＣＭＬの「３」に対応する「（前命令）分岐処理Ａ／（後命令）演算処理Ａ」を取得する（Ｓ１０４〜１０６）。なお、具体的に、分岐処理Ａは、次の命令である。
「ＬＤＩ：３２ （分岐先アドレス），Ｒ５」
「ＬＤＩ：３２ 0x00000500，Ｒ６」
「ＪＭＰ ＠Ｒ５」
また、演算処理Ａは、次の命令である。
「ＬＤＩ：３２0x00000300，Ｒ１」
そして、テストプログラム生成部２１２は、メモリ空間の検証命令アドレス「0x00000100」に検証命令「ＣＡＬＬ ＠Ｒ６」が、「前命令空間」７１に分岐処理Ａ「ＬＤＩ：３２ （分岐先アドレス），Ｒ５」「ＬＤＩ：３２ 0x00000500，Ｒ６」「ＪＭＰ ＠Ｒ５」が、「後命令空間」７２に演算処理Ａ「ＬＤＩ：３２ 0x00000300，Ｒ１」が記憶されるようにメモリモジュール１２を記述する。また、前命令が分岐命令であるため、テストプログラム生成部２１２は、前命令の（分岐先アドレス）８１に検証命令アドレス「0x00000100」が記憶されるようにメモリモジュール１２を記述する。
【００４５】
図８は、検証シナリオ条件に基づいて生成されたテストプログラムを格納したメモリモジュール１２の一例である。同図のように、「前命令空間」７１に分岐処理Ａが、「後命令空間」７２に演算処理Ａが、検証命令アドレス「0x00000100」に検証命令「ＣＡＬＬ ＠Ｒ６」が記憶される。また、分岐処理Ａの（分岐先アドレス）８１に検証命令アドレス「0x00000100」が記憶される。
【００４６】
図８のメモリモジュール１２によると、論理検証シミュレーションにおいて、ＣＰＵ１０は、まず前命令「ＬＤＩ：３２ 0x00000100，Ｒ５」「ＬＤＩ：３２ 0x00000500，Ｒ６」「ＪＭＰ ＠Ｒ５」を実行する。「ＪＭＰ ＠Ｒ５」が分岐命令であるため、続いて、ＣＰＵ１０は「＠Ｒ５」の示す分岐先アドレスに分岐する。「＠Ｒ５」には検証命令アドレス「0x00000100」８１が割り当てられているため、ＣＰＵ１０は検証命令アドレスに分岐し、検証命令「ＣＡＬＬ ＠Ｒ６」を実行する。
【００４７】
そして、検証命令「ＣＡＬＬ ＠Ｒ６」もまた分岐命令であるため、ＣＰＵ１０は「＠Ｒ６」の示す分岐先アドレス「0x00000500」８２、つまり、「分岐先命令空間」７３のアドレスに分岐し、当該空間に格納された「ＡＤＤ Ｒ７，Ｒ８」「ＲＥＴ」を実行する。「ＲＥＴ」は分岐元への復帰命令であるため、ＣＰＵ１０は分岐元に戻り、次の命令である後命令の「ＬＤＩ：３２ 0x00000300，Ｒ１」を実行する。このようにしてテストプログラムが実行される。
【００４８】
このように、テストプログラム生成部２１２は、ＲＴＬ記述されたメモリモジュール１２において、前命令が分岐命令である場合、前命令の分岐先アドレスに「検証命令アドレス」を記述することによって、前命令が分岐命令（上記の例ではＪＭＰ）であっても、前命令の後「検証命令」、後命令の順に命令が実行されるテストプログラムのメモリモジュール１２を生成することができる。
【００４９】
また、「検証命令」や後命令が分岐命令の場合、命令（上記の例ではＣＡＬＬ）の分岐先アドレスに、予め分岐先の命令が格納された「分岐先命令空間」７３のアドレスが指定されていることにより、テストプログラム生成部２１２は、予め用意された分岐先の命令を利用することができ、分岐先の命令を生成しなくてもよい。
【００５０】
このように、テストプログラム生成部２１２は、分岐先アドレスに分岐先の命令を格納した空間アドレスを指定した分岐命令（分岐命令やブレーク命令等）を、アクセスアドレスにデータアクセス用の空間アドレスを指定したデータアクセス命令を、「検証命令」及び前後命令として予め用意する。これにより、テストプログラム生成部２１２は、メモリモジュール１２が定義するメモリ空間について、「検証命令アドレス」に「検証命令」を、「前命令空間」７１「後命令空間」７２に前後命令が記憶されるように、また、前命令が分岐命令である場合に、当該前命令の分岐先アドレスに「検証命令アドレス」が記憶されるように記述するだけで、複数の命令を有するテストプログラムのメモリモジュール１２を生成できる。
【００５１】
続いて、期待値生成処理について述べる。
【００５２】
図９は、期待値生成の処理を表すフローチャート図である。まず、期待値生成部２２は、メモリモジュール１２のテストプログラムにおける開始アドレスから初めの命令を読み出す（Ｓ１２１）。次に、期待値生成部２２は、読み出した命令の要素分解処理を行う（Ｓ１２２）。
【００５３】
図１０は、期待値生成部２２の検証シナリオ要素分解処理（図９のＳ１２２）を表すフローチャート図である。期待値生成部２２は、読み出した命令をデコードしてデコード情報を生成し、命令種別判定処理Ｓ１２３に渡す（Ｓ１４１）。Ｓ１４２の処理については、第２の実施の形態例にて説明する。次に、期待値生成部２２は、デコード情報に基づいて、当該命令の分岐の有無情報を分岐判定処理Ｓ１２５へ渡し（Ｓ１４３）、デコード情報と命令のアドレス情報とをデータ抽出処理Ｓ１２６へ渡す（Ｓ１４４）。
【００５４】
図９に戻り、続いて、期待値生成部２２は、命令種別判定処理として、デコード情報に基づいて命令種別を判定し、当該命令種別に対応する期待値フォーマットのフォーマット番号を期待値フォーマット選択処理Ｓ１２７に渡す（Ｓ１２３）。この場合、期待値生成部２２は、命令のデコード情報に基づいて、当該命令の内容、及び、演算系、ロード／ストア系、分岐系（１〜４）、トラップ系等の命令種別を判別できる。また、期待値生成部２２は、分岐判定処理として、分岐の有無情報に基づいて、分岐有の場合に分岐用のフォーマット番号を期待値フォーマット選択処理Ｓ１２７に渡す（Ｓ１２５）。
【００５５】
図１２は、期待値フォーマットを表す図である。期待値フォーマットは、ＣＰＵ１０がある命令を実行して出力するひとつまたは複数の出力信号項目を有し、同じ出力信号項目を出力する命令種別毎に用意される。また、期待値フォーマットの出力信号項目には、期待値が命令種別及び外部入力要因に基づいて予め予測される固定値と、命令のデコード情報等に基づいて生成される非固定値とがある。同図において、固定値は下線付き、非固定値は斜体によって表される。なお、出力信号項目は同図の例に限定されるものではなく、検証対象のＣＰＵ１０によって異なる。
【００５６】
各出力信号項目について説明する。「命令アドレス」は、命令が格納されるメモリ空間のアドレスである。また、「分岐情報」は、命令が分岐元、分岐先であるか否かの情報であり、「分岐要因」はその分岐要因である。「ＥＩＴ要因」は、第２の実施の形態例で後述する。「ＣＰＵ状態」は、ＣＰＵ１０の状態を表す情報である。「アクセスアドレス」はデータアクセス系命令のアクセス対象のデータが格納されたアドレス、「ＲＷ情報」は書き込みか読み出しかの情報、「アクセスサイズ」はアクセス対象のデータサイズ、「ライトデータ」「リードデータ」はアクセス対象のデータ情報である。
【００５７】
「（１）演算系」種別の命令用の期待値フォーマットは、例えば「命令アドレス」、「ＣＰＵ状態」の出力信号項目を有する。「（２）ロード系」「（３）ストア系」種別の命令に対応する期待値フォーマットは、「命令アドレス」、「ＣＰＵ状態」に加え、ロード、ストア処理における「アクセスアドレス」、「ＲＷ情報」、「アクセスサイズ」、「リードデータ／ライトデータ」の出力信号項目を有する。なお、「ＲＷ情報」は、「（２）ロード系」、「（３）ストア系」それぞれの種別に基づいて予め予測可能であることにより固定値である。
【００５８】
そして、「（４）分岐１（ＪＭＰ系）」種別の命令用の期待値フォーマットは、例えば「命令アドレス」、「ＣＰＵ状態」に加え、「分岐情報」、「分岐要因」の出力信号項目を有する。ＪＭＰ系の命令では、必ず「分岐情報／分岐元」、「分岐要因／命令分岐」であるため、「分岐情報」「分岐要因」は固定値である。
【００５９】
また、ＣＡＬＬ系命令を実行すると、ＣＰＵ１０は、ＣＡＬＬ命令による分岐からの復帰情報（次命令のアドレス）を「スタック空間」７５に書き込む。そのため、「（５）分岐２（ＣＡＬＬ系）」種別の命令用の期待値フォーマットは、例えば、「（４）分岐１（ＪＭＰ系）」と同様の出力信号項目に加え、２行目に「スタック空間」７５への復帰情報の書き込み処理における「アクセスアドレス」、「ＲＷ情報」、「アクセスサイズ」、「ライトデータ」の出力信号項目を有する。なお、復帰情報の書き込み処理における「ＲＷ情報」は固定値「Ｗ」であり、「アクセスサイズ」はＣＰＵ１０の仕様に基づいて決められた固定値「４」である。
【００６０】
ＲＥＴ命令（リターン命令）は、分岐先から分岐元に戻るために実行される命令であり、「スタック空間」７５から復帰情報（分岐元の次の命令のアドレス）を読み出すことにより、分岐元に復帰する。そのため、「（６）分岐３（ＲＥＴ）」種別の命令用の期待値フォーマットは、1行目の「命令アドレス」、「分岐情報」、「分岐要因」、「ＣＰＵ状態」に加え、２行目の「スタック空間」７５から復帰情報の読み出し処理における「アクセスアドレス」、「ＲＷ情報」、「アクセスサイズ」、「リードデータ」の出力信号項目を有する。なお、同様にして、「分岐情報」、「分岐要因」、「ＲＷ情報」、「アクセスサイズ」は命令種別により予め期待値が予測される固定値である。
【００６１】
ＲＥＴＩ命令は、ＲＥＴ命令と同様に、分岐先から分岐元に戻るために実行される命令であり、「スタック空間」７５から復帰情報として次の命令のアドレスに加えプログラムステータスを読み出す。そのため、「（７）分岐４（ＲＥＴＩ）」種別の命令用の期待値フォーマットは、「（６）分岐３（ＲＥＴ）」種別の期待値フォーマットと同様の１、２行目の出力信号項目を有し、さらに３行目のプログラムステータスの読み出し処理における出力信号項目を有する。固定値は「（６）分岐３（ＲＥＴ）」種別の期待値フォーマットと同様である。
【００６２】
「（８）トラップ系」種別の命令を実行する場合、ＣＰＵ１０は、「ベクタテーブル」７８から「ＥＩＴルーチン空間」７７のトラップルーチンのアドレスを読み出すと共に、トラップ命令による分岐からの復帰情報（プログラムステータス、次の命令のアドレス）を「スタック空間」７５に書き込む。そのため、「（８）トラップ系」種別の命令用の期待値フォーマットは、1行目の「命令アドレス」、「分岐情報」、「分岐要因」、「ＣＰＵ状態」に加え、２行目の「ベクタテーブル」７８からの読み出し処理、３、４行目の「スタック空間」７５への復帰情報書き込み処理における出力信号項目を有する。固定値は「（６）分岐３（ＲＥＴ）」種別の期待値フォーマットと同様の出力信号項目に加え、「ＥＩＴ要因／トラップ」である。
【００６３】
なお、「（１２）分岐命令用」期待値フォーマットは、命令が分岐命令である場合に付加される分岐用の期待値フォーマットであり、他の期待値フォーマットの「フォーマット合成」項目の値が「ＯＦＦ」であるのに対し、当該項目の値が「ＯＮ」である。「（１２）分岐命令用」期待値フォーマットは、命令が分岐命令である場合、命令種別に対応する期待値フォーマットに付加され、その次に実行される命令の期待値フォーマットに合成される。なお、外部入力要因に対応する期待値フォーマット（９〜１１）については、第２の実施の形態例で後述する。
【００６４】
図９に戻り、期待値生成部２２は、期待値フォーマット選択処理として、命令種別判定処理によるフォーマット番号と、分岐判定処理による分岐用のフォーマット番号とに基づいて、命令の期待値フォーマットを選択する（Ｓ１２７）。
【００６５】
図１１は、期待値フォーマット選択処理（Ｓ１２７）を表すフローチャート図である。期待値生成部２２は、期待値フォーマット記憶部２２１から、命令種別に対応するフォーマット番号の期待値フォーマットを取得する（Ｓ１５１）。そして、期待値生成部２２は、分岐有の場合、（Ｓ１５２のＹＥＳ）、期待値フォーマット記憶部２２１から分岐用の期待値フォーマットを取得して命令種別に対応する期待値フォーマットに付加し（Ｓ１５３）、フォーマットを確定する（Ｓ１５４）。一方、期待値生成部２２は、分岐無の場合（Ｓ１５２のＮＯ）、命令種別に対応する期待値フォーマットを、フォーマットとして確定する（Ｓ１５４）。
【００６６】
図９に戻り、期待値生成部２２は、データ抽出処理として、検証シナリオ要素分解処理（Ｓ１２２）から渡された命令をデコードして得たデコード情報に基づいて、デコード情報、メモリ空間のアドレス、当該アドレスに格納されたメモリ情報等からデータを抽出し期待値生成処理に渡す（Ｓ１２６）。期待値生成部２２は、抽出されたデータに基づいて、期待値フォーマットの出力信号項目に対応する期待値を生成し（Ｓ１２８）、期待値データ２５としてメモリ等に格納する（Ｓ１２９）。
【００６７】
そして、期待値生成部２２は、期待値生成処理の後、テストプログラムの全ての命令について期待値を生成したか否かを確認する（Ｓ１３０）。具体的に、期待値生成部２２は、例えば、命令アドレスが「後命令空間」７２の末尾に達したか否かによって、テストプログラムの全ての命令について期待値を生成したか否かを判定する。
【００６８】
期待値を生成していない命令がある場合（Ｓ１３０のＮＯ）、期待値生成した命令の命令アドレスに命令長を加算し、次の命令の命令アドレスを取得する（Ｓ１３１）。この時、期待値を生成した命令が分岐命令である場合、分岐命令の分岐先の命令アドレスを取得する。そして、取得した命令アドレスに基づいてメモリモジュール１２内のテストプログラムから次の命令を読み出し、期待値を生成する（Ｓ１２１〜Ｓ１２９）。このように、期待値生成部２２は、テストプログラムの初めの命令から実行される順に期待値を生成する。
【００６９】
一方、テストプログラムの全ての命令について期待値を生成すると（Ｓ１３０のＹＥＳ）、期待値生成部２２は、期待値生成処理を終了する。そして、シミュレータは、生成されたテストプログラムのメモリモジュール１２と期待値とに基づいて、ＣＰＵ１０の論理検証を行う。そして、論理検証の後、論理検証シナリオ生成部２１は、次の検証シナリオ条件を受け付け、同様にテストプログラムのメモリモジュール１２及び期待値の生成処理を行う。
【００７０】
以下、図８のテストプログラムに基づく期待値生成の具体例を述べる。期待値生成部２２は、テストプログラムの初めの命令「ＬＤＩ：３２ 0x100000100，Ｒ５」を読み出す（Ｓ１２１）。そして、期待値生成部２２は、検証シナリオ要素分解処理として（Ｓ１２２）、当該命令をデコードして命令が「ＬＤＩ：３２」であること、分岐無であることを判別し、命令種別判定処理へ渡すと共に（図１０のＳ１４１）、分岐無である情報を分岐判定処理へ渡す（図１０のＳ１４３）。また、期待値生成部２２は、デコード情報と命令「ＬＤＩ：３２」のアドレス情報「0x00000000」とをデータ抽出処理へ渡す（図１０のＳ１４４）。
【００７１】
続いて、期待値生成部２２は、「ＬＤＩ：３２」命令が演算系の命令であることから、演算系の命令に対応するフォーマット番号「１」を（Ｓ１２３）、分岐無である情報に基づいて分岐用の期待値フォーマット無の情報を（Ｓ１２５）、フォーマット選択処理に渡す。そして、期待値生成部２２は、図１１のフローチャート図に基づいて、命令種別に対応するフォーマット番号「１」（Ｓ１５１）と分岐用の期待値フォーマット無の情報（Ｓ１５２のＮＯ）に基づいて、期待値フォーマット記憶部２２１から期待値フォーマット「１」を取得してフォーマットを確定する（Ｓ１５４）。このようにして、命令「ＬＤＩ：３２ 0x00000100，Ｒ５」に対応する期待値フォーマット「１」が選択される。
【００７２】
図１３は、図８のテストプログラムの各命令に対応する期待値フォーマットを表す図である。前述した通り、命令「ＬＤＩ：３２ 0x00000100，Ｒ５」に対応する期待値フォーマットは「１」である（ａ）。また、命令「ＪＭＰ ＠Ｒ５」は、ＪＭＰ系の分岐命令であることから期待値フォーマット「（４）分岐１（ＪＭＰ系）」（ｃ）に加え、分岐用の期待値フォーマット「（１２）分岐命令用」（ｄ）が選択される。同様に、検証命令「ＣＡＬL ＠Ｒ６」はＣＡＬＬ系の分岐命令であることから、期待値フォーマット「（５）分岐２（ＣＡＬＬ系）」（ｅ-1,２）に加え、分岐用の期待値フォーマット「（１２）分岐命令用」（ｆ）が選択される。
【００７３】
図１４は、図８のテストプログラムに対応する期待値を表す図である。同図において、命令「ＬＤＩ：３２ 0x00000100，Ｒ５」の出力信号項目の期待値として（ａ）、「命令アドレス／0x00000000」、「ＣＰＵ状態／状態Ａ」が生成されている。具体的に、期待値生成部２２は、命令「ＬＤＩ：３２ 0x100000100，Ｒ５」のデータ抽出処理として、デコード情報に基づいて、命令「ＬＤＩ：３２」がＣＰＵの状態を制御する命令ではないことにより初期のＣＰＵ状態「状態Ａ」と、命令のアドレス「0x00000000」とを抽出する（Ｓ１２６）。そして、期待値生成部２２は、抽出したデータに基づいて、期待値フォーマット「１」の出力信号項目の期待値「ＣＰＵ状態／状態Ａ」、「命令アドレス／0x00000000」を生成する（Ｓ１２８）。
【００７４】
また、命令「ＪＭＰ ＠Ｒ５」について、期待値生成部２２は、同様に、デコード情報に基づいて、命令「ＪＭＰ」がＣＰＵの状態を制御する命令ではないことにより「状態Ａ」と、命令のアドレス「0x0000000C」とを抽出する。これにより、命令「ＪＭＰ ＠Ｒ５」の期待値フォーマット（図１４のｃ）について、固定値「分岐情報／分岐元」、「分岐要因／命令分岐」に加え、「命令アドレス／0x0000000C」、「ＣＰＵ状態／状態Ａ」が期待値として生成される。また、同様に、分岐用の期待値フォーマット（図１４のｄ）について、「分岐情報／分岐先」、「分岐要因／命令分岐」、「ＣＰＵ状態／状態Ａ」が期待値として生成される。
【００７５】
命令「ＣＡＬＬ ＠Ｒ６」について、期待値生成部２２は、デコード情報に基づいて、「ＣＰＵ状態」、「命令アドレス」に加え、ＣＡＬＬ命令に伴う復帰情報のスタック空間への書き込み処理における「アクセスアドレス」としてスタック空間の書き込みアドレス「0x000007FC」、「ライトデータ」として分岐元の次命令のアドレス「0x00000102」を抽出する。これにより、命令「ＣＡＬＬ ＠Ｒ６」の期待値フォーマット（図１４のｅ-１,２）について、固定値「分岐情報／分岐元」、「分岐要因／命令分岐」「ＲＷ情報／Ｗ」「アクセスサイズ／４」に加え、「命令アドレス／0x00000100」「ＣＰＵ状態／状態Ａ」「アクセスアドレス／0x000007FC」「ライトデータ／0x00000102」が期待値として生成される。
【００７６】
また、期待値生成部２２は、フォーマット合成項目が「ＯＮ」である分岐用の期待値フォーマット（ｄ）と、次の命令「ＣＡＬＬ ＠Ｒ６」の始めの期待値フォーマット（ｅ-１）とを合成して、合成期待値フォーマット（ｄ,ｅ-１）を生成する。具体的に、期待値生成部２２は、期待値が同一の出力信号項目については当該期待値を、期待値の異なる出力信号項目については合成した値「分岐情報／分岐先元」（ｄ,ｅ-１）を期待値として生成する。
【００７７】
このように、図１２で示した「（１２）分岐命令用」の期待値フォーマットが次の命令の期待値フォーマットに合成されることにより、期待値生成部２２は、分岐先の命令（上記の例では、ＣＡＬＬ）について、分岐先の命令である旨の期待値を生成することができる。また、期待値フォーマットが命令種別に基づいて予め予測された固定値（期待値）を有することにより、期待値生成部２２は、非固定値に対してのみ期待値を生成すればよい。
【００７８】
このようにして、期待値生成部２２は、命令に対応する出力信号項目を有する期待値フォーマットを取得し、その命令のデコード情報に基づいて出力信号項目に対応する期待値を生成する。また、期待値生成部２２は、さらに、命令のアドレス、及び、デコード情報に基づく予め用途別に区分されたメモリ空間のアドレス、当該アドレスに予め格納されたメモリ情報に基づいて期待値を生成する。これにより、期待値生成部２２は、ＣＰＵ１０がテストプログラムの各命令を実行して出力する信号を予測した期待値を生成することができる。
【００７９】
以上のように、本実施の形態例における論理検証シナリオ生成装置は、検証シナリオ条件として、「検証命令」「検証命令アドレス」「前後命令組合せ」の組合せをテストライブラリ２１４の各リストから順次選択する。そして、論理検証シナリオ生成装置は、選択した検証シナリオ条件に基づいて、用途別に区分されたメモリ空間の「前命令空間」７１に前命令を「後命令空間」７２に後命令を、「検証命令アドレス」に「検証命令」を、また、前命令が分岐命令である場合の分岐先アドレスに「検証命令アドレス」を記憶するようにメモリモジュール１２を記述することによって、テストプログラムを格納するメモリモジュール１２生成する。そして、論理検証シナリオ生成装置は、テストプログラムの各命令について、命令のデコード情報に基づいて、期待値フォーマット記憶部２２１から対応する期待値フォーマットを取得し、当該期待値フォーマットの有する出力信号に対応する期待値を生成する。
【００８０】
これにより、論理検証シナリオ生成装置は、順次選択した検証シナリオ条件の組合せに基づいて、テストプログラムを格納するメモリモジュール１２、及びテストプログラムの各命令に対応する期待値を網羅的に自動生成することができ、その生成にかかる負荷やミスを抑えることができる。
【００８１】
また、ＣＰＵ１０の出力信号は命令の組合せや順番によっても影響を受ける。そこで、本実施の形態例における論理検証シナリオ生成装置は、「検証命令」と「前後命令組合せ」の検証シナリオ条件を網羅的に組み合わせて複数の命令を有するテストプログラムを格納するメモリモジュール１２を生成することにより、ＣＰＵ１０に適した論理検証を実現することができる。
【００８２】
また、本実施の形態例における論理検証シナリオ生成装置は、検証シナリオ条件として、「検証命令」を記憶するメモリ空間の「検証命令アドレス」が選択されることにより、命令が格納されるメモリ空間上のアドレスの検証を行うことができる。なお、論理検証シナリオ生成装置は、「検証命令アドレス」に、「分岐先命令空間」７３や「ブレーク空間」７６のアドレスを選択させてもよい。ただし、「検証命令アドレス」に「分岐先命令空間」７３や「ブレーク空間」７６のアドレスが選択される場合、前命令には分岐命令やブレーク命令を含む分岐処理が選択される必要がある。
【００８３】
さらに、以上、検証シナリオ条件として「検証命令アドレス」が選択される例を述べたが、論理検証シナリオ生成装置は、「検証命令アドレス」を検証シナリオ条件に含まなくてもよい。論理検証シナリオ生成装置は、予め固定の「検証命令アドレス」を決めておき、「検証命令」と「前後組合せ」に基づいてテストプログラムを格納したメモリモジュール１２及び期待値を生成してもよい。
【００８４】
［第２の実施の形態例］
第２の実施の形態例では、検証シナリオ条件として、第１の実施の形態例で述べた「検証命令」「検証命令アドレス」「前後命令組合せ」に加え、さらに、「検証命令」に対して入力する「外部入力要因」と、当該「外部入力要因」の「外部入力タイミング」とが選択される。
【００８５】
本実施の形態例におけるＣＰＵ１０及びメモリモジュール１２は、図１、２と同様である。ただし、本実施の形態例における論理検証シナリオ生成装置は、上記の検証シナリオ条件に基づいて、さらに、ＲＴＬ記述された外部入力信号生成モジュール１１（図３）を生成する。外部入力信号生成モジュール１１は、論理検証シミュレーション実行時にＣＰＵ１０が実行する「検証命令」の「外部入力タイミング」に「外部入力要因」に基づく信号を出力する。
【００８６】
図１５は、テストライブラリ２１４における外部入力要因リストＥＸ、外部入力タイミングリストＥＸＴを表す図である。テストライブラリ２１４には、検証命令リストＣＭ、検証命令アドレスリストＣＭ＠、前後命令組合せリストＣＭＬに加え、「外部入力要因」を複数有する外部入力要因リストＥＸ、「外部入力タイミング」を複数有する外部入力タイミングリストＥＸＴが検証者等によって予め格納される。また、同図のテストライブラリ２１４において、それぞれの「外部入力要因」、「外部入力タイミング」は、例えば、「１〜ｎ」の数字等の識別記号に対応付けられる。
【００８７】
「外部入力要因」は、例えば、割り込み、例外、トラップ等の要因に基づく入力信号である。割り込みは、実行中の命令とは関係なく発生する外部からのハードウェア的な割り込みであり、例外は、命令実行に伴うエラーや違反等によって発生するアドレス例外等である。また、トラップは、プログラム中に意図的に発生させる割り込みである。シミュレーション実行時に、命令に割り込みや例外等の「外部入力要因」が発生すると、ＣＰＵ１０は、図７のメモリモジュール１２が定義するメモリ空間の「ベクタテーブル」７８から当該「外部入力要因」に対応する所定処理（ＥＩＴルーチン）が予め格納された「ＥＩＴルーチン空間」７７の先頭アドレスを取得し、当該先頭アドレスに分岐してＥＩＴルーチンを実行する。
【００８８】
また、本実施の形態例における「外部入力タイミング」は、ＣＰＵ１０の「検証命令」のパイプライン処理における「外部入力要因」を発生させるステージであり、「検証命令フェッチタイミング」「検証命令デコードタイミング」「検証命令実行タイミング」等である。
【００８９】
本実施の形態例におけるテストプログラムを格納するメモリモジュール１２、及び、外部入力信号生成モジュール１１の生成処理を図５のフローチャート図に基づいて説明する。本実施の形態例の検証シナリオ条件入力部２１０は、テストライブラリ２１４から検証シナリオ条件として、「検証命令」「検証命令アドレス」「前後命令組合せ」に加え、「外部入力要因」、「外部入力タイミング」とを受け付ける（Ｓ１０１）。
【００９０】
検証シナリオ条件入力部２１０は、選択された検証シナリオ条件が検証対象のＣＰＵ１０の仕様制限に該当しない場合（Ｓ１０２のＮＯ）、検証シナリオ条件判定処理として、選択した検証シナリオ条件を分割し、「検証命令」を検証命令選択処理Ｓ１０４へ、「前後命令組合せ」を前後命令選択処理Ｓ１０５へ、「検証命令アドレス」を検証命令アドレス選択処理Ｓ１０６へ渡すと共に、「外部入力要因」を外部入力要因選択処理Ｓ１１０へ、「外部入力タイミング」を外部入力タイミング選択処理Ｓ１１１へ渡す（Ｓ１０３）。
【００９１】
検証命令選択処理（Ｓ１０４）、前後命令選択処理（Ｓ１０５）、及び、テストプログラム生成処理（Ｓ１０７）は、第１の実施の形態例と同様である。ただし、プログラム条件判定部２１１は、検証命令アドレス選択処理として、「検証命令アドレス」をさらに外部入力信号パラメータ生成処理Ｓ１１２へ渡す（Ｓ１０６）。そして、外部入力信号生成部２１３は、外部入力要因選択処理として「外部入力要因」の識別記号に基づいて「外部入力要因」を（Ｓ１１０）、外部入力タイミング選択処理として「外部入力タイミング」の識別記号に基づいて「外部入力タイミング」を（Ｓ１１１）、テストライブラリ２１４から選択する。
【００９２】
続いて、外部入力信号生成部２１３は、「検証命令アドレス」と「外部入力要因」と「外部入力タイミング」とに基づいて、外部入力信号パラメータを生成する（Ｓ１１２）。外部入力信号生成部２１３は、生成した外部入力信号パラメータを外部入力信号生成モジュール１１に記述する（Ｓ１１３）。
【００９３】
図１６は、「外部入力要因」が割り込みである外部入力信号生成モジュール１１の一例を表す図である。同図の外部入力信号生成モジュール１１は、Verilog HDLによって記述されている。ただし、外部入力信号生成モジュール１１は、同図の記述に限定されるものではない。
【００９４】
図１６の記述１６１において、変数「int_addr」「int_stage」が定義され、「int_addr」に割り込みを発生させる「検証命令」の「検証命令アドレス」を示す値が、「int_stage」に「外部入力タイミング」を示す値が入力される。そして、図１６の記述１６２において、シミュレーション実行中、ＣＰＵ１０の「int_stage（外部入力タイミング）」のステージの命令のアドレスが「int_addr（検証命令アドレス）」である場合に、割り込み信号を発生させる処理が記述されている。これにより、外部入力信号生成モジュール１１は、論理検証シミュレーション実行時、「int_addr」の示す「検証命令アドレス」が「int_stage」ステージである時に、割り込み信号を生成する。
【００９５】
具体的に、外部入力信号生成部２１３は、外部入力信号パラメータとして、「外部入力要因」に対応する変数「int_addr」に「検証命令アドレス」を示す値を、「int_stage」に「外部入力タイミング」を示す値を生成する（Ｓ１１２）。そして、生成した外部入力信号パラメータを「外部入力要因」に対応するモジュールに記述して、外部入力信号生成モジュール１１を生成する（Ｓ１１３）。
【００９６】
このように、論理検証シナリオ生成部２１は、「外部入力要因」、「検証命令アドレス」、「外部入力タイミング」に基づく外部入力信号パラメータを生成して、対応するモジュールに記述し、外部入力信号生成モジュール１１を生成する。これにより、外部入力信号生成モジュール１１は、論理検証シミュレーション実行時、「検証命令」の「外部入力タイミング」に「外部入力要因」を発生させることができる。
【００９７】
図１７は、検証シナリオ条件に基づいて生成されたテストプログラムを格納するメモリモジュール１２の一例である。同図は、図６の「検証命令」「１（ＡＤＤ Ｒ１，Ｒ２）」、「検証命令アドレス」「１（0x00000100）」、「前後命令組合せ」「４（（前命令）分岐処理Ｂ／（後命令）演算処理Ａ）」、図１５の「外部入力要因」「１（割り込み信号）」、「外部入力タイミング」「３（検証命令実行タイミング）」の検証シナリオ条件に基づいて生成されたテストプログラムを格納するメモリモジュール１２である。具体的に、分岐処理Ｂは、次の命令である。
「ＬＤＩ：３２ （分岐先アドレス），Ｒ５」
「ＪＭＰ ＠Ｒ５」
また、演算処理Ａは、次の命令である。
「ＬＤＩ：３２ 0x00000300，Ｒ１」
図１７のテストプログラムを格納するメモリモジュール１２において、「前命令空間」７１に分岐処理Ｂが、「後命令空間」７２に演算処理Ａが、検証命令アドレス「0x00000100」に検証命令「ＡＤＤ Ｒ１，Ｒ２」が、分岐処理Ｂの（分岐先アドレス）１７１に検証命令アドレス「0x00000100」が記憶されるように記述される。同図のテストプログラムによると、論理検証シミュレーション実行時に、ＣＰＵ１０は、まず前命令「ＬＤＩ：３２ 0x00000100，Ｒ５」「ＪＭＰ ＠Ｒ５」を実行する。「ＪＭＰ ＠Ｒ５」が分岐命令であるため、ＣＰＵ１０は「＠Ｒ５」の示す分岐先アドレス「0x00000100」に分岐し、続いて、検証命令「ＡＤＤ Ｒ１，Ｒ２」を実行する。
【００９８】
ただし、検証命令「ＡＤＤ Ｒ１，Ｒ２」には、「検証命令実行タイミング」に、外部入力信号生成モジュール１１から割り込み信号が入力される。ＣＰＵ１０は、割り込み信号が入力されると、「ベクタテーブル」７８から「ＥＩＴルーチン空間」７７における割り込み信号ルーチンの先頭アドレス「0x00001000」１７２を取得し、当該アドレスに予め格納された命令「ＡＤＤ Ｒ３，Ｒ４」「ＲＥＴＩ」を実行する。「ＲＥＴＩ」は分岐先からの復帰命令であるため、ＣＰＵ１０は、分岐元に戻り、次の命令である「ＬＤＩ：３２ 0x00000300，Ｒ１」を実行する。
【００９９】
このように、論理検証シナリオ生成部２１は、メモリ空間において、「外部入力要因」毎に、当該「外部入力要因」発生時に実行される命令（ＥＩＴルーチン）を格納した「ＥＩＴルーチン空間」７７の先頭アドレスを「ベクタテーブル」７８に予め格納する。これにより、テストプログラム生成部２１２は、「検証命令」の「外部入力タイミング」に「外部入力要因」が発生する場合のテストプログラムについても、第１の実施の形態例と同様に自動的に生成することができる。
【０１００】
引き続き、期待値生成処理について、図９のフローチャート図に基づいて説明する。期待値生成部２２は、テストプログラムの開始アドレスから順に命令を読み出し（Ｓ１２１）、読み出した命令の要素分解処理を行う（Ｓ１２２）。
【０１０１】
期待値生成部２２は、検証シナリオ要素分解処理として（Ｓ１２２、図１０）、第１の実施の形態例と同様に、命令をデコードしてデコード情報を生成し、命令種別判定処理に渡す（図１０のＳ１４１）。そして、期待値生成部２２は、外部入力信号パラメータに基づいて、外部入力信号のＥＩＴ要因を抽出してＥＩＴ要因判定処理に渡し（図１０のＳ１４２）、デコード情報とＥＩＴ要因の有無とに基づいて、命令の分岐の有無情報を生成して分岐判定処理へ渡す（図１０のＳ１４３）。なお、ＥＩＴ要因により分岐が発生するため、ＥＩＴ要因が有の場合は分岐有となる。そして、期待値生成部２２は、第１の実施の形態例と同様に、デコード情報と命令のアドレス情報とをデータ抽出処理へ渡す（図１０のＳ１４４）。
【０１０２】
図９に戻り、続いて、期待値生成部２２は、第１の実施の形態例と同様に、命令種別判定処理として命令種別に対応するフォーマット番号を（Ｓ１２３）、分岐判定処理として分岐有の場合に分岐用のフォーマット番号を（Ｓ１２５）、期待値フォーマット選択処理（Ｓ１２７）に渡す。そして、期待値生成部２２は、ＥＩＴ要因判定処理として、ＥＩＴ要因に対応するフォーマット番号を選択し、期待値フォーマット選択処理（Ｓ１２７）へ渡す（Ｓ１２４）。
【０１０３】
図１２の期待値フォーマット「９〜１１」は、ＥＩＴ要因に対応する期待値フォーマットである。ＥＩＴ要因に対応する期待値フォーマットには、例えば、「（９）非同期ＥＩＴ」、「（１０）同期ＥＩＴ」「（１１）ブレーク」があり、ＥＩＴ要因に対応して選択される。例えば、ＥＩＴ要因が「割り込み」の場合、「割り込み」は非同期ＥＩＴであるため、「（９）非同期ＥＩＴ」の期待値フォーマットが選択される。
【０１０４】
割り込み信号が発生すると、ＣＰＵ１０は、「ベクタテーブル」７８から「ＥＩＴルーチン空間」７７の割り込みルーチンのアドレスを読み出すと共に、割り込み信号発生による分岐からの復帰情報（プログラムステータス、次命令のアドレス）を「スタック空間」７５に書き込む。そのため、「（９）非同期ＥＩＴ」外部入力要因用の期待値フォーマットは、１行目に、「ベクタテーブル」７８から割り込みルーチンの格納アドレスを読み出す処理における「命令アドレス」、「分岐情報（固定値）」、「分岐要因（固定値）」、「ＥＩＴ要因」、「ＣＰＵ状態」、「アクセスアドレス」、「ＲＷ情報（固定値）」、「アクセスサイズ（固定値）」、「リードデータ」の出力信号項目を有する。
【０１０５】
そして、「（９）非同期ＥＩＴ」外部入力要因用の期待値フォーマット２〜３行目は、スタック空間に復帰情報を書き込む処理における「ＣＰＵ状態」、「アクセスアドレス」、「ＲＷ情報（固定値）」、「アクセスサイズ（固定値）」、「ライトデータ」の出力信号項目を有する。
【０１０６】
続いて、図１１において（Ｓ１２７）、期待値生成部２２は、命令種別判定処理で選択したフォーマット番号と、ＥＩＴ要因判定処理で選択したフォーマット番号とに基づいて、フォーマットを選択する（Ｓ１５１）。具体的に、期待値生成部２２は、ＥＩＴ要因に対応するフォーマット番号がある場合は、命令種別ではなくＥＩＴ要因に対応するフォーマット番号の期待値フォーマットを取得する。そして、期待値生成部２２は、分岐有の場合（Ｓ１５２のＹＥＳ）、命令種別、ＥＩＴ要因判定に基づく期待値フォーマットに分岐用の期待値フォーマットを付加して（Ｓ１５３）、期待値フォーマットを確定する（Ｓ１５４）。
【０１０７】
図９に戻り、期待値生成部２２は、第１の実施の形態例と同様、データ抽出処理（Ｓ１２６）に基づく抽出データに基づいて、期待値フォーマットの出力信号項目に対応する期待値を生成する（Ｓ１２８、１２９）。
【０１０８】
以下、図１７のテストプログラムに基づく期待値生成の具体例を述べる。なお、同図のテストプログラムにおいて、「外部入力要因」の発生しない命令に対する期待値生成処理は、第１の実施の形態例と同様である。従って、以下に「外部入力要因」の発生する検証命令「ＡＤＤ Ｒ１，Ｒ２」の期待値生成処理について説明する。
【０１０９】
期待値生成部２２は、命令「ＡＤＤ Ｒ１，Ｒ２」を読み出し（Ｓ１２１）、検証シナリオ要素分解処理として（Ｓ１２２）、当該命令をデコードして、命令が「ＡＤＤ」であるという情報を命令種別判定処理へ渡すと共に（図１０のＳ１４１）、「外部入力要因」に基づいてＥＩＴ要因「割り込み」を抽出してＥＩＴ要因判定処理へ渡す（図１０のＳ１４２）。そして、期待値生成部２２は、「ＡＤＤ」命令が分岐無であるものの、ＥＩＴ要因「割り込み」に基づいて分岐有という情報を分岐判定処理へ渡す（図１０のＳ１４３）。また、期待値生成部２２は、デコード情報と命令のアドレス情報「0x00000100」とをデータ抽出処理へ渡す（図１０のＳ１４４）。
【０１１０】
続いて、期待値生成部２２は、「ＡＤＤ」命令が演算系の命令であることを判別し、演算系の命令に対応するフォーマット番号「１」を（Ｓ１２３）、ＥＩＴ要因「割り込み」に基づいて「（９）非同期」の期待値フォーマットのフォーマット番号「９」を（Ｓ１２４）、分岐有である情報に基づいて分岐用の期待値フォーマット「１２」を（Ｓ１２５）、フォーマット選択処理に渡す。
【０１１１】
そして、期待値生成部２２は、図１１のフローチャート図に基づいて、命令種別に対応するフォーマット番号「１」ではなく、ＥＩＴ要因に対応するフォーマット番号「９」に基づいて、ＥＩＴ要因に対応する期待値フォーマット「９」を選択する（Ｓ１５１）。また、分岐有により（Ｓ１５２のＹＥＳ）、期待値生成部２２は、期待値フォーマット記憶部２２１から期待値フォーマット「９」「１２」を選択してフォーマットを確定する（Ｓ１５４）。このようにして、割り込み信号が発生する命令「ＡＤＤ Ｒ１，Ｒ２」に対応する期待値フォーマットが選択される。
【０１１２】
図１８は、図１７のテストプログラムの各命令に対応する期待値フォーマットを表す図である。前述した通り、「外部入力要因」が発生する検証命令「ＡＤＤ Ｒ１，Ｒ２」に対応する期待値フォーマットは「９」「１２」である（ｌ-１〜３，ｍ）。
【０１１３】
続いて、図１９は、図１７のテストプログラムに対応する期待値を表す図である。以下に、検証命令「ＡＤＤ Ｒ１，Ｒ２」について、期待値を生成する処理について述べる。
【０１１４】
期待値生成部２２は、命令「ＡＤＤ Ｒ１，Ｒ２」のデータ抽出処理として、デコード情報に基づいて、命令「ＡＤＤ」がＣＰＵの状態を制御する命令ではないことによる初期のＣＰＵ状態「状態Ａ」、ＥＩＴ要因「割り込み」、及び命令アドレス「0x00000100」を抽出する（Ｓ１２６）。また、期待値生成部２２は、ＥＩＴ要因「割り込み」に基づいて、「ベクタテーブル」７８からの割り込みルーチンの格納アドレスの読み出し処理における「アクセスアドレス」としてベクタテーブルのアドレス「0xFFFF1000」、「リードデータ」としてベクタテーブルのメモリ情報「0x0001000」を抽出する。さらに、期待値生成部２２は、復帰情報のスタック空間への書き込み処理における「アクセスアドレス」として２つ分情報のスタック空間への書き込みアドレス「0x000007F8／0x000007FC」、「ライトデータ」として「ＰＳ（プログラムステータス）／次の命令アドレス（0x00000102）」を抽出する。
【０１１５】
これにより、分岐用の期待値フォーマット（ｋ）が合成された命令「ＡＤＤ Ｒ１，Ｒ２」の期待値フォーマット（図１９のｋ,ｌ-１）について、「ＲＷ情報／Ｒ」「アクセスサイズ／４」、「命令アドレス／0x00000100」、「ＥＩＴ要因／割り込み」「ＣＰＵ状態／状態Ａ」「アクセスアドレス／0xFFFF1000」「リードデータ／0x00001000」が期待値として生成される。また、分岐用の期待値フォーマット（ｋ）が合成されたことにより、「分岐情報／分岐先元」、「分岐要因／命令分岐・非同期ＥＩＴ」が期待値として生成される。
【０１１６】
また、命令「ＡＤＤ Ｒ１，Ｒ２」の期待値フォーマット（図１９のｌ-２，３）について、固定値「ＲＷ情報／Ｗ」「アクセスサイズ／４」に加え、「ＣＰＵ状態／状態Ａ」「アクセスアドレス／0x000007FC、0x000007F8」「ライトデータ／ＰＳ、0x00000102」が期待値として生成される。また、検証命令「ＡＤＤ Ｒ１，Ｒ２」の分岐用の期待値フォーマット（ｍ）は、次の命令「ＡＤＤ Ｒ３，Ｒ４」に対応する期待値フォーマット（ｎ）に合成される。
【０１１７】
このようにして、期待値生成部２２は、命令に対して「外部入力要因」が発生する場合、「外部入力要因」に対応する出力信号項目を有する期待値フォーマットを取得し、「外部入力要因」のＥＩＴ要因に基づいて出力信号項目に対応する期待値を生成する。また、期待値生成部２２は、さらに、ＥＩＴ要因に基づく予め用途別に区分されたメモリ空間のアドレス、当該アドレスに予め格納されたメモリ情報に基づいて期待値を生成する。これにより、期待値生成部２２は、「外部入力要因」が発生する場合においても、ＣＰＵ１０がテストプログラムの各命令を実行して出力する信号を予測した期待値を生成することができる。
【０１１８】
また、本実施の形態例における論理検証シナリオ生成装置は、検証シナリオ条件に、「外部入力タイミング」が選択されることにより、「外部入力要因」を「検証命令」に発生させるタイミングを指定した論理検証を行うことができる。ただし、論理検証シナリオ生成装置は、「外部入力タイミング」を検証シナリオ条件に含まなくてもよい。
【０１１９】
また、本実施の形態例の論理検証シナリオ生成装置は、「検証命令アドレス」に「ＥＩＴルーチン空間」７７のアドレスを選択させてもよい。ただし、「検証命令アドレス」に「ＥＩＴルーチン空間」７７のアドレスが選択される場合、前命令には外部入力要因の発生する処理（割り込み処理等）が選択される必要がある。
【０１２０】
さらに、本実施の形態例における期待値フォーマットは、同じ出力信号項目を出力する命令種別毎に用意されることにより、期待値フォーマット記憶部のデータ容量が抑えられる。しかし、期待値フォーマットは、それぞれの命令、及び、外部入力信号毎に用意されてもよい。
【０１２１】
なお、本実施の形態例では、図１２のような出力信号項目を例示したが、出力信号項目はＣＰＵ１０によって異なり、同図の例に限定されるものではない。なお、本実施の形態例における出力信号項目は、ＣＰＵ１０の命令サイクル完了時に出力される項目である。しかし、出力信号項目は、例えば、ＣＰＵ１０のクロックサイクル毎に取得される項目でもよいし、取得が有効な特定のサイクルに取得される項目でもよい。
【０１２２】
以上の実施の形態をまとめると、次の付記のとおりである。
【０１２３】
（付記１）
ＲＴＬ記述されたＣＰＵの論理検証のためのテストプログラムを生成する論理検証シナリオ生成装置であって、
検証命令を複数有する検証命令リストと、前記検証命令の前に実行する前命令、及び後に実行する後命令の前後命令組合せを複数有する前後命令組合せリストとを格納するテストライブラリと、
前記ＣＰＵが前記命令を実行して出力するひとつまたは複数の出力信号項目を有する期待値フォーマットを格納する期待値フォーマット記憶部と、
前記検証命令を記憶するための検証命令アドレスと、前記前命令を格納する前命令空間と、前記後命令を格納する後命令空間と、前記命令がデータアクセス命令である場合のアクセス対象のデータ空間と、前記命令が分岐命令である場合の分岐先命令を格納する分岐命令空間と、前記命令が分岐後復帰命令である場合に復帰情報を格納するスタック空間とを有するメモリモジュールであって、前記テストライブラリから順次選択した前記検証命令と前記前後命令組合せとに基づいて、前記検証命令アドレスに前記検証命令を、前記前命令空間に前記前命令を、前記後命令空間に前記後命令を記憶すると共に、前記前命令が前記分岐命令である場合に前記前命令の分岐先アドレスに前記検証命令アドレスを記憶したメモリモジュールを前記テストプログラムとして生成するテストプログラム生成部と、
前記生成したテストプログラムの各命令について、当該命令に対応する前記期待値フォーマットを前記期待値フォーマット記憶部から取得し、当該命令をデコードしたデコード情報に基づいて前記出力信号項目に対応する期待値を生成する期待値生成部と、
を有することを特徴とする論理検証シナリオ生成装置。
【０１２４】
（付記２）
付記１において、
前記テストライブラリは、さらに、前記検証命令アドレスを複数有する検証命令アドレスリストを格納し、
前記テストプログラム生成部は、さらに、前記テストライブラリから前記検証命令アドレスを順次選択することを特徴とする論理検証シナリオ生成装置。
【０１２５】
（付記３）
付記１または２において、
前記テストライブラリは、さらに、前記検証命令に対して発生させる外部入力信号を複数有する外部入力信号リストを格納し、
前記テストプログラム生成部は、さらに、前記外部入力信号リストの各前記外部入力信号に対応する外部入力命令を格納する外部入力命令空間と、前記外部入力命令空間における各前記外部入力信号の前記外部入力命令のアドレスを格納するベクタテーブルとを有する前記メモリモジュールをテストプログラムとして生成し、
前記論理検証シナリオ生成装置は、さらに、
前記テストライブラリから順次選択した前記外部入力信号と、前記検証命令アドレスとに基づいて、前記検証命令に対して前記外部入力信号を発生させる外部入力信号生成モジュールを生成する外部入力信号生成部を有し、
前記期待値生成部は、前記検証命令について、前記外部入力信号に対応する前記期待値フォーマットを選択し、前記外部入力信号に基づいて前記期待値を生成することを特徴とする論理検証シナリオ生成装置。
【０１２６】
（付記４）
付記３において、
前記テストライブラリは、さらに、前記外部入力信号を発生させる発生タイミングを複数有する発生タイミングリストを格納し、
外部入力信号生成部は、さらに、前記テストライブラリから順次選択した前記発生タイミングに基づいて前記外部入力信号生成モジュールを生成することを特徴とする論理検証シナリオ生成装置。
【０１２７】
（付記５）
付記１乃至４のいずれかにおいて、
前記期待値生成部の生成する前記期待値は、さらに、前記デコード情報に基づく前記メモリモジュールのアドレス情報、及び、当該アドレス情報に格納されたメモリ情報のいずれかまたは両方であることを特徴とする論理検証シナリオ生成装置。
【０１２８】
（付記６）
付記３または４において、
前記期待値生成部の生成する前記期待値は、さらに、前記外部入力信号に基づく前記メモリモジュールのアドレス情報、及び、当該アドレス情報に格納されたメモリ情報のいずれかまたは両方であることを特徴とする論理検証シナリオ生成装置。
【０１２９】
（付記７）
付記１乃至６のいずれかにおいて、
前記期待値生成部は、前記命令が分岐命令である場合、前記命令に対応する期待値フォーマットに加えて、分岐先を示す前記出力信号項目を有する分岐先期待値フォーマットを前記期待値フォーマット記憶部から取得し、当該分岐先期待値フォーマットを次命令の前記期待値フォーマットに合成して合成期待値フォーマットを生成し、前記次命令について当該合成期待値フォーマットの前記出力信号項目に対応する期待値を生成することを特徴とする論理検証シナリオ生成装置。
【０１３０】
（付記８）
付記１乃至７のいずれかにおいて、
前記テストライブラリの格納する前記前命令、及び、前記後命令は、ひとつまたは複数の前記命令を有することを特徴とする論理検証シナリオ生成装置。
【０１３１】
（付記９）
付記１乃至８のいずれかにおいて、
同種別の命令、または外部入力信号に対応する前記期待値フォーマットは同一であることを特徴とする論理検証シナリオ生成装置。
【０１３２】
（付記１０）
付記９において、
前記期待値の前記出力信号項目は、前記種別に基づいて予め期待値が予測される固定値と、前記デコード情報、または前記外部入力信号に基づいて期待値が生成される非固定値とを有し、
前記期待値生成部は、前記非固定値の前記出力信号項目に対応する期待値を生成することを特徴とする論理検証シナリオ生成装置。
【０１３３】
（付記１１）
付記１において、
前記メモリモジュールはＲＴＬ記述されていることを特徴とする論理検証シナリオ生成装置。
【０１３４】
（付記１２）
付記３において、
前記外部入力信号生成モジュールはＲＴＬ記述されていることを特徴とする論理検証シナリオ生成装置。
【０１３５】
（付記１３）
ＲＴＬ記述されたＣＰＵの論理検証のためのテストプログラムを生成する論理検証シナリオ生成処理をコンピューターに実行させるコンピューター読み取り可能な論理検証シナリオ生成プログラムにおいて、
前記論理検証シナリオ生成処理は、
検証命令を複数有する検証命令リストと、前記検証命令の前に実行する前命令、及び後に実行する後命令の前後命令組合せを複数有する前後命令組合せリストとを格納するテストライブラリと、
前記ＣＰＵが前記命令を実行して出力するひとつまたは複数の出力信号項目を有する期待値フォーマットを格納する期待値フォーマット記憶部と、
前記検証命令を記憶するための検証命令アドレスと、前記前命令を格納する前命令空間と、前記後命令を格納する後命令空間と、前記命令がデータアクセス命令である場合のアクセス対象のデータ空間と、前記命令が分岐命令である場合の分岐先命令を格納する分岐命令空間と、前記命令が分岐後復帰命令である場合に復帰情報を格納するスタック空間とを有するメモリモジュールであって、前記テストライブラリから順次選択した前記検証命令と前記前後命令組合せとに基づいて、前記検証命令アドレスに前記検証命令を、前記前命令空間に前記前命令を、前記後命令空間に前記後命令を記憶すると共に、前記前命令が前記分岐命令である場合に前記前命令の分岐先アドレスに前記検証命令アドレスを記憶したメモリモジュールを前記テストプログラムとして生成するテストプログラム生成工程と、
前記生成したテストプログラムの各命令について、当該命令に対応する前記期待値フォーマットを前記期待値フォーマット記憶部から取得し、当該命令をデコードしたデコード情報に基づいて前記出力信号項目に対応する期待値を生成する期待値生成工程と、
を有することを特徴とする論理検証シナリオ生成プログラム。
【符号の説明】
【０１３６】
１０：ＣＰＵ（ＲＴＬ）、１１：外部入力信号生成モジュール（ＲＴＬ）、１２：メモリモジュール（ＲＴＬ）、１３：出力信号トレースモジュール（ＲＴＬ）、
２１：論理検証シナリオ生成部、２１０：検証シナリオ条件入力部、２１１：プログラム条件判定部、２１２：テストプログラム生成部、２１３：外部入力信号生成部、２１４：テストライブラリ、
２２：期待値生成部、２２１：期待値フォーマット記憶部
【図１】
0005387521.tif 000002
【図２】
0005387521.tif 000003
【図３】
0005387521.tif 000004
【図４】
0005387521.tif 000005
【図５】
0005387521.tif 000006
【図６】
0005387521.tif 000007
【図７】
0005387521.tif 000008
【図８】
0005387521.tif 000009
【図９】
0005387521.tif 000010
【図１０】
0005387521.tif 000011
【図１１】
0005387521.tif 000012
【図１２】
0005387521.tif 000013
【図１３】
0005387521.tif 000014
【図１４】
0005387521.tif 000015
【図１５】
0005387521.tif 000016
【図１６】
0005387521.tif 000017
【図１７】
0005387521.tif 000018
【図１８】
0005387521.tif 000019
【図１９】
0005387521.tif 000020
【図２０】
0005387521.tif 000021