(57)【要約】【課題】  電子回路の動作アルゴリズムをソフトウェア言語で記述したソース記述からハードウェア記述言語による記述を出力する際にテストベンチを生成する。【解決手段】  ソース記述をハードウェア化に必要な情報を含んだ動作レベルの記述言語で書かれた入力記述を入力する。入力した入力記述の構文を解析する。解析の結果によりファイル関数を残したままコントロールデータフローグラフを生成する。生成したコントロールデータフローグラフを元にリソースバインディングとスケジューリングを行ってＲＴＬ回路図を生成する。生成したＲＴＬ回路図上において最初の入力端子からのデータないし変数の入力を切り替えるマルチプレクサのセレクト信号、または出力端子に出力されるデータを切り替えるマルチプレクサのセレクト信号を利用して、ファイル関数に係わるファイル入力またはファイル出力の条件を表現することによってテストベンチを生成する。【選択図】          図１
2005078402.tif 000002
【特許請求の範囲】
【請求項１】
電子回路の動作アルゴリズムをソフトウェア言語で記述したソース記述からハードウェア記述言語による記述を出力する電子回路の動作合成方法において、
前記ソース記述をハードウェア化に必要な情報を含んだ動作レベルの記述言語で書かれた入力記述を入力する工程と、
入力した前記入力記述の構文を解析する工程と、
前記解析の結果によりファイル関数を残したままコントロールデータフローグラフを生成する工程と、
生成した前記コントロールデータフローグラフを元にリソースバインディングとスケジューリングを行ってＲＴＬ回路図を生成する工程と、
前記生成したＲＴＬ回路図上において最初の入力端子からのデータないし変数の入力を切り替えるマルチプレクサのセレクト信号、または出力端子に出力されるデータを切り替えるマルチプレクサのセレクト信号を利用して、前記ファイル関数に係わるファイル入力またはファイル出力の条件を表現することによってテストベンチを生成する工程とを有することを特徴とする電子回路の動作合成方法。
【請求項２】
前記マルチプレクサのセレクト信号は、前記入力記述の内容によって、前記コントロールデータフローグラフにおけるステート信号、または該ステート信号と入力記述上の条件に対する結果とで定まる信号を振り向けることを特徴とする請求項１に記載の電子回路の動作合成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子回路の動作アルゴリズムをソフトウェア言語によって記述したソース記述からハードウェア記述言語による記述を出力する電子回路の動作合成に関する。
【背景技術】
【０００２】
信号処理回路，暗号回路，誤り訂正回路，画像処理回路等の電子回路のＣＡＤにおいて、これらの電子回路を動作アルゴリズム上、すなわち、動作レベルで設計する際、電子回路の動作アルゴリズムのソース記述が機能的に正しいことを確かめるために必ず検証を行う。この検証を機能検証と呼ぶ。機能検証には様々な方法が採られ得るが、最も一般的なのは、図１６に例示するソース記述に含まれるファイル入出力による機能検証方法である。図１６は、Ｃ言語による電子回路のソース記述の一つの具体例を示している。図１６の１１，１２，１７，２４および２６行目がファイル入出力による機能検証部分である。
【０００３】
次に、動作合成ツールを用いて動作合成を行う際、入力ポートや変数のビット幅などのハードウェア化に必要な情報を含んだ、動作レベルの記述言語で書かれた入力記述を用意しなければならない。図１７は、元々は図１６のようなソフトウェア言語で書かれていたソース記述を動作合成可能な入力記述に書き換えたものである。図１７の５行目のinは入力ポートを、６行目のoutは出力ポートを表す関数であり、ter(α to β)は、MSBα、LSBβのterminal信号を宣言する関数とする。また、９，１０行目のreg(αto β)は、MSBα、LSBβのレジスタを宣言する関数とする。
【０００４】
こうして、図１７のような動作合成可能な入力記述が準備できたところで動作合成を行う。図１８は、従来の動作合成方法の手順を示すフローチャートである。以下、図１７の入力記述を例にして従来の動作合成方法を説明する。
【０００５】
初めに、動作合成可能な入力記述の入力を行う（図１８の段階B1）。続いて、構文解析（段階B2）を経て、記述中にファイル関数があるかを調べ（段階B3）、ファイル関数があればスキップをする（段階B4）。これは、ハードウェアにはファイルポインタなどの概念が無いために、ファイル関数は動作合成対象とならないことによる措置である。図１７の例では、２，３，１１，１２，１７，２４および２６の各行がファイル関数に係わりスキップされる。
【０００６】
次に、コントロールデータフローグラフ（以下「ＣＤＦＧ」と記す）を生成する（段階B5）。ＣＤＦＧとは動作アルゴリズムをデータと制御の流れで示した図をいう。図１９は、図１７の入力記述に対して生成されたＣＤＦＧを示す。図１９では、３つのブロックB_01，B_02，B_03の遷移による制御の流れを左側に示し、余の部分がデータの流れを示している。ブロックB_01は入力部、ブロックB_02は処理部、ブロックB_03は出力部である。
【０００７】
図１９のブロックB_01は、図１７の１５行目にあたり、関数funcA()をコールしている。また，ブロックB_02は、図１７の１６〜２２行目にあたり、tmpの内容によって、input_dataに入力ポート「i_ch」からデータを取るか、０を代入するかを決定し、そして関数funcBをコールしている。ブロックB_03は、図１７の２３〜２８行目にあたり、resultの結果によって、出力ポート「o_ch」にresultの値を出力するか、０を出力するかを決定している。そして、このときo_chに０を出力した場合は処理を終了し、そうでなかった場合は、ブロックB_01に戻っている。
【０００８】
続いて、図１９に示したＣＤＦＧに基づいてリソースバインディングとスケジューリングが行われる（段階B6）。ここでは、動作合成制約である回路周波数や演算器制約に基づいて、演算器，レジスタ，マルチプレクサ等のマッピングやシェアリングを行う。この段階B6において得られたＲＴＬ回路図を図２０に示す。図２０におけるＦＳＭ（Finite State Machine）コントローラは、ＦＳＭコントローラの枠内に示すようなシーケンスでブロックB_01，B_02，B_03を遷移させる。
【０００９】
最後に、合成された回路構成を論理合成ツールに直接入力可能なレジスタ・トランスファ・レベル（ＲＴＬ）のハードウェア記述言語による記述を出力して、動作合成を終了する（段階B7）。
【００１０】
なお、特許公報上、この種の技術として、非アルゴリズム的な動作を含むプロセッサの動作を記述するアーキテクチャ動作記述を入力とし、回路動作の特徴に応じて回路を分割したデータパス回路記述とコントロール回路記述とインタフェース回路記述を生成することにより、ＲＴＬ記述言語による記述を生成する「アーキテクチャ動作合成装置〜」が知られている（例えば、特許文献１参照）。
【００１１】
【特許文献１】特開平１１−１０２３８１（第１−８頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上述のように、従来の電子回路の動作合成は、ソフトウェア記述言語によるソース記述をベースにした動作合成可能な入力記述からハードウェア言語記述を出力するものである。動作合成の際に、ほとんどのソフトウェア記述言語が合成可能であるが、唯一、ポインタ記述だけは動作合成が行えない。それは、ファイルポインタがソフトウェア特有のものであり、ハードウェアには存在しないものだからである。そのため、ファイルポインタを使用するファイル関数も動作合成の対象から外れてしまう（図１８の段階B4）。
【００１３】
この結果、動作レベルでファイル関数を用いて機能検証した場合のテストデータ等検証環境が、ＲＴＬに持ち越すことができず、再びＲＴＬで検証環境を構築する必要が生まれる。しかし、ＲＴＬで検証環境を再構築するとなると、テストベンチとテストデータを新たに用意する必要が生まれ、そのための工数が発生するうえに、人手が介入することによって機能検証結果との等価性も失われ、信頼度が低下してしまうという問題点がある。
【００１４】
なお、上記特許公報記載の技術には機能検証についての記述がない。
【００１５】
本発明の目的は、上記問題を解決するために、動作レベルで使用した検証環境をＲＴＬで再利用でき、それによって電子回路の開発工数の短縮を図ることができる電子回路の動作合成方法を提供することにある。
【課題を解決するための手段】
【００１６】
本発明は、動作レベルで使用した検証環境をＲＴＬで再利用するために、動作合成ツールに、動作レベルの検証環境をＲＴＬで使用可能な検証環境に自動的に変換する機能を追加する。具体的には、動作合成ツールにファイルポインタ記述を合成対象とする機能を追加する。
【００１７】
すなわち、本発明の電子回路の動作合成方法は、電子回路の動作アルゴリズムをソフトウェア言語で記述したソース記述からハードウェア記述言語による記述を出力する電子回路の動作合成方法において、ソース記述をハードウェア化に必要な情報を含んだ動作レベルの記述言語で書かれた入力記述を入力する段階と、入力した入力記述の構文を解析する段階と、解析の結果によりファイル関数を残したままコントロールデータフローグラフを生成する段階と、生成したコントロールデータフローグラフを元にリソースバインディングとスケジューリングを行ってＲＴＬ回路図を生成する段階と、生成したＲＴＬ回路図上において最初の入力端子からのデータないし変数の入力を切り替えるマルチプレクサのセレクト信号、または出力端子に出力されるデータを切り替えるマルチプレクサのセレクト信号を利用して、ファイル関数に係わるファイル入力またはファイル出力の条件を表現することによってテストベンチを生成する段階とを有することを特徴とする。
【００１８】
より具体的には、マルチプレクサのセレクト信号は、入力記述の内容によって、コントロールデータフローグラフにおけるステート信号、または該ステート信号と入力記述上の条件に対する結果とで定まる信号を振り向ける。
【発明の効果】
【００１９】
本発明により、動作レベルで使用した検証データ、検証環境ともに、ＲＴＬで再利用が可能となり、設計工数の短縮と、検証結果の信頼性の向上とが図れる。
【発明を実施するための最良の形態】
【００２０】
本発明は、信号処理回路，暗号回路，誤り訂正回路，画像処理回路等の電子回路に対する動作合成時に、ＲＴＬとともにテストベンチを自動生成するものである。対象となる電子回路は、ＣＤＦＧにおいて制御の流れとデータの流れが分離されているものに限られ、パイプライン制御によるものは含まれない。
【００２１】
図１は、本発明の電子回路の動作合成方法を示すフローチャートを示す。図１では、図１８に対比して、ファイル関数の存否確認段階（段階B3）とファイル関数のスキップ段階（段階B4）がなくなり、テストベンチの生成段階（段階A5）が設けられている。この結果により、回路構成とテストベンチとを出力している（段階A6）。
【００２２】
図１において、動作合成可能な入力記述を入力し（図１の段階A1）、構文解析（段階A2）を行う。このとき、図１８の従来の動作合成フローではファイル関数があればスキップして合成を行っていたが、この新規な動作合成フローではファイル関数に関する記述をそのまま残しておく。この状態でＣＤＦＧを生成する（段階A3）。ＣＤＦＧは、入力記述による電子回路の動作アルゴリズムを制御とデータの流れで図示したものである。制御は、前準備，データ入力，データ処理，データ出力等のステートブロックに分割され、各ブロックについて、ステートの遷移とデータの流れが示される。
【００２３】
次いで、ＣＤＦＧにソースバインディングとスケジューリングが行われ、ＲＴＬ回路図を生成する（段階A4）。そして、ＲＴＬ回路図についてテストベンチを生成する（段階A5）。このとき、ファイルポインタ記述を生成対象とするための措置を講じる。この措置においては、入力記述上のファイル入力またはファイル出力の条件は、ＲＴＬ回路図上において最初の入力端子からのデータないし変数の入力を切り替えるマルチプレクサ、または最終の出力端子からのデータを切り替えるマルチプレクサのセレクト信号を利用して表現される。マルチプレクサのセレクト信号は、入力記述の内容によって、ステート信号、またはステート信号と入力記述上の条件に対する結果とで定まる信号が振り向けられる。
【００２４】
最後に、合成された回路構成と生成されたテストベンチとをハードウェア記述言語による記述を出力して動作合成を終了する（段階A6）。
【実施例１】
【００２５】
図２は、本発明の実施例１で使用する入力記述例を示す。この入力記述は、後に図４のＲＴＬ回路図で示される電子回路の動作アルゴリズムのＣ言語による記述に、入力ポートや変数のビット幅などのハードウェア化に必要な情報を含ませたものである。図２は、従来技術の説明に用いた図１７の入力記述に対して、発明の説明の便宜上、より多くの記述を含ませている。図２の場合、９〜１１行目，２３〜２５行目，３０行目，３２行目および３８行目がファイル関数に関する記述にあたる。
【００２６】
本発明の電子回路の動作合成方法は動作合成ツールとしてプログラム化され得る。本発明による動作合成ツールは、図２の入力記述を入力すると（図１の段階A1）、構文解析し（段階A2）、上述のファイル関数に関する記述を残したままＣＤＦＧを生成する（段階A3）。図３は生成されたＣＤＦＧを示している。図３におけるブロックB_01は図２の２６行目にあたり、ブロックB_02は２７〜３５行目、ブロックB_03は３６〜３８行目にあたる。従って図３には明記されていないが、図２の３０行目と３２行目のファイル関数はブロックB_02内に、３８行目のファイル関数はブロックB_03内に記述が残っていることになる。
【００２７】
次に、図３のＣＤＦＧを元にリソースバインディングおよびスケジューリングを行い、アーキテクチャを決定して、図４に示すＲＴＬ回路図を生成する（段階A4）。図４において、ＦＳＭコントローラは、ブロックB_01，ブロックB_02，ブロックB_03を図示しているシーケンスで遷移させる。indataは本回路の入力データ、validは入力データが有効であることを証する信号、outdataは本回路の出力データ、reqは出力データが意味があることを証する信号である。
【００２８】
そして、テストベンチを生成し（段階A5）、最後に、合成された回路構成と生成されたテストベンチとをＲＴＬレベルのハードウェア記述言語による記述として出力する（段階A6）。
【００２９】
以下、テストベンチの生成について説明する。テストベンチの生成にあたっては、動作合成の際に、出力結果がVHDLかVerilogHDLかを選択できるものとして、先ず、VHDLのテストベンチ生成について以下に述べる。
【００３０】
図５は、図２に示した入力記述を左側にＡを付して、生成されるべきテストベンチの概要を右側にＢを付して示している。図５のB1〜B4行目のライブラリ宣言部は、A2行目に対応し、動作合成を行うソース記述にファイルポインタが含まれている時の出力である。もしも、ファイルポインタが含まれてない場合は、図５のB1〜B4行に代わって下記の２行が出力される。
Library IEEE,STD;
Use IEEE.std_logic_1164.all;
B6-B7行目のエンティティの宣言は、動作合成対象のTOPの関数名(この場合main)の前に、「tb_」を付加するものとする。また、B9行目のアーキテクチャ名は「ARC」を使用し、B10〜B19行目のコンポーネント文は動作合成対象の入出力ポート宣言部をそのまま利用する。B21〜B26行目のシグナル宣言部は、ポート名の前に「w_」を付加したものを使用する。B28〜B30行目は、動作合成対象のソースに書かれてあるファイルオープン関数より生成する。すなわち、A9〜A11行目およびA23〜A25行目の記述から生成される。B33〜B40行目のポートマップ文は、B10〜B18行目で宣言した入出力ポートと、B21〜B26行目で宣言したシグナルを接続する。
【００３１】
次に、B42行目（図５でPROCESS文と記している）部分以降に書くプロセス文の生成方法について述べる。先ず、電子回路のクロックは動作合成時に指定されるものなので、その値を引用する。例えば、動作合成時に動作周波数が50MHzと与えられた場合、クロックのプロセス文は下記のとおりとなる。
process
begin
w_CLOCK <= ‘1’;
wait for 10 ns;
w_CLOCK <= ‘0’;
wait for 10 ns;
end process;
また、リセット信号は、デフォルトでは
reset <= ‘1’, ‘0’ after 10 ns;
とする。
【００３２】
図７は、図５の右側にＢを付して示されているテストベンチにおけるB42行目のPROCESS文を詳細化した中間結果を示す。図７の４４〜５０行目が上述のクロック定義部、５２行目がリセット信号定義部を示している。
【００３３】
さて、図５のA30,A32,A38行目に記載されているファイル関数に関する措置について説明する。図６は図２の入力記述による動作レベル上のタイミングチャートを示す。図６から明らかなように、本回路はB_02ステート時しかvalidデータをファイルから読み込まない。そこで、A30行目のファイル関数に関する措置に対するプロセス文は、７行目にそのことを条件として記述して下記のようになる。
process (w_CLOCK)
variable li : line;
variable i_valid : std_logic;
begin
if (w_RESET =‘0’) then
if(w_CLOCK’event and w_CLOCK =‘1’) then
if (w_ST_02 =‘1’) then
readline(fp_valid,li);
read(li,i_valid);
w_valid<= i_valid;
end if;
end process;
上記の７行目は、図４のvalidの最初にあるマルチプレクサM1のセレクト信号としてステート信号ST_02を利用したものである。このマルチプレクサM1は、ステートB_02の時だけvalidポートから入力信号を読み込み、それ以外のステート時はvalidポートを参照しないという働きをする。このマルチプレクサM1の動作を利用すれば、動作レベルの時と等価な検証をテストベンチで行うことが可能になる。そこで、マルチプレクサM1のセレクト信号ST_02を出力ポートを増やして、その出力ポートに値を出力する。そして、その信号をトリガーにすれば、機能検証時と同じ入力データでテストベンチにおいてRTL検証を行うことが可能になる。
【００３４】
図７の５４〜６７行目が上述のvalid.datファイルから入力データを読込むプロセス文である。また、トリガーとなるステート信号ST_02信号をテストベンチで使用するために、１８，２８，４２行目に新たにステート信号ST_02信号を宣言する記述が追加され、それが６０行目でトリガーとして使用されている。この結果、図７は、クロック定義部，リセット信号定義部およびA30行目のファイル関数に関する措置のプロセスを明らかにしている。
【００３５】
上述のA30行目の措置と同様に、図５のA32行目については図４のマルチプレクサM2のセレクト信号TR_01をトリガーにすればよく、図５のA38行目は図４のマルチプレクサM3のセレクト信号ST_03をトリガーにすればよいことがわかる。その結果、これらのプロセスをも明らかにしたテストベンチは、図７にA32行目とA38行目のプロセスを追加して図8-1および図8-2のようになる。図8-1はテストベンチの前半、図8-2はテストベンチの後半を示す。
【００３６】
図8-2において、７３〜８６行目が図５A32行目のindata.datファイルから入力データを読み込むプロセス文であり、８８〜９９行目が図５A38行目のoutdata.datファイルへ出力データを書き出すプロセス文である。また、トリガーとなるトリガー信号TR_01，ステート信号ST_03をテストベンチで使用するために、図8-1の１８，１９行目と３０，３１行目と４６，４７行目に新たにトリガー信号TR_01，ステート信号ST_03を宣言する記述が追加され、それが図8-2の７９行目，９３行目でトリガー信号として使用されている。
【００３７】
以上の結果、図8-1および図8-2に示すように完成されVHDLで出力されるベンチテストは、動作レベルにおけるファイル関数をも引き継いだものであるため、動作レベルで検証したテストデータを再利用することが可能になり、かつ等価な検証が行えるようになる。
【実施例２】
【００３８】
次に、図２の入力記述に対するテストベンチをVerilogHDLで出力する方法を第２の実施例として説明する。図１のフローチャートの段階A1〜段階A4まではVHDLの時と同じである。段階A5のテストベンチ生成の内容が異なる。
【００３９】
先ず、テストベンチの概要は図９（図５相当）のようにして生成できる。図９のB1行目はテストベンチのモジュール名定義で、動作合成対象のTOPの関数名（この場合main）の前に、「tb_」を付加するものとする。B2〜B4行目はパラメータ定義部であり、入力データをバッファリングするための配列の大きさと、シミュレーション時間を設定するものである。デフォルトでは、バッファの配列の大きさは「1,000」で、シミュレーション時間はCLOCK×20とし、この値はユーザーによって変更可能である。
【００４０】
B6〜B15行目は入出力ポート宣言部であり、入出力ポート以外にも、バッファの宣言やファイル関数用カウンターを定義している。バッファの宣言はB11〜B12行目にあたり、入力データを記憶しておくために用いる。バッファの名前の付け方は、入力ポート名の前に「r_」を付加するものとする。また、ファイル関数用カウンタ宣言はB13〜B14行目にあたり、A23〜A24行目のファイルポインタ名を引用して、後ろに「_count」を付加する。B15行目は出力ポート用のファイル関数ポインタであり、A25行目と等価である。
【００４１】
B19〜B33行目はファイルオープンのためのタスク定義で、入力データは全てB11〜12行目で宣言されたバッファに格納する。B35〜36行目のクロック定義部は、動作合成時に与えられた動作周波数を元に生成する。ここでは50MHｚを使用している。B38〜44行目はテストベンチのイニシャライズ部であり、クロックとリセットの初期値設定やB19〜33行目で定義されたタスクを実行して、入力データのバッファリングを行っている。
【００４２】
さて、A30,A32,A38行目にあるファイル関数に関する処理について説明する。先ず、にA30行目の処理を行う。
task FP_VALID_IN;
begin
if(ST_02 == 1) begin
valid = r_valid[fp_valid_count];
fp_valid_count = fp_valid_count + 1;
end
end
endtask
これは、あらかじめバッファに取り込まれた入力データを、ファイル関数用カウンターを用いて先頭から順番に読み込むものである。上記の３行目は、VHDLの時と同様に、図４のマルチプレクサM1のセレクト信号ST_02をトリガーとして利用して入力データを読み込むようにすることにより、動作レベルで使用した入力データの再利用を可能にする記述である。
【００４３】
同様に、図９のA32行目に関しては、図４のマルチプレクサM2のセレクト信号TR_01をトリガーに使用すればよく、また、A38行目に関しては図４のマルチプレクサM3のセレクト信号ST_03をトリガーに使用すればよい。
【００４４】
以上の結果により生成されるテストベンチを図１０（図８相当）に示す。図１０のB13〜15行目、B20行目にトリガー信号の宣言を新たに追加しており、B38〜62行目の入出力ファイル用のタスク内でトリガー信号として使用している。また、B38〜62行目で定義された入出力ファイル用タスクは、B65〜68行目のalways文で毎クロックタスク呼び出しを行っている。これにより、動作レベルで検証したテストデータをRTLで再利用可能となり、かつ等価な検証が行える。
【実施例３】
【００４５】
動作合成可能な入力記述として図１１に示すソース記述をとりあげ、本発明の第３の実施例として説明する。
【００４６】
図１の段階B1で入力された動作合成可能な記述を段階B2で構文解析し、その際、ファ
イル関数に関する記述があれば、その記述を残しておく。図１１の入力記述におけるファ
イル関数に関する記述は、９〜１１行目，２１〜２３行目，２６行目，２９行目および４０行目にあたる。
【００４７】
図１２は、図１の段階B3で生成されたＣＤＦＧを示す。図１２におけるブロックB_01は図１１の２６〜２７行目、ブロックB_02は２９〜３０行目、ブロックB_03は３２〜３６行目、ブロックB_04は３８〜４３行目にあたる。従って、図１２に明記していないが、図１１の２６行目，２９行目，４０行目にあたるファイル関数は、それぞれB_01，B_02，B_04内に記述が残っている。
【００４８】
次に、図１の段階B4で図１２のＣＤＦＧを元にリソースシェアリング等を行い、アーキテクチャを決定したものが図１３に示すＲＴＬ回路図である。そして、このＲＴＬ回路図を利用して、図１の段階B5でテストベンチを生成する。
【００４９】
先ず、VHDLのテストベンチ生成について述べる。ライブラリの宣言、入出力ポートの宣言等は、図５の例と同じ方法で宣言する。そして、クロック記述の生成は、動作合成時に与えられる動作周波数から生成し、この例のテストベンチの後半を示す図14-2の４９〜５５行目にあたる。ここでは、動作周波数は100MHzである。また、リセット信号はデフォルト通りで、４８行目に記述されている。なお、図14-1はテストベンチの前半を示す。
【００５０】
図１１の２６行目，２９行目および４０行目のファイル関数に関する処理は図１３のＲＴＬ回路図を元に行われる。２６行目のファイル関数は、ブロックB_01内に記述が残っており、マルチプレクサM1のセレクト信号ST_01をトリガーに用いればよいことが分かる。。また、２９行目のファイル関数は、ブロックB_02内に記述が残っているので、マルチプレクサM2のセレクト信号ST_02をトリガーに用いればよいことがわかる。また、４０行目のファイル関数は、ブロックB_04内に記述が残っているので、マルチプレクサM3のセレクト信号TR_01をトリガーに用いればよいことがわかる。これらの情報を元にタスク文を作成したものが、図14-2の５７〜９６行目にあたる。また、図14-1の１５〜１７行目，２６〜２８行目および４１〜４３行目にトリガーとなる信号の宣言が追加される。
【００５１】
次に、同じ入力記述例（図１１）を用いて、VerilogHDLのテストベンチ生成について述べる。テストベンチの概要は図９と同じ方法で生成する。そして、クロック記述の生成は、動作合成時に与えられる動作周波数から生成し、図１５の６２〜６３行目にあたる。動作周波数は100MHzである。また、リセット信号はデフォルト通りで、６９行目と７２行目で定義されている。
【００５２】
図１１の２６行目，２９行目および４０行目のファイル関数に関する処理は図１３のＲＴＬ回路図を元に行われる。VHDLの場合と同様、２６行目のファイル関数は図１３のマルチプレクサM1のセレクト信号ST_01をトリガーに、２９行目のファイル関数は図１３のマルチプレクサM2のセレクト信号ST_02をトリガーに、４０行目のファイル関数は図１３のマルチプレクサM3のセレクト信号TR_01をトリガーにすればよい。これらの情報を元にタスク文を生成したものが図１５の３６〜６０行目にあたる。そして、これらのタスクを毎クロック呼び出すalways文が６４〜６６行目にあたる。また、１２〜１４行目および１９行目にトリガーとなる信号の宣言が追加される。
【００５３】
このように、テストベンチを自動生成することによって、動作レベルで検証したテス
トデータを再利用可能になり、かつ等価な検証が行える。
【図面の簡単な説明】
【００５４】
【図１】本発明の動作合成方法を示すフローチャート
【図２】本発明の実施例１で使用する入力記述例を示す図
【図３】図２に示した入力記述から生成されたＣＤＦＧを示す図
【図４】図３に示したＣＤＦＧから生成されたＲＴＬ回路図
【図５】図２の入力記述と生成されるべきVHDLテストベンチの概要を示す図
【図６】図２の入力記述による動作レベル上のタイミングチャート
【図７】図５のテストベンチにおけるB42行目のPROCESS文を詳細化した中間結果を示す図
【図８−１】図５のテストベンチにおけるB42行目のPROCESS文を詳細化した最終結果の前半を示す図
【図８−２】図５のテストベンチにおけるB42行目のPROCESS文を詳細化した最終結果の後半を示す図
【図９】図２の入力記述から生成されるべきVerilogHDLテストベンチ概要を示す図
【図１０】図９のVerilogHDLテストベンチ概要を詳細化した図
【図１１】本発明の実施例３で使用する入力記述例を示す図
【図１２】図１１に示した入力記述から生成されたＣＤＦＧを示す図
【図１３】図１１に示したＣＤＦＧから生成されたＲＴＬ回路図
【図１４−１】図１１の入力記述から生成されるべきVHDLテストベンチの前半を示す図
【図１４−２】図１１の入力記述から生成されるべきVHDLテストベンチの後半を示す図
【図１５】図１１の入力記述から生成されるべきVerilogHDLテストベンチを示す図
【図１６】従来例の説明に使用するソフトウェア言語で書かれたソース記述例を示す図
【図１７】図１６のソース記述例に対する入力記述例を示す図
【図１８】従来の動作合成方法を示すフローチャート
【図１９】図１７に示した入力記述から生成されたＣＤＦＧを示す図
【図２０】図１９に示したＣＤＦＧから生成されたＲＴＬ回路図
【符号の説明】
【００５５】
M1〜M4          マルチプレクサ
B_01〜B_04      ブロック
ST_01〜ST_03    ステート信号
TR_01           トリガー信号
【図１】
2005078402.tif 000003
【図２】
2005078402.tif 000004
【図３】
2005078402.tif 000005
【図４】
2005078402.tif 000006
【図５】
2005078402.tif 000007
【図６】
2005078402.tif 000008
【図７】
2005078402.tif 000009
【図８−１】
2005078402.tif 000010
【図８−２】
2005078402.tif 000011
【図９】
2005078402.tif 000012
【図１０】
2005078402.tif 000013
【図１１】
2005078402.tif 000014
【図１２】
2005078402.tif 000015
【図１３】
2005078402.tif 000016
【図１４−１】
2005078402.tif 000017
【図１４−２】
2005078402.tif 000018
【図１５】
2005078402.tif 000019
【図１６】
2005078402.tif 000020
【図１７】
2005078402.tif 000021
【図１８】
2005078402.tif 000022
【図１９】
2005078402.tif 000023
【図２０】
2005078402.tif 000024