JP2001188691A - 検証プログラム自動生成方法及び検証プログラム自動生成プログラムを記録したコンピュータ読み取り可能な記録媒体 - Google Patents

検証プログラム自動生成方法及び検証プログラム自動生成プログラムを記録したコンピュータ読み取り可能な記録媒体

Info

Publication number
JP2001188691A
JP2001188691A JP37586099A JP37586099A JP2001188691A JP 2001188691 A JP2001188691 A JP 2001188691A JP 37586099 A JP37586099 A JP 37586099A JP 37586099 A JP37586099 A JP 37586099A JP 2001188691 A JP2001188691 A JP 2001188691A
Authority
JP
Japan
Prior art keywords
verification program
instruction
generating
value
branch
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.)
Pending
Application number
JP37586099A
Other languages
English (en)
Inventor
Kazuyoshi Kono
和義 河野
Hironori Kamiya
裕徳 上谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP37586099A priority Critical patent/JP2001188691A/ja
Priority to US09/749,548 priority patent/US6611779B2/en
Publication of JP2001188691A publication Critical patent/JP2001188691A/ja
Priority to US10/391,750 priority patent/US6845335B2/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

(57)【要約】 【課題】 ISA仕様から自動的に検証プログラムを生
成する方法を提供する。 【解決手段】 プロセッサの命令セットアーキテクチャ
(ISA)仕様を解析するISA仕様解析ステップ(S
101)と、検証プログラムの生成に必要なデータを作
成する検証プログラム生成データ作成ステップ(S10
3)と、前記データを用いて検証プログラムを生成する
検証プログラム生成ステップ(S105)とを有する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プロセッサの命令
動作が仕様通りに実装されているか否かを検証するプロ
グラムを自動生成する方法に関する。
【0002】
【従来の技術】従来、プロセッサの命令動作が仕様通り
に実装されているか否かを検証するためには、(1)人
間が様々なオペランド値の組み合わせを考えて検証プロ
グラムをハンドコーディングしたり、(2)オペランド
値の組み合わせをランダムに生成しそれを用いて検証プ
ログラムを自動生成したりしていた。
【0003】
【発明が解決しようとする課題】しかしながら、上記
(1)の方法では、検証プログラムの生成に時間がかか
ってしまう。また、上記(2)の方法では、検証プログ
ラムの生成は容易であるが検証の信頼性を高めるために
多くのオペランド値の組み合わせを用いなければならず
検証プログラムの実行時間が長くなってしまっていた。
【0004】そこで、本発明は、これら課題を解決すべ
くなされたものであり、信頼性の高い検証を短時間で完
了しうる検証プログラムを自動生成する方法を提供する
ことを目的とする。
【0005】
【課題を解決するための手段】上記目的を達成するため
に、本発明の第1の特徴は、プロセッサに実装された命
令が仕様どおりの機能を有するかを検証する検証プログ
ラムの自動生成方法であって、前記プロセッサの命令セ
ットアーキテクチャ(ISA)仕様を解析するISA仕
様解析ステップと、検証プログラムの生成に必要なデー
タを作成する検証プログラム生成データ作成ステップ
と、前記データを用いて検証プログラムを生成する検証
プログラム生成ステップとを有することにある。
【0006】前記ISA仕様解析ステップは、オペラン
ド情報,動作記述及びニーモニックから、検証の対象と
なるプロセッサに例外動作を起こさせないために、ソー
スオペランド値及び命令実行結果のそれぞれが満たすべ
き条件を決定するステップを含み、前記検証プログラム
生成データ作成ステップは、前記ソースオペランド値が
満たすべき条件と前記命令実行結果が満たすべき条件の
2つの条件をともに満たすソースオペランド値の組を生
成するステップを含み、前記検証プログラム生成ステッ
プは、前記2つの条件をともに満たすソースオペランド
値を引数として検証の対象となる命令を展開するステッ
プを含むこととしても良い。
【0007】例外動作を発生しないオペランド値を自動
生成し、かかるオペランド値を用いることにより純粋に
命令動作を検証することが可能となる。
【0008】前記ISA仕様解析ステップは、入力され
るオペランド値が満たすべき条件式又は命令の演算結果
が満たすべき条件式が、真又は偽のどちらか一方の値し
か取り得ないかどうかをチェックするステップを含むこ
ととしても良い。
【0009】オペランド値,演算結果が満たすべき条件
式が、真偽の一方にしかならないかどうかをチェックす
ることにより、ISA仕様のバグを検出することが可能
となる。
【0010】前記検証プログラム自動生成方法は、さら
に、検証対象プロセッサが正常に動作した場合に出力す
べき期待値を生成し、前記期待値と前記検証対象プロセ
ッサが実際に出力した出力値とを比較する命令列を付記
する比較命令列付記ステップを含むこととしても良い。
【0011】期待値と出力値を比較することにより、命
令レベルシミュレータなしでもレジスタ・トランスファ
ー・レベル(RTL)の機能検証が可能となる。
【0012】前記検証プログラム自動生成方法は、さら
に、検証の対象となる命令が分岐命令である場合に、分
岐が生じない場合に実行される命令数と分岐が生じた場
合に実行される命令数とをカウントする実行命令数カウ
ントステップと、前記2つの条件を満たすソースオペラ
ンド値の組の内、分岐を生じさせないソースオペランド
値の組数と、分岐を生じさせるソースオペランド値の組
数とをカウントする非分岐/分岐数カウントステップ
と、前記分岐が生じない場合に実行される命令数に前記
分岐を生じさせないソースオペランド値の組数を乗じた
値と、前記分岐が生じた場合に実行される命令数に前記
分岐を生じさせるソースオペランド値の組数を乗じた値
との和を求めるステップとを含むこととしても良い。
【0013】非分岐となる場合が何件で、非分岐となっ
た場合に実行される命令数がいくつかを計算し、同様に
分岐となる場合が何件で、分岐した場合に実行される命
令数がいくつかを計算することにより検証プログラムの
実行時間の正確な見積もりが可能となる。
【0014】本発明の第2の特徴は、前記プロセッサの
命令セットアーキテクチャ(ISA)仕様を解析するI
SA仕様解析ステップと、検証プログラムの生成に必要
なデータを作成する検証プログラム生成データ作成ステ
ップと、前記データを用いて検証プログラムを生成する
検証プログラム生成ステップと、を含みこれらの処理を
コンピュータに実行させる検証プログラム自動生成プロ
グラムを記録したコンピュータ読み取り可能な記録媒体
にある。
【0015】このような記録媒体によれば、ISA仕様
から自動的に検証プログラムを生成しうるという有用な
プログラムの保存、実行、運搬等を簡便に行うことがで
き、検証プログラムの自動生成をより容易なものとする
ことができる。
【0016】
【発明の実施の形態】以下、本発明の実施形態を図面に
基づいて説明する。
【0017】図1は、本発明の検証プログラム自動生成
方法の処理の流れを示すフローチャートである。同図に
示すように、本発明においては、プロセッサの命令セッ
トアーキテクチャ(ISA)仕様を解析し(S10
1)、仕様解析結果に基づいて検証プログラムの生成に
必要なデータを生成し(S103)、生成されたデータ
に基づいて検証プログラムを生成する(S105)。
【0018】ISA仕様には、加算命令、条件分岐命令
等の仕様が含まれる。
【0019】次に、本発明の第1実施形態について説明
する。第1実施形態は加算命令用の検証プログラムを生
成する場合である。
【0020】図2は、第1実施形態における検証プログ
ラム自動生成装置の構成を示すブロック図である。同図
に示すように、第1実施形態における検証プログラム自
動生成装置は、パーサ221〜223、中間データ生成
手段231〜232、オペランド値情報生成手段25
1、テンプレート生成手段252、検証プログラム生成
手段271から構成される。
【0021】動作記述211,オペランド情報212,
ニーモニック213がパーサ221〜223に入力さ
れ、パーサ221〜223の出力が中間データ生成手段
231〜232に入力される。中間データ生成手段23
1〜232から中間データ241〜242が出力され
る。中間データ241〜242がオペランド値情報生成
手段251に入力され、中間データ242がテンプレー
ト生成手段252に入力される。オペランド値情報生成
手段251が生成したオペランド値情報がオペランド値
情報データベース261に記憶され、テンプレート生成
手段252が生成したテンプレートがテンプレートデー
タベース262に記憶される。そして、オペランド値情
報とテンプレートが検証プログラム生成手段271に入
力され、検証プログラム281が生成される。
【0022】図3は、第1実施形態における検証プログ
ラム自動生成方法の処理の流れを示すフローチャートで
ある。同図に示すように、まず動作記述211、オペラ
ンド情報212、ニーモニック213をパーサ221〜
223に入力する(S201)。次に、パーサ221〜
223の解析結果を中間データ生成手段231〜232
に入力する(S203)。そして、中間データ生成手段
231により下記(数1)を、中間データ生成手段23
2により下記(数2),(数3)を生成する(S20
5)。次に、(数1),(数2),(数3)をオペラン
ド値情報生成手段251に、(数2),(数3)をテン
プレート生成手段252に入力する(S207)。オペ
ランド値情報生成手段251から得られるオペランド値
情報をオペランド値情報データベース261に、テンプ
レート生成手段252から得られるテンプレートをテン
プレートデータベース262に入力する(S209)。
オペランド値情報及びテンプレートを検証プログラム生
成手段271に入力し(S211)、検証プログラム2
81を生成する(S213)。
【0023】動作記述211、ニーモニック213はそ
れぞれ以下のとおりである。
【0024】 また、オペランド情報212の内容は、このレジスタは
32ビット符号ありの値を保持できるというものとす
る。よって、演算結果が、-2147483648以上2147483647
以下の範囲からはずれるとオーバーフローする。
【0025】ここでRn,Rmの値を勝手な値に設定す
ると、演算結果がオーバーフローしてしまう可能性があ
る。オーバーフローを防止するためには、演算結果が下
記の条件を満たすように、ソースオペランドの値を決定
する必要がある。
【0026】 (数1) -2147483648≦Rn+Rm≦2147483647 ここでソースオペランドの値を決定するときに動作記述
211から(数1)の不等式を導出し、オペランド情報
212からオペランドの値の範囲を決定する下記不等式
(数2),(数3)を導出する。
【0027】(数2) -2147483648≦Rn≦2147483647 (数3) -2147483648≦Rm≦2147483647 なお、(数1)は中間データ241に、(数2)と(数
3)は中間データ242に対応する。
【0028】3つの連立不等式を数式処理ツールで解く
ことでオーバーフローしないオペランドの値を生成する
ことが可能となる。数式処理ツールは、オペランド値情
報生成手段251に対応する。
【0029】オーバーフローしない値の範囲をRn,R
mをXY座標上で表現すると次の6点を頂点とする凸六
角形(図4)の周辺および内部(図4の凸六角形の斜線
部分およびその境界)となる。
【0030】A(-2147483648,2147483647),B(-2147483
648,0),C(0,-2147483648),D(2147483647,-214748364
8),E(2147483647,0),F(0,2147483647) またオーバーフローしないぎりぎりの値を生成させるた
めには、(数1),(数2)及び(数3)の不等式の等
号の部分のみを考えた方程式の解を生成する。すなわち
上記6点を頂点とする凸六角形の周辺上の点である。そ
して、各点のXY座標が、オペランド値情報としてオペ
ランド値情報データベース261に記憶される。
【0031】また、境界値の付近(例えば、境界値より
1小さい値や1大きい値)を生成するオプションを持た
せておいて、そのオプションを指定することで境界値付
近の値を多量に生成することで境界値付近の検証を集中
的に行うようにしても良い。
【0032】例えば、点A(-2147483648,2147483647)か
ら原点に近づく方向にRn,Rmのどちらか一方を1ず
つ変化させることで以下の2つの値の組が生成される。
【0033】 (-2147483647,2147483647),(-2147483648,2147483646) 次にこれらの座標から原点に近づく方向にRn,Rmの
どちらか一方を1ずつ変化させることで以下の3つの値
の組が生成される. (-2147483646,2147483647),(-2147483647,2147483646),
(-2147483648,2147483645) この処理を各境界値から始めることで境界値付近の値の
生成が可能となる。
【0034】境界値付近ではない値の生成については次
の手順で行う。上記凸六角形を点Aと点Dを通る線分及
びX軸とY軸で6個の三角形に分割する(図4
(B))。
【0035】分割された三角形のそれぞれについて重心
を求めると、その重心の座標は凸六角形の内部の座標と
なる。例えば、点A,点B及び原点を頂点とする三角形
について図心を求めると、その重心点Gの座標は凸六角
形の内部の座標となる(図4(C))。
【0036】さらに、重心と三角形の各頂点を結ぶ線分
でその三角形を3つの三角形に分割する。分割して得ら
れた三角形に対して再び重心を求める。この手順を必要
個数の値の組が得られるまでくりかえすことで凸六角形
の内部の座標を均等に得ることが可能となる。
【0037】分割方法は他にもある。例えば三角形の重
心の座標を生成した後、各辺の中点を結ぶ3本の線分に
より、この三角形を4つの三角形に分割する(図4
(D))。これをくりかえすことでまた三角形を分割で
きる。分割して得られた三角形の重心を求めることによ
り、凸六角形の内部の座標を均等に得ることができる。
【0038】また、ここでは凸六角形の内部の座標を均
等に生成する手段を述べたが、分割された三角形ごとに
重み(例えば、生成する座標の個数など)を持たせるこ
とで、重点的に調べたい部分の値を多く生成させること
も可能である。
【0039】このようにして生成したオペランド値の組
をオペランド値情報データベース261に記憶させる。
【0040】一方、ニーモニック213を解析して得ら
れた中間データ242をテンプレート生成手段252に
入力し、下記の検証プログラムのテンプレート(マク
ロ)を作成し、テンプレートデータベース262に記憶
させる。なお、テンプレートは、テンプレート生成手段
252を用いることなく、人手によって作成しても良
い。
【0041】[テンプレート] #define add_R2(Rn,Rm,Vn,Vm) MOV Rn,Vn //RnにVnをセット MOV Rm,Vm //RmにVmをセット ADD Rn,Rm //検証対象命令を実行 このテンプレートと、オペランド値の組とを、検証プロ
グラム生成手段271に入力して、検証プログラム28
1を生成する。
【0042】例えば上記のテンプレートを2つのレジス
タ番号($0,$5)と2つの値(123,234)を引数として展開す
ることで次のような1個の検証プログラムが得られる。
【0043】[検証プログラム] MOV $0, 123 MOV $5, 234 ADD $0, $5 さらに、検証プログラムの生成手段のオプションとし
て、少数の境界値付近の検証プログラムを生成するモー
ドと、多数のその他の値(境界値付近以外の値)の検証
プログラムを生成するモードとが切り替えられるように
しても良い。このモード切り替えを用いて、検証初期に
はバグの潜みやすい境界値付近のみをねらって少数の検
証プログラムで検証を行い、境界値付近の検証プログラ
ムがパスした後に、多数のその他の値の検証プログラム
を生成する。境界値付近の検証プログラムがパスしなか
った場合に、その時点で検証プログラムの生成をやめる
ことにより、検証時間を短縮することが可能となる。
【0044】次に、第2実施形態について説明する。第
2実施形態は条件分岐命令用の検証プログラムを生成す
る場合である。
【0045】図5は、第2実施形態における検証プログ
ラム自動生成装置の構成を示すブロック図である。同図
に示すように、第2実施形態における検証プログラム自
動生成装置は、パーサ321〜324、中間データ生成
手段331〜332、オペランド値情報生成手段35
1、テンプレート生成手段352、検証プログラム生成
手段371から構成される。
【0046】動作記述311,オペランド情報312,
ニーモニック313、メモリ情報314がパーサ321
〜324に入力され、パーサ321〜324の出力が中
間データ生成手段331〜332に入力される。中間デ
ータ生成手段331〜332から中間データ341〜3
42が出力され、中間データ341〜342がオペラン
ド値情報生成手段351に入力され、中間データ342
がテンプレート生成手段352に入力される。オペラン
ド値情報生成手段351が生成したオペランド値情報が
オペランド値情報データベース361に記憶され、テン
プレート生成手段352が生成したテンプレートがテン
プレートデータベース362に記憶される。そして、オ
ペランド値情報とテンプレートが検証プログラム生成手
段371に入力され、検証プログラム381が生成され
る。
【0047】図6は、第2実施形態における検証プログ
ラム自動生成方法の処理の流れを示すフローチャートで
ある。同図に示すように、まず動作記述311、オペラ
ンド情報312、ニーモニック313、メモリ情報31
4をパーサ321〜324に入力する(S301)。次
に、パーサ321〜324の解析結果を中間データ生成
手段331〜332に入力する(S303)。そして、
中間データ生成手段331により下記(数5),(数
6),(数7),(数8)を、中間データ生成手段33
2により下記(数4)を生成する(S305)。次に、
(数4),(数5),(数6),(数7),(数8)を
オペランド値情報生成手段351に、(数4)をテンプ
レート生成手段352に入力する(S307)。オペラ
ンド値情報生成手段351から得られるオペランド値情
報をオペランド値情報データベース361に、テンプレ
ート生成手段352から得られるテンプレートをテンプ
レートデータベース362に入力する(S309)。オ
ペランド値情報及びテンプレートを検証プログラム生成
手段371に入力し(S311)、検証プログラム38
1を生成する(S313)。
【0048】動作記述311、ニーモニック313はそ
れぞれ以下のとおりである。ただしPCはプログラムカウ
ンタ、disp8は分散値を意味する. PCおよびdisp8の値の条件として、PCおよびPC+disp8の
2つの値はともにコード領域でなければならない。この
コード領域の情報はメモリ情報314から得る。ここで
コード領域が[0x800000,0x900000]であるとき、このPC
およびdisp8は、次の不等式(数4)およびオペランド
情報312からdisp8の値の範囲(数5)を生成し、こ
れらの解の集合の要素から任意に選択される。ただし、
disp8は8ビットの符号有りオペランドとする。
【0049】(数4)0x800000≦PC≦0x900000 0x800000≦PC+disp8≦0x900000 (数5)-128≦disp8≦127 この連立不等式の解は、以下の6つの座標を頂点とする
六角形となる(図7(A))。
【0050】 J(0x800000,127),K(0x800000,0),L(0x8fff81,127),
M(0x800080,-128),N(0x900000,0),P(0x900000,-128) 実施形態1と同様に、この六角形の境界値および境界値
付近の値を生成する。例えばK(0x800000,0),L(0x8fff
81,127)を両端とする線分と、M(0x800080,-128),N(0x
900000,0)を両端とする線分と、K(0x800000,0),N(0x9
00000,0)を両端とする線分でこの六角形を4つの三角形
に分割する。そして、それぞれの三角形について実施形
態1と同様の方法で内部の座標を生成することで、例外
動作を起さないアドレスの値が生成可能となる。
【0051】次に条件式のオペランドの値の生成につい
ては、その条件式が真偽のどちらになるかをオプション
で指定できるようにしておき、(1)真となる値を生成
する場合は動作記述311を解析し、Rn==Rmとなるよう
に値を生成し、(2)逆に偽となる値を生成する場合は
上記の動作記述を解析し、Rn!=Rmとなるように値を生成
し、(3)特に指定がない場合は真偽の両方の値をとる
ように値を生成する。
【0052】具体的にRn==Rmが真となる値の組の生成方
法としては、Rn==Rmから(数6)を生成し、 (数6) Rn=Rm オペランド情報312から(数2),(数3)の不等式
を生成し、3つの式(数2),(数3),(数6)の連
立不等式を解くことで2つの座標Q(-2147483648,-2147
483648),R(2147483647,2147483647)を両端とする線分
が得られる(図7(B))。この線分上の座標を生成す
ることでこの条件式を真にする値の組が生成可能とな
る。
【0053】また、この境界値からXY座標のどちらか
一方をそれぞれのオペランドの値の取りうる範囲内で1
ずつ変化させることで境界付近の値の組の生成も可能と
なる。 一方、条件式が偽となる値はRn!=Rmから(数
7),(数8)を生成し、 (数7) Rn<Rm (数8) Rn>Rm (数2),(数3),(数7)の連立不等式の解は、以
下の3つの座標を頂点とする三角形となる(図7
(B))。
【0054】A(-2147483648,2147483647),Q(-2147483
648,-2147483648),R(2147483647,2147483647) また(数2),(数3),(数8)の連立不等式の解
は、以下の3つの座標を頂点とする三角形となる(図7
(B))。
【0055】D(2147483647,-2147483648),Q(-2147483
648,-2147483648),R(2147483647,2147483647) この2つの三角形の境界のうちQ(-2147483648,-214748
3648),R(2147483647,2147483647)を頂点とする線分を
除く境界と内部が、Rn!=Rmとなる値の組の取りうる範囲
となる。
【0056】このようにして生成したオペランド値の組
をオペランド値情報データベース361に記憶させる。
【0057】一方、オペランド情報312、ニーモニッ
ク313、メモリ情報314を解析して得られた中間デ
ータ342をテンプレート生成手段352に入力し、下
記の検証プログラムのテンプレートを作成し、テンプレ
ートデータベース362に記憶させる。なお、テンプレ
ートは、第1実施形態と同様に、テンプレート生成手段
352を用いることなく、人手によって作成しても良
い。
【0058】[テンプレート] #define beq_R2(Rn,Rm,Rc,Vn,Vm) MOV Rn,Vn //RnにVnをセット MOV Rm,Vm //RmにVmをセット BEQ Rn,Rm,BranchLabel //検証対象命令を実行 MOV Rc,0x0 //Rcに0x0をセット JMP JumpLabel BranchLabel: MOV Rc,0x1 //Rcに0x1をセット JumpLabel: このテンプレートと、オペランド値情報データベース3
61に記憶させたオペランド値の組とを、検証プログラ
ム生成手段371に入力して、検証プログラム381を
生成する。
【0059】例えば上記のテンプレートを3つのレジス
タ番号($0,$5,$8)と2つの値(123,234)を引数として展
開することで次のような1個の検証プログラムが得られ
る。
【0060】[検証プログラム] MOV $0,123 //RnにVnをセット MOV $5,234 //RmにVmをセット BEQ $0,$5,BranchLabel //検証対象命令を実行 MOV $8,0x0 //Rcに0x0をセット JMP JumpLabel BranchLabel: MOV $8,0x1 //Rcに0x1をセット JumpLabel: さらに条件式のオペランドの値の生成において、条件式
および条件式中に出現するオペランドの情報から得られ
る連立不等式を数式処理ツールで解いた結果その条件が
常に真であったり常に偽である場合がある。
【0061】例えば次のようなニーモニックと動作記述
で定義される命令があるとする。
【0062】 [ニーモニック] BCND3 Rl, Rm, Rn, disp8 [動作記述] void BCND3(SINT32 Rl, SINT32 Rm, SINT32 Rn, SINT8 disp8, SINT PC) { if ((Rl < Rm) && (Rm < Rn) && (Rn < Rl)) { PC = PC + disp8; } else { PC = PC + 4; } } この分岐命令の条件式は解を持たないので常に偽であ
る。
【0063】また逆に解が、その条件式に出現するオペ
ランドの値の全範囲および全てのオペンランドの値の組
みあわせであるとなった場合は、常に真であることがわ
かる。
【0064】 この分岐命令の条件式はRnの全範囲であるので常に真で
ある。
【0065】このように、絶対に真になりえない条件式
や偽になりえない条件式が存在するかどうかを解析する
解析手段を備えることでISA仕様のバグの検出も行うこ
とが可能となる。
【0066】次に、第3実施形態について説明する。第
3実施形態は、セルフチェック機能を有する場合であ
る。
【0067】検証の対象となる命令毎にその機能動作を
C++の関数として定義する。その関数を用いて、期待値
を生成する。期待値とは、検証対象プロセッサが正しく
動作した場合に出力すべき出力値である。そして、期待
値と検証対象プロセッサの実際の出力値とを比較する。
期待値と実際の出力値との比較は、以下のようなマクロ
を使用することで可能となる。
【0068】 // 期待値比較マクロ // // REG0 : 比較対象の演算結果を保持しているレジスタ // REG1 :期待値を保持するために使用するレジスタ // EXP :期待値 #define COMPARE(REG0,REG1,EXP) MOV REG1, EXP BNE REG0, REG1, FAIL 例えば、加算命令に関して、2つの入力値10,20を期待
値生成プログラムに渡した場合、その期待値として30が
得られる。そして、期待値比較マクロを用いて、期待値
と、検証対象プロセッサが実際に出力した値(比較対照
の演算結果)とを比較する。REG0は比較対象の演算結果
を保持しているレジスタであり検証用マクロから決ま
る。REG1は一時的に使用するレジスタであり値を破壊し
ても良いレジスタを指定すれば良い。EXPには生成され
た期待値を指定すれば良い。1つの命令に期待値比較を
行ないたいレジスタが複数ある場合にはその個数分期待
値比較マクロを埋め込めば良い。
【0069】(セルフチェック形式の検証プログラムを
生成する/しないのモード切替について加筆して下さ
い。もし、特許請求の範囲にこのモード切替を記載する
必要がありましたら、できるだけ具体的に記載して下さ
い。一方、特許請求の範囲に記載する必要がない場合
は、簡単に記載して下さい。)次に、第4実施形態につ
いて説明する。第4実施形態は、検証プログラムの実行
時間の見積もりに関するものである。
【0070】本発明により生成した検証プログラムの命
令数をカウントすることにより、検証プログラムを使用
した場合に実際に実行される命令数を正確に把握でき、
これにより各シミュレータでの実行命令数が算出可能と
なる。従って、検証プログラム毎の実行時間の見積もり
が可能となる。例えば、検証プログラム中に次のような
命令列があるとする。
【0071】 if (cond) then 命令; else 命令; : 命令; end if 本発明により生成した検証プログラムの場合、条件式(c
ond)の値は、一意に決定されている。つまり、then側が
何回実行され、else側が何回実行されるかがわかる。よ
って、下記式(数9)により実行される命令の数が正確
にカウントでき、検証プログラムの実行時間の見積もり
が可能となる。
【0072】(数9)(then側命令数)*(then側実行
回数)+(else側命令数)*(else側実行回数) そして、このようなステップを有するソフトウェアは、
例えば図8に示すような、フロッピーディスク83やカ
セットテープ86の磁気記録媒体やCD−ROM84等
の光ディスクの他、ROM85等のメモリ装置などのコ
ンピュータ読みとり可能な記録媒体に記録することがで
きる。この場合には、このソフトウェアを記録した記録
媒体を、コンピュータ本体80のフロッピーディスクド
ライブ81、CD−ROMドライブ82等のデバイスに
挿入することによって、プログラムをインストールした
り又はプログラムのバックアップ等を行うことができ
る。
【0073】このようなプログラムを記録した記録媒体
によれば、ISA仕様から自動的に検証プログラムを生
成しうるという有用なプログラムの保存、実行、運搬等
を簡便に行うことができ、検証プログラムの自動生成を
より容易なものとすることができる。
【0074】
【発明の効果】以上説明したように、本発明によれば、
命令セットアーキテクチャ(ISA)から検証プログラ
ムの自動的生成に必要なデータが取得可能となり、検証
プログラムを自動生成することができる。
【0075】また、オーバーフロー等の例外動作を発生
しないオペランド値を自動生成することで純粋に命令の
動作を検証できる検証プログラムが生成できる。
【0076】また、オペランド値,演算結果が満たすべ
き条件式が、真偽の一方にしかならないかどうかをチェ
ックすることにより、ISA仕様のバグを検出すること
が可能となる。
【0077】また、検証プログラムにセルフチェック機
能を持たせることにより、命令レベルシミュレーターな
しでもレジスター・トランスファー・レベル(RTL)
の機能検証が可能となる。
【0078】また、検証プログラムの実行ステップ数を
具体的に算出できるので、検証プログラムの実行時間の
見積もり精度が高まる。
【0079】さらに、かかる方法を実現するためのプロ
グラムの保存、実行、運搬等が簡易、迅速になる。
【図面の簡単な説明】
【図1】本発明の検証プログラム自動生成方法の処理の
流れを示すフローチャートである。
【図2】第1実施形態における検証プログラム自動生成
装置の構成を示すブロック図である。
【図3】第1実施形態における検証プログラム自動生成
方法の処理の流れを示すフローチャートである。
【図4】第1実施形態において、例外動作を発生させな
いオペランド値の組が存在する範囲を示す図である。
【図5】第2実施形態における検証プログラム自動生成
装置の構成を示すブロック図である。
【図6】第2実施形態における検証プログラム自動生成
方法の処理の流れを示すフローチャートである。
【図7】第2実施形態において、例外動作を発生させな
いプログラムカウンタ値と分散値の組、オペランド値の
組が存在する範囲を示す図である。
【図8】本発明の実施形態において用いられる検証プロ
グラム自動生成プログラムを記録したコンピュータ読み
取り可能な記録媒体を説明するための図である。
【符号の説明】
221,222,223,321,322,323,3
24 パーサ 231,232,331,332 中間データ生成手段 251,351 オペランド値情報生成手段 252,352 テンプレート生成手段 261,361 オペランド値情報データベース 262,362 テンプレートデータベース 271,371 検証プログラム生成手段
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成12年11月20日(2000.11.
20)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0069
【補正方法】変更
【補正内容】
【0069】次に、第4実施形態について説明する。第
4実施形態は、検証プログラムの実行時間の見積もりに
関するものである。

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 プロセッサに実装された命令が仕様どお
    りの機能を有するかを検証する検証プログラムの自動生
    成方法であって、 前記プロセッサの命令セットアーキテクチャ(ISA)
    仕様を解析するISA仕様解析ステップと、 検証プログラムの生成に必要なデータを作成する検証プ
    ログラム生成データ作成ステップと、 前記データを用いて検証プログラムを生成する検証プロ
    グラム生成ステップとを有することを特徴とする検証プ
    ログラム自動生成方法。
  2. 【請求項2】 前記ISA仕様解析ステップは、オペラ
    ンド情報,動作記述及びニーモニックから、検証の対象
    となるプロセッサに例外動作を起こさせないために、ソ
    ースオペランド値及び命令実行結果のそれぞれが満たす
    べき条件を決定するステップを含み、 前記検証プログラム生成データ作成ステップは、前記ソ
    ースオペランド値が満たすべき条件と前記命令実行結果
    が満たすべき条件の2つの条件をともに満たすソースオ
    ペランド値の組を生成するステップを含み、 前記検証プログラム生成ステップは、前記2つの条件を
    ともに満たすソースオペランド値を引数として検証の対
    象となる命令を展開するステップを含むことを特徴とす
    る請求項1記載の検証プログラム自動生成方法。
  3. 【請求項3】 前記ISA仕様解析ステップは、入力さ
    れるオペランド値が満たすべき条件式又は命令の演算結
    果が満たすべき条件式が、真又は偽のどちらか一方の値
    しか取り得ないかどうかをチェックするステップを含む
    ことを特徴とする請求項1乃至2記載の検証プログラム
    自動生成方法。
  4. 【請求項4】 前記検証プログラム自動生成方法は、さ
    らに、 検証対象プロセッサが正常に動作した場合に出力すべき
    期待値を生成し、前記期待値と前記検証対象プロセッサ
    が実際に出力した出力値とを比較する命令列を付記する
    比較命令列付記ステップを含むことを特徴とする請求項
    1乃至3記載の検証プログラム自動生成方法。
  5. 【請求項5】 前記検証プログラム自動生成方法は、さ
    らに、 検証の対象となる命令が分岐命令である場合に、分岐が
    生じない場合に実行される命令数と分岐が生じた場合に
    実行される命令数とをカウントする実行命令数カウント
    ステップと、 前記2つの条件を満たすソースオペランド値の組の内、
    分岐を生じさせないソースオペランド値の組数と、分岐
    を生じさせるソースオペランド値の組数とをカウントす
    る非分岐/分岐数カウントステップと、 前記分岐が生じない場合に実行される命令数に前記分岐
    を生じさせないソースオペランド値の組数を乗じた値
    と、前記分岐が生じた場合に実行される命令数に前記分
    岐を生じさせるソースオペランド値の組数を乗じた値と
    の和を求めるステップとを含むことを特徴とする請求項
    1乃至4記載の検証プログラム自動生成方法。
  6. 【請求項6】 前記プロセッサの命令セットアーキテク
    チャ(ISA)仕様を解析するISA仕様解析ステップ
    と、 検証プログラムの生成に必要なデータを作成する検証プ
    ログラム生成データ作成ステップと、 前記データを用いて検証プログラムを生成する検証プロ
    グラム生成ステップと、を含みこれらの処理をコンピュ
    ータに実行させることを特徴とする検証プログラム自動
    生成プログラムを記録したコンピュータ読み取り可能な
    記録媒体。
