JP2005078402A - 電子回路の動作合成方法 - Google Patents
電子回路の動作合成方法 Download PDFInfo
- Publication number
- JP2005078402A JP2005078402A JP2003308388A JP2003308388A JP2005078402A JP 2005078402 A JP2005078402 A JP 2005078402A JP 2003308388 A JP2003308388 A JP 2003308388A JP 2003308388 A JP2003308388 A JP 2003308388A JP 2005078402 A JP2005078402 A JP 2005078402A
- Authority
- JP
- Japan
- Prior art keywords
- description
- input
- file
- lines
- test bench
- 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.)
- Pending
Links
Images
Abstract
【課題】 電子回路の動作アルゴリズムをソフトウェア言語で記述したソース記述からハードウェア記述言語による記述を出力する際にテストベンチを生成する。
【解決手段】 ソース記述をハードウェア化に必要な情報を含んだ動作レベルの記述言語で書かれた入力記述を入力する。入力した入力記述の構文を解析する。解析の結果によりファイル関数を残したままコントロールデータフローグラフを生成する。生成したコントロールデータフローグラフを元にリソースバインディングとスケジューリングを行ってRTL回路図を生成する。生成したRTL回路図上において最初の入力端子からのデータないし変数の入力を切り替えるマルチプレクサのセレクト信号、または出力端子に出力されるデータを切り替えるマルチプレクサのセレクト信号を利用して、ファイル関数に係わるファイル入力またはファイル出力の条件を表現することによってテストベンチを生成する。
【選択図】 図1
【解決手段】 ソース記述をハードウェア化に必要な情報を含んだ動作レベルの記述言語で書かれた入力記述を入力する。入力した入力記述の構文を解析する。解析の結果によりファイル関数を残したままコントロールデータフローグラフを生成する。生成したコントロールデータフローグラフを元にリソースバインディングとスケジューリングを行ってRTL回路図を生成する。生成したRTL回路図上において最初の入力端子からのデータないし変数の入力を切り替えるマルチプレクサのセレクト信号、または出力端子に出力されるデータを切り替えるマルチプレクサのセレクト信号を利用して、ファイル関数に係わるファイル入力またはファイル出力の条件を表現することによってテストベンチを生成する。
【選択図】 図1
Description
本発明は、電子回路の動作アルゴリズムをソフトウェア言語によって記述したソース記述からハードウェア記述言語による記述を出力する電子回路の動作合成に関する。
信号処理回路,暗号回路,誤り訂正回路,画像処理回路等の電子回路のCADにおいて、これらの電子回路を動作アルゴリズム上、すなわち、動作レベルで設計する際、電子回路の動作アルゴリズムのソース記述が機能的に正しいことを確かめるために必ず検証を行う。この検証を機能検証と呼ぶ。機能検証には様々な方法が採られ得るが、最も一般的なのは、図16に例示するソース記述に含まれるファイル入出力による機能検証方法である。図16は、C言語による電子回路のソース記述の一つの具体例を示している。図16の11,12,17,24および26行目がファイル入出力による機能検証部分である。
次に、動作合成ツールを用いて動作合成を行う際、入力ポートや変数のビット幅などのハードウェア化に必要な情報を含んだ、動作レベルの記述言語で書かれた入力記述を用意しなければならない。図17は、元々は図16のようなソフトウェア言語で書かれていたソース記述を動作合成可能な入力記述に書き換えたものである。図17の5行目のinは入力ポートを、6行目のoutは出力ポートを表す関数であり、ter(α to β)は、MSBα、LSBβのterminal信号を宣言する関数とする。また、9,10行目のreg(αto β)は、MSBα、LSBβのレジスタを宣言する関数とする。
こうして、図17のような動作合成可能な入力記述が準備できたところで動作合成を行う。図18は、従来の動作合成方法の手順を示すフローチャートである。以下、図17の入力記述を例にして従来の動作合成方法を説明する。
初めに、動作合成可能な入力記述の入力を行う(図18の段階B1)。続いて、構文解析(段階B2)を経て、記述中にファイル関数があるかを調べ(段階B3)、ファイル関数があればスキップをする(段階B4)。これは、ハードウェアにはファイルポインタなどの概念が無いために、ファイル関数は動作合成対象とならないことによる措置である。図17の例では、2,3,11,12,17,24および26の各行がファイル関数に係わりスキップされる。
次に、コントロールデータフローグラフ(以下「CDFG」と記す)を生成する(段階B5)。CDFGとは動作アルゴリズムをデータと制御の流れで示した図をいう。図19は、図17の入力記述に対して生成されたCDFGを示す。図19では、3つのブロックB_01,B_02,B_03の遷移による制御の流れを左側に示し、余の部分がデータの流れを示している。ブロックB_01は入力部、ブロックB_02は処理部、ブロックB_03は出力部である。
図19のブロックB_01は、図17の15行目にあたり、関数funcA()をコールしている。また,ブロックB_02は、図17の16〜22行目にあたり、tmpの内容によって、input_dataに入力ポート「i_ch」からデータを取るか、0を代入するかを決定し、そして関数funcBをコールしている。ブロックB_03は、図17の23〜28行目にあたり、resultの結果によって、出力ポート「o_ch」にresultの値を出力するか、0を出力するかを決定している。そして、このときo_chに0を出力した場合は処理を終了し、そうでなかった場合は、ブロックB_01に戻っている。
続いて、図19に示したCDFGに基づいてリソースバインディングとスケジューリングが行われる(段階B6)。ここでは、動作合成制約である回路周波数や演算器制約に基づいて、演算器,レジスタ,マルチプレクサ等のマッピングやシェアリングを行う。この段階B6において得られたRTL回路図を図20に示す。図20におけるFSM(Finite State Machine)コントローラは、FSMコントローラの枠内に示すようなシーケンスでブロックB_01,B_02,B_03を遷移させる。
最後に、合成された回路構成を論理合成ツールに直接入力可能なレジスタ・トランスファ・レベル(RTL)のハードウェア記述言語による記述を出力して、動作合成を終了する(段階B7)。
なお、特許公報上、この種の技術として、非アルゴリズム的な動作を含むプロセッサの動作を記述するアーキテクチャ動作記述を入力とし、回路動作の特徴に応じて回路を分割したデータパス回路記述とコントロール回路記述とインタフェース回路記述を生成することにより、RTL記述言語による記述を生成する「アーキテクチャ動作合成装置〜」が知られている(例えば、特許文献1参照)。
上述のように、従来の電子回路の動作合成は、ソフトウェア記述言語によるソース記述をベースにした動作合成可能な入力記述からハードウェア言語記述を出力するものである。動作合成の際に、ほとんどのソフトウェア記述言語が合成可能であるが、唯一、ポインタ記述だけは動作合成が行えない。それは、ファイルポインタがソフトウェア特有のものであり、ハードウェアには存在しないものだからである。そのため、ファイルポインタを使用するファイル関数も動作合成の対象から外れてしまう(図18の段階B4)。
この結果、動作レベルでファイル関数を用いて機能検証した場合のテストデータ等検証環境が、RTLに持ち越すことができず、再びRTLで検証環境を構築する必要が生まれる。しかし、RTLで検証環境を再構築するとなると、テストベンチとテストデータを新たに用意する必要が生まれ、そのための工数が発生するうえに、人手が介入することによって機能検証結果との等価性も失われ、信頼度が低下してしまうという問題点がある。
なお、上記特許公報記載の技術には機能検証についての記述がない。
本発明の目的は、上記問題を解決するために、動作レベルで使用した検証環境をRTLで再利用でき、それによって電子回路の開発工数の短縮を図ることができる電子回路の動作合成方法を提供することにある。
本発明は、動作レベルで使用した検証環境をRTLで再利用するために、動作合成ツールに、動作レベルの検証環境をRTLで使用可能な検証環境に自動的に変換する機能を追加する。具体的には、動作合成ツールにファイルポインタ記述を合成対象とする機能を追加する。
すなわち、本発明の電子回路の動作合成方法は、電子回路の動作アルゴリズムをソフトウェア言語で記述したソース記述からハードウェア記述言語による記述を出力する電子回路の動作合成方法において、ソース記述をハードウェア化に必要な情報を含んだ動作レベルの記述言語で書かれた入力記述を入力する段階と、入力した入力記述の構文を解析する段階と、解析の結果によりファイル関数を残したままコントロールデータフローグラフを生成する段階と、生成したコントロールデータフローグラフを元にリソースバインディングとスケジューリングを行ってRTL回路図を生成する段階と、生成したRTL回路図上において最初の入力端子からのデータないし変数の入力を切り替えるマルチプレクサのセレクト信号、または出力端子に出力されるデータを切り替えるマルチプレクサのセレクト信号を利用して、ファイル関数に係わるファイル入力またはファイル出力の条件を表現することによってテストベンチを生成する段階とを有することを特徴とする。
より具体的には、マルチプレクサのセレクト信号は、入力記述の内容によって、コントロールデータフローグラフにおけるステート信号、または該ステート信号と入力記述上の条件に対する結果とで定まる信号を振り向ける。
本発明により、動作レベルで使用した検証データ、検証環境ともに、RTLで再利用が可能となり、設計工数の短縮と、検証結果の信頼性の向上とが図れる。
本発明は、信号処理回路,暗号回路,誤り訂正回路,画像処理回路等の電子回路に対する動作合成時に、RTLとともにテストベンチを自動生成するものである。対象となる電子回路は、CDFGにおいて制御の流れとデータの流れが分離されているものに限られ、パイプライン制御によるものは含まれない。
図1は、本発明の電子回路の動作合成方法を示すフローチャートを示す。図1では、図18に対比して、ファイル関数の存否確認段階(段階B3)とファイル関数のスキップ段階(段階B4)がなくなり、テストベンチの生成段階(段階A5)が設けられている。この結果により、回路構成とテストベンチとを出力している(段階A6)。
図1において、動作合成可能な入力記述を入力し(図1の段階A1)、構文解析(段階A2)を行う。このとき、図18の従来の動作合成フローではファイル関数があればスキップして合成を行っていたが、この新規な動作合成フローではファイル関数に関する記述をそのまま残しておく。この状態でCDFGを生成する(段階A3)。CDFGは、入力記述による電子回路の動作アルゴリズムを制御とデータの流れで図示したものである。制御は、前準備,データ入力,データ処理,データ出力等のステートブロックに分割され、各ブロックについて、ステートの遷移とデータの流れが示される。
次いで、CDFGにソースバインディングとスケジューリングが行われ、RTL回路図を生成する(段階A4)。そして、RTL回路図についてテストベンチを生成する(段階A5)。このとき、ファイルポインタ記述を生成対象とするための措置を講じる。この措置においては、入力記述上のファイル入力またはファイル出力の条件は、RTL回路図上において最初の入力端子からのデータないし変数の入力を切り替えるマルチプレクサ、または最終の出力端子からのデータを切り替えるマルチプレクサのセレクト信号を利用して表現される。マルチプレクサのセレクト信号は、入力記述の内容によって、ステート信号、またはステート信号と入力記述上の条件に対する結果とで定まる信号が振り向けられる。
最後に、合成された回路構成と生成されたテストベンチとをハードウェア記述言語による記述を出力して動作合成を終了する(段階A6)。
図2は、本発明の実施例1で使用する入力記述例を示す。この入力記述は、後に図4のRTL回路図で示される電子回路の動作アルゴリズムのC言語による記述に、入力ポートや変数のビット幅などのハードウェア化に必要な情報を含ませたものである。図2は、従来技術の説明に用いた図17の入力記述に対して、発明の説明の便宜上、より多くの記述を含ませている。図2の場合、9〜11行目,23〜25行目,30行目,32行目および38行目がファイル関数に関する記述にあたる。
本発明の電子回路の動作合成方法は動作合成ツールとしてプログラム化され得る。本発明による動作合成ツールは、図2の入力記述を入力すると(図1の段階A1)、構文解析し(段階A2)、上述のファイル関数に関する記述を残したままCDFGを生成する(段階A3)。図3は生成されたCDFGを示している。図3におけるブロックB_01は図2の26行目にあたり、ブロックB_02は27〜35行目、ブロックB_03は36〜38行目にあたる。従って図3には明記されていないが、図2の30行目と32行目のファイル関数はブロックB_02内に、38行目のファイル関数はブロックB_03内に記述が残っていることになる。
次に、図3のCDFGを元にリソースバインディングおよびスケジューリングを行い、アーキテクチャを決定して、図4に示すRTL回路図を生成する(段階A4)。図4において、FSMコントローラは、ブロックB_01,ブロックB_02,ブロックB_03を図示しているシーケンスで遷移させる。indataは本回路の入力データ、validは入力データが有効であることを証する信号、outdataは本回路の出力データ、reqは出力データが意味があることを証する信号である。
そして、テストベンチを生成し(段階A5)、最後に、合成された回路構成と生成されたテストベンチとをRTLレベルのハードウェア記述言語による記述として出力する(段階A6)。
以下、テストベンチの生成について説明する。テストベンチの生成にあたっては、動作合成の際に、出力結果がVHDLかVerilogHDLかを選択できるものとして、先ず、VHDLのテストベンチ生成について以下に述べる。
図5は、図2に示した入力記述を左側にAを付して、生成されるべきテストベンチの概要を右側にBを付して示している。図5のB1〜B4行目のライブラリ宣言部は、A2行目に対応し、動作合成を行うソース記述にファイルポインタが含まれている時の出力である。もしも、ファイルポインタが含まれてない場合は、図5のB1〜B4行に代わって下記の2行が出力される。
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行目で宣言したシグナルを接続する。
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行目(図5で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;
とする。
process
begin
w_CLOCK <= ‘1’;
wait for 10 ns;
w_CLOCK <= ‘0’;
wait for 10 ns;
end process;
また、リセット信号は、デフォルトでは
reset <= ‘1’, ‘0’ after 10 ns;
とする。
図7は、図5の右側にBを付して示されているテストベンチにおけるB42行目のPROCESS文を詳細化した中間結果を示す。図7の44〜50行目が上述のクロック定義部、52行目がリセット信号定義部を示している。
さて、図5のA30,A32,A38行目に記載されているファイル関数に関する措置について説明する。図6は図2の入力記述による動作レベル上のタイミングチャートを示す。図6から明らかなように、本回路はB_02ステート時しかvalidデータをファイルから読み込まない。そこで、A30行目のファイル関数に関する措置に対するプロセス文は、7行目にそのことを条件として記述して下記のようになる。
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;
上記の7行目は、図4のvalidの最初にあるマルチプレクサM1のセレクト信号としてステート信号ST_02を利用したものである。このマルチプレクサM1は、ステートB_02の時だけvalidポートから入力信号を読み込み、それ以外のステート時はvalidポートを参照しないという働きをする。このマルチプレクサM1の動作を利用すれば、動作レベルの時と等価な検証をテストベンチで行うことが可能になる。そこで、マルチプレクサM1のセレクト信号ST_02を出力ポートを増やして、その出力ポートに値を出力する。そして、その信号をトリガーにすれば、機能検証時と同じ入力データでテストベンチにおいてRTL検証を行うことが可能になる。
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;
上記の7行目は、図4のvalidの最初にあるマルチプレクサM1のセレクト信号としてステート信号ST_02を利用したものである。このマルチプレクサM1は、ステートB_02の時だけvalidポートから入力信号を読み込み、それ以外のステート時はvalidポートを参照しないという働きをする。このマルチプレクサM1の動作を利用すれば、動作レベルの時と等価な検証をテストベンチで行うことが可能になる。そこで、マルチプレクサM1のセレクト信号ST_02を出力ポートを増やして、その出力ポートに値を出力する。そして、その信号をトリガーにすれば、機能検証時と同じ入力データでテストベンチにおいてRTL検証を行うことが可能になる。
図7の54〜67行目が上述のvalid.datファイルから入力データを読込むプロセス文である。また、トリガーとなるステート信号ST_02信号をテストベンチで使用するために、18,28,42行目に新たにステート信号ST_02信号を宣言する記述が追加され、それが60行目でトリガーとして使用されている。この結果、図7は、クロック定義部,リセット信号定義部およびA30行目のファイル関数に関する措置のプロセスを明らかにしている。
上述のA30行目の措置と同様に、図5のA32行目については図4のマルチプレクサM2のセレクト信号TR_01をトリガーにすればよく、図5のA38行目は図4のマルチプレクサM3のセレクト信号ST_03をトリガーにすればよいことがわかる。その結果、これらのプロセスをも明らかにしたテストベンチは、図7にA32行目とA38行目のプロセスを追加して図8-1および図8-2のようになる。図8-1はテストベンチの前半、図8-2はテストベンチの後半を示す。
図8-2において、73〜86行目が図5A32行目のindata.datファイルから入力データを読み込むプロセス文であり、88〜99行目が図5A38行目のoutdata.datファイルへ出力データを書き出すプロセス文である。また、トリガーとなるトリガー信号TR_01,ステート信号ST_03をテストベンチで使用するために、図8-1の18,19行目と30,31行目と46,47行目に新たにトリガー信号TR_01,ステート信号ST_03を宣言する記述が追加され、それが図8-2の79行目,93行目でトリガー信号として使用されている。
以上の結果、図8-1および図8-2に示すように完成されVHDLで出力されるベンチテストは、動作レベルにおけるファイル関数をも引き継いだものであるため、動作レベルで検証したテストデータを再利用することが可能になり、かつ等価な検証が行えるようになる。
次に、図2の入力記述に対するテストベンチをVerilogHDLで出力する方法を第2の実施例として説明する。図1のフローチャートの段階A1〜段階A4まではVHDLの時と同じである。段階A5のテストベンチ生成の内容が異なる。
先ず、テストベンチの概要は図9(図5相当)のようにして生成できる。図9の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行目のクロック定義部は、動作合成時に与えられた動作周波数を元に生成する。ここでは50MHzを使用している。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
これは、あらかじめバッファに取り込まれた入力データを、ファイル関数用カウンターを用いて先頭から順番に読み込むものである。上記の3行目は、VHDLの時と同様に、図4のマルチプレクサM1のセレクト信号ST_02をトリガーとして利用して入力データを読み込むようにすることにより、動作レベルで使用した入力データの再利用を可能にする記述である。
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
これは、あらかじめバッファに取り込まれた入力データを、ファイル関数用カウンターを用いて先頭から順番に読み込むものである。上記の3行目は、VHDLの時と同様に、図4のマルチプレクサM1のセレクト信号ST_02をトリガーとして利用して入力データを読み込むようにすることにより、動作レベルで使用した入力データの再利用を可能にする記述である。
同様に、図9のA32行目に関しては、図4のマルチプレクサM2のセレクト信号TR_01をトリガーに使用すればよく、また、A38行目に関しては図4のマルチプレクサM3のセレクト信号ST_03をトリガーに使用すればよい。
以上の結果により生成されるテストベンチを図10(図8相当)に示す。図10のB13〜15行目、B20行目にトリガー信号の宣言を新たに追加しており、B38〜62行目の入出力ファイル用のタスク内でトリガー信号として使用している。また、B38〜62行目で定義された入出力ファイル用タスクは、B65〜68行目のalways文で毎クロックタスク呼び出しを行っている。これにより、動作レベルで検証したテストデータをRTLで再利用可能となり、かつ等価な検証が行える。
動作合成可能な入力記述として図11に示すソース記述をとりあげ、本発明の第3の実施例として説明する。
図1の段階B1で入力された動作合成可能な記述を段階B2で構文解析し、その際、ファ
イル関数に関する記述があれば、その記述を残しておく。図11の入力記述におけるファ
イル関数に関する記述は、9〜11行目,21〜23行目,26行目,29行目および40行目にあたる。
イル関数に関する記述があれば、その記述を残しておく。図11の入力記述におけるファ
イル関数に関する記述は、9〜11行目,21〜23行目,26行目,29行目および40行目にあたる。
図12は、図1の段階B3で生成されたCDFGを示す。図12におけるブロックB_01は図11の26〜27行目、ブロックB_02は29〜30行目、ブロックB_03は32〜36行目、ブロックB_04は38〜43行目にあたる。従って、図12に明記していないが、図11の26行目,29行目,40行目にあたるファイル関数は、それぞれB_01,B_02,B_04内に記述が残っている。
次に、図1の段階B4で図12のCDFGを元にリソースシェアリング等を行い、アーキテクチャを決定したものが図13に示すRTL回路図である。そして、このRTL回路図を利用して、図1の段階B5でテストベンチを生成する。
先ず、VHDLのテストベンチ生成について述べる。ライブラリの宣言、入出力ポートの宣言等は、図5の例と同じ方法で宣言する。そして、クロック記述の生成は、動作合成時に与えられる動作周波数から生成し、この例のテストベンチの後半を示す図14-2の49〜55行目にあたる。ここでは、動作周波数は100MHzである。また、リセット信号はデフォルト通りで、48行目に記述されている。なお、図14-1はテストベンチの前半を示す。
図11の26行目,29行目および40行目のファイル関数に関する処理は図13のRTL回路図を元に行われる。26行目のファイル関数は、ブロックB_01内に記述が残っており、マルチプレクサM1のセレクト信号ST_01をトリガーに用いればよいことが分かる。。また、29行目のファイル関数は、ブロックB_02内に記述が残っているので、マルチプレクサM2のセレクト信号ST_02をトリガーに用いればよいことがわかる。また、40行目のファイル関数は、ブロックB_04内に記述が残っているので、マルチプレクサM3のセレクト信号TR_01をトリガーに用いればよいことがわかる。これらの情報を元にタスク文を作成したものが、図14-2の57〜96行目にあたる。また、図14-1の15〜17行目,26〜28行目および41〜43行目にトリガーとなる信号の宣言が追加される。
次に、同じ入力記述例(図11)を用いて、VerilogHDLのテストベンチ生成について述べる。テストベンチの概要は図9と同じ方法で生成する。そして、クロック記述の生成は、動作合成時に与えられる動作周波数から生成し、図15の62〜63行目にあたる。動作周波数は100MHzである。また、リセット信号はデフォルト通りで、69行目と72行目で定義されている。
図11の26行目,29行目および40行目のファイル関数に関する処理は図13のRTL回路図を元に行われる。VHDLの場合と同様、26行目のファイル関数は図13のマルチプレクサM1のセレクト信号ST_01をトリガーに、29行目のファイル関数は図13のマルチプレクサM2のセレクト信号ST_02をトリガーに、40行目のファイル関数は図13のマルチプレクサM3のセレクト信号TR_01をトリガーにすればよい。これらの情報を元にタスク文を生成したものが図15の36〜60行目にあたる。そして、これらのタスクを毎クロック呼び出すalways文が64〜66行目にあたる。また、12〜14行目および19行目にトリガーとなる信号の宣言が追加される。
このように、テストベンチを自動生成することによって、動作レベルで検証したテス
トデータを再利用可能になり、かつ等価な検証が行える。
トデータを再利用可能になり、かつ等価な検証が行える。
M1〜M4 マルチプレクサ
B_01〜B_04 ブロック
ST_01〜ST_03 ステート信号
TR_01 トリガー信号
B_01〜B_04 ブロック
ST_01〜ST_03 ステート信号
TR_01 トリガー信号
Claims (2)
- 電子回路の動作アルゴリズムをソフトウェア言語で記述したソース記述からハードウェア記述言語による記述を出力する電子回路の動作合成方法において、
前記ソース記述をハードウェア化に必要な情報を含んだ動作レベルの記述言語で書かれた入力記述を入力する工程と、
入力した前記入力記述の構文を解析する工程と、
前記解析の結果によりファイル関数を残したままコントロールデータフローグラフを生成する工程と、
生成した前記コントロールデータフローグラフを元にリソースバインディングとスケジューリングを行ってRTL回路図を生成する工程と、
前記生成したRTL回路図上において最初の入力端子からのデータないし変数の入力を切り替えるマルチプレクサのセレクト信号、または出力端子に出力されるデータを切り替えるマルチプレクサのセレクト信号を利用して、前記ファイル関数に係わるファイル入力またはファイル出力の条件を表現することによってテストベンチを生成する工程とを有することを特徴とする電子回路の動作合成方法。 - 前記マルチプレクサのセレクト信号は、前記入力記述の内容によって、前記コントロールデータフローグラフにおけるステート信号、または該ステート信号と入力記述上の条件に対する結果とで定まる信号を振り向けることを特徴とする請求項1に記載の電子回路の動作合成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003308388A JP2005078402A (ja) | 2003-09-01 | 2003-09-01 | 電子回路の動作合成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003308388A JP2005078402A (ja) | 2003-09-01 | 2003-09-01 | 電子回路の動作合成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005078402A true JP2005078402A (ja) | 2005-03-24 |
Family
ID=34410874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003308388A Pending JP2005078402A (ja) | 2003-09-01 | 2003-09-01 | 電子回路の動作合成方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005078402A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008186252A (ja) * | 2007-01-30 | 2008-08-14 | Nec Corp | テストベンチ生成機能を有する動作合成装置と方法及びプログラム |
US8065641B2 (en) | 2008-09-02 | 2011-11-22 | International Business Machines Corporation | Automatically creating manufacturing test rules pertaining to an electronic component |
JP2012113568A (ja) * | 2010-11-25 | 2012-06-14 | Canon Inc | 情報処理装置、情報処理方法およびプログラム |
JP2013532857A (ja) * | 2010-07-13 | 2013-08-19 | アルゴトゥチップ コーポレーション | アルゴリズムおよび仕様に基づく自動最適集積回路ジェネレータ |
CN112199913A (zh) * | 2020-10-15 | 2021-01-08 | 湖南泛联新安信息科技有限公司 | 一种基于Coq的超大规模集成电路RTL漏洞形式化分析方法 |
-
2003
- 2003-09-01 JP JP2003308388A patent/JP2005078402A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008186252A (ja) * | 2007-01-30 | 2008-08-14 | Nec Corp | テストベンチ生成機能を有する動作合成装置と方法及びプログラム |
US8091051B2 (en) | 2007-01-30 | 2012-01-03 | Nec Corporation | Behavioral synthesis apparatus, method, and program having test bench generation function |
US8386973B2 (en) | 2007-01-30 | 2013-02-26 | Nec Corporation | Behavioral synthesis apparatus, method, and program having test bench generation function |
US8065641B2 (en) | 2008-09-02 | 2011-11-22 | International Business Machines Corporation | Automatically creating manufacturing test rules pertaining to an electronic component |
JP2013532857A (ja) * | 2010-07-13 | 2013-08-19 | アルゴトゥチップ コーポレーション | アルゴリズムおよび仕様に基づく自動最適集積回路ジェネレータ |
JP2012113568A (ja) * | 2010-11-25 | 2012-06-14 | Canon Inc | 情報処理装置、情報処理方法およびプログラム |
CN112199913A (zh) * | 2020-10-15 | 2021-01-08 | 湖南泛联新安信息科技有限公司 | 一种基于Coq的超大规模集成电路RTL漏洞形式化分析方法 |
CN112199913B (zh) * | 2020-10-15 | 2023-12-12 | 湖南泛联新安信息科技有限公司 | 一种基于Coq的超大规模集成电路RTL漏洞形式化分析方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Hara et al. | Chstone: A benchmark program suite for practical c-based high-level synthesis | |
US5764951A (en) | Methods for automatically pipelining loops | |
US7353491B2 (en) | Optimization of memory accesses in a circuit design | |
US9298865B1 (en) | Debugging an optimized design implemented in a device with a pre-optimized design simulation | |
US20070255928A1 (en) | Processor | |
JP4492803B2 (ja) | 動作合成装置及びプログラム | |
JP2006048525A (ja) | シミュレーション方法 | |
JP2003196333A (ja) | システムlsiの設計方法及びこれを記憶した記録媒体 | |
US7496869B1 (en) | Method and apparatus for implementing a program language description of a circuit design for an integrated circuit | |
US7318014B1 (en) | Bit accurate hardware simulation in system level simulators | |
JP2009048367A (ja) | 回路設計方法、ならびにその方法により製造される集積回路 | |
Givargis et al. | Parameterized system design | |
US10699053B1 (en) | Timing optimization of memory blocks in a programmable IC | |
US7257786B1 (en) | Method and apparatus for solving constraints | |
JP2005078402A (ja) | 電子回路の動作合成方法 | |
US20190034562A1 (en) | High-level synthesis device, high-level synthesis method, and computer readable medium | |
US7493584B1 (en) | Methods and apparatus for selective comment assertion | |
Augé et al. | User guided high level synthesis | |
Middelhoek et al. | From VHDL to efficient and first-time-right designs: a formal approach | |
JP4891807B2 (ja) | 高位合成装置および高位合成方法 | |
Mooney et al. | Synthesis from mixed specifications | |
Gorjiara et al. | Generic netlist representation for system and PE level design exploration | |
JP2006268606A (ja) | シミュレーション装置 | |
JP2002222228A (ja) | 高位合成システム及び高位合成方法 | |
WO2011007640A1 (ja) | 動作合成装置、動作合成方法、ならびに、記録媒体 |