(57)【特許請求の範囲】
【請求項１】
マイクロプロセッサが実行する単位となる命令毎に、該命令に続いて複数の次に実行可能な命令を定めた命令相関ルール・データベースと、
上記単位となる命令毎にシンタックスを複数種類定めた命令シンタックスルール・データベースと、
上記命令相関ルール・データベースに基づいて、ある命令を直前の命令として設定して次に実行可能な命令を選択し、以後は該選択された命令を直前の命令として次に実行可能な命令を順次選択して連続した命令群を生成するマイクロプロセッサ命令発生器と、
上記マイクロプロセッサ命令発生器が生成した連続した命令群の各命令に対して上記命令シンタックスルール・データベースで定められた上記複数種類のシンタックスの中から１つの種類のシンタックスを選択し、該選択したシンタックスの命令をマイクロプロセッサ命令とすることにより、上記連続した命令群からマイクロプロセッサ命令群を生成するマイクロプロセッサ命令構文発生器と、
上記マイクロプロセッサ命令構文発生器が生成したマイクロプロセッサ命令群を構成する各マイクロプロセッサ命令のシンタックスの種類に応じて、予め設定したワークアドレスの領域のいずれかのアドレスをマイクロプロセッサ命令のアクセスアドレスとして設定することにより、上記マイクロプロセッサ命令群からマイクロプロセッサ・プログラムを生成する実値変換器と、
を備えたことを特徴とするマイクロプロセッサ検証プログラム作成装置。
【請求項２】
マイクロプロセッサ内の内部回路の状態を読み出す内部回路読み出しプログラムを生成する内部回路読み出しプログラム生成器を備えて、
上記マイクロプロセッサ・プログラムに上記内部回路読み出しプログラム生成器が生成した内部回路読み出しプログラムを付加して内部回路の状態を読み出すようにすることを特徴とする請求項１記載のマイクロプロセッサ検証プログラム作成装置。
【請求項３】
上記単位となる命令の出現確率を規定した命令出現率定義、およびシンタックスの出現確率を規定した命令シンタックス出現率定義を定めて、
マイクロプロセッサ命令発生器は、上記命令出現率定義に基づいて直前の命令から実行可能な命令を選択して上記連続した命令群を生成すると共に、マイクロプロセッサ命令構文発生器は、上記シンタックス出現率定義に基づいて１つの種類のシンタックスを選択して上記連続した命令群から上記マイクロプロセッサ命令群を生成するようにしたことを特徴とする請求項１記載のマイクロプロセッサ検証プログラム作成装置。
【請求項４】
上記単位となる命令を機能別に分類し、該分類された各機能毎に出現確率を規定した機能別命令出現率定義を定めて、
マイクロプロセッサ命令発生器は、上記機能別命令出現率定義に基づいて直前の命令から実行可能な命令を選択して上記連続した命令群を生成することを特徴とする請求項３記載のマイクロプロセッサ検証プログラム作成装置。
【請求項５】
マイクロプロセッサ命令群を登録する生成登録済検証命令データベースを備えて、
マイクロプロセッサ命令構文発生器は、生成したマイクロプロセッサ命令群の中から所定範囲のマイクロプロセッサ命令群を上記生成登録済検証命令データベースに登録し、新規に生成したマイクロプロセッサ命令群の中にある所定範囲のマイクロプロセッサ命令群が上記生成登録済検証命令データベースに既に登録した所定範囲のマイクロプロセッサ命令群と同一であれば、上記所定範囲のマイクロプロセッサ命令群のマイクロプロセッサ命令をシンタックスの異なるマイクロプロセッサ命令に変更して、マイクロプロセッサ命令群を生成するようにしたことを特徴とする請求項１記載のマイクロプロセッサ検証プログラム作成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサ等の論理回路の設計検証を容易にするためのもので、特に実際的な命令を組み合わせた実行結果を容易に得るようにしたものである。
【０００２】
【従来の技術】
マイクロプロセッサ等の命令コードプログラムに従って動作する論理回路の検証においては、何らかの機能を実現する検証プログラムを作成し、これを対象論理回路で実行した際に得られることが予想される期待値とシミュレーション結果を比較して、対象回路の正当性を試験している。このためには、まずどのような命令群を実行させるのが最適であるかが重要である。
この検証プログラムの作成に関しては、第１の従来例として特開平３−１４１３５号公報のように試験対象命令語を乱数により作成するものや、第２の従来例として特開平７−２７１８３４号公報のように既存の試験プログラムから新たな検証プログラムを作成するもの、また第３の従来例として特開平１０−２８３３８８号公報のように動作パラメータに基いてシミュレーションパターンを作成するもの等がある。
【０００３】
一方、作成された命令群に対応して、その様な動作で正しい結果が予測できて、それらは期待値と呼ばれる。
このような期待値の作成に関しては、第１の従来例の特開平３−１４１３５号公報のようにソフトウェアシミュレータにより期待値を得るものや、第２の従来例の特開平７−２７１８３４号公報のように予め正当性の確認された回路から期待値を得るものや、第３の従来例の特開昭６１−２３２４８号公報のように同一命令セットが実行可能なシミュレータにより期待値を得るものがある。
【０００４】
【発明が解決しようとする課題】
検証プログラムの作成に関しては、第１の従来例の特開平３−１４１３５号公報のように全くランダムに命令やオペランドを決定した場合にはマイクロプロセッサ命令の複雑さ、多数さを考えると実用的な命令群が作成されにくいという課題がある。また命令自体の組み合わせ選択はランダムであり、最適命令の選択という思想が薄い。
第２の従来例の特開平７−２７１８３４号公報のように既存のプログラムから新たなプログラムを発生させるために、予めプログラムを用意しなければならない課題がある。
期待値の生成に関しては、第１の従来例では全てがランダムに決定されるため膨大なアドレス空間全てを期待値として比較判定するため膨大な処理時間となるという課題がある。
【０００５】
本発明は、大規模な解析装置を用いなくても、検証ができるような意味のある実用的な検証用のマイクロプロセッサ命令群を人手を介さないで得るようにすること、ミクロな演算結果だけでなく、内部のレジスタなどの経過も参照可能として検証をやり易くすることを目的とする。
【０００６】
【課題を解決するための手段】
この発明に係るマイクロプロセッサ検証プログラム作成装置は、マイクロプロセッサが実行する単位となる命令毎に、該命令に続いて複数の次に実行可能な命令を定めた命令相関ルール・データベースと、
上記単位となる命令毎にシンタックスを複数種類定めた命令シンタックスルール・データベースと、
上記命令相関ルール・データベースに基づいて、ある命令を直前の命令として設定して次に実行可能な命令を選択し、以後は該選択された命令を直前の命令として次に実行可能な命令を順次選択して連続した命令群を生成するマイクロプロセッサ命令発生器と、
上記マイクロプロセッサ命令発生器が生成した連続した命令群の各命令に対して上記命令シンタックスルール・データベースで定められた上記複数種類のシンタックスの中から１つの種類のシンタックスを選択し、該選択したシンタックスの命令をマイクロプロセッサ命令とすることにより、上記連続した命令群からマイクロプロセッサ命令群を生成するマイクロプロセッサ命令構文発生器と、
上記マイクロプロセッサ命令構文発生器が生成したマイクロプロセッサ命令群を構成する各マイクロプロセッサ命令のシンタックスの種類に応じて、予め設定したワークアドレスの領域のいずれかのアドレスをマイクロプロセッサ命令のアクセスアドレスとして設定することにより、上記マイクロプロセッサ命令群からマイクロプロセッサ・プログラムを生成する実値変換器と、
を備えた。
【０００７】
また更に、マイクロプロセッサ内の内部回路の状態を読み出す内部回路読み出しプログラムを生成する内部回路読み出しプログラム生成器を備えて、
上記マイクロプロセッサ・プログラムに上記内部回路読み出しプログラム生成器が生成した内部回路読み出しプログラムを付加して内部回路の状態を読み出すようにした。
【０００８】
また更に、上記単位となる命令の出現確率を規定した命令出現率定義、およびシンタックスの出現確率を規定した命令シンタックス出現率定義を定めて、
マイクロプロセッサ命令発生器は、上記命令出現率定義に基づいて直前の命令から実行可能な命令を選択して上記連続した命令群を生成すると共に、マイクロプロセッサ命令構文発生器は、上記シンタックス出現率定義に基づいて１つの種類のシンタックスを選択して上記連続した命令群から上記マイクロプロセッサ命令群を生成するようにした。
【０００９】
また更に、上記単位となる命令を機能別に分類し、該分類された各機能毎に出現確率を規定した機能別命令出現率定義を定めて、
マイクロプロセッサ命令発生器は、上記機能別命令出現率定義に基づいて直前の命令から実行可能な命令を選択して上記連続した命令群を生成するようにした。
【００１０】
また更に、マイクロプロセッサ命令群を登録する生成登録済検証命令データベースを備えて、
マイクロプロセッサ命令構文発生器は、生成したマイクロプロセッサ命令群の中から所定範囲のマイクロプロセッサ命令群を上記生成登録済検証命令データベースに登録し、新規に生成したマイクロプロセッサ命令群の中にある所定範囲のマイクロプロセッサ命令群が上記生成登録済検証命令データベースに既に登録した所定範囲のマイクロプロセッサ命令群と同一であれば、上記所定範囲のマイクロプロセッサ命令群のマイクロプロセッサ命令をシンタックスの異なるマイクロプロセッサ命令に変更して、マイクロプロセッサ命令群を生成するようにした。
【００１１】
また更に、生成された検証用のアセンブラプログラムに分岐命令または条件分岐命令が含まれる場合には、分岐元から分岐先の間にレジスタ値を変化させる命令を挿入するようにした。
【００１２】
【発明の実施の形態】
実施の形態１．
検証対象となるマイクロプロセッサに実行させたい命令を含んで、かつ意味のある一連の命令内容を持つアセンブラプログラムを生成する装置の構成と動作を説明する。
図１は本実施の形態におけるアセンブラプログラム生成装置の、生成に至るまでの各段階とその間連を示した要素関係説明図である。また図２ないし図１０は、上記の関係説明図における各要素などの具体値例を示した図であり、後に動作の説明でその内容を述べる。
【００１３】
以下、各要素の詳細な内容と動作を説明する。
図２は命令相関ルールデータベース１に記載された値の例を示す図である。図に示すように、命令相関ルールデータベース１には、”直前に実行した命令”を左辺に、”左辺の各命令から次に実行可能な命令群”を右辺になるよう配置して、結果的に左辺の各命令対右辺の命令が１：ｎになるような情報を示す。例えば命令ＡＢＳは、次にＡＢＳないしＡＤＤＸのｎ種の命令のみが続き、それ以外の命令は存在しない。ユーザから検証用のアセンブラプログラム作成の起動を指示されると、まず、図１のマイクロプロセッサ命令生成器３は、このデータベース１の読み込み時に左辺の各命令に対して右辺の各命令に番号１〜ｎを付加された状態において、”直前に実行した命令”に対応した右辺の命令群ｎ個の情報を基に１〜ｎの範囲で例えばランダムな数値を発生させ、発生させた数値に対応した右辺の命令を１つ選択する。例えば左辺がＡＢＳ命令で、発生させたランダムな数値が２であったら、右辺の命令ＡＤＣを選択する。このような命令相関関係をルールデータベース１に定義することで、ある命令を実行させるよう選択した場合、次に実行可能な命令群だけを予め命令相関ルールデータベースの右辺に示しておけば、ランダムに選択される命令は常に実行可能な命令が選択されることになる。つまり、パターンを生成中に、選択した連続した命令は、必ず正しい順序で生成が可能となる。
この手順を生成命令数定義データ２で示す生成させたい任意の数だけ繰り返し、例えば図３で示すマイクロプロセッサ命令発生器３の出力であるマイクロプロセッサ・ニーモニック群５を作成する。
【００１４】
次に生成したマイクロプロセッサ・ニーモニック群５の各ニーモニックを文法的に修飾し、命令フォーマットを形成する。図４は命令シンタックスルール・データベース４の構成の例を示す図である。図に示すように、このデータベースにはニーモニック、命令フォーマット指定子、ターゲットのデータのサイズ（バイトデータ、ワードデータなど）や命令オペランドａ〜ｃ（レジスタ名や、ａｂｓ１６などの絶対アドレス、ｄｓｐ：８などの相対アドレスなどマクロプロセッサで表現可能なアドレッシング情報を含む）といったマイクロプロセッサで実行可能な文法的な要素が示されている。
マイクロプロセッサ命令構文発生器６ではこのデータベース４の読み込み時に各命令から選択可能な命令フォーマット指定子数ｎ１、各命令フォーマット指定子から選択可能なデータサイズ数ｎ２、各データサイズから選択可能な命令オペランドａ数ｎ３、各命令オペランドａから選択可能な命令オペランドｂ数ｎ４、各命令オペランドｂから選択可能な命令オペランドｃ数ｎ５といった具合にトップダウン式に各要素に番号を付加しておく。例えば、図４で示すＡＢＳ命令であれば命令フォーマット指定子は”指定なし”の１種類だけなのでｎ１＝１を、フォーマット指定子”指定なし”から選択できるターゲットのデータサイズは”Ｂ”と”Ｗ”の２種類なのでｎ２＝２を、ＡＢＳ命令フォーマット指定なし、でデータサイズ”Ｂ”のオペランドＡは”ＲＯＬ”、”〔Ａ０〕”、”〔Ａ１〕”、”ｄｓｐ：８〔Ａ０〕”、”ｄｓｐ：８〔Ａ１〕”、”ａｂｓ１６”、”ａｂｓ２４”の７種類なのでｎ３＝７を、データサイズ”Ｗ”から選択できるオペランドＡは”Ａ０”とＡ１”の２種類なのでｎ３＝２を、といった方式で命令（ニーモニック）からツリー構造的に下位選択数を数え、こうした選択可能な選択肢に１ないしｍの番号を付けておく。ＡＢＳ命令では常にオペランドＢ、Ｃは存在しないためｎ４＝ｎ５＝０となる。
【００１５】
マイクロプロセッサ命令発生器３の出力であるマイクロプロセッサ・ニーモニック群５の先頭ニーモニックから順に命令シンタックスルール・データベース４で定義された各ニーモニックと比較し、一致した場合にそのデータベース４の命令ニーモニックに付加された選択可能な命令フォーマット指定子数ｎ１の情報を基に１〜ｎ１までのランダムな数値を発生し、その数に対応した命令フォーマット指定子を決定する。以下トップダウン的に同様の方式で、選択された命令フォーマット指定子に付加された選択可能なデータサイズ数ｎ２の情報を基に１〜ｎ２のランダム値を発生し、その数に対応したデータサイズを決定、データサイズに付加された命令オペランド選択可能数ｎ３と１〜ｎ３のランダム値から命令オペランドａを、命令オペランドａに付加された命令オペランド選択可能数ｎ４と１〜ｎ４のランダム値から命令オペランドｂを、命令オペランドｂに付加された命令オペランド選択可能数ｎ５と１〜ｎ５のランダム値から命令オペランドｃを各々決定する。
【００１６】
例えば具体的な例として以下のステップとなる。
ステップ１．ＡＢＳ命令を選択
ステップ２．フォーマット指定子の選択
ＡＢＳ命令で選択可能なフォーマット指定子は”指定なし”の一種類（ｎ１＝１）が先に述べたように定義されている。つまりフォーマット指定子１〜ｎ１（＝１）の乱数を発生し、当然の結果として１（＝”指定なし”）が選択される。
ステップ３．データサイズの選択
ＡＢＳ命令で且つフォーマット指定子なしの場合、選択可能なデータサイズは”Ｂ”と”Ｗ”の二種類（ｎ２＝２）が先に述べたように定義されている。ここではデータサイズ１〜ｎ２（＝２）の乱数を発生し、１（＝データサイズ”Ｂ”）または２（＝データサイズ”Ｗ”）の結果が得られる。
ステップ４．オペランドＡの選択
ＡＢＳ命令、フォーマット指定子なしで且つデータサイズ”Ｂ”の場合、選択可能なオペランドＡは”Ａ０”と”Ａ１”の二種類（ｎ３＝２）が先に延べたように定義されている。ここでは１〜ｎ３（＝２）の乱数を発生し、１（＝オペランドＡ”Ａ０”または２（＝オペランド”Ａ１”）の結果が得られる。
ステップ３でデータサイズ”Ｗ”が選択された場合、選択可能なオペランドＡは”ＲＯＬ”、”［Ａ０］”、”［Ａ１］”、”ｄｓｐ：８［Ａ１］”、”ａｂｓ１６”、”ａｂｓ２４”の七種類（ｎ３＝７）が定義されている。ここでは１〜ｎ３（＝７）の乱数を発生し、１（＝オペランドＡ”ＲＯＬ”）、２（＝オペランドＡ”［Ａ０］”）、３（＝オペランドＡ”Ａ１”）、４（＝オペランドＡ”ｄｓｐ：８［Ａ０］）、５（＝オペランドＡ”ｄｓｐ：８［Ａ１］）、６（＝オペランドＡ”ａｂｓ１６”）、７（＝オペランドＡ”ａｂｓ２４”）のいずれかがオペランドＡとして選択される。
【００１７】
ステップ５：オペランドＢの選択
ステップ３及びステップ４でデータサイズとオペランドＡに何が選択されてもオペランドＢは”指定なし”の一種類のみ（ｎ４＝１）が定義されている。つまり、いずれの場合もオペランドＢは１〜ｎ４（＝１）の乱数を発生し、当然の結果として１（＝”指定なし”）が選択される。
ステップ６：オペランドＣの選択
ステップ３、ステップ４、ステップ５でデータサイズとオペランドＡ、Ｂに何が選択されてもオペランドＣは”指定なし”の一種類のみ（ｎ５＝１）が定義されている。つまりいずれの場合もオペランドＣは１〜ｎ１（＝１）の乱数を発生し、当然の結果として１（＝”指定なし”）が選択される。
この結果、マイクロプロセッサ命令構文発生器６は、自動生成命令数定義データ２で指定された任意の命令数だけこの手順を繰り返し、例えば図５で示すようなランダム的に様々な命令シンタックスに展開されたマイクロプロセッサ命令群７を生成する。
【００１８】
検証対象の演算実行結果が外部から容易にアクセスできなければ、検証ができない。従って少なくとも検証対象の中間値も含めた命令結果を記憶する領域番地を指定しておく必要がある。実値変換器はこの役割を果たすものである。
様々な命令シンタックス形式で自動生成されたマイクロプロセッサ命令群７から実動作可能なマイクロプロセッサ・アセンブラプログラムＡ１０を以下の要領で変換する。
命令シンタックス自体が意味するアクセスアドレス（実効アドレス）の表現方式には、直接アドレッシングや、絶対アドレッシング、間接アドレッシング、相対アドレッシング等の各種アドレッシング方式が有るが、実値変換器９は命令シンタックスが示すアドレッシング方式の名称と実値変換器９に予め定義しておくアドレッシング方式の名称を比較し、アドレッシング方式別に実効アドレス定義データ８で指定したワークアドレス内にマイクロプロセッサ命令群７の実効アドレスが来るように命令シンタックス自体を実動作可能な値に置換する。例えば、実効アドレス定義データ８で指定されたワークエリアがＣ０００〜Ｃ０ＦＦＨ、マイクロプロセッサ命令構文発生器６でオペランドＡに絶対アドレッシングＡＢＳ２４が選択された場合、先ず、０〜ＦＦＨのランダム値を決定し、ワークエリアの先頭アドレスＣ０００Ｈに加算する。こうすることで命令シンタックスが絶対アドレッシングＡＢＳ２４である場合、実値変換器９出力で実値に変換されたマイクロプロセッサ・プログラムＡ１０の実効アドレスはＣ０００〜Ｃ０ＦＦＨ内でランダムにアクセスするものとなる。実値変換器９では自動生成命令数定義データ２で指定された任意の命令数だけこの手順を繰り返し、図６で示すような主実効アドレスがワークエリア内になるように変換したマイクロプロセッサ・プログラムＡ１０を生成する。つまり、ワークエリアが指定され、従って後でこの任意のアドレスを指定すれば、演算結果を外部に取り出して、期待値と比較することができる。
【００１９】
実用的には、ワークエリアは初期化して以前のデータを消しておかないと、正しい結果が得られない。このため初期化を行う。
マイクロプロセッサ・アセンブラプログラムＡ１０とマイクロプロセッサ・アセンブラプログラムＡ１０実行前に実効アドレス定義データ８で示すワークエリアを初期化するためのワークエリア初期化用アセンブラプログラム１２とをアセンブラプログラム連結器Ａ１３で連結する。ワークエリア初期化用アセンブラプログラム１２は実効アドレス定義データ８で示すワークエリアの先頭アドレスから最終アドレスまでのデータを確定させるための転送命令の集まりで、転送するデータは１回の転送量に応じた範囲のランダム値を発生し決定する。例えば、図７に示す通り実効アドレス定義データ８で指定されたワークエリアがＣ０００〜Ｃ０ＦＦＨで、マイクロプロセッサが１６ビット転送可能な場合、ランダムに発生させた１６ビット値をＣ０００Ｈから１２８回１６ビット転送する命令を生成し、ワークエリア初期化用アセンブラプログラム１２とする。アセンブラプログラム連結器Ａ１３ではワークエリア初期化用アセンブラプログラム１２の後にマイクロプロセッサ・アセンブラプログラムＡ１０を連結する（Ｃ言語であればポインタを用いるなどして行う）。ワークエリア初期化にランダム値を予め転送させておけば、ランダムに生成した演算命令実行結果などに様々なケースが起こり得るため、マイクロプロセッサ動作の網羅的検証度が向上する。この結果、アセンブラプログラム連結器Ａ１３は、図８に示すマイクロプロセッサ・アセンブラプログラムＢ１４を出力する。
【００２０】
検証のためには、演算実行結果を記憶したワークエリアの値を外部に取り出し可能とするだけでなく、同時にマイクロプロセッサの内部レジスタ等、通常は外部からは見えない部分を読出し可能とすると、大いに有効である。内部回路読出アセンブラプログラムはこの役割を果すものである。
マイクロプロセッサ・アセンブラプログラムＢ１４と、内部レジスタ等の値を外部に読出すようにした内部回路読出アセンブラプログラム１６をアセンブラプログラム連結器Ｂ１７で連結する。内部回路読出用アセンブラプログラム生成器１５は、後に述べる最終工程の期待値が、検証用のマイクロアセンブラ・プログラムにより実行された結果の中間のプログラムカウンタ、フラグレジスタ、データレジスタ等のレジスタ値を、期待値５０と比較できるようにする。例えば、ランダムに生成した図８の命令群のパターンの最後に上記内部回路の各種レジスタ値やワークエリア値をマイクロプロセッサ外部のアドレス空間に転送する命令を付加しておく。図９は、内部回路読出用アセンブラプログラム生成器１５が生成した内部回路読出アセンブラプログラム１６の例を示す図である。
【００２１】
こうすることで、その転送先のアドレス空間がランダムパターンの実行結果となるため、例えばＣ言語やＨＤＬといった仕様を記述できる言語で別途作成されたモデル５１もしくは検証対象のソフトウェアシミュレータでそのランダムパターンを実行し、実行結果が格納されたアドレス空間を論理シミュレータ形式の期待値５０として用いることができる。実行結果をマイクロプロセッサ外部のアドレス空間に転送する命令を追加することで論理シミュレータの外部モデルも実行結果の状態把握ができ、予め変換しておいた期待値５０を論理シミュレータで読み込んでおけば、そのレジスタ値やワークエリア値の実行結果の正当性が外部モデルで判断可能となる。こうして図１０に示すマイクロプロセッサ・アセンブラプログラムＣ１８が得られる。
以上のように、Ｃ言語であればポインタを用いるなどして、内部回路読出用アセンブラプログラム１６をアセンブラプログラム連結器Ｂ１７で連結して、意味のある実用的な検証用のマイクロプロセッサ命令が、マイクロプロセッサ・アセンブラプログラムＣ１８として得られた。
本実施の形態では、期待値の得方、もしくは期待値との比較については述べないが、別途、期待値と比較することで検証ができる。
【００２２】
実施の形態２．
実際のマイクロプロセッサでは、重点的に用いる命令とか、ある組み合わせが重要であるとかの制約がある。こうした場合に、検証プログラムでもこれらの命令組み合わせを確かめておくことは意味がある。こうした重点的な検証を行いたい場合の工夫について説明する。
図１１は図１のマイクロプロセッサ命令発生器３にマイクロプロセッサ命令優先発生装置２０を追加した形態である。図１２は検証頻度を高めたいマイクロプロセッサ・ニーモニック群及びその発生率で構成される命令出現率定義データ１９を示す図で、マイクロプロセッサ命令優先発生装置２０は、０〜１００の範囲でランダムに生じた数値と命令出現率定義データ１９で指定された発生率の大小関係をとる。その結果、優先的に指定されたニーモニックを次ニーモニックとして選択するか命令相関ルールデータベース１内でランダムに次ニーモニックを選択するかを決定する。指定されたニーモニックを優先的に選択することになれば、命令出現率定義データ１９で指定されたニーモニック群の数ｎｉでランダムに値を決定しそのランダム値に対応したニーモニック候補として選択する。次ニーモニック候補が命令相関ルールデータベース１の右辺に存在すれば次ニーモニック候補を次ニーモニックとして決定し、右辺にないか、もしくは命令相関ルールデータベース１内でランダムに次ニーモニックを選択するのであれば、命令相関ルールデータベース１の右辺のニーモニックの組からランダムにニーモニックを選択する。このように処理することで、命令相関ルールデータベース１に違反せず、かつ特定命令に偏ったプログラムが生成できる。
【００２３】
命令と同様に、命令シンタックスについても重点検証が可能である。
図１３は、図１１のマイクロプロセッサ命令構文生成器６にマイクロプロセッサ命令シンタックス優先発生装置２２を追加した形態である。図１４は、検証頻度を高めたい命令フォーマット指定子、データサイズ、オペランドａ〜ｃなどの優先指定命令シンタックス及びその発生率で構成される命令出現率定義データ２１を示す図で、マイクロプロセッサ命令シンタックス優先発生装置２２は、０〜１００の範囲でランダムに生じた数値と命令出現率定義データ２１で指定された発生率の大小関係をとる。その結果、優先的に指定された各シンタックスを次シンタックスとして選択するか命令シンタックスルール・データベース４内でランダムに次シンタックスを選択するかを決定する。指定されたシンタックスを優先的に選択するのであれば、命令出現率定義データ２１で優先指定された命令フォーマット指定子、データサイズ、オペランドａ〜ｃの各シンタックス群の数ｎｆ、ｎｓ、ｎｏ１、ｎｏ２、ｎｏ３でランダムに値を決定しそのランダム値に対応したシンタックスを次シンタックス候補として選択する。次シンタックス候補が命令シンタックスルール・データベース４内の次ニーモニックが許容するシンタックスに存在すれば次シンタックス候補を次シンタックスとして決定し、許容するシンタックスとして存在しないか、もしくは命令シンタックスルール・データベース４内でランダムに次シンタックスを選択するのであれば、命令シンタックスルール・データベース４内の次ニーモニックが許容する命令シンタックスルール・データベース４のシンタックスの組からランダムにシンタックスを選択する。このように処理することで、シンタックスルール・データベース４に違反せず、かつ特定命令シンタックスに偏ったプログラムが生成できる。
【００２４】
これらを組合わせて、細分化された機能別命令に対して重要検証を行うこともできる。
図１５は、図１のマイクロプロセッサ命令発生器３にマイクロプロセッサ命令機能別命令優先発生装置２５を追加した形態である。図１６は、マイクロプロセッサの各種命令を転送、シフト、算術、論理、ストリング転送といった機能毎に分類したものを左辺に、その機能に分類されるニーモニックを右辺に配置した命令機能分類データベース２３の例であり、図１７は、その機能分類に対応して検証頻度を高めたい機能及びその発生率をパラメータ定義した機能別命令出現率定義データ２４の例を示す図である。これらを基に、マイクロプロセッサ命令機能別命令優先発生装置は、０〜１００の範囲でランダムに生じた数値と機能別命令出現率定義データ２４で指定された発生率の大小関係をとり、優先的に指定された各機能分類から次ニーモニックを選択するか命令相関ルールデータベース１内でランダムに次ニーモニックを選択するかを決定する。指定された機能分類を優先的に選択するのであれば、機能別命令出現率定義データ２４で優先指定された機能分類の数ｎｆｕでランダムに値を決定し、そのランダム値に対応した機能分類から次ニーモニック候補を選択する。機能分類から次ニーモニック候補を選択する手段として命令機能分類データべース２３を読み込む際に各機能分類に分類される命令数ｎｆ１〜ｎｆ５をカウントしておき、その選択された機能分類ｘに含まれる命令数ｎｆｘに基づいて１〜ｎｆｘのランダム値を発生させ、そのランダム値に対応したニーモニックが命令相関ルールデータベース１で次に選択可能なニーモニックとして右辺に存在するか比較する。もし命令相関ルールデータベース１の右辺に存在すれば規則に違反しないと判断し次ニーモニックとして決定する。右辺にないか、もしくは命令相関ルールデータベース１内でランダムに次ニーモニックを選択するのであれば命令相関ルールデータベース１の左辺のニーモニックが許容する命令相関ルールデータベース１の右辺のニーモニックからランダムにニーモニックを選択する。このように処理することで、命令相関ルールデータベース１に違反せず、かつ特定機能に偏ったプログラムが生成できる。
【００２５】
既に検証済の命令組み合わせを、再度実行することは時間の無駄である。こうした検証の重複を防ぐ形態を説明する。
図１８は、図１のマイクロプロセッサ命令構文生成器６にマイクロプロセッサ命令網羅発生装置２７を追加した形態である。ここではマイクロプロセッサ命令構文生成器６で、例えば図５に示されるプログラム生成した段階で、図１９に示すような命令相関関係と命令シンタックスをトレースする機能を追加しておき、プログラム生成毎に生成登録済検証命令データベース２６に蓄積していく。マイクロプロセッサ命令構文生成器６はプログラム生成時にマイクロプロセッサ命令網羅発生装置２７により、生成登録済検証命令データベース２６を参照して、生成しようとしている命令相関関係と命令シンタックスの組み合わせが既に以前に生成済で重複しないかを生成登録済検証命令データベース２６を参照して検索し、蓄積されていなければ以前に検証用として生成されていない命令実行順序・命令フォーマットの組み合わせであると判断し、次命令及び次命令フォーマットを確定させる。定義されていれば既に命令実行順序・命令フォーマットが登録済と判断し、全ての組み合わせ（命令相関ルールデータベースの次に選択できる命令数×次命令シンタックスルール・データベース数）を選択していない限り次命令及び次命令フォーマットを再選択する。
以上のような処理内容でそれまでに生成登録されていない命令順序や命令シンタックスの組み合わせからプログラムを生成していく。つまり検証命令群の重複を防ぐことができる。
【００２６】
例えば、図１９で生成登録済検証命令データベース２６の例を示すように、マイクロプロセッサ命令群７を順次生成していく時点で、直前及び次命令のニーモニック、フォーマット、データサイズ、オペランドａ〜ｃをデータベースとして格納していく。そして次の命令を生成する際には、この生成登録済検証命令データベース２６を参照し、命令相関関係及び命令シンタックスが既にデータベースに登録されていなければ次命令のニーモニック・シンタックスを確定させる。また登録されていれば既に述べたように再度ニーモニックと命令シンタックス選択の生成処理を繰り返す。
生成命令数定義データ２で指定された任意の命令数だけこの手順を繰り返し、マイクロプロセッサ命令構文生成器６内部の生成登録済検証命令データベース２６を外部ファイルとして出力する。他のランダムパターンを生成する際には、先に出力された生成登録済検証命令データベース２６を読み出して、未だ検証されていない命令相関関係・シンタックスを補充して生成させられるので、重複を防ぎ、かつ生成パターンの網羅率が向上する。
【００２７】
検証を容易にする工夫を説明する。即ち、命令の実行を行って別の処理に分岐する、不正処理を行う際には、分岐命令が使用されることが多いので、分岐命令を実行したことがよく分かる結果が得られるようにする。
図２０は、図１の構成に命令判定器２８とレジスタ操作命令挿入装置２９を追加した形態である。命令判定器２８は、生成したマイクロプロセッサ命令群７と命令機能分類データベース２３の一致比較を行う。そして、機能分類で分岐命令または条件分岐命令に分類されていたニーモニックがマイクロプロセッサ命令群７に存在していた場合は、レジスタ操作命令挿入装置２９の起動を行い、分岐命令の後ろにレジスタ操作命令を挿入する。例えば図２１に示すように、生成されたマイクロプロセッサ命令群７が分岐命令を含むかどうかを比較し、分岐命令の１つであるＪＧＥＵ命令が存在している場合には、フラグレジスタ値を他のレジスタに代入するなどのレジスタ操作命令を条件分岐命令の直後に強制的に挿入する。こうすれば、マイクロプロセッサ動作が不正な場合には、結果的にレジスタ値に差異が生じるため、不正に処理されたかどうかの検出が容易になる。
【００２８】
【発明の効果】
以上のようにこの発明によれば、命令相関ルールと命令シンタックス・ルールと、実値変換手段とを備えたので、重要度が高い命令を含み実用的である一連のマイクロプロセッサ検証用のアセンブラプログラムが得られる効果がある。
【００２９】
また更に、内部回路読み出しプログラム生成手段を備えたので、比較検証の範囲が広がり、より正確な検証ができる効果がある。
【００３０】
また更に、各種の出現率定義を設けたので、検証したい重要命令を重点的に検証できる効果がある。
また、既生成検証用命令データベースを備えたので、重複をなくして効果的な検証ができる効果がある。
【図面の簡単な説明】
【図１】  本発明の実施の形態１におけるマイクロプロセッサ検証データ作成装置の要素関係説明図である。
【図２】  実施の形態１における命令相関ルールデータベースの構成値例を示す図である。
【図３】  実施の形態１における生成途中のマイクロプロセッサ・ニーモニック群の例を示す図である。
【図４】  実施の形態１における命令シンタックスルール・データベースの構成値例を示す図である。
【図５】  実施の形態１における生成途中のマイクロプロセッサ命令群の例を示す図である。
【図６】  実施の形態１におけるマイクロプロセッサ・アセンブラプログラムＡの例を示す図である。
【図７】  実施の形態１におけるワークエリア初期化用アセンブラプログラムを示す図である。
【図８】  実施の形態１におけるマイクロプロセッサ・アセンブラプログラムＢの例を示す図である。
【図９】  実施の形態１における内部回路読出用アセンブラプログラムの例を示す図である。
【図１０】  実施の形態１におけるプロセッサ動作検証パターンとなるマイクロプロセッサ・アセンブラプログラムＣの例を示す図である。
【図１１】  実施の形態２におけるマイクロプロセッサ検証データ作成装置の要素関係説明図である。
【図１２】  実施の形態２における命令出現率定義データ１９の構成値例を示す図である。
【図１３】  実施の形態２における他のマイクロプロセッサ検証データ作成装置の要素関係説明図である。
【図１４】  実施の形態２における命令シンタックス出現率定義データ２１の構成値例を示す図である。
【図１５】  実施の形態２における他のマイクロプロセッサ検証データ作成装置の要素関係説明図である。
【図１６】  実施の形態２における命令機能分類データベース２３の構成値例を示す図である。
【図１７】  実施の形態２における機能別命令出現率定義データ２４の構成値例を示す図である。
【図１８】  実施の形態２における他のマイクロプロセッサ検証データ作成装置の要素関係説明図である。
【図１９】  実施の形態２における生成登録済検証命令データベース２６の構成値例を示す図である。
【図２０】  実施の形態２における他のマイクロプロセッサ検証データ作成装置の要素関係説明図である。
【図２１】  実施の形態２におけるレジスタ操作命令挿入装置２９の処理例を示す図である。
【符号の説明】
１  命令相関ルールデータベース、２  生成命令数定義データ、３  マイクロプロセッサ命令発生器、４  命令シンタックスルール・データベース、５  マイクロプロセッサ・ニーモニック群、６  マイクロプロセッサ命令構文発生器、７マイクロプロセッサ命令群、８  実効アドレス定義データ、９  実値変換器、１０  マイクロプロセッサ・アセンブラプログラムＡ、１１  ワークエリア初期化器、１２  ワークエリア初期化用アセンブラプログラム、１３  アセンブラプログラム連結器Ａ、１４  マイクロプロセッサ・アセンブラプログラムＢ、１５内部回路読出用アセンブラプログラム生成器、１６  内部回路読出アセンブラプログラム、１７、１７Ｂ  アセンブラプログラム連結器Ｂ、１８  マイクロプロセッサ・アセンブラプログラムＣ、１９  命令出現率定義データ、２０  マイクロプロセッサ命令優先発生装置、２１  命令シンタックス出現率定義データ、２２  マイクロプロセッサ命令シンタックス優先発生装置、２３  命令機能分類データベース、２４  機能別命令出現率定義データ、２５  マイクロプロセッサ命令機能別命令優先発生装置、２６  生成登録済検証命令データベース、２７  マイクロプロセッサ命令網羅発生器、２８  命令判断器、２９  レジスタ操作命令挿入装置、５０  マイクロプロセッサ・アセンブラプログラムＢ１４の期待値、５１  マイクロプロセッサと同一論理を構成するモデル。
【図１】
0004226168.tif 000002
【図２】
0004226168.tif 000003
【図３】
0004226168.tif 000004
【図４】
0004226168.tif 000005
【図５】
0004226168.tif 000006
【図６】
0004226168.tif 000007
【図７】
0004226168.tif 000008
【図８】
0004226168.tif 000009
【図９】
0004226168.tif 000010
【図１０】
0004226168.tif 000011
【図１１】
0004226168.tif 000012
【図１２】
0004226168.tif 000013
【図１３】
0004226168.tif 000014
【図１４】
0004226168.tif 000015
【図１５】
0004226168.tif 000016
【図１６】
0004226168.tif 000017
【図１７】
0004226168.tif 000018
【図１８】
0004226168.tif 000019
【図１９】
0004226168.tif 000020
【図２０】
0004226168.tif 000021
【図２１】
0004226168.tif 000022