JP2010205084A - 動作合成システム、動作合成方法、動作合成プログラム - Google Patents
動作合成システム、動作合成方法、動作合成プログラム Download PDFInfo
- Publication number
- JP2010205084A JP2010205084A JP2009051291A JP2009051291A JP2010205084A JP 2010205084 A JP2010205084 A JP 2010205084A JP 2009051291 A JP2009051291 A JP 2009051291A JP 2009051291 A JP2009051291 A JP 2009051291A JP 2010205084 A JP2010205084 A JP 2010205084A
- Authority
- JP
- Japan
- Prior art keywords
- input data
- gating circuit
- input
- behavioral
- circuit
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Logic Circuits (AREA)
Abstract
【課題】設計される回路の消費電力を削減することができる動作合成技術を提供すること。
【解決手段】動作合成システムは、動作合成部とゲーティング回路挿入部とを備える。動作合成部は、動作記述の動作合成を行い、動作記述に応じたデータパスグラフを生成する。ここで、データパスグラフは、入力データが入力される入力端子と、入力データを用いて演算を行う演算器とを含む。ゲーティング回路挿入部は、入力端子と演算器との間にゲーティング回路を挿入する。ゲーティング回路は、演算器が入力データを必要としないときに入力端子から演算器への入力データの伝達を遮断し、演算器が入力データを必要とするときだけ入力端子から演算器へ入力データを伝達する。
【選択図】図5
【解決手段】動作合成システムは、動作合成部とゲーティング回路挿入部とを備える。動作合成部は、動作記述の動作合成を行い、動作記述に応じたデータパスグラフを生成する。ここで、データパスグラフは、入力データが入力される入力端子と、入力データを用いて演算を行う演算器とを含む。ゲーティング回路挿入部は、入力端子と演算器との間にゲーティング回路を挿入する。ゲーティング回路は、演算器が入力データを必要としないときに入力端子から演算器への入力データの伝達を遮断し、演算器が入力データを必要とするときだけ入力端子から演算器へ入力データを伝達する。
【選択図】図5
Description
本発明は、動作記述からRTL記述を生成する動作合成技術に関する。
動作記述(behavioral description)からRTL(Register Transfer Level)記述を生成する「動作合成(behavioral
synthesis)」が知られている。動作記述では、設計回路で実現したいアルゴリズムがC言語等で記述される。動作合成により得られるRTL記述は、次に論理合成(logic synthesis)への入力となる。
synthesis)」が知られている。動作記述では、設計回路で実現したいアルゴリズムがC言語等で記述される。動作合成により得られるRTL記述は、次に論理合成(logic synthesis)への入力となる。
特許文献1は、1つの演算器が複数の演算処理によって共有化される場合、すなわち、当該演算器の出力が複数の後続演算器に入力されている場合の動作合成処理を記載している。この場合に固有な問題として、非アクティブな後続演算器において無駄な電力消費が発生することが挙げられる。よって、上記1つの演算器と後続演算器との間に入力固定器が挿入される。入力固定器は、後続演算器が非アクティブ状態のときに、後続演算器への入力を固定状態とする。
回路の入力端子に入力される入力データの遷移が、必要の無いときに回路内の演算器に伝播すると、電力が無駄に消費されてしまう。動作合成の段階で、そのような無駄な消費電力を削減できるような工夫を施しておくことが望まれる。
本発明の1つの観点において、動作合成システムが提供される。動作合成システムは、動作合成部とゲーティング回路挿入部とを備える。動作合成部は、動作記述の動作合成を行い、動作記述に応じたデータパスグラフを生成する。ここで、データパスグラフは、入力データが入力される入力端子と、入力データを用いて演算を行う演算器とを含む。ゲーティング回路挿入部は、入力端子と演算器との間にゲーティング回路を挿入する。ゲーティング回路は、演算器が入力データを必要としないときに入力端子から演算器への入力データの伝達を遮断し、演算器が入力データを必要とするときだけ入力端子から演算器へ入力データを伝達する。
本発明の他の観点において、動作合成方法が提供される。その動作合成方法は、(A)動作記述の動作合成を行い、動作記述に応じたデータパスグラフを生成するステップと、ここで、データパスグラフは、入力データが入力される入力端子と、入力データを用いて演算を行う演算器とを含み、(B)入力端子と演算器との間にゲーティング回路を挿入するステップと、を含む。ゲーティング回路は、演算器が入力データを必要としないときに入力端子から演算器への入力データの伝達を遮断し、演算器が入力データを必要とするときだけ入力端子から演算器へ入力データを伝達する。
本発明の更に他の観点において、コンピュータに動作合成処理を実行させる動作合成プログラムが提供される。動作合成処理は、(A)動作記述の動作合成を行い、動作記述に応じたデータパスグラフを生成するステップと、ここで、データパスグラフは、入力データが入力される入力端子と、入力データを用いて演算を行う演算器とを含み、(B)入力端子と演算器との間にゲーティング回路を挿入するステップと、を含む。ゲーティング回路は、演算器が入力データを必要としないときに入力端子から演算器への入力データの伝達を遮断し、演算器が入力データを必要とするときだけ入力端子から演算器へ入力データを伝達する。
本発明に係る動作合成技術によれば、設計される回路の消費電力を削減することが可能となる。
1.動作合成
図1は、動作記述の一例を示している。その動作記述において、“i1”は入力変数であり、“o1”は出力変数であり、“f1”、“f2”、及び“f3”はそれぞれ演算を行う関数である。
図1は、動作記述の一例を示している。その動作記述において、“i1”は入力変数であり、“o1”は出力変数であり、“f1”、“f2”、及び“f3”はそれぞれ演算を行う関数である。
動作合成において、動作記述はまず、コントロールデータフローグラフ(CDFG: Control Data
Flow Graph)に変換される。CDFGは、動作記述におけるデータの流れを表す。例えば、図1で示された動作記述は、図2に示されるCDFGに変換される。条件Aは「i2>r1」が真の場合であり、条件Bは「i2>r1」が偽の場合である。更に、CDFGに基づいてスケジューリングが実施され、動作を実行するステップ数(サイクル数)が決定される。図2の例では、動作は3ステップで実現され、その3ステップのそれぞれに[状態1]〜[状態3]が対応付けられている。
Flow Graph)に変換される。CDFGは、動作記述におけるデータの流れを表す。例えば、図1で示された動作記述は、図2に示されるCDFGに変換される。条件Aは「i2>r1」が真の場合であり、条件Bは「i2>r1」が偽の場合である。更に、CDFGに基づいてスケジューリングが実施され、動作を実行するステップ数(サイクル数)が決定される。図2の例では、動作は3ステップで実現され、その3ステップのそれぞれに[状態1]〜[状態3]が対応付けられている。
この時点で、入力変数i1が各関数(f1〜f3)によって参照される状態/条件が分かる。図3に示されるように、関数f1は、[状態1]の場合に、入力変数i1を参照する。関数f2は、[状態2]且つ[条件A]の場合に、入力変数i1を参照する。関数f3は、[状態2]且つ[条件B]の場合に、入力変数i1を参照する。逆に言えば、図3で示された状態/条件以外の場合には、各関数は入力変数i1を必要としない。
続いて、アロケーション(データパス割り当て)が実行され、変数や関数(演算)にレジスタや演算器が割り当てられる。更に、シーケンスや制御信号が決定され、結果としてデータパスグラフ(data path graph)が生成される。
図4は、図2で示されたCDFGに対応するデータパスグラフを示している。データパスグラフは、データの演算処理を行うデータパス200と、そのデータパス200を制御するコントローラ100とを含んでいる。コントローラ100は、有限状態機械(FSM: Finite State Machine)とも呼ばれる。コントローラ100は、[状態1]〜[状態3]のそれぞれを指定する状態信号ST01〜ST03を順番に且つ繰り返し生成する。状態信号ST01〜ST03は順番にデータパス200に入力され、データパス200の演算処理を制御する。
データパス200は、入力端子IN、サブモジュール210−1〜210−3、セレクタ220−1〜220−3、判定回路230、制御信号生成回路240を含んでいる。
入力端子INには、入力変数i1の値が入力される。入力変数i1の値は、以下「入力データi1」と参照される。
各サブモジュール(下位モジュール)210は、演算器、あるいは演算器の集合であり、所定の演算を行う。サブモジュール210−1〜210−3は、それぞれ、上述の関数f1〜f3に対応している。すなわち、サブモジュール210−1〜210−3は、入力端子INに入力される入力データi1を用いて、それぞれ関数f1〜f3の演算を行う。
セレクタ220−1〜220−3は、それぞれ、サブモジュール210−1〜210−3の出力に接続されている。セレクタ220−1〜220−3のそれぞれの動作は、セレクト信号sel1〜sel3によって制御される。
判定回路230は、条件分岐「i2>r1」の判定を行い、判定結果を示す条件信号CNDを生成する。「i2>r1」が真の場合、すなわち、上記条件「A」の場合、条件信号CNDは“1”である。一方、「i2>r1」が偽の場合、すなわち、上記条件「B」の場合、条件信号CNDは“0”である。
制御信号生成回路240は、コントローラ100から出力される状態信号ST01〜ST03及び判定回路230から出力される条件信号CNDを受け取る。そして、制御信号生成回路240は、それら状態信号ST01〜ST03及び条件信号CNDに基づいて、各種制御信号(セレクト信号sel1〜sel3等)を生成する。
図4で示されるデータパス200の場合、入力データi1が遷移すると、その入力データi1の遷移は常に全てのサブモジュール210−1〜210−3に伝播する。しかしながら、上述の通り、図3で示された状態/条件以外の場合には、各サブモジュール210は入力データi1を必要としない。入力データi1の遷移が、必要の無いときにサブモジュール210に伝播すると、電力が無駄に消費されてしまう。
本実施の形態によれば、次に説明されるように、動作合成の段階でデータパス200にゲーティング回路が挿入される。それにより、入力データi1の遷移の不要な伝播が抑制され、無駄な消費電力が削減される。
2.ゲーティング回路の挿入
本実施の形態によれば、データパス200中の入力端子INとサブモジュール210との間に、ゲーティング回路250が挿入される。ゲーティング回路250は、図3で示された「状態/条件」が満たされるときだけ、入力端子INに入力される入力データi1をサブモジュール210に伝達する。図5は、ゲーティング回路250が挿入されたデータパスグラフを示している。
本実施の形態によれば、データパス200中の入力端子INとサブモジュール210との間に、ゲーティング回路250が挿入される。ゲーティング回路250は、図3で示された「状態/条件」が満たされるときだけ、入力端子INに入力される入力データi1をサブモジュール210に伝達する。図5は、ゲーティング回路250が挿入されたデータパスグラフを示している。
ゲーティング回路250−1は、入力端子INとサブモジュール210−1との間に挿入されている。つまり、ゲーティング回路250−1の入力は入力端子INに接続され、その出力はサブモジュール210−1に接続されている。サブモジュール210−1が入力データi1を必要としないとき、ゲーティング回路250−1は、入力端子INからサブモジュール210−1への入力データi1の伝達を遮断する。サブモジュール210−1が入力データi1を必要とするときだけ、ゲーティング回路250−1は、入力端子INからサブモジュール210−1へ入力データi1を伝達する。より詳細には、ゲーティング回路250−1には、図6中の式で示されるイネーブル信号en1も入力される。イネーブル信号en1は、状態信号ST01に基づいて、制御信号生成回路240によって生成される。[状態1:ST01]のとき、すなわち、サブモジュール210−1(関数f1)が入力データi1を必要とするときだけ、イネーブル信号en1は活性化され(en1=“1”)、それ以外の場合、イネーブル信号en1は非活性化される(en1=“0”)。イネーブル信号en1が活性化されると(en1=“1”)、ゲーティング回路250−1は、入力端子INからサブモジュール210−1へ入力データi1を伝達する。一方、イネーブル信号en1が非活性化されると(en1=“0”)、ゲーティング回路250−1は、入力端子INからサブモジュール210−1への入力データi1の伝達を遮断する。
ゲーティング回路250−2は、入力端子INとサブモジュール210−2との間に挿入されている。つまり、ゲーティング回路250−2の入力は入力端子INに接続され、その出力はサブモジュール210−2に接続されている。サブモジュール210−2が入力データi1を必要としないとき、ゲーティング回路250−2は、入力端子INからサブモジュール210−2への入力データi1の伝達を遮断する。サブモジュール210−2が入力データi1を必要とするときだけ、ゲーティング回路250−2は、入力端子INからサブモジュール210−2へ入力データi1を伝達する。より詳細には、ゲーティング回路250−2には、図6中の式で示されるイネーブル信号en2も入力される。イネーブル信号en2は、状態信号ST02及び条件信号CNDに基づいて、制御信号生成回路240によって生成される。[状態2:ST02]且つ[条件A:CND=1]のとき、すなわち、サブモジュール210−2(関数f2)が入力データi1を必要とするときだけ、イネーブル信号en2は活性化され(en2=“1”)、それ以外の場合、イネーブル信号en2は非活性化される(en2=“0”)。イネーブル信号en2が活性化されると(en2=“1”)、ゲーティング回路250−2は、入力端子INからサブモジュール210−2へ入力データi1を伝達する。一方、イネーブル信号en2が非活性化されると(en2=“0”)、ゲーティング回路250−2は、入力端子INからサブモジュール210−2への入力データi1の伝達を遮断する。
ゲーティング回路250−3は、入力端子INとサブモジュール210−3との間に挿入されている。つまり、ゲーティング回路250−3の入力は入力端子INに接続され、その出力はサブモジュール210−3に接続されている。サブモジュール210−3が入力データi1を必要としないとき、ゲーティング回路250−3は、入力端子INからサブモジュール210−3への入力データi1の伝達を遮断する。サブモジュール210−3が入力データi1を必要とするときだけ、ゲーティング回路250−3は、入力端子INからサブモジュール210−3へ入力データi1を伝達する。より詳細には、ゲーティング回路250−3には、図6中の式で示されるイネーブル信号en3も入力される。イネーブル信号en3は、状態信号ST02及び条件信号CNDに基づいて、制御信号生成回路240によって生成される。[状態2:ST02]且つ[条件B:CND=0]のとき、すなわち、サブモジュール210−3(関数f3)が入力データi1を必要とするときだけ、イネーブル信号en3は活性化され(en3=“1”)、それ以外の場合、イネーブル信号en3は非活性化される(en3=“0”)。イネーブル信号en3が活性化されると(en3=“1”)、ゲーティング回路250−3は、入力端子INからサブモジュール210−3へ入力データi1を伝達する。一方、イネーブル信号en3が非活性化されると(en3=“0”)、ゲーティング回路250−3は、入力端子INからサブモジュール210−3への入力データi1の伝達を遮断する。
このように、ゲーティング回路250を挿入することにより、入力データi1の遷移が不必要にサブモジュール210へ伝播することを防止することができる。その結果、設計される回路の消費電力が削減される。
3.ゲーティング回路の種類
ゲーティング回路250の種類は、おおまかに2つに区分される。1つ目は「ラッチ型(LATCH)」であり、2つ目は「アンド型(AND)」である。
ゲーティング回路250の種類は、おおまかに2つに区分される。1つ目は「ラッチ型(LATCH)」であり、2つ目は「アンド型(AND)」である。
ラッチ型のゲーティング回路250は、イネーブル信号enが活性化されているときには、入力端子INに入力される入力データi1をサブモジュール210に対して出力する。この場合、入力データi1が遷移すると、その入力データi1の遷移はサブモジュール210に伝播する。一方、イネーブル信号enが非活性化されると、ラッチ型のゲーティング回路250は、その時点での入力データi1をラッチし、ラッチしたデータを出力する。つまり、サブモジュール210への出力は、イネーブル信号enが非活性化された時点の値のまま維持され続ける。この場合、入力端子INに入力される入力データi1が遷移しても、その入力データi1の遷移はサブモジュール210には伝播しない。ラッチ型のゲーティング回路250としてはラッチ回路が挙げられるが、それに限られない。
アンド型のゲーティング回路250は、イネーブル信号enが活性化されているときには、入力端子INに入力される入力データi1をサブモジュール210に対して出力する。この場合、入力データi1が遷移すると、その入力データi1の遷移はサブモジュール210に伝播する。一方、イネーブル信号enが非活性化されると、アンド型のゲーティング回路250は、サブモジュール210への出力を所定の値に固定する。例えば、ゲーティング回路250がANDゲートである場合、イネーブル信号enが非活性化されると(en=0)、出力は“0”に固定される。この場合、入力端子INに入力される入力データi1が遷移しても、その入力データi1の遷移はサブモジュール210には伝播しない。アンド型のゲーティング回路250としてはANDゲートが挙げられるが、それに限られない。イネーブル信号enの非活性化に応答して出力が所定値に固定される論理回路であれば何でもよい。
以下、ラッチ型とアンド型のそれぞれの場合のゲーティングの効果を検証する。例として、図7に示されるような入力データ(入力変数)i1の変遷を考える。図7に示されるように、20個の入力データi1が順番に入力端子INに入力されるとする。
図8及び図9は、入力データi1の遷移の各サブモジュール210への伝播を示している。図8は、ゲーティングが行われない場合(図4参照)を示しており、図9は、ゲーティングが行われる場合(図5参照)を示している。図8及び図9には、入力データi1、状態信号ST、サブモジュール210−1(f1)への伝播、サブモジュール210−2(f2)への伝播、及びサブモジュール210−3(f3)への伝播が示されている。図中の“*印”は、入力データi1の遷移が該当サブモジュール210へ伝播することを表している。
図8に示されるように、ゲーティングが行われない場合、入力データi1の遷移は常に全てのサブモジュール210−1〜210−3に伝播する。一方、本実施の形態のようにゲーティングが行われる場合、各サブモジュール210が入力データi1を必要とするときだけ、入力データi1の遷移が当該サブモジュール210に伝播する。言い換えれば、各関数(f1〜f3)が呼び出され入力データi1を参照するときにだけ、入力データi1の遷移が対応するサブモジュール210に伝播する。各関数(f1〜f3)が呼び出される回数(以下、「コール回数」と参照される)は、対応するサブモジュール210が入力データi1を用いて演算を行う回数と同じである。図9の例では、関数f1、f2、f3のコール回数は、それぞれ10回、2回、8回となっている。
図10は、サブモジュール210−1(f1)に入力されるデータとゲーティング回路250−1の種類との関係を示している。上述の通り、サブモジュール210−1に対応する関数f1のコール回数は10回である。図10に示されるように、ゲーティングが行われない場合、サブモジュール210−1に入力されるデータは19回遷移(変化)する。ゲーティング回路250−1としてラッチ回路が挿入される場合、サブモジュール210−1に入力されるデータは9回だけ遷移する。ゲーティング回路250−1としてANDゲートが挿入される場合、サブモジュール210−1に入力されるデータは16回遷移する。
このように、ゲーティングの効果は、アンド型よりもラッチ型の方が大きい。特に、コール回数が比較的多い関数f1に対応するサブモジュール210−1の場合、ラッチ型による効果が顕著となる。ラッチ型のゲーティング回路250−1を挿入することによって、入力データi1の遷移の伝播を抑えるだけでなく、サブモジュール210−1に入力されるデータの遷移回数をも大幅に低減することが可能となる。その結果、サブモジュール210−1における消費電力が大幅に削減される。
図11は、サブモジュール210−2(f2)に入力されるデータとゲーティング回路250−2の種類との関係を示している。上述の通り、サブモジュール210−2に対応する関数f2のコール回数は2回である。図11に示されるように、ゲーティングが行われない場合、サブモジュール210−2に入力されるデータは19回遷移(変化)する。ゲーティング回路250−2としてラッチ回路が挿入される場合、サブモジュール210−2に入力されるデータは2回だけ遷移する。ゲーティング回路250−2としてANDゲートが挿入される場合、サブモジュール210−2に入力されるデータは4回だけ遷移する。
このように、コール回数が少ない関数f2に対応するサブモジュール210−2の場合、ラッチ型であってもアンド型であっても顕著な効果が得られる。ラッチ型あるいはアンド型のゲーティング回路250−2を挿入することによって、入力データi1の遷移の伝播を抑えるだけでなく、サブモジュール210−2に入力されるデータの遷移回数をも大幅に低減することが可能となる。
回路面積の観点から言えば、アンド型の方がラッチ型よりも小さく、好適である。つまり、アンド型は、ゲーティングの効果が比較的小さい代わりに、回路面積が小さいという特徴を有している。図11で示されたように、コール回数が少ない場合は、アンド型のゲーティング回路250が用いられても、十分なゲーティング効果が得られる。すなわち、コール回数が少ない場合は、アンド型を用いることによって、消費電力の削減と回路面積増大の抑制を両立することが可能となる。
以上の議論から、関数のコール回数に応じてゲーティング回路250の種類を決定することが好適である。コール回数が多い場合は、ラッチ型がゲーティング回路250として選択されると好ましい。一方、コール回数が少ない場合は、アンド型がゲーティング回路250として選択されると好ましい。例えば、各関数(f1、f2、f3)のコール回数(10回、2回、8回)が、所定の閾値(例:5回)と比較される。コール回数が所定の閾値以上である場合、ラッチ型がゲーティング回路250として選択される。一方、コール回数が所定の閾値未満の場合、アンド型がゲーティング回路250として選択される。
尚、入力データi1の変遷に対する各関数のコール回数は、「動作記述シミュレーション」を通して予め算出可能である。動作記述シミュレーションは、周知の動作記述シミュレータにより実施される。動作記述シミュレータへの入力は、図1で示された動作記述と図7で示された入力データ(入力変数)i1の変遷である。動作記述シミュレーションの結果、入力データi1の変遷に応答した各関数(f1、f2、f3)のコール回数が算出される。図12は、算出されたコール回数を示すコール回数情報を示している。本例では、上述の通り、関数f1、f2、f3のコール回数はそれぞれ10回、2回、8回である。動作合成処理においては、このコール回数情報を参照することによって、ゲーティング回路250の種類が決定されるとよい。
4.動作合成システム
図13は、本実施の形態に係る動作合成システム1の構成を示すブロック図である。動作合成システム1は、本実施の形態に係る「動作合成処理」を行うコンピュータシステムである。動作合成システム1は、処理装置2、記憶装置3、入力装置4、及び出力装置5を備えている。記憶装置3としては、HDDやRAMが例示される。入力装置4としては、キーボードやマウスが例示される。出力装置5としてはディスプレイが例示される。
図13は、本実施の形態に係る動作合成システム1の構成を示すブロック図である。動作合成システム1は、本実施の形態に係る「動作合成処理」を行うコンピュータシステムである。動作合成システム1は、処理装置2、記憶装置3、入力装置4、及び出力装置5を備えている。記憶装置3としては、HDDやRAMが例示される。入力装置4としては、キーボードやマウスが例示される。出力装置5としてはディスプレイが例示される。
記憶装置3には、動作記述ファイルBHV、データフローグラフデータDFG、データパスグラフデータDPG、入力遷移情報ITR、コール回数情報CAL、RTL記述ファイルRTLが格納される。動作記述ファイルBHVは、図1で示された動作記述を示す。データフローグラフデータDFGは、図2で示されたCDFGを示す。データパスグラフデータDPGは、図4及び図5で示されたデータパスグラフを示す。入力遷移情報ITRは、図7で示された入力データ(入力変数)i1の変遷を示す。コール回数情報CALは、図12で示されたものであり、動作記述シミュレーションにより得られる。RTL記述ファイルRTLは、動作合成処理の結果得られるRTL記述を示す。
記憶装置3には、更に、動作記述シミュレーションツールPROG_SIMが格納される。動作記述シミュレーションツールPROG_SIMは、処理装置2によって実行される周知のコンピュータプログラムである。動作記述シミュレーションツールPROG_SIMは、動作記述ファイルBHV及び入力遷移情報ITRを用いて動作記述シミュレーションを行い、コール回数情報CAL(図12参照)を予め作成する。
記憶装置3には、更に、動作合成ツール(動作合成プログラム)PROG_SYNが格納される。動作合成ツールPROG_SYNは、処理装置2によって実行されるコンピュータプログラムである。動作合成ツールPROG_SYNは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。処理装置2が動作合成ツールPROG_SYNを実行することにより、本実施の形態に係る動作合成処理が実現される。より詳細には、処理装置2が動作合成ツールPROG_SYNを実行することにより、図13に示されるように、動作記述入力部10、動作合成部20、ゲーティング回路挿入部30、及びRTL記述出力部40が実現される。
図14は、本実施の形態に係る動作合成システム1の機能ブロックを示している。図14に示されるように、動作合成システム1は、動作記述入力部10、動作合成部20、ゲーティング回路挿入部30、及びRTL記述出力部40を備えている。図15は、本実施の形態に係る動作合成処理を示すフローチャートである。図14及び図15を参照して、本実施の形態に係る動作合成システム1による動作合成処理を説明する。
ステップS10:
まず、動作記述入力部10は、記憶装置3から動作記述ファイルBHVを読み出す。動作記述ファイルBHVは、動作合成部20に入力される。
まず、動作記述入力部10は、記憶装置3から動作記述ファイルBHVを読み出す。動作記述ファイルBHVは、動作合成部20に入力される。
ステップS20:
動作合成部20は、動作記述ファイルBHVによって与えられる動作記述(図1参照)に対し、通常の手法に従って動作合成(CDFGの作成、スケジューリング、アロケーション等)を行う。このとき、演算器の総数、クロック周波数、サイクル数等は制約条件として与えられる。動作合成の結果、動作記述に応じたCDFG(図2参照)や、動作記述に応じたデータパスグラフ(図4参照)が生成される。データフローグラフデータDFGやデータパスグラフデータDPGは、記憶装置3に格納される。
動作合成部20は、動作記述ファイルBHVによって与えられる動作記述(図1参照)に対し、通常の手法に従って動作合成(CDFGの作成、スケジューリング、アロケーション等)を行う。このとき、演算器の総数、クロック周波数、サイクル数等は制約条件として与えられる。動作合成の結果、動作記述に応じたCDFG(図2参照)や、動作記述に応じたデータパスグラフ(図4参照)が生成される。データフローグラフデータDFGやデータパスグラフデータDPGは、記憶装置3に格納される。
ステップS30:
ゲーティング回路挿入部30は、データフローグラフデータDFGで示されるCDFGに基づいて、入力変数i1が各関数によって参照される状態/条件(図3参照)を把握する。更に、ゲーティング回路挿入部30は、図3で示された状態/条件以外の場合には入力データi1の伝達が遮断されるように、ゲーティング回路250を挿入する。より詳細には、ゲーティング回路250は、図4で示されたデータパスグラフ中の入力端子INとサブモジュール(演算器)210との間に、ゲーティング回路250を挿入する。その結果、図5で示されたデータパスグラフが得られる。ここで、ゲーティング回路挿入部30は、ゲーティング回路250−1〜250−3のそれぞれに対するイネーブル信号en1〜en3を、図6で示されるように設定する。
ゲーティング回路挿入部30は、データフローグラフデータDFGで示されるCDFGに基づいて、入力変数i1が各関数によって参照される状態/条件(図3参照)を把握する。更に、ゲーティング回路挿入部30は、図3で示された状態/条件以外の場合には入力データi1の伝達が遮断されるように、ゲーティング回路250を挿入する。より詳細には、ゲーティング回路250は、図4で示されたデータパスグラフ中の入力端子INとサブモジュール(演算器)210との間に、ゲーティング回路250を挿入する。その結果、図5で示されたデータパスグラフが得られる。ここで、ゲーティング回路挿入部30は、ゲーティング回路250−1〜250−3のそれぞれに対するイネーブル信号en1〜en3を、図6で示されるように設定する。
また、好適には、挿入されるゲーティング回路250の種類は、各関数のコール回数に応じて決定される。そのために、ゲーティング回路挿入部30は、記憶装置3からコール回数情報CAL(図12参照)を読み出す。そして、ゲーティング回路挿入部30は、コール回数情報CALで示される各関数のコール回数を所定の閾値と比較する。コール回数が所定の閾値以上である場合、ゲーティング回路挿入部30は、ラッチ型回路をゲーティング回路250として選択する。一方、コール回数が所定の閾値未満の場合、ゲーティング回路挿入部30は、アンド型回路をゲーティング回路250として選択する。これにより、消費電力の削減と回路面積増大の抑制を両立することが可能となる。
このように、ゲーティング回路挿入部30は、データパスグラフにゲーティング回路250を挿入し、データパスグラフを更新する。更新後のデータパスグラフを示すデータパスグラフデータDPGは、記憶装置3に格納される。
尚、値が変化しない入力変数に関しては、ゲーティングを行う必要はない。ユーザは、値が変化しない入力変数を予め指定しておいてもよい。ある入力変数の遷移確率が0%である場合、動作合成システム1は、当該入力変数に関してはゲーティングを行わない。
ステップS40:
RTL記述出力部40は、記憶装置3から更新後のデータパスグラフデータDPGを読み出す。RTL記述出力部40は、図5で示されたデータパスグラフに応じたRTL記述を作成する。そして、RTL記述出力部40は、作成されたRTL記述を示すRTL記述ファイルRTLを記憶装置3に格納する。
RTL記述出力部40は、記憶装置3から更新後のデータパスグラフデータDPGを読み出す。RTL記述出力部40は、図5で示されたデータパスグラフに応じたRTL記述を作成する。そして、RTL記述出力部40は、作成されたRTL記述を示すRTL記述ファイルRTLを記憶装置3に格納する。
その後、RTL記述に基づいて論理合成が行われ、ゲートレベルのネットリストが作成される。更に、そのネットリストに基づいてレイアウト設計が行われる。そして、レイアウトデータに基づいて設計回路が製造される。製造された回路では、消費電力が削減されている。
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
1 動作合成システム
2 処理装置
3 記憶装置
4 入力装置
5 出力装置
10 動作記述入力部
20 動作合成部
30 ゲーティング回路挿入部
40 RTL記述出力部
100 コントローラ
200 データパス
210 サブモジュール(演算器)
220 セレクタ
230 判定回路
240 制御信号生成回路
250 ゲーティング回路
IN 入力端子
i1 入力変数
ST 状態信号
en イネーブル信号
BHV 動作記述ファイル
DFG データフローグラフデータ
DPG データパスグラフデータ
ITR 入力遷移情報
CAL コール回数情報
RTL RTL記述ファイル
PROG_SIM 動作記述シミュレーションツール
PROG_SYN 動作合成ツール
2 処理装置
3 記憶装置
4 入力装置
5 出力装置
10 動作記述入力部
20 動作合成部
30 ゲーティング回路挿入部
40 RTL記述出力部
100 コントローラ
200 データパス
210 サブモジュール(演算器)
220 セレクタ
230 判定回路
240 制御信号生成回路
250 ゲーティング回路
IN 入力端子
i1 入力変数
ST 状態信号
en イネーブル信号
BHV 動作記述ファイル
DFG データフローグラフデータ
DPG データパスグラフデータ
ITR 入力遷移情報
CAL コール回数情報
RTL RTL記述ファイル
PROG_SIM 動作記述シミュレーションツール
PROG_SYN 動作合成ツール
Claims (15)
- 動作記述の動作合成を行い、前記動作記述に応じたデータパスグラフを生成する動作合成部と、ここで、前記データパスグラフは、入力データが入力される入力端子と、前記入力データを用いて演算を行う演算器とを含み、
前記入力端子と前記演算器との間にゲーティング回路を挿入するゲーティング回路挿入部と
を備え、
前記ゲーティング回路は、前記演算器が前記入力データを必要としないときに前記入力端子から前記演算器への前記入力データの伝達を遮断し、前記演算器が前記入力データを必要とするときだけ前記入力端子から前記演算器へ前記入力データを伝達する
動作合成システム。 - 請求項1に記載の動作合成システムであって、
前記動作記述において、前記演算は関数で表され、
前記ゲーティング回路挿入部は、前記入力データの変遷に応答した前記関数のコール回数に基づいて、前記ゲーティング回路の種類を決定する
動作合成システム。 - 請求項1に記載の動作合成システムであって、
前記ゲーティング回路にはイネーブル信号が入力され、
前記ゲーティング回路挿入部は、前記演算器が前記入力データを必要とするときだけ活性化され、前記演算器が前記入力データを必要としないときに非活性化されるように、前記イネーブル信号を設定し、
前記ゲーティング回路は、前記イネーブル信号が活性化されたとき前記入力端子から前記演算器へ前記入力データを伝達し、前記イネーブル信号が非活性化されたとき前記入力端子から前記演算器への前記入力データの伝達を遮断する
動作合成システム。 - 請求項3に記載の動作合成システムであって、
前記ゲーティング回路は、ラッチ型回路あるいはアンド型回路のいずれかであり、
前記ラッチ型回路は、前記イネーブル信号が非活性化されると、前記演算器への出力を前記イネーブル信号が非活性化された時点の値のまま維持し、
前記アンド型回路は、前記イネーブル信号が非活性化されると、前記演算器への出力を所定の値に固定する
動作合成システム。 - 請求項4に記載の動作合成システムであって、
前記動作記述において、前記演算は関数で表され、
前記ゲーティング回路挿入部は、前記入力データの変遷に応答した前記関数のコール回数を所定の閾値と比較し、
前記コール回数が前記所定の閾値以上の場合、前記ゲーティング回路挿入部は、前記ラッチ型回路を前記ゲーティング回路として選択し、
前記コール回数が前記所定の閾値未満場合、前記ゲーティング回路挿入部は、前記アンド型回路を前記ゲーティング回路として選択する
動作合成システム。 - 動作記述の動作合成を行い、前記動作記述に応じたデータパスグラフを生成するステップと、ここで、前記データパスグラフは、入力データが入力される入力端子と、前記入力データを用いて演算を行う演算器とを含み、
前記入力端子と前記演算器との間にゲーティング回路を挿入するステップと
を含み、
前記ゲーティング回路は、前記演算器が前記入力データを必要としないときに前記入力端子から前記演算器への前記入力データの伝達を遮断し、前記演算器が前記入力データを必要とするときだけ前記入力端子から前記演算器へ前記入力データを伝達する
動作合成方法。 - 請求項6に記載の動作合成方法であって、
前記動作記述において、前記演算は関数で表され、
前記ゲーティング回路を挿入するステップは、前記入力データの変遷に応答した前記関数のコール回数に基づいて、前記ゲーティング回路の種類を決定するステップを含む
動作合成方法。 - 請求項6に記載の動作合成方法であって、
前記演算器が前記入力データを必要とするときだけ活性化され、前記演算器が前記入力データを必要としないときに非活性化されるように、イネーブル信号を設定するステップを更に含み、
前記ゲーティング回路には前記イネーブル信号が入力され、
前記ゲーティング回路は、前記イネーブル信号が活性化されたとき前記入力端子から前記演算器へ前記入力データを伝達し、前記イネーブル信号が非活性化されたとき前記入力端子から前記演算器への前記入力データの伝達を遮断する
動作合成方法。 - 請求項8に記載の動作合成方法であって、
前記ゲーティング回路は、ラッチ型回路あるいはアンド型回路のいずれかであり、
前記ラッチ型回路は、前記イネーブル信号が非活性化されると、前記演算器への出力を前記イネーブル信号が非活性化された時点の値のまま維持し、
前記アンド型回路は、前記イネーブル信号が非活性化されると、前記演算器への出力を所定の値に固定する
動作合成方法。 - 請求項9に記載の動作合成方法であって、
前記動作記述において、前記演算は関数で表され、
前記ゲーティング回路を挿入するステップは、
前記入力データの変遷に応答した前記関数のコール回数を所定の閾値と比較するステップと、
前記コール回数が前記所定の閾値以上の場合、前記ラッチ型回路を前記ゲーティング回路として選択するステップと、
前記コール回数が前記所定の閾値未満場合、前記アンド型回路を前記ゲーティング回路として選択するステップと
を含む
動作合成方法。 - コンピュータに動作合成処理を実行させる動作合成プログラムであって、
前記動作合成処理は、
動作記述の動作合成を行い、前記動作記述に応じたデータパスグラフを生成するステップと、ここで、前記データパスグラフは、入力データが入力される入力端子と、前記入力データを用いて演算を行う演算器とを含み、
前記入力端子と前記演算器との間にゲーティング回路を挿入するステップと
を含み、
前記ゲーティング回路は、前記演算器が前記入力データを必要としないときに前記入力端子から前記演算器への前記入力データの伝達を遮断し、前記演算器が前記入力データを必要とするときだけ前記入力端子から前記演算器へ前記入力データを伝達する
動作合成プログラム。 - 請求項11に記載の動作合成プログラムであって、
前記動作記述において、前記演算は関数で表され、
前記ゲーティング回路を挿入するステップは、前記入力データの変遷に応答した前記関数のコール回数に基づいて、前記ゲーティング回路の種類を決定するステップを含む
動作合成プログラム。 - 請求項11に記載の動作合成プログラムであって、
前記動作合成処理は、更に、前記演算器が前記入力データを必要とするときだけ活性化され、前記演算器が前記入力データを必要としないときに非活性化されるように、イネーブル信号を設定するステップを含み、
前記ゲーティング回路には前記イネーブル信号が入力され、
前記ゲーティング回路は、前記イネーブル信号が活性化されたとき前記入力端子から前記演算器へ前記入力データを伝達し、前記イネーブル信号が非活性化されたとき前記入力端子から前記演算器への前記入力データの伝達を遮断する
動作合成プログラム。 - 請求項13に記載の動作合成プログラムであって、
前記ゲーティング回路は、ラッチ型回路あるいはアンド型回路のいずれかであり、
前記ラッチ型回路は、前記イネーブル信号が非活性化されると、前記演算器への出力を前記イネーブル信号が非活性化された時点の値のまま維持し、
前記アンド型回路は、前記イネーブル信号が非活性化されると、前記演算器への出力を所定の値に固定する
動作合成プログラム。 - 請求項14に記載の動作合成プログラムであって、
前記動作記述において、前記演算は関数で表され、
前記ゲーティング回路を挿入するステップは、
前記入力データの変遷に応答した前記関数のコール回数を所定の閾値と比較するステップと、
前記コール回数が前記所定の閾値以上の場合、前記ラッチ型回路を前記ゲーティング回路として選択するステップと、
前記コール回数が前記所定の閾値未満場合、前記アンド型回路を前記ゲーティング回路として選択するステップと
を含む
動作合成プログラム。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2009051291A JP2010205084A (ja) | 2009-03-04 | 2009-03-04 | 動作合成システム、動作合成方法、動作合成プログラム |
| US12/717,377 US20100229144A1 (en) | 2009-03-04 | 2010-03-04 | System and method for behavioral synthesis |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2009051291A JP2010205084A (ja) | 2009-03-04 | 2009-03-04 | 動作合成システム、動作合成方法、動作合成プログラム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2010205084A true JP2010205084A (ja) | 2010-09-16 |
Family
ID=42679365
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2009051291A Pending JP2010205084A (ja) | 2009-03-04 | 2009-03-04 | 動作合成システム、動作合成方法、動作合成プログラム |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20100229144A1 (ja) |
| JP (1) | JP2010205084A (ja) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011192001A (ja) * | 2010-03-15 | 2011-09-29 | Toshiba Corp | 高位合成装置及び高位合成方法 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH08106476A (ja) * | 1994-10-05 | 1996-04-23 | Matsushita Electric Ind Co Ltd | 論理回路自動合成方法 |
| JPH10283380A (ja) * | 1997-04-01 | 1998-10-23 | Toshiba Corp | 論理回路生成装置及び論理回路生成方法 |
| JP2003067433A (ja) * | 2001-08-24 | 2003-03-07 | Nec Microsystems Ltd | 冗長動作検出装置およびその検出方法ならびに動作停止回路の挿入方法 |
| JP2007213265A (ja) * | 2006-02-08 | 2007-08-23 | Sharp Corp | 動作合成装置および動作合成方法、ディジタル回路の製造方法、動作合成制御プログラム、可読記録媒体 |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6195786B1 (en) * | 1997-12-23 | 2001-02-27 | Nec Usa, Inc. | Constrained register sharing technique for low power VLSI design |
| JP2005293163A (ja) * | 2004-03-31 | 2005-10-20 | Nec Electronics Corp | 消費電力計算方法及び装置 |
-
2009
- 2009-03-04 JP JP2009051291A patent/JP2010205084A/ja active Pending
-
2010
- 2010-03-04 US US12/717,377 patent/US20100229144A1/en not_active Abandoned
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH08106476A (ja) * | 1994-10-05 | 1996-04-23 | Matsushita Electric Ind Co Ltd | 論理回路自動合成方法 |
| JPH10283380A (ja) * | 1997-04-01 | 1998-10-23 | Toshiba Corp | 論理回路生成装置及び論理回路生成方法 |
| JP2003067433A (ja) * | 2001-08-24 | 2003-03-07 | Nec Microsystems Ltd | 冗長動作検出装置およびその検出方法ならびに動作停止回路の挿入方法 |
| JP2007213265A (ja) * | 2006-02-08 | 2007-08-23 | Sharp Corp | 動作合成装置および動作合成方法、ディジタル回路の製造方法、動作合成制御プログラム、可読記録媒体 |
Also Published As
| Publication number | Publication date |
|---|---|
| US20100229144A1 (en) | 2010-09-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8291364B2 (en) | Automated digital circuit design tool that reduces or eliminates adverse timing constraints do to an inherent clock signal skew, and applications thereof | |
| US8713506B2 (en) | System and method for employing signoff-quality timing analysis information concurrently in multiple scenarios to reduce dynamic power in an electronic circuit and an apparatus incorporating the same | |
| JP4988758B2 (ja) | マルチサイクル・クロック・ゲーティングのための方法および装置 | |
| JP2005018626A (ja) | 並列処理システムの生成方法 | |
| US7725843B2 (en) | Behavioral synthesis apparatus, behavioral synthesis method, method for manufacturing digital circuit, behavioral synthesis control program and computer-readable recording medium | |
| US9552328B2 (en) | Reconfigurable integrated circuit device | |
| US8776003B2 (en) | System and method for employing side transition times from signoff-quality timing analysis information to reduce leakage power in an electronic circuit and an electronic design automation tool incorporating the same | |
| US10387600B2 (en) | Dynamic power reduction in circuit designs and circuits | |
| Monteiro et al. | Implicit FSM decomposition applied to low-power design | |
| JP2006154996A (ja) | 半導体集積回路の設計方法、半導体集積回路および半導体集積回路の設計プログラム | |
| JP2007034887A (ja) | ハイレベル合成コンパイラ用のシフトレジスタファイルを自動生成するための方法および装置 | |
| JP2010205084A (ja) | 動作合成システム、動作合成方法、動作合成プログラム | |
| US10366188B2 (en) | Designing apparatus for designing a programmable logic device, method of designing a programmable logic device and recording medium for storing a program for designing a programmable logic device | |
| US7146303B2 (en) | Technique for incorporating power information in register transfer logic design | |
| JP4419633B2 (ja) | 論理回路設計システム、論理回路設計方法およびそのプログラム | |
| JP5262435B2 (ja) | 回路設計装置及び回路設計方法 | |
| JP4983609B2 (ja) | 半導体設計方法、装置、およびプログラム | |
| JP2008198003A (ja) | アレイ型プロセッサ | |
| Kamal et al. | Design of NBTI-resilient extensible processors | |
| JP2011134072A (ja) | 半導体集積回路の設計方法及びプログラム | |
| JPWO2008114402A1 (ja) | ゲーテッドクロック設計方法及び半導体集積回路 | |
| JP6545406B2 (ja) | 高位合成装置、高位合成方法および高位合成プログラム | |
| JP5531479B2 (ja) | 回路設計方法、及び回路設計プログラム | |
| JP6317603B2 (ja) | 情報処理装置、情報処理装置の制御方法及びプログラム | |
| JP2013131070A (ja) | 回路設計支援装置、回路設計支援方法、及び回路設計支援プログラム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111220 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121101 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121114 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130307 |