JP37586099A 1999-12-28 1999-12-28 検証プログラム自動生成方法及び検証プログラム自動生成プログラムを記録したコンピュータ読み取り可能な記録媒体 Pending JP2001188691A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP37586099A JP2001188691A (ja) 1999-12-28 1999-12-28 検証プログラム自動生成方法及び検証プログラム自動生成プログラムを記録したコンピュータ読み取り可能な記録媒体
US09/749,548 US6611779B2 (en) 1999-12-28 2000-12-28 Automatic test vector generation method, test method making use of the test vectors as automatically generated, chip manufacturing method and automatic test vector generation program
US10/391,750 US6845335B2 (en) 1999-12-28 2003-03-20 Automatic test vector generation method, test method making use of the test vectors as automatically generated, chip manufacturing method and automatic test vector generation program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP37586099A JP2001188691A (ja) 1999-12-28 1999-12-28 検証プログラム自動生成方法及び検証プログラム自動生成プログラムを記録したコンピュータ読み取り可能な記録媒体

Publications (1)

Publication Number Publication Date
JP2001188691A true JP2001188691A (ja) 2001-07-10

Family

ID=18506180

Family Applications (1)

Application Number Title Priority Date Filing Date
JP37586099A Pending JP2001188691A (ja) 1999-12-28 1999-12-28 検証プログラム自動生成方法及び検証プログラム自動生成プログラムを記録したコンピュータ読み取り可能な記録媒体

Country Status (2)

Country Link
US (2) US6611779B2 (ja)
JP (1) JP2001188691A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7062400B2 (en) 2003-11-27 2006-06-13 Kabushiki Kaisha Toshiba Apparatus and program for designing system LSI, and method for verifying integrity of the program for designing system LSI

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7366951B2 (en) * 2002-05-24 2008-04-29 Fujitsu, Limited Method and apparatus for test program generation based on an instruction set description of a processor
CN1567222A (zh) * 2003-07-09 2005-01-19 松下电器产业株式会社 程序生成装置
US20050050524A1 (en) * 2003-08-25 2005-03-03 Arm Limited Generating software test information
US20060150154A1 (en) * 2004-12-06 2006-07-06 Arm Limited Test program instruction generation
US20060195681A1 (en) * 2004-12-06 2006-08-31 Arm Limited Test program instruction generation
US7853903B1 (en) * 2006-04-03 2010-12-14 Cadence Design Systems, Inc. Method and mechanism for performing simulation off resolution proof
US7992059B2 (en) 2007-09-11 2011-08-02 International Business Machines Corporation System and method for testing a large memory area during processor design verification and validation
US8006221B2 (en) 2007-09-11 2011-08-23 International Business Machines Corporation System and method for testing multiple processor modes for processor design verification and validation
US8019566B2 (en) * 2007-09-11 2011-09-13 International Business Machines Corporation System and method for efficiently testing cache congruence classes during processor design verification and validation
US8099559B2 (en) * 2007-09-11 2012-01-17 International Business Machines Corporation System and method for generating fast instruction and data interrupts for processor design verification and validation
US20090070570A1 (en) * 2007-09-11 2009-03-12 Shubhodeep Roy Choudhury System and Method for Efficiently Handling Interrupts
JP2010002370A (ja) * 2008-06-23 2010-01-07 Fujitsu Ltd パターン抽出プログラム、方法及び装置
US20110087861A1 (en) * 2009-10-12 2011-04-14 The Regents Of The University Of Michigan System for High-Efficiency Post-Silicon Verification of a Processor
US8683282B2 (en) * 2011-03-01 2014-03-25 International Business Machines Corporation Automatic identification of information useful for generation-based functional verification
JP5983362B2 (ja) * 2012-11-29 2016-08-31 富士通株式会社 試験方法、試験プログラム、および、試験制御装置
CN103678075B (zh) * 2013-12-27 2018-04-06 北京自动测试技术研究所 基于自动矢量生成技术的复杂微处理器测试方法
US10438682B2 (en) * 2017-12-21 2019-10-08 International Business Machines Corporation List insertion in test segments with non-naturally aligned data boundaries
CN111665709B (zh) * 2020-06-29 2021-10-15 北京东方计量测试研究所 广域空间内统一时间的方法和空间守时系统
US11550980B1 (en) * 2021-06-14 2023-01-10 Cadence Design Systems, Inc. System and method for generating power-aware electronics

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63300333A (ja) * 1987-05-30 1988-12-07 Nec Corp プログラムの命令実行数測定方式
JPH02244338A (ja) * 1989-03-17 1990-09-28 Hitachi Ltd データ処理装置の試験方式
JPH05120055A (ja) * 1991-10-24 1993-05-18 Nec Corp テストパタン発生装置
JPH06259245A (ja) * 1993-03-05 1994-09-16 Hitachi Ltd プログラムの性能測定装置およびその方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4542456A (en) * 1982-04-28 1985-09-17 At&T Bell Laboratories Method and apparatus for performing range checks
US4652992A (en) * 1983-09-20 1987-03-24 Mensch Jr William D Topography of integrated circuit CMOS microprocessor chip
US5524250A (en) * 1991-08-23 1996-06-04 Silicon Graphics, Inc. Central processing unit for processing a plurality of threads using dedicated general purpose registers and masque register for providing access to the registers
JP3500633B2 (ja) * 1992-02-07 2004-02-23 セイコーエプソン株式会社 マイクロエレクトロニクス・デバイスのエミュレーション方法及びエミュレーション装置並びにシミュレーション装置
US5596734A (en) * 1993-12-17 1997-01-21 Intel Corporation Method and apparatus for programming embedded memories of a variety of integrated circuits using the IEEE test access port
US6070252A (en) * 1994-09-30 2000-05-30 Intel Corporation Method and apparatus for interactive built-in-self-testing with user-programmable test patterns
US5668947A (en) * 1996-04-18 1997-09-16 Allen-Bradley Company, Inc. Microprocessor self-test apparatus and method
US5898705A (en) * 1996-12-23 1999-04-27 Lsi Logic Corporation Method for detecting bus shorts in semiconductor devices
US6115763A (en) * 1998-03-05 2000-09-05 International Business Machines Corporation Multi-core chip providing external core access with regular operation function interface and predetermined service operation services interface comprising core interface units and masters interface unit
US6158032A (en) * 1998-03-27 2000-12-05 International Business Machines Corporation Data processing system, circuit arrangement and program product including multi-path scan interface and methods thereof
US6055623A (en) * 1998-04-07 2000-04-25 International Business Machine Corporation Specialized millicode instruction for editing functions
US6055624A (en) * 1998-04-07 2000-04-25 International Business Machines Corporation Millicode flags with specialized update and branch instructions
US6298365B1 (en) * 1999-02-24 2001-10-02 International Business Machines Corporation Method and system for bounds comparator

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63300333A (ja) * 1987-05-30 1988-12-07 Nec Corp プログラムの命令実行数測定方式
JPH02244338A (ja) * 1989-03-17 1990-09-28 Hitachi Ltd データ処理装置の試験方式
JPH05120055A (ja) * 1991-10-24 1993-05-18 Nec Corp テストパタン発生装置
JPH06259245A (ja) * 1993-03-05 1994-09-16 Hitachi Ltd プログラムの性能測定装置およびその方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7062400B2 (en) 2003-11-27 2006-06-13 Kabushiki Kaisha Toshiba Apparatus and program for designing system LSI, and method for verifying integrity of the program for designing system LSI

