(57)【要約】【課題】テストベンチ生成のための記述の簡略化を可能にするテストベンチ生成方法、テストベンチ生成装置、及びコンピュータプログラムを提供する。【解決手段】ハードウェア記述言語またはシステム記述言語を用いて設計した回路のシミュレーションを行うために該回路上で実行されるべき一又は複数のプログラム命令をアセンブリ言語で記述してあるプログラムファイルに、回路の検証を行うテスト命令を所定のプログラム命令に関連づけて記述することで、前記プログラム命令の実行からの相対時間で前記テスト命令を実行する時刻を指定することができるテストベンチ生成容易化アセンブリ言語（ＡＬＥＴ言語：Ａｓｓｅｍｂｌｙ　Ｌａｎｇｕａｇｅ　ｔｏ　Ｅａｓｅ　Ｔｅｓｔｂｅｎｃｈ　）　を開発した。本発明では、プログラムファイルからＡＬＥＴ言語の部分を抽出し、関連づけられたプログラム命令の実行から起算した所定の時刻にテスト命令を実行するテストベンチを自動生成する。【選択図】　　　　図１
2004145670.tif 000002
【特許請求の範囲】
【請求項１】
論理設計された回路の動作のシミュレーションを行うために、記憶部及び演算部を備えたコンピュータを用いて、前記回路上で実行されるべき一又は複数のプログラム命令を前記回路の動作を直接に規定する形式で記述してあるプログラムファイルから、前記回路の動作の検証手順を記述したテストベンチを生成する方法であって、
所定のプログラム命令の実行から起算した所定タイミングで前記回路内で処理されている所定の情報の値を検査するテスト命令を前記プログラム命令に関連づけて記述してある前記プログラムファイルを記憶部に記憶し、
前記シミュレーションにて前記回路へ入力する入力信号を規定した入力信号ファイルを記憶部に記憶し、
前記プログラムファイルに含まれる前記テスト命令を、該テスト命令に関連づけられた前記プログラム命令に関連づけた状態で、前記プログラムファイルから演算部にて抽出し、
テストベンチのファイルを演算部にて生成して記憶部に記憶し、
生成したテストベンチのファイルに、前記入力信号ファイルにて規定された前記入力信号を表現した内容を演算部にて書き込み、
前記プログラム命令が前記シミュレーションにて呼び出された時刻を示すことを指示する内容を、前記テストベンチのファイルに演算部にて書き込み、
前記テスト命令に関連づけられた前記プログラム命令が前記シミュレーションにて呼び出された時刻から起算した前記所定タイミングとなったときに該テスト命令を実行することを指示する内容を、前記テストベンチのファイルに演算部にて書き込む
ことを特徴とするテストベンチ生成方法。
【請求項２】
ハードウェア記述言語又はシステム記述言語で設計された回路の動作のシミュレーションを行うために、記憶部及び演算部を備えたコンピュータを用いて、内部にプログラムメモリを含む前記回路上で実行されるべき一又は複数のプログラム命令をアセンブリ言語で記述してあるプログラムファイルから、前記回路の動作の検証手順を記述したテストベンチを生成する方法であって、
所定のプログラム命令の実行から起算した所定クロック後に前記回路内で処理されている所定の情報の値を検査するテスト命令を前記プログラム命令に関連づけて記述してある前記プログラムファイルを記憶部に記憶し、
前記シミュレーションにて前記回路へ入力する入力信号を規定した入力信号ファイルを記憶部に記憶し、
記憶部に記憶している前記プログラムファイルに記述されている一又は複数の前記プログラム命令を、前記回路にて実行されるべき機械語に演算部で翻訳し、機械語に翻訳された前記プログラム命令の夫々が記憶される前記回路のプログラムメモリのアドレスを演算部にて取得し、
前記プログラムファイルに含まれる前記テスト命令を、該テスト命令に関連づけられた前記プログラム命令が記憶される前記アドレスに対応づけて、前記プログラムファイルから演算部にて抽出し、
テストベンチのファイルを演算部にて生成して記憶部に記憶し、
生成したテストベンチのファイルに、前記入力信号ファイルにて規定された前記入力信号をハードウェア記述言語又はシステム記述言語で表現して演算部にて書き込み、
前記テストベンチのファイルに、前記入力信号が前記回路に入力されて開始される前記シミュレーションにて所定の処理毎にクロックを加算することを指示する記述をハードウェア記述言語又はシステム記述言語で表現して演算部にて書き込み、
前記シミュレーションにて前記アドレスを呼び出された時刻を加算されたクロックの単位で表すことを指示する記述を、前記テストベンチのファイルに、ハードウェア記述言語又はシステム記述言語で表現して演算部にて書き込み、
加算されたクロックの値が前記テスト命令に対応づけられた前記アドレスを呼び出された時刻に前記所定クロックを加算した値である場合に該テスト命令を実行することを指示する記述を、前記テストベンチのファイルに、ハードウェア記述言語又はシステム記述言語で表現して演算部にて書き込む
ことを特徴とするテストベンチ生成方法。
【請求項３】
論理設計された回路の動作のシミュレーションを行うために、前記回路上で実行されるべき一又は複数のプログラム命令を前記回路の動作を直接に規定する形式で記述してあるプログラムファイルから、前記回路の動作の検証手順を記述したテストベンチを生成する装置であって、
所定のプログラム命令の実行から起算した所定タイミングで前記回路内で処理されている所定の情報の値を検査するテスト命令を前記プログラム命令に関連づけて記述してある前記プログラムファイルを記憶する手段と、
前記シミュレーションにて前記回路へ入力する入力信号を規定した入力信号ファイルを記憶する手段と、
前記プログラムファイルに含まれる前記テスト命令を、該テスト命令に関連づけられた前記プログラム命令に関連づけた状態で、前記プログラムファイルから抽出する手段と、
テストベンチのファイルを生成する手段と、
生成したテストベンチのファイルに、前記入力信号ファイルにて規定された前記入力信号を表現した内容を書き込む手段と、
前記プログラム命令が前記シミュレーションにて呼び出された時刻を示すことを指示する内容を、前記テストベンチのファイルに書き込む手段と、
前記テスト命令に関連づけられた前記プログラム命令が前記シミュレーションにて呼び出された時刻から起算した前記所定タイミングとなったときに該テスト命令を実行することを指示する内容を、前記テストベンチのファイルに書き込む手段と
を備えることを特徴とするテストベンチ生成装置。
【請求項４】
ハードウェア記述言語又はシステム記述言語で設計された回路の動作のシミュレーションを行うために、内部にプログラムメモリを含む前記回路上で実行されるべき一又は複数のプログラム命令をアセンブリ言語で記述してあるプログラムファイルから、前記回路の動作の検証手順を記述したテストベンチを生成する装置であって、
所定のプログラム命令の実行から起算した所定クロック後に前記回路内で処理されている所定の情報の値を検査するテスト命令を前記プログラム命令に関連づけて記述してある前記プログラムファイルを記憶する手段と、
前記シミュレーションにて前記回路へ入力する入力信号を規定した入力信号ファイルを記憶する手段と、
記憶している前記プログラムファイルに記述されている一又は複数の前記プログラム命令を、前記回路にて実行されるべき機械語に翻訳する手段と、
機械語に翻訳された前記プログラム命令の夫々が記憶される前記回路のプログラムメモリのアドレスを取得する手段と、
前記プログラムファイルに含まれる前記テスト命令を、該テスト命令に関連づけられた前記プログラム命令が記憶される前記アドレスに対応づけて、前記プログラムファイルから抽出する手段と、
テストベンチのファイルを生成する手段と、
生成したテストベンチのファイルに、前記入力信号ファイルにて規定された前記入力信号をハードウェア記述言語又はシステム記述言語で表現して書き込む手段と、
前記テストベンチのファイルに、前記入力信号が前記回路に入力されて開始される前記シミュレーションにて所定の処理毎にクロックを加算することを指示する記述をハードウェア記述言語又はシステム記述言語で表現して書き込む手段と、
前記シミュレーションにて前記アドレスを呼び出された時刻を加算されたクロックの単位で表すことを指示する記述を、前記テストベンチのファイルに、ハードウェア記述言語又はシステム記述言語で表現して書き込む手段と、
加算されたクロックの値が前記テスト命令に対応づけられた前記アドレスを呼び出された時刻に前記所定クロックを加算した値である場合に該テスト命令を実行することを指示する記述を、前記テストベンチのファイルに、ハードウェア記述言語又はシステム記述言語で表現して書き込む手段と
を備えることを特徴とするテストベンチ生成装置。
【請求項５】
論理設計された回路の動作のシミュレーションを行うために、コンピュータに、前記回路上で実行されるべき一又は複数のプログラム命令を前記回路の動作を直接に規定する形式で記述してあるプログラムファイルから、前記回路の動作の検証手順を記述したテストベンチを生成させるコンピュータプログラムであって、
コンピュータに、所定のプログラム命令の実行から起算した所定タイミングで前記回路内で処理されている所定の情報の値を検査するテスト命令を前記プログラム命令に関連づけて記述してある前記プログラムファイルから、前記テスト命令を、該テスト命令に関連づけられた前記プログラム命令に関連づけた状態で抽出させる手順と、
コンピュータに、テストベンチのファイルを生成させる手順と、
コンピュータに、生成したテストベンチのファイルに、前記シミュレーションにて前記回路へ入力する入力信号を規定した入力信号ファイルの内容を書き込ませる手順と、
コンピュータに、前記プログラム命令が前記シミュレーションにて呼び出された時刻を示すことを指示する内容を、前記テストベンチのファイルに書き込ませる手順と、
コンピュータに、前記テスト命令に関連づけられた前記プログラム命令が前記シミュレーションにて呼び出された時刻から起算した前記所定タイミングとなったときに前記テスト命令を実行することを指示する内容を、前記テストベンチのファイルに書き込ませる手順と
を含むことを特徴とするコンピュータプログラム。
【請求項６】
ハードウェア記述言語又はシステム記述言語で設計された回路の動作のシミュレーションを行うために、コンピュータに、内部にプログラムメモリを含む前記回路上で実行されるべき一又は複数のプログラム命令をアセンブリ言語で記述してあるプログラムファイルから、前記回路の動作の検証手順を記述したテストベンチを生成させるコンピュータプログラムであって、
コンピュータに、所定のプログラム命令の実行から起算した所定クロック後に前記回路内で処理されている所定の情報の値を検査するテスト命令を前記プログラム命令に関連づけて記述してある前記プログラムファイルから、前記回路にて実行されるべき機械語に一又は複数の前記プログラム命令を翻訳させる手順と、コンピュータに、機械語に翻訳された前記プログラム命令の夫々が記憶される前記回路のプログラムメモリのアドレスを取得させる手順と、
コンピュータに、前記プログラムファイルに含まれる前記テスト命令を、該テスト命令に関連づけられた前記プログラム命令が記憶される前記アドレスに対応づけて、前記プログラムファイルから抽出させる手順と、
コンピュータに、テストベンチのファイルを生成させる手順と、
コンピュータに、生成したテストベンチのファイルに、前記シミュレーションにて前記回路へ入力する入力信号を規定した入力信号ファイルの内容をハードウェア記述言語又はシステム記述言語で表現して書き込ませる手順と、
コンピュータに、前記テストベンチのファイルに、前記入力信号が前記回路に入力されて開始される前記シミュレーションにて所定の処理毎にクロックを加算することを指示する記述をハードウェア記述言語又はシステム記述言語で表現して書き込むませる手順と、
コンピュータに、前記シミュレーションにて前記アドレスを呼び出された時刻を加算されたクロックの単位で表すことを指示する記述を、前記テストベンチのファイルに、ハードウェア記述言語又はシステム記述言語で表現して書き込ませる手順と、
コンピュータに、加算されたクロックの値が前記テスト命令に対応づけられた前記アドレスを呼び出された時刻に前記所定クロックを加算した値である場合に該テスト命令を実行することを指示する記述を、前記テストベンチのファイルに、ハードウェア記述言語又はシステム記述言語で表現して書き込ませる手順と
を含むことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ハードウェア記述言語またはシステム記述言語を用いて設計した回路のシミュレーションを行うためのテストベンチを生成する方法、該方法を実現するためのテストベンチ生成装置、コンピュータを該テストベンチ生成装置として実現するためのコンピュータプログラムに関する。
【０００２】
【従来の技術】
ＣＰＵ又はメモリ等の半導体デバイスを実現するＩＣ又はＬＳＩ等の回路は、その機能および規模の点で様々な種類の物が開発され、使用されている。回路の設計は、現在では、設計期間の短縮化または検証の容易化などの要請により、ハードウェアの動作または論理構成などを記述する言語であるハードウェア記述言語（以下、ＨＤＬと言う）を用いて行われるのが一般的となっている。また、近年では、ＨＤＬよりも抽象度の高いＣ言語などのシステム記述言語を用いた回路の設計手法も開発されている。
【０００３】
ＨＤＬ又はシステム記述言語を用いて回路を設計する場合は、ＨＤＬ又はシステム記述言語で記述された回路の動作および論理構成などのシミュレーションを行い、設計の検証を行う必要がある。図１７は、従来のシミュレーションの概要を示す概念図である。従来のシミュレーションの際には、情報として、ＨＤＬ又はシステム記述言語を用いて回路の動作および論理構成などを記述した回路記述ファイル、回路で実行されるプログラムをアセンブリ言語で記述したプログラムファイル、並びに、回路の動作を検証する処理の内容を記述したテストベンチが用意される。テストベンチには、回路へ入力される入力信号、及び回路が正常に動作した場合に回路内の所定の信号がとるべき予測値などが記述されている。シミュレーションでは、プログラムファイルがアセンブラで処理されて機械語ファイルが生成され、生成された機械語ファイル、回路記述ファイル、及びテストベンチがシミュレータに入力され、シミュレータは回路の動作のシミュレーションを行い、動作が正常に行われたか否かの結果が出力される。回路の設計者は、出力された結果に基づいて、設計した回路の修正を行う。
【０００４】
【特許文献１】
特開２００１−３０６６４８号公報
【０００５】
【発明が解決しようとする課題】
回路の設計時のシミュレーションでは、従来、設計対象の回路に入力する入力信号、正しく回路が動作した場合に回路内の所定の信号がとるべき予測値、及び所定の時刻に動作中の回路での前記信号の値を検証するテスト命令をテストベンチの中に記述しておく必要がある。更に、時刻の指定はシミュレーションの開始時から起算される絶対時間で表現され、検証の時刻は回路の動作に対応して厳密に指定する必要があるため、時刻を指定するのが難しく、複雑な記述を要するという問題がある。テストベンチの作成には、時刻を指定したテスト命令に関連づけて信号の予測値および入力信号の設定を記述する必要があり、回路の規模が増大するにつれてテストベンチの記述量が増大する。記述が複雑で記述量が膨大なテストベンチを手作業で作成することは非常に労力がかかり、回路の設計そのものよりもテストベンチの記述の方に多くの時間を費やさなければいけないという問題がある。
【０００６】
本発明は、斯かる事情に鑑みてなされたものであって、その目的とするところは、回路上で動作するプログラム命令をアセンブリ言語で記述したプログラムファイル中の各プログラム命令にテスト命令を関連づけておき、回路のシミュレーションを行う際に、各プログラム命令に関連づけられたテスト命令を抜き出してテストベンチを生成することにより、テストベンチ生成のための記述をより簡単に記述することを可能とするテストベンチ生成方法、テストベンチ生成装置、及びコンピュータプログラムを提供することにある。
【０００７】
【課題を解決するための手段】
第１発明に係るテストベンチ生成方法は、論理設計された回路の動作のシミュレーションを行うために、記憶部及び演算部を備えたコンピュータを用いて、前記回路上で実行されるべき一又は複数のプログラム命令を前記回路の動作を直接に規定する形式で記述してあるプログラムファイルから、前記回路の動作の検証手順を記述したテストベンチを生成する方法であって、所定のプログラム命令の実行から起算した所定タイミングで前記回路内で処理されている所定の情報の値を検査するテスト命令を前記プログラム命令に関連づけて記述してある前記プログラムファイルを記憶部に記憶し、前記シミュレーションにて前記回路へ入力する入力信号を規定した入力信号ファイルを記憶部に記憶し、前記プログラムファイルに含まれる前記テスト命令を、該テスト命令に関連づけられた前記プログラム命令に関連づけた状態で、前記プログラムファイルから演算部にて抽出し、テストベンチのファイルを演算部にて生成して記憶部に記憶し、生成したテストベンチのファイルに、前記入力信号ファイルにて規定された前記入力信号を表現した内容を演算部にて書き込み、前記プログラム命令が前記シミュレーションにて呼び出された時刻を示すことを指示する内容を、前記テストベンチのファイルに演算部にて書き込み、前記テスト命令に関連づけられた前記プログラム命令が前記シミュレーションにて呼び出された時刻から起算した前記所定タイミングとなったときに該テスト命令を実行することを指示する内容を、前記テストベンチのファイルに演算部にて書き込むことを特徴とする。
【０００８】
第２発明に係るテストベンチ生成方法は、ＨＤＬ又はシステム記述言語で設計された回路の動作のシミュレーションを行うために、記憶部及び演算部を備えたコンピュータを用いて、内部にプログラムメモリを含む前記回路上で実行されるべき一又は複数のプログラム命令をアセンブリ言語で記述してあるプログラムファイルから、前記回路の動作の検証手順を記述したテストベンチを生成する方法であって、所定のプログラム命令の実行から起算した所定クロック後に前記回路内で処理されている所定の情報の値を検査するテスト命令を前記プログラム命令に関連づけて記述してある前記プログラムファイルを記憶部に記憶し、前記シミュレーションにて前記回路へ入力する入力信号を規定した入力信号ファイルを記憶部に記憶し、記憶部に記憶している前記プログラムファイルに記述されている一又は複数の前記プログラム命令を、前記回路にて実行されるべき機械語に演算部で翻訳し、機械語に翻訳された前記プログラム命令の夫々が記憶される前記回路のプログラムメモリのアドレスを演算部にて取得し、前記プログラムファイルに含まれる前記テスト命令を、該テスト命令に関連づけられた前記プログラム命令が記憶される前記アドレスに対応づけて、前記プログラムファイルから演算部にて抽出し、テストベンチのファイルを演算部にて生成して記憶部に記憶し、生成したテストベンチのファイルに、前記入力信号ファイルにて規定された前記入力信号をＨＤＬ又はシステム記述言語で表現して演算部にて書き込み、前記テストベンチのファイルに、前記入力信号が前記回路に入力されて開始される前記シミュレーションにて所定の処理毎にクロックを加算することを指示する記述をＨＤＬ又はシステム記述言語で表現して演算部にて書き込み、前記シミュレーションにて前記アドレスを呼び出された時刻を加算されたクロックの単位で表すことを指示する記述を、前記テストベンチのファイルに、ＨＤＬ又はシステム記述言語で表現して演算部にて書き込み、加算されたクロックの値が前記テスト命令に対応づけられた前記アドレスを呼び出された時刻に前記所定クロックを加算した値である場合に該テスト命令を実行することを指示する記述を、前記テストベンチのファイルに、ＨＤＬ又はシステム記述言語で表現して演算部にて書き込むことを特徴とする。
【０００９】
第３発明に係るテストベンチ生成装置は、論理設計された回路の動作のシミュレーションを行うために、前記回路上で実行されるべき一又は複数のプログラム命令を前記回路の動作を直接に規定する形式で記述してあるプログラムファイルから、前記回路の動作の検証手順を記述したテストベンチを生成する装置であって、所定のプログラム命令の実行から起算した所定タイミングで前記回路内で処理されている所定の情報の値を検査するテスト命令を前記プログラム命令に関連づけて記述してある前記プログラムファイルを記憶する手段と、前記シミュレーションにて前記回路へ入力する入力信号を規定した入力信号ファイルを記憶する手段と、前記プログラムファイルに含まれる前記テスト命令を、該テスト命令に関連づけられた前記プログラム命令に関連づけた状態で、前記プログラムファイルから抽出する手段と、テストベンチのファイルを生成する手段と、生成したテストベンチのファイルに、前記入力信号ファイルにて規定された前記入力信号を表現した内容を書き込む手段と、前記プログラム命令が前記シミュレーションにて呼び出された時刻を示すことを指示する内容を、前記テストベンチのファイルに書き込む手段と、前記テスト命令に関連づけられた前記プログラム命令が前記シミュレーションにて呼び出された時刻から起算した前記所定タイミングとなったときに該テスト命令を実行することを指示する内容を、前記テストベンチのファイルに書き込む手段とを備えることを特徴とする。
【００１０】
第４発明に係るテストベンチ生成装置は、ＨＤＬ又はシステム記述言語で設計された回路の動作のシミュレーションを行うために、内部にプログラムメモリを含む前記回路上で実行されるべき一又は複数のプログラム命令をアセンブリ言語で記述してあるプログラムファイルから、前記回路の動作の検証手順を記述したテストベンチを生成する装置であって、所定のプログラム命令の実行から起算した所定クロック後に前記回路内で処理されている所定の情報の値を検査するテスト命令を前記プログラム命令に関連づけて記述してある前記プログラムファイルを記憶する手段と、前記シミュレーションにて前記回路へ入力する入力信号を規定した入力信号ファイルを記憶する手段と、記憶している前記プログラムファイルに記述されている一又は複数の前記プログラム命令を、前記回路にて実行されるべき機械語に翻訳する手段と、機械語に翻訳された前記プログラム命令の夫々が記憶される前記回路のプログラムメモリのアドレスを取得する手段と、前記プログラムファイルに含まれる前記テスト命令を、該テスト命令に関連づけられた前記プログラム命令が記憶される前記アドレスに対応づけて、前記プログラムファイルから抽出する手段と、テストベンチのファイルを生成する手段と、生成したテストベンチのファイルに、前記入力信号ファイルにて規定された前記入力信号をＨＤＬ又はシステム記述言語で表現して書き込む手段と、前記テストベンチのファイルに、前記入力信号が前記回路に入力されて開始される前記シミュレーションにて所定の処理毎にクロックを加算することを指示する記述をＨＤＬ又はシステム記述言語で表現して書き込む手段と、前記シミュレーションにて前記アドレスを呼び出された時刻を加算されたクロックの単位で表すことを指示する記述を、前記テストベンチのファイルに、ＨＤＬ又はシステム記述言語で表現して書き込む手段と、加算されたクロックの値が前記テスト命令に対応づけられた前記アドレスを呼び出された時刻に前記所定クロックを加算した値である場合に該テスト命令を実行することを指示する記述を、前記テストベンチのファイルに、ＨＤＬ又はシステム記述言語で表現して書き込む手段とを備えることを特徴とする。
【００１１】
第５発明に係るコンピュータプログラムは、論理設計された回路の動作のシミュレーションを行うために、コンピュータに、前記回路上で実行されるべき一又は複数のプログラム命令を前記回路の動作を直接に規定する形式で記述してあるプログラムファイルから、前記回路の動作の検証手順を記述したテストベンチを生成させるコンピュータプログラムであって、コンピュータに、所定のプログラム命令の実行から起算した所定タイミングで前記回路内で処理されている所定の情報の値を検査するテスト命令を前記プログラム命令に関連づけて記述してある前記プログラムファイルから、前記テスト命令を、該テスト命令に関連づけられた前記プログラム命令に関連づけた状態で抽出させる手順と、コンピュータに、テストベンチのファイルを生成させる手順と、コンピュータに、生成したテストベンチのファイルに、前記シミュレーションにて前記回路へ入力する入力信号を規定した入力信号ファイルの内容を書き込ませる手順と、コンピュータに、前記プログラム命令が前記シミュレーションにて呼び出された時刻を示すことを指示する内容を、前記テストベンチのファイルに書き込ませる手順と、コンピュータに、前記テスト命令に関連づけられた前記プログラム命令が前記シミュレーションにて呼び出された時刻から起算した前記所定タイミングとなったときに前記テスト命令を実行することを指示する内容を、前記テストベンチのファイルに書き込ませる手順とを含むことを特徴とする。
【００１２】
第６発明に係るコンピュータプログラムは、ＨＤＬ又はシステム記述言語で設計された回路の動作のシミュレーションを行うために、コンピュータに、内部にプログラムメモリを含む前記回路上で実行されるべき一又は複数のプログラム命令をアセンブリ言語で記述してあるプログラムファイルから、前記回路の動作の検証手順を記述したテストベンチを生成させるコンピュータプログラムであって、コンピュータに、所定のプログラム命令の実行から起算した所定クロック後に前記回路内で処理されている所定の情報の値を検査するテスト命令を前記プログラム命令に関連づけて記述してある前記プログラムファイルから、前記回路にて実行されるべき機械語に一又は複数の前記プログラム命令を翻訳させる手順と、コンピュータに、機械語に翻訳された前記プログラム命令の夫々が記憶される前記回路のプログラムメモリのアドレスを取得させる手順と、コンピュータに、前記プログラムファイルに含まれる前記テスト命令を、該テスト命令に関連づけられた前記プログラム命令が記憶される前記アドレスに対応づけて、前記プログラムファイルから抽出させる手順と、コンピュータに、テストベンチのファイルを生成させる手順と、コンピュータに、生成したテストベンチのファイルに、前記シミュレーションにて前記回路へ入力する入力信号を規定した入力信号ファイルの内容をＨＤＬ又はシステム記述言語で表現して書き込ませる手順と、コンピュータに、前記テストベンチのファイルに、前記入力信号が前記回路に入力されて開始される前記シミュレーションにて所定の処理毎にクロックを加算することを指示する記述をＨＤＬ又はシステム記述言語で表現して書き込むませる手順と、コンピュータに、前記シミュレーションにて前記アドレスを呼び出された時刻を加算されたクロックの単位で表すことを指示する記述を、前記テストベンチのファイルに、ＨＤＬ又はシステム記述言語で表現して書き込ませる手順と、コンピュータに、加算されたクロックの値が前記テスト命令に対応づけられた前記アドレスを呼び出された時刻に前記所定クロックを加算した値である場合に該テスト命令を実行することを指示する記述を、前記テストベンチのファイルに、ＨＤＬ又はシステム記述言語で表現して書き込ませる手順とを含むことを特徴とする。
【００１３】
本発明者は、アセンブリ言語で記述された一つ一つのプログラム命令が、回路が行う一つ一つの動作に対応しており、アセンブリ言語で記述された、回路内で実行されるべきプログラム命令が、回路内で前記プログラム命令が実行される時刻を厳密に規定できることに着目し、アセンブリ言語で記述されたプログラム命令に対応づけてテストベンチに必要なテスト命令を記述することにより、回路の検証を行う時刻の指定を容易にすることができるテストベンチ生成容易化アセンブリ言語（ＡＬＥＴ言語：Ａｓｓｅｍｂｌｙ　Ｌａｎｇｕａｇｅ　ｔｏ　Ｅａｓｅ　Ｔｅｓｔｂｅｎｃｈ　）　を開発した。
【００１４】
第１、第３及び第５発明においては、回路の動作を直接に規定する形式、即ち、回路が行う一連の動作をまとめて規定する所謂高級言語ではなく回路が行う個別の動作を逐一規定する所謂低級言語で記述されたプログラム命令に関連づけてＡＬＥＴ言語によるテスト命令を記述しておいたプログラムファイルを用い、シミュレーションにおいてプログラム命令が呼び出される時刻を参照して該時刻から起算した所定タイミングで前記プログラム命令に関連づけられたテスト命令を実行すべき記述を含んだテストベンチを生成する。これにより、テストベンチを生成する際に、テスト命令を実行する時刻を絶対時間で記述する必要がなくなり、回路の動作を直接に規定する形式で記述されたプログラム命令からの相対時間でテスト命令を実行する時刻を指定することができる。
【００１５】
第２、第４及び第６発明においては、アセンブリ言語で記述されたプログラム命令に関連づけてＡＬＥＴ言語によるテスト命令を記述しておいたプログラムファイルを用い、シミュレーションにおいてプログラム命令が記憶されたメモリのアドレスを呼び出された時刻を参照して該時刻から起算した所定クロック後に前記プログラム命令に関連づけられたテスト命令を実行すべき記述を含んだテストベンチを生成する。これにより、テストベンチを生成する際に、テスト命令を実行する時刻を絶対時間で記述する必要がなくなり、回路の一つ一つの動作に対応しているアセンブリ言語で記述されたプログラム命令からの相対クロック数でテスト命令を実行する時刻を指定することができる。
【００１６】
【発明の実施の形態】
以下本発明をその実施の形態を示す図面に基づき具体的に説明する。
図１は、本発明の概要を示す概念図である。本発明のテストベンチ生成方法では、情報として、シミュレーションの対象である回路で実行されるプログラム命令をアセンブリ言語で記述したプログラムファイル１４１と、回路の動作を検証するために回路に入力する信号を規定した入力信号ファイル１４２とが用意される。プログラムファイル１４１には、テストベンチ生成のための、回路内で処理される所定の情報の値を検証するテスト命令が、アセンブリ言語のプログラム命令に対応づけてＡＬＥＴ言語で記述されている。テストベンチを生成する本発明のコンピュータプログラム２０は、アセンブラのプログラムとＡＬＥＴコンパイラのプログラムとを含んでいる。アセンブラは、プログラムファイル１４１から、アセンブリ言語で記述されたプログラム命令を機械語に翻訳した機械語ファイル１４３と、ＡＬＥＴ言語の記述部分を抜き出した中間ファイル１４４とを生成する。ＡＬＥＴコンパイラは、生成された機械語ファイル１４３と、生成された中間ファイル１４４と、入力信号ファイル１４２とから、テストベンチ１４５を生成する。本発明に係るシミュレーション方法では、ＨＤＬ又はシステム記述言語を用いて回路の動作および論理構成などを記述した回路記述ファイルと、機械語ファイル１４３と、生成されたテストベンチ１４５とを用い、回路記述ファイルに記述された回路上で機械語ファイルに記述されたプログラム命令を実行してテストベンチに記述された値の検証を行うシミュレーションを、シミュレータにて実行して、シミュレーションの結果が出力される。なお、シミュレータとして、従来から存在するシミュレータを使用することも可能である。
【００１７】
図２は、本発明のテストベンチ生成装置の構成を示すブロック図である。テストベンチ生成装置１は、コンピュータを用いて構成されており、本発明に係る演算部であって演算を行うＣＰＵ１１と、本発明に係る記憶部であって演算に伴って発生する一時的な情報を記憶するＲＡＭ１２と、ＣＤ−ＲＯＭドライブ等の外部記憶装置１３と、ハードディスク等の内部記憶装置１４とを備えており、ＣＤ−ＲＯＭ等の記録媒体２から本発明に係るコンピュータプログラム２０を外部記憶装置１３にて読み取り、読み取ったコンピュータプログラム２０を内部記憶装置１４に記憶し、ＲＡＭ１２にコンピュータプログラム２０をロードし、ロードしたコンピュータプログラム２０に基づいてテストベンチ生成装置１に必要な処理を実行する。テストベンチ生成装置１は、更に、キーボード又はマウス等の入力装置１５と、液晶ディスプレイ又はＣＲＴディスプレイ等の出力装置１６とを備えており、データの入力を初めとするオペレータからの操作を受け付ける構成となっている。
【００１８】
また、テストベンチ生成装置１は、通信インタフェース１７を備え、該通信インタフェース１７に接続しているサーバ装置３から本発明に係るコンピュータプログラム２０をダウンロードし、ＣＰＵ１１にて処理を実行する形態であってもよい。
【００１９】
内部記憶装置１４は、オペレータの操作により入力装置１５から入力されるか、外部記憶装置１３にて外部の記録媒体から読みとるか、又は通信インタフェース１７を介して外部のサーバ装置３からダウンロードした、プログラムファイル１４１及び入力信号ファイル１４２を記憶している。また、内部記憶装置１４は、本発明の処理の途中にて生成される機械語ファイル１４３及び中間ファイル１４４を記憶し、本発明により生成されるテストベンチ１４５を記憶する。
【００２０】
次に、本発明者が開発したＡＬＥＴ言語について説明する。
１．ＡＬＥＴ言語の記述場所
ＡＬＥＴ言語の記述は、アセンブリ言語のコメント部分に記述する。なお、アセンブリ言語のコメントは、一般的に「；」以下に記述される。
１．１　「；￥」（セミコロン及び円マーク）
アセンブリ言語のコメント部分が「；￥」で始まる場合はＡＬＥＴ言語形式の表記が始まることを意味する。
１．２　「；」
アセンブリ言語のコメント部分が「；￥」ではなく「；」で始まっている場合は、通常のアセンブリ言語のコメント部分である。
１．３　「／／」（スラッシュ２文字）
ＡＬＥＴ言語形式の記述の場所すなわち「；￥」の後で、「／／」が記述されている場合は、「／／」以降の記述はＡＬＥＴ言語のコメント部分である。
【００２１】
２．必須記述事項
後述の遅延およびアサート文の前には、以下の３つの記述を行わなければならない。
２．１　「｀ｐｃ」：プロセッサのプログラムカウンタの指定
シミュレーションの対象となる回路において、プロセッサのプログラムカウンタがどこに存在するかを指定する。
２．２　「＠」：処理のセンシティビリティリスト
センシティビリティリストとは、ＨＤＬまたはシステム記述言語でプロセスの実行がどの信号のどのようなイベントに依存しているかを指定する記述のことであり、回路の検証を行う処理の基準クロックを指定する。基本的には回路へ入力されるクロックを指定する。
２．３　「｀＠」：処理実行条件
回路の検証を行う処理がどのような条件のときに実行されるのかを指定する。プロセッサの初めのマシンサイクルを指定する。この処理実行条件を指定する前に「｀ｐｃ」でプロセッサのプログラムカウンタを指定しておく必要がある。
【００２２】
３．「＃」：遅延時間の指定
テスト命令を行う時刻を指定する。「＃５ｃ；」などと「＃」に続けてクロック数を記述することで、直前に記述されたアセンブリ言語のプログラム命令が初めて実行されたときから起算して、５クロック後などの前記クロック後に、以降のＡＬＥＴ言語形式の記述へ進むことを意味している。
【００２３】
４．表示関数
４．１　「ａｓｒｔ（　）」：アサート文
「ａｓｒｔ（条件）；」と記述することで、この記述の時刻で、直前のアセンブリ言語のプログラム命令が実行されたときに、条件が正であるか又は偽であるかを判定し、条件が偽であった場合はシミュレーションを停止させ、条件が偽であったことを出力することを意味する。条件式の中に予測値を記述しておくことにより、回路で処理された情報の値と予測値とを比較するテストを行うことができる。
４．２　「ｄｉｓｐ（　）」：ディスプレイ文
「ｄｉｓｐ（文字列）；」と記述することで、この記述の時刻で、直前のアセンブリ言語のプログラム命令が実行されたときに、文字列で指定された文字を表示することを意味する。
４．３　「ｄｕｍｐ（　）」：ダンプ文
「ｄｕｍｐ（信号名）；」と記述することで、この記述の時刻で、直前のアセンブリ言語のプログラム命令が実行されたときに、信号名で指定された信号の状態を表示することを意味する。
【００２４】
５．定義文および予約語
５．１　「｀ｄｅｆ」：定義文
「｀ｄｅｆ　定義名　値、式または文字列」と記述することで、この定義があった後のＡＬＥＴ言語の記述では、定義名がその後で指定した値、式または文字列と置換されることを意味する。
５．２　予約語
以下の記述はアセンブリ言語とＡＬＥＴ言語とが密接に関連しているため、ＡＬＥＴ言語のコンパイラが適当な値に置き換える。
ＩＮＳＴ　…　ＲＯＭに入っている命令の情報。
ＯＰＲ１　…　ＲＯＭに入っているオペランド１の情報。
ＯＰＲ２　…　ＲＯＭに入っているオペランド２の情報。
ＡＤＲ　…　ＲＯＭのアドレス。ＩＮＳＴが機械語ファイル３のどこにあるかのアドレスを示す。
なお、ここで表記しているＲＯＭとは、シミュレーション対象の回路に含まれる、プログラム命令を記憶するメモリのことである。
【００２５】
６．記述方法
６．１　同じ行での複数記述
「＠」（アットマーク）と「｀」（アクサングラーブ）で始まるＡＬＥＴ言語の記述は１行に同時に記述することができないが、遅延とアサート文については複数の記述が許されている。これらの複数の記述が許されているものは「；」によって夫々を区切る。
６．２　時間重複
ＡＬＥＴ言語では複数のテスト命令の時間重複も可能である。
【００２６】
次に、ＨＤＬ又はシステム記述言語で設計された回路の例を示す。図３は、回路記述ファイルに記述されてシミュレーションの対象となる回路の例を示すブロック図である。回路記述ファイルに記述された回路であるプロセッサ４１は、ｎｒ８ｄという名前が付けられており、ｎｃｐｕという名前をつけたＣＰＵ４２と、ＲＡＭ４３及びＲＯＭ４４とから構成されている。プロセッサ４１にはＵ０、ｎｃｐｕ４２にはＵ１というインスタンス名がそれぞれ付けられている。インスタンス名とはＨＤＬ又はシステム記述言語で複数の同一部品（モジュール）を利用可能にするために付けられるラベル名のことである。このｎｃｐｕ４２にはリセット信号ｒｓｔ５１とクロック信号ｃｌｋ５２が入力される。リセット信号５１が入力されたときはｎｃｐｕ４２がリセットされる。ｎｃｐｕ４２とＲＡＭ４３及びＲＯＭ４４との間には、互いに接続されたデータバス５３が設けられており、データバス５３を介して互いにデータを交換する。更に、データバス５３に平行してアドレスバス５４が設けられており、ｎｃｐｕ４２は、ＲＡＭ４３及びＲＯＭ４４のどの部分のデータを読み込むかを示すアドレスを、アドレスバス５４を介して指定する。
【００２７】
ｎｃｐｕ４２は、命令レジスタｉｒｈ＃ｒｅｇ４５、コントローラ４６、プログラムカウンタｐｒｏｇｃｎｔ４７、算術論理演算装置ＡＬＵ４８及び汎用レジスタ４９を備えている。コントローラ４６は、サイクルステートレジスタｃｓｔａｔｅ４６１を内部に含み、汎用レジスタ４９は、ＷレジスタＷ＃ｒｅｇ４９１、ＢＬレジスタＢＬ＃ｒｅｇ４９２、及びＢＨレジスタＢＨ＃ｒｅｇ４９３を内部に含む。命令レジスタｉｒｈ＃ｒｅｇ４５はデータバス５３から命令を取り出して格納する。コントローラ４６は、命令レジスタｉｒｈ＃ｒｅｇ４５に格納されてある命令を解釈しｎｃｐｕ４２全体を制御する。プログラムカウンタｐｒｏｇｃｎｔ４７は、コントローラ４６からどれだけカウンタを進めるか伝えられ、結果をアドレスバス５４に出力する。算術論理演算装置ＡＬＵ４８はデータバス５３と汎用レジスタ４９とからデータを取り込み、取り込んだデータを計算し、計算した結果をデータバス５３又は汎用レジスタ４９へ出力する。
【００２８】
ｎｃｐｕ４２の中にあるレジスタを指定する場合、階層構造の指定をする必要があるため、シミュレーション環境では、ＷレジスタＷ＃ｒｅｇ４９１がＵ０．Ｕ１．Ｗ＃ｒｅｇ、ＢＬレジスタＢＬ＃ｒｅｇ４９２がＵ０．Ｕ１．ＢＬ＃ｒｅｇ、ＢＨレジスタＢＨ＃ｒｅｇ４９３がＵ０．Ｕ１．ＢＨ＃ｒｅｇ、プログラムカウンタｐｒｏｇｃｎｔ４７がＵ０．Ｕ１．ｐｒｏｇｃｎｔ、サイクルステートレジスタｃｓｔａｔｅ４６１がＵ０．Ｕ１．ｃｓｔａｔｅ、命令レジスタｉｒｈ＃ｒｅｇ４５がＵ０．Ｕ１．ｉｒｈ＃ｒｅｇ、リセット信号ｒｓｔ５１がＵ０．Ｕ１．ｒｓｔ、クロック信号ｃｌｋ５２がＵ０．Ｕ１．ｃｌｋと表現される。
【００２９】
次に、ＡＬＥＴ言語の記述例を示す。図４は、アセンブリ言語及びＡＬＥＴ言語で記述されたプログラムファイル１４１の例を示す図である。図中の左半分はアセンブリ言語の部分であり、右半分の「；￥」以下に記述されている部分がＡＬＥＴ言語の部分である。行４０１〜行４０６は、ＡＬＥＴ言語の定義文であり、行４０１は、Ｕ０．Ｕ１．ｐｒｏｇｃｎｔを省略してｃｐｕｐｃと書くことを定義しており、更に行４０２はＵ０．Ｕ１．ｃｓｔａｔｅをｃｐｕｃｓｔ、行４０３はＵ０．Ｕ１．ｃｌｋをｃｐｕｃｌｋ、行４０４はＵ０．Ｕ１．ｉｒｈ＃ｒｅｇをｃｐｕｉｒｈ、行４０５はＵ０．Ｕ１．ＢＬ＃ｒｅｇをｃｐｕｂｌ、行４０６はＵ０．Ｕ１．Ｗ＃ｒｅｇをｃｐｕｗとそれぞれ省略して書くことを定義している。行４０７はアセンブリ言語のコメント文である。
【００３０】
行４０８〜行４１０は、ＡＬＥＴ言語の必須記述事項である。行４０８は、シミュレーションの対象であるプロセッサ４１のプログラムカウンタが、ｃｐｕｐｃすなわちＵ０．Ｕ１．ｐｒｏｇｃｎｔ４７であることを指定している。行４０９は、行４１２以降のａｓｒｔ文がｎｅｇｅｄｇｅ（ｃｐｕｃｌｋ）というタイミングで行われることを指定している。ｎｅｇｅｄｇｅ（ｃｐｕｃｌｋ）はｃｐｕｃｌｋすなわちＵ０．Ｕ１．ｃｌｋが立下りのエッジを検出したときに動作をすることを意味している。行４１０は、ｃｐｕｃｓｔ＝＝１４’ｈ０００１が成立したとき、すなわちＵ０．Ｕ１．ｃｓｔａｔｅが１６進数で０００１となる１４ビットの数値と等しくなったときに限り、行４１２以降のａｓｒｔ文を実行することを意味している。行４１１はアセンブリ言語の記述であり、ＭＡＩＮというラベルを設定している。ラベルはアセンブリ言語内でジャンプする場合に利用される。
【００３１】
行４１２の「；￥」以前の部分、「ＭＯＶ　１０ｈ，Ｗ」はアセンブリ言語のプログラム命令であり、１６進数で１０の定数すなわち１０進数で１６をＷレジスタＷ＃ｒｅｇ４９１に転送することを意味している。行４１２の「；￥」以後の「ａｓｒｔ（ｃｐｕｐｃ　　＝＝ＡＤＲ）；」の部分は、ＡＬＥＴ言語のａｓｒｔ文であり、同じ行のアセンブリ言語のＭＯＶ命令が行われた時に、ｃｐｕｐｃすなわちＵ０．Ｕ１．ｐｒｏｇｃｎｔ４７がＲＯＭ４４のアドレスＡＤＲと同じであるか否かのテスト（ａｓｓｅｒｔ）を行い、間違っていればエラーを表示するテスト命令を意味している。行４１３は、行４１２のＡＬＥＴ言語のテスト命令が実行されてから１クロック後に「ａｓｒｔ（ｃｐｕｃｓｔ　＝＝　１４’ｈ０００２）；」が行われるテスト命令を意味している。すなわち行４１２の実行から１クロック後にＵ０．Ｕ１．ｃｓｔａｔｅ４６１が１６進数で０００２となる１４ビットの数値と等しいか否かをテストする。また、行４１４は、行４１３のテスト命令の実行から１クロック後にｃｐｕｉｒｈすなわちＵ０．Ｕ１．ｉｒｈ＃ｒｅｇ４５が命令ＩＮＳＴ（ここでは行４１２のＭＯＶ命令を指し、定数（１０ｈ　＝　１６進数の１０）からＷレジスタ４９１への転送であるため、ＩＮＳＴは１６進数で３２となる）と等しいか否かをテストするテスト命令を意味している。また、行４１５は、行４１４のテスト命令の実行と同じ時刻に、ｃｐｕｃｓｔすなわちＵ０．Ｕ１．ｃｓｔａｔｅ４６１が１６進数で０００４となる１４ビットの数値と等しいか否かをテストするテスト命令を意味している。行４１６は、行４１５のテスト命令の実行から１クロック後にｃｐｕｃｓｔすなわちＵ０．Ｕ１．ｃｓｔａｔｅ４６１が１６進数で０００８となる１４ビットの数値と等しくなるか否かをテストするテスト命令を意味している。行４１７は、行４１６のテスト命令の実行から１クロック後にｃｐｕｃｓｔすなわちＵ０．Ｕ１．ｃｓｔａｔｅ４６１が１６進数で０００１となる１４ビットの数値と等しくなるか否かをテストするテスト命令を意味している。更に、行４１８は、行４１７のテスト命令の実行から１クロック後にｃｐｕｗすなわちＵ０．Ｕ１．Ｗ＃ｒｅｇ４９１が第１オペランドＯＰＲ１（ここでは行４１２のＭＯＶ命令の第１オペランドを指し、定数１０ｈ　すなわち１６進数の１０となる）と等しくなるか否かをテストするテスト命令を意味している。
【００３２】
行４１９の「；￥」以前の部分、「ＭＯＶ　Ｗ，ＢＬ」はアセンブリ言語のプログラム命令であり、１６進数でＷレジスタ４９１のデータをＢＬレジスタ４９２へ転送することを意味している。行４１９の「；￥」以後の「ａｓｒｔ（ｃｐｕｐｃ　　＝＝　ＡＤＲ）；」の部分は、ＡＬＥＴ言語のａｓｒｔ文であり、同じ行のアセンブリ言語のＭＯＶ命令が行われた時に、ｃｐｕｐｃすなわちＵ０．Ｕ１．ｐｒｏｇｃｎｔ４７がＲＯＭ４４のアドレスＡＤＲと同じであるか否かをテストするテスト命令を意味している。行４２０は、行４１９のテスト命令の実行から３クロック後にｃｐｕｂｌすなわちＵ０．Ｕ１．ＢＬ＃ｒｅｇ４９２がｃｐｕｗすなわちＵ０．Ｕ１．Ｗ＃ｒｅｇ４９１と等しくなるか否かをテストするテスト命令を意味している。
【００３３】
行４２１〜行４２５は、アセンブリ言語のプログラム命令が記述されている。
行４２１は、１６進数で０２の定数をＷレジスタ４９１へ転送するプログラム命令を意味している。行４２２は、Ｗレジスタ４９１の値をＢＨレジスタ４９３へ転送するプログラム命令を意味している。行４２３は、１６進数で０ＡＡの定数（すなわち１０進数で１７０）をＷレジスタ４９１へ転送するプログラム命令を意味している。行４２４は、Ｗレジスタ４９１の値を、Ｂレジスタ即ちＢＬレジスタ４９２及びＢＨレジスタ４９３で指定したアドレスのメモリ即ちＲＯＭ４３及びＲＡＭ４４へ転送するプログラム命令を意味している。行４２５は、何もしないことを意味している。
【００３４】
次に、入力信号の記述例を示す。図５は、入力信号ファイル１４２の内容の例を示す図である。入力信号ファイル１４２は、Ｖｅｒｉｌｏｇ−ＨＤＬ言語で記述されている。なお、他のＨＤＬ又はシステム記述言語で記述してあっても良い。図中の記述５０１は、シミュレーションの対象である回路をどのようにテストベンチ１４５へ関係づけるかを指定しており、ｎｒ８ｄというプロセッサ４１を、ｎｒ８ｄ＃ｔｅｓｔというテストベンチ１４５へ関係づけている。
【００３５】
記述５０２は、シミュレーションの対象の回路であるプロセッサｎｒ８ｄ４１へ入力するための入力信号を設定してある。クロックｔ＃ｃｌｋ及びリセットｔ＃ｒｓｔの動作と、他の入力信号の初期値とのみを記述しており、これにより、検証が行われる回路の部分の場所、又は時間が変更になる都度、入力信号の情報を書き換える必要がない。
【００３６】
記述５０３は、信号の波形を出力するために、信号又はレジスタの情報をファイルへ書き込むことを指示している。信号の波形を出力する必要がない場合は、本記述は不必要である。記述５０４は、終了時間を指定している。ここでは１００００００ｎｓ後にシミュレーションを終了することを指定している。
【００３７】
次に、本発明のテストベンチ生成方法の手順を、フローチャートに基づいて説明する。図６は、本発明のテストベンチ生成装置が行う処理の手順を示すフローチャートである。テストベンチ生成装置１のＣＰＵ１１は、コンピュータプログラム２０をＲＡＭ１２へロードし、ロードしたコンピュータプログラム２０に従って、アセンブラの処理を行う（Ｓ１）。図７は、ステップＳ１のアセンブラの処理の手順を示すフローチャートである。ＣＰＵ１１は、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、内部記憶装置１４に記憶されているプログラムファイル１４１を読み出してＲＡＭ１２に記憶し（Ｓ１１）、プログラムファイル１４１にアセンブリ言語で記述されているプログラム命令を機械語に翻訳し、機械語ファイル１４３を生成する（Ｓ１２）。ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、機械語に翻訳された夫々のプログラム命令が実行されるときに記憶されるメモリのアドレスを、機械語ファイル１４３から抽出し（Ｓ１３）。プログラムファイル１４１にＡＬＥＴ言語で記述された部分を、夫々の部分が関連づけられたプログラム命令について抽出したアドレスを対応づけて、プログラムファイル１４３から抽出し（Ｓ１４）、抽出したＡＬＥＴ言語の部分を書き込んだ中間ファイル１４４を生成し（Ｓ１５）、処理をメインへ戻す。
【００３８】
図８は、生成された中間ファイル１４４の内容の例を示す図であり、図５に示すプログラムファイル１４３から生成された中間ファイル１４４の内容である。
プログラムファイル１４３に記述されたＡＬＥＴ言語の夫々の記述が抽出されており、図中に示す２列目の数字は、各行のＡＬＥＴ言語の記述がプログラムファイル１４３のどの行から抽出されたかを示す数字である。また、１列目の数字は、各行に対応づけられたアドレスであり、各行のＡＬＥＴ言語の記述が関連づけられたアセンブリ言語のプログラム命令が実行されるときに記憶されるメモリのアドレスである。
【００３９】
ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、アセンブラの処理で生成した機械語ファイル１４３及び中間ファイル１４４を内部記憶装置１４に記憶させ（Ｓ２）、中間ファイル１４４からテストベンチ１４５を生成するＡＬＥＴコンパイラの処理を行い（Ｓ３）、生成したテストベンチ１４５を内部記憶装置１４に記憶させて（Ｓ４）、処理を終了する。
【００４０】
図９乃至図１２は、ステップＳ３のＡＬＥＴコンパイラの処理の手順を示すフローチャートである。ＣＰＵ１１は、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、機械語ファイル１４３、中間ファイル１４４、及び入力信号ファイル１４２を内部記憶装置１４からＲＡＭ１２へ読み込み（Ｓ３０１）、必要な情報を書き込んだテストベンチ１４５のファイルを生成し（Ｓ３０２）、生成したテストベンチ１４５へ入力信号ファイル１４２の内容を書き込む（Ｓ３０３）。図１３は、生成するテストベンチ１４５の内容の例を示す図である。テストベンチ１４５は、Ｖｅｒｉｌｏｇ−ＨＤＬ言語で記述されている。なお、他のＨＤＬ又はシステム記述言語で記述しても良い。図中の記述１３０１の部分に、入力信号ファイル１４２の内容が書き込まれ、入力信号の情報がテストベンチ中で定義される。記述１３０２は、シミュレーションの結果を書き込むファイルのファイルポインタを定義している。記述１３０３は、シミュレーションにおける時刻となるクロック数を数えるレジスタを定義している。記述１３０４は、シミュレーションにおいてメモリに記憶されているプログラム命令が呼び出された時刻を保存する配列を定義している。また、記述１３０５は、前記ファイルポインタに対して、具体的にファイルを開くことを指示している。
【００４１】
ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、ＲＡＭ１２に記憶している中間ファイル１４４から一行のデータを取得して所定の文字配列に記憶し（Ｓ３０４）、データが取得できたか否かを判定し（Ｓ３０５）、データが取得できなかった場合は（Ｓ３０５：ＮＯ）、中間ファイル１４４の最後の行まで処理が終了したとして、テストベンチ１４５にファイルの終了部分を書き込み（Ｓ３０６）、ＡＬＥＴコンパイラの処理を終了して処理をメインへ戻す。
【００４２】
ステップＳ３０５にてデータが取得できた場合は（Ｓ３０５：ＹＥＳ）、ＣＰＵ１１は、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、取得した行のＡＬＥＴ言語の記述に関連づけられているアドレス等の情報を取得する（Ｓ３０７）。ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、取得した行のＡＬＥＴ言語の先頭の記述が「｀ｄｅｆ」の記述であるか否かを判定し（Ｓ３０８）、「｀ｄｅｆ」の記述であった場合は（Ｓ３０８：ＹＥＳ）、文字列の定義の情報を構造体配列ｄｅｆ［］に保存し（Ｓ３０９）、処理をステップＳ３０４へ戻して、中間ファイル１４４の次の一行の記述を取得する。「｀ｄｅｆ」の記述ではなかった場合は（Ｓ３０８：ＮＯ）、ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、取得した行のＡＬＥＴ言語の先頭の記述が「｀ｐｃ」の記述であるか否かを判定し（Ｓ３１０）、「｀ｐｃ」の記述であった場合は（Ｓ３１０：ＹＥＳ）、プログラムカウンタの定義の情報を所定の文字列ｐｃｓｔｒに保存し（Ｓ３１１）、処理をステップＳ３０４へ戻して、中間ファイル１４４の次の一行の記述を取得する。
【００４３】
ステップＳ３１０にて「｀ｐｃ」の記述ではなかった場合は（Ｓ３１０：ＮＯ）、ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、取得した行のＡＬＥＴ言語の先頭の記述が「＠」の記述であるか否かを判定する（Ｓ３１２）。「＠」の記述であった場合は（Ｓ３１２：ＹＥＳ）、ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、「＠」の記述が一つ目の記述であるか否かを判定し（Ｓ３１３）、「＠」の記述は一つ目ではなく複数の記述がなされていた場合は（Ｓ３１３：ＮＯ）、センシビリティリストが重複して定義されていることを示すエラーを出力し（Ｓ３１４）、処理を強制終了する。「＠」の記述が一つ目の記述であった場合は（Ｓ３１３：ＹＥＳ）、ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、構造体配列ｄｅｆ［］に定義が保存されている文字列が、取得している行に含まれているか否かを判定し（Ｓ３１５）、定義が保存されている文字列が含まれていない場合は（Ｓ３１５：ＮＯ）、処理をステップＳ３１７へ進め、定義が保存されている文字列が含まれていた場合は（Ｓ３１５：ＹＥＳ）、前記文字列を定義に従って置換し（Ｓ３１６）、テストベンチ１４５へセンシビリティリストを書き込み（Ｓ３１７）、センシビリティリストに依存してクロックを刻む記述をテストベンチ１４５へ書き込み（Ｓ３１８）、処理をステップＳ３０４へ戻して、中間ファイル１４４の次の一行の記述を取得する。図１３の記述１３０６は、センシビリティリストの書き込みであり、クロック信号の立ち下がりをシミュレーションにおける時刻の基準とすべく基準クロックを定義している。また、記述１３０７は、シミュレーションにおける時刻となるクロック数を数えるレジスタをインクリメントすることを指示している。
【００４４】
ステップＳ３１２にて「＠」の記述ではなかった場合は（Ｓ３１２：ＮＯ）、ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、取得した行のＡＬＥＴ言語の先頭の記述が「｀＠」の記述であるか否かを判定する（Ｓ３１９）。「｀＠」の記述であった場合は（Ｓ３１９：ＹＥＳ）、ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、「｀＠」の記述が一つ目の記述であるか否かを判定し（Ｓ３２０）、「｀＠」の記述は一つ目ではなく複数の記述がなされていた場合は（Ｓ３２０：ＮＯ）、処理実行条件が重複して定義されていることを示すエラーを出力し（Ｓ３２１）、処理を強制終了する。「｀＠」の記述が一つ目の記述であった場合は（Ｓ３２０：ＹＥＳ）、ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、既に「｀ｐｃ」の定義の情報が所定の文字列ｐｃｓｔｒに保存されているか否かを判定し（Ｓ３２２）、「｀ｐｃ」の定義の情報が保存されていなかった場合は（Ｓ３２２：ＮＯ）、プログラムカウンタが設定されていないことを示すエラーを出力し（Ｓ３２３）、処理を強制終了する。「｀ｐｃ」の定義の情報が保存されていた場合は（Ｓ３２２：ＹＥＳ）、ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、構造体配列ｄｅｆ［］に定義が保存されている文字列が、取得している行に含まれているか否かを判定し（Ｓ３２４）、定義が保存されている文字列が含まれていない場合は（Ｓ３２４：ＮＯ）、処理をステップＳ３２６へ進め、定義が保存されている文字列が含まれていた場合は（Ｓ３２４：ＹＥＳ）、前記文字列を定義に従って置換し（Ｓ３２５）、テストベンチ１４５へ処理実行条件を書き込み（Ｓ３２６）、処理実行条件が満たされたときに、そのときのプログラムカウンタの値に関連づけて、該プログラムカウンタが示すプログラム命令が呼び出された時刻として、そのときのクロックの値を保存すべき記述をテストベンチ１４５へ書き込み（Ｓ３２７）、処理をステップＳ３０４へ戻して、中間ファイル１４４の次の一行の記述を取得する。図１３の記述１３０８は、処理実行条件を設定しており、記述１３０９は、シミュレーションにおいてメモリに記憶されているプログラム命令が呼び出された時刻を保存する配列に、そのときのプログラムカウンタが示すアドレスが呼び出された時刻として、そのときのクロックの値を代入することを指示している。
【００４５】
ステップＳ３１９にて「｀＠」の記述ではなかった場合は（Ｓ３１９：ＮＯ）、ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、取得している行から、「；」までの記述を取得し（Ｓ３２８）、取得した部分の先頭の記述が「＃」の記述であるか否かを判定する（Ｓ３２９）。「＃」の記述であった場合は（Ｓ３２９：ＹＥＳ）、ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、「｀ｐｃ」「＠」及び「｀＠」が既に設定済みであるか否かを判定し（Ｓ３３０）、設定されていない場合は（Ｓ３３０：ＮＯ）、「｀ｐｃ」「＠」及び「｀＠」のうちいずれかが設定されていないことを示すエラーを出力し（Ｓ３３１）、処理を強制終了する。ステップＳ３３０にて、「｀ｐｃ」「＠」及び「｀＠」が既に設定済みであった場合は（Ｓ３３０：ＹＥＳ）、取得している行に対応づけられているアドレスに関連づけて、遅延の記述が示すクロック数だけ遅延クロック数を加算して保存し（Ｓ３３２）、処理をステップＳ３５２へ進める。
【００４６】
ステップＳ３２９にて、取得した部分の先頭の記述が「＃」の記述でなかった場合は（Ｓ３２９：ＮＯ）、ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、取得した部分の記述がａｓｒｔ文の記述であるか否かを判定し（Ｓ３３３）、ａｓｒｔ文の記述であった場合は（Ｓ３３３：ＹＥＳ）、「｀ｐｃ」「＠」及び「｀＠」が既に設定済みであるか否かを判定し（Ｓ３３４）、設定されていない場合は（Ｓ３３４：ＮＯ）、ステップＳ３３１へ処理を進めてエラーを出力し、処理を強制終了する。ステップＳ３３４にて、「｀ｐｃ」「＠」及び「｀＠」が既に設定済みであった場合は（Ｓ３３４：ＹＥＳ）、ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、ａｓｒｔ文の引数である条件式を取得し（Ｓ３３５）、構造体配列ｄｅｆ［］に定義が保存されている文字列が、取得している部分に含まれているか否かを判定し（Ｓ３３６）、定義が保存されている文字列が含まれていない場合は（Ｓ３３６：ＮＯ）、処理をステップＳ３３８へ進め、定義が保存されている文字列が含まれていた場合は（Ｓ３３６：ＹＥＳ）、前記文字列を定義に従って置換し（Ｓ３３７）、時刻が、取得している行に対応づけられているアドレスに関連づけられたクロックの値に保存している遅延クロックを加算したクロックのときに、検証の処理を行うべき、時刻指定の記述をテストベンチ１４５へ書き込み（Ｓ３３８）、条件式に従って所定の値と予測値とを照合すべき記述をテストベンチ１４５へ書き込み（Ｓ３３９）、処理をステップＳ３５２へ進める。図１３の記述１３１０は、所定のアドレスが呼び出された時刻から所定のクロックが加算されたときに検証の処理を行うことを指示しており、図４に示す行４１２に関連づけられたプログラム命令がシミュレーションにて記憶されるメモリのアドレスであるアドレス００３２が呼び出された時刻に遅延クロック０を加えた時刻となったときに検証を行うべき指示を、示している。また、記述１３１１は、条件式に従って所定の値と予測値とを比較して、所定の値が予測値と異なっていた場合にはエラーを出力すべきことを指示している。記述１３１２の、図４に示した複数のテスト命令の夫々に対応する部分には、記述１３１１の部分と同様の、所定の時刻となったときに所定の値と予測値とを比較すべき指示が記述される。なお、図１３では、記述１３１２の部分の具体的な記述は省略している。
【００４７】
ステップＳ３３３にて、取得した部分の記述がａｓｒｔ文の記述でなかった場合は（Ｓ３３３：ＮＯ）、ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、取得した部分の記述がｄｕｍｐ文の記述であるか否かを判定し（Ｓ３４０）、ｄｕｍｐ文の記述であった場合は（Ｓ３４０：ＹＥＳ）、ｄｕｍｐ文の引数である信号名を取得し（Ｓ３４１）、構造体配列ｄｅｆ［］に定義が保存されている文字列が、取得している部分に含まれているか否かを判定し（Ｓ３４２）、定義が保存されている文字列が含まれていない場合は（Ｓ３４２：ＮＯ）、処理をステップＳ３４４へ進め、定義が保存されている文字列が含まれていた場合は（Ｓ３４２：ＹＥＳ）、前記文字列を定義に従って置換し（Ｓ３４３）、時刻が、取得している行に対応づけられているアドレスに関連づけられたクロックの値に保存している遅延クロックを加算したクロックのときに、処理を行うべき、時刻指定の記述をテストベンチ１４５へ書き込み（Ｓ３４４）、取得した信号名の信号の情報を出力すべき記述をテストベンチ１４５へ書き込み（Ｓ３４５）、処理をステップＳ３５２へ進める。
【００４８】
ステップＳ３４０にて、取得した部分の記述がｄｕｍｐ文の記述でなかった場合は（Ｓ３４０：ＮＯ）、ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、取得した部分の記述がｄｉｓｐ文の記述であるか否かを判定し（Ｓ３４６）、ｄｉｓｐ文の記述でなかった場合は（Ｓ３４６：ＮＯ）、処理をステップＳ３５２へ進める。ｄｉｓｐ文の記述であった場合は（Ｓ３４６：ＹＥＳ）、ＣＰＵ１１は、次に、ＲＡＭ１２にロードしたコンピュータプログラム２０に従って、ｄｉｓｐ文の引数である文字列を取得し（Ｓ３４７）、構造体配列ｄｅｆ［］に定義が保存されている文字列が、取得している部分に含まれているか否かを判定し（Ｓ３４８）、定義が保存されている文字列が含まれていない場合は（Ｓ３４８：ＮＯ）、処理をステップＳ３５０へ進め、定義が保存されている文字列が含まれていた場合は（Ｓ３４８：ＹＥＳ）、前記文字列を定義に従って置換し（Ｓ３４９）、時刻が、取得している行に対応づけられているアドレスに関連づけられたクロックの値に保存している遅延クロックを加算したクロックのときに、処理を行うべき、時刻指定の記述をテストベンチ１４５へ書き込み（Ｓ３５０）、取得した文字列を出力すべき記述をテストベンチ１４５へ書き込み（Ｓ３５１）、取得している行に残りの記述があるか否かを判定する（Ｓ３５２）。取得している行に残りの記述がある場合は（Ｓ３５２：ＹＥＳ）、処理をステップＳ３２８へ戻して、取得している行から次の「；」までの記述を取得し、取得している行に残りの記述がない場合は（Ｓ３５２：ＮＯ）、処理をステップＳ３０４へ戻して、中間ファイル１４４の次の一行の記述を取得する。
【００４９】
以上詳述した如く、本発明においては、アセンブリ言語で記述されたプログラム命令に関連づけてＡＬＥＴ言語によるテスト命令を記述しておいたプログラムファイルを用い、シミュレーションにおいてプログラム命令が呼び出される時刻を参照して該時刻から起算した所定クロック後に前記プログラム命令に関連づけられたテスト命令を実行すべき記述を含んだテストベンチ１４５を生成する。これにより、テストベンチを生成する際に、テスト命令を実行する時刻を絶対時間で記述する必要がなくなり、回路の一つ一つの動作に対応しているアセンブリ言語で記述されたプログラム命令からの相対時間でテスト命令を実行する時刻を記述することができる。
【００５０】
本発明により生成されたテストベンチ１４５は、シミュレータのプログラムをロードしたコンピュータに読み込まれ、該コンピュータは、更に機械語ファイル１４３及び回路記述ファイルを読み込み、シミュレータのプログラムに従って、回路記述ファイルに記述された回路上で機械語ファイル１４３に記述されたプログラム命令を実行してテストベンチ１４５に記述されたテスト命令を実行するシミュレーションを行う。
【００５１】
図１４は、図１３に示すテストベンチ１４５に記述された処理の内容を示すフローチャートである。シミュレーションを行うコンピュータは、テストベンチ１４５に従って、シミュレーションでの時刻の単位となるクロックをインクリメントし（Ｓ５１）、処理実行条件が成り立つか否かを判定し（Ｓ５２）、処理実行条件が成り立たない場合は（Ｓ５２：ＮＯ）、処理をステップＳ６１へ進め、処理実行条件が成り立つ場合は（Ｓ５２：ＹＥＳ）、回路記述ファイルに記述された回路のプログラムカウンタを監視し（Ｓ５３）、プログラムカウンタが示すアドレスに関連づけた時刻、即ち該アドレスのプログラム命令が呼び出された時刻として、現在のクロックの値を保存する（Ｓ５４）。前記コンピュータは、次に、対応するアドレスに関連づけられた時刻、即ちテスト命令に関連づけられたプログラム命令が呼び出された時刻を参照して、現在のクロックの値が前記時刻に所定のクロック数を加算した値であるか否かを判定し（Ｓ６１）、前記値であった場合は（Ｓ６１：ＹＥＳ）、テスト命令を実行し（Ｓ６２）、クロックの値が異なっていた場合は（Ｓ６１：ＮＯ）、ステップＳ６２の次のステップへ処理を進める。前記コンピュータは、次に、記述されているテスト命令の夫々について、ステップＳ６１及びステップＳ６２と同様の処理を行い、次に、シミュレーションの終了の条件が満たされているか否かを判定し（Ｓ７０）、終了の条件が満たされていなかった場合は（Ｓ７０：ＮＯ）、処理をステップＳ５１へ戻してクロックをインクリメントし、終了の条件が満たされていた場合は（Ｓ７０：ＹＥＳ）、処理を終了する。
【００５２】
図１５は、テストベンチ１４５を用いてプロセッサ４１に対するシミュレーションを行った処理の波形を示した模式図である。図４の行４１２に記述されたアセンブリ言語のプログラム命令のＭＯＶ命令がＲＯＭ４４の１０進数で３２番地に入っているとする。このときのＭＯＶ命令のＡＤＲは１０進数で３２となる。この場合、図中の１５１２に示した如くプログラムカウンタが１０進数で３２を指すとき、図４の行４１２のＡＬＥＴ言語のａｓｒｔ文が実行される。ａｓｒｔ文はｃｐｕｐｃすなわちＵ０．Ｕ１．ｐｒｏｇｃｎｔ４７がＡＤＲと等しいかどうかテストを行い、この場合、ｃｐｕｐｃすなわちＵ０．Ｕ１．ｐｒｏｇｃｎｔ４７とＡＤＲとは共に１０進数で３２を指しているためテストは合格する。
【００５３】
次に、図４の行４１３の記述により、図中に示した１５１３の部分がテストされる。更に、図４の行４１４の記述により、図中に示した１５１４の部分がテストされる。このとき、ＭＯＶ命令は定数をＷレジスタに転送する命令であり、機械語は１６進数で３２となる。よってＩＮＳＴは１６進数の３２と置き換わるので、この場合もテストに合格する。以下も同様に、図４の行４１５の記述により、図中に示した１５１５の部分がテストされ、図４の行４１６の記述により、図中に示した１５１６の部分がテストされ、図４の行４１７の記述により、図中に示した１５１７の部分がテストされる。いずれの場合もテストに合格する。図４の行４１８の記述により、図中に示した１５１８の部分がテストされ、ＯＰＲ１は第１オペランドである１０ｈ（１６進数の１０）と同じ意味であるため、この場合もテストに合格する。
【００５４】
次に、図４の行４１９の記述により、アセンブリ言語のプログラム命令のＭＯＶ命令がメモリの１０進数で３４番地に格納される。このときＡＤＲは１０進数で３４となる。ここで、アセンブリ言語の夫々の命令からＡＬＥＴ言語の時系列が始まるため、プロセッサ４１のプログラムカウンタが１０進数で３４を指して、「｀＠」で指定されている条件を満たした場合、すなわち図１５に示した１５０１の時刻に、ＡＬＥＴ言語のテスト命令が実行され、図１５に示した１５１９の部分がテストされる。図４の行４１９では、プロセッサ４１のプログラムカウンタが、ＲＯＭのアドレスを指すＡＤＲと等しいかどうかをテストすることを指定しているため、これら両方が１０進数で３４であるのでこのテストは合格する。同様にして、図４の行４２０の記述により、図１５に示した１５２０の部分がテストされ、この場合もテストに合格する。
【００５５】
以上に示した如く、テスト命令を実行する時刻が前後する場合においても、注目するプログラム命令に関連づけてＡＬＥＴ言語のテスト命令を記述することで、テスト命令を実行する時刻を指定できるため、時刻の指定が容易となる。また、回路中の特定の部分の動作に関連づけてテスト命令を独立に記述できるため、パイプライン処理を行うプロセッサに対しても本発明を適用することができる。
【００５６】
図１６は、テストベンチ作成のために必要な記述量を示した特性図である。横軸は、テストベンチによるテスト項目数を示し、縦軸は、テストベンチ作成のために手作業で入力する必要があるファイルのサイズをバイト単位で示す。テスト項目数が増えるに従って膨大な量のファイルを入力する必要があった従来の方法に比べて、本発明では、入力が必要なファイルのサイズが大幅に減少し、テスト項目数の増加に伴う入力ファイルサイズの増加率も大幅に小さい。従って、本発明を用いることにより、テストベンチを作成するために必要な手間および時間を大幅に削減することができる。
【００５７】
本実施の形態においては、アセンブラの処理で中間ファイルを作成し、作成した中間ファイルを元にＡＬＥＴコンパイラの処理でテストベンチを生成する手順を用いる形態を示したが、この形態に限るものではなく、中間ファイルを生成せずに一気にテストベンチを生成する処理を用いる形態であってもよい。また、アセンブラの処理とＡＬＥＴコンパイラの処理とを連続して実行する方法を用いる形態を示したが、アセンブラの処理を終了した時点で一度処理を終了し、オペレータ等の指示を受け付けた後で改めてＡＬＥＴコンパイラの処理を行う方法を用いる形態であってもよい。また、本実施の形態においては、プログラムファイルに記述されるプログラム命令はアセンブリ言語で記述されてあり、該プログラムファイルからテストベンチを生成する形態を示したが、回路の動作を直接に規定する形式のプログラム言語、即ち、回路が行う一連の動作をまとめて規定する所謂高級言語ではなく回路が行う個別の動作を逐一規定する所謂低級言語でプログラム命令が記述された場合は、回路が個別の動作を行う時刻を明確に規定することができるため、アセンブリ言語以外の他の前記プログラム言語でプログラム命令が記述されたプログラムファイルからテストベンチを生成する形態であっても良い。
【００５８】
【発明の効果】
第１、第３及び第５発明においては、回路の動作を直接に規定する形式、即ち、回路が行う一連の動作をまとめて規定するのではなく回路が行う個別の動作を逐一規定する形式で記述されたプログラム命令に関連づけてＡＬＥＴ言語によるテスト命令を記述しておいたプログラムファイルを用い、シミュレーションにおいてプログラム命令が呼び出される時刻を参照して該時刻から起算した所定タイミングで前記プログラム命令に関連づけられたテスト命令を実行すべき記述を含んだテストベンチを生成する。これにより、テストベンチを生成する際に、テスト命令を実行する時刻を絶対時間で記述する必要がなくなり、回路の動作を直接に規定する形式で記述されたプログラム命令からの相対時間でテスト命令を実行する時刻を容易に指定することができる。また、テストベンチを生成するために手作業で入力が必要なファイルのサイズが大幅に減少し、テストベンチを作成するために必要な手間および時間を大幅に削減することができる。
【００５９】
第２、第４及び第６発明においては、アセンブリ言語で記述されたプログラム命令に関連づけてＡＬＥＴ言語によるテスト命令を記述しておいたプログラムファイルを用い、シミュレーションにおいてプログラム命令が記憶されたメモリのアドレスを呼び出された時刻を参照して該時刻から起算した所定クロック後に前記プログラム命令に関連づけられたテスト命令を実行すべき記述を含んだテストベンチを生成する。これにより、テストベンチを生成する際に、テスト命令を実行する時刻を絶対時間で記述する必要がなくなり、回路の一つ一つの動作に対応しているアセンブリ言語で記述されたプログラム命令からの相対クロック数でテスト命令を実行する時刻を指定することができる。また、テストベンチを生成するために手作業で入力が必要なファイルのサイズが大幅に減少し、テストベンチを作成するために必要な手間および時間を大幅に削減することができる等、本発明は優れた効果を奏する。
【図面の簡単な説明】
【図１】本発明の概要を示す概念図である。
【図２】本発明のテストベンチ生成装置の構成を示すブロック図である。
【図３】回路記述ファイルに記述されてシミュレーションの対象となる回路の例を示すブロック図である。
【図４】アセンブリ言語及びＡＬＥＴ言語で記述されたプログラムファイルの例を示す図である。
【図５】入力信号ファイルの内容の例を示す図である。
【図６】本発明のテストベンチ生成装置が行う処理の手順を示すフローチャートである。
【図７】ステップＳ１のアセンブラの処理の手順を示すフローチャートである。
【図８】生成された中間ファイルの内容の例を示す図である。
【図９】ステップＳ３のＡＬＥＴコンパイラの処理の手順を示すフローチャートである。
【図１０】ステップＳ３のＡＬＥＴコンパイラの処理の手順を示すフローチャートである。
【図１１】ステップＳ３のＡＬＥＴコンパイラの処理の手順を示すフローチャートである。
【図１２】ステップＳ３のＡＬＥＴコンパイラの処理の手順を示すフローチャートである。
【図１３】生成するテストベンチの内容の例を示す図である。
【図１４】図１３に示すテストベンチに記述された処理の内容を示すフローチャートである。
【図１５】テストベンチを用いてプロセッサに対するシミュレーションを行った処理の波形を示した模式図である。
【図１６】テストベンチ作成のために必要な記述量を示した特性図である。
【図１７】従来のシミュレーションの概要を示す概念図である。
【符号の説明】
１　テストベンチ生成装置
１１　ＣＰＵ（演算部）
１２　ＲＡＭ（記憶部）
２　記録媒体
２０　コンピュータプログラム
【図１】
2004145670.tif 000003
【図２】
2004145670.tif 000004
【図３】
2004145670.tif 000005
【図４】
2004145670.tif 000006
【図５】
2004145670.tif 000007
【図６】
2004145670.tif 000008
【図７】
2004145670.tif 000009
【図８】
2004145670.tif 000010
【図９】
2004145670.tif 000011
【図１０】
2004145670.tif 000012
【図１１】
2004145670.tif 000013
【図１２】
2004145670.tif 000014
【図１３】
2004145670.tif 000015
【図１４】
2004145670.tif 000016
【図１５】
2004145670.tif 000017
【図１６】
2004145670.tif 000018
【図１７】
2004145670.tif 000019