JPH0764815A - テストプログラムの生成方法 - Google Patents

テストプログラムの生成方法

Info

Publication number
JPH0764815A
JPH0764815A JP5215722A JP21572293A JPH0764815A JP H0764815 A JPH0764815 A JP H0764815A JP 5215722 A JP5215722 A JP 5215722A JP 21572293 A JP21572293 A JP 21572293A JP H0764815 A JPH0764815 A JP H0764815A
Authority
JP
Japan
Prior art keywords
level
instruction
information
test program
sequence
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.)
Withdrawn
Application number
JP5215722A
Other languages
English (en)
Inventor
Buraun Geerii
ブラウン ゲーリー
Jiro Miyake
二郎 三宅
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP5215722A priority Critical patent/JPH0764815A/ja
Publication of JPH0764815A publication Critical patent/JPH0764815A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

(57)【要約】 【目的】 マイクロプロセッサ設計の機能テスト段階で
使用し得る高品質のテストプログラムを自動生成する。 【構成】 ランダムな命令生成システムを用いたコンピ
ュータプログラムにより機能テストのためのプログラム
を生成する。命令生成システムは、命令、命令カテゴリ
ー、シーケンス及び機能という4つの抽象レベルを使用
して命令を作成する(ステップ56,57,59,6
0)。命令を選択するためにどのレベルを選ぶかに応じ
て(ステップ55)、複雑なシーケンスを含んだテスト
プログラムが生成される。この際、ステップ56,5
7,59,60の各々において対象の選択に乱数が利用
される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、マイクロプロセッサの
機能性を検証するために使用されるテストプログラムの
生成方法に関するものである。
【0002】
【従来の技術】マイクロプロセッサやそれと同様に複雑
な超大規模集積回路(VLSI)装置を設計する場合、
まずマイクロプロセッサのレジスタレベルの機能に相当
する機能モデルが設計される。この機能モデルをテスト
するためには、設計者によってあるいは前記機能モデル
に対応するアーキテクチャ・モデルによって特定される
ように、該機能モデルが正しく機能することが確認され
なければならない。通常、前記機能モデルのシミュレー
ションに用いられるプログラムは、人手によって作成さ
れたものであった。
【0003】過去10年間、マイクロプロセッサ技術の
急速な進歩と複雑化に伴い、マイクロプロセッサのため
の各種の新しいテスト方法が報告されている。その大部
分は機能テスト方法に関するものであり、この方法はマ
イクロプロセッサのユーザーが知り得る情報(例えば、
マイクロプロセッサの命令セット)のみを使用してい
る。
【0004】Thatte, S. M. and J.A. Abraham, "Test
Generation for Microprocessors",IEEE Transactions
on Computers, Vol. C-29, No. 6, June 1980, pp. 429
-441 などの文献によれば、機能テストは非常に信頼性
の高いことがわかっている。また、ランダムな命令生成
系を利用する方法は、マイクロプロセッサを機能レベル
でテストする場合に低コストかつ有効である。エラー検
出のコスト及び処理速度は、ランダムに生成されたテス
トベクトルやテストプログラムを使用するに値する。Kl
ug, H., "Microprocessor Testing by Instruction Seq
uences Derivedfrom Random Patterns", 1988 Internat
ional Test Conference, Paper 4.2, pp. 73-70によれ
ば、ランダムなバイナリパターンを生成し、かつそれを
命令名(mnemonic)へ翻訳するという手順で生成された
テストプログラムのための命令シーケンスは、機能テス
トと等価である。
【0005】
【発明が解決しようとする課題】機能レベルテストの一
般的な過程において、該テストをいかに早く終了させ得
るか、また機能モデル中のエラーの有無をいかにうまく
確認し得るかは、テストプログラムの生成に費やされる
時間にかかっている。
【0006】ところが、上記従来のテストプログラム生
成方法は、次のような問題を有していた。 (1) 機能モデルは数に限りのある手書きプログラムを用
いてテストされるので、そのプログラムでは発見できな
いエラーを含んでいるおそれがある。 (2) 機能レベルでのテストプログラムの自動生成におい
て手書きプログラムの場合と同等の命令間の複雑な関係
を作り出すことは不可能であった。 (3) 機能レベルのテストプログラムを人手で作成するの
に多くの時間が費やされる結果、機能テストに長期間を
必要とした。短期間に作成できるテストプログラム数や
テストシーケンスの種類が限られていたからである。 (4) マイクロプロセッサのアーキテクチャに新たな変化
があるたびに、テストプログラムの全体を新たに書き起
こさなければならなかった。
【0007】以上のとおり、ランダムな方法を用いた従
来のテストの有効性は、正確なアーキテクチャ設計のシ
ミュレーションに対してマイクロプロセッサの全ての機
能が検証されることを必要とするマイクロプロセッサの
機能レベルの設計には通用しないという問題があった。
【0008】本発明の目的は、マイクロプロセッサ設計
の機能テスト段階で使用し得る高品質のテストプログラ
ムを自動的に生成できるようにすることにある。
【0009】
【課題を解決するための手段】複雑な命令シーケンスを
生成する際の上記問題を解決するために本発明が採用し
た手段は、4つの抽象レベルを有する階層システムであ
る。ここに、レベル1は命令を、レベル2は命令タイプ
(命令カテゴリー)を、レベル3はシーケンスを、レベ
ル4は機能をそれぞれ選択対象として含んでいる。本発
明では、少なくともこれら4つのレベルを備えた階層的
情報を利用して命令をランダムに選択することにより、
テストプログラムを生成することとした。
【0010】具体的に説明すると、請求項1の発明に係
るテストプログラムの生成方法は、次の3つのステップ
を備えることとしたものである。すなわち、第1のステ
ップは、各々1種類の対象を含んだ命令レベル、命令タ
イプレベル、シーケンスレベル及び機能レベルという少
なくとも4つのレベルを備えた階層的情報と、該階層的
情報の各レベルが選択される頻度に関する情報を含んだ
入力とを参照するステップである。ここに、命令レベル
は命令名と命令情報とオペランド情報とを有する命令
を、命令タイプレベルは命令で構成されたカテゴリーの
名称としての命令タイプを、シーケンスレベルは命令タ
イプの組み合わせとしてのシーケンスを、機能レベルは
該シーケンスのうちの関連するシーケンスで構成された
カテゴリーの名称としての機能をそれぞれ各レベルの対
象とする。第2のステップは、第1のステップで参照さ
れた入力の情報に応じて階層的情報のレベルを選択する
ステップである。第3のステップは、乱数と第2のステ
ップで選択されたレベルの対象とを使用しながら、1つ
の命令が選択されるまで前記階層的情報の関連する下位
レベルから対象を選択するステップである。
【0011】請求項2の発明では、前記第1のステップ
は、前記階層的情報内の関連するレベルから特定の対象
を選択するための情報を更に含んだ入力を参照するステ
ップを備えることとした。
【0012】請求項3の発明は、特定の対象に関するエ
ラーが発見された場合には該特定の対象に関する詳細テ
ストを実行できるように、前記特定の対象が選択される
頻度を高く設定するステップを更に備えることとしたも
のである。
【0013】請求項4の発明は、テストプログラムの一
部として予め定められた命令を生成するステップを更に
備えることとしたものである。
【0014】請求項5の発明では、前記予め定められた
命令を生成するステップは、テストプログラムに無限ル
ープが生じることを防ぐように所定の命令シーケンスを
使用するステップを備えることとした。
【0015】請求項6の発明では、前記第1のステップ
は、命令に必要なオペランドの種類を記述した情報と、
命令が特権命令であるか否かの情報と、命令がプロセス
状態レジスタの条件コードを変え得るか否かの情報とを
有する命令レベルの情報を参照するステップを備えるこ
ととした。
【0016】請求項7の発明は、命令とともに前記階層
的情報内に与えられたオペランドに関する情報に基づい
て各命令用の特定種類のオペランドを選択するステップ
と、最新に使用されたオペランドを入力パラメータによ
って示された頻度で選択するステップとを更に備えるこ
ととしたものである。
【0017】請求項8の発明では、前記最新に使用され
たオペランドを選択するステップは、次のようなレジス
タ表と入力情報とに応じてオペランドを選択するステッ
プを備えることとした。すなわち、レジスタ表は、各種
レジスタのリストと、各種レジスタに関する選択可能な
レジスタ番号のリストと、各種レジスタに関する最新に
選択されたレジスタ番号の記録とを備えたものである。
入力情報とは、最新に選択されたレジスタ番号と同じ番
号を有するレジスタが選択される頻度に関する情報であ
る。
【0018】請求項9の発明に係る入力ファイルは、上
記テストプログラムの生成のための命令レベル、命令タ
イプレベル、シーケンスレベル及び機能レベルという少
なくとも4つのレベルを備えた階層的情報の各レベルが
選択される頻度に関する情報を備えたものである。ここ
に、命令レベルは命令名と命令情報とオペランド情報と
を有する命令を、命令タイプレベルは命令で構成された
カテゴリーの名称としての命令タイプを、シーケンスレ
ベルは命令タイプの組み合わせとしてのシーケンスを、
機能レベルは該シーケンスのうちの関連するシーケンス
で構成されたカテゴリーの名称としての機能をそれぞれ
各レベルの対象とする。
【0019】請求項10の発明では、前記階層的情報内
の関連するレベルから特定の対象が選択される頻度に関
する情報を更に備えた入力ファイルの構成を採用するこ
ととした。
【0020】請求項11の発明に係るテストプログラム
の生成方法は、次の3つのステップを備えることとした
ものである。すなわち、第1のステップは、各々1種類
の対象を含んだ命令レベル、命令タイプレベル、シーケ
ンスレベル及び機能レベルという少なくとも4つのレベ
ルを備えた階層的情報と、前記対象のうちのいずれの対
象がいかなる順序で選択されるかに関する情報を含んだ
入力とを参照するステップである。ここに、命令レベル
は命令名と命令情報とオペランド情報とを有する命令
を、命令タイプレベルは命令で構成されたカテゴリーの
名称としての命令タイプを、シーケンスレベルは命令タ
イプの組み合わせとしてのシーケンスを、機能レベルは
該シーケンスのうちの関連するシーケンスで構成された
カテゴリーの名称としての機能をそれぞれ各レベルの対
象とする。第2のステップは、第1のステップで参照さ
れた入力の情報に応じて前記階層的情報内の対象を選択
するステップである。第3のステップは、乱数と第2の
ステップで選択されたレベルの対象とを使用しながら、
1つの命令が選択されるまで前記階層的情報の関連する
下位レベルから対象を選択するステップである。
【0021】請求項12の発明に係るテストプログラム
の生成方法は、次の3つのステップを備えることとした
ものである。すなわち、第1のステップは、各々1種類
の対象を含んだn個のレベルを備えた階層的情報と、該
階層的情報の各レベルが選択される頻度に関する情報を
含んだ入力とを参照するステップである。ここに、レベ
ル1は命令を対象とし、レベル2は命令タイプを対象と
し、レベル3はレベル2の対象のシーケンスを対象と
し、レベル4はレベル3の対象のタイプを対象とし、レ
ベルkはレベルk−1の対象のタイプを対象とし、レベ
ルnはレベルn−1の対象のタイプを対象とする。第2
のステップは、第1のステップで参照された入力の情報
に応じて階層的情報のレベルを選択するステップであ
る。第3のステップは、乱数と第2のステップで選択さ
れたレベルの対象とを使用しながら、1つの命令が選択
されるまで前記階層的情報の関連する下位レベルから対
象を選択するステップである。
【0022】
【作用】請求項1〜8の発明によれば、機能レベルのテ
ストプログラムをコンピュータで自動生成できるので、
従来の手書き方法に比べてテストプログラムの生成速度
が向上する。また、命令のシーケンス情報を用いること
によって複雑な命令関係を作り上げることができるの
で、自動的に生成されたテストプログラムで複雑な機能
をテストすることができる結果、一般的な機能テストの
処理速度が向上する。命令一覧表とシーケンス一覧表と
を採用すれば、新たなコンピュータ・アーキテクチャに
容易に対応できる。更に、階層の各レベルが選択される
頻度と、その選択に加えてなされる特定対象の選択とに
関する情報を含んだ入力データを参照することができる
ので、ユーザーにとって有益な機能をテストする特定の
命令シーケンスを作成することができる。また、請求項
1の発明は、手書きの場合には生成できない命令シーケ
ンスを生成し得るランダムな命令生成システムをも含ん
でいる。
【0023】請求項9及び10の発明によれば、請求項
1〜8の発明に係るテストプログラムの生成方法の実施
に利用されるべき入力情報が提供される。
【0024】請求項11の発明によれば、階層内の対象
が特定の順序で選択されるようにしてテストプログラム
を生成することができる。すなわち、入力情報中の対象
の特定の連なりによって、対象の選択順序が決まるので
ある。これにより、様々な選択の可能性を有する非常に
特殊なテストプログラムを生成することができる。した
がって、複雑な命令関係を作成できる長所と相まって、
多数の有益なテストプログラムを生成することができ
る。
【0025】複雑な機能モデルについては、4レベルを
越える多階層が有効である。ユーザーに何をテストした
いかを指定させることができる。請求項12の発明は、
そのためのn個のレベルの階層的情報を採用した手段を
含んでおり、該n個のレベルはテストプログラムの基本
要素に対応したものである。例えば、命令、命令タイプ
(命令カテゴリー)、シーケンス、機能、機能タイプと
いう5個のレベルが採用される。
【0026】以上のように、本発明によれば、いかなる
長さのテストプログラムをも、従来の方法に比べてより
短時間で、しかも複雑な命令関係を命令シーケンス中に
出現させながら生成することができる。
【0027】
【実施例】以下、本発明のテストプログラムの生成方法
の基本原理について述べる。
【0028】このテストプログラムの生成方法は、テス
トされるマイクロプロセッサのアーキテクチャに基づい
たユーザー入力ファイルと階層的情報ファイルとを読み
取るコンピュータプログラムによって遂行される。
【0029】階層的情報は、図3(a)及び図3(b)
に示すような2つの一覧表(命令一覧表及びシーケンス
一覧表)内に蓄積されている。これらの一覧表には、テ
ストプログラムで使用可能な命令のリスト31と、命令
が容易に見い出され得るように書き込まれた命令カテゴ
リーのリスト32と、命令カテゴリーの特定の組み合わ
せを含んだシーケンスのリスト33と、シーケンスが容
易に見い出され得るように書き込まれた機能のリスト3
4とが含まれている。このうちシーケンスのリスト33
は、命令カテゴリーのリスト32内に存在する命令カテ
ゴリーのみで構成される。
【0030】図4は入力情報の基本フォーマットを、図
8はその詳細フォーマットを示す。図4中の41は、機
能、シーケンス、命令カテゴリー及び命令の4レベルか
らなる階層的な抽象レベルのリストである。42は、各
レベルの選択率を表わしている。図8において、81
は、図4の入力一覧表にも41で示された階層的な抽象
レベルのリストである。各階層は、特定の選択肢と、各
選択肢の選択率とを含んでいる。例えば82は、機能レ
ベルの下に配列された特定機能の選択肢である。83
は、機能選択肢の全体数に対する各選択肢の選択割合を
示す特定機能の選択率(%)である。図8に示す例で
は、命令カテゴリーのレベルに属する1つの選択肢の選
択率(%)84が100の場合、命令カテゴリーレベル
が選ばれると該選択肢が必ず選択されることを意味す
る。
【0031】上記テストプログラムは、開発されたマイ
クロプロセッサの機能性を検証するために使用される実
行可能なアセンブリ言語プログラムを生成するようにな
っている。
【0032】図3(a)及び図3(b)に示す階層的情
報は、2個のファイルの形で記憶ユニット内に格納され
ており、対象マイクロプロセッサの性能検証中には変化
しないようになっている。一方、記憶ユニット内で独自
のファイル(ユーザー入力ファイル)として存在する上
記入力情報は変化する。これにより、多くのテストプロ
グラムが生成され得る。
【0033】ユーザーは、上記3個のファイルを用いた
テスト生成のプログラムを実行することにより、対象マ
イクロプロセッサモデルの機能性を検証するためのテス
トプログラムを作成することができる。
【0034】多くのテストプログラムを生成し、生成し
たテストプログラムを図2に示す一般的な機能テスト手
順に従って実行することにより、数に限りある手書きプ
ログラムを使用する従来の方法に起因した問題を解決す
ることができる。
【0035】ここで、図2に示す機能テストの手順を説
明する。まず、ステップ21では、高いレベルのアセン
ブリ言語を用いて、手書きで又は自動的にテストプログ
ラムが生成される。ステップ22では、正確な機能的振
る舞いを示す参照モデル上でテストが実行される。通
常、参照モデルは標準アーキテクチャの規則で定められ
ている。一方、ステップ23では、開発されたマイクロ
プロセッサの機能モデルを用いてテストが実行される。
この機能モデルにおける機能上のエラーは、次のステッ
プ24においてテスト結果を吟味する際に現れるように
なっている。ステップ24では、ステップ22及びステ
ップ23で各々実行されたテストプログラムの結果(出
力)が比較される。この際、ステップ23における機能
モデル内のいかなるエラーも出力上の相違として現れ
る。ステップ24で機能モデルのエラーが発見されなか
った場合には、機能テストを終了する。エラーが発見さ
れた場合には、ステップ25からステップ26へ進み、
該エラーを消去するように機能モデルの調整が行なわれ
る。
【0036】また、生成されたテストプログラムにおい
て複雑な命令関係を形成することができなかった従来の
機能性検証方法とは異なり、本発明のテストプログラム
生成方法では、テストプログラムの一部として予め定め
られた命令パターンによって複雑な命令関係を形成する
ことができる。該命令パターンの一例は、本発明の方法
により生成されたテストプログラムを示す図14中の先
頭の6行に示されている。そのパターンは "add, subc
c, beq, nop" のシーケンスであり、これはアセンブリ
言語で「加算,減算,0の場合は分岐,命令なし」を意
味する。このシーケンスは、ランダムに生成された分岐
命令がループを形成する場合に無限ループが発生するこ
とを防止するのに役立つ。この種の予め定められた命令
パターンを用いれば、マイクロプロセッサのアーキテク
チャに依存した特別な命令関係を形成することができ
る。
【0037】更に、テストプログラムが短時間で生成さ
れるので、マイクロプロセッサ開発の機能テスト段階を
スピードアップさせることができる。
【0038】図1は、テストプログラム生成システムの
主な構成を示す。ユーザー入力ファイル11と階層的情
報ファイル12とは記憶ユニット20内に記憶されてお
り、読取りユニット13により両ファイル11,12中
の情報が読み取られる。レベル選択ユニット14は、前
記4つの階層的レベルのうち対象が検索されるべき1つ
のレベルをユーザー入力ファイル11中の情報に応じて
選択するものである。対象選択ユニット15は、レベル
選択ユニット14によって選択されたレベルから下位の
対象を選択する。対象は、階層的情報ファイル12を用
いてランダムに選択され、あるいはユーザー入力ファイ
ル11中に与えられたどの対象が選択されるべきかに関
する特定の情報を用いて選択される。最下位の対象すな
わち命令は、出力処理ユニット18へ転送される。オペ
ランド処理ユニット16は、対象選択ユニット14によ
って選択された命令のオペランドを階層的情報ファイル
12中の情報に従って選択する。固定シーケンス処理ユ
ニット17は、予め定められた特別なシーケンスを出力
する。例えば、無限ループがテストプログラム中に発生
することを防止するように、数個の命令からなるシーケ
ンスが使用される。出力処理ユニット18は、対象選択
ユニット15によって選択された命令及び固定シーケン
ス処理ユニット17より出力された命令からテストプロ
グラムを合成し、該合成したテストプログラムを出力フ
ァイル19として記憶ユニット20内に格納する機能を
備えている。
【0039】図5は、本発明に係るランダムな命令生成
方法の手順を示す。まずステップ51では、レジスタの
内容設定等のための初期化ルーチンを実行する。ステッ
プ52では、記憶ユニット20(図1)中のユーザー入
力ファイル11及び階層的情報ファイル12からデータ
が読み取られる。読み取られたデータは、以下の処理の
各段階で使用される。ステップ53では、生成されるべ
きテストプログラムの長さを決定するカウンタがセット
される。ステップ54では、例えば無限ループがテスト
プログラム中に発生することを防止するための予め定め
られた固定シーケンスが生成される。
【0040】ステップ55では、4つの階層的レベルの
中からユーザー入力情報を使用して1つのレベルが選択
される。これによりステップ56,57,59,60で
レベル毎の適切な動作が実行されるようになっている。
ステップ56では、図3(b)のシーケンス一覧表の中
から1つの機能がランダムに選択される。ステップ57
では、同シーケンス一覧表の中から1つのシーケンスが
ランダムに選択される。ステップ58では、シーケンス
が使用中であることを表示するシーケンスインジケータ
がセットされる。ステップ59では、図3(a)の命令
一覧表の中から1つの命令カテゴリーがランダムに選択
される。ステップ60では、同命令一覧表の中から1つ
の命令がランダムに選択される。シーケンスインジケー
タがセットされている場合には、ステップ61からステ
ップ62へ進み、ステップ57で選択されたシーケンス
内の次の命令カテゴリーが走査される。処理されるべき
命令カテゴリーが残っている場合には、ステップ63か
らステップ59へ戻る。
【0041】ステップ55において機能レベル又はシー
ケンスレベルが選択された場合には、ステップ59から
ステップ63までのループが繰り返し実行され、ステッ
プ57で選択されたシーケンス内の全ての命令カテゴリ
ーの処理が完了した時点でステップ63からステップ6
4へ進む。ステップ55において命令カテゴリーレベル
又は命令レベルが選択された場合には、ステップ58に
おけるシーケンスインジケータのセットが実行されない
ので、ステップ61から直ちにステップ64へ進む。ス
テップ64では、詳細を後述するオペランド処理が実行
される。ステップ65では、ステップ53でセットされ
たカウンタがデクリメントされる。デクリメントの結果
カウンタが0になった場合には命令の生成を終了する
が、0でない場合にはステップ66からステップ55へ
戻る。なお、ステップ54に示す固定シーケンスの生成
処理は、ステップ55からステップ66に至るループ中
で実行することもできる。
【0042】前記のとおり、ステップ53でセットされ
るカウンタは、生成されるべきテストプログラムの長さ
を決定するものである。図13は、ユーザー入力ファイ
ルの具体例を示す。図13の例では、Blocks low, Bl
ocks high, Sects low, Sects highにそれぞれ対応
する4個の数値が使用されている。テストプログラムに
おいて使用される命令ブロックの数は、命令ブロックの
最小値Blocks low 及びその最大値Blocks highに基づ
いてランダムに決定される。また、各命令ブロックに含
まれるセクションの数は、セクションの最小値 Sects
low 及びその最大値 Sects highに基づいてランダムに
決定される。
【0043】図13中のDependencyという表示は、本例
では30に設定されているが、生成される命令のための
オペランドを決定する際に使用される数値である。この
Dependency表示は、後述するように、各決定がなされる
際に新しいレジスタが選択される確率に関するものであ
る。記号Pn は、特権命令が使用されないことを意味す
る。ある命令が特権命令であるか否かは命令情報の中に
含まれている。また、記号Fnotrap は、各浮動小数点命
令によって生じるトラップを防止するための特定の命令
シーケンスが生成されるべきか否かを示す。
【0044】更に、ユーザー入力ファイルは、いかなる
対象がいかなる順序で選択されるかに関する正確な情報
を含んでいてもよい。その情報は、例えば1つの長い命
令シーケンスでもよいし、連続した複数の命令シーケン
スでもよい。この方法を採用すれば、ユーザー入力ファ
イル中に与えられたシーケンスと同じシーケンスで生成
された命令を含むテストプログラムを作成することがで
きる。
【0045】図5中のレベル選択ステップ(ステップ5
5)では、乱数が利用される。図13の例は、機能レベ
ル(レベル1)、シーケンスレベル(レベル2)、命令
カテゴリーレベル(レベル3)及び命令レベル(レベル
4)がそれぞれ95%、5%、0%及び0%の確率で選
択されるべきことを示している。具体的には、1と10
0との間の乱数が生成され、生成された乱数が1と5と
の間の数値である場合にはシーケンスレベルが選択さ
れ、5と100との間の数値である場合には機能レベル
が選択されるのである。
【0046】図13の例では、機能レベルが選択される
と、唯一の特定機能選択肢であるalu-branchが選択され
る。>100という表示は、alu-branchの選択率(図8
の一般的入力フォーマット参照)が100%であること
を意味している。
【0047】シーケンス一覧表の一部を示す図12に
は、load-store、alu-branch及びaluという機能のリス
トと、各機能に属するシーケンスのリストとが例示され
ている。上記のように特定の機能alu-branchが選択され
た場合には、12個のシーケンスを含んだ対応シーケン
スリストの中から1個のシーケンスがランダムに選択さ
れる。1個のシーケンスは必ずしも8個のカテゴリー長
を有しないので、図12中にはブラックスペースを表わ
すハイフンが用いられている。alu-branchの最初のシー
ケンスである"iarith bicc - - - - - -" が選択された
と仮定すると、シーケンスインジケータがセットされ、
最初の命令カテゴリーであるiarithが選択される。
【0048】命令一覧表の一部を示す図11には、loa
d、store 、logic 、shift 及びiarithという命令カテ
ゴリーのリストと、各命令カテゴリーに属する命令のリ
ストとが例示されている。上記のように特定の命令カテ
ゴリーiarithが選択された場合には、7個の命令を含ん
だ対応命令リストの中から1つの命令がランダムに選択
される。このようにして命令カテゴリーiarithに属する
1つの命令が選択(生成)されると、テストプログラム
内の次の命令に移る。
【0049】選択された前記シーケンス"iarith bicc -
- - - - -" 内の次の命令カテゴリーはbiccである。同
様にして、biccの下に配列された命令(不図示)のうち
の1つが選択される。そして、以上の手順の繰り返しに
より1つのテストプログラムが生成される。生成された
テストプログラムの例を図14に示す。
【0050】図6は、図5において1つの命令又は命令
シーケンスが選択された後に実行されるオペランド処理
ステップ64の詳細手順を示す。選択された命令の各々
は、1組の対応オペランド情報を持っている。このオペ
ランド情報は、まず各命令にとっていかなるオペランド
が必要であるかを決定するために使用される(ステップ
71)。この情報に基づき、アドレスオペランドが選択
され(ステップ72)、あるいはレジスタオペランドが
選択される(ステップ73,74)。図11には、アド
レスオペランドとして“[Add]”が、レジスタオペ
ランドの例として“Rrd”、“Rsl”などが示され
ている。レジスタオペランドの場合には、オペランド情
報により、まずレジスタの種別が選択される(ステップ
73)。その後、図7(a)及び図7(b)を用いて説
明するアルゴリズムに従って、レジスタ番号が選定され
る(ステップ74)。
【0051】選択された命令のためのレジスタオペラン
ドは、以下に説明する方法に従って選定される。本実施
例では、入力(i)、出力(o)、ローカル(l)、グ
ローバル(g)及び浮動小数点(fp)という5種類の
レジスタが使用されるものとする。図7(a)は、初期
化されたレジスタ表を示す。このレジスタ表中の各列
は、5種類のレジスタi,o,l,g,fpの各々に対
応しており、それぞれレジスタ番号が0から最大数まで
小さい順に並ぶように初期化される。例えばレジスタi
を表わす列のレジスタ番号は0,1,2,…,7に初期
化され、レジスタfpを表わす列のレジスタ番号は0,
1,2,…,31に初期化される。
【0052】各命令ブロックの冒頭において、5列全て
のレジスタ番号が各列毎にランダムに並べ変えられる。
また、いずれの番号のレジスタが現在使用中であるかを
示す「レジスタの選択」というデータが、全て0に設定
される。「レジスタの選択」の領域における0とは、各
列の最上位の要素すなわち各列の最上位に位置するレジ
スタ番号が使用中であることを意味する。
【0053】図7(b)は、プログラム実行中のレジス
タ番号表の状態を示している。「レジスタの選択」と名
付けられた5個の数字からなる部分は、5種類のレジス
タの各々について、いずれの番号のレジスタが現在使用
中であるかを示す。i(入力)レジスタにおける選択は
3であり、その列の4番目の要素、すなわちレジスタi
1である。この図では、また、レジスタo7,l2,g
0,fp15が更に指定されている。例えば、本実施例
のアルゴリスムでタイプi(入力)のオペランドの選択
を要求する命令が選択された場合、図7(b)を参照す
れば、「レジスタの選択」の領域中の指定によりレジス
タi1が選択される。
【0054】上記レジスタの選択は、インクリメントさ
れる場合とされない場合とがある。これは、ユーザー入
力ファイル中の"Dependency"インジケータの値とランダ
ムな決定との両者による。高いDependencyの値は、「レ
ジスタの選択」領域における数値が変わらず、したがっ
て同じレジスタが再び使用されるようなデータ依存状態
を作り出す確率が高いことを示している。Dependencyの
数値が例えば30であると仮定すると、「レジスタの選
択」の値は平均して約30%の時間は変化しない。現在
レジスタi1を指定している数値3がインクリメントさ
れると、次の命令ブロックの冒頭でレジスタ表がランダ
ムに並べ変えられる時点までは、i4が指示される。こ
のようにして、最新に使用されたレジスタがDependency
のパラメータによって決定された頻度で現れるように、
オペランドが選択される。
【0055】図9は、図8のように各階層レベルに特定
の選択肢を有するユーザー入力ファイルを採用した場合
のテストプログラム生成方法を示す。図5と比べて、図
9には特定の選択肢の処理のためのステップ(56a,
56b,57a,57b,59a,59b,60a,6
0b)が付加されている。ただし、図面の簡略化のため
に、図9では図5中のステップ51,52,54の図示
が省略されている。図9の方法によれば、ステップ55
における指定選択率に従ったレベル選択に加えて、ステ
ップ56b,57b,59b,60bにおいて特定選択
肢毎の選択率に従った対象の選択が実行される。
【0056】次に、命令の階層構造において6つのレベ
ルを使用するテストプログラム生成方法を、n個のレベ
ルの階層構造の特別な場合として説明する。マイクロプ
ロセッサの機能性が特に複雑な場合には、命令とシーケ
ンスは、前記4レベルの場合に比べてより複雑な階層関
係を必要とすることがあり得る。
【0057】例えば、6つのレベルの各々に次のような
名前を付けることができる。 レベル1:命令 例… load byte, load halfword, add, sub, mul, div,
add double レベル2:命令カテゴリー 例… load, store, logic, arithmetic レベル3:シーケンス 例… load-load-load-store レベル4:機能 例… load/store, alu, fpu, exception レベル5:機能カテゴリー 例… memory, bus, calculate, branch レベル6:機能カテゴリー集団 例… external, cpu core 前記4レベルの場合の命令レベル、命令カテゴリーレベ
ル、シーケンスレベル及び機能レベルの上位に、機能カ
テゴリーレベルと機能カテゴリー集団レベルとを付加し
たものである。ただし、各レベルの名称は、実際には、
上記テストプログラム生成方法に使用される階層的情報
を形成している各レベル間の関係ほど重要ではない。
【0058】load命令及びstore 命令の全てがload/sto
reという機能レベルに分類された場合には、この機能は
更にmemory関連の機能カテゴリー又はbus 関連の機能カ
テゴリーに統合されるようになっている。そして、その
機能カテゴリーを含む集団をexternalと名付けることに
よって cpu coreと区別される。
【0059】図10は、nレベルに一般化した場合のテ
ストプログラム生成方法を示す。ただし、図面の簡略化
のために、図10では図5中のステップ51,52,5
4の図示が省略されている。nレベルの場合を示す図1
0では、図5中の機能選択ステップ56がn−3個のス
テップ(56n,…,56k,…)に分割されている。
これらn−3個のステップは、例えば、機能選択ステッ
プに加えて機能カテゴリー選択ステップと機能カテゴリ
ー集団選択ステップとを含んでいる。
【0060】図10の方法によれば、前記4レベルの場
合と同じように、ステップ55で1つのレベルが選択さ
れ、そして単一の命令が選択されるまで引き続くレベル
で対象が選択される。ステップ55で例えばレベル6が
選択された場合には、externalという機能カテゴリー集
団、memoryという機能カテゴリー、load/storeという機
能、load-load-load-storeというシーケンスが順次選択
された後、該シーケンスの命令カテゴリー(例えばloa
d)から命令が1つずつ選択されるという具合である。
【0061】
【発明の効果】以上説明してきたとおり、本発明によれ
ば、階層的情報を利用したランダムな命令生成システム
の採用により、テストプログラムの生成に要する時間の
問題と、生成されるテストプログラムの質の問題とを同
時に解決することができる。
【図面の簡単な説明】
【図1】本発明のテストプログラム生成方法を実現する
ためのシステム構成を示すブロック図である。
【図2】従来の一般的な機能テストの手順を示すフロー
チャート図である。
【図3】(a)は本発明の実施例で使用される命令一覧
表を示す図、(b)は同実施例で使用されるシーケンス
一覧表を示す図である。
【図4】本発明に係るランダムな命令生成方法で使用さ
れるユーザー入力ファイルの例を示す図である。
【図5】本発明に係るランダムな命令生成方法を示すフ
ローチャート図である。
【図6】図5中のオペランド処理の詳細手順を示すフロ
ーチャート図である。
【図7】(a)は命令がテストプログラム生成系で選択
される際にオペランドを選択するために使用されるレジ
スタ番号表の初期化状態を示す図、(b)はプログラム
実行中の同レジスタ番号表の状態を示す図である。
【図8】各階層レベルに特定の選択肢を有する入力ファ
イルの例を示す図である。
【図9】特定の選択を遂行するランダム選択方法のフロ
ーチャート図である。
【図10】n個のレベルの階層構造を有する場合のラン
ダム選択方法のフローチャート図である。
【図11】命令一覧表の具体例を示す図である。
【図12】シーケンス一覧表の具体例を示す図である。
【図13】ユーザー入力ファイルの具体例を示す図であ
る。
【図14】出力ファイルの具体例を示す図である。
【符号の説明】
11 ユーザー入力ファイル 12 階層的情報ファイル 13 読取りユニット 14 レベル選択ユニット 15 対象選択ユニット 16 オペランド処理ユニット 17 固定シーケンス処理ユニット 18 出力処理ユニット 19 出力ファイル 20 記憶ユニット 31 命令のリスト 32 命令カテゴリーのリスト 33 シーケンスのリスト 34 機能のリスト 81 抽象レベルのリスト 82 特定機能の選択肢 83 特定機能の選択率 84 特定の命令カテゴリーの選択率

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】 命令レベル、命令タイプレベル、シーケ
    ンスレベル及び機能レベルという少なくとも4つのレベ
    ルを備え、かつ前記命令レベルは命令名と命令情報とオ
    ペランド情報とを有する命令を、前記命令タイプレベル
    は前記命令で構成されたカテゴリーの名称としての命令
    タイプを、前記シーケンスレベルは前記命令タイプの組
    み合わせとしてのシーケンスを、前記機能レベルは前記
    シーケンスのうちの関連するシーケンスで構成されたカ
    テゴリーの名称としての機能をそれぞれ各レベルの対象
    とした階層的情報と、該階層的情報の各レベルが選択さ
    れる頻度に関する情報を含んだ入力とを参照する第1の
    ステップと、 前記第1のステップで参照された前記入力の情報に応じ
    て前記階層的情報のレベルを選択する第2のステップ
    と、 乱数と前記第2のステップで選択されたレベルの対象と
    を使用しながら、1つの命令が選択されるまで前記階層
    的情報の関連する下位レベルから対象を選択する第3の
    ステップとを備えたことを特徴とするテストプログラム
    の生成方法。
  2. 【請求項2】 請求項1記載のテストプログラムの生成
    方法において、 前記第1のステップは、前記階層的情報内の関連するレ
    ベルから特定の対象が選択される頻度に関する情報を更
    に含んだ入力を参照するステップを備えたことを特徴と
    するテストプログラムの生成方法。
  3. 【請求項3】 請求項2記載のテストプログラムの生成
    方法において、 特定の対象に関するエラーが発見された場合には、該特
    定の対象に関する詳細テストを実行できるように、前記
    特定の対象が選択される頻度を高く設定するステップを
    更に備えたことを特徴とするテストプログラムの生成方
    法。
  4. 【請求項4】 請求項1記載のテストプログラムの生成
    方法において、 テストプログラムの一部として予め定められた命令を生
    成するステップを更に備えたことを特徴とするテストプ
    ログラムの生成方法。
  5. 【請求項5】 請求項4記載のテストプログラムの生成
    方法において、 前記予め定められた命令を生成するステップは、テスト
    プログラムに無限ループが生じることを防ぐように所定
    の命令シーケンスを使用するステップを備えたことを特
    徴とするテストプログラムの生成方法。
  6. 【請求項6】 請求項1記載のテストプログラムの生成
    方法において、 前記第1のステップは、命令に必要なオペランドの種類
    を記述した情報と、命令が特権命令であるか否かの情報
    と、命令がプロセス状態レジスタの条件コードを変え得
    るか否かの情報とを有する命令レベルの情報を参照する
    ステップを備えたことを特徴とするテストプログラムの
    生成方法。
  7. 【請求項7】 請求項1記載のテストプログラムの生成
    方法において、 命令とともに前記階層的情報内に与えられたオペランド
    に関する情報に基づいて各命令用の特定種類のオペラン
    ドを選択するステップと、 最新に使用されたオペランドを入力パラメータによって
    示された頻度で選択するステップとを更に備えたことを
    特徴とするテストプログラムの生成方法。
  8. 【請求項8】 請求項7記載のテストプログラムの生成
    方法において、 前記最新に使用されたオペランドを選択するステップ
    は、 各種レジスタのリストと、各種レジスタに関する選択可
    能なレジスタ番号のリストと、各種レジスタに関する最
    新に選択されたレジスタ番号の記録とを備えたレジスタ
    表と、 最新に選択されたレジスタ番号と同じ番号を有するレジ
    スタが選択される頻度に関する情報とに応じてオペラン
    ドを選択するステップを備えたことを特徴とするテスト
    プログラムの生成方法。
  9. 【請求項9】 テストプログラムの生成のための階層的
    情報の各レベルが選択される頻度に関する情報を備えた
    入力ファイルであって、 前記階層的情報は、命令レベル、命令タイプレベル、シ
    ーケンスレベル及び機能レベルという少なくとも4つの
    レベルを備え、かつ前記命令レベルは命令名と命令情報
    とオペランド情報とを有する命令を、前記命令タイプレ
    ベルは前記命令で構成されたカテゴリーの名称としての
    命令タイプを、前記シーケンスレベルは前記命令タイプ
    の組み合わせとしてのシーケンスを、前記機能レベルは
    前記シーケンスのうちの関連するシーケンスで構成され
    たカテゴリーの名称としての機能をそれぞれ各レベルの
    対象としたことを特徴とする入力ファイル。
  10. 【請求項10】 請求項9記載の入力ファイルにおい
    て、 前記階層的情報内の関連するレベルから特定の対象が選
    択される頻度に関する情報を更に備えたことを特徴とす
    る入力ファイル。
  11. 【請求項11】 命令レベル、命令タイプレベル、シー
    ケンスレベル及び機能レベルという少なくとも4つのレ
    ベルを備え、かつ前記命令レベルは命令名と命令情報と
    オペランド情報とを有する命令を、前記命令タイプレベ
    ルは前記命令で構成されたカテゴリーの名称としての命
    令タイプを、前記シーケンスレベルは前記命令タイプの
    組み合わせとしてのシーケンスを、前記機能レベルは前
    記シーケンスのうちの関連するシーケンスで構成された
    カテゴリーの名称としての機能をそれぞれ各レベルの対
    象とした階層的情報と、前記対象のうちのいずれの対象
    がいかなる順序で選択されるかに関する情報を含んだ入
    力とを参照する第1のステップと、 前記第1のステップで参照された前記入力の情報に応じ
    て前記階層的情報内の対象を選択する第2のステップ
    と、 乱数と前記第2のステップで選択されたレベルの対象と
    を使用しながら、1つの命令が選択されるまで前記階層
    的情報の関連する下位レベルから対象を選択する第3の
    ステップとを備えたことを特徴とするテストプログラム
    の生成方法。
  12. 【請求項12】 n個のレベルを備え、かつレベル1は
    命令を対象とし、レベル2は命令タイプを対象とし、レ
    ベル3はレベル2の対象のシーケンスを対象とし、レベ
    ル4はレベル3の対象のタイプを対象とし、レベルkは
    レベルk−1の対象のタイプを対象とし、レベルnはレ
    ベルn−1の対象のタイプを対象とした階層的情報と、
    該階層的情報の各レベルが選択される頻度に関する情報
    を含んだ入力とを参照する第1のステップと、 前記第1のステップで参照された前記入力の情報に応じ
    て前記階層的情報のレベルを選択する第2のステップ
    と、 乱数と前記第2のステップで選択されたレベルの対象と
    を使用しながら、1つの命令が選択されるまで前記階層
    的情報の関連する下位レベルから対象を選択する第3の
    ステップとを備えたことを特徴とするテストプログラム
    の生成方法。
