JP4226168B2 - マイクロプロセッサ検証プログラム作成装置 - Google Patents
マイクロプロセッサ検証プログラム作成装置 Download PDFInfo
- Publication number
- JP4226168B2 JP4226168B2 JP28097599A JP28097599A JP4226168B2 JP 4226168 B2 JP4226168 B2 JP 4226168B2 JP 28097599 A JP28097599 A JP 28097599A JP 28097599 A JP28097599 A JP 28097599A JP 4226168 B2 JP4226168 B2 JP 4226168B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- microprocessor
- syntax
- generated
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は、マイクロプロセッサ等の論理回路の設計検証を容易にするためのもので、特に実際的な命令を組み合わせた実行結果を容易に得るようにしたものである。
【0002】
【従来の技術】
マイクロプロセッサ等の命令コードプログラムに従って動作する論理回路の検証においては、何らかの機能を実現する検証プログラムを作成し、これを対象論理回路で実行した際に得られることが予想される期待値とシミュレーション結果を比較して、対象回路の正当性を試験している。このためには、まずどのような命令群を実行させるのが最適であるかが重要である。
この検証プログラムの作成に関しては、第1の従来例として特開平3−14135号公報のように試験対象命令語を乱数により作成するものや、第2の従来例として特開平7−271834号公報のように既存の試験プログラムから新たな検証プログラムを作成するもの、また第3の従来例として特開平10−283388号公報のように動作パラメータに基いてシミュレーションパターンを作成するもの等がある。
【0003】
一方、作成された命令群に対応して、その様な動作で正しい結果が予測できて、それらは期待値と呼ばれる。
このような期待値の作成に関しては、第1の従来例の特開平3−14135号公報のようにソフトウェアシミュレータにより期待値を得るものや、第2の従来例の特開平7−271834号公報のように予め正当性の確認された回路から期待値を得るものや、第3の従来例の特開昭61−23248号公報のように同一命令セットが実行可能なシミュレータにより期待値を得るものがある。
【0004】
【発明が解決しようとする課題】
検証プログラムの作成に関しては、第1の従来例の特開平3−14135号公報のように全くランダムに命令やオペランドを決定した場合にはマイクロプロセッサ命令の複雑さ、多数さを考えると実用的な命令群が作成されにくいという課題がある。また命令自体の組み合わせ選択はランダムであり、最適命令の選択という思想が薄い。
第2の従来例の特開平7−271834号公報のように既存のプログラムから新たなプログラムを発生させるために、予めプログラムを用意しなければならない課題がある。
期待値の生成に関しては、第1の従来例では全てがランダムに決定されるため膨大なアドレス空間全てを期待値として比較判定するため膨大な処理時間となるという課題がある。
【0005】
本発明は、大規模な解析装置を用いなくても、検証ができるような意味のある実用的な検証用のマイクロプロセッサ命令群を人手を介さないで得るようにすること、ミクロな演算結果だけでなく、内部のレジスタなどの経過も参照可能として検証をやり易くすることを目的とする。
【0006】
【課題を解決するための手段】
この発明に係るマイクロプロセッサ検証プログラム作成装置は、マイクロプロセッサが実行する単位となる命令毎に、該命令に続いて複数の次に実行可能な命令を定めた命令相関ルール・データベースと、
上記単位となる命令毎にシンタックスを複数種類定めた命令シンタックスルール・データベースと、
上記命令相関ルール・データベースに基づいて、ある命令を直前の命令として設定して次に実行可能な命令を選択し、以後は該選択された命令を直前の命令として次に実行可能な命令を順次選択して連続した命令群を生成するマイクロプロセッサ命令発生器と、
上記マイクロプロセッサ命令発生器が生成した連続した命令群の各命令に対して上記命令シンタックスルール・データベースで定められた上記複数種類のシンタックスの中から1つの種類のシンタックスを選択し、該選択したシンタックスの命令をマイクロプロセッサ命令とすることにより、上記連続した命令群からマイクロプロセッサ命令群を生成するマイクロプロセッサ命令構文発生器と、
上記マイクロプロセッサ命令構文発生器が生成したマイクロプロセッサ命令群を構成する各マイクロプロセッサ命令のシンタックスの種類に応じて、予め設定したワークアドレスの領域のいずれかのアドレスをマイクロプロセッサ命令のアクセスアドレスとして設定することにより、上記マイクロプロセッサ命令群からマイクロプロセッサ・プログラムを生成する実値変換器と、
を備えた。
【0007】
また更に、マイクロプロセッサ内の内部回路の状態を読み出す内部回路読み出しプログラムを生成する内部回路読み出しプログラム生成器を備えて、
上記マイクロプロセッサ・プログラムに上記内部回路読み出しプログラム生成器が生成した内部回路読み出しプログラムを付加して内部回路の状態を読み出すようにした。
【0008】
また更に、上記単位となる命令の出現確率を規定した命令出現率定義、およびシンタックスの出現確率を規定した命令シンタックス出現率定義を定めて、
マイクロプロセッサ命令発生器は、上記命令出現率定義に基づいて直前の命令から実行可能な命令を選択して上記連続した命令群を生成すると共に、マイクロプロセッサ命令構文発生器は、上記シンタックス出現率定義に基づいて1つの種類のシンタックスを選択して上記連続した命令群から上記マイクロプロセッサ命令群を生成するようにした。
【0009】
また更に、上記単位となる命令を機能別に分類し、該分類された各機能毎に出現確率を規定した機能別命令出現率定義を定めて、
マイクロプロセッサ命令発生器は、上記機能別命令出現率定義に基づいて直前の命令から実行可能な命令を選択して上記連続した命令群を生成するようにした。
【0010】
また更に、マイクロプロセッサ命令群を登録する生成登録済検証命令データベースを備えて、
マイクロプロセッサ命令構文発生器は、生成したマイクロプロセッサ命令群の中から所定範囲のマイクロプロセッサ命令群を上記生成登録済検証命令データベースに登録し、新規に生成したマイクロプロセッサ命令群の中にある所定範囲のマイクロプロセッサ命令群が上記生成登録済検証命令データベースに既に登録した所定範囲のマイクロプロセッサ命令群と同一であれば、上記所定範囲のマイクロプロセッサ命令群のマイクロプロセッサ命令をシンタックスの異なるマイクロプロセッサ命令に変更して、マイクロプロセッサ命令群を生成するようにした。
【0011】
また更に、生成された検証用のアセンブラプログラムに分岐命令または条件分岐命令が含まれる場合には、分岐元から分岐先の間にレジスタ値を変化させる命令を挿入するようにした。
【0012】
【発明の実施の形態】
実施の形態1.
検証対象となるマイクロプロセッサに実行させたい命令を含んで、かつ意味のある一連の命令内容を持つアセンブラプログラムを生成する装置の構成と動作を説明する。
図1は本実施の形態におけるアセンブラプログラム生成装置の、生成に至るまでの各段階とその間連を示した要素関係説明図である。また図2ないし図10は、上記の関係説明図における各要素などの具体値例を示した図であり、後に動作の説明でその内容を述べる。
【0013】
以下、各要素の詳細な内容と動作を説明する。
図2は命令相関ルールデータベース1に記載された値の例を示す図である。図に示すように、命令相関ルールデータベース1には、”直前に実行した命令”を左辺に、”左辺の各命令から次に実行可能な命令群”を右辺になるよう配置して、結果的に左辺の各命令対右辺の命令が1:nになるような情報を示す。例えば命令ABSは、次にABSないしADDXのn種の命令のみが続き、それ以外の命令は存在しない。ユーザから検証用のアセンブラプログラム作成の起動を指示されると、まず、図1のマイクロプロセッサ命令生成器3は、このデータベース1の読み込み時に左辺の各命令に対して右辺の各命令に番号1〜nを付加された状態において、”直前に実行した命令”に対応した右辺の命令群n個の情報を基に1〜nの範囲で例えばランダムな数値を発生させ、発生させた数値に対応した右辺の命令を1つ選択する。例えば左辺がABS命令で、発生させたランダムな数値が2であったら、右辺の命令ADCを選択する。このような命令相関関係をルールデータベース1に定義することで、ある命令を実行させるよう選択した場合、次に実行可能な命令群だけを予め命令相関ルールデータベースの右辺に示しておけば、ランダムに選択される命令は常に実行可能な命令が選択されることになる。つまり、パターンを生成中に、選択した連続した命令は、必ず正しい順序で生成が可能となる。
この手順を生成命令数定義データ2で示す生成させたい任意の数だけ繰り返し、例えば図3で示すマイクロプロセッサ命令発生器3の出力であるマイクロプロセッサ・ニーモニック群5を作成する。
【0014】
次に生成したマイクロプロセッサ・ニーモニック群5の各ニーモニックを文法的に修飾し、命令フォーマットを形成する。図4は命令シンタックスルール・データベース4の構成の例を示す図である。図に示すように、このデータベースにはニーモニック、命令フォーマット指定子、ターゲットのデータのサイズ(バイトデータ、ワードデータなど)や命令オペランドa〜c(レジスタ名や、abs16などの絶対アドレス、dsp:8などの相対アドレスなどマクロプロセッサで表現可能なアドレッシング情報を含む)といったマイクロプロセッサで実行可能な文法的な要素が示されている。
マイクロプロセッサ命令構文発生器6ではこのデータベース4の読み込み時に各命令から選択可能な命令フォーマット指定子数n1、各命令フォーマット指定子から選択可能なデータサイズ数n2、各データサイズから選択可能な命令オペランドa数n3、各命令オペランドaから選択可能な命令オペランドb数n4、各命令オペランドbから選択可能な命令オペランドc数n5といった具合にトップダウン式に各要素に番号を付加しておく。例えば、図4で示すABS命令であれば命令フォーマット指定子は”指定なし”の1種類だけなのでn1=1を、フォーマット指定子”指定なし”から選択できるターゲットのデータサイズは”B”と”W”の2種類なのでn2=2を、ABS命令フォーマット指定なし、でデータサイズ”B”のオペランドAは”ROL”、”〔A0〕”、”〔A1〕”、”dsp:8〔A0〕”、”dsp:8〔A1〕”、”abs16”、”abs24”の7種類なのでn3=7を、データサイズ”W”から選択できるオペランドAは”A0”とA1”の2種類なのでn3=2を、といった方式で命令(ニーモニック)からツリー構造的に下位選択数を数え、こうした選択可能な選択肢に1ないしmの番号を付けておく。ABS命令では常にオペランドB、Cは存在しないためn4=n5=0となる。
【0015】
マイクロプロセッサ命令発生器3の出力であるマイクロプロセッサ・ニーモニック群5の先頭ニーモニックから順に命令シンタックスルール・データベース4で定義された各ニーモニックと比較し、一致した場合にそのデータベース4の命令ニーモニックに付加された選択可能な命令フォーマット指定子数n1の情報を基に1〜n1までのランダムな数値を発生し、その数に対応した命令フォーマット指定子を決定する。以下トップダウン的に同様の方式で、選択された命令フォーマット指定子に付加された選択可能なデータサイズ数n2の情報を基に1〜n2のランダム値を発生し、その数に対応したデータサイズを決定、データサイズに付加された命令オペランド選択可能数n3と1〜n3のランダム値から命令オペランドaを、命令オペランドaに付加された命令オペランド選択可能数n4と1〜n4のランダム値から命令オペランドbを、命令オペランドbに付加された命令オペランド選択可能数n5と1〜n5のランダム値から命令オペランドcを各々決定する。
【0016】
例えば具体的な例として以下のステップとなる。
ステップ1.ABS命令を選択
ステップ2.フォーマット指定子の選択
ABS命令で選択可能なフォーマット指定子は”指定なし”の一種類(n1=1)が先に述べたように定義されている。つまりフォーマット指定子1〜n1(=1)の乱数を発生し、当然の結果として1(=”指定なし”)が選択される。
ステップ3.データサイズの選択
ABS命令で且つフォーマット指定子なしの場合、選択可能なデータサイズは”B”と”W”の二種類(n2=2)が先に述べたように定義されている。ここではデータサイズ1〜n2(=2)の乱数を発生し、1(=データサイズ”B”)または2(=データサイズ”W”)の結果が得られる。
ステップ4.オペランドAの選択
ABS命令、フォーマット指定子なしで且つデータサイズ”B”の場合、選択可能なオペランドAは”A0”と”A1”の二種類(n3=2)が先に延べたように定義されている。ここでは1〜n3(=2)の乱数を発生し、1(=オペランドA”A0”または2(=オペランド”A1”)の結果が得られる。
ステップ3でデータサイズ”W”が選択された場合、選択可能なオペランドAは”ROL”、”[A0]”、”[A1]”、”dsp:8[A1]”、”abs16”、”abs24”の七種類(n3=7)が定義されている。ここでは1〜n3(=7)の乱数を発生し、1(=オペランドA”ROL”)、2(=オペランドA”[A0]”)、3(=オペランドA”A1”)、4(=オペランドA”dsp:8[A0])、5(=オペランドA”dsp:8[A1])、6(=オペランドA”abs16”)、7(=オペランドA”abs24”)のいずれかがオペランドAとして選択される。
【0017】
ステップ5:オペランドBの選択
ステップ3及びステップ4でデータサイズとオペランドAに何が選択されてもオペランドBは”指定なし”の一種類のみ(n4=1)が定義されている。つまり、いずれの場合もオペランドBは1〜n4(=1)の乱数を発生し、当然の結果として1(=”指定なし”)が選択される。
ステップ6:オペランドCの選択
ステップ3、ステップ4、ステップ5でデータサイズとオペランドA、Bに何が選択されてもオペランドCは”指定なし”の一種類のみ(n5=1)が定義されている。つまりいずれの場合もオペランドCは1〜n1(=1)の乱数を発生し、当然の結果として1(=”指定なし”)が選択される。
この結果、マイクロプロセッサ命令構文発生器6は、自動生成命令数定義データ2で指定された任意の命令数だけこの手順を繰り返し、例えば図5で示すようなランダム的に様々な命令シンタックスに展開されたマイクロプロセッサ命令群7を生成する。
【0018】
検証対象の演算実行結果が外部から容易にアクセスできなければ、検証ができない。従って少なくとも検証対象の中間値も含めた命令結果を記憶する領域番地を指定しておく必要がある。実値変換器はこの役割を果たすものである。
様々な命令シンタックス形式で自動生成されたマイクロプロセッサ命令群7から実動作可能なマイクロプロセッサ・アセンブラプログラムA10を以下の要領で変換する。
命令シンタックス自体が意味するアクセスアドレス(実効アドレス)の表現方式には、直接アドレッシングや、絶対アドレッシング、間接アドレッシング、相対アドレッシング等の各種アドレッシング方式が有るが、実値変換器9は命令シンタックスが示すアドレッシング方式の名称と実値変換器9に予め定義しておくアドレッシング方式の名称を比較し、アドレッシング方式別に実効アドレス定義データ8で指定したワークアドレス内にマイクロプロセッサ命令群7の実効アドレスが来るように命令シンタックス自体を実動作可能な値に置換する。例えば、実効アドレス定義データ8で指定されたワークエリアがC000〜C0FFH、マイクロプロセッサ命令構文発生器6でオペランドAに絶対アドレッシングABS24が選択された場合、先ず、0〜FFHのランダム値を決定し、ワークエリアの先頭アドレスC000Hに加算する。こうすることで命令シンタックスが絶対アドレッシングABS24である場合、実値変換器9出力で実値に変換されたマイクロプロセッサ・プログラムA10の実効アドレスはC000〜C0FFH内でランダムにアクセスするものとなる。実値変換器9では自動生成命令数定義データ2で指定された任意の命令数だけこの手順を繰り返し、図6で示すような主実効アドレスがワークエリア内になるように変換したマイクロプロセッサ・プログラムA10を生成する。つまり、ワークエリアが指定され、従って後でこの任意のアドレスを指定すれば、演算結果を外部に取り出して、期待値と比較することができる。
【0019】
実用的には、ワークエリアは初期化して以前のデータを消しておかないと、正しい結果が得られない。このため初期化を行う。
マイクロプロセッサ・アセンブラプログラムA10とマイクロプロセッサ・アセンブラプログラムA10実行前に実効アドレス定義データ8で示すワークエリアを初期化するためのワークエリア初期化用アセンブラプログラム12とをアセンブラプログラム連結器A13で連結する。ワークエリア初期化用アセンブラプログラム12は実効アドレス定義データ8で示すワークエリアの先頭アドレスから最終アドレスまでのデータを確定させるための転送命令の集まりで、転送するデータは1回の転送量に応じた範囲のランダム値を発生し決定する。例えば、図7に示す通り実効アドレス定義データ8で指定されたワークエリアがC000〜C0FFHで、マイクロプロセッサが16ビット転送可能な場合、ランダムに発生させた16ビット値をC000Hから128回16ビット転送する命令を生成し、ワークエリア初期化用アセンブラプログラム12とする。アセンブラプログラム連結器A13ではワークエリア初期化用アセンブラプログラム12の後にマイクロプロセッサ・アセンブラプログラムA10を連結する(C言語であればポインタを用いるなどして行う)。ワークエリア初期化にランダム値を予め転送させておけば、ランダムに生成した演算命令実行結果などに様々なケースが起こり得るため、マイクロプロセッサ動作の網羅的検証度が向上する。この結果、アセンブラプログラム連結器A13は、図8に示すマイクロプロセッサ・アセンブラプログラムB14を出力する。
【0020】
検証のためには、演算実行結果を記憶したワークエリアの値を外部に取り出し可能とするだけでなく、同時にマイクロプロセッサの内部レジスタ等、通常は外部からは見えない部分を読出し可能とすると、大いに有効である。内部回路読出アセンブラプログラムはこの役割を果すものである。
マイクロプロセッサ・アセンブラプログラムB14と、内部レジスタ等の値を外部に読出すようにした内部回路読出アセンブラプログラム16をアセンブラプログラム連結器B17で連結する。内部回路読出用アセンブラプログラム生成器15は、後に述べる最終工程の期待値が、検証用のマイクロアセンブラ・プログラムにより実行された結果の中間のプログラムカウンタ、フラグレジスタ、データレジスタ等のレジスタ値を、期待値50と比較できるようにする。例えば、ランダムに生成した図8の命令群のパターンの最後に上記内部回路の各種レジスタ値やワークエリア値をマイクロプロセッサ外部のアドレス空間に転送する命令を付加しておく。図9は、内部回路読出用アセンブラプログラム生成器15が生成した内部回路読出アセンブラプログラム16の例を示す図である。
【0021】
こうすることで、その転送先のアドレス空間がランダムパターンの実行結果となるため、例えばC言語やHDLといった仕様を記述できる言語で別途作成されたモデル51もしくは検証対象のソフトウェアシミュレータでそのランダムパターンを実行し、実行結果が格納されたアドレス空間を論理シミュレータ形式の期待値50として用いることができる。実行結果をマイクロプロセッサ外部のアドレス空間に転送する命令を追加することで論理シミュレータの外部モデルも実行結果の状態把握ができ、予め変換しておいた期待値50を論理シミュレータで読み込んでおけば、そのレジスタ値やワークエリア値の実行結果の正当性が外部モデルで判断可能となる。こうして図10に示すマイクロプロセッサ・アセンブラプログラムC18が得られる。
以上のように、C言語であればポインタを用いるなどして、内部回路読出用アセンブラプログラム16をアセンブラプログラム連結器B17で連結して、意味のある実用的な検証用のマイクロプロセッサ命令が、マイクロプロセッサ・アセンブラプログラムC18として得られた。
本実施の形態では、期待値の得方、もしくは期待値との比較については述べないが、別途、期待値と比較することで検証ができる。
【0022】
実施の形態2.
実際のマイクロプロセッサでは、重点的に用いる命令とか、ある組み合わせが重要であるとかの制約がある。こうした場合に、検証プログラムでもこれらの命令組み合わせを確かめておくことは意味がある。こうした重点的な検証を行いたい場合の工夫について説明する。
図11は図1のマイクロプロセッサ命令発生器3にマイクロプロセッサ命令優先発生装置20を追加した形態である。図12は検証頻度を高めたいマイクロプロセッサ・ニーモニック群及びその発生率で構成される命令出現率定義データ19を示す図で、マイクロプロセッサ命令優先発生装置20は、0〜100の範囲でランダムに生じた数値と命令出現率定義データ19で指定された発生率の大小関係をとる。その結果、優先的に指定されたニーモニックを次ニーモニックとして選択するか命令相関ルールデータベース1内でランダムに次ニーモニックを選択するかを決定する。指定されたニーモニックを優先的に選択することになれば、命令出現率定義データ19で指定されたニーモニック群の数niでランダムに値を決定しそのランダム値に対応したニーモニック候補として選択する。次ニーモニック候補が命令相関ルールデータベース1の右辺に存在すれば次ニーモニック候補を次ニーモニックとして決定し、右辺にないか、もしくは命令相関ルールデータベース1内でランダムに次ニーモニックを選択するのであれば、命令相関ルールデータベース1の右辺のニーモニックの組からランダムにニーモニックを選択する。このように処理することで、命令相関ルールデータベース1に違反せず、かつ特定命令に偏ったプログラムが生成できる。
【0023】
命令と同様に、命令シンタックスについても重点検証が可能である。
図13は、図11のマイクロプロセッサ命令構文生成器6にマイクロプロセッサ命令シンタックス優先発生装置22を追加した形態である。図14は、検証頻度を高めたい命令フォーマット指定子、データサイズ、オペランドa〜cなどの優先指定命令シンタックス及びその発生率で構成される命令出現率定義データ21を示す図で、マイクロプロセッサ命令シンタックス優先発生装置22は、0〜100の範囲でランダムに生じた数値と命令出現率定義データ21で指定された発生率の大小関係をとる。その結果、優先的に指定された各シンタックスを次シンタックスとして選択するか命令シンタックスルール・データベース4内でランダムに次シンタックスを選択するかを決定する。指定されたシンタックスを優先的に選択するのであれば、命令出現率定義データ21で優先指定された命令フォーマット指定子、データサイズ、オペランドa〜cの各シンタックス群の数nf、ns、no1、no2、no3でランダムに値を決定しそのランダム値に対応したシンタックスを次シンタックス候補として選択する。次シンタックス候補が命令シンタックスルール・データベース4内の次ニーモニックが許容するシンタックスに存在すれば次シンタックス候補を次シンタックスとして決定し、許容するシンタックスとして存在しないか、もしくは命令シンタックスルール・データベース4内でランダムに次シンタックスを選択するのであれば、命令シンタックスルール・データベース4内の次ニーモニックが許容する命令シンタックスルール・データベース4のシンタックスの組からランダムにシンタックスを選択する。このように処理することで、シンタックスルール・データベース4に違反せず、かつ特定命令シンタックスに偏ったプログラムが生成できる。
【0024】
これらを組合わせて、細分化された機能別命令に対して重要検証を行うこともできる。
図15は、図1のマイクロプロセッサ命令発生器3にマイクロプロセッサ命令機能別命令優先発生装置25を追加した形態である。図16は、マイクロプロセッサの各種命令を転送、シフト、算術、論理、ストリング転送といった機能毎に分類したものを左辺に、その機能に分類されるニーモニックを右辺に配置した命令機能分類データベース23の例であり、図17は、その機能分類に対応して検証頻度を高めたい機能及びその発生率をパラメータ定義した機能別命令出現率定義データ24の例を示す図である。これらを基に、マイクロプロセッサ命令機能別命令優先発生装置は、0〜100の範囲でランダムに生じた数値と機能別命令出現率定義データ24で指定された発生率の大小関係をとり、優先的に指定された各機能分類から次ニーモニックを選択するか命令相関ルールデータベース1内でランダムに次ニーモニックを選択するかを決定する。指定された機能分類を優先的に選択するのであれば、機能別命令出現率定義データ24で優先指定された機能分類の数nfuでランダムに値を決定し、そのランダム値に対応した機能分類から次ニーモニック候補を選択する。機能分類から次ニーモニック候補を選択する手段として命令機能分類データべース23を読み込む際に各機能分類に分類される命令数nf1〜nf5をカウントしておき、その選択された機能分類xに含まれる命令数nfxに基づいて1〜nfxのランダム値を発生させ、そのランダム値に対応したニーモニックが命令相関ルールデータベース1で次に選択可能なニーモニックとして右辺に存在するか比較する。もし命令相関ルールデータベース1の右辺に存在すれば規則に違反しないと判断し次ニーモニックとして決定する。右辺にないか、もしくは命令相関ルールデータベース1内でランダムに次ニーモニックを選択するのであれば命令相関ルールデータベース1の左辺のニーモニックが許容する命令相関ルールデータベース1の右辺のニーモニックからランダムにニーモニックを選択する。このように処理することで、命令相関ルールデータベース1に違反せず、かつ特定機能に偏ったプログラムが生成できる。
【0025】
既に検証済の命令組み合わせを、再度実行することは時間の無駄である。こうした検証の重複を防ぐ形態を説明する。
図18は、図1のマイクロプロセッサ命令構文生成器6にマイクロプロセッサ命令網羅発生装置27を追加した形態である。ここではマイクロプロセッサ命令構文生成器6で、例えば図5に示されるプログラム生成した段階で、図19に示すような命令相関関係と命令シンタックスをトレースする機能を追加しておき、プログラム生成毎に生成登録済検証命令データベース26に蓄積していく。マイクロプロセッサ命令構文生成器6はプログラム生成時にマイクロプロセッサ命令網羅発生装置27により、生成登録済検証命令データベース26を参照して、生成しようとしている命令相関関係と命令シンタックスの組み合わせが既に以前に生成済で重複しないかを生成登録済検証命令データベース26を参照して検索し、蓄積されていなければ以前に検証用として生成されていない命令実行順序・命令フォーマットの組み合わせであると判断し、次命令及び次命令フォーマットを確定させる。定義されていれば既に命令実行順序・命令フォーマットが登録済と判断し、全ての組み合わせ(命令相関ルールデータベースの次に選択できる命令数×次命令シンタックスルール・データベース数)を選択していない限り次命令及び次命令フォーマットを再選択する。
以上のような処理内容でそれまでに生成登録されていない命令順序や命令シンタックスの組み合わせからプログラムを生成していく。つまり検証命令群の重複を防ぐことができる。
【0026】
例えば、図19で生成登録済検証命令データベース26の例を示すように、マイクロプロセッサ命令群7を順次生成していく時点で、直前及び次命令のニーモニック、フォーマット、データサイズ、オペランドa〜cをデータベースとして格納していく。そして次の命令を生成する際には、この生成登録済検証命令データベース26を参照し、命令相関関係及び命令シンタックスが既にデータベースに登録されていなければ次命令のニーモニック・シンタックスを確定させる。また登録されていれば既に述べたように再度ニーモニックと命令シンタックス選択の生成処理を繰り返す。
生成命令数定義データ2で指定された任意の命令数だけこの手順を繰り返し、マイクロプロセッサ命令構文生成器6内部の生成登録済検証命令データベース26を外部ファイルとして出力する。他のランダムパターンを生成する際には、先に出力された生成登録済検証命令データベース26を読み出して、未だ検証されていない命令相関関係・シンタックスを補充して生成させられるので、重複を防ぎ、かつ生成パターンの網羅率が向上する。
【0027】
検証を容易にする工夫を説明する。即ち、命令の実行を行って別の処理に分岐する、不正処理を行う際には、分岐命令が使用されることが多いので、分岐命令を実行したことがよく分かる結果が得られるようにする。
図20は、図1の構成に命令判定器28とレジスタ操作命令挿入装置29を追加した形態である。命令判定器28は、生成したマイクロプロセッサ命令群7と命令機能分類データベース23の一致比較を行う。そして、機能分類で分岐命令または条件分岐命令に分類されていたニーモニックがマイクロプロセッサ命令群7に存在していた場合は、レジスタ操作命令挿入装置29の起動を行い、分岐命令の後ろにレジスタ操作命令を挿入する。例えば図21に示すように、生成されたマイクロプロセッサ命令群7が分岐命令を含むかどうかを比較し、分岐命令の1つであるJGEU命令が存在している場合には、フラグレジスタ値を他のレジスタに代入するなどのレジスタ操作命令を条件分岐命令の直後に強制的に挿入する。こうすれば、マイクロプロセッサ動作が不正な場合には、結果的にレジスタ値に差異が生じるため、不正に処理されたかどうかの検出が容易になる。
【0028】
【発明の効果】
以上のようにこの発明によれば、命令相関ルールと命令シンタックス・ルールと、実値変換手段とを備えたので、重要度が高い命令を含み実用的である一連のマイクロプロセッサ検証用のアセンブラプログラムが得られる効果がある。
【0029】
また更に、内部回路読み出しプログラム生成手段を備えたので、比較検証の範囲が広がり、より正確な検証ができる効果がある。
【0030】
また更に、各種の出現率定義を設けたので、検証したい重要命令を重点的に検証できる効果がある。
また、既生成検証用命令データベースを備えたので、重複をなくして効果的な検証ができる効果がある。
【図面の簡単な説明】
【図1】 本発明の実施の形態1におけるマイクロプロセッサ検証データ作成装置の要素関係説明図である。
【図2】 実施の形態1における命令相関ルールデータベースの構成値例を示す図である。
【図3】 実施の形態1における生成途中のマイクロプロセッサ・ニーモニック群の例を示す図である。
【図4】 実施の形態1における命令シンタックスルール・データベースの構成値例を示す図である。
【図5】 実施の形態1における生成途中のマイクロプロセッサ命令群の例を示す図である。
【図6】 実施の形態1におけるマイクロプロセッサ・アセンブラプログラムAの例を示す図である。
【図7】 実施の形態1におけるワークエリア初期化用アセンブラプログラムを示す図である。
【図8】 実施の形態1におけるマイクロプロセッサ・アセンブラプログラムBの例を示す図である。
【図9】 実施の形態1における内部回路読出用アセンブラプログラムの例を示す図である。
【図10】 実施の形態1におけるプロセッサ動作検証パターンとなるマイクロプロセッサ・アセンブラプログラムCの例を示す図である。
【図11】 実施の形態2におけるマイクロプロセッサ検証データ作成装置の要素関係説明図である。
【図12】 実施の形態2における命令出現率定義データ19の構成値例を示す図である。
【図13】 実施の形態2における他のマイクロプロセッサ検証データ作成装置の要素関係説明図である。
【図14】 実施の形態2における命令シンタックス出現率定義データ21の構成値例を示す図である。
【図15】 実施の形態2における他のマイクロプロセッサ検証データ作成装置の要素関係説明図である。
【図16】 実施の形態2における命令機能分類データベース23の構成値例を示す図である。
【図17】 実施の形態2における機能別命令出現率定義データ24の構成値例を示す図である。
【図18】 実施の形態2における他のマイクロプロセッサ検証データ作成装置の要素関係説明図である。
【図19】 実施の形態2における生成登録済検証命令データベース26の構成値例を示す図である。
【図20】 実施の形態2における他のマイクロプロセッサ検証データ作成装置の要素関係説明図である。
【図21】 実施の形態2におけるレジスタ操作命令挿入装置29の処理例を示す図である。
【符号の説明】
1 命令相関ルールデータベース、2 生成命令数定義データ、3 マイクロプロセッサ命令発生器、4 命令シンタックスルール・データベース、5 マイクロプロセッサ・ニーモニック群、6 マイクロプロセッサ命令構文発生器、7マイクロプロセッサ命令群、8 実効アドレス定義データ、9 実値変換器、10 マイクロプロセッサ・アセンブラプログラムA、11 ワークエリア初期化器、12 ワークエリア初期化用アセンブラプログラム、13 アセンブラプログラム連結器A、14 マイクロプロセッサ・アセンブラプログラムB、15内部回路読出用アセンブラプログラム生成器、16 内部回路読出アセンブラプログラム、17、17B アセンブラプログラム連結器B、18 マイクロプロセッサ・アセンブラプログラムC、19 命令出現率定義データ、20 マイクロプロセッサ命令優先発生装置、21 命令シンタックス出現率定義データ、22 マイクロプロセッサ命令シンタックス優先発生装置、23 命令機能分類データベース、24 機能別命令出現率定義データ、25 マイクロプロセッサ命令機能別命令優先発生装置、26 生成登録済検証命令データベース、27 マイクロプロセッサ命令網羅発生器、28 命令判断器、29 レジスタ操作命令挿入装置、50 マイクロプロセッサ・アセンブラプログラムB14の期待値、51 マイクロプロセッサと同一論理を構成するモデル。
Claims (5)
- マイクロプロセッサが実行する単位となる命令毎に、該命令に続いて複数の次に実行可能な命令を定めた命令相関ルール・データベースと、
上記単位となる命令毎にシンタックスを複数種類定めた命令シンタックスルール・データベースと、
上記命令相関ルール・データベースに基づいて、ある命令を直前の命令として設定して次に実行可能な命令を選択し、以後は該選択された命令を直前の命令として次に実行可能な命令を順次選択して連続した命令群を生成するマイクロプロセッサ命令発生器と、
上記マイクロプロセッサ命令発生器が生成した連続した命令群の各命令に対して上記命令シンタックスルール・データベースで定められた上記複数種類のシンタックスの中から1つの種類のシンタックスを選択し、該選択したシンタックスの命令をマイクロプロセッサ命令とすることにより、上記連続した命令群からマイクロプロセッサ命令群を生成するマイクロプロセッサ命令構文発生器と、
上記マイクロプロセッサ命令構文発生器が生成したマイクロプロセッサ命令群を構成する各マイクロプロセッサ命令のシンタックスの種類に応じて、予め設定したワークアドレスの領域のいずれかのアドレスをマイクロプロセッサ命令のアクセスアドレスとして設定することにより、上記マイクロプロセッサ命令群からマイクロプロセッサ・プログラムを生成する実値変換器と、
を備えたことを特徴とするマイクロプロセッサ検証プログラム作成装置。 - マイクロプロセッサ内の内部回路の状態を読み出す内部回路読み出しプログラムを生成する内部回路読み出しプログラム生成器を備えて、
上記マイクロプロセッサ・プログラムに上記内部回路読み出しプログラム生成器が生成した内部回路読み出しプログラムを付加して内部回路の状態を読み出すようにすることを特徴とする請求項1記載のマイクロプロセッサ検証プログラム作成装置。 - 上記単位となる命令の出現確率を規定した命令出現率定義、およびシンタックスの出現確率を規定した命令シンタックス出現率定義を定めて、
マイクロプロセッサ命令発生器は、上記命令出現率定義に基づいて直前の命令から実行可能な命令を選択して上記連続した命令群を生成すると共に、マイクロプロセッサ命令構文発生器は、上記シンタックス出現率定義に基づいて1つの種類のシンタックスを選択して上記連続した命令群から上記マイクロプロセッサ命令群を生成するようにしたことを特徴とする請求項1記載のマイクロプロセッサ検証プログラム作成装置。 - 上記単位となる命令を機能別に分類し、該分類された各機能毎に出現確率を規定した機能別命令出現率定義を定めて、
マイクロプロセッサ命令発生器は、上記機能別命令出現率定義に基づいて直前の命令から実行可能な命令を選択して上記連続した命令群を生成することを特徴とする請求項3記載のマイクロプロセッサ検証プログラム作成装置。 - マイクロプロセッサ命令群を登録する生成登録済検証命令データベースを備えて、
マイクロプロセッサ命令構文発生器は、生成したマイクロプロセッサ命令群の中から所定範囲のマイクロプロセッサ命令群を上記生成登録済検証命令データベースに登録し、新規に生成したマイクロプロセッサ命令群の中にある所定範囲のマイクロプロセッサ命令群が上記生成登録済検証命令データベースに既に登録した所定範囲のマイクロプロセッサ命令群と同一であれば、上記所定範囲のマイクロプロセッサ命令群のマイクロプロセッサ命令をシンタックスの異なるマイクロプロセッサ命令に変更して、マイクロプロセッサ命令群を生成するようにしたことを特徴とする請求項1記載のマイクロプロセッサ検証プログラム作成装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP28097599A JP4226168B2 (ja) | 1999-10-01 | 1999-10-01 | マイクロプロセッサ検証プログラム作成装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP28097599A JP4226168B2 (ja) | 1999-10-01 | 1999-10-01 | マイクロプロセッサ検証プログラム作成装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001101025A JP2001101025A (ja) | 2001-04-13 |
JP4226168B2 true JP4226168B2 (ja) | 2009-02-18 |
Family
ID=17632518
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP28097599A Expired - Fee Related JP4226168B2 (ja) | 1999-10-01 | 1999-10-01 | マイクロプロセッサ検証プログラム作成装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4226168B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6901685B2 (ja) * | 2017-10-04 | 2021-07-14 | 富士通株式会社 | 生成プログラム、生成方法、及び情報処理装置 |
-
1999
- 1999-10-01 JP JP28097599A patent/JP4226168B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001101025A (ja) | 2001-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5559884A (en) | Method and system for generating and auditing a signature for a computer program | |
US7877742B2 (en) | Method, system, and computer program product to generate test instruction streams while guaranteeing loop termination | |
US5317743A (en) | System for compiling iterated loops based on the possibility of parallel execution | |
EP0718764A2 (en) | Bytecode program interpreter apparatus and method with pre-verification of data type restrictions | |
US5923883A (en) | Optimization apparatus which removes transfer instructions by a global analysis of equivalence relations | |
US20030079214A1 (en) | Using identifiers and counters for controled optimization compilation | |
JP2011048581A (ja) | ソースコード解析システム | |
JP5218063B2 (ja) | 命令オペコード生成システム | |
US5673425A (en) | System for automatic generating instruction string to verify pipeline operations of a processor by inputting specification information having time for the processor to access hardware resources | |
JP3909073B2 (ja) | コンパイラ及び論理回路の設計方法 | |
JP4226168B2 (ja) | マイクロプロセッサ検証プログラム作成装置 | |
JP4184900B2 (ja) | 変数の統計処理を行うコンパイル処理プログラム、およびその記録媒体、およびその処理方法ならびにその処理装置 | |
US8566813B2 (en) | Method and system generating execution file system device | |
US7958330B2 (en) | Compiler program, compiler program recording medium, compile method, and program processing system | |
JP2002182709A (ja) | プログラマブルコントローラのプログラミング装置 | |
JP2005251127A (ja) | パターン体系構築装置、及び、パターン適用装置 | |
JP3594106B2 (ja) | 自動プログラミング装置、自動プログラミング方法および記録媒体 | |
JPH11345127A (ja) | コンパイラ | |
JP2731047B2 (ja) | プログラムのオペランドチェック方式 | |
JPH02236638A (ja) | レジスタ割付け管理方式 | |
JP4260895B2 (ja) | マイクロコントローラにおける複数フォーマットアドレス指定 | |
JP2001075831A (ja) | プログラム処理装置、ic試験システム、プログラム処理方法及び記憶媒体 | |
JP3464019B2 (ja) | レジスタの割付方式 | |
JP2000330786A (ja) | データ処理方法及びデータ処理装置並びにデータ処理プログラムを記録した記録媒体 | |
JP2001184227A (ja) | シミュレーション装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20040514 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20041018 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060705 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080318 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080507 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080819 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081001 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20081125 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20081126 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111205 Year of fee payment: 3 |
|
R150 | Certificate of patent (=grant) or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111205 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121205 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |