(57)【要約】【課題】  同一のバスプロトコルを構成する制御回路に対してプロパティ記述を再利用することができ、検証時間を短縮可能なモニタ記述生成装置を提供する。【解決手段】  バスプロトコルを構成する制御回路の回路記述を格納する回路記述記憶装置２と、バスプロトコルに規定される複数のシーケンスをそれぞれ特定するバスプロトコルプロファイルを格納するバスプロトコルプロファイル記憶装置３と、回路記述からレジスタを抽出する回路記述レジスタ抽出手段１０と、レジスタのうち、複数のシーケンスにそれぞれ関係する関係レジスタをそれぞれ抽出する関係レジスタ抽出手段２０と、関係レジスタを用いて、制御回路の内部状態に対応するシーケンスを示すモニタ記述を生成するモニタ記述生成手段３０とを備える。【選択図】      図１
2005275963.tif 000002
【特許請求の範囲】
【請求項１】
バスプロトコルを構成する制御回路の回路記述を格納する回路記述記憶装置と、
前記バスプロトコルに規定される複数のシーケンスをそれぞれ特定するバスプロトコルプロファイルを格納するバスプロトコルプロファイル記憶装置と、
前記回路記述からレジスタを抽出する回路記述レジスタ抽出手段と、
前記レジスタのうち、前記複数のシーケンスにそれぞれ関係する関係レジスタをそれぞれ抽出する関係レジスタ抽出手段と、
前記関係レジスタを用いて、前記制御回路の内部状態に対応する前記シーケンスを示すモニタ記述を生成するモニタ記述生成手段
とを備えることを特徴とするモニタ記述生成装置。
【請求項２】
前記関係レジスタ抽出手段は、
前記レジスタのリセット動作時の値を抽出するリセット値抽出部と、
前記レジスタの前記複数のシーケンスにおける値をそれぞれ抽出するレジスタ値抽出部と、
前記リセット動作時の値から前記複数のシーケンスにおける値が変化した前記レジスタを前記関係レジスタとして抽出する関係レジスタ抽出部
とを備えることを特徴とする請求項１に記載のモニタ記述生成装置。
【請求項３】
前記関係レジスタ抽出手段は、前記バスプロトコルに規定される出力信号に関係し、前記抽出されたレジスタと異なる他のレジスタの値を決定するバックトレース部を更に備えることを特徴とする請求項１に記載のモニタ記述生成装置。
【請求項４】
回路記述レジスタ抽出手段が、回路記述記憶装置に格納されたバスプロトコルを構成する制御回路の回路記述からレジスタを抽出する手順と、
関係レジスタ抽出手段が、前記レジスタのうち、バスプロトコルプロファイル記憶装置に格納されたバスプロトコルプロファイルにより特定される、前記バスプロトコルに規定される複数のシーケンスにそれぞれ関係する関係レジスタをそれぞれ抽出する手順と、
モニタ記述生成手段が、前記関係レジスタを用いて、前記制御回路の内部状態に対応する前記シーケンスを示すモニタ記述を生成する手順
とを含むことを特徴とするモニタ記述生成方法。
【請求項５】
コンピュータに、
回路記述記憶装置に格納されたバスプロトコルを構成する制御回路の回路記述からレジスタを抽出する手順と、
前記レジスタのうち、バスプロトコルプロファイル記憶装置に格納されたバスプロトコルプロファイルにより特定される、前記バスプロトコルに規定される複数のシーケンスにそれぞれ関係する関係レジスタをそれぞれ抽出する手順と、
前記関係レジスタを用いて、前記制御回路の内部状態に対応する前記シーケンスを示すモニタ記述を生成する手順
とを実行させることを特徴とするモニタ記述生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスプロトコルを構成する制御回路の検証手法に係り、特に、バスプロトコルを構成する制御回路を検証するためのモニタ記述を生成するモニタ記述生成装置、モニタ記述生成方法及びモニタ記述生成プログラムに関する。
【背景技術】
【０００２】
バスプロトコルを構成する制御回路（バスインターフェース回路）としては、一般的にステートマシンが用いられる。「バスプロトコル」とは、転送の種類毎に、信号の全部又は一部の組に対して、出力されるべき信号パターン（以下、「シーケンス」という。）を規定する規約を意味する。また、「ステートマシン」は、入力条件により予め設定された複数の内部状態（ステート）を順に遷移する順序回路である。ステートマシンは、設計仕様（以下、「プロパティ」という。）を満たす限り自由に設計することができる。このため、同一のバスプロトコルで実装するステートマシンであっても複数の実現方法が存在し、ステートマシンの構造は設計者、実装方法や設計の変更により異なる場合がある。
【０００３】
ステートマシンに対しては、通常、プロパティを満たしているかどうかを検証するプロパティ・チェックが行われる（例えば、特許文献１参照。）。プロパティ・チェックを行うために、検証用のプロパティが記述されたプロパティ記述が用意される。例えば、「信号「REQ」が１であれば、３クロックサイクル以内に信号「GNT」が１にならなければいけない」というプロパティ記述としては、
if (REQ == 1) then (within(3, GNT == 1));
と記述される。ここで、ステートマシンに依存するプロパティ記述の場合には、同一のバスプロトコルを構成するステートマシンであっても、構造が異なるステートマシンに対して再利用することができない。このため、構造が異なるステートマシン毎にプロパティ記述を用意する必要があるので、開発工数や開発費が増加する。
【０００４】
これに対して、構造が異なっても同一のバスプロトコルを構成するステートマシンに対して再利用できるように、バスプロトコルにより規定された信号のみを用いたプロパティ記述の場合にはシーケンスを全て記述する必要があるので、検証に多大な時間を要する。
【特許文献１】特開２００３−１９６３４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、同一のバスプロトコルを構成する制御回路に対してプロパティ記述を再利用することができ、検証時間を短縮可能なモニタ記述生成装置、モニタ記述生成方法及びモニタ記述生成プログラムを提供することである。
【課題を解決するための手段】
【０００６】
本発明の第１の特徴は、（イ）バスプロトコルを構成する制御回路の回路記述を格納する回路記述記憶装置と、（ロ）バスプロトコルに規定される複数のシーケンスをそれぞれ特定するバスプロトコルプロファイルを格納するバスプロトコルプロファイル記憶装置と、回路記述からレジスタを抽出する回路記述レジスタ抽出手段と、（ハ）レジスタのうち、複数のシーケンスにそれぞれ関係する関係レジスタをそれぞれ抽出する関係レジスタ抽出手段と、（ニ）関係レジスタを用いて、制御回路の内部状態に対応するシーケンスを示すモニタ記述を生成するモニタ記述生成手段とを備えるモニタ記述生成装置であることを要旨とする。
【０００７】
本発明の第２の特徴は、（イ）回路記述レジスタ抽出手段が、回路記述記憶装置に格納されたバスプロトコルを構成する制御回路の回路記述からレジスタを抽出する手順と、（ロ）関係レジスタ抽出手段が、レジスタのうち、バスプロトコルプロファイル記憶装置に格納されたバスプロトコルプロファイルにより特定される、バスプロトコルに規定される複数のシーケンスにそれぞれ関係する関係レジスタをそれぞれ抽出する手順と、（ハ）モニタ記述生成手段が、関係レジスタを用いて、制御回路の内部状態に対応するシーケンスを示すモニタ記述を生成する手順とを含むモニタ記述生成方法であることを要旨とする。
【０００８】
本発明の第３の特徴は、コンピュータに、（イ）回路記述記憶装置に格納されたバスプロトコルを構成する制御回路の回路記述からレジスタを抽出する手順と、（ロ）レジスタのうち、バスプロトコルプロファイル記憶装置に格納されたバスプロトコルプロファイルにより特定される、バスプロトコルに規定される複数のシーケンスにそれぞれ関係する関係レジスタをそれぞれ抽出する手順と、（ハ）関係レジスタを用いて、制御回路の内部状態に対応するシーケンスを示すモニタ記述を生成する手順とを実行させるモニタ記述生成プログラムであることを要旨とする。
【発明の効果】
【０００９】
本発明によれば、同一のバスプロトコルを構成する制御回路に対してプロパティ記述を再利用することができ、検証時間を短縮可能なモニタ記述生成装置、モニタ記述生成方法及びモニタ記述生成プログラムを提供することができる。
【発明を実施するための最良の形態】
【００１０】
本発明の実施の形態に係るバスプロトコルを構成する制御回路５１は、例えば図２（ａ）に示すように、外部回路間の入力信号「CLK」，「RST_X」，「CMD」，「DIN」，「ACK」、及び出力信号「START」，「BURST」，「CEN」，「ADDR」，「RD」，「WR」，「DOUT」，「LAST」の組に対してシーケンスを規定する。制御回路５１の回路記述は、例えばステートマシンを用いて記述される。
【００１１】
ステートマシンは、例えば図２（ｂ）に示すように、入力条件により、ステップＳ１における第１ステート「BUS_IDLE」、ステップＳ２における第２ステート「SWRITE」、ステップＳ３における第３ステート「SREAD」、ステップＳ４における第４ステート「BWRITE」、及びステップＳ５における第５ステート「BREAD」等のステートを順に遷移する。ステートマシンとしては、例えば図３〜図１０に一連して示すように、ハードウェア記述言語（以下、「ＨＤＬ」という。）を用いて、レジスタ・トランスファー・レベル（ＲＴＬ）で記述される。
【００１２】
図３に示した記述部Ｐ１１１において、変数として「CLK」，「RST_X」，「CMD」，「DIN」，「ACK」，「START」，「BURST」，「CEN」，「ADDR」，「RD」，「WR」，「DOUT」，「LAST」が宣言されている。記述部Ｐ１１２のポート宣言部において、図２（ａ）に示した制御回路５１の入力信号として「CLK」，「RST_X」，「CMD」，「DIN」，「ACK」が宣言され、出力信号として「START」，「BURST」，「CEN」，「ADDR」，「RD」，「WR」，「DOUT」，「LAST」が宣言されている。なお、「CLK」はクロック信号を示し、「RST_X」はリセット信号を示し、「ADDR」はアドレス信号を示し、「DOUT」はデータ信号を示す。
【００１３】
図４に示した記述部Ｐ１１３のレジスタ宣言部において、図２（ａ）に示したレジスタＲ１〜Ｒ１０から出力される信号として「BURST」，「START」，「CEN」，「ADDR」，「RD」，「WR」，「DOUT」，「LAST」，「STATE_REG」，「BURST_COUNT」が宣言され、レジスタＲ１〜Ｒ１０に入力される信号として「BURST_next」，「START_next」，「CEN_next」，「ADDR_next」，「RD_next」，「WR_next」，「DOUT_next」，「LAST_next」，「STATE_REG_next」，「BURST_COUNT_next」が宣言されている。「STATE_REG」，「STATE_REG_next」はそれぞれステートマシンのステートを示すレジスタＲ１に関する信号である。記述部Ｐ１１４のワイヤ宣言部において、「BURST_COUNT_INCREMENT」が「BURST_COUNT」を１インクリメントした値と宣言されている。記述部Ｐ１１５のパラメータ宣言部において、「BUS_IDLE」が「000」、「SWRITE」が「001」、「SREAD」が「010」「BWRITE」が「011」、「BREAD」が「100」、「nop」が「000」、「sw」が「001」、「sr」が「010」「bw」が「011」、「br」が「100」と宣言されている。
【００１４】
図５に示した記述部Ｐ１２１において、記述部Ｐ１２１において、クロック信号「CLK」の立ち上がり毎又はリセット信号「RST_X」の立ち下がり毎に記述部Ｐ１２２が実行される。記述部Ｐ１２２において、「RST_X」が「0」であればリセット動作が行われ、「STATE_REG」が「BUS_IDLE」となる。「BURST_COUNT」が「000」となり、「START」，「CEN」，「RD」，「WR」，「LAST」，「BURST」がそれぞれ「0」となり、「ADDR」，「DOUT」がそれぞれ「00000000」となる。一方、「RST_X」が「1」であれば、「STATE_REG」，「BURST_COUNT」，「START」，「CEN」，「ADDR」，「RD」，「WR」，「DOUT」，「LAST」，「BURST」にそれぞれ「STATE_REG_next」，「BURST_COUNT_next」，「START_next」，「CEN_next」，「ADDR_next」，「RD_next」，「WR_next」，「DOUT_next」，「LAST_next」，「BURST_next」が代入される。即ち、記述部Ｐ１２１から、図２（ａ）に示すように、クロック信号「CLK」に同期したレジスタＲ１〜Ｒ１０が合成されると推測される。レジスタＲ１〜Ｒ１０はそれぞれ、クロック信号「CLK」に同期して、「STATE_REG_next」，「BURST_COUNT_next」，「START_next」，「CEN_next」，「ADDR_next」，「RD_next」，「WR_next」，「DOUT_next」，「LAST_next」，「BURST_next」を入力し、「STATE_REG」，「BURST_COUNT」，「START」，「CEN」，「ADDR」，「RD」，「WR」，「DOUT」，「LAST」，「BURST」を出力する。
【００１５】
図６に示した記述部Ｐ１３１において「STATE_REG」，「CMD」，「LAST」，「ACK」，「BURST_COUNT」，「CEN」，「ADDR」，「DOUT」，「BURST」，「BURST_COUNT」_INCREMENT」のいずれかの値が変化する毎に、記述部Ｐ１３２から図１０に示した記述部Ｐ１９２までの処理が実行される。図６に示した記述部Ｐ１３２において、「STATE_REG」が「BUS_IDLE」となる。「BURST_COUNT」が「000」となり、「BURST」，「START」，「CEN」，「RD」，「WR」，「LAST」がそれぞれ「0」となり、「ADDR」，「DOUT」がそれぞれ「00000000」となる。
【００１６】
図７に示した記述部Ｐ１４から図１０に示した記述部Ｐ１９１までにおいて、「STATE_REG」が変化した場合の処理が記述されている。図７に示した記述部Ｐ１４０において、「STATE_REG」が「BUS_IDLE」の場合の処理が記述されている。記述部Ｐ１４１において、「CMD」が変化した場合の処理が記述されている。
【００１７】
記述部Ｐ１４２において、「CMD」が「nop」の場合には、動作が中断される。記述部Ｐ１４３において、「CMD」が「sw」の場合には、「STATE_REG」が「SWRITE」となり、「LAST」，「START」，「CEN」，「WR」がそれぞれ「1」となり、「ADDR」及び「DOUT」がそれぞれ任意の値となる。図７に示した記述部Ｐ１４４において、「CMD」が「sr」の場合には、「STATE_REG」が「SREAD」となり、「LAST」，「START」，「CEN」，「RD」が「1」となり、「ADDR」が任意の値となる。図７に示した記述部Ｐ１４５において、「CMD」が「bw」の場合には、「STATE_REG」が「BWRITE」となり、「BURST」，「START」，「CEN」，「WR」がそれぞれ「1」となり、「ADDR」，「DOUT」がそれぞれ任意の値となる。図７に示した記述部Ｐ１４６において、「CMD」が「br」の場合には、「STATE_REG」が「BREAD」となる。「BURST」，「START」，「CEN」，「RD」がそれぞれ「1」となり、「ADDR」が任意の値となる。
【００１８】
図８に示した記述部Ｐ１５０において、「STATE_REG」が「SWRITE」の場合には、記述部Ｐ１５１において「RD」が「0」となり、「WR」が「1」となり、「CEN」．「ADDR」，「DOUT」がそれぞれ値を保持する。記述部Ｐ１５２において、「STATE_REG」が「SWRITE」で更に「ACK」が「1」であれば、「STATE_REG」が「BUS_IDLE」となり、「CEN」，「LAST」，「RD」，「WR」がそれぞれ「0」となり、「ADDR」，「DOUT」がそれぞれ「00000000」となる。一方、「STATE_REG」が「SWRITE」で更に「ACK」が「0」であれば、「STATE_REG」，「LAST」がそれぞれ値を保持する。
【００１９】
記述部Ｐ１６０において、「STATE_REG」が「SREAD」の場合には記述部Ｐ１６１において「CEN」，「ADDR」が値を保持し、「RD」が「1」、「WR」が「0」となる。記述部Ｐ１６２において「STATE_REG」が「SREAD」で更に「ACK」が１であれば、「STATE_REG」が「BUS_IDLE」となり、「CEN」，「LAST」，「RD」，「WR」がそれぞれ「0」となり、「ADDR」が「00000000」となる。一方、「STATE_REG」が「SREAD」で更に「ACK」が「0」であれば、「STATE_REG」，「LAST」がそれぞれ値を保持する。
【００２０】
図９に示した記述部Ｐ１７０において、「STATE_REG」が「BWRITE」の場合には、記述部Ｐ１７１において「CEN」，「LAST」，「ADDR」，「DOUT」がそれぞれ値を保持し、「RD」が「0」となり、「WR」が「1」となる。記述部Ｐ１７２において「STATE_REG」が「BWRITE」の場合で、「ACK」が「1」、で更に「BURST_COUNT」が「011」以上であれば、「STATE_REG」が「BUS_IDLE」となり、「BURST_COUNT」が「000」となり、「CEN」，「LAST」，「BURST」，「RD」，「WR」がそれぞれ「0」となり、「ADDR」，「DOUT」がそれぞれ「00000000」となる。一方、「STATE_REG」が「BWRITE」の場合で「ACK」が１であり更に「BURST_COUNT」が「010」以上であれば、「STATE_REG」，「LAST」がそれぞれ値を保持し、「BURST_COUNT」が１インクリメントされる。「ACK」が１であり、「BURST_COUNT」が「001」以下であれば、「STATE_REG」が値を保持し、「BURST_COUNT」が１インクリメントされる。一方、記述部Ｐ１７４において、「STATE_REG」が「BWRITE」の場合で「ACK」が「0」であれば、「STATE_REG」，「BURST_COUNT」がそれぞれ値を保持する。
【００２１】
図１０に示した記述部Ｐ１８０において、「STATE_REG」が「BREAD」の場合には、記述部Ｐ１８１において「CEN」，「LAST」，「ADDR」がそれぞれ値を保持し、「RD」が「1」となり、「WR」が「0」となる。記述部Ｐ１８２において、「STATE_REG」が「BREAD」の場合で「ACK」が「1」であり、更に「BURST_COUNT」が「011」以上であれば、「STATE_REG」が「BUS_IDLE」となり、「BURST_COUNT」が「000」となり、「CEN」，「LAST」，「BURST」，「RD」，「WR」がそれぞれ「0」となり、「ADDR」が「00000000」となる。一方、「STATE_REG」が「BREAD」の場合で「ACK」が「1」であり、更に「BURST_COUNT」が「010」以上であれば、「STATE_REG」が値を保持し、「BURST_COUNT」が１インクリメントされ、「LAST」が「1」となる。一方、「STATE_REG」が「BREAD」の場合で「ACK」が１であり、更に「BURST_COUNT」が「001」以下であれば、「STATE_REG」が値を保持し、「BURST_COUNT」が１インクリメントされる。記述部Ｐ１８４において、「ACK」が「0」であれば、「STATE_REG」，「BURST_COUNT」がそれぞれ値を保持する。
【００２２】
また、本発明の実施の形態における「バスプロトコルプロファイル」は、バスプロトコルにより規定されるシーケンスを特定する記述である。バスプロトコルプロファイルは、例えば図１１に示すように、バスプロトコルにおけるシーケンスを区切り、その区間に対して名称（以下、「シーケンス名称」という。）を付与する。図１１において、コロン「:」によって区切られた列は、左から順に「時刻」、「シーケンス名称」、「ずらす値」、「信号値」を示す。
【００２３】
左から１列目の「時刻」の欄において、「$0」は基準となる時刻を意味する。また、「%1」は直前の時刻「$0」から相対的に１クロックサイクル後の時刻、「%2」は直前の時刻から相対的に１クロックサイクル後の時刻、「%[..1]」は直前の時刻から相対的に１クロックサイクル以上後の時刻を意味する。左から２列目の「シーケンス名称」の欄には、シーケンス名称として、アイドル「IDLE」，「SW」，「SR」，「BW」，「BW.1ack」，「BW.2ack」，「BW.3ack」，「BR」，「BR.1ack」，「BR.2ack」，「BR.3ack」，等が付与されている。「SW」，「SR」，「BW」，「BW.1ack」，「BW.2ack」，「BW.3ack」，「BR」，「BR.1ack」，「BR.2ack」，「BR.3ack」は、「startof〜」と「endof〜」とで囲まれた部分の範囲に付与される。「IDLE」は、「startof〜」と「endof〜」で囲まれない部分に付与される。例えば記述部Ｐ２３に示すように、「BW」を更に細かく区分する場合には、「BW.1ack」等とドット「.」を付けて付与される。左から３列目の「ずらす値」の欄には、図１１には記述がないが、シーケンス名称を１列目の時刻から相対的にずらす値が記述される。例えば、
%1      :IDLE          :#1:    RST_X == 1;
と記述する場合、直前の時刻から相対的に１クロックサイクル後に、「RST_X」は「1」となり、「RST_X」が「1」となる時刻の１クロックサイクル後に対して「IDLE」が付与されている。また、左から４列目の「信号値」の欄には、１列目の時刻における入出力信号、及び入出力信号の値が記述される。
【００２４】
記述部Ｐ２１のシーケンスが実行される場合、時刻「0」において「RST_X」の値が「0」となる。時刻「1」において、シーケンス名称「IDLE」が付与されたシーケンスが実行され、「RST_X」が「1」となる。時刻「2」においてシーケンス名称「SW」が付与されたシーケンスが実行され、「START」，「CEN」，「LAST」，「WR」がそれぞれ「1」となり，「BURST」，「RD」がそれぞれ「0」となり、「ADDR」，「DOUT」はそれぞれ「8'haa」，「8'hdd」となる。「8'haa」，「8'hdd」はそれぞれ任意の値を示す。図１１に示した記述部Ｐ２２〜Ｐ２４も、記述部Ｐ２１と実質的に同様の記述方法であるので、重複した説明を省略する。
【００２５】
以上の説明を基礎として、以下において本発明の実施の形態を説明する。以下の図面の記載において同一或いは類似部分には同一或いは類似な符号を付している。
【００２６】
本発明の実施の形態に係るモニタ記述生成装置は、図１に示すように、中央処理装置（ＣＰＵ）１、回路記述記憶装置２、バスプロトコルプロファイル記憶装置３、主記憶装置４、入力装置６及び出力装置７を備える。
【００２７】
回路記述記憶装置２は、図３〜図１０に示すようなバスプロトコルを構成するステートマシンの回路記述を格納する。また、図１に示したバスプロトコルプロファイル記憶装置３は、図１１に示すようなバスプロトコルプロファイルを格納する。
【００２８】
図１に示したＣＰＵ１は、回路記述レジスタ抽出手段１０、関係レジスタ抽出手段２０及びモニタ記述生成手段３０を備える。回路記述レジスタ抽出手段１０は、回路記述記憶装置２に格納された回路記述を参照して全てのレジスタを抽出する。回路記述レジスタ抽出手段１０は、例えば図５に示した記述部Ｐ１２２を参照して、信号「STATE_REG」，「BURST_COUNT」，「START」，「CEN」，「ADDR」，「RD」，「WR」，「DOUT」，「LAST」，「BURST」の値を保持する図２（ａ）に示したレジスタＲ１〜Ｒ１０を抽出する。
【００２９】
図１に示した関係レジスタ抽出手段２０は、回路記述レジスタ抽出手段１０により抽出された全てのレジスタのうち、バスプロトコルプロファイル記憶装置３に格納されたバスプロトコルプロファイルにより特定される、バスプロトコルに規定されるシーケンスに関係するレジスタ（以下、「関係レジスタ」という。）を抽出する。関係レジスタ抽出手段２０は、図１２に示すように、リセット値抽出部２１、レジスタ値抽出部２２、バックトレース部２３及び関係レジスタ抽出部２４を備える。
【００３０】
リセット値抽出部２１は、図１に示した回路記述記憶装置２に格納された回路記述を参照して、回路記述レジスタ抽出手段１０により抽出された全てのレジスタがリセット動作時に保持する値を抽出する。リセット値抽出部２１は、例えば図５に示した記述部Ｐ１２３を参照してリセット動作時にレジスタＲ１〜Ｒ１０が保持する「STATE_REG」，「BURST_COUNT」，「START」，「CEN」，「ADDR」，「RD」，「WR」，「DOUT」，「LAST」，「BURST」の値「000」，「0」，「0」，「00000000」，「0」，「0」，「00000000」，「0」，「0」を抽出する。
【００３１】
図１２に示したレジスタ値抽出部２２は、図１に示したバスプロトコルプロファイル記憶装置３に格納されたバスプロトコルプロファイルにより特定されるシーケンスを実行してシミュレーション（値伝搬シミュレーション）を行う。ここで、レジスタ値抽出部２２は、バスプロトコルプロファイルに記述された入力信号の値は印加して、バスプロトコルプロファイルに記述された出力信号の値を取る場合に関係するレジスタＲ１〜Ｒ１０が保持する信号の値を抽出する。
【００３２】
レジスタ値抽出部２２は、例えば図１１に示したバスプロトコルプロファイルの記述部Ｐ２３の「BW」が付与されたシーケンスを実行して、値伝搬シミュレーションを行う。図１５に示すように、時刻Ｔ０１〜Ｔ２１において「BW」、時刻Ｔ２１〜Ｔ３１において「BW」内の分類の「BW.1ack」、時刻Ｔ３１〜Ｔ４１において「BW」、時刻Ｔ４１〜Ｔ５１において「BW」内の分類の「BW.2ack」、時刻Ｔ５１〜Ｔ６１において「BW」、時刻Ｔ６１〜Ｔ７１において「BW」内の分類の「BW.3ack」、時刻Ｔ７１〜Ｔ８１において「BW」がそれぞれ付与されたシーケンスが実行される。図１１に示したバスプロトコルプロファイルの他のシーケンス名称「IDLE」「SW」，「SR」，「BW」，「BR」が付与されたシーケンスに対しても同様に値伝搬シミュレーションを行う。ここで、図１６に示すように、レジスタＲ１〜Ｒ１０が保持する「ADDR」，「DOUT」，「STATE_REG」，「BURST_COUNT」，「CEN」，「START」，「LAST」，「BURST」，「RD」，「WR」の値を抽出する。図１６において、シーケンス名称「IDLE」，「SW」，「SR」，「BW」，「BR」と、レジスタＲ１〜Ｒ１０が保持する「ADDR」，「DOUT」，「STATE_REG」，「BURST_COUNT」，「CEN」，「START」，「LAST」，「BURST」，「RD」，「WR」の値がそれぞれ対応付けて記述されている。
【００３３】
図１２に示したバックトレース部２３は、図１に示したバスプロトコルプロファイル記憶装置３に格納されたバスプロトコルプロファイルに記述された出力信号に関係する、回路記述記憶装置２に格納された回路記述に格納されたレジスタと異なる他のレジスタの値を決定する。バックトレース部２３は、図１３に示すように、出力信号抽出部２３１、関係信号抽出部２３２、信号分類部２３３、信号値候補抽出部２３４及び信号値決定部２３５を備える。
【００３４】
出力信号抽出部２３１は、図１２に示したレジスタ値抽出部２２による値伝播シミュレーション中に出力信号が記述された箇所に達したとき、複数の出力信号のうち任意に１つの出力信号を抽出する。出力信号抽出部２３１は例えば、図１１に示したバスプロトコルプロファイルの記述部Ｐ２３の「BW」の実行部分の「$2」の行に達したとき、「START」，「CEN 」，「LAST」，「BURST」，「RD」，「WR」，「ADDR」，「DOUT」のうち、「CEN」を抽出する。
【００３５】
図１３に示した関係信号抽出部２３２は、図１に示した回路記述記憶装置２に格納された回路記述を参照して、図１３に示した出力信号抽出部２３１により抽出された出力信号に関係する信号（以下、「関係信号」という。）を抽出する。ここで、関係信号は、出力信号が駆動されている行が実行される場合の条件式の分岐に際して値が評価される信号、及び出力信号の駆動に関連する信号を含む。「条件式の分岐に際して値が評価される信号」とは、if文やcase文等の条件式の括弧の中に記述されている信号を意味する。一方、「出力信号の駆動に関連する信号」とは、出力信号への代入部分で、右辺に記述されている信号を意味する。
【００３６】
例えば、「CEN」の関係信号として、図５に示した記述部Ｐ１２１のif文の括弧の中に記述されている「RST_X」、「CEN」への代入部分で右辺に記述されている「CEN」、図６に示した記述部Ｐ１３１の括弧中に記述されている「ADDR」，「DOUT」図７に示した記述部Ｐ１４のif文の括弧の中に記述されている「STATE_REG」、記述部Ｐ１４２のcase文の括弧の中に記述されている「CMD」、図８に示した記述部Ｐ１５２のif文の括弧の中に記述されている「ACK」、図９に示した記述部Ｐ１７２のif文の括弧の中に記述されている「BURST_COUNT」がそれぞれ抽出される。
【００３７】
図１３に示した信号分類部２３３は、関係信号抽出部２３２により抽出された関係信号を、既定値の関係信号（既定値信号）と、未定値の関係信号（未定値信号）とに分類し、未定値信号を抽出する。信号分類部２３３は、例えば図１１に示したバスプロトコルプロファイルの記述部Ｐ２３を参照して、既定値信号「STATE_REG」，「BURST_COUNT」，「ACK」．「RST_X」，「CEN」と、未定値信号「CMD」，「ADDR」，「DOUT」とに分類し、「CMD」，「ADDR」，「DOUT」を抽出する。信号分類部２３３は更に、未定値信号のうち、例えばアドレス信号及びデータ信号等の任意の値に連なることが明示された未定値信号を分類して除外する。信号分類部２３３は、例えば「CMD」，「ADDR」，「DOUT」のうち、「ADDR」，「DOUT」を分類して除外する。
【００３８】
信号値候補抽出部２３４は、バスプロトコルプロファイルに記述された出力信号がバスプロトコルプロファイルに記述された通りの値となる場合に、信号分類部２３３により分類された未定値信号が取りうる値の候補を全て抽出する。例えば、図１１に示した記述部Ｐ２３の出力信号である「START」，「CEN」，「LAST」，「BURST」，「RD」，「WR」がそれぞれ「1」，「1」，「0」，「1」，「0」，「1」を出力するような「CMD」の値の候補を抽出する。
【００３９】
例えば、「CMD」が記述部Ｐ１４１の「sw」、記述部Ｐ１４２「sr」、記述部Ｐ１４３の「bw」、記述部Ｐ１４４の「br」の場合に、「CEN」がバスプロトコルに規定される「1」となるので、「sw」，「sr」，「bw」，「br」のパラメータの値である「001」「010」，「011」，「100」が、「CEN」が「1」の場合の「CMD」の値の候補として抽出される。同様に、「START」が「1」の場合の候補として「001」，「011」，「011」，「100」が抽出され、「CEN」が「1」の場合の候補として「001」，「010」，「011」，「100」が抽出され、「BURST」が「1」の場合の候補として「011」，「011」，「100」が抽出され、「RD」が「0」の場合の候補として「001」，「011」が抽出され、「WR」が「1」の場合の候補として「001」，「011」が抽出される。なお、「LAST」が「0」の場合は「CMD」は任意の値をとるので、候補は抽出されない。
【００４０】
図１４に示した信号値決定部２３５は、信号値候補抽出部２３４により抽出されたの未定値信号の候補の論理積を演算し、未定値信号の値を決定する。例えば、信号値決定部２３５は、「CMD」の値の候補である「001」，「010」，「011」，「100」の論理積を取り、「011」に決定する。この結果、バスプロトコルプロファイルに記述された出力信号に関係する図２（ａ）に示した制御回路５１の内部のレジスタＲ１１の値も抽出することができる。一方、図１１に示したバスプロトコルプロファイルに記述された信号値等の情報が少なすぎる場合等には、論理積を演算しても値が１つに決定されない。信号値決定部２３５は、論理積を演算しても値が１つに決定されない場合、警告を発し、図１に示した出力装置７等に警告を出力させる。
【００４１】
図１２に示した関係レジスタ抽出部２４は、図１に示した回路記述レジスタ抽出手段１０により抽出された全てのレジスタのうち、図２に示したレジスタ値抽出部２２により抽出された値が、リセット値抽出部２１により抽出されたリセット動作時の値のまま不変のレジスタを除外して、関係レジスタの組（コントロールレジスタセット）をそれぞれ抽出する。リセット動作時の値のまま値が不変のレジスタから出力される信号は、アドレス信号やデータ信号或いはアドレス信号やデータ信号の一部等の、ステートマシンの制御には直接影響を及ぼさない信号であると考えられる。
【００４２】
例えば、図１６に示した記述部Ｐ３０及び記述部Ｐ３１における「IDLE」，「SW」，「SR」，「BW」，「BR」における「ADDR」，「DOUT」を出力するレジスタＲ６，Ｒ９が除外される。更に「SW」においては、記述部Ｐ３２の「BURST_COUNT」、記述部Ｐ３３の「BURST」、及び記述部Ｐ３４の「RD」を出力するレジスタＲ２，Ｒ４，Ｒ７が除外される。また、「SR」においては、記述部Ｐ３５の「BURST_COUNT」、記述部Ｐ３６の「BURST」、記述部Ｐ３７の「RD」を出力するレジスタＲ２，Ｒ４，Ｒ７が除外される。「BW」においては、記述部Ｐ３８の「RD」を出力するレジスタＲ７が除外され、「BR」においては、記述部Ｐ３９の「WR」を出力するレジスタＲ８が除外される。
【００４３】
この結果、「IDLE」において、「STATE_REG」，「BURST_COUNT」，「CEN」，「START」，「LAST」，「BURST」，「RD」，「WR」をそれぞれ出力するレジスタＲ１，Ｒ２，Ｒ５，Ｒ３，Ｒ１０，Ｒ４，Ｒ７，Ｒ８が関係レジスタの組として抽出される。また、「SW」において、「STATE_REG」，「CEN」，「START」，「LAST」，「WR」をそれぞれ出力するレジスタＲ１，Ｒ５，Ｒ３，Ｒ１０，Ｒ８が関係レジスタの組として抽出される。また、「SR」において、「STATE_REG」，「CEN」，「START」，「LAST」，「RD」をそれぞれ出力するレジスタＲ１，Ｒ５，Ｒ３，Ｒ１０，Ｒ７が関係レジスタの組として抽出される。また、「BW」において、「STATE_REG」，「BURST_COUNT」，「CEN」，「START」，「LAST」，「BURST」，「WR」をそれぞれ出力するレジスタＲ１，Ｒ２，Ｒ５，Ｒ３，Ｒ１０，Ｒ４，Ｒ８が関係レジスタの組として抽出される。また、「BR」において、「STATE_REG」，「BURST_COUNT」，「CEN」，「START」，「LAST」，「BURST」，「RD」をそれぞれ出力するレジスタＲ１，Ｒ２，Ｒ５，Ｒ３，Ｒ１０，Ｒ４，Ｒ７が関係レジスタの組として抽出される。
【００４４】
図１２に示した関係レジスタ抽出部２４は更に、例えば図１７に示すように、シーケンス名称毎に、関係レジスタの組、及び関係レジスタの値を対応付ける。記述部Ｐ１４１のシーケンス名称「IDLE」において、関係レジスタＲ１，Ｒ２，Ｒ５，Ｒ３，Ｒ１０，Ｒ４，Ｒ７，Ｒ８から出力される「STATE_REG」，「BURST_COUNT」，「CEN」，「START」，「LAST」，「BURST」，「RD」，「WR」と、「STATE_REG」，「BURST_COUNT」，「CEN」，「START」，「LAST」，「BURST」，「RD」，「WR」の値「000」，「000」，「0」，「0」，「0」，「0」，「0」，「0」を対応付けている。記述部Ｐ４２，Ｐ４３，Ｐ４４，Ｐ４５の「SW」，「SR」，「BW」，「BR」においても同様に、関係レジスタ及び関係レジスタの値をそれぞれ対応付けているので、重複した説明を省略する。
【００４５】
図１に示したモニタ記述生成手段３０は、関係レジスタ抽出手段２０により抽出された関係レジスタを用いてモニタ記述を生成する。「モニタ記述」とは、図１に示した回路記述記憶装置２に格納された回路記述から構成される制御回路の内部状態に対応するシーケンスを示す記述である。モニタ記述生成手段３０は、図１４に示すように、インスタンス記述生成部３１、名称変更部３２、組み合わせ回路記述生成部３３及びモニタ記述生成部３４を備える。
【００４６】
インスタンス記述生成部３１は、図１に示した回路記述記憶装置２に格納された回路記述、及びバスプロトコルプロファイル記憶装置３に格納されたバスプロトコルプロファイルを読み込んで、図１８に示すようなインスタンス記述を生成する。回路記述Ｐ５１において、回路記述に記述された入力信号「CLK」，「RST_X」，「DIN」，「ACK」及び出力信号「START」，「BURST」，「CEN」，「ADDR」，「RD」，「WR」，「DOUT」，「LAST」が記述されている。回路記述Ｐ５２において、シーケンス名称の数に対応するビットを追加した新たな出力信号「IDLE」，「SW」，「SR」，「BW」，「BR」が記述されている。なお、新たな出力信号の名称は、シーケンス名称と重複しなければ任意に決定して良い。記述部Ｐ５３において、検証したい回路記述のインスタンスが記述されている。初めの「BUSMASTER_TEST_MODULE」はモジュール名を示し、次の「BUSMASTER_TEST_MODULE」はインスタンス名を示す。ピリオド「.」に続く「CLK」等の信号名がインスタンスされる側の信号名を意味する。また、インスタンスされる側の信号名に続く「（CLK）」等の括弧内の信号名が、インスタンスする側の信号名を意味する。
【００４７】
図１４に示した名称変更部３２は、インスタンス記述生成部３１により生成されたインスタンス記述の新たな出力信号の名称とシーケンス名称とが重複しているか否か判定する。判定した結果、名称が重複している場合には重複を回避するために新たな出力信号の名称を変更する。名称変更部３２は、例えば、図１８に示した新たな出力信号の名称「IDLE」，「SW」，「SR」，「BW」，「BR」が、図１１に示したシーケンス名称である「IDLE」，「SW」，「SR」，「BW」，「BR」と重複している場合に、新たな出力信号の名称の接尾辞としてアンダースコア「_」と数字を付加し、「IDLE_0001」，「SW_0001」，「SR_0001」，「BW_0001」，「BR_0001」等と変更する。
【００４８】
図１４に示した組み合わせ回路記述生成部３３は、図１２に示した関係レジスタ抽出手段２０により抽出された関係レジスタを用いて、図２０〜図２３に一連して示すような組み合わせ回路記述を生成する。「組み合わせ回路記述」とは、図１４に示したインスタンス記述生成部３１により生成されたインスタンス記述で付加された新たな出力信号に対して、図４〜図１０に示した回路記述から構成されるステートマシン内の関係レジスタから出力される値Ｒ１〜Ｒ５，Ｒ７〜Ｒ１０を取り出して、シーケンスを表す信号を出力する組み合わせ回路の記述である。
【００４９】
例えば図１９の記述部Ｐ６１において、図２３に示した関係レジスタＲ１，Ｒ２，Ｒ５，Ｒ３，Ｒ１０，Ｒ４，Ｒ７，Ｒ８からそれぞれ出力される「STATE_REG」，「BURST_COUNT」，「CEN」，「START」，「LAST」，「BURST」，「RD」，「WR」の値が「000」，「000」，「0」，「0」，「0」，「0」，「0」，「0」の場合には、組み合わせ回路が新たな出力信号「IDLE」に「1」を出力するとが記述されている。また、記述部Ｐ６２において、関係レジスタＲ１，Ｒ５，Ｒ３，Ｒ１０，Ｒ７からそれぞれ出力される「STATE_REG」，「CEN」，「START」，「LAST」，「RD」の値が「001」，「1」，「1」，「1」，「1」、又は「001」，「1」，「0」，「1」，「1」の場合には、組み合わせ回路５２が新たな出力信号「SW」に「1」を出力することが記述されている。
【００５０】
また、図２０の記述部Ｐ６３において、関係レジスタＲ１，Ｒ５，Ｒ３，Ｒ１０，Ｒ７から出力される「STATE_REG」，「CEN」，「START」，「LAST」，「RD」の値が「001」，「1」，「1」，「1」，「1」、又は「001」，「1」，「0」，「1」，「1」の場合には、組み合わせ回路５２は新たな出力信号「SR」に「1」を出力することにより、ステートマシンのステートに対応するシーケンス名称が「SR」であることが示される。また、図２１に示した記述部Ｐ６４、及び図２２の記述部Ｐ６５においても同様に、関係レジスタの値に基づいて、組み合わせ回路５２は新たな出力信号「BW」及び「BR」に「1」をそれぞれ出力することが記述されている。
【００５１】
なお、記述部Ｐ６４の「BW」内、及び記述部Ｐ６５の「BR」内の分類は、ドット「.」の代わりにアンダースコア「_」及び文字列「tsb」等を用いて、「BW_tsb_1ack」，「BW_tsb_2ack」，「BW_tsb_3ack」及び「BR_tsb_1ack」，「BR_tsb_2ack」，「BR_tsb_3ack」等と表すことができる。
【００５２】
図１４に示したモニタ記述生成部３４は、インスタンス記述生成部３１により生成されたインスタンス記述、及び組み合わせ回路記述生成部３３により生成された組み合わせ回路記述をあわせて、モニタ記述として生成する。
【００５３】
モニタ記述から、例えば図２３に示すようなモニタ５０が構成される。モニタ５０は、図１９に示したインスタンス記述により回路記述がインスタンスされた制御回路５１、及び図２０〜図２３に示したインスタンス記述により構成される組み合わせ回路５２を含むラッパーである。組み合わせ回路５２は、制御回路５１中の全てのレジスタＲ１〜Ｒ１０のうち、関係レジスタＲ１〜Ｒ５，Ｒ７，Ｒ８，Ｒ１０の信号「STATE_REG」，「BURST_COUNT」，「CEN」，「START」，「LAST」，「BURST」，「RD」，「WR」に基づいて、制御回路５１のステートに対応するシーケンスを示す信号を出力する。
【００５４】
例えば図１９の記述部Ｐ６１によれば、図２３に示した関係レジスタＲ１，Ｒ２，Ｒ５，Ｒ３，Ｒ１０，Ｒ４，Ｒ７，Ｒ８からそれぞれ出力される「STATE_REG」，「BURST_COUNT」，「CEN」，「START」，「LAST」，「BURST」，「RD」，「WR」の値が「000」，「000」，「0」，「0」，「0」，「0」，「0」，「0」の場合には、組み合わせ回路５２が新たな出力信号「IDLE」に「1」を出力することにより、制御回路５１のステートに対応するシーケンス名称が「IDLE」であることが示される。
【００５５】
また、時１９の記述部Ｐ６２よれば、図２３に示した関係レジスタＲ１，Ｒ５，Ｒ３，Ｒ１０，Ｒ７からそれぞれ出力される「STATE_REG」，「CEN」，「START」，「LAST」，「RD」の値が「001」，「1」，「1」，「1」，「1」、又は「001」，「1」，「0」，「1」，「1」の場合には、組み合わせ回路５２が新たな出力信号「SW」に「1」を出力することにより、制御回路５１のステートに対応するシーケンス名称が「SW」であることが示される。
【００５６】
また、図２０の記述部Ｐ６３よれば、図２３に示した関係レジスタＲ１，Ｒ５，Ｒ３，Ｒ１０，Ｒ７から出力される「STATE_REG」，「CEN」，「START」，「LAST」，「RD」の値が「001」，「1」，「1」，「1」，「1」、又は「001」，「1」，「0」，「1」，「1」の場合には、組み合わせ回路５２は新たな出力信号「SR」に「1」を出力することにより、制御回路５１のステートに対応するシーケンス名称が「SR」であることが示される。
【００５７】
同様に、図２１に示した記述部Ｐ６４、及び図２２の記述部Ｐ６５によれば、関係レジスタの値に基づいて、組み合わせ回路５２は新たな出力信号「BW」及び「BR」に「1」をそれぞれ出力することにより、制御回路５１のステートに対応するシーケンス名称がそれぞれ、「BW」及び「BR」であることが示される。
【００５８】
なお、「BW_tsb_1ack」，「BW_tsb_2ack」，「BW_tsb_3ack」及び「BR_tsb_1ack」，「BR_tsb_2ack」，「BR_tsb_3ack」に対応する新たな信号は図１８に示したインスタンス記述において付加していないが、「BW_tsb_1ack」，「BW_tsb_2ack」，「BW_tsb_3ack」及び「BR_tsb_1ack」，「BR_tsb_2ack」，「BR_tsb_3ack」に対応する新たな信号も付加すれば、ステートマシンのステートに対応するシーケンス名称が、バーストライト内の分類「BW_tsb_1ack」，「BW_tsb_2ack」又は「BW_tsb_3ack」や、バーストリード中の分類「BR_tsb_1ack」，「BR_tsb_2ack」又は「BR_tsb_3ack」であることが分かる。
【００５９】
図１に示した入力装置６としては、例えばキーボード、マウス、ＯＣＲ等の認識装置、イメージスキャナ等の図形入力装置、音声入力装置等の特殊入力装置が使用可能である。出力装置７は、図１に示した回路記述記憶装置２に格納された図４〜図１０に示したような回路記述、図１に示したバスプロトコルプロファイル記憶装置３に格納された図１１に示したようなバスプロトコルプロファイル、図１に示したモニタ記述生成手段３０により生成された図２３に示したようなモニタ等を出力可能である。出力装置７としては、液晶ディスプレイ、ＣＲＴディスプレイ等の表示装置や、インクジェットプリンタ、レーザプリンタ等の印刷装置等を用いることができる。
【００６０】
主記憶装置４には、ＲＯＭ及びＲＡＭが組み込まれている。ＲＯＭは、ＣＰＵ１において実行されるプログラム（モニタ記述生成プログラム）を格納しているプログラム記憶装置等として機能する（プログラムの詳細は後述する。）。ＲＡＭは、ＣＰＵ１におけるプログラム実行処理中に利用されるデータ等を一時的に格納したり、作業領域として利用される一時的なデータメモリ等として機能する。主記憶装置４としては、例えば半導体メモリ、磁気ディスク、光ディスク、光磁気ディスクや磁気テープ等が採用可能である。
【００６１】
また、図１に示したモニタ記述生成装置は、入力装置６、出力装置７等をＣＰＵ１につなぐ図示を省略した入出力制御装置（インターフェース）を備える。また、ＣＰＵ１は、図示を省略した記憶装置管理手段を備える。回路記述記憶装置２及びバスプロトコルプロファイル記憶装置３との入出力が必要な場合は、記憶装置管理手段を介して、必要なファイルの格納場所を探し、ファイルの読み出し・書き込み処理がなされる。
【００６２】
以下、本発明の実施の形態に係るモニタ記述生成方法を図２４及び図２５のフローチャートを参照しながら説明する。なお、各手順における図１のＣＰＵ１の処理結果は主記憶装置４に逐次格納される。
【００６３】
（イ）図２４のステップＳ１０において、図１に示した回路記述レジスタ抽出手段１０は、回路記述記憶装置２に格納された回路記述からレジスタを全て抽出する。なお、回路記述は、回路記述記憶装置２に予め格納されていても良く、或いは入力装置６を介して入力・格納されても良い。
【００６４】
（ロ）ステップＳ２１において、図１２に示したリセット値抽出部２１は、図１に示した回路記述レジスタ抽出手段１０により抽出されたレジスタに対して、リセット動作時の全てのレジスタの値を抽出する。ステップＳ２２において、図１２に示したレジスタ値抽出部２２は、図１に示したバスプロトコルプロファイル記憶装置３に格納されたバスプロトコルプロファイルにより特定されるシーケンスを実行して値伝播シミュレーションを行い、シーケンスに関係する全てのレジスタの値を抽出する。ステップＳ２３において、レジスタ値抽出部２２による値伝播シミュレーション中に、バスプロトコルプロファイルの出力信号が記述された箇所に達すると、ステップＳ２４に進む。一方、バスプロトコルプロファイルに出力信号が記述された箇所がなければ、ステップＳ２５に進む。
【００６５】
（ハ）ステップＳ２４１において、図１３に示した出力信号抽出部２３１は、ステップＳ２３で達したバスプロトコルプロファイルに記述された複数の出力信号のうち、１つの出力信号を抽出する。ステップＳ２４２において、図１３に示した関係信号抽出部２３２は、図１に示した回路記述記憶装置２に格納された回路記述を参照して、ステップＳ２４１において抽出された出力信号に関係する関係信号を全て抽出する。
【００６６】
（ニ）ステップＳ２４３において、図１３に示した信号分類部２３３は、ステップＳ２４２で抽出された関係信号を、既定値信号と未定値信号とに分類し、未定値信号を抽出する。更に、信号分類部２３３は、分類した未定値信号から、アドレス信号及びデータ信号等の任意の値を出力する未定値信号を分類し、除外する。
【００６７】
（ホ）ステップＳ２４４において、信号値候補抽出部２３４は、ステップＳ２４３で分類された未定値信号に対して、バスプロトコルプロファイルに記述された出力信号がバスプロトコルプロファイルに記述された通りの値となる場合の、全ての値の候補を抽出する。ステップＳ２４５において、バスプロトコルプロファイルの全ての出力信号に対して未定値信号の値の候補がそれぞれ抽出された場合、ステップＳ２４６に進む。一方、未抽出の出力信号がある場合には、ステップＳ２４１〜Ｓ２４４の手順を未抽出の出力信号に対して同様に繰り返す。
【００６８】
（ヘ）ステップＳ２４６において、信号値決定部２３５は、未定値信号の値の候補の論理積を取り、値を決定する。１通りの値が決定された場合、ステップＳ２２の手順における値伝播シミュレーションを再開し、ステップＳ２４６で決定した値に関係するレジスタの値も抽出する。一方、ステップＳ２４６において、信号の値が１通りに定まらない場合は、ステップＳ２４７において警告を発する。警告を受けて、設計・検証者や仕様により問題がないと判断された場合は、ステップＳ２２の手順に戻り、その複数の候補にそれぞれ関係するレジスタの値をそれぞれ抽出する。
【００６９】
（ト）ステップＳ２５において、注目しているシーケンスの値伝播シミュレーションが終了したらステップＳ２６に進み、注目しているシーケンスの途中であればステップＳ２２に戻る。ステップＳ２６において、バスプロトコルプロファイルに記述された全てのシーケンスが実行された場合にはステップＳ２７に進み、実行されていないシーケンスがある場合にはステップＳ２２の手順に戻り、実行されていない他のシーケンスに対して値伝搬シミュレーションが行われる。
【００７０】
（チ）ステップＳ２７において、図１２に示した関係レジスタ抽出部２４は、ステップＳ１０において抽出された全てのレジスタのうち、ステップＳ２１において抽出されたリセット動作時の値から、ステップＳ２２において抽出された値が不変のレジスタを除外し、関係レジスタを抽出する。
【００７１】
（リ）図２５のステップＳ３１において、図１４に示したインスタンス記述生成部３１は、図１に示した回路記述記憶装置２に格納された回路記述、及びバスプロトコルプロファイル記憶装置３に格納されたバスプロトコルプロファイルを読み込んで、インスタンス記述を生成する。
【００７２】
（ヌ）ステップＳ３２において、図１４に示した名称変更部３２は、ステップＳ３１で生成されたインスタンス記述に記述された出力信号の名称とシーケンス名称とを比較して、出力信号の名称とシーケンス名称とが衝突しているか否か判断する。出力信号の名称とシーケンス名称とが衝突していなければステップＳ３４に進む。一方、出力信号の名称とシーケンス名称が衝突している場合、ステップＳ３３に進み、出力信号の名称を変更する。そして、ステップＳ３２の手順に戻り、出力信号の変更された名称とシーケンス名称を比較する。
【００７３】
（ル）ステップＳ３４において、図１４に示した組み合わせ回路記述生成部３３は、ステップＳ２７で抽出された関係レジスタを用いて、ステップＳ３１で生成されたインスタンス記述に基づいて、組み合わせ回路を生成する。ステップＳ３５において、図１４に示したモニタ記述生成部３４は、ステップＳ３２で生成されたインスタンス記述、及びステップＳ３５で生成された組み合わせ回路記述をあわせて、モニタ記述として出力する。
【００７４】
実施の形態に係るモニタ記述生成装置及びモニタ記述生成方法により生成されたモニタ記述を用いることにより、ステートマシンのステートを参照することなく、モニタの入出力信号と新たな出力信号のみを参照するだけでステートマシンのステートに対応するシーケンスを示すことができる。即ち、ステートマシンの内部状態を、実装方法等に依存せずに、バスプロトコルのみに依存する情報に変換することができる。したがって、ステートマシンの設計から独立させてプロパティを記述することができる。したがって、例えば、「バーストライト（ＢＷ）中、3回目の「ACK」がアサートされたら、次のクロックサイクルで「LAST」をアサートしなくてはならない」というプロパティの場合、
if ( BW_tsb_3ack == 1’b1) then ( next( LAST == 1’b1 ) );
のように記述することができる。よって、一旦開発したプロパティ記述を、構造が異なるが同一のバスプロトコルを構成する制御回路に対して再利用することができる。したがって、制御回路を検証する際の時間短縮・検証効率の向上を図ることができ、回路記述とプロパティ記述の同時開発も可能となる。更に、プロパティに「CLK」，「RST_X」，「CMD」，「DIN」，「ACK」等の入力信号を記述しなくて良いので、入力信号を記述した場合に比べて、プロパティ・チェッカにおける処理時間を短縮可能となる。
【００７５】
また、ステップＳ１０の手順において、図１に示した回路記述レジスタ抽出手段１０により論理合成を行わずにレジスタＲ１〜Ｒ１０を抽出するので、特に論理合成に時間を要する回路記述の場合に全てのレジスタの抽出に要する時間を短縮し、検証の効率化を図ることができる。
【００７６】
また、図１に示した関係レジスタ抽出手段２０により、値伝播シミュレーションとバックトレースを組み合わせることにより、値伝播シミュレーションのみでは決定できない、回路記述に記述されていないレジスタＲ１１であってバスプロトコルプロファイルに記述された出力信号に関係するレジスタＲ１１の値を抽出可能となる。したがって、シーケンス中のレジスタの値の組み合わせの数を減らすことができ、検証時間の短縮を図ることができる。
【００７７】
また、図３に示した信号値決定部２３５が、図２５のステップＳ２３７において１通りに組み合わせが決定しないときに警告を発することにより、バスプロトコルプロファイルの記述に対して必要な情報の欠落している可能性を指摘することで、検証効率を向上させることができる。
【００７８】
なお、図３に示した出力信号抽出部２３１及び関係信号抽出部２３２により、出力信号及び関係信号をそれぞれ予め抽出して、図１に示した回路記述記憶装置２等に予め格納しても良い。バスプロトコルプロファイルに記述された出力信号及び関係信号を予め抽出・格納しておけば、バックトレースの際の処理時間を短縮することができ、検証時間の短縮、効率化を図ることができる。
【００７９】
図２４及び図２５に示した：（イ）ステップＳ１０における回路記述レジスタ抽出手段１０が、回路記述記憶装置により格納されたバスプロトコルを構成する制御回路の回路記述からレジスタを抽出する手順；（ロ）ステップＳ２０における関係レジスタ抽出手段が２０、レジスタのうち、バスプロトコルプロファイル記憶装置により格納されたバスプロトコルプロファイルにより特定される、バスプロトコルに規定される複数のシーケンスにそれぞれ関係する関係レジスタをそれぞれ抽出する手順；（ハ）モニタ記述生成手段３０が、関係レジスタを用いて、制御回路の内部状態に対応するシーケンスを示すモニタ記述を生成する手順；等の一連の手順は、図２４及び図２５と等価なアルゴリズムのプログラム（モニタ記述生成プログラム）により、図１に示したモニタ記述生成装置を制御して実行できる。このプログラムは、図１に示したモニタ記述生成装置を構成するコンピュータシステムの主記憶装置４等に記憶させれば良い。
【００８０】
また、このプログラムは、コンピュータ読取り可能な記録媒体に保存し、この記録媒体を情報処理装置のプログラム記憶装置に読み込ませることにより、本発明の一連の手順を実行することができる。ここで、「コンピュータ読取り可能な記録媒体」とは、例えばコンピュータの外部メモリ装置、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープ等のプログラムを記録することができるような媒体等を意味する。具体的には、フレキシブルディスク、ＣＤ−ＲＯＭ，ＭＯディスク、カセットテープ、オープンリールテープ等が「コンピュータ読取り可能な記録媒体」に含まれる。例えば、情報処理装置の本体は、フレキシブルディスク装置（フレキシブルディスク駆動）及び光ディスク装置（光ディスク駆動）を内蔵若しくは外部接続するように構成できる。フレキシブルディスク駆動に対してはフレキシブルディスクを、また光ディスク駆動に対してはＣＤ−ＲＯＭをその挿入口から挿入し、所定の読み出し操作を行うことにより、これらの記録媒体に格納されたプログラムを情報処理装置を構成するプログラム記憶装置にインストールすることができる。また、所定の駆動装置を接続することにより、例えばゲームパック等に利用されているメモリ装置としてのＲＯＭや、磁気テープ装置としてのカセットテープを用いることもできる。更に、インターネット等の情報処理ネットワークを介して、このプログラムをプログラム記憶装置に格納することが可能である。
【００８１】
（変形例）
本発明の実施の形態の変形例に係るモニタ記述生成装置は、図１に示したモニタ記述生成手段３０の代わりに、図２６に示すような仮想信号名称決定部３１ｘ、名称変更部３２、及び仮想信号定義部３３ｘを備えるモニタ記述生成手段３０ｘを備える点が異なる。
【００８２】
仮想信号名称決定部３１ｘは、図１に示した回路記述記憶装置２に格納された回路記述、及びバスプロトコルプロファイル記憶装置３に格納されたバスプロトコルプロファイルを読み込んで、図２８及び図２９に示すように、プロパティ・チェッカ内で用いる仮想信号の名称を決定する。図２８の記述部Ｐ７１において「IDLE」、記述部Ｐ７２において「SW」、記述部Ｐ７３において「SR」、図２９に示した記述部Ｐ７４において「BW」、記述部Ｐ７５において「BR」が仮想信号の名称として記述されている。バスプロトコルプロファイルにおいて、シーケンス「BW」，「BR」内の分類は、図２９に示すようにドット「.」の代わりにアンダースコア「_」と文字列「tsb」を用いてそれぞれ、「BW_tsb_1ack」，「BW_tsb_2ack」，「BW_tsb_3ack」，「BR_tsb_1ack」，「BR_tsb_2ack」，「BR_tsb_3ack」等と記述される。
【００８３】
図２６に示した名称変更部３２は、仮想信号名称決定部３１ｘにより決定された仮想信号の名称とシーケンス名称とが衝突しているか否か判定する。衝突していると判定された場合、仮想信号の名称が変更される。
【００８４】
仮想信号定義部３３ｘは、シーケンス名称の数に対応する数のビットを有するプロパティ・チェッカ内部の信号（仮想信号）を定義する。仮想信号の定義は利用するプロパティ・チェッカにより異なる。この場合、プロパティ・チェッカ内部のみで用いる仮想信号を定義し、その仮想信号に対して、図２３に示した組み合わせ回路５２と同様な組み合わせ回路を持つようにその仮想信号を定義すれば良い。プロパティ・チェッカ内部のみで用いられる仮想信号を定義した記述を「モニタ記述」として生成する。図２６に示したモニタ記述生成手段３０ｘの他の構成は、図１に示したモニタ記述生成装置と実質的に同様であるので、重複した説明を省略する。
【００８５】
本発明の実施の形態の変形例に係るモニタ記述生成方法は、図２４のステップＳ１０〜Ｓ２７の手順までは実質的に同様であるので、重複した説明を省略する。
【００８６】
（イ）図２７のステップＳ４１において、図２６に示した仮想信号名称決定部３１ｘは、図１に示したバスプロトコルプロファイル記憶装置３に格納されたバスプロトコルプロファイルを読み込んで、バスプロトコルプロファイルに記述されたシーケンス名称の数に対応する数のプロパティ・チェッカ内部の仮想信号を定義する。
【００８７】
（ロ）ステップＳ４２において、図２６に示した名称変更部３２は、ステップＳ４１において決定された仮想信号の名称とシーケンス名称とが衝突しているか否か判定する。衝突していなければ、ステップＳ４４に進む。一方、衝突している場合には、ステップＳ４３に進み、仮想信号の名称を変更して、ステップＳ４２の手順に戻る。
【００８８】
（ハ）ステップＳ４４において、図２６に示した仮想信号定義部３３ｘは、ステップＳ４２で生成された関係するレジスタに基づいて、プロパティ・チェック内で用いる仮想信号定義（モニタ記述）を生成する。生成されたモニタ記述は、ファイル、アプリケーション・プログラミング・インターフェース（ＡＰＩ）、又はその他の方法で、プロパティ・チェッカに引き渡される。
【００８９】
以上説明したように、本発明の実施の形態の変形例によれば、最終的にプロパティ・チェッカを用いて検証することを考慮して、ＨＤＬを用いたモニタの他に、プロパティ・チェッカ内部で独自に定義する仮想信号を用いてモニタとして利用することもできる。仮想信号を用いたモニタ記述を生成する場合でも、プロパティ・チェッカで検証した場合と同様に、内部状態を参照することなく、入出力信号とシーケンス名称に対応して付加されたプロパティ・チェッカ内部の仮想信号のみを参照するだけで記述することが可能となる。したがって、プロパティの再利用性が高まり、入力信号を最初から記述していないため、最初から記述した場合に比べて、プロパティ・チェッカで処理する時間を短くすることが可能となる。
【００９０】
更に、プロパティ・チェッカを用いて検証する際、バスプロトコルプロファイルに対応したシーケンス名称の仮想信号を自動でプロパティ・チェッカに引き渡すことで、省力化を図ることができる。
【００９１】
（その他の実施の形態）
本発明は、第の実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。例えば、図１１にバスプロトコルプロファイルの一例を示したが、バスプロトコルプロファイルとしては、バスプロトコルに沿って入出力信号の値を変化させるときに、入出力信号の値の組み合わせ（時間的な組み合わせを含む）に対して一意に定まる名称を特定することができる記述であれば良い。
【００９２】
また、図１に示したモニタ記述生成装置において、回路記述レジスタ抽出手段１０が、論理合成ツールであっても良い。即ち、回路記述レジスタ抽出手段１０が、回路記述に基づいて実際に論理合成し、論理合成された制御回路から全てのレジスタを抽出することもできる。このように、本発明はここでは記載していない様々な実施の形態等を含むことは勿論であり、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【図面の簡単な説明】
【００９３】
【図１】本発明の実施の形態に係るモニタ記述生成装置を示すブロック図である。
【図２】本発明の実施の形態に係る回路記述に記述されたステートマシンの状態遷移図である。
【図３】本発明の実施の形態に係る回路記述の一例を示す記述（その１）である。
【図４】本発明の実施の形態に係る回路記述の一例を示す記述（その２）である。
【図５】本発明の実施の形態に係る回路記述の一例を示す記述（その３）である。
【図６】本発明の実施の形態に係る回路記述の一例を示す記述（その４）である。
【図７】本発明の実施の形態に係る回路記述の一例を示す記述（その５）である。
【図８】本発明の実施の形態に係る回路記述の一例を示す記述（その６）である。
【図９】本発明の実施の形態に係る回路記述の一例を示す記述（その７）である。
【図１０】本発明の実施の形態に係る回路記述の一例を示す記述（その８）である。
【図１１】本発明の実施の形態に係るバスプロコトルプロファイルを示す記述である。
【図１２】本発明の実施の形態に係る関係レジスタ抽出手段を示すブロック図である。
【図１３】本発明の実施の形態に係るバックトレース部を示すブロック図である。
【図１４】本発明の実施の形態に係るモニタ記述生成手段を示すブロック図である。
【図１５】本発明の実施の形態に係る値伝播シミュレーションを説明するためのタイミングチャートである。
【図１６】本発明の実施の形態に係る全てのレジスタとシーケンス名称の対応を示す記述である。
【図１７】本発明の実施の形態に係る関係レジスタとシーケンス名称の対応を示す記述である。
【図１８】本発明の実施の形態に係るモニタの回路図である。
【図１９】本発明の実施の形態に係るインスタンス記述である。
【図２０】本発明の実施の形態に係る組み合わせ回路記述（その１）である。
【図２１】本発明の実施の形態に係る組み合わせ回路記述（その２）である。
【図２２】本発明の実施の形態に係る組み合わせ回路記述（その３）である。
【図２３】本発明の実施の形態に係る組み合わせ回路記述（その４）である。
【図２４】本発明の実施の形態に係るモニタ記述生成方法を説明するためのフローチャート（その１）である。
【図２５】本発明の実施の形態に係るモニタ記述生成方法を説明するためのフローチャート（その２）である。
【図２６】本発明の実施の形態の変形例に係るモニタ記述生成手段を示すブロック図である。
【図２７】本発明の実施の形態の変形例に係るモニタ記述生成方法を説明するためのフローチャートである。
【図２８】本発明の実施の形態に係る仮想信号を用いたモニタ記述（その１）である。
【図２９】本発明の実施の形態に係る仮想信号を用いたモニタ記述（その２）である。
【符号の説明】
【００９４】
１…中央処理装置（ＣＰＵ）
２…回路記述記憶装置
３…バスプロトコルプロファイル記憶装置
４…主記憶装置
５…プログラム記憶装置
６…入力装置
７…出力装置
１０…回路記述レジスタ抽出手段
２０…関係レジスタ抽出手段
２１…リセット値抽出部
２２…レジスタ値抽出部
２３…バックトレース部
２３１…出力信号抽出部
２３２…関係信号抽出部
２３３…信号分類部
２３４…信号値候補抽出部
２３５…信号値決定部
２４…関係レジスタ抽出部
３０…モニタ記述生成手段
３０ｘ…モニタ記述生成手段
３１…インスタンス記述生成部
３１ｘ…仮想信号名称決定部
３２…名称変更部
３３…回路記述生成部
３３ｘ…仮想信号定義部
３４…組み合わせ回路記述生成部
３５…モニタ記述生成部
【図１】
2005275963.tif 000003
【図２】
2005275963.tif 000004
【図３】
2005275963.tif 000005
【図４】
2005275963.tif 000006
【図５】
2005275963.tif 000007
【図６】
2005275963.tif 000008
【図７】
2005275963.tif 000009
【図８】
2005275963.tif 000010
【図９】
2005275963.tif 000011
【図１０】
2005275963.tif 000012
【図１１】
2005275963.tif 000013
【図１２】
2005275963.tif 000014
【図１３】
2005275963.tif 000015
【図１４】
2005275963.tif 000016
【図１５】
2005275963.tif 000017
【図１６】
2005275963.tif 000018
【図１７】
2005275963.tif 000019
【図１８】
2005275963.tif 000020
【図１９】
2005275963.tif 000021
【図２０】
2005275963.tif 000022
【図２１】
2005275963.tif 000023
【図２２】
2005275963.tif 000024
【図２３】
2005275963.tif 000025
【図２４】
2005275963.tif 000026
【図２５】
2005275963.tif 000027
【図２６】
2005275963.tif 000028
【図２７】
2005275963.tif 000029
【図２８】
2005275963.tif 000030
【図２９】
2005275963.tif 000031