(57)【要約】【課題】回路を設計するに当たり、回路にクロックゲーティングを施す際の設計者の負担を軽減することを目的とし、自動的にクロックゲーティングされた回路図情報を生成する装置を提供する。【課題を解決するための手段】機能の構成を定義した機能構成情報と、前記機能を実行するための実行シーケンスを定義した実行シーケンス情報とを受けつける受付手段と、前記機能構成情報と、実行シーケンス情報とを基に、複数の回路の相互関係を定義した情報である回路構成情報を生成する構成情報生成手段と、前記機能構成情報と、前記実行シーケンス情報を基に、前記複数の回路のうち、回路が動作せずクロック入力が必要でないタイミングでは当該回路にはクロック入力を停止させたゲーティッドクロックを供給するゲーティッドクロック情報を生成するゲーティッドクロック情報生成手段と、前記回路構成情報と、前記ゲーティッドクロック情報とを出力する出力手段とを備える。【選択図】図１
2006155533.tif 000002
【特許請求の範囲】
【請求項１】
機能の構成を定義した機能構成情報と、前記機能を実行するための実行シーケンスを定義した実行シーケンス情報とを外部から取得する取得手段と、
前記機能構成情報と、前記実行シーケンス情報とを基に、前記機能を前記実行シーケンスに従って実行する複数の回路をレジスタトランスファレベルで定義した情報である回路構成情報を生成する構成情報生成手段と、
前記機能構成情報と、前記実行シーケンス情報を基に、前記複数の回路のうち一以上の各回路に対して、クロック入力が必要でないタイミングではクロック入力を停止させたゲーティッドクロックを供給するクロック制御回路をレジスタトランスファレベルで定義したゲーティッドクロック情報を生成するゲーティッドクロック情報生成手段と、
前記回路構成情報と、前記ゲーティッドクロック情報とをあわせて出力する出力手段とを備える
ことを特徴とする回路情報生成装置。
【請求項２】
前記実行シーケンスは１以上の命令を含む複数のステートに分けられ、前記ステートの遷移によって前記実行シーケンスを表し、
前記構成情報生成手段は、
前記ステートを管理しており前記実行シーケンス中においてどのステートであるのかを示した信号である状態信号を出力するステートマシンを、定義するステートマシン情報を生成するステートマシン情報生成部と、
前記状態信号を受けてステートの内容を実行する演算処理回路を、定義する演算処理回路情報を生成する演算処理回路情報生成部とを備え、
前記ゲーティッドクロック情報生成手段は、
前記ステートごとに前記複数の回路それぞれに対してクロック入力を供給するか否かを示したクロック信号制御表を保持しており前記状態信号を受けて当該状態信号に適したクロック制御信号を生成する制御信号生成回路を、定義する制御信号生成回路情報を生成する制御信号生成回路情報生成部と、
前記クロック制御信号に基づいて回路が動作しないタイミングではクロック入力の変化を停止させたゲーティッドクロックを生成して前記演算処理回路に供給するクロックゲーティング回路を、定義するクロックゲーティング回路情報を生成するクロックゲーティング回路情報生成部とを備え、
前記構成情報生成手段は、前記ステートマシン情報と前記演算処理回路情報とを含んで前記回路構成情報を生成し、
前記ゲーティッドクロック情報生成手段は、前記制御信号生成回路情報と前記クロックゲーティング回路情報とを含んで前記ゲーティッドクロック情報を生成する
ことを特徴とする請求項１記載の回路情報生成装置。
【請求項３】
前記ゲーティッドクロック情報生成手段は更に、
前記クロック制御信号を受けて当該クロック制御信号の遅延を補正して補正された調整クロック制御信号を前記クロックゲーティング回路に出力する制御信号調整回路を、定義する制御信号調整回路情報を生成する制御信号調整回路情報生成部を備え、
前記制御信号調整情報を含んで前記ゲーティッドクロック情報を生成する
ことを特徴とする請求項２記載の回路情報生成装置。
【請求項４】
前記制御信号生成回路は、前記演算処理回路を構成する各回路に対してゲーティッドクロックが供給されることによる低消費電力化の効果を示し、優先的に合成していくゲーティッドクロックを検索するための優先順位値表を保持し、当該先順位値表から前記演算処理回路を構成する回路に供給されるゲーティッドクロックのうち、クロックゲーティングによる低消費電力化の効果の低い二つの回路に供給するゲーティッドクロックを検出し、
前記ゲーティッドクロック情報生成手段は、前記二つの回路にゲーティッドクロックを供給するクロック制御回路に関しては、検出された前記二つの回路に供給するゲーティッドクロックを合成し、合成されたゲーティッドクロックを供給するクロック制御回路をレジスタトランスファレベルで定義した情報を前記ゲーティッドクロック情報として生成する
ことを特徴とする請求項２記載の回路情報生成装置。
【請求項５】
前記取得手段は、Ｃ言語で記述されたプログラムを取得し、
当該Ｃ言語プログラムは、前記機能構成情報と、前記実行シーケンス情報を含む
ことを特徴とする請求項１記載の回路図情報生成装置。
【請求項６】
クロックゲーティング回路を付加された回路情報を生成する回路情報生成方法であって、
機能の構成を定義した機能構成情報と、前記機能を実行するための実行シーケンスを定義した実行シーケンス情報とを外部から取得する取得ステップと、
前記機能構成情報と、前記実行シーケンス情報とを基に、前記機能を前記実行シーケンスに従って実行する複数の回路をレジスタトランスファレベルで定義した情報である回路構成情報を生成する構成情報生成ステップと、
前記機能構成情報と、前記実行シーケンス情報を基に、前記複数の回路のうち一以上の各回路に対して、回路が動作せずクロック入力が必要でないタイミングではクロック入力を停止させたゲーティッドクロックを供給するクロック制御回路をレジスタトランスファレベルで定義したゲーティッドクロック情報を生成するゲーティッドクロック情報生成ステップと、
前記回路構成情報と、前記ゲーティッドクロック情報とをあわせて出力する出力ステップとを備える
ことを特徴とする回路情報生成方法。
【請求項７】
前記実行シーケンスは１以上の命令を含む複数のステートに分けられ、前記ステートの遷移によって前記実行シーケンスを表し、
前記構成情報生成ステップは、
前記ステートを管理しており前記実行シーケンス中においてどのステートであるのかを示した信号である状態信号を出力するステートマシンを、定義するステートマシン情報を生成するステートマシン情報生成ステップと、
前記状態信号を受けてステートの内容を実行する演算処理回路を、定義する演算処理回路情報を生成する演算処理回路情報生成ステップとを備え、
前記ゲーティッドクロック情報生成ステップは、
前記ステートごとに前記複数の回路それぞれに対してクロック入力を供給するか否かを示したクロック信号制御表を保持しており前記状態信号を受けて当該状態信号に適したクロック制御信号を生成する制御信号生成回路を、定義する制御信号生成回路情報を生成する制御信号生成回路情報生成ステップと、
前記クロック制御信号に基づいて回路が動作しないタイミングではクロック入力を停止させたゲーティッドクロックを生成して前記演算処理回路に供給するクロックゲーティング回路を、定義するクロックゲーティング回路情報を生成するクロックゲーティング回路情報生成ステップとを備え、
前記構成情報生成ステップでは、前記ステートマシン情報と前記演算処理回路情報とを含んで前記回路構成情報を生成し、
前記ゲーティッドクロック情報生成ステップでは、前記制御信号生成回路情報と前記クロックゲーティング回路情報とを含んで前記ゲーティッドクロック情報を生成する
ことを特徴とする請求項６記載の回路情報生成方法。
【請求項８】
前記ゲーティッドクロック情報生成ステップは更に、
前記クロック制御信号を受けて当該クロック制御信号の遅延を補正して補正された調整クロック制御信号を前記クロックゲーティング回路に出力する制御信号調整回路を、定義する制御信号調整回路情報を生成する制御信号調整回路情報生成ステップを備え、
前記制御信号調整情報を含んで前記ゲーティッドクロック情報を生成する
ことを特徴とする請求項７記載の回路情報生成方法。
【請求項９】
複数の回路に互いに異なるゲーティッドクロックが供給されている回路におけるゲーティッドクロックの合成方法であって、
複数の回路によって構成されており演算を実行する演算処理回路を構成する各回路に対してゲーティッドクロックが供給されることによる低消費電力化の効果を示していて優先的に合成していくゲーティッドクロックを検出するための優先順位値表を保持する保持ステップと、
前記優先順位値表に基づき、前記演算処理回路を構成する回路に供給されるゲーティッドクロックのうち、クロックゲーティングによる低消費電力化の効果の低い二つの回路に供給されるゲーティッドクロックを検出する検出ステップと、
前記検出ステップにおいて検出された二つのゲーティッドクロックを合成する合成ステップと、
前記合成ステップにおいて合成されたゲーティッドクロックを新たなゲーティッドクロックとして前記二つの回路に供給する供給ステップとを備える
ことを特徴とするゲーティッドクロック合成方法。
【請求項１０】
クロックゲーティング回路を付加された回路情報を生成する回路情報生成プログラムであって、
機能の構成を定義した機能構成情報と、前記機能を実行するための実行シーケンスを定義した実行シーケンス情報とを外部から取得する取得ステップと、
前記機能構成情報と、前記実行シーケンス情報とを基に、前記機能を前記実行シーケンスに従って実行する複数の回路をレジスタトランスファレベルで定義した情報である回路構成情報を生成する構成情報生成ステップと、
前記機能構成情報と、前記実行シーケンス情報を基に、前記複数の回路のうち一以上の各回路に対して、回路が動作せずクロック入力が必要でないタイミングではクロック入力を停止させたクロックを供給するクロック制御回路をレジスタトランスファレベルで定義したゲーティッドクロック情報を生成するゲーティッドクロック情報生成ステップと、
前記回路構成情報と、前記ゲーティッドクロック情報とをあわせて出力する出力ステップとを備える
ことを特徴とする回路情報生成プログラム。
【請求項１１】
前記実行シーケンスは１以上の命令を含む複数のステートに分けられ、前記ステートの遷移によって前記実行シーケンスを表し、
前記構成情報生成ステップは、
前記ステートを管理しており前記実行シーケンス中においてどのステートであるのかを示した信号である状態信号を出力するステートマシンを、定義するステートマシン情報を生成するステートマシン情報生成ステップと、
前記状態信号を受けてステートの内容を実行する演算処理回路を、定義する演算処理回路情報を生成する演算処理回路情報生成ステップとを備え、
前記ゲーティッドクロック情報生成ステップは、
前記ステートごとに前記複数の回路それぞれに対してクロック入力を供給するか否かを示したクロック信号制御表を保持しており前記状態信号を受けて当該状態信号に適したクロック制御信号を生成する制御信号生成回路を、定義する制御信号生成回路情報を生成する制御信号生成回路情報生成ステップと、
前記クロック制御信号に基づいて回路が動作しないタイミングではクロック入力を停止させたゲーティッドクロックを生成して前記演算処理回路に供給するクロックゲーティング回路を、定義するクロックゲーティング回路情報を生成するクロックゲーティング回路情報生成ステップとを備え、
前記構成情報生成ステップでは、前記ステートマシン情報と前記演算処理回路情報とを含んで前記回路構成情報を生成し、
前記ゲーティッドクロック情報生成ステップでは、前記制御信号生成回路情報と前記クロックゲーティング回路情報とを含んで前記ゲーティッドクロック情報を生成する
ことを特徴とする請求項１０記載の回路情報生成プログラム。
【請求項１２】
前記ゲーティッドクロック情報生成ステップは更に、
前記クロック制御信号を受けて当該クロック制御信号の遅延を補正して補正された調整クロック制御信号を前記クロックゲーティング回路に出力する制御信号調整回路を、定義する制御信号調整回路情報を生成する制御信号調整回路情報生成ステップを備え、
前記制御信号調整情報を含んで前記ゲーティッドクロック情報を生成する
ことを特徴とする請求項１１記載の回路情報生成プログラム。
【請求項１３】
複数の回路に互いに異なるゲーティッドクロックが供給されている回路におけるゲーティッドクロックの合成プログラムであって、
複数の回路によって構成されており演算を実行する演算処理回路を構成する各回路に対してゲーティッドクロックが供給されることによる低消費電力化の効果を示していて優先的に合成していくゲーティッドクロックを検出するための優先順位値表を保持する保持ステップと、
前記優先順位値表に基づき、前記演算処理回路を構成する回路に供給されるゲーティッドクロックのうち、クロックゲーティングによる低消費電力化の効果の低い二つの回路に供給されるゲーティッドクロックを検出する検出ステップと、
前記検出ステップにおいて検出された二つのゲーティッドクロックを合成する合成ステップと、
前記合成ステップにおいて合成されたゲーティッドクロックを新たなゲーティッドクロックとして前記二つの回路に供給する供給ステップとを備える
ことを特徴とするゲーティッドクロック合成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は高級言語を用いた回路記述から論理回路を製作する技術に係り、特にクロックゲーティングされた回路記述を生成する装置及びその方法に関する。
【背景技術】
【０００２】
ＬＳＩ（Large Scale Integration）の構成は年々複雑化しており、それに伴いその設計工数も増大している。設計工数の増大はＬＳＩ設計の時間の増大を意味するが、この時間の短縮を促すべく設計の高効率化を推進する必要がある。そのための技術に高位合成というものがあり、Ｃ言語などのソフトウェア記述向けの言語で記述された処理を、既存のＲＴＬ（Resister Transfer Level）で記述された回路情報に変換する技術を言う。回路を高位言語で記述することで記述量の削減、検証速度の高速化などを実現できる。なお、ＲＴＬでの記述とは、回路をＦＦ（Flip Flop）と組み合わせ論理回路で表現したレベルのことを言う。
【０００３】
ところで、ＬＳＩの設計において、バッテリの長時間稼動、発熱の抑制、パッケージコストの削減などの目的から、低消費電力化は非常に重要な課題となる。
この低消費電力化の方法の一つにクロックゲーティングという設計方法がある。クロックゲーティングとは、回路への入力変化に対して制御信号を付加し、不要な入力変化に対しては制御信号により当該入力変化を無効化することで、不要な出力変化を抑制する技術である。回路においては、入力変化に伴う出力変化の出力によって電力が多く消費されるのでその入力変化がない場合にクロックを停止させておくことは低消費電力化につながる。従来からあるクロックゲーティング方法に関しては特許文献１に記されるものがある。
【特許文献１】特開２００２−３６６５９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、従来におけるクロックゲーティングでは、どの回路にどうクロックゲーティングを施すかは、回路の設計者が、より効率の良い低消費電力化が望める部分を推測し、最初からクロックゲーティングが施された回路を記述することで行われてきた。しかし、そのような手法をとっている場合、その手間は煩雑なものがあり、回路設計の時間がかかるという問題がある。
【０００５】
そこで本発明においては、ＬＳＩ回路を含む回路にクロックゲーティングを施す際の設計者の負担を軽減すべく、高級言語で記述された回路を高位合成してＲＴＬでの記述に変換するときに自動的にクロックゲーティングが施されている回路記述を生成する装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために本発明に係る回路情報生成装置は、機能の構成を定義した機能構成情報と、前記機能を実行するための実行シーケンスを定義した実行シーケンス情報とを外部から取得する取得手段と、前記機能構成情報と、前記実行シーケンス情報とを基に、前記機能を前記実行シーケンスに従って実行する複数の回路をレジスタトランスファレベルで定義した情報である回路構成情報を生成する構成情報生成手段と、前記機能構成情報と、前記実行シーケンス情報を基に、前記複数の回路のうち一以上の各回路に対して、クロック入力が必要でないタイミングではクロック入力を停止させたゲーティッドクロックを供給するクロック制御回路をレジスタトランスファレベルで定義したゲーティッドクロック情報を生成するゲーティッドクロック情報生成手段と、前記回路構成情報と、前記ゲーティッドクロック情報とをあわせて出力する出力手段とを備えることを特徴とする。
【発明の効果】
【０００７】
上記構成を備えることにより、本発明における回路情報生成装置は、Ｃ言語などで記述されたプログラムあるいはＲＴＬで記述された回路を設計するための回路設計情報を取得して、プログラムの内容あるいは回路設計情報の内容を実行する回路に、クロックゲーティングを実行する回路情報を付加した情報を生成することができ、クロックゲーティング技術が施された回路の情報が自動的に生成されることでクロックゲーティングを回路に施す際の設計者の負担を軽減することができる。
【０００８】
ここでいう機能とは、回路の入出力や働き、動作タイミングを定義するに足る情報のことで、Ｃ言語で記述されたプログラムであったり、ＲＴＬで記述された回路設計情報であったりする。また、クロック入力を停止させるとは、クロック入力のハイ若しくはローを固定することをいい、クロック入力の変化を停止させることを言う。
また、前記回路情報生成装置において、前記実行シーケンスは１以上の命令を含む複数のステートに分けられ、前記ステートの遷移によって前記実行シーケンスを表し、前記構成情報生成手段は、前記ステートを管理しており前記実行シーケンス中においてどのステートであるのかを示した信号である状態信号を出力するステートマシンを、定義するステートマシン情報を生成するステートマシン情報生成部と、前記状態信号を受けてステートの内容を実行する演算処理回路を、定義する演算処理回路情報を生成する演算処理回路情報生成部とを備え、前記ゲーティッドクロック情報生成手段は、前記ステートごとに前記複数の回路それぞれに対してクロック入力を供給するか否かを示したクロック信号制御表を保持しており前記状態信号を受けて当該状態信号に適したクロック制御信号を生成する制御信号生成回路を、定義する制御信号生成回路情報を生成する制御信号生成回路情報生成部と、前記クロック制御信号に基づいて回路が動作しないタイミングではクロック入力の変化を停止させたゲーティッドクロックを生成して前記演算処理回路に供給するクロックゲーティング回路を、定義するクロックゲーティング回路情報を生成するクロックゲーティング回路情報生成部とを備え、前記構成情報生成手段は、前記ステートマシン情報と前記演算処理回路情報とを含んで前記回路構成情報を生成し、前記ゲーティッドクロック情報生成手段は、前記制御信号生成回路情報と前記クロックゲーティング回路情報とを含んで前記ゲーティッドクロック情報を生成することとしてよい。
【０００９】
これにより、本発明の回路情報生成装置が生成した情報はステートマシンと演算処理回路で構成される回路にゲーティッドクロック回路を付加した構成の回路情報を生成できるようになる。
ここでいうステートマシンは、実行シーケンスを複数に分割したステートの遷移をみるもので、管理するとは回路がどのステートで動作しているかの情報を保持しておくことをいう。ステートには機能の一部を実行する処理が含まれる。
【００１０】
また、前記回路情報生成装置において、前記ゲーティッドクロック情報生成手段は更に、前記クロック制御信号を受けて当該クロック制御信号の遅延を補正して補正された調整クロック制御信号を前記クロックゲーティング回路に出力する制御信号調整回路を、定義する制御信号調整回路情報を生成する制御信号調整回路情報生成部を備え、前記制御信号調整情報を含んで前記ゲーティッドクロック情報を生成することとしてよい。
【００１１】
これにより、本発明の回路情報生成装置により生成された情報を基に作成された回路は、クロック制御信号の遅延を補正でき、クロック入力と同期のとれた正しいゲーティッドクロックが生成され演算処理回路に供給されるようになる。
また、前記回路情報生成装置において、前記制御信号生成回路は、前記演算処理回路を構成する各回路に対してゲーティッドクロックが供給されることによる低消費電力化の効果を示し、優先的に合成していくゲーティッドクロックを検索するための優先順位値表を保持し、当該先順位値表から前記演算処理回路を構成する回路に供給されるゲーティッドクロックのうち、クロックゲーティングによる低消費電力化の効果の低い二つの回路に供給するゲーティッドクロックを検出し、前記ゲーティッドクロック情報生成手段は、前記二つの回路にゲーティッドクロックを供給するクロック制御回路に関しては、検出された前記二つの回路に供給するゲーティッドクロックを合成し、合成されたゲーティッドクロックを供給するクロック制御回路をレジスタトランスファレベルで定義した情報を前記ゲーティッドクロック情報として生成することとしてよい。
【００１２】
通常、演算処理回路を構成する回路ごとにゲーティッドクロックを供給するクロックラインが必要になり、クロックラインが多くなりすぎるとクロックラインそのものの消費電力も看過できなくなるが、上記構成を備えることにより、二つのクロックラインを合成していくことでクロックラインの本数を少なくしてクロックラインの本数の増加による消費電力の増大を防ぐことができる。ゲーティッドクロックを施すことでの低消費電力化と、ゲーティッドクロックのクロックライン数の増大による消費電力の増大を防ぐためのゲーティッドクロックの合成はトレードオフの関係にあるので、実際の回路においては両方の低消費電力化の効果を考慮して実装するのがよい。
【００１３】
また、前記取得手段は、Ｃ言語で記述されたプログラムを取得し、当該Ｃ言語プログラムは、前記機能構成情報と、前記実行シーケンス情報を含むこととしてよい。
これにより、本発明に係る回路情報生成装置は、Ｃ言語で記述されたプログラムを基にＲＴＬで記述された回路情報を得ることができる。実際、機能仕様設計の段階においてはＣ言語によるプログラミングが一般的であり、実装するに当たってはＲＴＬで記述された回路設計情報が重要になってくるので、このことは設計者にとって重要であり、回路の設計におけるいくつかの工程を省けることになる。
【００１４】
また、クロックゲーティング回路を付加された回路情報を生成する回路情報生成方法であって、機能の構成を定義した機能構成情報と、前記機能を実行するための実行シーケンスを定義した実行シーケンス情報とを外部から取得する取得ステップと、前記機能構成情報と、前記実行シーケンス情報とを基に、前記機能を前記実行シーケンスに従って実行する複数の回路をレジスタトランスファレベルで定義した情報である回路構成情報を生成する構成情報生成ステップと、前記機能構成情報と、前記実行シーケンス情報を基に、前記複数の回路のうち一以上の各回路に対して、回路が動作せずクロック入力が必要でないタイミングではクロック入力を停止させたゲーティッドクロックを供給するクロック制御回路をレジスタトランスファレベルで定義したゲーティッドクロック情報を生成するゲーティッドクロック情報生成ステップと、前記回路構成情報と、前記ゲーティッドクロック情報とをあわせて出力する出力ステップとを備えることとしてよい。
【００１５】
また、クロックゲーティング回路を付加された回路情報を生成する回路情報生成プログラムであって、機能の構成を定義した機能構成情報と、前記機能を実行するための実行シーケンスを定義した実行シーケンス情報とを外部から取得する取得ステップと、前記機能構成情報と、前記実行シーケンス情報とを基に、前記機能を前記実行シーケンスに従って実行する複数の回路をレジスタトランスファレベルで定義した情報である回路構成情報を生成する構成情報生成ステップと、前記機能構成情報と、前記実行シーケンス情報を基に、前記複数の回路のうち一以上の各回路に対して、回路が動作せずクロック入力が必要でないタイミングではクロック入力を停止させたクロックを供給するクロック制御回路をレジスタトランスファレベルで定義したゲーティッドクロック情報を生成するゲーティッドクロック情報生成ステップと、前記回路構成情報と、前記ゲーティッドクロック情報とをあわせて出力する出力ステップとを備えることとしてよい。
【００１６】
この方法あるいはプログラムにより、ゲーティッドクロックを付加された回路の情報を生成することができる。
また、前記回路情報生成方法において、前記実行シーケンスは１以上の命令を含む複数のステートに分けられ、前記ステートの遷移によって前記実行シーケンスを表し、前記構成情報生成ステップは、前記ステートを管理しており前記実行シーケンス中においてどのステートであるのかを示した信号である状態信号を出力するステートマシンを、定義するステートマシン情報を生成するステートマシン情報生成ステップと、前記状態信号を受けてステートの内容を実行する演算処理回路を、定義する演算処理回路情報を生成する演算処理回路情報生成ステップとを備え、前記ゲーティッドクロック情報生成ステップは、前記ステートごとに前記複数の回路それぞれに対してクロック入力を供給するか否かを示したクロック信号制御表を保持しており前記状態信号を受けて当該状態信号に適したクロック制御信号を生成する制御信号生成回路を、定義する制御信号生成回路情報を生成する制御信号生成回路情報生成ステップと、前記クロック制御信号に基づいて回路が動作しないタイミングではクロック入力を停止させたゲーティッドクロックを生成して前記演算処理回路に供給するクロックゲーティング回路を、定義するクロックゲーティング回路情報を生成するクロックゲーティング回路情報生成ステップとを備え、前記構成情報生成ステップでは、前記ステートマシン情報と前記演算処理回路情報とを含んで前記回路構成情報を生成し、前記ゲーティッドクロック情報生成ステップでは、前記制御信号生成回路情報と前記クロックゲーティング回路情報とを含んで前記ゲーティッドクロック情報を生成することとしてよい。
【００１７】
また、前記回路情報生成プログラムにおいて、前記実行シーケンスは１以上の命令を含む複数のステートに分けられ、前記ステートの遷移によって前記実行シーケンスを表し、前記構成情報生成ステップは、前記ステートを管理しており前記実行シーケンス中においてどのステートであるのかを示した信号である状態信号を出力するステートマシンを、定義するステートマシン情報を生成するステートマシン情報生成ステップと、前記状態信号を受けてステートの内容を実行する演算処理回路を、定義する演算処理回路情報を生成する演算処理回路情報生成ステップとを備え、前記ゲーティッドクロック情報生成ステップは、前記ステートごとに前記複数の回路それぞれに対してクロック入力を供給するか否かを示したクロック信号制御表を保持しており前記状態信号を受けて当該状態信号に適したクロック制御信号を生成する制御信号生成回路を、定義する制御信号生成回路情報を生成する制御信号生成回路情報生成ステップと、前記クロック制御信号に基づいて回路が動作しないタイミングではクロック入力を停止させたゲーティッドクロックを生成して前記演算処理回路に供給するクロックゲーティング回路を、定義するクロックゲーティング回路情報を生成するクロックゲーティング回路情報生成ステップとを備え、前記構成情報生成ステップでは、前記ステートマシン情報と前記演算処理回路情報とを含んで前記回路構成情報を生成し、前記ゲーティッドクロック情報生成ステップでは、前記制御信号生成回路情報と前記クロックゲーティング回路情報とを含んで前記ゲーティッドクロック情報を生成することとしてよい。
【００１８】
この方法あるいはプログラムにより、ステートマシンと演算処理回路で構成された回路にゲーティッドクロック技術が付加された回路の情報を生成することができる。
また、前記回路情報生成方法において、前記ゲーティッドクロック情報生成ステップは更に、前記クロック制御信号を受けて当該クロック制御信号の遅延を補正して補正された調整クロック制御信号を前記クロックゲーティング回路に出力する制御信号調整回路を、定義する制御信号調整回路情報を生成する制御信号調整回路情報生成ステップを備え、前記制御信号調整情報を含んで前記ゲーティッドクロック情報を生成することとしてよい。
【００１９】
また、前記回路情報生成プログラムにおいて、前記ゲーティッドクロック情報生成ステップは更に、前記クロック制御信号を受けて当該クロック制御信号の遅延を補正して補正された調整クロック制御信号を前記クロックゲーティング回路に出力する制御信号調整回路を、定義する制御信号調整回路情報を生成する制御信号調整回路情報生成ステップを備え、前記制御信号調整情報を含んで前記ゲーティッドクロック情報を生成することとしてよい。
【００２０】
この方法あるいはプログラムにより、クロック入力を制御するためのクロック制御信号の遅延を修正することができるクロック制御信号調整回路の情報を生成することができる。
また、複数の回路に互いに異なるゲーティッドクロックが供給されている回路におけるゲーティッドクロックの合成方法であって、複数の回路によって構成されており演算を実行する演算処理回路を構成する各回路に対してゲーティッドクロックが供給されることによる低消費電力化の効果を示していて優先的に合成していくゲーティッドクロックを検出するための優先順位値表を保持する保持ステップと、前記優先順位値表に基づき、前記演算処理回路を構成する回路に供給されるゲーティッドクロックのうち、クロックゲーティングによる低消費電力化の効果の低い二つの回路に供給されるゲーティッドクロックを検出する検出ステップと、前記検出ステップにおいて検出された二つのゲーティッドクロックを合成する合成ステップと、前記合成ステップにおいて合成されたゲーティッドクロックを新たなゲーティッドクロックとして前記二つの回路に供給する供給ステップとを備えることとしてよい。
【００２１】
また、複数の回路に互いに異なるゲーティッドクロックが供給されている回路におけるゲーティッドクロックの合成プログラムであって、複数の回路によって構成されており演算を実行する演算処理回路を構成する各回路に対してゲーティッドクロックが供給されることによる低消費電力化の効果を示していて優先的に合成していくゲーティッドクロックを検出するための優先順位値表を保持する保持ステップと、前記優先順位値表に基づき、前記演算処理回路を構成する回路に供給されるゲーティッドクロックのうち、クロックゲーティングによる低消費電力化の効果の低い二つの回路に供給されるゲーティッドクロックを検出する検出ステップと、前記検出ステップにおいて検出された二つのゲーティッドクロックを合成する合成ステップと、前記合成ステップにおいて合成されたゲーティッドクロックを新たなゲーティッドクロックとして前記二つの回路に供給する供給ステップとを備えることとしてよい。
【００２２】
この方法あるいはプログラムにより、２本のゲーティッドクロックを合成することができ、ゲーティッドクロックテッドクロックを供給するクロックラインの本数を削減することができる。これを繰り返すことで設計者の望む本数でクロックラインを構成した回路を構成できる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明に係る回路情報生成装置について図面を用いながら説明する。
（実施形態１）
＜概要＞
本発明にかかる回路情報生成装置は、Ｃ言語のプログラムなどを受けて、図２の機能図で示されるような回路設計情報を生成する。回路自体はステートマシン２０３、及び演算処理部２０４のみで動作し、正しい演算結果を得ることができるが、これだけでは低消費電力化が行われていないので、制御信号生成部２０１、制御信号調整部２０５、クロックゲーティング部２０２を追加した回路設計情報を自動的に生成する。
＜構成＞
（１）回路情報生成装置の構成
図１は、本発明に係る回路情報生成装置１００の機能ブロック図である。
【００２４】
回路情報生成装置１００は、プログラム受付部１０１と、プログラム解析部１０２と、ステートマシン情報生成部１０３と、演算処理部情報生成部１０４と、ゲーティッドクロック情報生成部と、ＲＴＬ回路情報生成部１０６と、回路設計情報出力部１０７とからなる。
回路情報生成装置１００は、実際には、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）を含んで構成され、回路情報生成装置１００は、ＣＰＵがＲＯＭに記憶してあるプログラムを読み出し、ＲＡＭにデータを保持しつつプログラムを実行することでＲＴＬ回路設計情報１２０は生成される。
【００２５】
プログラム受付部１０１は、外部からＣ言語プログラム１１０を受け取る機能を有する。
プログラム解析部１０２は、プログラム受付部１０１が受け取ったＣ言語プログラム１１０の内容を確認し、その実行内容と実行シーケンスを解析する機能を有する。解析手法は従来のものを流用する。
【００２６】
ステートマシン情報生成部１０３は、生成される予定の回路設計情報において、演算を実行する演算処理部からの応答を基にＣ言語プログラム１１０に記述されている動作記述どおりに実行シーケンスを管理するために分割したステートの情報を管理し、ステートの情報である状態信号を出力する、ステートマシンに関する情報を生成する機能を有する。一般的にはステートマシンは、予め定められた複数の状態を、定められた条件に従って、定められた順番で遷移していくディジタル・デバイスである。
【００２７】
演算処理部情報生成部１０４は、プログラム解析部１０２の解析結果により、必要な演算回路を検出し、Ｃ言語プログラム１１０に記述されている内容を実行できるように各回路の相互関係を正しく接続した演算処理部の回路情報を生成する機能を有する。
ゲーティッドクロック情報生成部１０５は、ステートマシン情報生成部により生成されるステートマシン情報と、演算処理部情報生成部１０４とから、ステートマシン情報生成部により生成されるステートマシンから各ステートにおいて、演算処理部情報生成部１０４により生成される演算処理部を構成する複数の回路に供給しなければならないクロック入力の情報を受け取り、クロック入力を供給しなくてもよい時は、クロック入力を停止させたゲーティッドクロックを生成するゲーティッドクロック部の情報を生成する機能を有する。ここでは、クロック入力を制御するためのクロック制御信号を出力する制御信号生成部と、信号の遅延を補正する制御信号調整部と、クロック入力とクロック制御信号とからゲーティッドクロックを生成するクロックゲーティング部の３つの機能部の回路情報をゲーティッドクロック情報としてゲーティッドクロック情報生成部は生成する。
【００２８】
ＲＴＬ回路情報生成部１０６は、ステートマシン情報生成部１０３と、演算処理部情報生成部１０４と、ゲーティッドクロック情報生成部１０５とによって生成される情報を基にＣ言語プログラム１１０の内容を実行する低消費電力化が施されＲＴＬで記述された回路の情報を生成する。
回路設計情報出力部１０７は、ＲＴＬ回路情報生成部１０６により生成される情報を自機外部にＲＴＬ回路設計情報１２０を出力する機能を有する。出力方法は、図示していないが、モニタに表示したり、回路設計情報をプリントアウトしたりする。
【００２９】
（２）ＲＴＬ回路設計情報１２０を基に作成される回路の構成
次に生成された情報を基に作成される実際の回路の各部の機能を図２の機能ブロック図を用いて説明する。
ステートマシン２０３は、演算の実行状態であるステートごとに演算処理部２０４が実施すべき演算内容を図１３のようにステートフローの形で管理しており、そのときのステートが何であるかを記憶し、演算処理部２０４にステートを示した状態信号２１４を出力している。また、演算処理部２０４からの分岐信号２１５を受け取って、演算結果によってどのステートに移行するかを判断し新たな状態信号を送信する。ステートマシン２０３は記憶素子と順序回路をもって構成される。
【００３０】
制御信号生成部２０１は、ステートマシン２０３から状態信号２１４を受け取ることでステートの情報を受け取り各ステートにおいてどの回路へのクロック入力が必要であるかを管理するために保持している図４にあるようなクロック信号制御表４００から、状態信号２１４を基にステートにおいて回路ごとにクロック入力が必要かどうかを示したクロック制御信号２１１を出力する機能を有する。このクロック入力が必要かどうかに関しては、ステートマシン２０３で管理される各ステートで実行される命令の内容を解析し、命令を実行する回路に対してクロック入力が供給される必要があると判断する。制御信号生成部２０１は、記憶素子と順序回路をもって構成される。
【００３１】
ところで、制御信号生成部２０１は、実際には、ステートマシン２０３からの状態信号２１４をデコードするので信号の遅延が発生する。その遅延は、基本的には１サイクル未満の遅延であるが、これを見越して状態信号により得られたステートの次のステートのクロック制御信号を出力することで対処している。
ここで遅延がｄサイクル分発生するとしたらｄサイクル後のステート用のクロック制御信号を出力する。このとき、ｄサイクル後においては途中の分岐条件によってはｄサイクル後のステートがいくつかある可能性がある。このことを踏まえ、ｄサイクル後に実行する可能性のあるステートにおけるクロック制御信号の論理和をとることで対処する。例えば図５（ａ）にあるようにｄサイクル後のステートが複数あり、クロックラインがL1〜LLまであって、例えばクロックラインL1についてＰi1〜Ｐk31までのクロック制御信号がある。これらの論理和をとって図５（ｂ）のようにＰ'i1をクロックラインL1のクロック制御信号として出力する。Ｐ'i1を求める式を書くと、
Ｐ'i1=Ｐi1｜・・・｜Ｐk11｜Ｐk21｜Ｐk31
となる。
【００３２】
制御信号調整部２０５は、制御信号生成部２０１によって、生成されるクロック制御信号２１１が遅延してクロック入力との同期が取れない場合に、その遅延を修正し、遅延が修正されたクロック制御信号２１２を出力する機能を有するＦＦである。制御信号生成部２０１は、状態信号２１４をデコードするためそこでロスが発生し、クロック制御信号２１０は、制御信号生成部から出力される時点で遅延している可能性がある。制御信号調整部２０５は、クロック制御信号２１１をラッチすることで、各ステートと、クロック入力との同期が取れるようにする。この遅延調整の技術は従来行われている。基本的には１サイクル弱程度の遅延しか発生しないので１サイクル分だけラッチしておく。
【００３３】
クロックゲーティング部２０２は、調整クロック制御信号２１２を受け取り、演算処理部２０４を構成する回路（レジスタ）に出力するゲーティッドクロック２１３を生成する機能を有する。その構成は図３のようになっており、外部クロック入力２１０と調整クロック制御信号２１２との論理積をとった信号をゲーティッドクロック２１３として出力しており基本的に回路の数だけゲーティッドクロックの本数がある。図３では、ＡＮＤ回路３１１、３１２、３１３はそれぞれ、クロック制御信号３０１、３０２、３０３と外部クロック２１０との論理積をとってゲーティッドクロック３２１、３２２、３２３を出力する。ここでＡＮＤ回路を通すことでもゲーティッドクロックの遅延が発生するが、バッファ（図示せず）などを回路に組み込んで回路全体での整合を取る。
【００３４】
演算処理部２０４は、実際に演算を実行する回路で構成されており、それを論理回路とＦＦで表現した一例が図１４にある。演算処理部２０４は、ステートマシン２０３から与えられる状態信号２１４とクロックゲーティング部２０２から送られてくるゲーティッドクロック２１３を基に演算を実行し、各ステートの節目となる演算内容を実行した後に分岐信号２１５をステートマシン２０３に返して次の状態信号２１４を受けて演算を実行することを繰り返しプログラム１１０において求められる演算結果がでるまで実行する機能を有する。
＜データ＞
続いて本発明に係る回路情報生成装置１００が関わるデータについて説明する。
【００３５】
（１）入力情報
まず、本発明に係る回路情報生成装置１００が取得する入力情報であるＣ言語プログラムの一例を図１１に示す。
図１１に示すようなＣ言語のプログラムは、図１におけるプログラム受付部１０１が受け付けるＣ言語プログラム１１０の一例である。
【００３６】
以下、簡単にその実行内容を記す。
プログラム１１００は、変数ａ、ｂ、ｃ、ｄ、ｅ、ｉ、ｓｕｍと初期入力ｉｎ０、ｉｎ１、ｉｎ２を用いて最終的にｓｕｍの値を求めるプログラムである。順に実行される処理を簡単に説明すると、まず、ｓｕｍに０を代入し、ａにｉｎ０に１加算した値を、ｂにｉｎ１に２加算した値を代入する。
【００３７】
そしてｉ＝０〜１５の間、ｉ＝０、１、２、…の順に、ｉｎ２をｉで割った余りの値が０である場合にｓｕｍに以前定義されたｓｕｍの値にｅを足した値を代入する。ｅはｃにｄをかけた値であり、ｃはａを倍した値、ｄはｂを倍した値である。ｉ＝１６になった時点で演算を終了し、その時のｓｕｍの値を演算結果として返す。
（２）解析情報
プログラム解析部１０２は入力情報であるＣ言語プログラム１１０を基にして、分岐条件や、並列実行可能な命令などで、Ｃ言語プログラム１１０の内容をステートの単位に分割し、それぞれのステートがどのようにつながり実行されるかを解析する。図１２には、プログラム１１００の解析情報の内容を示してあり、ここでは分かりやすくなるようフローの形式で記した。このような情報を解析によって得る。プログラム１１００を解析するとステートＳ１２０１〜Ｓ１２０８の全部で８のステートに分割される。解析手法に関しては従来の高位合成の技術を用いるものとする。各ステートは少なくとも１の命令を含み、基本的にステートは、ステートＳ１２０１からステートＳ１２０８に向かって遷移していく。ステートＳ１２０２とステートＳ１２０４ではステートの遷移先が二つあり、ステートＳ１２０１からはステートＳ１２０３とステートＳ１２０８に、ステートＳ１２０４からはステートＳ１２０５とステートＳ１２０７に遷移する。
【００３８】
（３）ステートマシン情報
ステートマシンは、前述したようにステートを示すノードの集まりとそれに対応する変換機能の集まりからなる、有向グラフでありその一例を図１３に示す。図１３は、プログラム１１００を基に作成されるステートマシン情報の一部である。
ステートマシン情報は、プログラム解析部１０２の解析により図１２にあるような実行フローを元に作成される。ステートマシン情報は、プログラム１１００の実行の流れに従い、並列実行可能な命令を纏めたステートをプログラム１１００の分岐条件などにより分岐先を指定した有向グラフと、それを保持し、演算結果からステートの遷移をみてステートの情報である状態信号を出力する回路の情報である。
【００３９】
図１３には、プログラム１１００を基に作成された、ステートマシンが管理するステートのフローを示してあり、ステートＳ１〜Ｓ８はそれぞれ図１２におけるステートＳ１２０１〜Ｓ１２０８に対応している。ステートマシン情報は従来の高位合成技術を用いて作成することが可能である。ステートは演算結果などにより遷移する。
（４）制御信号生成部の情報
制御信号生成部２０１の基となる、制御信号生成部の情報は、図４に示すようなクロック信号制御表４００を保持し、かつ、ステートマシンからの状態信号を受けて、その状態信号に対応するクロック制御信号を出力する回路の情報のことである。クロック信号制御表４００は、ステートマシンが管理する各ステートにおいてクロック入力が供給される演算処理部の回路についてクロック入力が必要か否かを示した表である。
【００４０】
クロック入力制御表４００は、各ステート４０２において全クロックライン４０１のクロック入力の必要性を示しており、Ｐij（ｉ，ｊは１以上の整数）は、０若しくは１の値で表記されている。クロック入力が必要な場合には０を、必要ではない場合には１を表記する。このクロック入力制御表４００は、各ステートにおける演算において値の代入あるいは変化が発生する変数に対応するレジスタに対してはクロック入力を供給するものと判断して作成される。各ステートにおいて値の代入若しくは変化があるかどうかはプログラム解析部１０２の解析によって判断される。
【００４１】
クロック信号制御表４００の具体例を図１５（ａ）に示してあり、図１５（ａ）は、プログラム１１００を基に作成された具体的なクロック信号制御表１５００である。
クロック信号制御表１５００（ａ）は、ステート１５０２と、クロックライン１５０１からなり、それぞれに対応してクロック入力が必要か否かを０か１で記している。前述したようにクロック入力が必要な場合には０を、必要でない場合には１を表記している。クロックラインLa、Lb、Lc、Ld、Le、Li、Lsum、Ltmpは、それぞれ変数ａ、ｂ、ｃ、ｄ、ｅ、ｉ、ｓｕｍ、ｔｍｐに対応するレジスタに接続されるゲーティッドクロックを供給するクロックラインを表している。このクロック信号制御表１５００（ａ）とステートマシンからの状態信号を基に制御信号生成部２０１は、クロック制御信号２１１を出力しているが、このクロック制御信号２１１は、クロックゲーティング部２０２でクロック入力との論理積を取ってゲーティッドクロックとするので、この表の０と１を反転させた値になっている。
【００４２】
（５）制御信号調整部の情報
制御信号調整部の情報は、ＦＦもしくはラッチ回路の情報であり、信号調整用のＦＦを通し、一端ラッチすることで信号の遅延を制御できる。この遅延修正手法は従来行われており、それに用いる回路を流用する。
（６）クロックゲーティング部の情報
クロックゲーティング部の情報は、図３に示すような回路設計情報であり、ここでは回路図の形式で記している。図のように、クロック制御信号と外部クロックの信号線をＡＮＤ回路で接続してゲーティッドクロックを出力する形の回路設計情報になっている。図では外部クロック２１０は、クロック制御信号３０１、３０２、３０３それぞれとＡＮＤ回路３１１、３１２、３１３で論理積がとられ、ゲーティッドクロック３２１、３２２、３２３が出力されている。ＡＮＤ回路の数は、クロック入力を必要とする回路の数に対応していて、基本的に回路の数だけ必要になり、出力されるゲーティッドクロックは、演算処理部を構成する回路それぞれに供給されるように接続される。
【００４３】
（７）演算処理部の情報
次に演算処理部の情報について説明する。演算処理部は、実際の演算を行う回路であり、その回路設計情報が演算処理部の情報となる。図１４は、プログラム１１００を基に作成される実際に演算を実行することになる演算処理部の基となる回路設計情報である。ここでは回路設計情報を回路図の形式で記している。
プログラム１１００で使用される変数ａ、ｂ、ｃ、ｄ、ｅ、ｉ、ｓｕｍはそれぞれ、図１４の回路図ではレジスタ１４０３、１４０４、１４０５、１４０６、１４０７、１４０２、１４０８に格納されている。図１４においてはレジスタ、及び演算器には、その実行内容が分かるよう、プログラム１１００の表記と対応する形で表記してある。
【００４４】
クロックライン１４３１、１４３２、…、１４３８はそれぞれ、クロックゲーティング部からレジスタ１４０１、１４０２、…、１４０８に供給すべきゲーティッドクロックを供給する。クロック入力が印加されたときに各レジスタに接続されている演算器に値が行き、演算が実行される。レジスタ１４０１に表記されるｔｍｐは、プログラム１１００の１３行目のモジュロ演算の結果を格納するためのレジスタである。モジュロ演算とは割り算によって発生した余りを演算の回答とする演算で、ここではｉｎ２の値をｉで割った余りを格納する。
【００４５】
また、図１４に示される演算器それぞれは、プログラム１１００で記されている演算子に相当する。演算器１４１１、１４１８は入力される２値の比較を行い、演算器１４１２はモジュロ演算を行う。演算器１４１３、１４１４は左シフト演算を行う。左シフト演算は値が２のシフトｂｉｔ乗倍になる演算である。例えば、十進数の２を２進数で表記すると００１０で、これを２ｂｉｔ左シフトすると１０００になり十進数で表記すると８になる。２が８になっているので元の値が４倍、即ち２の２乗倍されていることが分かる。演算器１４１５は掛け算を、演算器１４１６、１４１７、１４１９、１４２０は足し算を実行する演算器である。例えば演算器１４１２は、プログラム１１００のｉｆ文内のモジュロ演算に対応し、演算器１４１３はプログラム１１００のａ＜＜ｉのａの値をｉｂｉｔだけ左シフトする演算に対応する。
【００４６】
演算処理部の情報に関しても従来の高位合成を用いて作成することができる。
回路情報生成装置１００は、図１１にあるようなプログラム１１００を受け付けて、これを基にこのプログラム１１００の内容を実行する回路を生成し、これにゲーティッドクロックが供給されるような回路構成情報を生成する。
（８）生成される総合的なデータ
生成される情報は、図１２にあるようなステートフローを保持し状態信号を生成する回路情報と、そして演算を実行するＲＴＬで記述された図１３にあるような演算回路の情報と、図１５（ａ）にあるようなステート毎にどのレジスタにクロックを入力するのかを示したクロック信号制御表を管理しており状態信号を受けてステートに応じて必要なクロック制御信号を出力する回路の情報と、クロック制御信号の遅延を修正して調整クロック制御信号を出力する制御信号調整部の回路の情報と、制御信号調整部から出力される調整クロック制御信号とクロック入力を図３のようにＡＮＤ回路に入力してゲーティッドクロックを生成し演算処理部を構成する各回路（レジスタ）に入力するクロックゲーティング部の回路情報とを含んで組み合わせた情報を出力する。
＜動作＞
本発明に係る回路情報生成装置の回路設計情報生成の流れを図８のフローチャートを用いて説明する。
【００４７】
まず、プログラム受付部１０１が、Ｃ言語プログラム１１０を受け付ける（ステップＳ８０１）。そして受け付けたＣ言語プログラム１１０をプログラム解析部１０２がプログラム受付部から受け取り、その内容を解析し図１２にあるようなフローのような情報に変換する（ステップＳ８０３）。この解析情報を基にステートマシン情報生成部１０３は、ステートを管理するための図１３にあるようなステートフローを作成しそれを管理するステートマシンの情報を生成する（ステップＳ８０５）。また、演算処理部情報生成部１０４は、実際に必要になる演算器並びにデータを格納するレジスタなどの構成を示した図１４にあるような回路構成を示した情報を生成する（ステップＳ８０７）。そして、ステートマシン情報により生成されるステートマシンから、ステートに関する情報を受け取り、その情報を基に演算処理部情報生成部１０４に与えるゲーティッドクロックを生成するゲーティッドクロック情報を生成する（ステップＳ８０９）。演算処理部の各回路に供給するゲーティッドクロックの情報は、ステートマシンの各ステートにおいて実行される命令の内容と、その命令を実行する演算処理部の回路の対応を基にステートごとに生成される。ステートマシン、及び演算処理部の回路情報の生成に関しては従来の高位合成技術によって生成される。そしてステートマシンの回路情報と、演算回路の情報と、ゲーティッドクロックの回路情報とからＲＴＬで記述された回路情報をＲＴＬ回路情報生成部１０６が生成する（ステップＳ８１１）。生成された情報を回路設計情報出力部１０７がモニタ、あるいはプリントアウトなどの手段により出力して処理を終了する（ステップＳ８１３）。
【００４８】
次に、生成される情報を基に作成される実際の回路において制御信号生成部２０１が管理するクロック信号制御表の作成の方法を図１０のフローチャートを用いて説明する。
まず、ステートマシンからステートの情報を受け付け、そのステートの内容を検出する（ステップＳ１００１）。そしてそのステートにおける内容を基に使用される回路を検出する。例えば、プログラム１１００の場合には、そのステートにおいて各レジスタについて値の変化が発生するかをステートの実行内容を解析して判断している（ステップＳ１００３）。そして回路が使用される場合（ステップＳ１００３のＹＥＳ）には、その回路にはクロック入力が必要であり、クロック入力を入れる情報を含んだクロック制御信号を出力する（ステップＳ１００５）。例えば、プログラム１１００を元にしたステートＳ１２０１では、変数sumに０が代入され値の変化が発生すると判断し変数sumに対応するレジスタにはくロック入力が必要と判断する。回路が使用されない場合（ステップＳ１００３のＮＯ）には、その回路にはクロック入力は不必要であり、クロック入力を停止する情報を含んだクロック制御信号を出力する（ステップＳ１００７）。各ステート、各回路に関してそれぞれのクロック入力を印加するか否かを示したクロック制御信号をクロック信号制御表に記憶して処理を終了する（ステップＳ１００９）。
【００４９】
続いて、ＲＴＬ回路設計情報１２０を基に作成された実際の回路の動作を図２の機能図を用いて簡単に説明する。まずステートマシン２０３はプログラム内のどのステートの命令を実行するのかを判断できるようステートの情報を出力する。制御信号生成部２０１は、それを元に遅延を考慮して、送られてきた状態信号が示すステートの次のステートのクロック制御信号２１１を出力する。制御信号調整部２０５は発生する遅延を防ぐためにクロック制御信号を一端ラッチし、外部クロック入力２１０との同期が取れる調整クロック制御信号２１２を出力する。調整クロック制御信号２１２と外部クロック入力２１０を基にゲーティッドクロック２１３をクロックゲーティング部２０２が生成する。生成されたゲーティッドクロック２１３と状態信号２１４を基に演算処理部２０４は対応する回路を動作させて演算を実行し、実行すべき命令がなくなるまで繰り返す。なお、ステートマシン２０３は演算処理部２０４から分岐信号２１５を受けることで演算結果による分岐先を知ることができ、これにより次のステートを決定し新たな状態信号２１４を出力できるようになる。
（実施形態２）
以下、本発明における実施形態２を図面を用いながら説明していく。
【００５０】
実施形態２においては、各レジスタに供給するゲーティッドクロックの本数が多すぎて、そのことにより消費電力や回路の発熱量が増大した場合を考慮してクロックラインの本数を削減する方法に関する。これは実際の回路の作成の手間を軽減するだけでなく、回路面積の増大を抑制する効果も得られる。ここでは、回路情報生成装置１００は、ゲーティッドクロック情報生成部１０５により、ゲーティッドクロックの本数を減らした情報を生成する。
【００５１】
そのゲーティッドクロックのクロックラインの本数を減らす方法について、図６、７及び図１５〜１９の表を用いて説明する。
＜概要＞
概要としては複数即ち回路の数だけあるゲーティッドクロックのうち、ゲーティッドクロックを供給することによって低消費電力化の効果が小さい２本のクロックラインを合成することを繰り返すだけでクロックラインの数を減らしていける。
【００５２】
ここでゲーティッドクロックのクロックラインを合成するとは、２本のゲーティッドクロックの論理和をとることである。例えば、図６においてクロック入力が６００で、回路１にはゲーティッドクロック６０１が、回路２にはゲーティッドクロック６０２が供給されているとする。ゲーティッドクロック６０１とゲーティッドクロック６０２を合成するとゲーティッドクロック６０３が生成され、回路１と回路２にはゲーティッドクロック６０３を供給するのである。
＜データ＞
制御信号生成部２０１は、クロック制御信号表を保持する他に、これを元に更に、各ステートの優先順位を割り振った数値を掛け合わせた図７のような優先順位値表７００をゲーティッドクロックの本数を減らすために保持する。優先順位値表７００は制御信号生成部２０１が管理することになるもので、ステート７０３ごとに、ステート優先順位値７０４が設定されている。例えばステートＳ１の優先順位値はR1である。回路要素集合７０１とクロックライン７０２の数は同じでそれぞれが対応しており回路要素集合に供給されるクロックラインを意味する。クロックラインL1のステートS1の優先順位値はP11となっているが、この値は図４にあるクロック信号制御表４００のクロックラインL1のステートS1における０か１かの値に、図７のステート優先順位値R1をかけあわせたものである。クロックライン優先順位値７０５はその合計で、クロックラインTjを求める式を表記すると、以下のようになる。
【００５３】
【数１】
2006155533.tif 000003
【００５４】
ここで数１のflag(Pij)は図４における表の各クロックラインの各ステートのクロック入力印加の必要性を示した０か１の値であり、prio(Si)は、図７におけるステート優先順位値７０４である。
この優先順位値表７００を具体化すると、図１５（ｂ）にあるような優先順位値表１５１０になる。図１５（ａ）は、前述したように、図１１のプログラム１１００のステート１５０２ごとに各レジスタに供給されるクロックラインについてクロック入力が供給されるかどうかを示した表であり、０か１で表現されており、クロック入力が必要な場合には０が記入されている。クロックラインの本数を減らしたい場合にはこれに優先順位１５１３の値を含んだ表にして、優先順位値１５１０と図１５（ａ）の表に含まれる値を掛け合わせた図１５（ｂ）のクロック入力表１５００も管理する。一番下に各クロックラインについての合計値が計算されて記されており、この値は、レジスタにゲーティッドクロックが供給されることで、どれだけ有効に低消費電力化が行われているかがわかる。この値が高いほど、そのクロックラインのゲーティッドクロックの重要性が高く、合成せずに残しておきたいゲーティッドクロックである。つまりゲーティッドクロックは、この表の合計値において低い２本のクロックラインを合成することでクロックラインの本数を１本減らすわけである。優先順位値表の各ステートの優先順位値は、プログラムの設計者によって設定されても良いし、一度この回路を実行し、その実行データを元に、各回路の実行頻度の数にしてもよい。
＜動作＞
以下、その合成するクロックラインを選出し合成する方法を図９のフローチャートで説明した後、具体的に図１５〜１９の表を用いて説明していく。
【００５５】
まず、図１５にあるような表から全ステートにおいて供給されるゲーティッドクロックが同一であるクロックラインを検出する（ステップＳ９０１）。ある場合には（ステップＳ９０１のＹＥＳ）、その２本のゲーティッドクロックはロスなく合成することができるので、その２本を合成し、表を更新する（ステップＳ９０３）。表を更新するとは、クロックの論理積をとり、その２本のクロックラインの同ステートにおける値が、片方が０である場合には０を表記し、それ以外の場合には値を足し合わせて新たなクロックラインを作成することをいう。それと共に、優先順位値表もまた更新され、次の処理に進む。ない場合には（ステップＳ９０１のＮＯ）特に何もせずに次の処理に進む。クロックライン数が設計者によって定められた本数をまだ上回る場合には（ステップＳ９０５のＹＥＳ）、クロックラインの優先順位値の低い２本のクロックラインを検出し、その２本を合成し、表を更新する（ステップＳ９０７）。これを繰り返しクロックライン数が定められた本数よりも少なくなるまで合成を行い、既定数以下になった時点で処理を終了する。
【００５６】
実際の具体的な例を用いて説明すると、図１５（ａ）のクロック信号制御表１５００と図１５（ｂ）の優先順位値表１５１０がある。これは、図１１にあるプログラム１１００を回路設計情報に変換したときの制御信号生成部２０１が管理するものである。クロック信号制御表１５００にあるようにこの場合供給するゲーティッドクロックのクロックライン数は、８本である。これを３本にまで減らすその過程を説明していく。
【００５７】
まず、図１５（ａ）にある表からステートごとでクロック入力を供給しなければならないタイミングが完全に一致するクロックラインがないかを検出する。ここでは、変数ａと変数ｂに対応するレジスタに供給するクロックが全ステートにおいて一致するので、この２本のクロックラインを合成する。変数ｃと変数ｄに対応するレジスタについても同様で、この２本もここで合成する。そうすると、図１６に示した表になる。このことによりクロックライン数は６に減少した。ここでは変数ａと変数ｂ，変数ｃと変数ｄに対応するレジスタに供給するゲーティッドクロックの２本だけを合成したが、全ステートにおけるクロック入力が一致する限り何本でも合成する。例えば、図１５（ａ）において変数ｃに対応するレジスタに供給するゲーティッドクロックが上から０、１、１、１、１、１、１、１で変数ａと変数ｂと変数ｃに対応するレジスタに供給するゲーティッドクロックが同じだったとしたら、図１６（ａ）においては、「La、Lb」の欄は、「La、Lb、Lc」となり、それに対応する数値も表の上から０、３、３、３、３、３、３、３になる。また、図１６（ｂ）の優先順位表１６１０も「La、Lb」の欄も「La、Lb、Lc」となりそれに対応する数値も上から順に、０、４８、４８、４８、２４、２４、４８、３となる。
【００５８】
次に図１６（ｂ）の優先順位表１６１０を基に、合成する２本のクロックラインを選出する。ここでは全ステートにおいて必要なクロック入力が一致するクロックラインはもうないので優先順位値の低い２本である変数ｉと変数ｔｍｐに対応するレジスタに供給するクロックラインを合成する。この優先順位値表の合計値は、高いほどクロックゲーティングの効果が高いということなので、そこに供給されるクロックラインはできれば合成せずに残しておきたいということになり、この数値の低い２本が選ばれるのである。
【００５９】
変数ｉと変数ｔｍｐに対応するレジスタに供給するクロックラインを合成した結果が図１７にあるクロック信号制御表でクロックライン本数が５本に減少した。
次に合成する２本は、図１７（ｂ）にあるように変数ｅと変数ｓｕｍに対応するレジスタに供給するクロックラインの優先順位値が低いので、この２本を合成する。
この２本を合成することで図１８にあるようにクロックラインは４本になり更に合成して図１９にあるようにクロックラインが３本になるまで合成を繰り返す。図１９（ａ）、（ｂ）が最終的な結果となり、変数ａ、ｂに対応するレジスタには同一のゲーティッドクロックが供給され、変数ｃ、ｄに対応するレジスタにも同一のゲーティッドクロックが供給され、変数ｅ、ｓｕｍ、ｉ、ｔｍｐに対応するレジスタにも同一のゲーティッドクロックが供給されることになる。
（補足）
以上、本発明に係る回路情報生成装置１００について説明してきたが、その実施の形態はこれに限定されるものではないことは言うまでもない。以下、その変形例について説明する。
【００６０】
上記実施形態においては入力をＣ言語プログラムとしたが、入力はこれに限らずステートマシンと演算処理部とを構成するに十分な回路動作記述であれば良く、例えばＨＤＬ（Hardware Description Language）で記述されたプログラムや、ＲＴＬで記述されたクロックゲーティングされていない回路設計情報であっても良い。
また、上記実施形態においては出力をＲＴＬで記述された回路設計情報としたが、実際に回路を作成するに十分な回路構成を示した情報であればよく、ＲＴＬで記述されている必要はなく、例えばクロックの記載を許したC言語プログラムであってもよい。
【００６１】
また、上記実施形態の回路情報生成装置における情報を生成する各機能部は、ハードウェアのみからなる回路に限らず、ソフトウェアを含んでソフトウェアの実行によってその機能が実現されてもよく、この場合、ソフトウェアを実行するプロセッサは、機能部毎に設けられることとしてもよいし、複数の機能部に相当する機能を一つのプロセッサが実現することとしてもよい。また、回路情報生成装置１００は、ＬＳＩ、ＶＬＳＩ（Very Large Scale Integration）等の一部又は全部として実現されてもよく、複数のＬＳＩ等で実現されてもよく、一又は複数のＬＳＩ等と他の回路の組み合わせとにより実現されてもよい。
【００６２】
また、上記実施形態１において制御信号調整部２０５を含む情報を生成したが、遅延が発生しない場合には、これを生成する必要はない。
また、上記実施形態１において制御信号生成部２０１は、クロック信号制御表４００を管理してクロック制御信号２１１を出力するものとしたが、状態信号２１４から、その都度ステートの内容を解析し、それを基にクロック制御信号を生成するものとしてよい。この場合、遅延が発生しないことを前提とする。
【００６３】
また、上記実施形態２において回路情報生成装置１００がゲーティッドクロックの本数を減らすものとしたが、別にテーティッドクロック付回路情報生成装置１００が、それをする必要は必ずしもなく、上記実施形態２の方法を用いてゲーティッドクロックの本数を減らすことだけを実行するハードウェア若しくはソフトウェアであってもよい。
また、上記実施形態２においてクロックライン優先順位値を決定することにおいて、クロックを供給するか否かの値に、ステートの優先順位値を掛け合わせた値としたがこれに更に、各ステートでクロック入力が印加された場合に各クロックラインにおいて消費される電力を掛け合わせてもよい。これによりさらに正確なクロックライン優先順位値を決定することができる。
【産業上の利用可能性】
【００６４】
本発明はＬＳＩ回路の設計をするＣＡＤシステムなどにおいて利用することができる。
【図面の簡単な説明】
【００６５】
【図１】本発明に係る回路情報生成装置の機能ブロック図である。
【図２】本発明に係る回路情報生成装置によって生成された情報を基に作成される回路の機能ブロック図である。
【図３】クロックゲーティング部２０２の構成を示した図である。
【図４】制御信号生成部２０１が管理することになるクロックラインとステートのクロック入力の必要性を示したクロック入力情報表である。
【図５】制御信号調整部２０２がクロック入力の遅延を回避するために管理している表である。
【図６】クロック入力と、２本のゲーティッドクロック例とその２本を合成した合成ゲーティッドクロックを示した図である。
【図７】ゲーティッドクロックを合成する際に制御信号生成部が必要とする優先順位値表である。
【図８】本発明の回路情報生成装置の動作を示したフローチャートである。
【図９】ゲーティッドクロックラインの本数を削減、合成する際の方法を示したフローチャートである。
【図１０】クロック入力を必要とするか否かを判断する制御信号生成部の動作を示したフローチャートである。
【図１１】Ｃ言語プログラム１１０の一例を示したプログラム１１００である。
【図１２】プログラム１１００の実行内容を解析し、フローチャート形式にした図である。
【図１３】プログラム１１００を回路が実行する際のステートマシンの内容を示した図である。
【図１４】プログラム１１００の内容を実行するための回路図である。
【図１５】制御信号生成部２０１が管理するクロック信号制御表１５００と優先順位値表１５１０である。
【図１６】制御信号生成部２０１が管理するクロック信号制御表１６００と優先順位値表１６１０である。
【図１７】制御信号生成部２０１が管理するクロック信号制御表１７００と優先順位値表１７１０である。
【図１８】制御信号生成部２０１が管理するクロック信号制御表１８００と優先順位値表１８１０である。
【図１９】制御信号生成部２０１が管理するクロック信号制御表１９００と優先順位値表１９１０である。
【符号の説明】
【００６６】
１００  回路情報生成装置
１０１  プログラム受付部
１０２  プログラム解析部
１０３  ステートマシン情報生成部
１０４  演算処理部情報生成部
１０５  ゲーティッドクロック情報生成部
１０６  ＲＴＬ回路情報生成部
１０７  回路設計情報出力部
１１０  Ｃ言語プログラム
１２０  ＲＴＬ回路設計情報
２０１  制御信号生成部
２０２  クロックゲーティング部
２０３  ステートマシン
２０４  演算処理部
２０５  制御信号調整部
４００  クロック信号制御表
７００  優先順位値表
１４０１〜１４０８  レジスタ
１４１１〜１４２０  演算器
１４３１〜１４３８  クロックライン
【図１】
2006155533.tif 000004
【図２】
2006155533.tif 000005
【図３】
2006155533.tif 000006
【図４】
2006155533.tif 000007
【図５】
2006155533.tif 000008
【図６】
2006155533.tif 000009
【図７】
2006155533.tif 000010
【図８】
2006155533.tif 000011
【図９】
2006155533.tif 000012
【図１０】
2006155533.tif 000013
【図１１】
2006155533.tif 000014
【図１２】
2006155533.tif 000015
【図１３】
2006155533.tif 000016
【図１４】
2006155533.tif 000017
【図１５】
2006155533.tif 000018
【図１６】
2006155533.tif 000019
【図１７】
2006155533.tif 000020
【図１８】
2006155533.tif 000021
【図１９】
2006155533.tif 000022