(57)【要約】【課題】動作シミュレーションとＲＴＬシミュレーションで同じテストベクタを使用できるためのテストベンチを生成する動作合成装置及び方法及びプログラムを提供する。【解決手段】入力印加のタイミング及び出力観測のタイミングを表す信号、及び前記入力印加タイミング信号と前記出力観測タイミング信号のための論理回路を生成する入力印加・出力信号観測タイミング信号生成手段１０４と、当該信号を観測して入力印加、及び、出力観測をおこなうテストベンチを作成するテストベンチ生成手段１０６と、を有する。【選択図】図１
2011253564.tif 000002
【特許請求の範囲】
【請求項１】
回路に対するリセット解除からのクロック数を計測し、前記クロック数が所定の値と一致したときに、前記回路への入力の印加と、前記回路の出力の観測をそれぞれ行うテストベンチを生成するテストベンチ生成手段を備えたことを特徴とする動作合成装置。
【請求項２】
コントロールデータフローグラフを参照して、リセットが解除されてから、入力値を印加するまでのクロック数と、一度入力を印加してから次の入力を印加するまでの周期からなるタイミング情報を入力信号のそれぞれについて記録し、
リセットが解除されてから出力値が有効になるまでのクロック数と、出力値が一度有効になってから次の出力値が有効になるまでの周期を、出力信号のそれぞれについて記録する入力印加・出力観測タイミング記録手段を備え、
前記テストベンチ生成手段は、
前記入力印加・出力タイミング記録手段によって記録された、入力と出力の前記タイミング情報を読み込み、
前記回路に入力されるリセット信号が解除されてからのクロック数を計測し、前記クロック数が、入力を印加するクロック数と一致したとき、又は、入力を印加する周期と一致したときに、入力を印加し、
前記リセット信号が解除されてからのクロック数と、出力が有効になるまでのクロック数が一致したとき、又は、出力が有効になるまでの周期が一致したときに、出力を観測し期待値と照合するような、
テストベンチを作成して、記憶装置に格納する、
ことを特徴とする請求項１記載の動作合成装置。
【請求項３】
入力信号と出力信号に関して、リセットが解除されてから入力値、出力値がそれぞれ有効になるまでのクロック数と、入力印加、出力観測の周期をそれぞれ示すタイミング情報が、前記動作記述の宣言部の入力信号と出力信号の注釈欄にそれぞれ付加され、
前記テストベンチ生成手段は、リセット解除からのクロック数を計測し、前記クロック数が、前記入力信号と前記出力信号のタイミング情報と一致したときに、前記回路への入力の印加と、前記回路の出力の観測をそれぞれ行うテストベンチを生成する、ことを特徴とする請求項１記載の動作合成装置。
【請求項４】
回路に対するリセットの解除からのクロック数を計測し、
前記クロック数が所定の値と一致したときに、前記回路への入力の印加と前記回路の出力の観測を行うテストベンチを作成する、
上記工程を含む、ことを特徴とする動作合成方法。
【請求項５】
回路に対するリセット解除からのクロック数を計測し、前記クロック数が所定の値と一致したときに、前記回路への入力の印加と前記回路の出力の観測を行うテストベンチを作成するテストベンチ生成処理を、
コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の動作を記述した動作レベル回路記述から、具体的な機能（回路）を記述したＲＴＬ（Register Transfer Level）回路記述を生成する動作合成装置、方法及びプログラムに関し、特に、生成されたＲＴＬ回路を検証するためのテストベンチを出力できる動作合成装置、動作合成方法及び動作合成プログラムに関する。
【背景技術】
【０００２】
近年、システムＬＳＩの設計では、抽象度の高いレベルで設計し、動作合成によりＲＴＬを生成する設計手法が採用され始めている。
【０００３】
この種の設計手法では、まず、システムＬＳＩの所望の動作を実現する動作記述を設計する。
【０００４】
次に、動作シミュレーションにより、設計した動作記述が確かに回路の所望の動作を達成しているか、すなわち、設計が正しいかを確認する。
【０００５】
そして、設計が正しければ、動作合成を用いて動作記述をＲＴＬに変換する。
【０００６】
上記設計手法によりＬＳＩの設計を行うとき、動作シミュレーションで使用したテストベクタを、動作合成後のＲＴＬのシミュレーションでも使用したいという要求がある。この要求は、例えば以下の第一、第二を目的としている。
【０００７】
第一に、動作合成前の動作記述と動作合成後のＲＴＬとが同じ機能を実現しているかを確かめるためである。
【０００８】
動作記述とＲＴＬが同じ機能を実現していない場合、動作シミュレーションで動作記述が回路の所望の動作を達成していることを確認しても意味を成さない。なぜなら、結果として、所望の動作を実現する回路を設計できていないことになるためである。
【０００９】
従来、動作記述とＲＴＬが同じ機能を実現しているか否かの確認は、動作シミュレーションとＲＴＬシミュレーションとで同一テストベクタを使用し、それぞれのシミュレーション結果が同じであることを比較することで行われている。
【００１０】
第二に、動作合成後の回路の性能を確かめるためである。
【００１１】
一般に、動作記述にはタイミングの情報が含まれていないため、ある機能を達成するためにどのくらいの時間を必要とするかといった、回路性能を確かめることができない。
【００１２】
対して、ＲＴＬシミュレーションを行うことで、ある機能を達成するために必要な時間、すなわち、回路性能を求めることができる。
【００１３】
そこで、従来手法において、設計した動作記述が所望の性能を達成できるか否かは、動作シミュレーションとＲＴＬシミュレーションとで同じテストベクタを使用し、ＲＴＬシミュレーションで計測される回路性能をもって判断している。
【００１４】
しかしながら、動作シミュレーションで使用したテストベクタを、そのままでは、ＲＴＬシミュレーションには使用することはできない。
【００１５】
その理由は、入力印加タイミング、出力観測タイミングの問題のためである。
【００１６】
一般に、動作記述には、時間の概念（クロック）がない。もしくは、時間の概念があっても、ＲＴＬの時間とはその粒度が異なっている。このため、動作シミュレーションで使用したテストベクタの入力データ系列を、ＲＴＬシミュレーションでクロック毎に印加しても、動作シミュレーションと同じ結果を得ることができない。同様に、ＲＴＬシミュレーションでクロック毎に出力を観測しても、動作シミュレーションと同じ結果を得ることはできない。
【００１７】
特許文献１（特開２００５−７８４０２号公報）には、上記問題点の解決を図るための動作合成システムが開示されている。特許文献１に記載された動作合成システムは、主に、前述した第一の問題（動作シミュレーションで使用したテストベクタの入力データ系列を、ＲＴＬシミュレーションでクロック毎に印加しても、動作シミュレーションと同じ結果を得ることができないという問題）を解決することを意図したものである。この従来の動作合成システムは、入力系列をファイルから読み込むファイル読み込み関数、出力系列をファイルへ書き出すファイル書き込み関数が、動作記述に記載されていることを前提とする。ファイル読み込み関数、及び、ファイル書き込み関数をファイル関数と総称する。この従来の動作合成システムは、構文解析手段と、コントロールデータフローグラフ作成手段と、スケジューリング・バインディング手段と、テストベンチ生成手段と、ＲＴＬ生成手段とから構成されている。このような構成を有する従来の動作合成システムは、次のように動作する。
【００１８】
すなわち、構文解析手段、コントロールデータフローグラフ作成手段において動作記述中のファイル関数を残したままにしておく。
【００１９】
作成したコントロールデータフローグラフを元に、リソースバインディングとスケジューリングを行ってＲＴＬを作成する。
【００２０】
作成したＲＴＬ上において、最初の入力端子からのデータ、変数の入力を切り替えるマルチプレクサのセレクト信号、又は、出力端子に出力されるデータを切り替えるマルチプレクサのセレクト信号を利用して、ファイル関数に関わるファイル入力、又はファイル出力の条件を表現する。
【００２１】
しかしながら、特許文献１に記載の動作合成システムには、動作記述中にファイル関数があることが前提条件であり、この前提条件を満たす動作記述にしか適用できないという問題がある。
【００２２】
また、等価性検証方法の一例が、特許文献２（特開２００４−１４５７１２号公報）に開示されている。特許文献２に記載された等価検証方法は、主に、前述の第一の問題を解決することを意図したものである。この等価検証方法は、ＲＴＬでのシミュレーション結果での入力信号確定時から出力信号確定時までの遅れサイクル数に基づいて比較タイミングを求め、比較タイミングにおけるＲＴＬのシミュレーション結果の出力信号の値と、動作シミュレーションの出力信号とを比較するものであるが、該手法が適用可能な回路の種類が限られている、という問題がある。
【００２３】
これは、入力信号毎に、入力値印加タイミングが異なる回路についての考慮がないためである。
【００２４】
さらには、入力データによって出力信号が確定するまでのサイクル数が変化する場合など、「入力信号確定時から出力信号確定時までの遅れサイクル数」に基づいて比較タイミングを求めることができない場合についての考慮がないためである。
【００２５】
なお、特許文献３（米国特許明細書第６、８４５、３４１号）には、性能評価システムが開示されている。この性能評価システムは、概略次のように動作する。すなわち、動作シミュレーション、及びＲＴＬシミュレーションを同時に実行するテストベンチを作成する。動作記述とテストベンチの間、及び、ＲＴＬとテストベンチの間には、動作シミュレーションとＲＴＬシミュレーションの入力タイミング、及び、出力タイミングの違いを吸収するためのモジュールが挿入される。このようにして、動作シミュレーションとＲＴＬシミュレーションとが同一テストベクトル（ベクタ）を入力し、ＲＴＬがシミュレーションを実行するために必要なクロック数を計測することで、その性能を評価する。
【先行技術文献】
【特許文献】
【００２６】
【特許文献１】特開２００５−７８４０２号公報
【特許文献２】特開２００４−１４５７１２号公報
【特許文献３】米国特許第６、８４５、３４１号明細書（ＵＳ６、８４５、３４１  Ｂ２）（Ｆｉｇ２）
【発明の概要】
【発明が解決しようとする課題】
【００２７】
従来のシステムにおいては、動作シミュレーションで使用したテストベクタをそのままでは、ＲＴＬシミュレーションには使用できない、という課題がある。
【００２８】
その理由は、前述したように、入力印加タイミング、出力観測タイミングの問題のためである。この問題を解決しようとして為された各種提案は、前述のように、十分であるとはいえない。
【００２９】
また、上記課題の別の理由として、入力端子、出力端子の共有化がある。一般に、動作記述の入力端子、出力端子が、ＲＴＬの入力端子、出力端子と一対一対応をしているとは限らない。
【００３０】
さらに、上記課題の別の理由は、動作記述では表現できない動作の問題のためである。動作記述の中には、リセット中の入出力の挙動を指定しないものも多い。例えば、動作記述にＣ言語を使用する場合にはリセット中の入出力の挙動を指定しない（ＳｙｓｔｅｍＣ言語のようにリセット中の入出力の挙動を指定する動作記述のための言語も存在する）。
【００３１】
そこで、ＲＴＬシミュレーション時にリセット期間中に入力値の印加、出力値の観測を行なっても、動作シミュレーションと同じ結果を得ることができない。
【００３２】
さらにまた前記課題の別の理由は、外部モデル（共有メモリのモデル、メモリモデル、演算器モデルなど）の問題のためである。動作合成は、動作記述中の配列をＲＴＬではメモリで実現したり、動作記述中の変数をＲＴＬではモジュール外のレジスタで実現したりする。
【００３３】
また、動作記述中の演算をＲＴＬの演算器で実現するときに、演算器の内部論理の詳細を省略したブラックボックスとして出力することがある。
【００３４】
そのため、ＲＴＬシミュレーションでは、メモリのシミュレーションモデルやモジュール外のレジスタ、及び、ブラックボックスとして出力された演算器のシミュレーションモデルを用意しなければ、シミュレーションを実行することができない。
【００３５】
したがって、本発明は、上記課題の認識に基づき創案されたものであって、その目的は、動作合成前に使用したテストベクタを動作合成後に得られた回路にも利用可能とするテストベンチを出力できる動作合成装置、方法並びにプログラムを提供することにある。
【課題を解決するための手段】
【００３６】
本願で開示される発明は、前記課題を解決するため、概略以下の構成とされる。
【００３７】
本発明によれば、回路に対するリセット解除からのクロック数を計測し、前記クロック数が所定の値と一致したときに、前記回路への入力の印加と、前記回路の出力の観測をそれぞれ行うテストベンチを生成するテストベンチ生成手段を備えた動作合成装置が提供される。
【００３８】
本発明によれば、回路に対するリセットの解除からのクロック数を計測し、前記クロック数が所定の値と一致したときに、前記回路への入力の印加と前記回路の出力の観測を行うテストベンチを作成する、上記工程を含む動作合成方法が提供される。
【００３９】
本発明によれば、回路に対するリセット解除からのクロック数を計測し、前記クロック数が所定の値と一致したときに、前記回路への入力の印加と前記回路の出力の観測を行うテストベンチを作成するテストベンチ生成処理を、コンピュータに実行させるプログラムが提供される。
【発明の効果】
【００４０】
本発明によれば、動作シミュレーションとＲＴＬシミュレーションで同じテストベクタを使用することができる。その理由は、本発明においては、動作合成前に使用したテストベクタを動作合成後に得られた回路にも使用できる、テストベンチを出力できるためである。
【図面の簡単な説明】
【００４１】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】本発明の第１の実施の形態の構成例を示すブロック図である。
【図３】本発明の第１の実施の形態の動作を示すフローチャートである。
【図４】動作記述の一例を示す図である。
【図５】スケジューリング結果の一例を示す図である。
【図６】バインディング結果の一例を示す図である。
【図７】バインディング結果の一例を示す図である。
【図８】ＦＳＭ生成後の記述の一例を示す図である。
【図９】入力印加タイミング信号、出力観測タイミング信号と、その論理が作成された記述の一例を示す図である。
【図１０】テストベンチの一例を示す図である。
【図１１】本発明の第２の実施の形態の構成例を示すブロック図である。
【図１２】本発明の第２の実施の形態の動作を示すフローチャートである。
【図１３】動作記述の一例を示す図である。
【図１４】本発明の第３の実施の形態の構成例を示すブロック図である。
【図１５】実施例で用いられる動作記述の一例を示す図である。
【図１６】スケジューリング結果の一例を示す図である。
【図１７】ＦＳＭ生成後の記述の一例を示す図である。
【図１８】入力印加タイミング・出力観測タイミングを記録した記述の一例を示す図である。
【図１９】テストベンチの一例を示す図である。
【図２０】テストベンチの一例を示す図である。
【図２１】テストベンチの一例を示す図である。
【図２２】動作記述の一例を示す図である。
【図２３】ＲＴＬの一例を示す図である。
【図２４】テストベンチの一例を示す図である。
【発明を実施するための形態】
【００４２】
上記した本発明についてさらに詳細に説述すべく添付図面を参照して説明する。
【００４３】
＜実施の形態１＞
図１を参照すると、本発明の第１の実施の形態に係る動作合成システム（装置）は、プログラム制御により動作するコンピュータ（中央処理装置；プロセッサ；データ処理装置）１００と、データ記憶手段（データ記憶装置）１１０とを備えている。
【００４４】
コンピュータ（中央処理装置；プロセッサ；データ処理装置）１００は、スケジューリング手段１０１と、バインディング手段１０２と、ＦＳＭ（ｆｉｎｉｔｅ  ｓｔａｔｅ  ｍａｃｈｉｎｅ）生成手段１０３と、入力印加・出力観測タイミング信号生成手段１０４と、ＲＴＬ（レジスタトランスファレベル）等のＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）生成手段（ＲＴＬ生成手段）１０５と、テストベンチ生成手段１０６を含む。これらの手段はそれぞれ概略つぎのように動作する。
【００４５】
スケジューリング手段１０１は、動作記述を状態へ割り当てる。すなわち、動作記述中の演算、条件判定、入力端子からの値の入力、出力端子への値の出力、配列読み込み、配列書き込みを、それぞれ実行される状態に割り当てる。
【００４６】
バインディング手段１０２は、動作記述をハードウェアリソースに割り当てる。すなわち、
動作記述中の演算を演算器に、
動作記述中の入力端子をＲＴＬの入力端子に、
動作記述中の出力端子をＲＴＬの出力端子に、
動作記述中の配列をＲＴＬのメモリ又はレジスタファイル
に割り当てる。
【００４７】
このとき、動作記述中の複数の入力信号がＲＴＬの一つの入力信号に割り当てられたり、また、動作記述中の複数の出力信号がＲＴＬの一つの出力信号に割り当てられることもある。また、同様に、動作記述中の複数の演算がＲＴＬの一つの演算器に割り当てられることもある。これらを「ハードウェアリソースの共有」と呼ぶ。
【００４８】
有限状態機械（ＦＳＭ）生成手段１０３は、状態の遷移を制御する有限状態機械（ＦＳＭ）とハードウェアリソースを制御する制御論理回路を作成する。ハードウェアリソースを制御する制御論理回路とは、スケジューリング手段１０１によって得られた状態への割り当て、及び、バインディング手段１０２によって得られたハードウェアリソースへの割り当てに従って、ハードウェアリソースを制御するための論理回路である。すなわち、動作記述中の演算が割り当てられた状態で割り当てられた演算器によって実行されるための論理回路、動作記述中の条件判定がこれに割り当てられた状態で実行されるための論理回路、及び、動作記述中の入力端子からの値の入力・出力端子への値の出力・配列読み込み・配列書き込みが、それぞれ割り当てられた状態において、ＲＴＬの入力端子からの値の入力・出力端子への値の出力・メモリ読み込み・メモリ書き込みによって実現されるための論理回路である。
【００４９】
入力印加・出力観測タイミング信号生成手段１０４は、入力端子及び出力端子のそれぞれ対して、これに対応する新たな信号端子を作成する。該信号を「入力印加・出力観測タイミング信号」という。
【００５０】
さらに、入力印加・出力観測タイミング信号生成手段１０４は、対応する入力信号・出力信号に値がそれぞれ入力・出力される状態及び条件においてのみ、入力印加・出力観測タイミング信号に、所定の値（「アクティブ値」という）が出力されるように論理回路を作成する。
【００５１】
ＲＴＬ生成手段１０５は、有限状態機械生成手段１０３で作成したＦＳＭと制御論理回路、及び、入力印加・出力観測タイミング信号生成手段１０４で作成した論理回路、及び、ハードウェアリソースをＨＤＬに変換し、記憶装置１１０に格納する。
【００５２】
テストベンチ生成手段１０６は、テストベンチを作成する。テストベンチには、入力印加・出力観測タイミング信号を観測し、当該信号にアクティブ値が出力されたときに入力を印加、もしくは出力を観測し期待値と照合するような論理を作成する。テストベンチ生成手段１０６は、作成したテストベンチを記憶装置１１０に格納する。
【００５３】
なお、本実施形態の動作合成装置は、図１に示した各構成要素の機能を実現するＬＳＩや論理回路等によって構成されていてもよく、図２に示すような情報処理装置（コンピュータ）によって実現されてもよい。
【００５４】
図２に示す情報処理装置は、ＣＰＵを含む処理装置１００と、記憶装置１１０と、記録媒体（「記憶媒体」ともいう）５００とを有し、処理装置１００は、記録媒体５００に格納された動作合成用プログラムを読み込み、該動作合成プログラムにしたがってＣＰＵにより、以下に記載する本実施形態のスケジューリング手段１０１及びバインディング（付帯情報変換）手段１０２の処理をそれぞれ実行する。
【００５５】
また、記憶装置１１０は、そのメモリ領域が、動作記述記憶部１１１、ＲＴＬ記憶部１１２、テストベンチ記憶部１１３にそれぞれ分割されて使用される。
【００５６】
次に、図１及び図３のフローチャートを参照して、本実施の形態の全体の動作について詳細に説明する。
【００５７】
動作記述記憶部１１１には動作記述が予め記憶されている。動作記述は、Ｖｅｒｉｌｏｇ−ＨＤＬ、ＶＨＤＬ、ＳｙｓｔｅｍＶｅｒｉｌｏｇといったハードウェア記述言語（ＨＤＬ）や、Ｃ言語、Ｃ＋＋言語、Ｃ＃言語、ＳｙｓｔｅｍＣ、ＳｐｅｃＣ、Ｊａｖａ（登録商標）、Ｐｅｒｌ、Ｓｃｈｅｍｅ、Ｌｉｓｐなどのプログラミング言語により表現される。Ｃ言語、Ｃ＋＋言語、Ｊａｖａ（登録商標）に回路を表現するための拡張を行った言語で表現されることもある。動作記述は、例えば設計者によって準備される。
【００５８】
まず、コンピュータ１００は、記憶装置１１０内の動作記述記憶部１１１から動作記述を読み込み、コンピュータ１００におけるスケジューリング手段１０１によって、動作記述を状態へ割り当てる。すなわち、動作記述中の演算、条件判定、入力、出力、配列読み込み、配列書き込みを状態に割り当てる（図３のステップＡ１）。
【００５９】
次に、バインディング手段１０２によって動作記述をハードウェアリソースに割り当てる。すなわち、
動作記述中の演算を演算器に、
入力を入力端子に、
出力を出力端子に、
配列をメモリ又はレジスタファイル
に割り当てる（図３のステップＡ２）。
【００６０】
さらに、ＦＳＭ生成手段１０３によって、状態の遷移を制御する有限状態機械（ＦＳＭ）とハードウェアリソースを制御する論理を作成する（図３のステップＡ３）。
【００６１】
さらに、入力印加・出力観測タイミング信号生成手段１０４によって、入力印加・出力観測タイミング信号と、当該信号のための論理回路を作成する（図３のステップＡ４）。
【００６２】
さらに、ＲＴＬ生成手段１０５によって、ステップＡ３において有限状態機械生成手段１０３が作成したＦＳＭと制御論理回路、及び、ステップＡ４において入力印加・出力観測タイミング信号生成手段が作成した論理回路、及び、ハードウェアリソースをＨＤＬに変換し、記憶装置１１０に格納する（図３のステップＡ５）。ＨＤＬには、ＶＨＤＬ、Ｖｅｒｉｌｏｇ−ＨＤＬ、ＳｙｓｔｅｍＶｅｒｉｌｏｇ、ＳｙｓｔｅｍＣ、ＳｐｅｃＣ、Ｃ言語、Ｃ＋＋言語、Ｃ＃言語などが使用される。
【００６３】
テストベンチ生成手段１０６によってテストベンチを生成する。テストベンチ生成手段１０６は作成したテストベンチを記憶装置１１０に格納する（ステップＡ６）。テストベンチも、ＲＴＬと同様に、ＶＨＤＬ、Ｖｅｒｉｌｏｇ−ＨＤＬ、ＳｙｓｔｅｍＶｅｒｉｌｏｇ、ＳｙｓｔｅｍＣ、ＳｐｅｃＣ、Ｃ言語、Ｃ＋＋言語、Ｃ＃言語などを用いて表現される。
【００６４】
次に、本実施の形態の作用効果について説明する。
【００６５】
本実施の形態では、入力印加・出力観測タイミング信号生成手段１０４によって、対応する入力信号・出力信号に値がそれぞれ入力・出力される状態、及び条件を、外部に伝えるための信号を生成し、テストベンチ生成手段１０６によって、当該信号を観測して、入力を印加、又は、出力を観測し期待値と照合するようなテストベンチを作成するというように構成されているため、適切なタイミングで入力を印加、又は、出力を観測して期待値と照合するようなテストベンチを作成することができる。
【００６６】
＜実施の形態２＞
次に、本発明の第２の実施の形態について説明する。図１１は、本発明の第２の実施の形態の構成を示す図である。図１２は、本発明の第２の実施の形態の動作を説明する流れ図である。図１１を参照すると、本発明の第２の実施の形態は、プログラム制御により動作するコンピュータ（中央処理装置；プロセッサ；データ処理装置）１００が、図１に示した前記第１の実施の形態における入力印加・出力観測タイミング信号生成手段１０４を削除し、テストベンチ生成手段１０６の代わりに、別のテストベンチ生成手段１０７を備えている。図１２を参照すると、図３の流れ図からステップＡ４、Ａ６が削除され、ステップＡ７があらたに追加されている。
【００６７】
本実施形態におけるテストベンチ生成手段１０７は、前記第１の実施形態のテストベンチ生成手段１０６とは、以下の点で異なる。
【００６８】
すなわち、テストベンチ生成手段１０７は、動作記述中の信号を入力印加・出力観測タイミング信号として認識する。その上で、当該信号を観測し、当該信号にアクティブ値が出力されたときに入力を印加、もしくは、出力を観測し期待値と照合するような論理を作成する（図１２のステップＡ７）。そして、作成したテストベンチを記憶装置１１０に格納する。
【００６９】
＜実施の形態３＞
図１４を参照すると、本発明の第３の実施の形態は、プログラム制御により動作するコンピュータ（中央処理装置；プロセッサ；データ処理装置）１００が、図１に示された第一の実施の形態における、入力印加・出力観測タイミング信号生成手段１０４の代わりに、入力印加・出力タイミング記録手段１０８を備え、テストベンチ生成手段１０６の代わりに、テストベンチ生成手段１０９を備える点で異なる。
【００７０】
入力印加・出力観測タイミング記録手段１０８は、概略以下のように動作する。
【００７１】
コントロールデータフローグラフを参照して、リセットが解除されてから、入力値を印加するまでのクロック数と、一度入力を印加してから次の入力を印加するまでの周期を、入力それぞれについて記録する。また、同時に、リセットが解除されてから出力値が有効になるまでのクロック数と、出力値が一度有効になってから次の出力値が有効になるまでの周期を、出力信号それぞれについて記録する。
【００７２】
テストベンチ生成手段１０９は、概略、以下のように動作する。入力印加・出力タイミング記録手段１０８によって記録された、入出力タイミングを読み込み、リセット信号が解除されてからのクロック数を計測し、このクロック数が、入力を印加するクロック数と一致したとき、又は、入力を印加する周期と一致したときに、入力を印加するテストベンチを作成する。また、同時に、リセットが解除されてからのクロック数と、出力が有効になるまでのクロック数が一致したとき、又は、出力が有効になるまでの周期が一致したときに、出力を観測し期待値と照合するようなテストベンチを作成する。作成したテストベンチを記憶装置１１０に格納する。
【００７３】
本実施形態は、特許文献２と以下の点で異なっている。すなわち、出力観測タイミングを、入力が確定してからの遅れサイクルではなく、リセットが解除されてからのサイクルと、周期をもとに決定している。
【００７４】
入力、出力の区別なく、リセットが解除されてからのサイクル数に基づいて、入力の印加、出力の観測をすることで、特許文献２で開示された発明を適用できない回路であっても、本発明を適用することができる。
【００７５】
＜実施の形態４＞
次に、本発明の第４の実施の形態について説明する。本発明の第４の実施の形態は、プログラム制御により動作するコンピュータ（中央処理装置；プロセッサ；データ処理装置）１００が、図１に示された第１の実施の形態における、テストベンチ生成手段１０６が、以下の機能を備える点で異なる。
【００７６】
テストベンチ生成手段１０６が作成するテストベンチには、入力印加・出力観測タイミング信号に加えて、リセット信号を観測し、入力印加・出力観測信号にアクティブ値が出力されていても、リセット信号が有効になっている間は、入力の印加も出力の観測も行わない。作成したテストベンチを記憶装置１１０に格納する。
【００７７】
テストベンチ生成手段１０６は、また、概略以下のようにも動作する。すなわち、テストベンチ生成手段１０６が作成するテストベンチには、入力印加・出力観測タイミング信号に加えて、ストール信号を観測し、入力印加・出力観測信号にアクティブ値が出力されていても、ストール信号が有効になっている間は、入力の印加も出力の観測も行わない。作成したテストベンチを記憶装置１１０に格納する。
【００７８】
＜実施の形態５＞
次に、本発明の第５の実施の形態について説明する。本発明の第５の実施形態は、プログラム制御により動作するコンピュータ（中央処理装置；プロセッサ；データ処理装置）１００が、図１に示された第１の実施の形態における、テストベンチ生成手段１０６が、以下の機能を備える点で異なる。テストベンチ生成手段１０６は、概略以下のように動作する。
【００７９】
ＲＴＬ生成手段１０５で得られたＲＴＬ単独ではシミュレーションが実行できない場合に、これに対応して、必要なシミュレーションモデルをもつテストベンチを生成する。
【００８０】
ＲＴＬ単独ではシミュレーションできない場合とは、例えば、動作記述に配列が存在し、これに対して、ＲＴＬには、メモリにアクセスするためのインターフェイス回路が生成されている場合がある。この場合、メモリのためのシミュレーションモデルを有するテストベンチを作成する。
【００８１】
また、例えば、動作記述に掛け算、割り算など複雑な演算が存在し、これに対して、ＲＴＬには、当該演算部分を、ブラックボックスとして出力している場合がある。この場合、これに対応する演算のシミュレーションモデルを有するテストベンチを作成する。
【実施例】
【００８２】
以下では、いくつかの具体的な実施例を用いて説明する。
【００８３】
＜実施例１＞
まず、本発明の第１の実施例を説明する。本発明の第１の実施例は、前記した本発明の第１の実施の形態に対応するものである。図４を参照すると、動作記述が例示されている。図４の動作記述はＣ言語で表現されている。
【００８４】
関数ｆｕｎｃ（）の入力端子はｉｎｔ型の変数ａ、ｂ、ｃ、ｄであり、出力端子は  ｉｎｔ型の変数ｏである。当該関数の出力値ｏは、
入力ｃの値が０のときは、入力すべて（ａ、ｂ、ｃ、ｄ）の総和であり、
入力ｃの値が０以外のときは、入力ａ、ｂの和となる。動作記述は、記憶装置１１０の動作記述記憶部１１１に予め記憶されている。
【００８５】
第１の実施例の動作合成装置は、図４の動作記述を記憶装置１１０の動作記述記憶部１１１から読み出し、ＲＴＬ生成手段１０５が図９に示すＲＴＬを作成し、テストベンチ生成手段１０６が、図１０に示すテストベンチを作成し、それぞれ、記憶装置１１０のＲＴＬ記憶部１１２とテストベンチ記憶部１１３に格納する。
【００８６】
まず、コンピュータ１００におけるスケジューリング手段１０１が動作記述を状態へ割り当てる（図３のステップＡ１）。すなわち、動作記述中の演算、条件判定、入力、出力、配列読み込み、配列書き込みを状態に割り当てる。
【００８７】
図４の動作記述には、
５行目に、入力ａ、ｂ及び加算＋、
６行目に入力ｃと条件判定＝＝、
７行目に入力ｃ、ｄと加算＋、
９行目に加算＋と出力ｏ
が指定されている。
【００８８】
図５を参照すると、スケジューリング手段１０１による状態への割り当てが例示されている。図５では、スケジューリング手段１０１によって、
５行目の入力ａ、ｂ及び加算＋が、状態ＳＴＡＴＥ１に、
６行目の入力ｃと条件判定＝＝及び、７行目の入力ｃ、ｄと加算＋がそれぞれ状態ＳＴＡＴＥ２に、
９行目の加算＋と出力ｏが、状態ＳＴＡＴＥ３
に割り当てられていることを示している。
【００８９】
次に、コンピュータ１００におけるバインディング手段１０２が、動作記述をハードウェアリソースに割り当てる（図３のステップＡ２）。
【００９０】
すなわち、
動作記述中の演算を演算器に、
動作記述の入力端子をＲＴＬの入力端子に、
動作記述の出力端子をＲＴＬの出力端子に、
動作記述の配列を、ＲＴＬのメモリ又はレジスタファイル
に割り当てる。
【００９１】
図６を参照すると、バインディング手段１０２による演算器への割り当てが模式的に例示されている。
【００９２】
図６（Ａ）の５行目の加算＋、７行目の加算＋、及び９行目の加算＋が、すべて一つの演算器ＡＤＤ（図６（Ｄ））に割り当てられ、６行目の条件判定＝＝が、比較器ＥＱ（図６（Ｅ））に割り当てられていることを示している。
【００９３】
また、図７を参照すると、バインディング手段１０２による入力端子、出力端子への割り当てが例示されている。
【００９４】
図７（Ａ）の５行目の入力ａ、及び、６行目、７行目の入力ｃが入力端子ｉｐｏｒｔ１（図７（Ｂ））に、
図７（Ａ）の５行目の入力ｂ、及び７行目の入力ｄが入力端子ｉｐｏｒｔ２（図７（Ｃ））に、
図７（Ａ）の１０行目の出力ｏが出力端子ｏｐｏｒｔ１（図７（Ｆ））に、
それぞれ割り当てられていることを示している。
【００９５】
次に、有限状態機械（ＦＳＭ）生成手段１０３が、状態の遷移を制御する有限状態機械（ＦＳＭ）とハードウェアリソースを制御する制御論理回路を作成する（図３のステップＡ３）。
【００９６】
図８を参照すると、有限状態機械と制御論理回路、及び、該制御論理回路で制御されるハードウェアリソースが例示されている。この例は、Ｖｅｒｉｌｏｇ−ＨＤＬで表現されている。図８に示す例において、有限状態機械及び制御論理回路は、状態レジスタｓｔａｔｅとｃａｓｅ（）文で表現されている。なお、図８は単に図面作成の都合で図８（Ａ）、（Ｂ）に分図されており、ｍｏｄｕｌｅ（入出力端子リスト）・・・ｅｎｄｍｏｄｕｌｅの範囲が一つの回路モジュールとなる。
【００９７】
また、ハードウェアリソースとして、入力端子、出力端子、演算器、記憶素子（レジスタ）が用いられている。入力端子には、ｉｐｏｒｔ１、ｉｐｏｒｔ２が用いられている。出力端子にはｏｐｏｒｔ１が用いられている。演算器には、加算器ＡＤＤ、比較器ＥＱが用いられているが、図８に示す例では、加算＋、比較＝＝として表現されている。記憶素子（レジスタ）には、ｖ０、ｖ１が用いられている。その他、リセット信号ｒｓｔ、クロック信号ｃｌｋが用いられている。モジュールｍａｉｎは、概略以下のように動作する。
【００９８】
クロック信号ｃｌｋの立ち上がりイベントで以下の動作が行われる。リセット端子ｒｓｔの入力が１のとき、状態レジスタｓｔａｔｅの値をＴ＿ＳＴＡＴＥ１とし、レジスタｖ０、ｖ１、ｏ＿ｔを０に初期化する。
【００９９】
クロック信号ｃｌｋの立ち上がりイベントで、リセット端子ｒｓｔの入力が１でないとき、以下のように動作する。状態レジスタｓｔａｔｅの値がＴ＿ＳＴＡＴＥ１の時には、入力端子ｉｐｏｒｔ１、ｉｐｏｒｔ２からそれぞれ値を読み込み、当該値の和を加算器ＡＤＤによって計算し、レジスタｖ０に計算結果を格納する。さらに、状態レジスタｓｔａｔｅの値をＴ＿ＳＴＡＴＥ２に更新する。
【０１００】
状態レジスタｓｔａｔｅの値がＴ＿ＳＴＡＴＥ２の時には、入力端子ｉｐｏｒｔ１、ｉｐｏｒｔ２からそれぞれ値を読み込み、ｉｐｏｒｔ１の値を比較器ＥＱによって比較する。入力端子ｉｐｏｒｔ１から読み込んだ値が０である場合には、読み込んだ値の和を加算器ＡＤＤによって計算し、レジスタｖ１に計算結果を格納する。さらに、状態レジスタｓｔａｔｅの値をＴ＿ＳＴＡＴＥ３に更新する。
【０１０１】
状態レジスタｓｔａｔｅの値がＴ＿ＳＴＡＴＥ３の時には、レジスタｖ０とｖ１の値の和を加算器ＡＤＤによって計算し、出力端子ｏｐｏｒｔ１に出力する。さらに、状態レジスタｓｔａｔｅの値をＴ＿ＳＴＡＴＥ１に更新する。
【０１０２】
状態レジスタｓｔａｔｅの値は、Ｔ＿ＳＴＡＴＥ１、Ｔ＿ＳＴＡＴＥ２、Ｔ＿ＳＴＡＴＥ３、Ｔ＿ＳＴＡＴＥ１、・・・、の順番で更新される。
【０１０３】
テストベンチは、入力端子ｉｐｏｒｔ１、ｉｐｏｒｔ２にそれぞれ入力ａ、ｂ、ｃ、ｄの値を適切なタイミングで印加し、出力端子ｏｐｏｒｔ１の値を適切なタイミングで観測することで、動作記述の関数ｆｕｎｃ（）の動作を実現する。
【０１０４】
次に、入力印加・出力観測タイミング信号生成手段１０４が、入力印加・出力観測タイミング信号と、当該信号のための論理回路を作成する（図３のステップＡ４）。
【０１０５】
図９を参照すると、入力印加・出力観測タイミング信号と、当該信号のための論理回路を、図８に付加した例が図示されている。
【０１０６】
図４の動作記述には、入力端子ａ、ｂ、ｃ、ｄ及び出力端子ｏが備わっている。図９を参照すると、入力ａ、ｂ、ｃ、ｄに対して、入力印加タイミング信号ａ＿ｅ、ｂ＿ｅ、ｃ＿ｅ、ｄ＿ｅが追加されている。また、出力信号ｏに対して、出力観測タイミング信号ｏ＿ｅが追加されている。また、それぞれの出力値を決定する論理回路も追加されている。
【０１０７】
動作記述の入力信号ａの５行目に相当する値は、スケジューリング手段、及び、バインディング手段による動作合成の結果のＲＴＬでは、状態ＳＴＡＴＥ１において、入力端子ｉｐｏｒｔ１より取得される。したがって、入力印加タイミング信号ａ＿ｅも、状態ＳＴＡＴＥ１においてのみ、アクティブ値（１（Ｈｉｇｈ））になるような論理回路（assign a_e= (state==T_STATE1)? 1'b1:1'b0;）が作成されている。
【０１０８】
同様に、出力信号ｏは、状態ＳＴＡＴＥ３において、出力端子ｏｐｏｒｔ１に出力される。したがって、出力観測タイミング信号ｏ＿ｅは、状態ＳＴＡＴＥ３においてのみ、アクティブ値（１（Ｈｉｇｈ））になるような論理回路（assign o_e= (state==T_STATE3 )? 1'b1:1'b0；)が作成されている。
【０１０９】
次に、ＲＴＬ生成手段１０５が、ＦＳＭ、制御論理回路、及び、入力印加・出力観測タイミング信号とその論理回路、及び、ハードウェアリソースをＨＤＬに変換し、記憶装置１１０に格納する（図３のステップＡ５）。図９には、ＲＴＬ生成手段１０５によって作成されたＨＤＬ（Ｖｅｒｉｌｏｇ−ＨＤＬ）が例示されている。
【０１１０】
次に、テストベンチ生成手段１０６によってテストベンチを生成する。テストベンチには、入力印加・出力観測タイミング信号を観測し、当該信号にアクティブ値が出力されたときに入力を印加、もしくは出力を観測し期待値と照合するような論理を作成する。
【０１１１】
図１０を参照すると、テストベンチ生成手段１０６によって作成されたテストベンチを示している。図１０の例は、Ｖｅｒｉｌｏｇ−ＨＤＬに似た擬似コードで表現されている。生成されたテストベンチは、概略以下のような動作をする。
【０１１２】
入力印加タイミング信号ａ＿ｅの値がアクティブ値（１（Ｈｉｇｈ））のときに、入力端子ｉｐｏｒｔ１から、入力信号ａの値を取得することを想定して、入力端子ｉｐｏｒｔ１に入力信号ａの入力値を印加する。入力印加タイミング信号ｂ＿ｅの値がアクティブ値（１（Ｈｉｇｈ））のときに、入力端子ｉｐｏｒｔ１から、入力信号ｂの値を取得することを想定して、入力端子ｉｐｏｒｔ１に入力信号ｂの入力値を印加する。入力印加タイミング信号ｃ＿ｅの値がアクティブ値（１（Ｈｉｇｈ））のときに、入力端子ｉｐｏｒｔ２から、入力信号ｃの値を取得することを想定して、入力端子ｉｐｏｒｔ２に入力信号ｃの入力値を印加する。入力印加タイミング信号ｄ＿ｅの値がアクティブ値（１（Ｈｉｇｈ））のときに、入力端子ｉｐｏｒｔ２から、入力信号ｄの値を取得することを想定して、入力端子ｉｐｏｒｔ２に入力信号ｄの入力値を印加する。
【０１１３】
同様に、出力観測タイミング信号ｏ＿ｅの値がアクティブ値（１（Ｈｉｇｈ））のときに、出力端子ｏｐｏｒｔ１から出力信号ｏの値が出力されていることを想定して、出力端子ｏｐｏｒｔ１の値を観測し、出力信号ｏの期待値と比較照合する。図１０において、モジュール  ｍａｉｎ  ｄｕｔ（入出力端子リスト）は、テスト対象モジュールである。
【０１１４】
＜実施例２＞
次に本発明の第２の実施例を説明する。本実施例は、図１１及び図１２を参照して説明した前記第２の実施の形態に対応するものである。図１３を参照すると、動作記述の一例が示されている。図１３の動作記述は、図４の動作記述と比較して、出力信号ａ＿ｅ、ｂ＿ｅ、ｃ＿ｅ、ｄ＿ｅ、ｏ＿ｅを備え、１６行目、１７行目、２０行目、２３行目に、出力信号ａ＿ｅ、ｂ＿ｅ、出力信号ｃ＿ｅ、出力信号ｄ＿ｅ、出力信号ｏ＿ｅへの出力動作が指定されていることが異なる。
【０１１５】
図１３の動作記述において、出力信号ａ＿ｅ、ｂ＿ｅ、ｃ＿ｅ、ｄ＿ｅ、ｏ＿ｅはそれぞれａ、ｂ、ｃ、ｄ、ｏの入力タイミング・出力タイミングをあらわす出力信号である。また、回路記述部には、それぞれ対応する信号の入力・出力アクセスがある場合にアクティブ値（１）を出力するような動作が指定されている。
【０１１６】
宣言部において、信号ｂ＿ｅには、対応する信号がｂであり、ｂ＿ｅがｂの入力タイミングを指定する信号であることが、コメント（プラグマ）で指定されている。２行目：“input int b；//pragma  enable_signal_is b_e”のコメント記号“//”以下の“pragma enable_signal_is b_e”が、シミュレータへの指示（プラグマ）として、ｂ＿ｅがｂの入力タイミングを指定する信号であることを規定する。
【０１１７】
逆に、信号ｃには、対応する信号がｃ＿ｅであり、ｃ＿ｅがｃの入力タイミングを指定する信号であることがコメント（プラグマ）で指定されている。７行目：“output int c_e；//pragma  enable_signal_for c”のコメント記号“//”以下の“pragma enable_signal_for c”が、シミュレータへの指示（プラグマ）として、c＿ｅがcの入力タイミングを指定する信号であることを規定する。
【０１１８】
本発明の第２の実施例の動作合成装置は、図１３の動作記述を、図１１の記憶装置１１０の動作記述記憶部１１１から読み出し、スケジューリング手段１０１、バインディング手段１０２、ＦＳＭ生成手段１０３、ＲＴＬ生成手段１０５を経て、図９に例示されるモジュールｍａｉｎを生成する。当該モジュールｍａｉｎの動作は前述のとおりある。
【０１１９】
次に、図１１のテストベンチ生成手段１０７によってテストベンチを生成する。テストベンチには、入力印加・出力観測タイミング信号を観測し、当該信号にアクティブ値が出力されたときに入力を印加、もしくは出力を観測し期待値と照合するような論理を作成する。このとき、入力印加・出力観測タイミング信号には、動作記述にもともと存在した信号を利用する。
【０１２０】
図１０を参照すると、作成されたテストベンチが例示されている。この例は、Ｖｅｒｉｌｏｇ−ＨＤＬに似た擬似コードで表現されている。
【０１２１】
信号ａの入力印加タイミング信号には、ａ＿ｅが用いられている。これは、信号名の類似をもとに判別した信号である。
【０１２２】
信号ｂの入力印加タイミング信号には、ｂ＿ｅが用いられている。これは、信号ｂのコメント（プラグマ）（図１３参照）をもとに判別した信号である。
【０１２３】
信号ｃの入力印加タイミング信号には、ｃ＿ｅが用いられている。これは、信号ｃのコメント（プラグマ）（図１３参照）をもとに判別した信号である。
【０１２４】
信号ｄの入力印加タイミング信号には、ｄ＿ｅが用いられている。これは、動作記述において、信号ｄの参照と信号ｄ＿ｅへの出力が並行して記述されていることから判別した信号である（図１３の１９と２０行参照）。
【０１２５】
図１０のテストベンチの動作は前述のとおりである。
【０１２６】
＜実施例３＞
次に、本発明の第３の実施例を説明する。本発明の第３の実施例は、図１４を参照して説明した前記第３の実施の形態に対応するものである。図１５を参照すると、動作記述の一例が示されている。図１５において、関数ｆｕｎｃ（）の入力はｉｎｔ型の変数ａ、ｂ、ｃ、ｄであり、出力はｉｎｔ型の変数ｏ１、ｏ２である。関数ｆｕｎｃ（）の出力ｏ１は入力ａ、ｂの和であり、出力ｏ２は入力ａ、ｂ、ｃ、ｄの総和である。
【０１２７】
動作記述は、図１４の記憶装置１１０の動作記述記憶部１１１に予め記憶されている。
【０１２８】
本発明の第３の実施例の動作合成装置は、図１５の動作記述を、図１４の記憶装置１１０の動作記述記憶部１１１から読み出し、RTL生成手段１０５が、図１８に示したＲＴＬと、テストベンチ生成手段１０９が、図１９のテストベンチを作成し、それぞれ、記憶装置１１０のＲＴＬ記憶部１１２とテストベンチ記憶部１１３に格納する。
【０１２９】
まず、コンピュータ１００におけるスケジューリング手段１０１が動作記述を状態へ割り当てる。すなわち、動作記述中の演算、条件判定、入力、出力、配列読み込み、配列書き込みを状態に割り当てる。
【０１３０】
図１５の動作記述には、
１１行目に入力ａ、ｂ及び加算＋、
１２行目に入力ｂ、ｃ及び加算＋、
１３行目には出力ｏ１、
１４行目には加算＋、
１５行目には出力ｏ２
が指定されている。
【０１３１】
図１６を参照すると、スケジューリング手段１０１による状態割り当てが例示されている。図１６では、スケジューリング手段１０１によって、１１行目の入力ａ、ｂ及び加算＋がＳＴＡＧＥ１に、１２行目の入力ｂ、ｃ及び加算＋がＳＴＡＧＥ２に、１３行目の出力ｏ１及び１４行目の加算＋がＳＴＡＧＥ３に、１５行目の出力ｏ２がＳＴＡＧＥ４に割り当てられていることを示している。
【０１３２】
次にコンピュータ１００のおけるバインディング手段１０２及びＦＳＭ生成手段１０３を経て図１７のモジュールｍａｉｎが生成される。
【０１３３】
図１７を参照すると、バインディング手段１０２、ＦＳＭ生成手段１０３後に得られるモジュールｍａｉｎが例示されている。図１７の例は、Ｖｅｒｉｌｏｇ−ＨＤＬで表現されている。当該モジュールはパイプライン回路として合成されている。ＳＴＡＧＥ１からＳＴＡＧＥ４までのすべてのステージがクロックに同期して毎クロック実行されるように動作する。
【０１３４】
次に、入力印加・出力観測タイミング記録手段１０８は、コントロールデータフローグラフを参照して、リセットが解除されてから入力値を印加するまでのクロック数、及び、入力印加の周期を、入力信号それぞれについて記録する。また、リセットが解除されてから出力値が有効になるまでのクロック数と、出力観測の周期を、出力信号それぞれについて記録する。図１８を参照すると、図１７のモジュールｍａｉｎに、これらの情報が記録されたモジュールｍａｉｎが例示されている。
【０１３５】
モジュールｍａｉｎの入力信号ａ、ｂは、それぞれリセットが解除された次のクロックから、毎サイクル入力を印加するため、その情報が記載されている。すなわち、図１８（Ａ）に示すように、宣言部の入力信号ａ、ｂの各コメント行の１，１は、リセットが解除されてから１クロック後に有効となり、周期は１クロックサイクルであることを示している。
【０１３６】
入力信号ｃ、ｄは、それぞれリセットが解除されて２クロック後から、毎サイクル入力を印加するため、その情報が記載されている。すなわち、図１８（Ａ）に示すように、宣言部の入力信号ｃ、ｄの各コメント行の２，１は、リセットが解除されてから２クロック後に有効となり、周期は１クロックサイクルであることを示している。
【０１３７】
出力信号ｏ１は、リセットが解除されてから３クロック後から、毎サイクル出力値が有効になるため、その情報が記載されている。すなわち、図１８（Ａ）に示すように、宣言部の出力信号ｏ１のコメント行の３，１は、リセットが解除されてから３クロック後に有効となり、周期は１クロックサイクルであることを示している。
【０１３８】
出力信号ｏ２は、リセットが解除されてから４クロック後から毎サイクル出力値が有効になるため、その情報が記載されている。すなわち、図１８（Ａ）に示すように、宣言部の出力信号ｏ２のコメント行の４，１は、リセットが解除されてから４クロック後に有効となり、周期は１クロックサイクルであることを示している。
【０１３９】
次に、図１４のＲＴＬ生成手段１０５及びテストベンチ生成手段１０９により、ＲＴＬ及びテストベンチを作成し、それぞれ記憶装置１１０に格納する。
【０１４０】
図１９を参照すると、図１４のテストベンチ生成手段１０９によって作成されたテストベンチが例示されている。図１９の例は、Ｖｅｒｉｌｏｇ−ＨＤＬに似た擬似コードで表現されている。
【０１４１】
生成されたテストベンチは、概略以下のような動作をする。リセットが解除されてから１クロックサイクル後、且つ１クロック周期で入力端子ａ、ｂにそれぞれ入力信号ａ、ｂの値を印加する。
【０１４２】
リセットが解除されてから２クロックサイクル後、且つ１クロック周期で入力端子ｃ、ｄにそれぞれ入力信号ｃ、ｄの値を印加する。
【０１４３】
また、リセットが解除されてから３クロックサイクル後、且つ１クロック周期で出力端子ｏ１の値を観測し、出力信号ｏ１の期待値と照合する。
【０１４４】
リセットが解除されてから４クロックサイクル後、且つ１クロック周期で出力端子ｏ２の値を観測し、出力信号ｏ２の期待値と照合する。
【０１４５】
＜実施例４＞
次に本発明の第４の実施例を説明する。本発明の第４の実施例は、前記第４の実施の形態に対応するものである。図２０を参照すると、本発明の第４の実施の形態のテストベンチ生成手段１０６が作成したテストベンチの例が示されている。
【０１４６】
図２０に示すように、生成されたテストベンチは、概略以下のような動作をする。
【０１４７】
入力印加タイミング信号ａ＿ｅの値がアクティブ値（１（Ｈｉｇｈ））のとき、且つ、リセットが有効でないときに、入力端子ｉｐｏｒｔ１から入力信号ａの値を取得することを想定して、入力端子ｉｐｏｒｔ１に、入力信号ａの入力値を印加する。入力印加タイミング信号ｂ＿ｅの値がアクティブ値（１（Ｈｉｇｈ））のとき、且つ、リセットが有効でないときに、入力端子ｉｐｏｒｔ１から入力信号ｂの値を取得することを想定して、入力端子ｉｐｏｒｔ１に、入力信号ｂの入力値を印加する。入力印加タイミング信号ｃ＿ｅの値がアクティブ値（１（Ｈｉｇｈ））のとき、且つ、リセットが有効でないときに、入力端子ｉｐｏｒｔ２から入力信号ｃの値を取得することを想定して、入力端子ｉｐｏｒｔ２に、入力信号ｃの入力値を印加する。入力印加タイミング信号ｄ＿ｅの値がアクティブ値（１（Ｈｉｇｈ））のとき、且つ、リセットが有効でないときに、入力端子ｉｐｏｒｔ２から入力信号ｄの値を取得することを想定して、入力端子ｉｐｏｒｔ２に、入力信号ｄの入力値を印加する。
【０１４８】
出力観測タイミング信号ｏ＿ｅの値がアクティブ値（１（Ｈｉｇｈ））のとき、且つ、リセットが有効でないときに、出力端子ｏｐｏｒｔ１から出力信号ｏの値が出力されていることを想定して、出力端子ｏｐｏｒｔ１の値を観測し、出力信号ｏの期待値と比較照合する。
【０１４９】
図２１には、第４の実施の形態のテストベンチ生成手段１０６が作成した、テストベンチの別の例が示されている。
【０１５０】
リセットが解除されてから１クロックサイクル後、且つ、１クロック周期、且つ、ストール信号が有効でないときに、入力端子ａ、ｂにそれぞれ入力信号ａ、ｂの値を印加する。またリセットが解除されてから２クロックサイクル後、且つ、１クロック周期、且つ、ストール信号が有効でないときに、入力端子ｃ、ｄにそれぞれ入力信号ｃ、ｄの値を印加する。
【０１５１】
また、リセットが解除されてから３クロックサイクル後、４クロックサイクル後、且つ、１クロック周期、且つ、ストール信号が有効でないときに、出力端子ｏ１、ｏ２の値をそれぞれ観測し、期待値と照合する。
【０１５２】
＜実施例５＞
次に本発明の第５の実施例を説明する。本発明の第５の実施例は、前記第５の実施の形態に対応するものである。図２２を参照すると、動作記述の一例が示されている。この動作記述は、概略次のような動作を指定している。
【０１５３】
まず、入力信号ａ、ｂから値を読み取り、配列ａｒｙ［］の入力信号ａの値の番地に入力信号ｂの値を書き込む。
【０１５４】
次に、入力信号ｃから値を読み込み、配列ａｒｙ［］の入力信号ｃの値の番地の値を読み出し出力信号ｏ１に出力している。
【０１５５】
図２３を参照すると、本発明の第５の実施の形態のスケジューリング手段１０１、バインディング手段１０２、ＦＳＭ生成手段１０３、ＲＴＬ生成手段１０５を経て得られるＲＴＬの一例が示されている。図２３の記述では、配列ａｒｙ［］にアクセスするためのメモリインターフェイス回路が作成されている。信号ａｄ、ｒｄ、ｗｄ、ｗｅがそれぞれ、アドレス、読み込みデータ、書き込みデータ、書き込み有効フラグに対応している。
【０１５６】
モジュールｍａｉｎは、概略以下のように動作する。クロック信号ｃｌｋの立ち上がりイベントで以下の動作が行われる。リセット端子ｒｓｔの入力が１のとき、状態レジスタｓｔａｔｅの値をＴ＿ＳＴＡＴＥ１とし、レジスタｖ０、ｖ１、ｏ＿ｔを０に初期化する。
【０１５７】
クロック信号ｃｌｋの立ち上がりイベントで、リセット端子ｒｓｔの入力が１でないとき、以下のように動作する。状態レジスタｓｔａｔｅの値がＴ＿ＳＴＡＴＥ１の時には、入力信号ａ、ｂを読み込み、それぞれの値をレジスタａｄ＿ｔ、ｗｄ＿ｔにそれぞれ格納し、ｗｅ＿ｔに１を格納し、状態レジスタｓｔａｔｅの値をＴ＿ＳＴＡＴＥ２に更新する。
【０１５８】
状態レジスタｓｔａｔｅの値がＴ＿ＳＴＡＴＥ２の時には、入力信号ｃを読み込み、その値をａｄ＿ｔに格納し、ｗｅ＿ｔに０を格納し、状態レジスタｓｔａｔｅの値をＴ＿ＳＴＡＴＥ３に更新する。
【０１５９】
状態レジスタｓｔａｔｅの値がＴ＿ＳＴＡＴＥ３の時には、状態レジスタｓｔａｔｅの値をＴ＿ＳＴＡＴＥ４に更新する。状態レジスタｓｔａｔｅの値がＴ＿ＳＴＡＴＥ４の時には、読み込みデータｒｄを、レジスタｏ＿ｔに格納し、状態レジスタｓｔａｔｅの値をＴ＿ＳＴＡＴＥ１に更新する。状態レジスタｓｔａｔｅの値は、Ｔ＿ＳＴＡＴＥ１、Ｔ＿ＳＴＡＴＥ２、・・・の順番で更新される。
【０１６０】
図２４を参照すると、テストベンチ生成手段１０６が生成したテストベンチが示されている。このテストベンチでは、テスト対象モジュール（main dut(・・・)）のほかに、配列ａｒｙ［］に対応するメモリのシミュレーションモデルｍ１（memory m1(・・・)）が作成され、必要な結線がされている。
【０１６１】
本発明によれば、動作記述と、動作合成後のＲＴＬが、等価であることを確かめるといった用途に適用できる。また、動作合成後のＲＴＬの性能が十分であるかを確かめるといった用途にも適用可能である。
【０１６２】
以上、本発明を上記実施例に即して説明したが、本発明は上記実施例の構成にのみ制限されるものでなく、本発明の範囲内で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０１６３】
１００  コンピュータ（中央処理装置；プロセッサ；データ処理装置）
１０１  スケジューリング手段
１０２  バインディング手段
１０３  ＦＳＭ生成手段
１０４  入力印加・出力観測タイミング信号生成手段
１０５  ＲＴＬ生成手段
１０６  テストベンチ生成手段
１０７  テストベンチ生成手段  
１０８  入力印加・出力観測タイミング記録手段
１０９  テストベンチ生成手段
１１０  記憶装置
１１１  動作記述記憶部
１１２  ＲＴＬ記憶部
１１３  テストベンチ記憶部
５００  記録媒体
【図１】
2011253564.tif 000003
【図２】
2011253564.tif 000004
【図３】
2011253564.tif 000005
【図４】
2011253564.tif 000006
【図５】
2011253564.tif 000007
【図６】
2011253564.tif 000008
【図７】
2011253564.tif 000009
【図８】
2011253564.tif 000010
【図９】
2011253564.tif 000011
【図１０】
2011253564.tif 000012
【図１１】
2011253564.tif 000013
【図１２】
2011253564.tif 000014
【図１３】
2011253564.tif 000015
【図１４】
2011253564.tif 000016
【図１５】
2011253564.tif 000017
【図１６】
2011253564.tif 000018
【図１７】
2011253564.tif 000019
【図１８】
2011253564.tif 000020
【図１９】
2011253564.tif 000021
【図２０】
2011253564.tif 000022
【図２１】
2011253564.tif 000023
【図２２】
2011253564.tif 000024
【図２３】
2011253564.tif 000025
【図２４】
2011253564.tif 000026