JP5215722A 1993-08-31 1993-08-31 テストプログラムの生成方法 Withdrawn JPH0764815A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5215722A JPH0764815A (ja) 1993-08-31 1993-08-31 テストプログラムの生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5215722A JPH0764815A (ja) 1993-08-31 1993-08-31 テストプログラムの生成方法

Publications (1)

Publication Number Publication Date
JPH0764815A true JPH0764815A (ja) 1995-03-10

Family

ID=16677102

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5215722A Withdrawn JPH0764815A (ja) 1993-08-31 1993-08-31 テストプログラムの生成方法

Country Status (1)

Country Link
JP (1) JPH0764815A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100621574B1 (ko) * 1999-07-07 2006-09-12 삼성전자주식회사 내장 시스템 소프트웨어 테스팅을 위한 테스트 드라이버 생성시스템

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100621574B1 (ko) * 1999-07-07 2006-09-12 삼성전자주식회사 내장 시스템 소프트웨어 테스팅을 위한 테스트 드라이버 생성시스템

Similar Documents

Publication Publication Date Title
US5488573A (en) Method for generating test programs
EP0453394B1 (en) Dynamic process for the generation of biased pseudo-random test patterns for the functional verification of hardware designs
US6684376B1 (en) Method and apparatus for selecting components within a circuit design database
Park et al. BLoG: Post-silicon bug localization in processors using bug localization graphs
US20100146420A1 (en) Gui testing
JPH02217926A (ja) コード生成方法
US20070168727A1 (en) Hole query for functional coverage analysis
US20050223346A1 (en) Random code generation using genetic algorithms
US5727187A (en) Method of using logical names in post-synthesis electronic design automation systems
US6611779B2 (en) 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
WO2008093224A2 (en) A system, method and software application for the generation of verification programs
US7523029B2 (en) Logic verification and logic cone extraction technique
US6687882B1 (en) Methods and apparatuses for non-equivalence checking of circuits with subspace
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
US6618841B1 (en) Non-assignable signal support during formal verification of circuit designs
US20050086565A1 (en) System and method for generating a test case
US7673288B1 (en) Bypassing execution of a software test using a file cache
US7076410B1 (en) Method and apparatus for efficiently viewing a number of selected components using a database editor tool
US6941257B2 (en) Hierarchical processing of simulation model events
CN111522730B (zh) 程序测试方法及装置、计算机装置、计算机可读介质
US5708594A (en) Automatic instruction string generation method and device for verifying processor operation model and logic
Chang et al. A biased random instruction generation environment for architectural verification of pipelined processors
JPH0764815A (ja) テストプログラムの生成方法
KR970010023B1 (ko) 테스트 프로그램의 생성방법
CN111241766B (zh) 测试方法与测试系统

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20001031