(57)【要約】【課題】設計される回路の消費電力を削減することができる動作合成技術を提供すること。【解決手段】動作合成システムは、動作合成部とゲーティング回路挿入部とを備える。動作合成部は、動作記述の動作合成を行い、動作記述に応じたデータパスグラフを生成する。ここで、データパスグラフは、入力データが入力される入力端子と、入力データを用いて演算を行う演算器とを含む。ゲーティング回路挿入部は、入力端子と演算器との間にゲーティング回路を挿入する。ゲーティング回路は、演算器が入力データを必要としないときに入力端子から演算器への入力データの伝達を遮断し、演算器が入力データを必要とするときだけ入力端子から演算器へ入力データを伝達する。【選択図】図５
2010205084.tif 000002
【特許請求の範囲】
【請求項１】
動作記述の動作合成を行い、前記動作記述に応じたデータパスグラフを生成する動作合成部と、ここで、前記データパスグラフは、入力データが入力される入力端子と、前記入力データを用いて演算を行う演算器とを含み、
前記入力端子と前記演算器との間にゲーティング回路を挿入するゲーティング回路挿入部と
を備え、
前記ゲーティング回路は、前記演算器が前記入力データを必要としないときに前記入力端子から前記演算器への前記入力データの伝達を遮断し、前記演算器が前記入力データを必要とするときだけ前記入力端子から前記演算器へ前記入力データを伝達する
動作合成システム。
【請求項２】
請求項１に記載の動作合成システムであって、
前記動作記述において、前記演算は関数で表され、
前記ゲーティング回路挿入部は、前記入力データの変遷に応答した前記関数のコール回数に基づいて、前記ゲーティング回路の種類を決定する
動作合成システム。
【請求項３】
請求項１に記載の動作合成システムであって、
前記ゲーティング回路にはイネーブル信号が入力され、
前記ゲーティング回路挿入部は、前記演算器が前記入力データを必要とするときだけ活性化され、前記演算器が前記入力データを必要としないときに非活性化されるように、前記イネーブル信号を設定し、
前記ゲーティング回路は、前記イネーブル信号が活性化されたとき前記入力端子から前記演算器へ前記入力データを伝達し、前記イネーブル信号が非活性化されたとき前記入力端子から前記演算器への前記入力データの伝達を遮断する
動作合成システム。
【請求項４】
請求項３に記載の動作合成システムであって、
前記ゲーティング回路は、ラッチ型回路あるいはアンド型回路のいずれかであり、
前記ラッチ型回路は、前記イネーブル信号が非活性化されると、前記演算器への出力を前記イネーブル信号が非活性化された時点の値のまま維持し、
前記アンド型回路は、前記イネーブル信号が非活性化されると、前記演算器への出力を所定の値に固定する
動作合成システム。
【請求項５】
請求項４に記載の動作合成システムであって、
前記動作記述において、前記演算は関数で表され、
前記ゲーティング回路挿入部は、前記入力データの変遷に応答した前記関数のコール回数を所定の閾値と比較し、
前記コール回数が前記所定の閾値以上の場合、前記ゲーティング回路挿入部は、前記ラッチ型回路を前記ゲーティング回路として選択し、
前記コール回数が前記所定の閾値未満場合、前記ゲーティング回路挿入部は、前記アンド型回路を前記ゲーティング回路として選択する
動作合成システム。
【請求項６】
動作記述の動作合成を行い、前記動作記述に応じたデータパスグラフを生成するステップと、ここで、前記データパスグラフは、入力データが入力される入力端子と、前記入力データを用いて演算を行う演算器とを含み、
前記入力端子と前記演算器との間にゲーティング回路を挿入するステップと
を含み、
前記ゲーティング回路は、前記演算器が前記入力データを必要としないときに前記入力端子から前記演算器への前記入力データの伝達を遮断し、前記演算器が前記入力データを必要とするときだけ前記入力端子から前記演算器へ前記入力データを伝達する
動作合成方法。
【請求項７】
請求項６に記載の動作合成方法であって、
前記動作記述において、前記演算は関数で表され、
前記ゲーティング回路を挿入するステップは、前記入力データの変遷に応答した前記関数のコール回数に基づいて、前記ゲーティング回路の種類を決定するステップを含む
動作合成方法。
【請求項８】
請求項６に記載の動作合成方法であって、
前記演算器が前記入力データを必要とするときだけ活性化され、前記演算器が前記入力データを必要としないときに非活性化されるように、イネーブル信号を設定するステップを更に含み、
前記ゲーティング回路には前記イネーブル信号が入力され、
前記ゲーティング回路は、前記イネーブル信号が活性化されたとき前記入力端子から前記演算器へ前記入力データを伝達し、前記イネーブル信号が非活性化されたとき前記入力端子から前記演算器への前記入力データの伝達を遮断する
動作合成方法。
【請求項９】
請求項８に記載の動作合成方法であって、
前記ゲーティング回路は、ラッチ型回路あるいはアンド型回路のいずれかであり、
前記ラッチ型回路は、前記イネーブル信号が非活性化されると、前記演算器への出力を前記イネーブル信号が非活性化された時点の値のまま維持し、
前記アンド型回路は、前記イネーブル信号が非活性化されると、前記演算器への出力を所定の値に固定する
動作合成方法。
【請求項１０】
請求項９に記載の動作合成方法であって、
前記動作記述において、前記演算は関数で表され、
前記ゲーティング回路を挿入するステップは、
前記入力データの変遷に応答した前記関数のコール回数を所定の閾値と比較するステップと、
前記コール回数が前記所定の閾値以上の場合、前記ラッチ型回路を前記ゲーティング回路として選択するステップと、
前記コール回数が前記所定の閾値未満場合、前記アンド型回路を前記ゲーティング回路として選択するステップと
を含む
動作合成方法。
【請求項１１】
コンピュータに動作合成処理を実行させる動作合成プログラムであって、
前記動作合成処理は、
動作記述の動作合成を行い、前記動作記述に応じたデータパスグラフを生成するステップと、ここで、前記データパスグラフは、入力データが入力される入力端子と、前記入力データを用いて演算を行う演算器とを含み、
前記入力端子と前記演算器との間にゲーティング回路を挿入するステップと
を含み、
前記ゲーティング回路は、前記演算器が前記入力データを必要としないときに前記入力端子から前記演算器への前記入力データの伝達を遮断し、前記演算器が前記入力データを必要とするときだけ前記入力端子から前記演算器へ前記入力データを伝達する
動作合成プログラム。
【請求項１２】
請求項１１に記載の動作合成プログラムであって、
前記動作記述において、前記演算は関数で表され、
前記ゲーティング回路を挿入するステップは、前記入力データの変遷に応答した前記関数のコール回数に基づいて、前記ゲーティング回路の種類を決定するステップを含む
動作合成プログラム。
【請求項１３】
請求項１１に記載の動作合成プログラムであって、
前記動作合成処理は、更に、前記演算器が前記入力データを必要とするときだけ活性化され、前記演算器が前記入力データを必要としないときに非活性化されるように、イネーブル信号を設定するステップを含み、
前記ゲーティング回路には前記イネーブル信号が入力され、
前記ゲーティング回路は、前記イネーブル信号が活性化されたとき前記入力端子から前記演算器へ前記入力データを伝達し、前記イネーブル信号が非活性化されたとき前記入力端子から前記演算器への前記入力データの伝達を遮断する
動作合成プログラム。
【請求項１４】
請求項１３に記載の動作合成プログラムであって、
前記ゲーティング回路は、ラッチ型回路あるいはアンド型回路のいずれかであり、
前記ラッチ型回路は、前記イネーブル信号が非活性化されると、前記演算器への出力を前記イネーブル信号が非活性化された時点の値のまま維持し、
前記アンド型回路は、前記イネーブル信号が非活性化されると、前記演算器への出力を所定の値に固定する
動作合成プログラム。
【請求項１５】
請求項１４に記載の動作合成プログラムであって、
前記動作記述において、前記演算は関数で表され、
前記ゲーティング回路を挿入するステップは、
前記入力データの変遷に応答した前記関数のコール回数を所定の閾値と比較するステップと、
前記コール回数が前記所定の閾値以上の場合、前記ラッチ型回路を前記ゲーティング回路として選択するステップと、
前記コール回数が前記所定の閾値未満場合、前記アンド型回路を前記ゲーティング回路として選択するステップと
を含む
動作合成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動作記述からＲＴＬ記述を生成する動作合成技術に関する。
【背景技術】
【０００２】
動作記述（behavioral description）からＲＴＬ（Register Transfer Level）記述を生成する「動作合成（behavioral
synthesis）」が知られている。動作記述では、設計回路で実現したいアルゴリズムがＣ言語等で記述される。動作合成により得られるＲＴＬ記述は、次に論理合成（logic synthesis）への入力となる。
【０００３】
特許文献１は、１つの演算器が複数の演算処理によって共有化される場合、すなわち、当該演算器の出力が複数の後続演算器に入力されている場合の動作合成処理を記載している。この場合に固有な問題として、非アクティブな後続演算器において無駄な電力消費が発生することが挙げられる。よって、上記１つの演算器と後続演算器との間に入力固定器が挿入される。入力固定器は、後続演算器が非アクティブ状態のときに、後続演算器への入力を固定状態とする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２１３２６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
回路の入力端子に入力される入力データの遷移が、必要の無いときに回路内の演算器に伝播すると、電力が無駄に消費されてしまう。動作合成の段階で、そのような無駄な消費電力を削減できるような工夫を施しておくことが望まれる。
【課題を解決するための手段】
【０００６】
本発明の１つの観点において、動作合成システムが提供される。動作合成システムは、動作合成部とゲーティング回路挿入部とを備える。動作合成部は、動作記述の動作合成を行い、動作記述に応じたデータパスグラフを生成する。ここで、データパスグラフは、入力データが入力される入力端子と、入力データを用いて演算を行う演算器とを含む。ゲーティング回路挿入部は、入力端子と演算器との間にゲーティング回路を挿入する。ゲーティング回路は、演算器が入力データを必要としないときに入力端子から演算器への入力データの伝達を遮断し、演算器が入力データを必要とするときだけ入力端子から演算器へ入力データを伝達する。
【０００７】
本発明の他の観点において、動作合成方法が提供される。その動作合成方法は、（Ａ）動作記述の動作合成を行い、動作記述に応じたデータパスグラフを生成するステップと、ここで、データパスグラフは、入力データが入力される入力端子と、入力データを用いて演算を行う演算器とを含み、（Ｂ）入力端子と演算器との間にゲーティング回路を挿入するステップと、を含む。ゲーティング回路は、演算器が入力データを必要としないときに入力端子から演算器への入力データの伝達を遮断し、演算器が入力データを必要とするときだけ入力端子から演算器へ入力データを伝達する。
【０００８】
本発明の更に他の観点において、コンピュータに動作合成処理を実行させる動作合成プログラムが提供される。動作合成処理は、（Ａ）動作記述の動作合成を行い、動作記述に応じたデータパスグラフを生成するステップと、ここで、データパスグラフは、入力データが入力される入力端子と、入力データを用いて演算を行う演算器とを含み、（Ｂ）入力端子と演算器との間にゲーティング回路を挿入するステップと、を含む。ゲーティング回路は、演算器が入力データを必要としないときに入力端子から演算器への入力データの伝達を遮断し、演算器が入力データを必要とするときだけ入力端子から演算器へ入力データを伝達する。
【発明の効果】
【０００９】
本発明に係る動作合成技術によれば、設計される回路の消費電力を削減することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】図１は、動作記述の一例を示している。
【図２】図２は、図１で示された動作記述に対応するＣＤＦＧを示している。
【図３】図３は、入力変数が関数によって参照される状態／条件を示している。
【図４】図４は、図２で示されたＣＤＦＧに対応するデータパスグラフを示している。
【図５】図５は、ゲーティング回路が挿入されたデータパスグラフを示している。
【図６】図６は、ゲーティング回路を活性化／非活性化するイネーブル信号を示している。
【図７】図７は、入力データの変遷の一例を示している。
【図８】図８は、ゲーティングが行われない場合の、入力データ遷移のサブモジュールへの伝播を示している。
【図９】図９は、ゲーティングが行われる場合の、入力データ遷移のサブモジュールへの伝播を示している。
【図１０】図１０は、サブモジュールｆ１に入力されるデータとゲーティング回路の種類との関係を示している。
【図１１】図１１は、サブモジュールｆ２に入力されるデータとゲーティング回路の種類との関係を示している。
【図１２】図１２は、コール回数情報を示している。
【図１３】図１３は、本発明の実施の形態に係る動作合成システムの構成を示すブロック図である。
【図１４】図１４は、本発明の実施の形態に係る動作合成システムの機能ブロックを示している。
【図１５】図１５は、本発明の実施の形態に係る動作合成処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
１．動作合成
図１は、動作記述の一例を示している。その動作記述において、“ｉ１”は入力変数であり、“ｏ１”は出力変数であり、“ｆ１”、“ｆ２”、及び“ｆ３”はそれぞれ演算を行う関数である。
【００１２】
動作合成において、動作記述はまず、コントロールデータフローグラフ（CDFG: Control Data
Flow Graph）に変換される。ＣＤＦＧは、動作記述におけるデータの流れを表す。例えば、図１で示された動作記述は、図２に示されるＣＤＦＧに変換される。条件Ａは「ｉ２＞ｒ１」が真の場合であり、条件Ｂは「ｉ２＞ｒ１」が偽の場合である。更に、ＣＤＦＧに基づいてスケジューリングが実施され、動作を実行するステップ数（サイクル数）が決定される。図２の例では、動作は３ステップで実現され、その３ステップのそれぞれに［状態１］〜［状態３］が対応付けられている。
【００１３】
この時点で、入力変数ｉ１が各関数（ｆ１〜ｆ３）によって参照される状態／条件が分かる。図３に示されるように、関数ｆ１は、［状態１］の場合に、入力変数ｉ１を参照する。関数ｆ２は、［状態２］且つ［条件Ａ］の場合に、入力変数ｉ１を参照する。関数ｆ３は、［状態２］且つ［条件Ｂ］の場合に、入力変数ｉ１を参照する。逆に言えば、図３で示された状態／条件以外の場合には、各関数は入力変数ｉ１を必要としない。
【００１４】
続いて、アロケーション（データパス割り当て）が実行され、変数や関数（演算）にレジスタや演算器が割り当てられる。更に、シーケンスや制御信号が決定され、結果としてデータパスグラフ（data path graph）が生成される。
【００１５】
図４は、図２で示されたＣＤＦＧに対応するデータパスグラフを示している。データパスグラフは、データの演算処理を行うデータパス２００と、そのデータパス２００を制御するコントローラ１００とを含んでいる。コントローラ１００は、有限状態機械（FSM: Finite State Machine）とも呼ばれる。コントローラ１００は、［状態１］〜［状態３］のそれぞれを指定する状態信号ＳＴ０１〜ＳＴ０３を順番に且つ繰り返し生成する。状態信号ＳＴ０１〜ＳＴ０３は順番にデータパス２００に入力され、データパス２００の演算処理を制御する。
【００１６】
データパス２００は、入力端子ＩＮ、サブモジュール２１０−１〜２１０−３、セレクタ２２０−１〜２２０−３、判定回路２３０、制御信号生成回路２４０を含んでいる。
【００１７】
入力端子ＩＮには、入力変数ｉ１の値が入力される。入力変数ｉ１の値は、以下「入力データｉ１」と参照される。
【００１８】
各サブモジュール（下位モジュール）２１０は、演算器、あるいは演算器の集合であり、所定の演算を行う。サブモジュール２１０−１〜２１０−３は、それぞれ、上述の関数ｆ１〜ｆ３に対応している。すなわち、サブモジュール２１０−１〜２１０−３は、入力端子ＩＮに入力される入力データｉ１を用いて、それぞれ関数ｆ１〜ｆ３の演算を行う。
【００１９】
セレクタ２２０−１〜２２０−３は、それぞれ、サブモジュール２１０−１〜２１０−３の出力に接続されている。セレクタ２２０−１〜２２０−３のそれぞれの動作は、セレクト信号ｓｅｌ１〜ｓｅｌ３によって制御される。
【００２０】
判定回路２３０は、条件分岐「ｉ２＞ｒ１」の判定を行い、判定結果を示す条件信号ＣＮＤを生成する。「ｉ２＞ｒ１」が真の場合、すなわち、上記条件「Ａ」の場合、条件信号ＣＮＤは“１”である。一方、「ｉ２＞ｒ１」が偽の場合、すなわち、上記条件「Ｂ」の場合、条件信号ＣＮＤは“０”である。
【００２１】
制御信号生成回路２４０は、コントローラ１００から出力される状態信号ＳＴ０１〜ＳＴ０３及び判定回路２３０から出力される条件信号ＣＮＤを受け取る。そして、制御信号生成回路２４０は、それら状態信号ＳＴ０１〜ＳＴ０３及び条件信号ＣＮＤに基づいて、各種制御信号（セレクト信号ｓｅｌ１〜ｓｅｌ３等）を生成する。
【００２２】
図４で示されるデータパス２００の場合、入力データｉ１が遷移すると、その入力データｉ１の遷移は常に全てのサブモジュール２１０−１〜２１０−３に伝播する。しかしながら、上述の通り、図３で示された状態／条件以外の場合には、各サブモジュール２１０は入力データｉ１を必要としない。入力データｉ１の遷移が、必要の無いときにサブモジュール２１０に伝播すると、電力が無駄に消費されてしまう。
【００２３】
本実施の形態によれば、次に説明されるように、動作合成の段階でデータパス２００にゲーティング回路が挿入される。それにより、入力データｉ１の遷移の不要な伝播が抑制され、無駄な消費電力が削減される。
【００２４】
２．ゲーティング回路の挿入
本実施の形態によれば、データパス２００中の入力端子ＩＮとサブモジュール２１０との間に、ゲーティング回路２５０が挿入される。ゲーティング回路２５０は、図３で示された「状態／条件」が満たされるときだけ、入力端子ＩＮに入力される入力データｉ１をサブモジュール２１０に伝達する。図５は、ゲーティング回路２５０が挿入されたデータパスグラフを示している。
【００２５】
ゲーティング回路２５０−１は、入力端子ＩＮとサブモジュール２１０−１との間に挿入されている。つまり、ゲーティング回路２５０−１の入力は入力端子ＩＮに接続され、その出力はサブモジュール２１０−１に接続されている。サブモジュール２１０−１が入力データｉ１を必要としないとき、ゲーティング回路２５０−１は、入力端子ＩＮからサブモジュール２１０−１への入力データｉ１の伝達を遮断する。サブモジュール２１０−１が入力データｉ１を必要とするときだけ、ゲーティング回路２５０−１は、入力端子ＩＮからサブモジュール２１０−１へ入力データｉ１を伝達する。より詳細には、ゲーティング回路２５０−１には、図６中の式で示されるイネーブル信号ｅｎ１も入力される。イネーブル信号ｅｎ１は、状態信号ＳＴ０１に基づいて、制御信号生成回路２４０によって生成される。［状態１：ＳＴ０１］のとき、すなわち、サブモジュール２１０−１（関数ｆ１）が入力データｉ１を必要とするときだけ、イネーブル信号ｅｎ１は活性化され（ｅｎ１＝“１”）、それ以外の場合、イネーブル信号ｅｎ１は非活性化される（ｅｎ１＝“０”）。イネーブル信号ｅｎ１が活性化されると（ｅｎ１＝“１”）、ゲーティング回路２５０−１は、入力端子ＩＮからサブモジュール２１０−１へ入力データｉ１を伝達する。一方、イネーブル信号ｅｎ１が非活性化されると（ｅｎ１＝“０”）、ゲーティング回路２５０−１は、入力端子ＩＮからサブモジュール２１０−１への入力データｉ１の伝達を遮断する。
【００２６】
ゲーティング回路２５０−２は、入力端子ＩＮとサブモジュール２１０−２との間に挿入されている。つまり、ゲーティング回路２５０−２の入力は入力端子ＩＮに接続され、その出力はサブモジュール２１０−２に接続されている。サブモジュール２１０−２が入力データｉ１を必要としないとき、ゲーティング回路２５０−２は、入力端子ＩＮからサブモジュール２１０−２への入力データｉ１の伝達を遮断する。サブモジュール２１０−２が入力データｉ１を必要とするときだけ、ゲーティング回路２５０−２は、入力端子ＩＮからサブモジュール２１０−２へ入力データｉ１を伝達する。より詳細には、ゲーティング回路２５０−２には、図６中の式で示されるイネーブル信号ｅｎ２も入力される。イネーブル信号ｅｎ２は、状態信号ＳＴ０２及び条件信号ＣＮＤに基づいて、制御信号生成回路２４０によって生成される。［状態２：ＳＴ０２］且つ［条件Ａ：ＣＮＤ＝１］のとき、すなわち、サブモジュール２１０−２（関数ｆ２）が入力データｉ１を必要とするときだけ、イネーブル信号ｅｎ２は活性化され（ｅｎ２＝“１”）、それ以外の場合、イネーブル信号ｅｎ２は非活性化される（ｅｎ２＝“０”）。イネーブル信号ｅｎ２が活性化されると（ｅｎ２＝“１”）、ゲーティング回路２５０−２は、入力端子ＩＮからサブモジュール２１０−２へ入力データｉ１を伝達する。一方、イネーブル信号ｅｎ２が非活性化されると（ｅｎ２＝“０”）、ゲーティング回路２５０−２は、入力端子ＩＮからサブモジュール２１０−２への入力データｉ１の伝達を遮断する。
【００２７】
ゲーティング回路２５０−３は、入力端子ＩＮとサブモジュール２１０−３との間に挿入されている。つまり、ゲーティング回路２５０−３の入力は入力端子ＩＮに接続され、その出力はサブモジュール２１０−３に接続されている。サブモジュール２１０−３が入力データｉ１を必要としないとき、ゲーティング回路２５０−３は、入力端子ＩＮからサブモジュール２１０−３への入力データｉ１の伝達を遮断する。サブモジュール２１０−３が入力データｉ１を必要とするときだけ、ゲーティング回路２５０−３は、入力端子ＩＮからサブモジュール２１０−３へ入力データｉ１を伝達する。より詳細には、ゲーティング回路２５０−３には、図６中の式で示されるイネーブル信号ｅｎ３も入力される。イネーブル信号ｅｎ３は、状態信号ＳＴ０２及び条件信号ＣＮＤに基づいて、制御信号生成回路２４０によって生成される。［状態２：ＳＴ０２］且つ［条件Ｂ：ＣＮＤ＝０］のとき、すなわち、サブモジュール２１０−３（関数ｆ３）が入力データｉ１を必要とするときだけ、イネーブル信号ｅｎ３は活性化され（ｅｎ３＝“１”）、それ以外の場合、イネーブル信号ｅｎ３は非活性化される（ｅｎ３＝“０”）。イネーブル信号ｅｎ３が活性化されると（ｅｎ３＝“１”）、ゲーティング回路２５０−３は、入力端子ＩＮからサブモジュール２１０−３へ入力データｉ１を伝達する。一方、イネーブル信号ｅｎ３が非活性化されると（ｅｎ３＝“０”）、ゲーティング回路２５０−３は、入力端子ＩＮからサブモジュール２１０−３への入力データｉ１の伝達を遮断する。
【００２８】
このように、ゲーティング回路２５０を挿入することにより、入力データｉ１の遷移が不必要にサブモジュール２１０へ伝播することを防止することができる。その結果、設計される回路の消費電力が削減される。
【００２９】
３．ゲーティング回路の種類
ゲーティング回路２５０の種類は、おおまかに２つに区分される。１つ目は「ラッチ型（ＬＡＴＣＨ）」であり、２つ目は「アンド型（ＡＮＤ）」である。
【００３０】
ラッチ型のゲーティング回路２５０は、イネーブル信号ｅｎが活性化されているときには、入力端子ＩＮに入力される入力データｉ１をサブモジュール２１０に対して出力する。この場合、入力データｉ１が遷移すると、その入力データｉ１の遷移はサブモジュール２１０に伝播する。一方、イネーブル信号ｅｎが非活性化されると、ラッチ型のゲーティング回路２５０は、その時点での入力データｉ１をラッチし、ラッチしたデータを出力する。つまり、サブモジュール２１０への出力は、イネーブル信号ｅｎが非活性化された時点の値のまま維持され続ける。この場合、入力端子ＩＮに入力される入力データｉ１が遷移しても、その入力データｉ１の遷移はサブモジュール２１０には伝播しない。ラッチ型のゲーティング回路２５０としてはラッチ回路が挙げられるが、それに限られない。
【００３１】
アンド型のゲーティング回路２５０は、イネーブル信号ｅｎが活性化されているときには、入力端子ＩＮに入力される入力データｉ１をサブモジュール２１０に対して出力する。この場合、入力データｉ１が遷移すると、その入力データｉ１の遷移はサブモジュール２１０に伝播する。一方、イネーブル信号ｅｎが非活性化されると、アンド型のゲーティング回路２５０は、サブモジュール２１０への出力を所定の値に固定する。例えば、ゲーティング回路２５０がＡＮＤゲートである場合、イネーブル信号ｅｎが非活性化されると（ｅｎ＝０）、出力は“０”に固定される。この場合、入力端子ＩＮに入力される入力データｉ１が遷移しても、その入力データｉ１の遷移はサブモジュール２１０には伝播しない。アンド型のゲーティング回路２５０としてはＡＮＤゲートが挙げられるが、それに限られない。イネーブル信号ｅｎの非活性化に応答して出力が所定値に固定される論理回路であれば何でもよい。
【００３２】
以下、ラッチ型とアンド型のそれぞれの場合のゲーティングの効果を検証する。例として、図７に示されるような入力データ（入力変数）ｉ１の変遷を考える。図７に示されるように、２０個の入力データｉ１が順番に入力端子ＩＮに入力されるとする。
【００３３】
図８及び図９は、入力データｉ１の遷移の各サブモジュール２１０への伝播を示している。図８は、ゲーティングが行われない場合（図４参照）を示しており、図９は、ゲーティングが行われる場合（図５参照）を示している。図８及び図９には、入力データｉ１、状態信号ＳＴ、サブモジュール２１０−１（ｆ１）への伝播、サブモジュール２１０−２（ｆ２）への伝播、及びサブモジュール２１０−３（ｆ３）への伝播が示されている。図中の“＊印”は、入力データｉ１の遷移が該当サブモジュール２１０へ伝播することを表している。
【００３４】
図８に示されるように、ゲーティングが行われない場合、入力データｉ１の遷移は常に全てのサブモジュール２１０−１〜２１０−３に伝播する。一方、本実施の形態のようにゲーティングが行われる場合、各サブモジュール２１０が入力データｉ１を必要とするときだけ、入力データｉ１の遷移が当該サブモジュール２１０に伝播する。言い換えれば、各関数（ｆ１〜ｆ３）が呼び出され入力データｉ１を参照するときにだけ、入力データｉ１の遷移が対応するサブモジュール２１０に伝播する。各関数（ｆ１〜ｆ３）が呼び出される回数（以下、「コール回数」と参照される）は、対応するサブモジュール２１０が入力データｉ１を用いて演算を行う回数と同じである。図９の例では、関数ｆ１、ｆ２、ｆ３のコール回数は、それぞれ１０回、２回、８回となっている。
【００３５】
図１０は、サブモジュール２１０−１（ｆ１）に入力されるデータとゲーティング回路２５０−１の種類との関係を示している。上述の通り、サブモジュール２１０−１に対応する関数ｆ１のコール回数は１０回である。図１０に示されるように、ゲーティングが行われない場合、サブモジュール２１０−１に入力されるデータは１９回遷移（変化）する。ゲーティング回路２５０−１としてラッチ回路が挿入される場合、サブモジュール２１０−１に入力されるデータは９回だけ遷移する。ゲーティング回路２５０−１としてＡＮＤゲートが挿入される場合、サブモジュール２１０−１に入力されるデータは１６回遷移する。
【００３６】
このように、ゲーティングの効果は、アンド型よりもラッチ型の方が大きい。特に、コール回数が比較的多い関数ｆ１に対応するサブモジュール２１０−１の場合、ラッチ型による効果が顕著となる。ラッチ型のゲーティング回路２５０−１を挿入することによって、入力データｉ１の遷移の伝播を抑えるだけでなく、サブモジュール２１０−１に入力されるデータの遷移回数をも大幅に低減することが可能となる。その結果、サブモジュール２１０−１における消費電力が大幅に削減される。
【００３７】
図１１は、サブモジュール２１０−２（ｆ２）に入力されるデータとゲーティング回路２５０−２の種類との関係を示している。上述の通り、サブモジュール２１０−２に対応する関数ｆ２のコール回数は２回である。図１１に示されるように、ゲーティングが行われない場合、サブモジュール２１０−２に入力されるデータは１９回遷移（変化）する。ゲーティング回路２５０−２としてラッチ回路が挿入される場合、サブモジュール２１０−２に入力されるデータは２回だけ遷移する。ゲーティング回路２５０−２としてＡＮＤゲートが挿入される場合、サブモジュール２１０−２に入力されるデータは４回だけ遷移する。
【００３８】
このように、コール回数が少ない関数ｆ２に対応するサブモジュール２１０−２の場合、ラッチ型であってもアンド型であっても顕著な効果が得られる。ラッチ型あるいはアンド型のゲーティング回路２５０−２を挿入することによって、入力データｉ１の遷移の伝播を抑えるだけでなく、サブモジュール２１０−２に入力されるデータの遷移回数をも大幅に低減することが可能となる。
【００３９】
回路面積の観点から言えば、アンド型の方がラッチ型よりも小さく、好適である。つまり、アンド型は、ゲーティングの効果が比較的小さい代わりに、回路面積が小さいという特徴を有している。図１１で示されたように、コール回数が少ない場合は、アンド型のゲーティング回路２５０が用いられても、十分なゲーティング効果が得られる。すなわち、コール回数が少ない場合は、アンド型を用いることによって、消費電力の削減と回路面積増大の抑制を両立することが可能となる。
【００４０】
以上の議論から、関数のコール回数に応じてゲーティング回路２５０の種類を決定することが好適である。コール回数が多い場合は、ラッチ型がゲーティング回路２５０として選択されると好ましい。一方、コール回数が少ない場合は、アンド型がゲーティング回路２５０として選択されると好ましい。例えば、各関数（ｆ１、ｆ２、ｆ３）のコール回数（１０回、２回、８回）が、所定の閾値（例：５回）と比較される。コール回数が所定の閾値以上である場合、ラッチ型がゲーティング回路２５０として選択される。一方、コール回数が所定の閾値未満の場合、アンド型がゲーティング回路２５０として選択される。
【００４１】
尚、入力データｉ１の変遷に対する各関数のコール回数は、「動作記述シミュレーション」を通して予め算出可能である。動作記述シミュレーションは、周知の動作記述シミュレータにより実施される。動作記述シミュレータへの入力は、図１で示された動作記述と図７で示された入力データ（入力変数）ｉ１の変遷である。動作記述シミュレーションの結果、入力データｉ１の変遷に応答した各関数（ｆ１、ｆ２、ｆ３）のコール回数が算出される。図１２は、算出されたコール回数を示すコール回数情報を示している。本例では、上述の通り、関数ｆ１、ｆ２、ｆ３のコール回数はそれぞれ１０回、２回、８回である。動作合成処理においては、このコール回数情報を参照することによって、ゲーティング回路２５０の種類が決定されるとよい。
【００４２】
４．動作合成システム
図１３は、本実施の形態に係る動作合成システム１の構成を示すブロック図である。動作合成システム１は、本実施の形態に係る「動作合成処理」を行うコンピュータシステムである。動作合成システム１は、処理装置２、記憶装置３、入力装置４、及び出力装置５を備えている。記憶装置３としては、ＨＤＤやＲＡＭが例示される。入力装置４としては、キーボードやマウスが例示される。出力装置５としてはディスプレイが例示される。
【００４３】
記憶装置３には、動作記述ファイルＢＨＶ、データフローグラフデータＤＦＧ、データパスグラフデータＤＰＧ、入力遷移情報ＩＴＲ、コール回数情報ＣＡＬ、ＲＴＬ記述ファイルＲＴＬが格納される。動作記述ファイルＢＨＶは、図１で示された動作記述を示す。データフローグラフデータＤＦＧは、図２で示されたＣＤＦＧを示す。データパスグラフデータＤＰＧは、図４及び図５で示されたデータパスグラフを示す。入力遷移情報ＩＴＲは、図７で示された入力データ（入力変数）ｉ１の変遷を示す。コール回数情報ＣＡＬは、図１２で示されたものであり、動作記述シミュレーションにより得られる。ＲＴＬ記述ファイルＲＴＬは、動作合成処理の結果得られるＲＴＬ記述を示す。
【００４４】
記憶装置３には、更に、動作記述シミュレーションツールＰＲＯＧ＿ＳＩＭが格納される。動作記述シミュレーションツールＰＲＯＧ＿ＳＩＭは、処理装置２によって実行される周知のコンピュータプログラムである。動作記述シミュレーションツールＰＲＯＧ＿ＳＩＭは、動作記述ファイルＢＨＶ及び入力遷移情報ＩＴＲを用いて動作記述シミュレーションを行い、コール回数情報ＣＡＬ（図１２参照）を予め作成する。
【００４５】
記憶装置３には、更に、動作合成ツール（動作合成プログラム）ＰＲＯＧ＿ＳＹＮが格納される。動作合成ツールＰＲＯＧ＿ＳＹＮは、処理装置２によって実行されるコンピュータプログラムである。動作合成ツールＰＲＯＧ＿ＳＹＮは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。処理装置２が動作合成ツールＰＲＯＧ＿ＳＹＮを実行することにより、本実施の形態に係る動作合成処理が実現される。より詳細には、処理装置２が動作合成ツールＰＲＯＧ＿ＳＹＮを実行することにより、図１３に示されるように、動作記述入力部１０、動作合成部２０、ゲーティング回路挿入部３０、及びＲＴＬ記述出力部４０が実現される。
【００４６】
図１４は、本実施の形態に係る動作合成システム１の機能ブロックを示している。図１４に示されるように、動作合成システム１は、動作記述入力部１０、動作合成部２０、ゲーティング回路挿入部３０、及びＲＴＬ記述出力部４０を備えている。図１５は、本実施の形態に係る動作合成処理を示すフローチャートである。図１４及び図１５を参照して、本実施の形態に係る動作合成システム１による動作合成処理を説明する。
【００４７】
ステップＳ１０：
まず、動作記述入力部１０は、記憶装置３から動作記述ファイルＢＨＶを読み出す。動作記述ファイルＢＨＶは、動作合成部２０に入力される。
【００４８】
ステップＳ２０：
動作合成部２０は、動作記述ファイルＢＨＶによって与えられる動作記述（図１参照）に対し、通常の手法に従って動作合成（ＣＤＦＧの作成、スケジューリング、アロケーション等）を行う。このとき、演算器の総数、クロック周波数、サイクル数等は制約条件として与えられる。動作合成の結果、動作記述に応じたＣＤＦＧ（図２参照）や、動作記述に応じたデータパスグラフ（図４参照）が生成される。データフローグラフデータＤＦＧやデータパスグラフデータＤＰＧは、記憶装置３に格納される。
【００４９】
ステップＳ３０：
ゲーティング回路挿入部３０は、データフローグラフデータＤＦＧで示されるＣＤＦＧに基づいて、入力変数ｉ１が各関数によって参照される状態／条件（図３参照）を把握する。更に、ゲーティング回路挿入部３０は、図３で示された状態／条件以外の場合には入力データｉ１の伝達が遮断されるように、ゲーティング回路２５０を挿入する。より詳細には、ゲーティング回路２５０は、図４で示されたデータパスグラフ中の入力端子ＩＮとサブモジュール（演算器）２１０との間に、ゲーティング回路２５０を挿入する。その結果、図５で示されたデータパスグラフが得られる。ここで、ゲーティング回路挿入部３０は、ゲーティング回路２５０−１〜２５０−３のそれぞれに対するイネーブル信号ｅｎ１〜ｅｎ３を、図６で示されるように設定する。
【００５０】
また、好適には、挿入されるゲーティング回路２５０の種類は、各関数のコール回数に応じて決定される。そのために、ゲーティング回路挿入部３０は、記憶装置３からコール回数情報ＣＡＬ（図１２参照）を読み出す。そして、ゲーティング回路挿入部３０は、コール回数情報ＣＡＬで示される各関数のコール回数を所定の閾値と比較する。コール回数が所定の閾値以上である場合、ゲーティング回路挿入部３０は、ラッチ型回路をゲーティング回路２５０として選択する。一方、コール回数が所定の閾値未満の場合、ゲーティング回路挿入部３０は、アンド型回路をゲーティング回路２５０として選択する。これにより、消費電力の削減と回路面積増大の抑制を両立することが可能となる。
【００５１】
このように、ゲーティング回路挿入部３０は、データパスグラフにゲーティング回路２５０を挿入し、データパスグラフを更新する。更新後のデータパスグラフを示すデータパスグラフデータＤＰＧは、記憶装置３に格納される。
【００５２】
尚、値が変化しない入力変数に関しては、ゲーティングを行う必要はない。ユーザは、値が変化しない入力変数を予め指定しておいてもよい。ある入力変数の遷移確率が０％である場合、動作合成システム１は、当該入力変数に関してはゲーティングを行わない。
【００５３】
ステップＳ４０：
ＲＴＬ記述出力部４０は、記憶装置３から更新後のデータパスグラフデータＤＰＧを読み出す。ＲＴＬ記述出力部４０は、図５で示されたデータパスグラフに応じたＲＴＬ記述を作成する。そして、ＲＴＬ記述出力部４０は、作成されたＲＴＬ記述を示すＲＴＬ記述ファイルＲＴＬを記憶装置３に格納する。
【００５４】
その後、ＲＴＬ記述に基づいて論理合成が行われ、ゲートレベルのネットリストが作成される。更に、そのネットリストに基づいてレイアウト設計が行われる。そして、レイアウトデータに基づいて設計回路が製造される。製造された回路では、消費電力が削減されている。
【００５５】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【符号の説明】
【００５６】
１    動作合成システム
２    処理装置
３    記憶装置
４    入力装置
５    出力装置
１０    動作記述入力部
２０    動作合成部
３０    ゲーティング回路挿入部
４０    ＲＴＬ記述出力部
１００    コントローラ
２００    データパス
２１０    サブモジュール（演算器）
２２０    セレクタ
２３０    判定回路
２４０    制御信号生成回路
２５０    ゲーティング回路
ＩＮ    入力端子
ｉ１    入力変数
ＳＴ    状態信号
ｅｎ    イネーブル信号
ＢＨＶ    動作記述ファイル
ＤＦＧ    データフローグラフデータ
ＤＰＧ    データパスグラフデータ
ＩＴＲ    入力遷移情報
ＣＡＬ    コール回数情報
ＲＴＬ    ＲＴＬ記述ファイル
ＰＲＯＧ＿ＳＩＭ    動作記述シミュレーションツール
ＰＲＯＧ＿ＳＹＮ    動作合成ツール
【図１】
2010205084.tif 000003
【図２】
2010205084.tif 000004
【図３】
2010205084.tif 000005
【図４】
2010205084.tif 000006
【図５】
2010205084.tif 000007
【図６】
2010205084.tif 000008
【図７】
2010205084.tif 000009
【図８】
2010205084.tif 000010
【図９】
2010205084.tif 000011
【図１０】
2010205084.tif 000012
【図１１】
2010205084.tif 000013
【図１２】
2010205084.tif 000014
【図１３】
2010205084.tif 000015
【図１４】
2010205084.tif 000016
【図１５】
2010205084.tif 000017