JP3274036B2 - プロセッサの動作モデルと論理検証用試験命令列の自動生成方法及び装置 - Google Patents

プロセッサの動作モデルと論理検証用試験命令列の自動生成方法及び装置

Info

Publication number
JP3274036B2
JP3274036B2 JP06048795A JP6048795A JP3274036B2 JP 3274036 B2 JP3274036 B2 JP 3274036B2 JP 06048795 A JP06048795 A JP 06048795A JP 6048795 A JP6048795 A JP 6048795A JP 3274036 B2 JP3274036 B2 JP 3274036B2
Authority
JP
Japan
Prior art keywords
state
states
instruction sequence
pipeline
test
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
Application number
JP06048795A
Other languages
English (en)
Other versions
JPH0850554A (ja
Inventor
洋哲 岩下
聡 古渡
恒夫 中田
文保 広瀬
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP06048795A priority Critical patent/JP3274036B2/ja
Priority to US08/433,735 priority patent/US5708594A/en
Publication of JPH0850554A publication Critical patent/JPH0850554A/ja
Application granted granted Critical
Publication of JP3274036B2 publication Critical patent/JP3274036B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、パイプライン処理機能
を有するプロセッサの動作論理を検証するための命令列
を自動生成する技術に関する。
【0002】
【従来の技術】プロセッサの機能又は構造の設計が仕様
を正しく実現しているか否かを検証するための論理シミ
ュレーション、及び製造されたプロセッサが仕様通りに
動作するか否かを検証するための動作試験を行うために
は、プロセッサに与えられる試験命令列(テストプログ
ラム)の作成が不可欠である。更に、短時間で信頼性の
高い検証を行うためには、質の良いテストプログラムを
作成する必要がある。
【0003】ここで、プロセッサの内部で命令のパイプ
ライン処理を行うことは、処理速度の高いプロセッサを
実現するために欠かせない技法である。パイプライン処
理が実行される場合、同時に処理される複数の命令の間
で、次のような競合状態(パイプラインハザード)が発
生する可能性がある。
【0004】・ある機能を有するハードウエア資源の数
がNである場合に、合計でN+1以上の当該ハードウエ
ア資源の使用要求が発生する状態。 ・2つの命令間のレジスタ又はメモリに対するデータの
読出し及び書込みの順序が入れ替わる結果、正常な実行
結果が得られなくなる状態。 これらのパイプラインハザードを解決するためには、プ
ロセッサ内に、パイプラインのインターロック及び命令
の実行順序の入換え等を制御する機構が必要である。
【0005】このような機構を実現するためのプロセッ
サの機能又は構造の設計が仕様を正しく実現しているか
否かを検証するためには、論理シミュレーションを実行
する必要がある。更に、製造されたプロセッサが仕様通
りに動作するか否かを検証するために、動作試験を行う
必要がある。そして、これらの検証を行うためには、プ
ロセッサに与える試験命令列(テストプログラム)の作
成が不可欠となる。
【0006】プロセッサの構造は、一般に、実際のデー
タ処理を扱う演算部(ALU、レジスタファイル等)
と、それらを制御する制御部に分けることができる。そ
して、そのような構造のうちでも、制御部が有する機能
は複雑である。そのため、その機能を効率よく検証でき
るテストプログラムを作成することは、重要であると同
時に難しい問題である。
【0007】従来のテストプログラムは、次のような方
法の組み合わせによって作成されている。 方法1:試験命令列を人手で作成する。
【0008】方法2:計算機を利用して、無作為に多く
の試験命令列を発生させる。 方法3:既存のプログラムを利用して試験命令列を作成
する。 なお、プロセッサの仕様を表現する記述からプロセッサ
の制御機構を検証するための試験命令列を自動生成する
方式に関しては、本願出願人により既に2件の特許出
願:特願平4−145812、特願平5−217813
がなされているが、これらは本発明が実現しているよう
な厳密な動作モデルに基づいたものではない。
【0009】
【発明が解決しようとする課題】しかし、上述した方法
1に基づく従来技術は、人手を利用するため、多くの開
発期間を必要とする。更に、人手で作成された試験命令
列は、その質を評価することが難しく、その有効性を客
観的に保証することができないという問題点を有してい
る。
【0010】また、上述した方法2又は3に基づく従来
技術では、命令数を増やすことによって検証の信頼性を
上げることが可能ではある。しかし、論理シミュレーシ
ョンや動作試験を行うためには、膨大な実行時間が必要
となるという問題点を有している。
【0011】更に、本願出願人により既に特許出願され
ている方式は、パイプラインハザードの発生時に前段側
のパイプラインステージが停止するような制御を検証す
るための試験命令列の生成方式に限定されるものであ
る。従って、これらの方式は、現在多く出現しつつある
複雑なパイプライン制御方式に対応しきれないという問
題点を有している。
【0012】本発明は、より多くの種類のプロセッサを
対象として、対象となるプロセッサのための論理シミュ
レーション及び動作試験の実行時間の短縮と、それらの
検証の信頼性の向上を実現するために、プロセッサの動
作論理を検証するための質の高い試験命令列を自動的か
つ短時間に生成可能とすることを目的とする。
【0013】
【課題を解決するための手段】図1は、本発明の第1の
態様のブロック図である。まず、仕様情報保持手段10
2は、プロセッサのパイプラインの構成及びプロセッサ
が実行する各命令に関する仕様情報101を保持する。
ここで、“パイプライン”とは、命令の処理を基本的に
1クロックサイクル(命令サイクル)で処理できる幾つ
かの単位動作(パイプラインステージ)に分割し、連続
する複数の入力に対する処理実行をオーバーラップさせ
て各パイプラインステージにおいて並列に処理する機能
をいう。1つの命令を1命令サイクルの間保持すること
のできるハードウエア単位をパイプラインユニットとよ
ぶ。また、“プロセッサが実行する各命令についての仕
様情報”とは、プロセッサのパイプライン動作を決定す
る情報であって、例えば、各命令のパイプライン処理の
経路や、各命令のパイプラインステージ毎のハードウエ
ア資源の占有についての情報、及びレジスタ又はメモリ
等に対するデータの読出し/書込みの実行についての情
報である。
【0014】動作モデル構成手段104は、仕様情報保
持手段101が保持する仕様情報101に基づき、パイ
プラインの動作を表現し、パイプラインの各構成部分
(各パイプラインユニット)の状態とそれらの状態の遷
移関係を複数の状態変数によって表現する動作モデル1
03を構成する。この動作モデル103において、各パ
イプラインユニットに入力する命令は、外部又は他の状
態変数から1つの状態変数に入力される状態に対応付け
られる。
【0015】試験状態列挙手段106は、動作モデル構
成手段104によって構成される動作モデル103に含
まれる複数の状態変数の状態が競合を起こすような状態
である試験状態105を列挙する。
【0016】試験命令列生成手段108は、動作モデル
構成手段104によって構成される動作モデル103が
その初期状態から試験状態列挙手段106によって列挙
される各試験状態105へ遷移する過程に対応した試験
命令列107を生成する。
【0017】上述の本発明の第1の態様として示される
装置が実現する機能は、その機能を実現する方法として
具体化することもできる。図2は、本発明の第2の態様
のブロック図である。
【0018】仕様情報保持手段202は、プロセッサの
パイプラインの構成及びプロセッサが実行する各命令に
関する仕様情報201を保持する。初期動作モデル構成
手段204は、仕様情報保持手段202が保持する仕様
情報201に基づいて、パイプラインの動作を表現し、
パイプラインの各構成部分の状態とそれらの状態の遷移
関係を複数の状態変数によって表現する動作モデルを初
期動作モデル203として構成する。
【0019】状態数最小化手段206は、初期動作モデ
ル構成手段204によって構成される初期動作モデル2
03に含まれる各状態変数が有する複数の状態を、それ
らの状態が有する属性に基づいてグループ化することに
より、各状態変数が有する状態の数を最小化し、その最
小化が行われた動作モデル205を構成する。
【0020】上述の本発明の第2の態様として示される
装置が実現する機能は、その機能を実現する方法として
具体化することもできる。図3は、本発明の第3の態様
のブロック図である。
【0021】入力情報保持手段303は、上述した本発
明の第1又は第2の態様によって構成される動作モデル
301(動作モデル103、205に対応する)と、そ
の動作モデル301に含まれる複数の状態変数の状態が
競合を起こすような状態である試験状態302を、入力
情報として保持する。
【0022】試験命令列列挙手段306は、入力情報保
持手段303に保持された動作モデル301を構成する
複数の状態変数の状態が競合を起こす状態を含むことな
く、動作モデル301の状態が所定の入力状態304か
ら入力情報保持手段303に保持される試験状態302
のうちの何れかへ遷移する過程に対応した試験命令列3
05を列挙する。
【0023】次時刻状態計算手段308は、入力情報保
持手段302に保持された動作モデル301を構成する
複数の状態変数の状態が、試験命令列列挙手段306が
列挙した試験命令列305に対応する試験状態になった
後に次に遷移する状態である次時刻状態307を計算
し、その次時刻状態307を所定の入力状態304とし
て試験命令列列挙手段306に入力させる。
【0024】上述の本発明の第3の態様として示される
装置が実現する機能は、その機能を実現する方法として
具体化することもできる。図4(a) は、本発明の第4の
態様のブロック図である。
【0025】入力情報保持手段403は、上述した本発
明の第1又は第2の態様によって構成される動作モデル
401(動作モデル103、205に対応する)と、動
作モデル401に含まれる複数の状態変数の状態を入力
とする状態評価関数402を、入力情報として保持す
る。
【0026】到達可能状態列挙手段404は、入力情報
として入力される動作モデル401を構成する複数の状
態変数についてその初期状態から到達可能な状態であっ
て、状態評価関数402の値が所定の条件を満たす状態
を列挙する。
【0027】試験命令列列挙手段406は、到達可能状
態列挙手段404によって列挙される状態に至る命令列
を試験命令列405として列挙する。図4(b) は、本発
明の第4の態様のより具体的なブロック図である。
【0028】入力情報保持手段409は、上述した本発
明の第1又は第2の態様により構成される動作モデル4
07(動作モデル103、205に対応する)と、動作
モデル407に含まれる複数の状態変数の状態を入力と
する状態評価関数408を、入力情報として保持する。
【0029】到達可能状態列挙手段410は、入力情報
として入力される動作モデル407を構成する複数の状
態変数についてその初期状態から到達可能な状態を列挙
する。
【0030】状態評価関数計算手段411は、到達可能
状態列挙手段410によって列挙される状態に対応する
状態評価関数408の値を計算する。命令列列挙手段4
12は、到達可能状態列挙手段410によって列挙され
る状態に至る命令列を列挙する。
【0031】試験命令列出力手段414は、状態評価関
数計算手段411によって計算される値が所定の条件を
満たす状態を到達可能状態列挙手段410によって列挙
される状態から選択し、選択された状態に対応する命令
列を命令列列挙手段412から選択し、選択された命令
列を試験命令列413として出力する。
【0032】上述の本発明の第4の態様として示される
装置が実現する機能は、その機能を実現する方法として
具体化することもできる。図5(a) は、本発明の第5の
態様のブロック図である。
【0033】入力情報保持手段503は、上述した本発
明の第1又は第2の態様によって構成される動作モデル
501(動作モデル103、205に対応する)と、動
作モデル501に含まれる複数の状態変数の状態の時系
列502を、入力情報として保持する。
【0034】到達可能状態時系列列挙手段504は、入
力情報として入力される動作モデル501を構成する複
数の状態変数についてその初期状態から到達可能な状態
の時系列であって、入力情報として入力される状態の時
系列502を列挙する。
【0035】試験命令列列挙手段506は、到達可能状
態時系列列挙手段504によって列挙される状態の時系
列を実現する命令列を試験命令列505として列挙す
る。図5(b) は、本発明の第5の態様のより具体的なブ
ロック図である。
【0036】入力情報保持手段509は、上述した本発
明の第1又は第2の態様により構成される動作モデル5
07(動作モデル103、205に対応する)と、動作
モデル507に含まれる複数の状態変数の状態の時系列
508を、入力情報として保持する。
【0037】到達可能状態列挙手段510は、入力情報
として入力される動作モデル507を構成する複数の状
態変数についてその初期状態から到達可能な状態を列挙
する。
【0038】命令列列挙手段511は、到達可能状態列
挙手段510によって列挙される状態に至る命令列を列
挙する。状態時系列検索手段512は、到達可能状態列
挙手段510によって列挙された状態からバックトラッ
クしながら、入力情報として入力される状態の時系列5
08に一致する状態の時系列を検索する。
【0039】試験命令列出力手段514は、状態時系列
検索手段512によって検索された状態の時系列の最終
状態に至る命令列を命令列列挙手段511から選択し、
選択された命令列を試験命令列513として出力する。
【0040】上述の本発明の第5の態様として示される
装置が実現する機能は、その機能を実現する方法として
具体化することもできる。図6(a) は、本発明の第6の
態様のブロック図である。
【0041】入力情報保持手段603は、上述した本発
明の第1又は第2の態様によって構成される動作モデル
601(動作モデル103、205に対応する)と、動
作モデル601に含まれる複数の状態変数の状態の時系
列の評価関数602を、入力情報として保持する。
【0042】到達可能状態時系列列挙手段604は、入
力情報として入力される動作モデル601を構成する複
数の状態変数についてその初期状態から到達可能な状態
の時系列であって、評価関数602の値が所定の条件を
満たす状態の時系列を列挙する。
【0043】試験命令列列挙手段606は、到達可能状
態時系列列挙手段604によって列挙される状態の時系
列を実現する命令列を試験命令列605として列挙す
る。図6(b) は、本発明の第6の態様のより具体的なブ
ロック図である。
【0044】入力情報保持手段609は、上述した本発
明の第1又は第2の態様により構成される動作モデル6
07(動作モデル103、205に対応する)と、動作
モデル607に含まれる複数の状態変数の状態の時系列
の評価関数608を、入力情報として保持する。
【0045】到達可能状態列挙手段610は、入力情報
として入力される動作モデル607を構成する複数の状
態変数についてその初期状態から到達可能な状態を列挙
する。
【0046】命令列列挙手段611は、到達可能状態列
挙手段610によって列挙される状態に至る命令列を列
挙する。状態時系列評価関数計算手段612は、到達可
能状態列挙手段610によって列挙された状態からバッ
クトラックして得られる状態の時系列について、その評
価関数608を計算する。
【0047】試験命令列出力手段614は、状態時系列
評価関数計算手段612によって計算される値が所定の
条件を満たす状態の時系列を到達可能状態列挙手段61
0によって列挙された状態からバックトラックして得ら
れる状態の時系列のうちから選択し、選択された状態の
時系列の最終状態に至る命令列を命令列列挙手段611
から選択し、選択された命令列を試験命令列613とし
て出力する。
【0048】上述の本発明の第6の態様として示される
装置が実現する機能は、その機能を実現する方法として
具体化することもできる。
【0049】
【作用】本発明の第1の態様では、入力された仕様情報
101に基づきプロセッサのパイプラインの動作を表現
する動作モデル103が自動的に構成される。この動作
モデル103が正確かつ簡略に構成されることにより、
出力される試験命令列107の品質向上と、その命令列
に基づくプロセッサ試験の処理の効率化を実現すること
ができる。
【0050】次に、試験状態105が仕様情報101に
基づき列挙された後、初期状態から試験状態105への
遷移過程に対応した試験命令列107が生成される。試
験状態105の選び方により、目的に応じたテストプロ
グラムを自由に作ることが可能となる。
【0051】本発明の第2の態様では、入力された仕様
情報201に直接的に対応した動作モデルが初期動作モ
デル203として生成された後、その動作モデルに含ま
れる各状態変数が有する複数の状態がグループ化され、
複数の状態が1つの状態として処理されることにより、
動作モデルの状態数が削減される。この結果、パイプラ
インの構成、及びパイプライン上の命令の流れに関する
仕様を維持したまま、プロセッサの簡約化された動作モ
デル205を得ることができる。そして、このような動
作モデル205に基づいて試験命令列を生成するための
処理に擁する時間を短縮することができる。
【0052】本発明の第3の態様では、入力された動作
モデル301及びその動作モデル301の試験状態30
2に基づいて、試験状態302を含まない状態遷移によ
り試験状態302に到達する試験命令列305を列挙す
る処理と、試験状態302の次時刻(次の命令サイク
ル)の状態を求める処理が繰り返し実行されることによ
り、試験命令列305が自動的に生成される。次時刻に
複雑な状態遷移がある場合が試験状態302として設定
されることにより、試験状態302を含まない状態遷移
は単純なものとなって、試験命令列302を効率良く抽
出することができる。
【0053】本発明の第4の態様では、動作モデル40
1、407に対して試験項目を指定するための入力情報
として、或る1つの時刻における試験状態の集合ではな
く、状態評価関数402、408を指定できる。
【0054】パイプラインプロセッサでは、トラップ制
御において、トラップ発生時にトラップを誘発させた命
令が実行されるより前に実行された命令と、それより後
に実行された命令を正確に区別して制御する機構が、重
要な役割を果たす。特に、厳密トラップ(precisetrap
)の実現のためには、トラップを誘発させた命令が実
行されるより前に実行された命令は、トラップハンドラ
に制御が移った時点において実行を完了していなければ
ならず、かつ、トラップを誘発させた命令が実行される
より後に実行されるはずの命令は、トラップハンドラに
制御が移った時点において実行が開始されていてはなら
ない。このような状態を検証するためには、例えば、パ
イプラインにできる限り多くの命令が詰った状態かつト
ラップを発生させる状態が試験項目となるように、試験
命令列を生成する必要がある。
【0055】本発明の第4の態様では、このような定性
的に表現される試験項目を、状態を評価する状態評価関
数402、408によって効率的に定義することがで
き、それに対応する試験命令列505、513を、自動
的かつ効率的に生成することができる。
【0056】本発明の第5の態様では、動作モデル50
1、507に対して試験項目を指定するための入力情報
として、状態の時系列502、508を指定できる。例
えば或る種のパイプラインプロセッサにおいて、命令の
実行結果の書込みユニットとレジスタファイルとの間に
バッファが設けられ、このバッファによって実際のライ
トバック動作がプログラム上のステップの順番に対応す
るように修正されることにより、正確なトラップが実現
されるように設計される場合がある。このようなパイプ
ライン機構を検証するためには、数命令サイクルの間命
令の完了順序が入れ替わる状態を発生させ、バッファに
データを保持させた後に、トラップを発生させるような
試験命令列を生成する必要がある。
【0057】本発明の第5の態様では、このような状態
の変化を、状態の時系列502、508として指定する
ことができ、一定期間にわたり特定の状態を発生させる
ような試験命令列505、513を、自動的かつ効率的
に生成することができる。
【0058】本発明の第6の態様では、動作モデル60
1、607に対して試験項目を指定するための入力情報
として、状態の時系列の評価関数602、608を指定
できる。
【0059】例えば、プログラム上のレジスタ番号と物
理レジスタ番号との間で動的に番号の付替えを行う、い
わゆるレジスタリネーミング機構を有するパイプライン
プロセッサが存在するが、このようなプロセッサにおい
ては、リネーミングのための物理レジスタの数(リネー
ミングスペース)が不足する場合が問題となる。この不
足が生じないように設計されたプロセッサにおいて本当
にこの不足が発生しないことを検証するためには、でき
るだけ多くのリネーミングスペースが消費されるような
試験命令列が必要となる。
【0060】本発明の第6の態様では、このような一定
期間の状態が定性的に表現される試験項目を、状態の時
系列を評価する評価関数602、608によって効率的
に定義することができ、それに対応する試験命令列60
5、613を、自動的かつ効率的に生成することができ
る。
【0061】
【実施例】以下、図面を参照しながら本発明の実施例に
つき詳細に説明する。 <第1の実施例>図7は、本発明の第1の実施例の全体
構成図である。この構成図によって実現される機能は、
特には図示しないプロセッサとメモリ、及びそれらによ
って実現される制御プログラムを主な構成要素とするコ
ンピュータシステムによって実現されている。
【0062】図7において、仕様情報保持部701は、
検証の対象であるプロセッサのパイプライン構成及びプ
ロセッサが実行するそれぞれの命令に関する仕様情報を
保持する。
【0063】初期動作モデル構成部702は、仕様情報
保持部701に保持された仕様情報から、パイプライン
に関する初期動作モデルM0 を構成する。状態数最小化
部703は、初期動作モデルM0 の状態の数を最小化す
ることにより、動作モデルMを構成する。
【0064】入力情報保持部704は、上述の動作モデ
ルMとそのモデルに対する試験状態の集合Hとからなる
入力情報を保持する。試験命令列列挙部705は、入力
情報保持部704に保持された動作モデルMと試験状態
の集合Hとから、入力情報保持部704に保持された動
作モデルMを構成する複数の状態変数の状態が競合を起
こす状態を含むことなく、動作モデルMの状態が所定の
入力状態から入力情報保持部704に保持される試験状
態の集合Hに含まれる試験状態のうちの何れかへ遷移す
る過程に対応した試験命令列707を列挙する。
【0065】次時刻状態計算部706は、入力情報保持
部704に保持された動作モデルMを構成する複数の状
態変数の状態が、試験命令列列挙部705が列挙した試
験命令列707に対応する試験状態になった後に次に遷
移する状態である次時刻状態を計算し、その次時刻状態
を新たな入力状態として試験命令列列挙手段705に入
力させる。
【0066】以上の構成を有する第1の実施例の動作に
ついて、図8〜図15の動作フローチャート、図16及
び図17のデータ構成図、並びに、図18〜図28の動
作説明図に従って、詳細に説明する。
【0067】まず、図8のステップ801で示されるよ
うに、図7に示される仕様情報保持部701に、仕様情
報が入力される。図18に、仕様情報によって表される
パイプライン構成の例を示す。
【0068】パイプライン処理では、1つの命令によっ
て実行される1つの処理過程が複数の時間的に独立した
処理ステージに分割され、それぞれの命令のそれぞれの
処理ステージはそれぞれに対応した処理ユニットによっ
て実行される。そして、それぞれの命令サイクルにおい
て、複数の処理ユニットによって、複数の命令に対応す
る複数の相互に異なる処理ステージが並列に実行され
る。
【0069】図18において、命令フェッチユニット
(IFユニット)1801は、それぞれの命令の命令フ
ェッチステージ(IFステージ)を実行するユニットで
ある。このユニットは、特には図示しないメモリから命
令をフェッチする。
【0070】命令デコードユニット(IDユニット)1
802は、それぞれの命令の命令デコードステージ(I
Dステージ)を実行する。このユニットは、フェッチさ
れた命令をデコードし、また、その命令に対応するオペ
ランドをレジスタから読み出す。
【0071】算術論理演算ユニット(ALUユニット)
1803は、それぞれの命令の算術論理演算ステージ
(ALUステージ)を実行する。このユニットは、デコ
ードされた命令が整数演算命令又は論理演算命令である
場合に、その命令に対応する整数演算又は論理演算を実
行する。
【0072】メモリアクセスユニット(MEMユニッ
ト)1804は、それぞれの命令のメモリアクセスステ
ージ(MEMステージ)を実行する。このユニットは、
ALUユニット1803によりアドレスが計算されたデ
ータを、特には図示しないメモリから読み出し又はその
メモリに書き込む。
【0073】F1 ユニット1805、F2 ユニット18
06、及びF3 ユニット1807とから構成される浮動
小数点演算ユニット(FPUユニット)は、それぞれの
命令の浮動小数点演算ステージ(FPUステージ)を実
行する。このユニットは、デコードされた命令が浮動小
数点演算命令である場合に、その命令に対応するオペラ
ンドに対して浮動小数点演算を実行する。
【0074】ライトバックユニット(WBユニット)1
808は、それぞれの命令のライトバックステージ(W
Bステージ)を実行する。このユニットは、MEMユニ
ット1804によって特には図示しないメモリから取得
されたデータ又はALUユニット1803によって演算
されたデータを、特には図示しないレジスタに書き込
む。
【0075】上述のパイプラインの構成において、1命
令サイクルの期間にフェッチされる命令は1個であり、
FPUステージ以外のステージの実行は、1命令サイク
ルで終了する。FPUステージが消費する命令サイクル
数は実行される命令によって異なる。1つの命令がF1
ユニット1805によって実行された後にF3 ユニット
1807によって実行される場合には、その命令に対応
するFPUステージは2命令サイクルを消費する。ま
た、1つの命令がF1 ユニット1805によって実行さ
れた後にF2 ユニット1806が実行され更にその後に
3 ユニット1807によって実行される場合には、そ
の命令に対応するFPUステージは3命令サイクルを消
費する。
【0076】上述した例で示されるようなパイプライン
構成に関する仕様を所定の形式に従って記述した仕様情
報が、仕様情報保持部701に入力される。次に、図1
9に、仕様情報によって表される命令の実行形態の例を
示す。この仕様情報により示される仕様は以下のとうり
である。即ち、命令Aは、命令サイクルの進行に同期し
て、その命令に対応するIFステージ、IDステージ、
ALUステージ、及びWBステージが順に実行される。
また、命令Bは、命令サイクルの進行に同期して、その
命令に対応するIFステージ、IDステージ、ALUス
テージ、MEMステージ、及びWBステージが順に実行
される。更に、命令Cは、命令サイクルの進行に同期し
て、その命令に対応するIFステージ、IDステージ、
1 ユニット1805の実行タイミングとF3 ユニット
1807の実行タイミングとからなるFPUステージ、
及びWBステージが順に実行される。加えて、命令D
は、命令サイクルの進行に同期して、その命令に対応す
るIFステージ、IDステージ、F1 ユニット1805
の実行タイミングとF2 ユニット1806の実行タイミ
ングとF3 ユニット1807の実行タイミングとからな
るFPUステージ、及びWBステージが順に実行され
る。
【0077】上述した例で示されるような命令の実行形
態に関する仕様を所定の形式に従って記述した仕様情報
が、仕様情報保持部701に入力される。次に、図8の
ステップ802で示されるように、図7に示される初期
動作モデル構成部702は、仕様情報保持部701に保
持された仕様情報に従って、初期動作モデルM0 を構成
する。図18及び図19に示される仕様情報に基づい
て、図20に概念的に示される初期動作モデルM0 が構
成される。
【0078】仕様情報から初期動作モデルM0 を構成す
るためのアルゴリズムは、以下に示される。まず、パイ
プラインの構成例に関する仕様情報(図18参照)に基
づいて、パイプラインを構成する各ユニットに対応し
て、図16に示される構造体として定義される状態変数
が確保される。このとき、ユニット内部のパイプライン
も考慮され、命令サイクル毎に命令を1個保持できるユ
ニットにつき1個の状態変数が対応させられる。図18
のパイプラインの構成例では、IFユニット1801、
IDユニット1802、ALUユニット1803、ME
Mユニット1804、及びWBユニット1808のそれ
ぞれに対応して1つずつの状態変数が確保されると共
に、FPUユニットを構成するF1 ユニット1805、
2 ユニット1806、及びF3 ユニット1807のそ
れぞれに対応して1つずつの状態変数が確保される。ま
た、図20に示される初期動作モデルM0 の例では、番
号#1〜#8で参照される円が状態変数を表しており、それ
ぞれの円は、図18のパイプライン構成の例において番
号1801〜1808で参照される各ユニットに、1対
1に対応している。
【0079】次に、上述のようにして確保された状態変
数を構成する図16に示される各構成要素が決定され
る。図16において、状態変数の“前段に接続する状態
変数のリスト”には、次時刻にその状態変数に対応する
ユニットが処理する状態を保持する可能性のあるユニッ
トに対応する状態変数のリストが保持される。例えば図
18及び図19の例において、ALUユニット1803
に注目した場合に、そのユニットによって実行されるの
は命令A及び命令Bという2つの状態であって、ALU
ユニット1803がこれらの状態を実行する現在時刻よ
り1単位前の時刻には、IDユニット1802がこれら
の状態を実行する。従って、ALUユニット1803に
対応する状態変数の“前段に接続する状態変数のリス
ト”には、IDユニット1802に対応する状態変数が
登録される。また、F3 ユニット1807に注目した場
合に、そのユニットによって実行されるのは命令C及び
命令Dという2つの状態であって、F3 ユニット180
7がこれらの状態を実行する現在時刻より1単位前の時
刻には、F1 ユニット1805が命令Cを実行しF2
ニット1806が命令Dを実行する。従って、F3 ユニ
ット1807に対応する状態変数の“前段に接続する状
態変数のリスト”には、F1 ユニット1805に対応す
る状態変数とF2 ユニット1806に対応する状態変数
が登録される。
【0080】図16において、状態変数の“後段に接続
する状態変数のリスト”には、その状態変数に対応する
ユニットが保持する状態を次時刻に処理する可能性のあ
るユニットに対応する状態変数のリストが保持される。
例えば図18及び図19の例において、ALUユニット
1803に注目した場合に、そのユニットにより実行さ
れるのは命令A及び命令Bという2つの状態であって、
次時刻にこれらの状態を実行する可能性のあるユニット
は、WBユニット1808とMEMユニット1804で
ある。従って、ALUユニット1803に対応する状態
変数の“後段に接続する状態変数のリスト”には、WB
ユニット1808に対応する状態変数とMEMユニット
1804に対応する状態変数が登録される。
【0081】それぞれの状態変数の上述した“前段に接
続する状態変数のリスト”と“後段に接続する状態変数
のリスト”は、図20に示される初期動作モデルM0
例では、それぞれの円で示されるそれぞれの状態変数の
間を結ぶ矢印を規定する。
【0082】図16において、状態変数の“入力の集
合”には、その状態変数に対応するユニットにパイプラ
インの外部から入力される状態の集合が保持される。初
期動作モデルM0 においては、命令フェッチユニットに
対応する状態変数の“入力の集合”は、そのパイプライ
ンにおいて実行可能な全ての命令の集合であり、その他
のユニットに対応する状態変数の“入力の集合”は、空
集合である。より具体的には、例えば図18及び図19
の例において、IFユニット1801に対応する状態変
数の“入力の集合”には、命令A、B、C、及びDとい
う4つの状態が登録される。また、図20に示される初
期動作モデルM0 の例では、IFユニット1801に対
応する状態変数の“入力の集合”によって、#1で参照さ
れる円で示されるIFユニット1801に対応する状態
変数に入力される矢印と、その矢印に付加される状態
(命令)が規定される。
【0083】図16において、状態変数の“状態の集
合”には、その状態変数に対応するユニットが処理する
状態の集合が保持される。なお、ここには、処理する状
態(命令)が無いことを示す情報も保持される。初期動
作モデルM0 においては、各状態変数の“状態の集合”
は、各状態変数に対応するユニットに入力する可能性の
ある全ての命令と命令が無いことを示す情報とからな
る。例えば図18及び図19の例において、ALUユニ
ット1803に注目した場合に、そのユニットにより実
行されるのは命令A及び命令Bという2つの状態であ
る。従って、ALUユニット1803に対応する状態変
数の“状態の集合”には、命令A、命令Bという2つの
状態と、命令が無いことを示す情報が登録される。ま
た、図20に示される初期動作モデルM0 の例では、上
述した“状態の集合”は、それぞれの状態変数に対応す
る円の中の記号として表現される。ここで、記号A〜D
は命令A〜Dという4つの状態に対応し、記号Oは処理
する命令が無いことを示す情報に対応する。なお、後述
する状態数最小化処理によって得られる動作モデルMに
おいては、各状態変数の“状態の集合”には、グループ
化によって得られる状態の集合が保持され得る。
【0084】図16において、状態変数の“遷移関数”
は、その状態変数に対応するユニットの前段に接続され
るユニットから出力され又はパイプラインの外部から入
力される状態からその状態変数に対応するユニットが次
時刻に処理する状態を得るための関数が保持される。例
えば図18及び図19の例において、WBユニット18
08に対応する状態変数の“遷移関数”によって、WB
ユニット1808の前段に接続されるALUユニット1
803が命令Aを出力した場合にその命令Aを次時刻に
処理する命令として取得すること、WBユニット180
8の前段に接続されるMEMユニット1804が命令B
を出力した場合にその命令Bを次時刻に処理する命令と
して取得すること、及びWBユニット1808の前段に
接続されるF3 ユニット1807が命令Cを出力した場
合にその命令Cを次時刻に処理する命令として取得する
ことが規定される。また、図20に示される初期動作モ
デルM0 の例では、上記“遷移関数”は、1つの状態変
数から他の1つの状態変数へ向かう、記号A、B、C、
又はDの組合せによってラベル付けされた矢印によって
表現されている。
【0085】図16において、状態変数の“動作テーブ
ル”には、図17に示されるデータ構造を有する動作テ
ーブルが保持される。この動作テーブルは、その状態変
数に対応するユニットが状態1 、状態2 、状態3 、・・
・等として示されるそれぞれの状態にある場合(それぞ
れの命令を実行している場合)に、その状態変数に対応
するユニットが動作1 、動作2 、動作3 、・・・等とし
て示されるレジスタの読出し又は書込み等のパイプライ
ンの制御に影響する動作を実行するか否か、又は当該ユ
ニットが特定のハードウエア資源を占有するか否か等を
定義する。例えば図18及び図19の例において、ME
Mユニット1804に対応する状態変数の“動作テーブ
ル”には、全ての状態に対してメインメモリが占有され
る旨が設定される。この動作テーブルは、後述する状態
数最小化の処理において使用される。
【0086】それぞれの状態変数に対応して図16に示
されるデータ構造を構成する上述したそれぞれの集合又
は“遷移関数”は、2分決定グラフ(BDD)を用いて
効率良く表現し処理することができる。なお、図16に
示されるデータ構造を構成するそれぞれの構成要素は、
それぞれの構成要素に対応する機能が定義されるデータ
へのポインタであってもよい。
【0087】続いて、図8のステップ803で示される
ように、図7に示される状態数最小化部703は、上述
のようにして構成された初期動作モデルM0 の状態の数
を最小化することにより、動作モデルMを構成する。
【0088】図9に、ステップ803の状態数最小化処
理に対応する更に詳細な動作フローチャートを示す。ま
ず、図9のステップ901において、図8のステップ8
02で構成された初期動作モデルM0 の各状態変数が順
序付けされる。具体的には、初期動作モデルM0 を構成
する入力段の状態変数から最終段の状態変数に向かっ
て、それぞれの状態変数に、その接続順に対応する順序
情報が付加される。図20に示される初期動作モデルM
0 の例では、この順序付け処理により決定される状態変
数の順序は、#1、#2、#3、#5、#4、#6、#7、#8の状態変
数の順になる。
【0089】次に、図9のステップ902で、入力段の
状態変数から最終段の状態変数に向かって順に、それぞ
れの状態変数における状態数が最小化される処理が実行
される。図10に、この処理に対応する更に詳細な動作
フローチャートを示す。
【0090】まず、図10のステップ1001で、入力
段の状態変数において、“状態の集合”に含まれる状態
のうち“動作テーブル”における値が同じ状態が、グル
ープ化される。即ち、入力段の状態変数に対応するパイ
プラインユニットにおいて、そのユニットで実行される
状態(命令)のうち、占有する資源、又はレジスタの読
出し若しくは書込みの動作等が同じ状態がグループ化さ
れる。この結果、グループ化の対象となった状態が新た
な1つの状態に置き換えられる。即ち、状態変数の“状
態の集合”において、グループ化の対象となった状態が
削除され、グループ化の結果を示す新たな1つの状態が
登録される。また、状態変数の“動作テーブル”におい
て、グループ化の対象となった状態に関する記述が削除
され、グループ化の結果を示す新たな1つの状態に関す
る記述が追加される。この記述は、グループ化の対象と
なった状態に関して共通に記述されていた内容と同じ内
容を有する。
【0091】図18の例に示されるように、通常、入力
段の状態変数は命令フェッチユニット(図18ではIF
ユニット1801)に対応しており、このユニットによ
ってフェッチされる全ての命令に対応する全ての状態の
“動作テーブル”における値は同じである。このため、
例えば図21に示されるように、#1で示される入力段の
状態変数において、全ての命令(全ての状態)が新たな
1つの状態Xに置き換えられる。そして、#1の状態変数
の“状態の集合”において、グループ化の対象となった
状態A、B、C、D(図20参照)が削除され、グルー
プ化の結果を示す新たな1つの状態Xが登録される。ま
た、状態変数の“動作テーブル”において、そのグルー
プを構成する状態A、B、C、Dに関する記述が削除さ
れて、グループ化の結果を示す新たな1つの状態Xに関
する記述が追加される。この記述は、グループ化の対象
となった状態A、B、C、Dに関して記述されていた共
通の内容と同じ内容を有する。なお、記号Oで示され
る、処理する状態(命令)が無いことを示す情報は、グ
ループ化されずに残される。
【0092】次に、図9のステップ901で決定された
順序に従って、入力段の次段の状態変数から最終段の状
態変数に向かって、ステップ1002〜ステップ100
5の処理が繰り返し実行される。
【0093】ステップ1002では、図9のステップ9
01で決定された順序に従って、入力段の状態変数の最
も近くに接続され、かつ処理されていない状態変数Uが
選択される。
【0094】ステップ1003では、状態変数Uの“状
態の集合”に含まれる状態のうち、状態変数Uの“前段
に接続する状態変数のリスト”に含まれる状態変数の
“状態の集合”において同じグループに属し、かつ状態
変数Uの“動作テーブル”における値が同じ状態が、グ
ループ化される。この結果、ステップ1001の場合と
同様にして、グループ化の対象となった状態が新たな1
つの状態に置き換えられる。即ち、状態変数Uの“状態
の集合”において、グループ化の対象となった状態が削
除されて、グループ化の結果を示す新たな1つの状態が
登録される。また、状態変数Uの“動作テーブル”にお
いて、グループ化の対象となった状態に関する記述が削
除され、グループ化の結果を示す新たな1つの状態に関
する記述が追加される。そして、この記述は、グループ
化の対象となった状態に関して記述されていた共通の内
容と同じ内容を有する。上述のグループ化の処理によ
り、グループ化が行われた状態変数の前段に接続される
状態変数に対するグループ化の結果と同じ結果、又はそ
の結果を更に細分化した結果が得られる。
【0095】ステップ1004では、ステップ1003
によるグループ化の処理が試みられた状態変数の“状態
の集合”に、その状態変数の前段に接続される状態変数
の“状態の集合”に含まれる状態とは異なる状態が含ま
れる場合、即ち、ステップ1003によるグループ化の
処理が試みられた状態変数の“状態の集合”に、そのグ
ループ化の処理が試みられた状態変数の前段に接続され
る状態変数の“状態の集合”に含まれる状態を細分化し
た状態が含まれている場合は、ステップ1003による
グループ化の処理が試みられた状態変数に対して、パイ
プラインの外部から、上述の異なる状態の入力があると
仮定され、その状態変数の“入力の集合”に、その外部
入力に対応する状態が追加される。外部入力が追加され
る理由は、ステップ1003によるグループ化の処理が
試みられた状態変数に、その状態変数の前段に接続され
る状態変数の“状態の集合”に含まれる状態が入力され
た場合において、“遷移関数”が新たな状態を決定でき
るようにするためである。なお、ステップ1004の処
理は、ステップ1003によるグループ化の処理の結
果、グループ化が実際に行われた状態変数と、グループ
化が実際には行われなかった状態変数の両方を対象とし
て実行される。
【0096】上述したステップ1002〜1004の処
理が、ステップ1005で、処理されていない状態変数
がなくなったと判定されるまで、即ち、最終段の状態変
数が処理されるまで繰り返し実行される。
【0097】図10の動作フローチャートで示される図
9のステップ902の入力段側からの状態数最小化の処
理によって、例えば図20に示される初期動作モデルM
0 から図21に示される動作モデルM1 が得られる。こ
の動作モデルM1 において、前述したように、入力段の
#1の状態変数において、状態A、B、C、Dがグループ
化されることによって、それらの状態が新たな状態Xに
置き換えられる。また、#2の状態変数において、状態
A、Bがグループ化されることによってそれらの状態が
新たな状態Yに置き換えられ、状態C、Dがグループ化
されることによってそれらの状態が新たな状態Zに置き
換えられる。この場合、#2の状態変数の“状態の集合”
に新たに含まれた状態Y、Zは、#2の状態変数の前段に
接続される#1の状態変数の“状態の集合”に含まれる状
態Xとは異なる。このため、外部入力として、#2の状態
変数の“入力の集合”に、状態Y、Zが追加される。更
に、#2の状態変数に対するグループ化の結果、#3の状態
変数の“状態の集合”に含まれている状態A、Bは、#3
の状態変数の前段に接続される#2の状態変数の“状態の
集合”に含まれる状態Y、Zとは異なる結果となる。こ
のために、外部入力として、#3の状態変数の“入力の集
合”に、状態A、Bが追加される。これと同様にして、
#2の状態変数に対するグループ化の結果、#5の状態変数
の“状態の集合”に含まれている状態C、Dも、#5の状
態変数の前段に接続される#2の状態変数の“状態の集
合”に含まれる状態Y、Zとは異なる結果となる。この
ため、外部入力として、#5の状態変数の“入力の集合”
に、状態C、Dが追加される。
【0098】上述した図9のステップ902の入力段側
からの状態数最小化の処理により、それぞれの状態変数
に関して、入力段側からその状態変数に対応するユニッ
トまでの動作が全て同じ状態(命令)をグループ化する
ことができる。この結果、後述する試験命令列を生成す
るための処理が必要とする時間を短縮することができ
る。
【0099】図9のステップ902の入力段側からの状
態数最小化の処理の後、ステップ903で、最終段の状
態変数から入力段の状態変数に向かって順に、それぞれ
の状態変数における状態数が最小化される処理が実行さ
れる。図11に、この処理に対応する更に詳細な動作フ
ローチャートを示す。
【0100】まず、図11のステップ1101で、最終
段の状態変数において、“状態の集合”に含まれる状態
のうち“動作テーブル”における値が同じ状態が、グル
ープ化される。即ち、最終段の状態変数に対応するパイ
プラインユニットにおいて、そのユニットで実行される
状態(命令)のうち、占有する資源、又はレジスタの読
出し若しくは書込みの動作等が同じ状態がグループ化さ
れる。この結果、グループ化の対象となった状態が新た
な1つの状態に置き換えられる。即ち、状態変数の“状
態の集合”において、グループ化の対象となった状態が
削除され、グループ化の結果を示す新たな1つの状態が
登録される。また、状態変数の“動作テーブル”におい
て、グループ化の対象となった状態に関する記述が削除
され、グループ化の結果を示す新たな1つの状態に関す
る記述が追加される。この記述は、グループ化の対象と
なった状態に関して共通に記述されていた内容と同じ内
容を有する。
【0101】次に、図9のステップ901で決定された
順序と逆の順序に従って、最終段の前段の状態変数から
入力段の状態変数に向かって、ステップ1102〜ステ
ップ1104の処理が繰り返し実行される。
【0102】ステップ1102では、図9のステップ9
01で決定された順序と逆の順序に従って、最終段の状
態変数の最も近くに接続され、かつ処理されていない状
態変数Uが選択される。
【0103】ステップ1103では、状態変数Uの“状
態の集合”に含まれる状態のうち、状態変数Uの“後段
に接続する状態変数のリスト”に含まれる状態変数の
“状態の集合”において同じグループに属し、かつ状態
変数Uの“動作テーブル”における値が同じ状態が、グ
ループ化される。この結果、グループ化の対象となった
状態が新たな1つの状態に置き換えられる。即ち、状態
変数Uの“状態の集合”において、グループ化の対象と
なった状態が削除され、グループ化の結果を示す新たな
1つの状態が登録される。また、状態変数Uの“動作テ
ーブル”において、グループ化の対象となった状態に関
する記述が削除され、グループ化の結果を示す新たな1
つの状態に関する記述が追加される。この記述は、グル
ープ化の対象となった状態に関して記述されていた共通
の内容と同じ内容を有する。上述のグループ化の処理に
より、グループ化が行われた状態変数の後段に接続され
る状態変数に対するグループ化の結果と同じ結果、又は
その結果を更に細分化した結果が得られる。
【0104】上述したステップ1102と1103の処
理が、ステップ1104で、処理されていない状態変数
がなくなったと判定されるまで、即ち、入力段の状態変
数が処理されるまで繰り返し実行される。
【0105】図11の動作フローチャートで示される図
9のステップ903の最終段側からの状態数最小化の処
理により、例えば図21に示される動作モデルM1 から
図22に示される動作モデルM2 が得られる。この動作
モデルM2 において、最終段の#8の状態変数において、
状態A、B、C、Dがグループ化されることによって、
それらの状態が新たな状態Xに置き換えられる。また、
#7の状態変数において、状態C、Dがグループ化される
ことによってそれらの状態が新たな状態Zに置き換えら
れる。
【0106】上述した図9のステップ903の最終段側
からの状態数最小化の処理により、それぞれの状態変数
に関して、その状態変数対応するユニットから最終段の
ユニットまでの動作が全て同じ状態(命令)をグループ
化することができる。この結果、後述する試験命令列を
生成するための処理が必要とする時間を短縮することが
できる。
【0107】図9のステップ903の最終段側からの状
態数最小化の処理が終了することにより図8のステップ
803の状態数最小化の処理が終了する。この結果、状
態数最小化部703は、上述の最終的に得られる動作モ
デル(例えば図22に示される動作モデルM2 )を、動
作モデルMとして出力する。
【0108】次に、図7の入力情報保持部704、試験
命令列列挙部705、及び次時刻状態計算部706とか
らなる部分は、上述した動作モデルMと、予め設定され
ている試験状態の集合Hとから、プロセッサのパイプラ
インを試験するための命令列である試験命令列707を
生成する。
【0109】これらの部分が実行する動作について、図
12〜図15に示される動作フローチャートと、図23
〜図28の動作説明図に従って、詳細に説明する。ま
ず、図12のステップ1201に示されるように、図7
に示される入力情報保持部704には、状態数最小化部
703から出力される動作モデルMと予め設定されてい
る試験状態の集合Hが入力され、それらが保持される。
【0110】動作モデルMは、前述した図16に示され
る状態変数の構造体の集合として入力情報保持部704
に保持される。例えば、図18に示されるパイプライン
構造に対応する動作モデルMは、図20、図21、又は
図22に示される#1〜#8の8つの状態変数に対応する8
組の構造体の集合として保持される。
【0111】一方、試験状態の集合Hは、パイプライン
ハザードを発生させるような状態の集合である。例え
ば、理解の容易のため、図18に示されるパイプライン
構造に対応する動作モデルMが前述した状態数最小化の
処理が施されていない図20に示される初期動作モデル
0 であると仮定した場合は、初期動作モデルM0 に対
応する試験状態の集合Hの例として、図23に示される
6つのケースの試験状態を設定することができる。図2
3において、ケース1に示される試験状態は、#6の状態
変数の状態がD、かつ#5の状態変数の状態がCとなる状
態である。この状態が発生する時刻(命令サイクル)の
次時刻(次の命令サイクル)には、#7の状態変数におい
て競合即ちハザードが発生する。言い換えれば、図18
において、F2 ユニット1606が命令Dを実行し、か
つF1 ユニット1605が命令Cを実行した命令サイク
ルの次の命令サイクルにおいて、F3 ユニット1607
には命令Dと命令Cが同時に入力される。この場合、F
3 ユニット1607は、命令Dと命令Cの競合を設計さ
れた仕様に従って解決することを要求される。ケース2
〜ケース6に示される試験状態も、ケース1の場合と同
様に理解することができる。一般的には、“前段に接続
する状態変数のリスト”(図16)に複数の状態変数が
登録されている状態変数を対象として、試験状態を設定
することができる。
【0112】図7の入力情報保持部704、試験命令列
列挙部705、及び次時刻状態計算部706とからなる
部分によって自動的に生成される試験命令列707(図
7)によって、例えば図23に示されるような試験状態
が意図的に発生させられ、この結果、そのような試験状
態に対してプロセッサが正常に機能するか否かを試験す
ることができるのである。
【0113】動作モデルMが、図20に示されるような
初期動作モデルM0 ではなく図22に示されるような状
態数最小化の処理が施された後の動作モデルM2 である
ような場合においても、図23の場合と同様な試験状態
の集合Hを設定することができる。
【0114】図23に例示したようなそれぞれの試験状
態は、図7の入力情報保持部704においては、動作モ
デルMを構成するそれぞれの状態変数に試験状態を対応
させたデータとして保持される。例えば、動作モデルM
が図18のパイプライン構造に対応している場合、図2
3に示されるケース1の試験状態は、図29に示される
データ構造として入力情報保持部704に保持される。
即ち、図29においては、パイプラインの各ユニットに
対応する#1〜#8の状態変数が定義され、#6の状態変数に
状態Dが、#5の状態変数に状態Cが設定される。状態が
設定されていない状態変数は任意の状態を取ることがで
きる。図23に示されるケース2〜ケース6の試験状態
も、図29に示されるケース1の場合と同様のデータ構
造として入力情報保持部704に保持される。これらの
試験状態の集合が試験状態の集合Hである。
【0115】上述したようにして、入力情報保持部70
4に動作モデルMと試験状態の集合Hが保持された後、
ステップ1202では、初期状態の集合S0 として1つ
の初期状態が定義され、この初期状態の集合S0 が図7
の試験命令列列挙部705へ入力される。この初期状態
は、動作モデルMを構成する全ての状態変数の状態が処
理する命令が無い状態となっている状態である。そし
て、例えば、動作モデルMが図18に示されるパイプラ
イン構造に対応している場合は、試験命令列列挙部70
5は、上述の初期状態を、例えば図30に示されるデー
タ構造として保持する。図30において、それぞれの状
態変数に設定されている記号Oは、それぞれの状態変数
に対応するパイプラインユニットにおいて処理する命令
が無いことを示す状態を表している。
【0116】続いて、図7の試験命令列列挙部705
は、ステップ1203において、初期状態の集合S0
含まれる初期状態からの試験命令列列挙の処理を実行す
る。この処理では、動作モデルMが対象とする全ての試
験命令列のうちから、初期状態の集合S0 に含まれる例
えば図30に示される初期状態からの基本遷移のみによ
って到達できる試験状態(この試験状態は、試験状態の
集合Hに含まれる)を発生させる試験命令列が抽出され
る。ここで、基本遷移とは、動作モデルMを構成するそ
れぞれの状態変数における状態の変化が、パイプライン
ハザードを原因とするインターロックにより何れかの命
令サイクルにおいて停滞するような遷移を含まない遷移
をいう。
【0117】図13は、図12のステップ1203の処
理を示す動作フローチャートである。まず、ステップ1
301では、状態の集合Uが空集合φとされる。また、
状態の集合Sに、開始状態として、図12のステップ1
202で定義された初期状態の集合S0 に含まれる図3
0に示される初期状態が設定される。
【0118】続いて、ステップ1302〜1305の一
連の処理が繰り返し実行される。これらの一連の処理の
1回の実行は、動作モデルMに対応するパイプラインに
おける1命令サイクルの時間経過に対応する。
【0119】上述の一連の処理のうちステップ1302
では、動作モデルMにおいて、現在の時刻(命令サイク
ル)までに到達している状態の集合Uに、1時刻(1命
令サイクル)前に始めて到達した状態の集合Sの内容が
追加される。それぞれの状態の時刻は、初期状態に対応
する時刻(命令サイクル)を基準とする。そして、この
処理は、状態の集合Uと状態の集合Sの論理和を演算
し、その演算結果を新たな状態の集合Uとする処理とし
て表現される。なお、状態の集合Sの初期値は、ステッ
プ1301で設定される初期状態の集合S0 である。こ
の結果得られる状態の集合Uは、後述するステップ13
04で使用される。
【0120】ステップ1303では、動作モデルMにお
いて、1時刻(1命令サイクル)前に始めて到達した状
態の集合Sに含まれる各状態から、基本遷移により到達
する次時刻(次の命令サイクル)の各状態が計算され
る。そして、それぞれの状態のうち試験状態でない状態
の集合が、次時刻の状態の集合S′として得られる。
【0121】このステップ1303において、基本遷移
により到達する次時刻の状態が試験状態である場合に
は、その状態に至る命令列が図7の試験命令列列挙部7
05から試験命令列707として出力される。このよう
にして、初期状態の集合S0 に含まれる例えば図30に
示される初期状態からの基本遷移のみによって到達でき
る試験状態を発生させる試験命令列が抽出される。この
場合、試験状態はパイプラインハザードを発生させるた
め、試験状態に対応する上述の状態は次時刻において基
本遷移を起こすことはできない。このため、その状態
は、次時刻の状態の集合S′には追加されない。
【0122】ステップ1304では、次時刻の状態の集
合S′に含まれる状態のうち現在の時刻(命令サイク
ル)までに到達している状態の集合Uに含まれない状態
が、次時刻に始めて到達した状態の集合Sとされる。こ
の処理は、状態の集合S′と、状態の集合Uの排他論理
の論理積を演算し、その演算結果を新たな状態の集合S
とする処理として表現される。
【0123】ステップ1305では、次時刻に始めて到
達した状態の集合Sが空集合φであるか否かが判定され
る。ステップ1305の判定がNOならば、次時刻に始
めて到達した状態の集合Sから次時刻における基本遷移
によって到達できる試験状態を検索するために、ステッ
プ1302〜1305の一連の処理が繰り返される。
【0124】以上の図13のステップ1302〜130
5の一連の処理の繰返しによって、動作モデルMが対象
とする全ての試験命令列のうちから、初期状態の集合S
0 に含まれる例えば図30に示される初期状態からの基
本遷移のみによって到達できる全ての試験状態を発生さ
せる全ての試験命令列が抽出される。
【0125】図14に、図13のステップ1303の処
理の動作フローチャートを示す。ステップ1401で
は、次時刻の状態の集合S′が空集合φとされる。ステ
ップ1402では、1時刻(1命令サイクル)前に始め
て到達した状態の集合Sから、その1つの要素である状
態sと、その状態sに至る命令列Ts が取り出される。
今、状態の集合Sが初期状態である場合には、状態s
は、例えば図30に示される初期状態のデータとして、
図7の試験命令列列挙部705内の特には図示しないメ
モリに保持されている。また、状態sに至る命令列Ts
は存在しない。なぜならば、図30に示される初期状態
は、動作モデルMを構成する全ての状態変数の状態が処
理する命令が無い状態となっている状態であるからであ
る。
【0126】ステップ1403においては、図7の入力
情報保持部704に保持されている動作モデルMを構成
する全ての状態変数の“入力の集合”(図16)に設定
されている入力状態の集合が、入力状態集合Xとして定
義される。なお、この入力状態集合Xには、入力される
命令が無い状態も含まれる。例えば、理解の容易のた
め、図18に示されるパイプライン構造に対応する動作
モデルMが前述した状態数最小化の処理が施されていな
い図20に示される初期動作モデルM0 であると仮定し
た場合は、入力状態集合Xは、命令フェッチユニットに
対応する状態変数の“入力の集合”に格納されている実
行可能な全ての命令の集合である。即ち、X={A、
B、C、D、O}である。ここで、記号Oは、入力され
る命令が無いことを示す状態に対応する。動作モデルM
が、図20に示されるような初期動作モデルM0 ではな
く図22に示されるような状態数最小化の処理が施され
た後の動作モデルM2 であるような場合においても、動
作モデルM2 を構成する全ての状態変数の“入力の集
合”に設定されている入力状態の集合として、入力状態
集合Xを定義することができる。
【0127】ステップ1404では、ステップ1403
で定義された入力状態集合Xから、その1つの要素であ
る入力状態xが取り出される。例えば、図18に示され
るパイプライン構造に対応する動作モデルMが前述した
状態数最小化の処理が施されていない図20に示される
初期動作モデルM0 であると仮定した場合において、入
力状態集合X={A、B、C、D}から入力状態xとし
て命令Aが取り出される。
【0128】ステップ1405では、ステップ1402
において状態の集合Sから取り出された1つの状態s
と、ステップ1404において入力状態集合Xから取り
出された1つの入力状態xに基づいて、図7の入力情報
保持部704に保持されている動作モデルMを構成する
それぞれの状態変数の“遷移関数”によって、それぞれ
の状態変数の次時刻(次の命令サイクル)の状態s′が
計算される。また、状態sに至る命令列Ts に入力状態
xを付加した命令列が、次時刻の状態s′に至る命令列
s'として計算される。例えば、図18に示されるパイ
プライン構造に対応する動作モデルMが前述した状態数
最小化の処理が施されていない図20に示される初期動
作モデルM0 であると仮定した場合において、状態sが
図30のデータにより示される初期状態で、入力状態x
が命令Aである場合には、初期動作モデルM0 である動
作モデルMを構成するそれぞれの状態変数の“遷移関
数”により計算される次時刻の状態s′と、その状態に
至る命令列Ts'は、図31(a)のデータによって示され
る。この例の場合、初期動作モデルM0 である動作モデ
ルMの状態が、そのモデルを構成する全ての状態変数に
おいて処理する命令が無い状態である初期状態から、図
19のIFユニット1601に対応する#1の状態変数が
命令Aを実行した状態に変化する。動作モデルMが、図
20に示されるような初期動作モデルM0 ではなく図2
2に示されるような状態数最小化の処理が施された後の
動作モデルM2 であるような場合においても、動作モデ
ルM2 を構成するそれぞれの状態変数の“遷移関数”に
より、次時刻の状態s′と、その状態に至る命令列Ts'
を計算することができる。
【0129】ステップ1406では、ステップ1405
で計算された次時刻の状態s′が、入力情報保持部70
4に保持されている試験状態の集合Hに含まれるか否か
が判定される。例えば、図18に示されるパイプライン
構造に対応する動作モデルMが前述した状態数最小化の
処理が施されていない図20に示される初期動作モデル
0 であると仮定した場合において、次時刻の状態s′
が図31(a) のデータによって示される状態である場合
には、この状態と、図29に示されるようなデータ形式
で入力情報保持部704に保持されている例えば図23
に示されるそれぞれの試験状態が、一致するか否かが検
査される。なお、例えば図29に示されるケース1の試
験状態(図23参照)の場合、状態が設定されていない
状態変数は任意の状態を取ることができる。
【0130】ステップ1406において、次時刻の状態
s′が何れの試験状態とも一致しないと判定された場合
には、ステップ1407で、次時刻の状態の集合S′
に、次時刻の状態s′とその状態に至る命令列Ts'が追
加される。例えば、次時刻の状態s′を示す図31(a)
のデータとその状態に至る命令列Ts'のデータが、図7
の試験命令列列挙部705内の特には図示しないメモリ
内の次時刻の状態の集合S′のリストに追加される。
【0131】ステップ1409では、ステップ1403
で定義された入力状態集合Xから取り出されるべき入力
状態xがなくなったか否かが判定される。ステップ14
09の判定がNOなら、再びステップ1404が実行さ
れる。例えば、図18に示されるパイプライン構造に対
応する動作モデルMが前述した状態数最小化の処理が施
されていない図20に示される初期動作モデルM0 であ
ると仮定した場合において、入力状態集合X={A、
B、C、D}から、入力状態xとして、既に取り出され
た命令A以外の命令Bが取り出される。
【0132】次に、再びステップ1405が実行され
る。例えば、図18に示されるパイプライン構造に対応
する動作モデルMが前述した状態数最小化の処理が施さ
れていない図20に示される初期動作モデルM0 である
と仮定した場合において、状態sが図30のデータによ
って示される初期状態であり、入力状態xが命令Bであ
る場合には、初期動作モデルM0 である動作モデルMを
構成するそれぞれの状態変数の“遷移関数”によって計
算される次時刻の状態s′と、その状態に至る命令列T
s'は、図31(b) のデータによって示される。
【0133】更に、再びステップ1406が実行され、
例えば図31(b) のデータによって示される次時刻の状
態s′と、図29に示されるようなデータ形式で入力情
報保持部704に保持されている例えば図23に示され
るそれぞれの試験状態が、一致するか否かが検査され
る。
【0134】そして、ステップ1406において、再
び、次時刻の状態s′が何れの試験状態とも一致しない
と判定された場合には、再びステップ1407が実行さ
れることによって、次時刻の状態の集合S′に、次時刻
の状態s′を示す例えば図31(b) のデータが追加され
る。
【0135】その後、ステップ1409では、再び、ス
テップ1403で定義された入力状態集合Xから取り出
されるべき入力状態xがなくなったか否かが判定され
る。上述したステップ1404〜1409の一連の処理
が繰り返された結果、ステップ1409において、ステ
ップ1403で定義された入力状態集合Xから取り出さ
れるべき入力状態xがなくなったと判定された場合に
は、ステップ1410で、1時刻(1命令サイクル)前
に始めて到達した状態の集合Sから取り出されるべき状
態sがなくなったか否かが判定される。今、状態の集合
Sが初期状態である場合には、状態sは、例えば図30
のデータで示される1つの初期状態のみであるため、ス
テップ1410の判定はYESとなる。この結果、図1
3のステップ1303の処理が終了する。
【0136】図13のステップ1304では、上述のよ
うにして計算された次時刻の状態の集合S′に含まれる
状態s′とその状態に至る命令列Ts'のうち現在の時刻
(命令サイクル)までに到達している状態の集合Uに含
まれない状態とその状態に至る命令列が、次時刻に始め
て到達した状態の集合Sとされる。入力状態xが入力さ
れる命令が無いことを示す状態であったような場合、又
はパイプラインにおいてインターロックが発生すること
によりパイプライン全体の動作が停止したような場合に
おいては、次時刻の状態の集合S′に含まれる状態が現
在の時刻(命令サイクル)までに到達している状態の集
合Uに含まれる結果となる可能性がある。このため、ス
テップ1304の処理が必要となる。
【0137】その後、次時刻(次の命令サイクル)に対
応して、再び図13のステップ1303に対応する図1
4の動作フローチャートが実行される。そして、ステッ
プ1402において、1時刻(1命令サイクル)前に始
めて到達した状態の集合Sから、その1つの要素である
状態sとその状態sに至る命令列Ts として、例えば図
31(a) に示されるデータが取り出される。また、ステ
ップ1404において、ステップ1403で定義された
入力状態集合Xから、その1つの要素である入力状態x
として、例えば命令Aがが取り出される。この例でステ
ップ1405が実行されると、初期動作モデルM0 であ
る動作モデルMを構成するそれぞれの状態変数の“遷移
関数”により計算される次時刻の状態s′と、その状態
に至る命令列Ts'は、図32(a) のデータによって示さ
れる。この例の場合、初期動作モデルM0 である動作モ
デルMの状態が、図31(a) のデータで示されるように
図19のIFユニット1601に対応する#1の状態変数
が命令Aを実行した状態から、図32(a) のデータで示
されるように図19のIDユニット1602に対応する
#2の状態変数がIFユニット1601から出力された命
令Aを実行し、かつIFユニット1601に対応する#1
の状態変数が新たな命令Aを実行した状態に変化する。
【0138】この例においてステップ1406が実行さ
れると、例えば図32(a) のデータによって示される次
時刻の状態s′と、図29に示されるようなデータ形式
で入力情報保持部704に保持されている例えば図23
に示されるそれぞれの試験状態が、一致するか否かが検
査される。そして、ステップ1406において、次時刻
の状態s′が何れの試験状態とも一致しないと判定され
た場合には、ステップ1407が実行されることによっ
て、次時刻の状態の集合S′に、次時刻の状態s′とそ
の状態に至る命令列Ts'を示す、例えば図32(a) のデ
ータが追加される。
【0139】その後、ステップ1409では、ステップ
1403で定義された入力状態集合Xから取り出される
べき入力状態xがなくなったか否かが判定される。ステ
ップ1409の判定がNOなら、再びステップ1404
が実行される。上述の例において再びステップ1404
が実行されると、入力状態集合Xから、入力状態xとし
て、既に取り出された命令A以外の命令Bが取り出され
る。この例でステップ1405が実行されると、初期動
作モデルM0 である動作モデルMを構成するそれぞれの
状態変数の“遷移関数”により計算される次時刻の状態
s′と、その状態に至る命令列Ts'は、図32(b) のデ
ータによって示される。
【0140】この例において再びステップ1406が実
行されると、例えば図32(b) のデータによって示され
る次時刻の状態s′と、図29に示されるようなデータ
形式で入力情報保持部704に保持されている例えば図
23に示されるそれぞれの試験状態が、一致するか否か
が検査される。そして、ステップ1406において、次
時刻の状態s′が何れの試験状態とも一致しないと判定
された場合には、ステップ1407が実行されることに
よって、次時刻の状態の集合S′に、次時刻の状態s′
とその状態に至る命令列Ts'を示す、例えば図32(b)
のデータが追加される。
【0141】上述したステップ1404〜1409の一
連の処理が繰り返された結果、ステップ1409におい
て、ステップ1403で定義された入力状態集合Xから
取り出されるべき入力状態xがなくなったと判定された
場合には、ステップ1410で、1時刻(1命令サイク
ル)前に始めて到達した状態の集合Sから取り出される
べき状態sがなくなったか否かが判定される。上述の例
においてステップ1410が実行されると、状態の集合
Sには、既に処理された図31(a) に示される状態のほ
かに、例えば図31(b) に示される状態なども存在す
る。従って、ステップ1410の判定はNOとなる。
【0142】ステップ1410の判定がNOなら、再び
ステップ1402〜1409が実行される。この結果、
状態sとして取り出される例えば図31(b) に示される
状態と、入力状態集合Xに含まれる全ての入力状態xと
から、例えば図33(a) 及び(b) に示される次時刻の状
態s′とその状態に至る命令列Ts'が計算される。そし
て、それらの状態s′は試験状態の集合Hには含まれな
いため、それらの状態s′とその状態に至る命令列Ts'
が次時刻の状態の集合S′に追加される。
【0143】以上のようにして、時刻(命令サイクル)
の経過に従って現在の時刻までに到達している状態の集
合Uが計算されてゆく。そして、図14のステップ14
05が実行された時点において、次時刻の状態s′が例
えば図34に示されるデータとして計算された場合、こ
の状態は図29及び図23に示されるケース1の試験状
態と一致する。この結果、ステップ1406の判定がY
ESとなり、ステップ1408が実行される。このステ
ップ1408では、例えば図34に示されるように、次
時刻の状態s′に至る命令列Ts'={D、C、A、A}
が、図7の試験命令列列挙部705から試験命令列70
7として出力される。この場合、試験状態はパイプライ
ンハザードを発生させるため、試験状態に対応する図3
4に示される次時刻の状態s′は更にその次の時刻にお
いて基本遷移を起こすことはできない。このため、図3
4に示されるその状態とその状態に至る命令列は、次時
刻の状態の集合S′には追加されない。
【0144】ステップ1408の処理の後は、ステップ
1409が実行され、次時刻における別の状態s′が探
索される。ステップ1402〜1410の一連の処理が
繰り返され、状態の集合Sから取り出されるべき状態s
がなくなったと判定されると、図13のステップ130
3の処理が終了する。
【0145】上述の図14の動作フローチャートの処理
を含む図13のステップ1302〜1305の一連の処
理の繰返しにより示される図12のステップ1203の
処理が図7の試験命令列列挙部705において実行され
ることにより、動作モデルMが対象とする全ての試験命
令列のうちから、初期状態の集合S0 に含まれる、例え
ば図30に示される初期状態からの基本遷移のみにより
到達できる全ての試験状態を発生させる全ての試験命令
列707が抽出される。図24(a) 〜(d) に、図30に
示される初期状態からの基本遷移のみによって到達でき
る図23に示されるケース1の試験状態を発生させる試
験命令列707の例を示す。図24(a)のケース1−1
において示されている試験命令列={D、C、A、A}
が、図34の例に対応する。
【0146】試験状態の集合Hに図23に示される試験
状態が含まれる場合には、図23のケース2の試験状態
も図30に示される初期状態からの基本遷移のみによっ
て到達することができる。そして、特には図示しない
が、この試験状態を発生させる試験命令列707も、図
7の試験命令列列挙部705が図12のステップ120
3の処理を実行することにより、抽出することができ
る。
【0147】図7の試験命令列列挙部705が上述した
図12のステップ1203の処理を実行することにより
抽出される試験命令列707は、入力情報保持部704
に入力される試験状態の集合Hに含まれる例えば図23
として示される全ての試験状態を発生させるものではな
く、初期状態からの基本遷移のみによって到達できる試
験状態を発生させるものである。そこで、図7の試験命
令列列挙部705と次時刻状態計算部706は、更に、
図12のステップ1204〜1211を実行することに
より、初期状態からの基本遷移のみにより到達できる試
験状態以外の試験状態を発生させる試験命令列707を
抽出する。
【0148】具体的には、まず、図7の次時刻状態計算
部706が、図7の試験命令列列挙部705が図12の
ステップ1203の処理を実行することにより抽出した
それぞれの試験命令列707に対応する試験状態の発生
時刻(発生命令サイクル)の次時刻(次の命令サイク
ル)の状態を、動作モデルMを構成するそれぞれの状態
変数の“遷移関数”として設定されている設計仕様に従
って計算する。この場合に、動作モデルMを構成する状
態変数のうち上述の試験状態に関係する状態変数におい
ては、その状態変数の“遷移関数”として設定されてい
る設計仕様に従って、上述の試験状態によって引き起こ
されるパイプラインハザードが解決されるようにその状
態変数自身の状態が変化させられる。
【0149】その後、図7の試験命令列列挙部705
は、次時刻状態計算部706によって計算された新たな
状態からの基本遷移のみにより到達できる試験状態を発
生させる試験命令列707を抽出する。
【0150】上述の動作を実現する図12のステップ1
204〜1211の処理の詳細について、以下に説明す
る。なお、ステップ1204〜1208、及びステップ
1210、1211は、図7の次時刻状態計算部706
が実行し、ステップ1209は、図7の試験命令列列挙
部705が実行する。
【0151】まず、ステップ1204において、図7の
試験命令列列挙部705が前述した図12のステップ1
203の処理を実行することによって抽出した試験命令
列707に対応する試験状態が、試験状態の集合H1
含ませられる。そして、入力情報保持部704に保持さ
れている試験状態の集合Hに含まれ、かつ、試験状態の
集合H1 に含まれない試験状態が、試験状態の集合〜H
1 に含ませられる。なお、記号“〜H1 ”は、図12の
ステップ1204中では、記号“H1 ”の上に記号
“〜”が付加された記号として表現されている。この試
験状態の集合〜H1は、後述するステップ1210で使
用される。
【0152】次に、ステップ1205で、繰返しの回数
を示す変数iの値が、1に初期設定される。その後、ス
テップ1211で変数iの値が+1ずつインクリメント
されながら、ステップ1206〜1211の一連の処理
が繰り返し実行される。
【0153】まず、ステップ1206において試験状態
の集合Hi に試験状態が1つも含まれなくなったと判定
された場合、或いは、ステップ1207において試験状
態の集合〜Hi+1 に試験状態が1つも含まれなくなった
と判定された場合には、試験命令列707の抽出処理が
終了する。ここで、Hi の初期値はH1 、〜Hi の初期
値は〜H1 である。これらは、前述したステップ120
4において計算される。その後、Hi 及び〜Hi は、ス
テップ1210において計算される。
【0154】次に、図7の次時刻状態計算部706は、
ステップ1208において、試験状態の集合Hi の次時
刻(次の命令サイクル)の状態の集合Ki を計算する。
図15に、図12のステップ1208の処理の動作フロ
ーチャートを示す。
【0155】ステップ1501では、次時刻の状態の集
合Ki が空集合φとされる。ステップ1502では、処
理対象である試験状態の集合Hi から、その1つの要素
である状態hと、その状態hに至る命令列Th が取り出
される。例えば、図18に示されるパイプライン構造に
対応する動作モデルMが前述した状態数最小化の処理が
施されていない図20に示される初期動作モデルM0
あると仮定した場合において、図12における変数iの
値が1である場合には、試験状態の集合Hi =H1 に含
まれる状態hに至る命令列Th の一部には、図24(a)
〜(d)に示されるように、前述した図12のステップ1
203において抽出された80種類の試験命令列707
が含まれる。また、試験状態の集合Hi =H1 の要素の
一部には、状態hとして、図24(a) 〜(d) に示される
ように、上述の80種類の試験命令列707に対応する
80種類の試験状態が含まれる。これらの試験状態は、
図23のケース1の試験状態に対応する。更に、特には
図示しないが、上述の例において、試験状態の集合Hi
に含まれる状態hとその状態hに至る命令列Thとし
て、図23のケース2の試験状態に対応するものも存在
する。
【0156】ステップ1503においては、前述した図
14のステップ1403の場合と同様にして、図7の入
力情報保持部704に保持されている動作モデルMを構
成する全ての状態変数の“入力の集合”(図16)に設
定されている入力状態の集合が、入力状態集合Xとして
定義される。
【0157】ステップ1504では、前述した図14の
ステップ1404の場合と同様にして、ステップ150
3で定義された入力状態集合Xから、その1つの要素で
ある入力状態xが取り出される。
【0158】ステップ1505では、ステップ1502
において試験状態の集合Hi から取り出された1つの状
態hと、ステップ1504において入力状態集合Xから
取り出された1つの入力状態xに基づいて、図7の入力
情報保持部704に保持されている動作モデルMを構成
するそれぞれの状態変数に設計仕様として設定されてい
る“遷移関数”によって、それぞれの状態変数の次時刻
(次の命令サイクル)の状態kが計算される。また、状
態hに至る命令列Th に入力状態xを付加した命令列
が、次時刻の状態kに至る命令列Tk として計算され
る。この場合、動作モデルMを構成する状態変数のうち
上述の試験状態hに関係する状態変数においては、その
状態変数の“遷移関数”として設定されている設計仕様
に従って、上述の試験状態hによって引き起こされるパ
イプラインハザードが解決されるようにその状態変数自
身の状態が変化させられる。例えば、図18に示される
パイプライン構造に対応する動作モデルMが前述した状
態数最小化の処理が施されていない図20に示される初
期動作モデルM0 であると仮定した場合において、図1
2における変数iの値が1であって、かつ、状態hが図
24(a) 〜(d) の何れかの例に含まれる場合は、図19
のF3 ユニット1607に対応する#7の状態変数の“遷
移関数”が、図19のF1 ユニット1605に対応する
#5の状態変数から#7の状態変数に命令Cが入力されると
同時に図19のF2 ユニット1606に対応する#6の状
態変数から#7の状態変数に命令Dが入力されるというパ
イプラインハザードを解決するように、#7の状態変数自
身の状態を変化させる。より具体的には、例えば上記2
つの命令のうち先にパイプラインでの実行が開始された
命令(図24の例では命令D)を先に実行するという関
数規則を有する“遷移関数”が適用される。動作モデル
Mが、図20に示されるような初期動作モデルM0 でな
く図22に示されるような状態数最小化の処理が施され
た後の動作モデルM2であるような場合においても、動
作モデルM2 を構成するそれぞれの状態変数の“遷移関
数”により、次時刻の状態kと、その状態に至る命令列
k を計算することができる。
【0159】ステップ1506では、次時刻の状態の集
合Ki に、次時刻の状態kとその状態に至る命令列Tk
が追加される。これらのデータは、図7の次時刻状態計
算部706においては、例えば前述した図31(a) のデ
ータの形式と同様の形式で処理され、これらが次時刻状
態計算部706内の特には図示しないメモリ内の次時刻
の状態の集合Ki のリストに追加される。
【0160】ステップ1507では、ステップ1503
で定義された入力状態集合Xから取り出されるべき入力
状態xがなくなったか否かが判定される。ステップ15
07の判定がNOなら、再びステップ1504〜150
6の一連の処理が実行される。
【0161】上述したステップ1504〜1507の一
連の処理が繰り返された結果、ステップ1507におい
て、ステップ1503で定義された入力状態集合Xから
取り出されるべき入力状態xがなくなったと判定された
場合には、ステップ1508で、処理対象である試験状
態の集合Hi から取り出されるべき状態hがなくなった
か否かが判定される。
【0162】ステップ1508の判定がNOなら、再び
ステップ1502〜1507が実行される。この結果、
状態hとして取り出される例えば図24(a) 〜(d) に示
されるそれぞれの試験状態と、入力状態集合Xに含まれ
る全ての入力状態xとから、次時刻の状態kとその状態
に至る命令列Tk が計算される。そして、それらの状態
kが次時刻の状態の集合Ki に追加される。
【0163】処理対象である試験状態の集合Hi から取
り出されるべき状態hがなくなり、ステップ1508の
判定がYESとなると、図12のステップ1208の処
理が終了する。
【0164】ここで、例えば、図18に示されるパイプ
ライン構造に対応する動作モデルMが前述した状態数最
小化の処理が施されていない図20に示される初期動作
モデルM0 であると仮定した場合において、図12にお
ける変数iの値が1であり、かつ、試験状態の集合Hi
=H1 の要素の一部に図24(a) 〜(d) に示される試験
状態が含まれる場合は、上記ステップ1208の処理が
実行される結果、図24(a) 〜(d) に示される試験状態
が発生した時刻の次時刻の状態kと、その状態kに至る
命令列Tk として、図25(a) 〜(d) に示されるものが
計算される。なお、図24(a) 〜(d) に示される各ケー
スから図25(a) 〜(d) に示される各ケースへの遷移関
係は、図26に示される。
【0165】次に、図7の試験命令列列挙部705は、
図12のステップ1209で、次時刻状態計算部706
が図12のステップ1208において計算した新たな状
態の集合Ki に含まれるそれぞれの状態からの試験命令
列列挙の処理を実行する。この処理では、動作モデルM
が対象とする全ての試験命令列のうちから、状態の集合
i に含まれるそれぞれの状態からの基本遷移のみによ
って到達できる試験状態を発生させる試験命令列707
が抽出される。図12のステップ1209の処理は、図
12のステップ1203の処理と全く同様の、図13及
び図14の動作フローチャートにより示される。この処
理の結果、例えば、図25(a) 〜(d) に示される状態か
らの基本遷移のみによって到達できる図23に示される
ケース5の試験状態を発生させる試験命令列707の例
として、図27(a) 〜(d) に示されるものが計算され
る。なお、図25(a) 〜(d) に示される各ケースから図
27(a) 〜(d) に示される各ケースへの遷移関係は、図
28に示される。
【0166】以上のようにして、図7の試験命令列列挙
部705から新たな試験命令列707が出力される。続
いて、図7の次時刻状態計算部706は、図12のステ
ップ1210において、図7の試験命令列列挙部705
が上述した図12のステップ1209の処理を実行する
ことにより抽出した試験命令列707に対応する試験状
態が、試験状態の集合Hi+1 に含ませられる。そして、
今まで抽出されていない試験状態の集合〜Hi に含ま
れ、かつ、新たに抽出された試験状態の集合Hi+1 に含
まれない試験状態が、試験状態の集合〜Hi+1 に含ませ
られる。なお、記号“〜Hi+1 ”は、図12のステップ
1210中では、記号“Hi+1 ”の上に記号“〜”が付
加された記号として表現されている。
【0167】その後、ステップ1211で変数iの値が
+1インクリメントされた後に、ステップ1206〜1
211の処理が繰り返し実行される。以上の一連の処理
が、ステップ1206又は1207での判定がYESと
なるまで繰り返し実行されることにより、試験命令列列
挙部705は、入力情報保持部704に保持されている
試験状態の集合Hに含まれる全ての試験状態に対応する
試験命令列707を出力することができる。 <本発明の第2の実施例>次に、本発明の第2の実施例
について説明する。
【0168】第2の実施例では、動作モデルに対して試
験項目を指定するための入力情報として、第1の実施例
におけるような或る1つの時刻における試験状態の集合
ではなく、状態評価関数を指定できる点が特徴である。
【0169】図35は、本発明の第2の実施例の全体構
成図である。この構成は、図7に示される第1の実施例
に対応する構成のうち、704〜707の各部分を置き
換えて得られる構成である。従って、第2の実施例にお
いて、動作モデルMを生成する部分の構成及び機能は、
特には図示しないが、第1の実施例における図7の70
1〜703によって示される構成及び機能と同一であ
る。
【0170】まず、入力情報保持部3501は、動作モ
デルMとそのモデルに対する状態評価関数とからなる入
力情報を保持する。到達可能状態列挙部3502は、入
力情報保持部3501に保持された動作モデルMにおい
て、初期状態から到達することのできる全ての状態を列
挙する。このとき同時に、各状態に対する状態評価関数
も計算される。
【0171】試験命令列列挙部3503は、到達可能状
態列挙部3502によって列挙された、初期状態から到
達可能な各状態から、それら各状態について計算される
状態評価関数の値に基づいて、所定の状態を選択し、そ
の状態に至る試験命令列3504を列挙する。
【0172】以上の構成を有する第2の実施例の動作に
ついて、図36及び図37の動作フローチャートに従っ
て、詳細に説明する。図36は、第2の実施例の全体動
作フローチャートである。
【0173】まず、図36のステップ3601に示され
るように、図35に示される入力情報保持部3501に
は、第1の実施例における図7に示される状態数最小化
部703から出力される動作モデルMと予め設定されて
いる状態評価関数が入力されて、それらが保持される。
【0174】動作モデルMは、第1の実施例の場合と同
様に、前述した図16に示される状態変数の構造体の集
合として入力情報保持部3501に保持される。一方、
状態評価関数は、動作モデルMの状態が入力されるとそ
の評価値を出力する関数であり、動作モデルMによって
示されるパイプライン機構の設計誤りが検出されやすい
状態(パイプライン機構に負荷を与える状態)ほど大き
な値を出力するように定義される関数である。
【0175】具体的には、例えばパイプラインプロセッ
サでは、トラップを発生させた命令より前に実行された
命令はその実行を完了し、トラップを発生させた命令よ
り後に実行されるべき命令は実行されないままであるこ
とを検証しなければならない場合がある。そのために
は、パイプラインにできる限り多くの命令が詰った状態
かつトラップを発生させる状態が試験項目となるよう
に、状態評価関数が定義されればよい。そのような状態
評価関数は、例えば次式によって定義される。
【0176】
【数1】V(q)=Npipe(q) ・δtrap(q) ここで、qは、動作モデルMの状態、Npipe(q) は、状
態qにおいてパイプライン中に存在する命令の数、δ
trap(q) は、トラップを発生する状態のときに値1をと
り、その他の場合に値0をとるデルタ関数である。
【0177】上述の数1式で示されるような状態評価関
数が、所定のデータ形式で入力情報保持部3501に保
持される。上述したようにして、入力情報保持部350
1に動作モデルMと状態評価関数が保持された後、図3
5の到達可能状態列挙部3502によって、ステップ3
602〜3606の処理が実行される。これらの処理に
より、動作モデルMにおいて、その初期状態から到達す
ることのできる全ての状態が列挙される。
【0178】まず、ステップ3602では、初期状態か
ら到達することのできる状態の集合Uが空集合φとされ
る。また、状態の集合Sに、初期状態が設定される。こ
の初期状態は、第1の実施例の場合と同様、動作モデル
Mを構成する全ての状態変数の状態が処理する命令が無
い状態となっている状態である。そして、例えば、動作
モデルMが図18に示されるパイプライン構造に対応し
ている場合は、上述の初期状態は、例えば図30に示さ
れるデータ構造として保持される。
【0179】続いて、ステップ3603〜3606の一
連の処理が繰り返し実行される。これらの一連の処理
は、第1の実施例における図13に示される動作フロー
チャートのステップ1302〜1305の一連の処理に
対応しており、これらの一連の処理の1回の実行は、動
作モデルMに対応するパイプラインにおける1命令サイ
クルの時間経過に対応する。
【0180】上述の一連の処理のうちステップ3603
では、第1の実施例における図13のステップ1302
と同様に、動作モデルMにおいて、現在の時刻(命令サ
イクル)までに到達している状態の集合Uに、1時刻
(1命令サイクル)前に始めて到達した状態の集合Sの
内容が追加される。なお、状態の集合Sの初期値は、ス
テップ3602で設定される初期状態の集合である。
【0181】ステップ3604では、動作モデルMにお
いて、1時刻(1命令サイクル)前に始めて到達した状
態の集合Sに含まれる各状態から、基本遷移により到達
する次時刻(次の命令サイクル)の各状態が、次時刻の
状態の集合S′として計算される。
【0182】ステップ3605においては、第1の実施
例における図13のステップ1304と同様に、次時刻
の状態の集合S′に含まれる状態のうち現在の時刻(命
令サイクル)までに到達している状態の集合Uに含まれ
ない状態が、次時刻に始めて到達した状態の集合Sとさ
れる。
【0183】ステップ3606では、第1の実施例にお
ける図13のステップ1305と同様に、次時刻に始め
て到達した状態の集合Sが空集合φであるか否かが判定
される。
【0184】ステップ3606の判定がNOならば、次
時刻に始めて到達した状態の集合Sから更に次時刻にお
ける基本遷移によって到達できる状態を検索するため
に、ステップ3603〜3606の一連の処理が繰り返
される。
【0185】以上の図36のステップ3603〜360
6の一連の処理の繰返しによって、例えば図30に示さ
れる初期状態からの基本遷移のみによって到達できる全
ての状態が列挙される。
【0186】図37に、図36のステップ3604の処
理の動作フローチャートを示す。この動作フローチャー
トは、第1の実施例における図14の動作フローチャー
トに対応している。
【0187】ステップ3701では、次時刻の状態の集
合S′が空集合φとされる。ステップ3702では、1
時刻(1命令サイクル)前に始めて到達した状態の集合
Sから、その1つの要素である状態sと、その状態sに
至る命令列Ts が取り出される。第1の実施例における
図14のステップ1402と同様に、今、状態の集合S
が初期状態である場合には、状態sは、例えば図30に
示される初期状態のデータとして、図35の到達可能状
態列挙部3502内の特には図示しないメモリに保持さ
れている。また、状態sに至る命令列Ts は存在しな
い。
【0188】ステップ3703においては、第1の実施
例における図14のステップ1403と同様に、図7の
入力情報保持部704に保持されている動作モデルMを
構成する全ての状態変数の“入力の集合”(図16)に
設定されている入力状態の集合が、入力状態集合Xとし
て定義される。なお、この入力状態集合Xには、入力さ
れる命令が無い状態も含まれる。
【0189】ステップ3705においては、第1の実施
例における図14のステップ1404と同様に、ステッ
プ3702において状態の集合Sから取り出された1つ
の状態sと、ステップ3704において入力状態集合X
から取り出された1つの入力状態xに基づいて、図7の
入力情報保持部704に保持されている動作モデルMを
構成するそれぞれの状態変数の“遷移関数”によって、
それぞれの状態変数の次時刻(次の命令サイクル)の状
態s′が計算される。また、状態sに至る命令列Ts
入力状態xを付加した命令列が、次時刻の状態s′に至
る命令列Ts'として計算される。
【0190】ステップ3706では、動作モデルMの次
時刻の状態s′を入力として、状態評価関数V(s′)
が計算される。具体的には、状態評価関数V(s′)が
例えば前述の数1式で定義される場合には、まず、δ
trap(q) の値として、状態s′がトラップを発生する状
態のときには1、その他の場合には0が設定される。次
に、第1の実施例の場合と同様の例えば図31に示され
るようなデータ形式を有する状態s′について、何れか
命令に対応する記号O以外の記号が設定されている状態
変数の数が計数されることにより、状態s′においてパ
イプライン中に存在する命令の数Npipe (s′) が算出
される。その後、数1式に基づいて、状態評価関数V
(s′)が計算される。
【0191】ステップ3707では、次時刻の状態の集
合S′に、次時刻の状態s′と、その状態に至る命令列
s'と、その状態における状態評価関数V(s′)の計
算結果が追加される。
【0192】ステップ3708では、第1の実施例にお
ける図14のステップ1409と同様に、ステップ37
03で定義された入力状態集合Xから取り出されるべき
入力状態xがなくなったか否かが判定される。
【0193】ステップ3708の判定がNOなら、再び
ステップ3704〜3708が実行されることにより、
新たな入力状態xを入力とする、状態sの次時刻の状態
s′と、その状態に至る命令列Ts'と、その状態におけ
る状態評価関数V(s′)とが算出され、それらが次時
刻の状態の集合S′に追加される。
【0194】上述したステップ3704〜3708の一
連の処理が繰り返された結果、ステップ3708におい
て、ステップ3703で定義された入力状態集合Xから
取り出されるべき入力状態xがなくなったと判定された
場合には、第1の実施例における図14のステップ14
10と同様に、ステップ3709で、1時刻(1命令サ
イクル)前に始めて到達した状態の集合Sから取り出さ
れるべき状態sがなくなったか否かが判定される。
【0195】ステップ3709の判定がNOなら、再び
ステップ3702〜3708が実行される。この結果、
新たな状態sと、入力状態集合Xに含まれる全ての入力
状態xとから、状態sの次時刻の状態s′と、その状態
に至る命令列Ts'と、その状態における状態評価関数V
(s′)とが算出され、それらが次時刻の状態の集合
S′に追加される。
【0196】ステップ3702〜3709の一連の処理
が繰り返され、状態の集合Sから取り出されるべき状態
sがなくなったと判定されると、ステップ3709の判
定がYESとなって、図36ステップ3604の処理が
終了する。
【0197】以上に示されるステップ3602〜360
6の処理が図35の到達可能状態列挙部3502により
実行されることによって、動作モデルMにおいて、その
初期状態から到達することのできる全ての状態が列挙さ
れる。
【0198】その後、図36のステップ3607の処理
が図35の試験命令列列挙部3503によって実行され
る。このステップでは、上述の一連の処理によって初期
状態から到達することのできる状態の集合Uに登録され
ている、状態sと、その状態に至る命令列Ts と、その
状態における状態評価関数V(s)の複数の組合わせに
おいて、状態評価関数V(s)の値が大きい順に、所定
個の状態が選択され、その状態に至る命令列が上記集合
Uから取り出され、それが試験命令列3504(図3
5)として出力される。
【0199】上述の第2の実施例により、定性的に表現
されるような試験項目を状態評価関数の形式で指定する
ことができ、それに対応する試験命令列3504を、自
動的かつ効率的に生成することができる。 <本発明の第3の実施例>次に、本発明の第3の実施例
について説明する。
【0200】第3の実施例では、動作モデルに対して試
験項目を指定するための入力情報として、状態時系列を
指定できる点が特徴である。本発明の第3の実施例の全
体構成図は、第2の実施例の場合と同じ図35によって
示される。
【0201】第3の実施例においては、入力情報保持部
3501は、動作モデルMとそのモデルに対する状態時
系列の集合とからなる入力情報を保持する。到達可能状
態列挙部3502は、入力情報保持部3501に保持さ
れた動作モデルMにおいて、初期状態から到達すること
のできる全ての状態を列挙する。
【0202】試験命令列列挙部3503は、到達可能状
態列挙部3502によって列挙された、初期状態から到
達可能な各状態から、それら各状態によって構成される
状態時系列のうち、入力情報保持部3501に記憶され
ている状態時系列の集合内の1つの状態時系列と一致す
るものを選択し、その状態時系列を実現する試験命令列
3504を列挙する。
【0203】以上の構成を有する第3の実施例の動作に
ついて、図38〜図40の動作フローチャートに従っ
て、詳細に説明する。図38は、第3の実施例の全体動
作フローチャートである。
【0204】まず、図38のステップ3801に示され
るように、図35に示される入力情報保持部3501に
は、第1の実施例における図7に示される状態数最小化
部703から出力される動作モデルMと予め設定されて
いる状態時系列が入力され、それらが保持される。
【0205】動作モデルMは、第1、第2の実施例の場
合と同様に、前述した図16に示される状態変数の構造
体の集合として入力情報保持部3501に保持される。
一方、状態時系列は、動作モデルMが実現する或る任意
の期間の状態の時系列であり、試験項目に対応するパイ
プライン機構の動作条件となる一定期間の動作モデルM
の状態の時系列を規定する。なお、一般に1つの試験項
目に対して複数の状態時系列が存在し得る。
【0206】具体的には、或る種のパイプラインプロセ
ッサにおいて、命令の実行結果の書込みユニット(例え
ば、第1の実施例に関する図18のパイプライン構成に
おけるライトバックユニット1808)とレジスタファ
イルとの間にバッファが設けられ、このバッファによっ
て実際のライトバック動作がプログラム上のステップの
順番に対応するように修正されることにより、正確なト
ラップが実現されるように設計される場合がある。この
ようなパイプライン機構を検証するためには、数命令サ
イクルの間命令の完了順序が入れ替わる状態を発生さ
せ、バッファにデータを保持させた後に、トラップを発
生させるような試験命令列を生成する必要がある。第3
の実施例では、このような要求を満たす状態時系列の集
合が、入力情報保持部3501に入力され保持される。
【0207】上述したようにして、入力情報保持部35
01に動作モデルMと状態時系列の集合が保持された
後、図35の到達可能状態列挙部3502によって、ス
テップ3802〜3806の処理が実行される。これら
の処理により、動作モデルMにおいて、その初期状態か
ら到達することのできる全ての状態が列挙される。これ
らの処理は、第2の実施例における図36のステップ3
602〜3606の一連の処理に対応している。
【0208】まず、ステップ3802では、第2の実施
例における図36のステップ3602と同様に、初期状
態から到達することのできる状態の集合Uが空集合φと
される。また、状態の集合Sに、初期状態が設定され
る。
【0209】続いて、ステップ3803〜3806の一
連の処理が繰り返し実行される。これらの一連の処理
は、第1の実施例における図13のステップ1302〜
1305の一連の処理又は第2の実施例における図36
のステップ3603〜3606の一連の処理に対応して
いる。
【0210】上述の一連の処理のうちステップ3803
では、第1の実施例における図13のステップ1302
と同様に、動作モデルMにおいて、現在の時刻(命令サ
イクル)までに到達している状態の集合Uに、1時刻
(1命令サイクル)前に到達した状態の集合Sの内容が
追加される。なお、状態の集合Sの初期値は、ステップ
3802で設定される初期状態の集合である。
【0211】ステップ3804においては、動作モデル
Mにおいて、1時刻(1命令サイクル)前に到達した状
態の集合Sに含まれる各状態から、基本遷移により到達
する次時刻(次の命令サイクル)の各状態が、次時刻の
状態の集合S′として計算される。
【0212】ステップ3805においては、次時刻の状
態の集合S′に含まれる状態が、次時刻に到達した状態
の集合Sとされる。この処理は、第1の実施例における
図13のステップ1304及び第2の実施例における図
36のステップ3605とは異なって、次時刻の状態の
集合S′に含まれる状態が、現在の時刻(命令サイク
ル)までに到達している状態の集合Uに含まれていて
も、その状態は次時刻に到達した状態の集合Sとされ
る。これは、第3の実施例では、ある1時刻における状
態だけではなく状態の時系列が問題となるため、状態の
遷移順序を保存する必要があるためである。従って、状
態の集合Uには、複数の同じ到達状態に対して異なるラ
ベルが付与され得る。
【0213】一方において、ステップ3805では、次
時刻の状態の集合S′に含まれる状態のうち現在の時刻
(命令サイクル)までに到達している状態の集合Uに含
まれない状態も状態S″として保存される。
【0214】そして、続くステップ3806で、この状
態S″が空集合φであるか否かが判定される。即ち、ど
のように状態が遷移しても新しい状態が1つも発生しな
くなりこのステップ3806の判定がYESとなった時
点で、到達可能状態列挙部3502の動作が終了するこ
とになる。
【0215】ステップ3806の判定がNOならば、次
時刻に到達した状態の集合Sから更に次時刻における基
本遷移によって到達できる状態を検索するために、ステ
ップ3803〜3806の一連の処理が繰り返される。
【0216】以上の図38のステップ3803〜380
6の一連の処理の繰返しによって、例えば図30に示さ
れる初期状態からの基本遷移のみによって到達できる全
ての状態が列挙される。
【0217】図39に、図38のステップ3804の処
理の動作フローチャートを示す。この動作フローチャー
トは、第1の実施例における図14の動作フローチャー
ト又は第2の実施例における図37の動作フローチャー
トに対応している。
【0218】ステップ3901では、次時刻の状態の集
合S′が空集合φとされる。ステップ3902では、第
1の実施例における図14のステップ1402と同様
に、1時刻(1命令サイクル)前に到達した状態の集合
Sから、その1つの要素である状態sと、その状態sに
至る命令列Ts が取り出される。
【0219】ステップ3903においては、第1の実施
例における図14のステップ1403と同様に、図7の
入力情報保持部704に保持されている動作モデルMを
構成する全ての状態変数の“入力の集合”(図16)に
設定されている入力状態の集合が、入力状態集合Xとし
て定義される。
【0220】ステップ3905においては、第1の実施
例における図14のステップ1404と同様に、ステッ
プ3902において状態の集合Sから取り出された1つ
の状態sと、ステップ3904において入力状態集合X
から取り出された1つの入力状態xに基づいて、図7の
入力情報保持部704に保持されている動作モデルMを
構成するそれぞれの状態変数の“遷移関数”によって、
それぞれの状態変数の次時刻(次の命令サイクル)の状
態s′が計算される。また、状態sに至る命令列Ts
入力状態xを付加した命令列が、次時刻の状態s′に至
る命令列Ts'として計算される。
【0221】ステップ3906では、次時刻の状態の集
合S′に、次時刻の状態s′と、その状態に至る命令列
s'と、その状態の1時刻前の状態である現在時刻の状
態sが追加される。現在時刻の状態sが記憶されるの
は、後述する図38のステップ3807の処理におい
て、各到達状態から順次前の状態にバックトラックでき
るようにするためである。
【0222】ステップ3907では、第1の実施例にお
ける図14のステップ1409と同様に、ステップ39
03で定義された入力状態集合Xから取り出されるべき
入力状態xがなくなったか否かが判定される。
【0223】ステップ3907の判定がNOなら、再び
ステップ3904〜3907が実行されることにより、
新たな入力状態xを入力とする、状態sの次時刻の状態
s′と、その状態に至る命令列Ts'と、その状態の1時
刻前の状態である現在時刻の状態sとが算出され、それ
らが次時刻の状態の集合S′に追加される。
【0224】上述したステップ3904〜3907の一
連の処理が繰り返された結果、ステップ3907におい
て、ステップ3903で定義された入力状態集合Xから
取り出されるべき入力状態xがなくなったと判定された
場合には、第1の実施例における図14のステップ14
10と同様に、ステップ3908で、1時刻(1命令サ
イクル)前に到達した状態の集合Sから取り出されるべ
き状態sがなくなったか否かが判定される。
【0225】ステップ3908の判定がNOなら、再び
ステップ3902〜3907が実行される。この結果、
新たな状態sと、入力状態集合Xに含まれる全ての入力
状態xとから、状態sの次時刻の状態s′と、その状態
に至る命令列Ts'と、その状態の1時刻前の状態である
現在時刻の状態sとが算出され、それらが次時刻の状態
の集合S′に追加される。
【0226】ステップ3902〜3908の一連の処理
が繰り返され、状態の集合Sから取り出されるべき状態
sがなくなったと判定されると、ステップ3908の判
定がYESとなって、図38ステップ3804の処理が
終了する。
【0227】以上に示されるステップ3802〜380
6の処理が図35の到達可能状態列挙部3502により
実行されることによって、動作モデルMにおいて、その
初期状態から到達することのできる全ての状態が列挙さ
れる。
【0228】その後、図38のステップ3807の処理
が図35の試験命令列列挙部3503によって実行され
る。このステップでは、上述の一連の処理によって初期
状態から到達することのできる状態の集合Uに登録され
ている、状態sと、その状態に至る命令列Ts と、その
状態の1時刻前の状態である現在時刻の状態sの複数の
組合わせを用いて、それら状態によって構成される状態
時系列のうち、入力情報保持部3501に記憶されてい
る状態時系列の集合内の1つの状態時系列と一致するも
のが選択されて、その状態時系列を実現する試験命令列
3504が列挙される。
【0229】このステップ3807の詳細な動作フロー
チャートは、図40に示される。即ち、まず、ステップ
4001では、図35の入力情報保持部3501に入力
された状態時系列の集合のうちから1つの状態時系列が
選択される。
【0230】この選択に成功しステップ4002の判定
がNOとなったら、ステップ4003で、その選択され
た状態時系列を構成する複数の状態のうちの最終状態と
同じ状態が、図38のステップ3806までの処理によ
って列挙された、動作モデルMにおいて初期状態から到
達することのできる全ての状態の集合Uのなかから検索
される。
【0231】この検索に成功しステップ4004の判定
がNOとなったら、ステップ4005〜ステップ400
7の一連の処理の繰返しにより、その検索された状態か
ら順次1時刻(1命令サイクル)ずつバックトラックし
ながら、その検索された状態を最終状態とする状態時系
列が、ステップ4001によって現在選択されている状
態時系列と一致するか否かが検査される。
【0232】即ち、まず、ステップ4005において、
ステップ4003で検索された状態と共に集合Uに記憶
されているその状態の1時刻前の状態が、ステップ40
01によって現在選択されている状態時系列の最終状態
の1時刻前の状態と比較される。
【0233】ステップ4006では、ステップ4005
の比較結果が一致を示しているか否かが判定される。ス
テップ4005の比較結果が一致を示しておりステップ
4006の判定がYESなら、ステップ4007で、ス
テップ4001によって現在選択されている状態時系列
において直前に実行されたステップ4005での比較処
理に使用された状態が、その状態時系列の先頭の状態で
あるか否かが判定される。
【0234】ステップ4007の判定がNOならば、ス
テップ4005〜4007が再び実行されることによ
り、ステップ4003で検索された状態からバックトラ
ックされた状態であって前回の比較処理に使用された状
態が集合U上で検索され、その状態と共に集合Uに記憶
されているその状態の更に1時刻前の状態が、ステップ
4001によって現在選択されている状態時系列におい
て前回の比較処理に使用された状態の更に1時刻前の状
態と比較される。
【0235】そして、ステップ4007の判定がYES
となるまで、ステップ4005〜ステップ4006の一
連の処理が繰り返されることにより、ステップ4003
によって検索された状態からバックトラックして得られ
る状態時系列が、ステップ4001によって現在選択さ
れている状態時系列と一致するか否かが検査されるので
ある。
【0236】以上のようにして、最終的にステップ40
07の判定がYESとなると、ステップ4003によっ
て検索された状態からバックトラックして得られる状態
時系列が、ステップ4001によって現在選択されてい
る状態時系列と一致していることになる。
【0237】この場合には、ステップ4008で、ステ
ップ4003によって検索された最終状態と共に集合U
に記憶されている、その最終状態に至る命令列が、図3
5の試験命令列3504として出力される。
【0238】その後、ステップ4003の処理に戻り、
ステップ4001で選択された状態時系列を構成する複
数の状態のうちの最終状態と同じ状態が、集合U内に更
に存在するか否かが検索される。これは、図38のステ
ップ3805の説明で前述したように、状態の集合Uに
は、到達経路が異なる複数の同じ到達状態に対して異な
るラベルが付与され得るからである。
【0239】以上の一連の処理の繰返しにおいて、ステ
ップ4003で検索された状態からバックトラックされ
た状態と、ステップ4001によって現在選択されてい
る状態時系列上で最終状態からバックトラックされた状
態とが、途中で一致しなくなると、ステップ4006の
判定がNOとなる。この場合には、ステップ4003で
検索された状態からのバックトラックは諦められ、再び
ステップ4003の処理に戻って、ステップ4001で
選択された状態時系列を構成する複数の状態のうちの最
終状態と同じ状態が、集合U内に更に存在するか否かが
検索される。
【0240】また、ステップ4003の処理の結果、ス
テップ4001で選択された状態時系列を構成する複数
の状態のうちの最終状態と同じ状態が、集合U内にそれ
以上存在しなくなると又は最初から全く存在しないと、
ステップ4004の判定がYESとなる。この場合に
は、ステップ4001の処理に戻り、図35の入力情報
保持部3501に入力された状態時系列の集合のうちか
ら別の1つの状態時系列が選択され、ステップ4002
以降の処理が実行される。
【0241】最後に、ステップ4001の処理の結果、
図35の入力情報保持部3501に入力された状態時系
列の集合に、これ以上選択されるべき状態時系列が存在
しなくなった場合には、ステップ4002の判定がYE
Sとなり、図38のステップ3807の処理を終了す
る。
【0242】上述の第3の実施例により、一定期間にわ
たって特定の状態を発生させるような試験命令列350
4を、自動的かつ効率的に生成することができる。 <本発明の第4の実施例>次に、本発明の第4の実施例
について説明する。
【0243】第4の実施例では、動作モデルに対して試
験項目を指定するための入力情報として、状態時系列の
評価関数を指定できる点が特徴である。本発明の第4の
実施例の全体構成図は、第2の実施例の場合と同じ図3
5によって示される。
【0244】第4の実施例においては、入力情報保持部
3501は、動作モデルMとそのモデルに対する状態時
系列の評価関数とからなる入力情報を保持する。到達可
能状態列挙部3502は、入力情報保持部3501に保
持された動作モデルMにおいて、初期状態から到達する
ことのできる全ての状態を列挙する。
【0245】試験命令列列挙部3503は、到達可能状
態列挙部3502によって列挙された、初期状態から到
達可能な各状態から、それら各状態によって構成される
状態時系列のうち、その状態時系列に対する、入力情報
保持部3501に記憶されている評価関数の計算結果の
値が大きい順に所定個の状態時系列に対応する所定個の
最終状態を選択し、各最終状態に至る試験命令列350
4を列挙する。
【0246】以上の構成を有する第4の実施例の動作に
ついて、図41及び図42の動作フローチャートに従っ
て、詳細に説明する。図41は、第4の実施例の全体動
作フローチャートである。
【0247】まず、図41のステップ4101に示され
るように、図35に示される入力情報保持部3501に
は、第1の実施例における図7に示される状態数最小化
部703から出力される動作モデルMと予め設定されて
いる状態時系列の評価関数が入力され、それらが保持さ
れる。
【0248】動作モデルMは、第1〜第3の実施例の場
合と同様に、前述した図16に示される状態変数の構造
体の集合として入力情報保持部3501に保持される。
一方、状態時系列の評価関数は、動作モデルMが実現す
る或る任意の期間の状態時系列が入力されるとその評価
値を出力する関数であり、動作モデルMによって示され
るパイプライン機構の設計誤りが検出されやすい状態時
系列(パイプライン機構に負荷を与える状態時系列)ほ
ど大きな値を出力するように定義される関数である。
【0249】具体的には、プログラム上のレジスタ番号
と物理レジスタ番号との間で動的に番号の付替えを行
う、いわゆるレジスタリネーミング機構を有するパイプ
ラインプロセッサが存在するが、このようなプロセッサ
においては、リネーミングのための物理レジスタの数
(リネーミングスペース)が不足する場合が問題とな
る。この不足が生じないように設計されたプロセッサに
おいて本当にこの不足が発生しないことを検証するため
には、できるだけ多くのリネーミングスペースが消費さ
れるような試験命令列が必要となる。このような要求を
満たす状態時系列の評価関数が、入力情報保持部350
1に入力され保持される。より具体的には、この例の場
合における評価関数は、状態時系列中に含まれる各状態
において消費されるリネーミングスペースの、その状態
時系列中の全状態にわたる総和を規定するような関数で
ある。
【0250】上述したようにして、入力情報保持部35
01に動作モデルMと状態時系列の評価関数が保持され
た後、図35の到達可能状態列挙部3502によって、
ステップ4102〜4106の処理が実行される。これ
らの処理により、動作モデルMにおいて、その初期状態
から到達することのできる全ての状態が列挙される。こ
れらの処理は、第3の実施例における図38のステップ
3802〜3806の一連の処理と同じである。
【0251】まず、ステップ4102では、第3の実施
例における図38のステップ3802と同様に、初期状
態から到達することのできる状態の集合Uが空集合φと
される。また、状態の集合Sに、初期状態が設定され
る。
【0252】続いて、ステップ4103〜4106の一
連の処理が繰り返し実行される。まず、ステップ410
3では、第3の実施例における図38のステップ380
3と同様に、動作モデルMにおいて、現在の時刻(命令
サイクル)までに到達している状態の集合Uに、1時刻
(1命令サイクル)前に到達した状態の集合Sの内容が
追加される。なお、状態の集合Sの初期値は、ステップ
4102で設定される初期状態の集合である。
【0253】ステップ4104においては、第3の実施
例における図38のステップ3804と同様に、動作モ
デルMにおいて、1時刻(1命令サイクル)前に到達し
た状態の集合Sに含まれる各状態から、基本遷移により
到達する次時刻(次の命令サイクル)の各状態が、次時
刻の状態の集合S′として計算される。この処理の詳細
は、第3の実施例において示した図39の動作フローチ
ャートによって示される。
【0254】ステップ4105においては、第3の実施
例における図38のステップ3805と同様に、次時刻
の状態の集合S′に含まれる状態が、次時刻に到達した
状態の集合Sとされる。この場合、第3の実施例の場合
と同様に、次時刻の状態の集合S′に含まれる状態が、
現在の時刻までに到達している状態の集合Uに含まれて
いても、その状態は次時刻に到達した状態の集合Sとさ
れる。これは、第4の実施例においても、ある1時刻に
おける状態だけではなく状態の時系列が問題となるた
め、状態の遷移順序を保存する必要があるためである。
従って、状態の集合Uには、複数の同じ到達状態に対し
て異なるラベルが付与され得る。
【0255】また、ステップ4105では、第3の実施
例における図38のステップ3805と同様に、次時刻
の状態の集合S′に含まれる状態のうち現在の時刻まで
に到達している状態の集合Uに含まれない状態も状態
S″として保存される。
【0256】そして、続くステップ4106で、第3の
実施例における図38のステップ3806と同様に、こ
の状態S″が空集合φであるか否かが判定される。即
ち、どのように状態が遷移しても新しい状態が1つも発
生しなくなりこのステップ4106の判定がYESとな
った時点で、到達可能状態列挙部3502の動作が終了
することになる。
【0257】ステップ4106の判定がNOならば、次
時刻に到達した状態の集合Sから更に次時刻における基
本遷移によって到達できる状態を検索するために、ステ
ップ4103〜4106の一連の処理が繰り返される。
【0258】以上の図41のステップ4103〜410
6の一連の処理の繰返しによって、例えば図30に示さ
れる初期状態からの基本遷移のみによって到達できる全
ての状態が列挙される。
【0259】その後、図41のステップ4107と41
08の処理が図35の試験命令列列挙部3503によっ
て実行される。まずステップ4107では、上述の一連
の処理によって初期状態から到達することのできる状態
の集合Uに登録されている、状態sと、その状態に至る
命令列Ts と、その状態の1時刻前の状態である現在時
刻の状態sの複数の組合わせを用いて、それら状態によ
って構成される全ての状態時系列について、その状態時
系列の評価関数が計算される。
【0260】このステップ4107の詳細な動作フロー
チャートは、図42に示される。即ち、まず、ステップ
4201では、図41のステップ4106までの処理に
よって列挙された、動作モデルMにおいて初期状態から
到達することのできる全ての状態の集合Uのなかから、
1つの到達状態が選択される。
【0261】この検索に成功しステップ4202の判定
がNOとなったら、ステップ4203で、ステップ42
01で選択された状態を用いて、現在バックトラックさ
れている状態時系列の評価関数が計算される。具体的に
は、その状態におけるリネーミングスペースが計算さ
れ、現在バックトラックされている状態時系列の評価関
数の計算結果に累算される。上述のリネーミングスペー
スの計算は、第1の実施例の場合と同様の例えば図31
に示されるようなデータ形式を有する1つの状態につい
て、各状態変数に対応する例えば図16及び図17に示
されるデータ形式を有する動作テーブルに設定されてい
るリネーミングスペースを、当該状態内の全状態変数に
わたって合計する計算として実現できる。
【0262】その後、ステップ4204〜4206の一
連の処理の繰返しにより、ステップ4201で選択され
た状態から順次1時刻(1命令サイクル)ずつバックト
ラックしながら、初期状態に到達するまで、バックトラ
ックによって生成される状態時系列に対する評価関数が
順次計算される。
【0263】即ち、まず、ステップ4204において、
ステップ4201で選択された状態と共に集合Uに記憶
されているその状態の1時刻前の状態が選択される。次
に、ステップ4205において、ステップ4203の場
合と同様に、ステップ4204で選択された状態を用い
て、現在バックトラックされている状態時系列の評価関
数が計算される。即ち、ステップ4204で選択された
状態におけるリネーミングスペースが計算され、現在バ
ックトラックされている状態時系列の評価関数の計算結
果に累算される。
【0264】ステップ4206では、ステップ4204
で選択された状態が動作モデルMにおける初期状態であ
るか否かが判定される。ステップ4206の判定がNO
なら、ステップ4204の処理に戻り、状態時系列のバ
ックトラックが進められる。
【0265】ステップ4206の判定がYESとなる
と、ステップ4201で選択された状態を最終状態とす
る状態時系列のバックトラックが終了し、その状態時系
列に対する最終的な評価関数の計算結果が算出されたこ
とになる。
【0266】この後、ステップ4207で、集合U内
の、ステップ4201で選択された状態に対応する要素
位置に、その状態を最終状態とする状態時系列に対する
上述の評価関数の計算結果が登録される。
【0267】その後、ステップ4201の処理に戻り、
集合Uのなかから別の1つの到達状態が選択され、ステ
ップ4202以降の処理が繰り返される。そして、集合
Uにおいてこれ以上選択されるべき到達状態が存在しな
くなり、ステップ4202の判定がYESとなると、図
41のステップ4107の処理を終了する。
【0268】最後に、図41のステップ4108では、
上述の一連の処理によって初期状態から到達することの
できる状態の集合Uに登録されている、各到達状態(各
状態時系列の最終状態)と、その到達状態に至る命令列
と、その到達状態を最終状態とする状態時系列の評価関
数の計算結果の組合せにおいて、評価関数の値が大きい
順に、所定個の到達状態が選択され、その到達状態に至
る命令列が上記集合Uから取り出され、それが試験命令
列3504(図35)として出力される。
【0269】上述の第4の実施例により、一定期間にわ
たって定性的に表現される試験状態となる試験命令列3
504を、自動的かつ効率的に生成することができる。 <その他の実施態様>最後に、本発明のその他の実施態
様について説明する。
【0270】まず、本発明では、自動生成された試験命
令列に、プロセッサの初期状態を設定する命令列及び終
了状態を保存する命令列が付加されることにより、パイ
プライン制御機構の検証用の試験命令列を生成すること
もできる。
【0271】また、本発明は、試験命令列の自動生成の
みならず、プロセッサを構成するパイプラインに対応す
る動作モデルに対して何等かの解析を行う一般的な技術
に適用できる。特に、動作モデルに対して状態数最小化
処理を実行する技術を用いることにより、その処理の結
果として得られる動作モデルに対応して、最適化された
パイプラインを再構成することも可能となる。
【0272】
【発明の効果】本発明の第1〜第3の態様によれば、パ
イプラインに関する基本的な情報を入力するだけで、自
動的にプロセッサの動作モデルや試験命令列(テストプ
ログラム)を生成することが可能となる。この結果、テ
ストプログラムの開発者は、初期設計及び設計変更に伴
う工数を大幅に削減できるため、プロセッサの開発サイ
クル短縮に寄与するところが大きい。
【0273】特に、本発明の第2の態様により構成され
る動作モデルは、試験命令列の自動生成の効率化を実現
するのみならず、構成される動作モデルに対応する最適
化されたパイプラインを再構成することも可能となる。
この結果、本発明は、初期的なハードウエア設計のため
の技術としても利用することができる。
【0274】また、本発明の第3の態様によれば、試験
命令列302の抽出の処理を大幅に効率化することが可
能となる。本発明の第4の態様によれば、トラップ制御
などの定性的に表現される試験項目を、状態を評価する
状態評価関数によって効率的に定義することができ、そ
れに対応する試験命令列を、自動的かつ効率的に生成す
ることが可能となる。
【0275】本発明の第5の態様によれば、一定期間命
令の完了順序が入れ替わるような状態の時系列を状態の
時系列として指定することができ、一定期間にわたって
特定の状態を発生させるような試験命令列を、自動的か
つ効率的に生成することが可能となる。
【0276】本発明の第6の態様では、一定期間の状態
が定性的に表現される試験項目を、状態の時系列を評価
する評価関数によって効率的に定義することができ、そ
れに対応する試験命令列を、自動的かつ効率的に生成す
ることが可能となる。
【0277】更に、本発明の全般について挙げることが
できる効果として、本発明により自動生成された試験命
令列の集合は、それぞれ異なるパイプラインハザード発
生ケースに対応させることができるのみならず、それぞ
れの集合から代表的な要素が取り出されることによっ
て、様々なパイプラインハザードの発生ケースを網羅的
に検証することが可能となる。
【0278】また、現在のプロセッサにおいては、命令
の種類によりパイプライン経路が変更されたりレジスタ
値がフォワーディング等されるため、パイプラインがイ
ンターロックを起こさない場合においても制御機構の検
証が重要となる場合がある。本発明により自動生成され
る試験命令列の集合は、それぞれが特定のパイプライン
制御パターンに対応しているため、それら制御パターン
に対応して特定の制御機構が動作する状況を列挙するよ
うな作業にも役立てることができる。
【図面の簡単な説明】
【図1】本発明のブロック図(その1)である。
【図2】本発明のブロック図(その2)である。
【図3】本発明のブロック図(その3)である。
【図4】本発明のブロック図(その4)である。
【図5】本発明のブロック図(その5)である。
【図6】本発明のブロック図(その6)である。
【図7】本発明の第1の実施例の全体構成図である。
【図8】第1の実施例の全体動作フローチャート(その
1)である。
【図9】状態数最小化処理の動作フローチャートであ
る。
【図10】入力段側からの状態数最小化処理の動作フロ
ーチャートである。
【図11】最終段側からの状態数最小化処理の動作フロ
ーチャートである。
【図12】第1の実施例の全体動作フローチャート(そ
の2)である。
【図13】試験命令列列挙処理の動作フローチャートで
ある。
【図14】基本遷移による次時刻の状態集合S′の計算
と試験命令列出力の処理の動作フローチャートである。
【図15】次時刻状態集合の計算処理の動作フローチャ
ートである。
【図16】状態変数の構造体を示した図である。
【図17】動作テーブルのデータ構造を示した図であ
る。
【図18】仕様情報によって表されるパイプライン構成
の例を示した図である。
【図19】仕様情報によって表される命令の実行形態の
例を示した図である。
【図20】初期動作モデルM0 の例を示した図である。
【図21】動作モデルM1 の例を示した図である。
【図22】動作モデルM2 の例を示した図である。
【図23】試験状態の集合Hの例を示した図である。
【図24】初期状態からの基本遷移のみによって到達で
きるケース1の試験状態を発生させる試験命令列の例を
示した図である。
【図25】ケース1−1、1−2、1−3、1−4の状
態の次時刻の状態を示した図である。
【図26】ケース1とケース1′の関係を示した図であ
る。
【図27】ケース1′−1、1′−2、1′−3、1′
−4の状態からの基本遷移のみによえ到達できるケース
5の試験状態を発生させる試験命令列の例を示した図で
ある。
【図28】ケース1′とケース5の関係を示した図であ
る。
【図29】試験状態のデータ構造の例を示した図であ
る。
【図30】初期状態のデータ構造の例を示した図であ
る。
【図31】基本遷移の後のs′とTs'のデータ構造の例
(その1)を示した図である。
【図32】基本遷移の後のs′とTs'のデータ構造の例
(その2)を示した図である。
【図33】基本遷移の後のs′とTs'のデータ構造の例
(その3)を示した図である。
【図34】試験状態に対応するs′とTs'のデータ構造
の例を示した図である。
【図35】本発明の第2〜第4の実施例の全体構成図で
ある。
【図36】第2の実施例の全体動作フローチャートであ
る。
【図37】第2の実施例における基本遷移による次時刻
の状態集合S′の計算の処理の動作フローチャートであ
る。
【図38】第3の実施例の動作フローチャートである。
【図39】第3及び第4の実施例における基本遷移によ
る次時刻の状態集合S′の計算の処理の動作フローチャ
ートである。
【図40】第3の実施例における実現可能な状態時系列
の計算と試験命令列ん出力の処理の動作フローチャート
である。
【図41】第4の実施例の動作フローチャートである。
【図42】第4の実施例における状態時系列の選択とそ
の評価関数の計算の処理の動作フローチャートである。
【符号の説明】
101、201 仕様情報 102、202 仕様情報保持手段 103、205、301 動作モデル 104 動作モデル構成手段 105、302 試験状態 106 試験状態列挙手段 107、305 試験命令列 108 試験命令列生成手段 203 初期動作モデル 204 初期動作モデル構成手段 206 状態数最小化手段 303 入力情報保持手段 304 入力状態 306 試験命令列列挙手段 307 次時刻状態 308 次時刻状態計算手段 401、407、501、507、601、607
動作モデル 402、408 状態評価関数 403、503、603 入力情報保持手段403 404 到達可能状態列挙手段 405、413、505、513、605、613
試験命令列 406、506、606 試験命令列列挙手段 409、509、609 入力情報保持手段 410、510、610 到達可能状態列挙手段 411 状態評価関数計算手段 412、511、611 命令列列挙手段 414、514、614 試験命令列出力手段 502、508 状態の時系列 602、608 状態の時系列の評価関数 504、604 到達可能状態時系列列挙手段 701 仕様情報保持部 702 初期動作モデル構成部 703 状態数最小化部 704、3501 入力情報保持部 705 試験命令列列挙部 706 次時刻状態計算部 707、3504 試験命令列 3502 到達可能状態列挙部 3503 試験命令列列挙部 M0 初期動作モデル M1 、M2 、M 動作モデル H 試験状態の集合
───────────────────────────────────────────────────── フロントページの続き (72)発明者 広瀬 文保 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (56)参考文献 特開 平7−73037(JP,A) 特開 平5−342055(JP,A) 岩下洋哲、他,プロセッサのパイプラ インを対象としたテストプログラム自動 生成,信学技報,電子情報通信学会, 1994年4月23日,94/118,23−30 (58)調査した分野(Int.Cl.7,DB名) G06F 11/22 310 G06F 9/38 380

Claims (18)

    (57)【特許請求の範囲】
  1. 【請求項1】 プロセッサのパイプラインの構成及び前
    記プロセッサが実行する各命令に関する仕様情報に基づ
    き、前記パイプラインの動作を表現し、前記パイプライ
    ンの各構成部分の状態とそれらの状態の遷移関係を複数
    の状態変数によって表現する動作モデルを構成し、 該動作モデルに含まれる複数の状態変数の状態が競合を
    起こすような状態である試験状態を列挙し、 前記動作モデルの状態がその初期状態から前記各試験状
    態へ遷移する過程に対応した試験命令列を生成する、 ことを特徴とするプロセッサの動作モデルと論理検証用
    試験命令列の自動生成方法。
  2. 【請求項2】 プロセッサのパイプラインの構成及び前
    記プロセッサが実行する各命令に関する仕様情報を保持
    する仕様情報保持手段と、 該仕様情報保持手段が保持する仕様情報に基づき、前記
    パイプラインの動作を表現し、前記パイプラインの各構
    成部分の状態とそれらの状態の遷移関係を複数の状態変
    数によって表現する動作モデルを構成する動作モデル構
    成手段と、 該動作モデル構成手段によって構成される動作モデルに
    含まれる複数の状態変数の状態が競合を起こすような状
    態である試験状態を列挙する試験状態列挙手段と、 前記動作モデル構成手段によって構成される動作モデル
    の状態がその初期状態から前記試験状態列挙手段によっ
    て列挙される各試験状態へ遷移する過程に対応した試験
    命令列を生成する試験命令列生成手段と、 を有することを特徴とするプロセッサの動作モデルと論
    理検証用試験命令列の自動生成装置。
  3. 【請求項3】 プロセッサのパイプラインの構成及び前
    記プロセッサが実行する各命令に関する仕様情報に基づ
    き、前記パイプラインの動作を表現し、前記パイプライ
    ンの各構成部分の状態とそれらの状態の遷移関係を複数
    の状態変数によって表現する動作モデルを初期動作モデ
    ルとして構成し、 該初期動作モデルに含まれる各状態変数が有する複数の
    状態を、それらの状態が有する属性に基づいてグループ
    化することにより、前記各状態変数が有する状態の数を
    最小化し、該最小化が行われた動作モデルを構成する、 ことを特徴とするプロセッサの動作モデルの自動生成方
    法。
  4. 【請求項4】 プロセッサのパイプラインの構成及び前
    記プロセッサが実行する各命令に関する仕様情報を保持
    する仕様情報保持手段と、 該仕様情報保持手段が保持する仕様情報に基づき、前記
    パイプラインの動作を表現し、前記パイプラインの各構
    成部分の状態とそれらの状態の遷移関係を複数の状態変
    数によって表現する動作モデルを初期動作モデルとして
    構成する初期動作モデル構成手段と、 該初期動作モデル構成手段によって構成される初期動作
    モデルに含まれる各状態変数が有する複数の状態を、そ
    れらの状態が有する属性に基づいてグループ化すること
    により、前記各状態変数が有する状態の数を最小化し、
    該最小化が行われた動作モデルを構成する状態数最小化
    手段と、 を有することを特徴とするプロセッサの動作モデルの自
    動生成装置。
  5. 【請求項5】 プロセッサのパイプラインの構成及び前
    記プロセッサが実行する各命令に関する仕様情報に基づ
    き、前記パイプラインの動作を表現し、前記パイプライ
    ンの各構成部分の状態とそれらの状態の遷移関係を複数
    の状態変数により表現される動作モデルと、該動作モデ
    ルに含まれる複数の状態変数の状態が競合を起こすよう
    な状態である試験状態を、入力情報として入力し、 該入力情報として入力される動作モデルを構成する複数
    の状態変数の状態が競合を起こす状態を含むことなく、
    前記動作モデルの状態が所定の入力状態から前記入力情
    報保持手段に保持される試験状態のうちの何れかへ遷移
    する過程に対応した試験命令列を列挙し、 前記入力情報として入力される動作モデルを構成する複
    数の状態変数の状態が、前記列挙された試験命令列に対
    応する試験状態になった後に次に遷移する状態である次
    時刻状態を計算し、該次時刻状態を前記所定の入力状態
    として前記試験命令列を列挙する処理を繰り返し実行さ
    せる、 ことを特徴とする論理検証用試験命令列の自動生成方
    法。
  6. 【請求項6】 プロセッサのパイプラインの構成及び前
    記プロセッサが実行する各命令に関する仕様情報に基づ
    き、前記パイプラインの動作を表現し、前記パイプライ
    ンの各構成部分の状態とそれらの状態の遷移関係を複数
    の状態変数により表現される動作モデルと、該動作モデ
    ルに含まれる複数の状態変数の状態が競合を起こすよう
    な状態である試験状態を、入力情報として保持する入力
    情報保持手段と、 該入力情報保持手段に保持された動作モデルを構成する
    複数の状態変数の状態が競合を起こす状態を含むことな
    く、前記動作モデルの状態が所定の入力状態から前記入
    力情報保持手段に保持される試験状態のうちの何れかへ
    遷移する過程に対応した試験命令列を列挙する試験命令
    列列挙手段と、 前記入力情報保持手段に保持された動作モデルを構成す
    る複数の状態変数の状態が、前記試験命令列列挙手段が
    列挙した試験命令列に対応する試験状態になった後に次
    に遷移する状態である次時刻状態を計算し、該次時刻状
    態を前記所定の入力状態として前記試験命令列列挙手段
    に入力させる次時刻状態計算手段と、 を有することを特徴とする論理検証用試験命令列の自動
    生成装置。
  7. 【請求項7】 プロセッサのパイプラインの構成及び前
    記プロセッサが実行する各命令に関する仕様情報に基づ
    き、前記パイプラインの動作を表現し、前記パイプライ
    ンの各構成部分の状態とそれらの状態の遷移関係を複数
    の状態変数により表現される動作モデルと、該動作モデ
    ルに含まれる複数の状態変数の状態を入力とする状態評
    価関数を、入力情報として入力し、 該入力情報として入力される動作モデルを構成する複数
    の状態変数についてその初期状態から到達可能な状態で
    あって、前記状態評価関数の値が所定の条件を満たす状
    態を列挙し、 該列挙される状態に至る命令列を試験命令列として列挙
    する、 ことを特徴とする論理検証用試験命令列の自動生成方
    法。
  8. 【請求項8】 プロセッサのパイプラインの構成及び前
    記プロセッサが実行する各命令に関する仕様情報に基づ
    き、前記パイプラインの動作を表現し、前記パイプライ
    ンの各構成部分の状態とそれらの状態の遷移関係を複数
    の状態変数により表現される動作モデルと、該動作モデ
    ルに含まれる複数の状態変数の状態を入力とする状態評
    価関数を、入力情報として保持する入力情報保持手段
    と、 該入力情報として入力される動作モデルを構成する複数
    の状態変数についてその初期状態から到達可能な状態で
    あって、前記状態評価関数の値が所定の条件を満たす状
    態を列挙する到達可能状態列挙手段と、 該到達可能状態列挙手段によって列挙される状態に至る
    命令列を試験命令列として列挙する試験命令列列挙手段
    と、 を有することを特徴とする論理検証用試験命令列の自動
    生成装置。
  9. 【請求項9】 プロセッサのパイプラインの構成及び前
    記プロセッサが実行する各命令に関する仕様情報に基づ
    き、前記パイプラインの動作を表現し、前記パイプライ
    ンの各構成部分の状態とそれらの状態の遷移関係を複数
    の状態変数により表現される動作モデルと、該動作モデ
    ルに含まれる複数の状態変数の状態を入力とする状態評
    価関数を、入力情報として入力し、 該入力情報として入力される動作モデルを構成する複数
    の状態変数についてその初期状態から到達可能な状態を
    列挙し、 該列挙される状態に対応する前記状態評価関数の値を計
    算し、 前記列挙される状態に至る命令列を列挙し、 前記計算される値が所定の条件を満たす状態を前記列挙
    される状態から選択し、 該選択された状態に対応する命令列を前記列挙される命
    令列から選択し、 該選択された命令列を試験命令列として選択する、 ことを特徴とする論理検証用試験命令列の自動生成方
    法。
  10. 【請求項10】 プロセッサのパイプラインの構成及び
    前記プロセッサが実行する各命令に関する仕様情報に基
    づき、前記パイプラインの動作を表現し、前記パイプラ
    インの各構成部分の状態とそれらの状態の遷移関係を複
    数の状態変数により表現される動作モデルと、該動作モ
    デルに含まれる複数の状態変数の状態を入力とする状態
    評価関数を、入力情報として保持する入力情報保持手段
    と、 該入力情報として入力される動作モデルを構成する複数
    の状態変数についてその初期状態から到達可能な状態を
    列挙する到達可能状態列挙手段と、 該到達可能状態列挙手段によって列挙される状態に対応
    する前記状態評価関数の値を計算する状態評価関数計算
    手段と、 前記到達可能状態列挙手段によって列挙される状態に至
    る命令列を列挙する命令列列挙手段と、 前記状態評価関数計算手段によって計算される値が所定
    の条件を満たす状態を前記到達可能状態列挙手段によっ
    て列挙される状態から選択し、該選択された状態に対応
    する命令列を前記命令列列挙手段から選択し、該選択さ
    れた命令列を試験命令列として出力する試験命令列出力
    手段と、 を有することを特徴とする論理検証用試験命令列の自動
    生成装置。
  11. 【請求項11】 プロセッサのパイプラインの構成及び
    前記プロセッサが実行する各命令に関する仕様情報に基
    づき、前記パイプラインの動作を表現し、前記パイプラ
    インの各構成部分の状態とそれらの状態の遷移関係を複
    数の状態変数により表現される動作モデルと、該動作モ
    デルに含まれる複数の状態変数の状態の時系列を、入力
    情報として入力し、 前記入力情報として入力される動作モデルを構成する複
    数の状態変数についてその初期状態から到達可能な状態
    の時系列であって、前記入力情報として入力された状態
    の時系列を列挙し、 該列挙される状態の時系列を実現する命令列を試験命令
    列として列挙する、 ことを特徴とする論理検証用試験命令列の自動生成方
    法。
  12. 【請求項12】 プロセッサのパイプラインの構成及び
    前記プロセッサが実行する各命令に関する仕様情報に基
    づき、前記パイプラインの動作を表現し、前記パイプラ
    インの各構成部分の状態とそれらの状態の遷移関係を複
    数の状態変数により表現される動作モデルと、該動作モ
    デルに含まれる複数の状態変数の状態の時系列を、入力
    情報として保持する入力情報保持手段と、 前記入力情報として入力される動作モデルを構成する複
    数の状態変数についてその初期状態から到達可能な状態
    の時系列であって、前記入力情報として入力される状態
    の時系列を列挙する到達可能状態時系列列挙手段と、 該到達可能状態時系列列挙手段によって列挙される状態
    の時系列を実現する命令列を試験命令列として列挙する
    試験命令列列挙手段と、 を有することを特徴とする論理検証用試験命令列の自動
    生成装置。
  13. 【請求項13】 プロセッサのパイプラインの構成及び
    前記プロセッサが実行する各命令に関する仕様情報に基
    づき、前記パイプラインの動作を表現し、前記パイプラ
    インの各構成部分の状態とそれらの状態の遷移関係を複
    数の状態変数により表現される動作モデルと、該動作モ
    デルに含まれる複数の状態変数の状態の時系列を、入力
    情報として入力し、 該入力情報として入力される動作モデルを構成する複数
    の状態変数についてその初期状態から到達可能な状態を
    列挙し、 前記列挙される状態に至る命令列を列挙し、 前記列挙された状態からバックトラックしながら、前記
    入力情報として入力される状態の時系列に一致する状態
    の時系列を検索し、 該検索された状態の時系列の最終状態に至る命令列を前
    記列挙された命令列から選択し、 該選択された命令列を試験命令列として出力する、 ことを特徴とする論理検証用試験命令列の自動生成方
    法。
  14. 【請求項14】 プロセッサのパイプラインの構成及び
    前記プロセッサが実行する各命令に関する仕様情報に基
    づき、前記パイプラインの動作を表現し、前記パイプラ
    インの各構成部分の状態とそれらの状態の遷移関係を複
    数の状態変数により表現される動作モデルと、該動作モ
    デルに含まれる複数の状態変数の状態の時系列を、入力
    情報として保持する入力情報保持手段と、 該入力情報として入力される動作モデルを構成する複数
    の状態変数についてその初期状態から到達可能な状態を
    列挙する到達可能状態列挙手段と、 前記到達可能状態列挙手段によって列挙される状態に至
    る命令列を列挙する命令列列挙手段と、 前記到達可能状態列挙手段によって列挙された状態から
    バックトラックしながら、前記入力情報として入力され
    る状態の時系列に一致する状態の時系列を検索する状態
    時系列検索手段と、 該状態時系列検索手段によって検索された状態の時系列
    の最終状態に至る命令列を前記命令列列挙手段から選択
    し、該選択された命令列を試験命令列として出力する試
    験命令列出力手段と、 を有することを特徴とする論理検証用試験命令列の自動
    生成装置。
  15. 【請求項15】 プロセッサのパイプラインの構成及び
    前記プロセッサが実行する各命令に関する仕様情報に基
    づき、前記パイプラインの動作を表現し、前記パイプラ
    インの各構成部分の状態とそれらの状態の遷移関係を複
    数の状態変数により表現される動作モデルと、該動作モ
    デルに含まれる複数の状態変数の状態の時系列の評価関
    数を、入力情報として入力し、 前記入力情報として入力される動作モデルを構成する複
    数の状態変数についてその初期状態から到達可能な状態
    の時系列であって、前記評価関数の値が所定の条件を満
    たす状態の時系列を列挙し、 該列挙される状態の時系列を実現する命令列を試験命令
    列として列挙する、 ことを特徴とする論理検証用試験命令列の自動生成方
    法。
  16. 【請求項16】 プロセッサのパイプラインの構成及び
    前記プロセッサが実行する各命令に関する仕様情報に基
    づき、前記パイプラインの動作を表現し、前記パイプラ
    インの各構成部分の状態とそれらの状態の遷移関係を複
    数の状態変数により表現される動作モデルと、該動作モ
    デルに含まれる複数の状態変数の状態の時系列の評価関
    数を、入力情報として保持する入力情報保持手段と、 前記入力情報として入力される動作モデルを構成する複
    数の状態変数についてその初期状態から到達可能な状態
    の時系列であって、前記評価関数の値が所定の条件を満
    たす状態の時系列を列挙する到達可能状態時系列列挙手
    段と、 該到達可能状態時系列列挙手段によって列挙される状態
    の時系列を実現する命令列を試験命令列として列挙する
    試験命令列列挙手段と、 を有することを特徴とする論理検証用試験命令列の自動
    生成装置。
  17. 【請求項17】 プロセッサのパイプラインの構成及び
    前記プロセッサが実行する各命令に関する仕様情報に基
    づき、前記パイプラインの動作を表現し、前記パイプラ
    インの各構成部分の状態とそれらの状態の遷移関係を複
    数の状態変数により表現される動作モデルと、該動作モ
    デルに含まれる複数の状態変数の状態の時系列の評価関
    数を、入力情報として入力し、 該入力情報として入力される動作モデルを構成する複数
    の状態変数についてその初期状態から到達可能な状態を
    列挙し、 前記列挙される状態に至る命令列を列挙し、 前記列挙された状態からバックトラックして得られる状
    態の時系列について、前記評価関数を計算し、 該計算される値が所定の条件を満たす状態の時系列を前
    記列挙された状態からバックトラックして得られる状態
    の時系列のうちから選択し、 該選択された状態の時系列の最終状態に至る命令列を前
    記列挙された命令列から選択し、 該選択された命令列を試験命令列として出力する、 ことを特徴とする論理検証用試験命令列の自動生成方
    法。
  18. 【請求項18】 プロセッサのパイプラインの構成及び
    前記プロセッサが実行する各命令に関する仕様情報に基
    づき、前記パイプラインの動作を表現し、前記パイプラ
    インの各構成部分の状態とそれらの状態の遷移関係を複
    数の状態変数により表現される動作モデルと、該動作モ
    デルに含まれる複数の状態変数の状態の時系列の評価関
    数を、入力情報として保持する入力情報保持手段と、 該入力情報として入力される動作モデルを構成する複数
    の状態変数についてその初期状態から到達可能な状態を
    列挙する到達可能状態列挙手段と、 前記到達可能状態列挙手段によって列挙される状態に至
    る命令列を列挙する命令列列挙手段と、 前記到達可能状態列挙手段によって列挙された状態から
    バックトラックして得られる状態の時系列について、前
    記評価関数を計算する状態時系列評価関数計算手段と、 該状態時系列評価関数計算手段によって計算される値が
    所定の条件を満たす状態の時系列を前記到達可能状態列
    挙手段によって列挙された状態からバックトラックして
    得られる状態の時系列のうちから選択し、該選択された
    状態の時系列の最終状態に至る命令列を前記命令列列挙
    手段から選択し、該選択された命令列を試験命令列とし
    て出力する試験命令列出力手段と、 を有することを特徴とする論理検証用試験命令列の自動
    生成装置。
JP06048795A 1994-05-30 1995-03-20 プロセッサの動作モデルと論理検証用試験命令列の自動生成方法及び装置 Expired - Fee Related JP3274036B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP06048795A JP3274036B2 (ja) 1994-05-30 1995-03-20 プロセッサの動作モデルと論理検証用試験命令列の自動生成方法及び装置
US08/433,735 US5708594A (en) 1994-05-30 1995-05-03 Automatic instruction string generation method and device for verifying processor operation model and logic

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP6-116705 1994-05-30
JP11670594 1994-05-30
JP06048795A JP3274036B2 (ja) 1994-05-30 1995-03-20 プロセッサの動作モデルと論理検証用試験命令列の自動生成方法及び装置

Publications (2)

Publication Number Publication Date
JPH0850554A JPH0850554A (ja) 1996-02-20
JP3274036B2 true JP3274036B2 (ja) 2002-04-15

Family

ID=26401560

Family Applications (1)

Application Number Title Priority Date Filing Date
JP06048795A Expired - Fee Related JP3274036B2 (ja) 1994-05-30 1995-03-20 プロセッサの動作モデルと論理検証用試験命令列の自動生成方法及び装置

Country Status (2)

Country Link
US (1) US5708594A (ja)
JP (1) JP3274036B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1145211A (ja) * 1997-07-28 1999-02-16 Fujitsu Ltd 情報処理装置用試験装置および情報処理装置用試験方法
US5974242A (en) * 1997-09-25 1999-10-26 The United States Of America As Represented By The Secretary Of The Army Methods and computer programs for minimizing logic circuit design using identity cells
EP0992896A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. Pipeline protection
US6279126B1 (en) * 1998-10-30 2001-08-21 Hewlett-Packard Company Method for verifying that a processor is executing instructions in a proper endian mode when the endian mode is changed dynamically
US6853968B2 (en) * 2000-01-20 2005-02-08 Arm Limited Simulation of data processing apparatus
US6738955B2 (en) * 2000-11-30 2004-05-18 International Business Machines Corporation Method and system for formal characterization of average performance
US20040078674A1 (en) * 2001-04-04 2004-04-22 Bops, Inc. Methods and apparatus for generating functional test programs by traversing a finite state model of an instruction set architecture
US7096347B2 (en) * 2001-10-25 2006-08-22 Moore Charles R Processor and method of testing a processor for hardware faults utilizing a pipeline interlocking test instruction
US20080189528A1 (en) * 2007-02-02 2008-08-07 Mips Technologies, Inc. System, Method and Software Application for the Generation of Verification Programs
US9003357B1 (en) * 2013-08-14 2015-04-07 The Mathworks, Inc. Code generation for querying an active state of a model

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
岩下洋哲、他,プロセッサのパイプラインを対象としたテストプログラム自動生成,信学技報,電子情報通信学会,1994年4月23日,94/118,23−30

Also Published As

Publication number Publication date
US5708594A (en) 1998-01-13
JPH0850554A (ja) 1996-02-20

Similar Documents

Publication Publication Date Title
US6631463B1 (en) Method and apparatus for patching problematic instructions in a microprocessor using software interrupts
JP4042604B2 (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
US20020152061A1 (en) Data processing system and design system
US7865346B2 (en) Instruction encoding in a hardware simulation accelerator
JPH10254944A (ja) パワーシミュレーション装置、パワーシミュレーション方法、及びパワーシミュレーションプログラムを記録した機械読み取り可能な記録媒体
JP3274036B2 (ja) プロセッサの動作モデルと論理検証用試験命令列の自動生成方法及び装置
US6625572B1 (en) Cycle modeling in cycle accurate software simulators of hardware modules for software/software cross-simulation and hardware/software co-simulation
JP2008176453A (ja) シミュレーション装置
US6438514B1 (en) Generation of a system model
KR20110109590A (ko) 재구성 가능한 프로세서의 시뮬레이션 장치 및 방법
US7266791B2 (en) High level synthesis device, method for generating a model for verifying hardware, method for verifying hardware, control program, and readable recording medium
JPH04233040A (ja) コンピュータプログラム実行シミュレーションシステム
JPH0773037A (ja) プロセッサの制御機構検証用命令列の自動生成方法及び装置
JP4243463B2 (ja) 命令スケジューリングのシミュレーション方法とシミュレーションシステム
US6853968B2 (en) Simulation of data processing apparatus
JP2008129914A (ja) ソフトウェア検証用モデル生成装置、及びソフトウェア検証用モデル生成方法
JP6473023B2 (ja) 性能評価モジュール及びこれを組み込んだ半導体集積回路
JP4152659B2 (ja) データ処理システムおよび設計システム
JP2007018313A (ja) 回路設計プログラム、回路設計装置、回路設計方法
JP3396365B2 (ja) シミュレーションベース論理検証用入力列の自動生成方法及び装置、その論理検証用入力列を生成するための状態集合時系列の出力方法及び装置
JP3295803B2 (ja) プロセッサ方式性能測定方式
Utamaphethai et al. Effectiveness of microarchitecture test program generation
US7917739B2 (en) Storage medium storing calculation processing visualization program, calculation processing visualization apparatus, and calculation processing visualization method
JPH0765046A (ja) 論理装置の検証方法
JPH03127133A (ja) 計算機シミュレーション方法

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20020122

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080201

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090201

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090201

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100201

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110201

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110201

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120201

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130201

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130201

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140201

Year of fee payment: 12

LAPS Cancellation because of no payment of annual fees