Also Published As

Publication number Publication date
US6611779B2 (en) 2003-08-26
US6845335B2 (en) 2005-01-18
US20030195715A1 (en) 2003-10-16
US20010007970A1 (en) 2001-07-12

Similar Documents

Publication Publication Date Title
JP2001188691A (ja) 検証プログラム自動生成方法及び検証プログラム自動生成プログラムを記録したコンピュータ読み取り可能な記録媒体
Flur et al. Modelling the ARMv8 architecture, operationally: Concurrency and ISA
US8683441B2 (en) Software equivalence checking
Jones Symbolic simulation methods for industrial formal verification
US20180068121A1 (en) Automated reverse engineering
Gupta et al. Toward formalizing a validation methodology using simulation coverage
CN111104335B (zh) 一种基于多层次分析的c语言缺陷检测方法及装置
Gleissenthall et al. {IODINE}: Verifying {Constant-Time} Execution of Hardware
JP2008176453A (ja) シミュレーション装置
US20150347639A1 (en) Sequential non-deterministic detection in hardware design
Atanassov et al. Using real hardware to create an accurate timing model for execution-time analysis
Velev Using Automatic Case Splits and Efficient CNF Translation to Guide a SAT-solver when Formally Verifying Out-Of-Order Processors.
JP2001273340A (ja) マイクロプロセッサの設計検証方法及びマイクロプロセッサの設計検証装置及びパイプラインシミュレータ生成装置
Hunt et al. Verifying the FM9801 microarchitecture
Corno et al. Code generation for functional validation of pipelined microprocessors
Hosabettu et al. Formal verification of a complex pipelined processor
Alizadeh Formal verification and debugging of precise interrupts on high performance microprocessors
Saan Witness generation for data-flow analysis
JP2000268074A (ja) 検証プログラム自動生成装置および方法並びにプロパティ自動生成装置および方法
Suryasarman et al. Rsbst: an accelerated automated software-based self-test synthesis for processor testing
US20180089341A1 (en) Self Equivalence in Hardware Designs
Jain et al. An efficient runtime validation framework based on the theory of refinement
DeVale High Performance Robust Computer Systems
Sri et al. A Holistic Approach to CPU Verification using Formal Techniques
Gharehbaghi et al. Formal verification guided automatic design error diagnosis and correction of complex processors

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041101

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050204

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050816