(57)【要約】【課題】  制約動作周波数で正常に動作しない処理に対して、処理時間を確保するように外部から制御して正常に動作させることができるコントローラの回路構造を提供する。【解決手段】  処理を実行するデータパスと処理の実行タイミングを制御するＦＳＭに基づくコントローラとを具備した回路である。コントローラは、ＦＳＭ状態滞在延長制御機構を備える。このＦＳＭ状態滞在延長制御機構は、ＦＳＭの任意の状態に対して、状態に滞在する期間を延長することができ、かつ、その延長期間は外部から任意に設定することができる。これにより、ある処理が予定された周波数で正常に動作しない場合に、例えば、ＣＰＵ上で動作するソフトウェアなどの外部から、その処理を実行するＦＳＭの状態に滞在する期間を延長するように設定して、その処理の実行に必要な時間を確保する。【選択図】        図４
2005327055.tif 000002
【特許請求の範囲】
【請求項１】
処理を実行するデータパスと処理の実行タイミングを制御するＦＳＭに基づくコントローラとを具備した回路において、前記コントローラは、前記ＦＳＭの任意の状態に対して、状態に滞在する期間を延長することができ、かつ、その延長期間は外部から任意に設定することができるＦＳＭ状態滞在延長制御機構を備えることを特徴とするコントローラの回路構造。
【請求項２】
コントローラは、クロック毎に状態を変化させる必要の無い記憶資源に対しては、クロック信号の供給を停止する機構を備えていることを特徴とする請求項１記載のコントローラの回路構造。
【請求項３】
回路の状態遷移タイミングをソフトウェアにより制御するように構成されていることを特徴とする請求項１記載のコントローラの回路構造。
【請求項４】
請求項１記載の回路の状態遷移タイミングを制御するものであることを特徴とするコントローラの制御ソフトウェア。
【請求項５】
回路の機能を動作レベルで記述した入力ファイルに基づいてＣＤＦＧを生成するＣＤＦＧ生成工程と、
前記ＣＤＦＧ生成工程によって生成されたＣＤＦＧと回路の制約条件を記述した制約ファイルとに基づいて、前記ＣＤＦＧの各処理をクロックに同期した時間に割り当てて実行順序を決定するスケジューリング工程と、
前記スケジューリング工程によってスケジューリングされた前記ＣＤＦＧの各処理に対して、処理を実行するリソースを割り当てるアロケーション工程と、
前記スケジューリング工程の結果と前記アロケーション工程の結果とに基づいて、処理を実行するデータパスとこのデータパスを制御するＦＳＭに基づくコントローラとを生成する回路生成工程と、
前記回路生成工程によって生成されたデータパスとコントローラの回路記述を出力する回路記述出力工程とを具備した高位合成方法であって、
前記回路生成工程は、
前記スケジューリング工程の結果と前記アロケーション工程の結果とに基づいて、処理を実行するデータパスを生成するデータパス生成工程と、
前記スケジューリング工程の結果に基づいて、前記データパスの実行を制御するための初期ＦＳＭを生成する初期ＦＳＭ生成工程と、
前記初期ＦＳＭ生成工程によって生成された初期ＦＳＭの任意の状態に対して、状態に滞在する期間を任意に延長できるように前記初期ＦＳＭを変形する変形ＦＳＭ生成工程と、
前記変形ＦＳＭ生成工程によって変形された変形ＦＳＭに基づいて、ＦＳＭの状態に延長して滞在する期間を外部から任意に設定できるＦＳＭ状態滞在延長制御機構を有するコントローラを生成するコントローラ生成工程と、を備えることを特徴とする高位合成方法。
【請求項６】
回路生成工程は、データパスの遅延情報を抽出するデータパス遅延情報抽出工程を備え、変形ＦＳＭ生成工程は、前記データパスの遅延情報に基づいて、ＦＳＭの状態毎にクリティカル度を計算し、この計算されたクリティカル度を利用してＦＳＭ状態滞在延長制御機構の必要性を判断したうえで、ＦＳＭを変形するものであることを特徴とする請求項５記載の高位合成方法。
【請求項７】
回路生成工程は、指定された面積増加率の範囲で、ＦＳＭの各状態に、ＦＳＭ状態滞在延長制御機構を挿入することで、ＦＳＭを変形するものであることを特徴とする請求項５記載の高位合成方法。
【請求項８】
回路生成工程は、データパスの遅延情報を抽出するデータパス遅延情報抽出工程を備え、変形ＦＳＭ生成工程は、前記データパスの遅延情報に基づいて、ＦＳＭの状態毎にクリティカル度を計算し、前記クリティカル度の高いＦＳＭの状態から、指定された面積増加の範囲で、ＦＳＭ状態滞在延長制御機構を挿入することで、ＦＳＭを変形するものであることを特徴とする請求項５記載の高位合成方法。
【請求項９】
データパスを構成する回路部品のライブラリ遅延情報と回路部品の接続関係とから算出した、記憶資源間のデータパス遅延値を、データパス遅延情報とすることを特徴とする請求項６または８記載の高位合成方法。
【請求項１０】
同一ＦＳＭの状態に存在する全ての記憶資源間のデータパス遅延から、指定された動作クロック周期を引いた値に基づいて、各ＦＳＭの状態のクリティカル度を求めることを特徴とする請求項６または８記載の高位合成方法。
【請求項１１】
コントローラ生成工程は、変形ＦＳＭ生成工程によって生成された変形ＦＳＭを解析して、ＦＳＭの状態に延長して滞在する間に、記憶資源が保持する値を更新しなくても処理の結果に影響を与えない記憶資源を抽出して、その記憶資源に対してクロック信号の供給を停止する機構を生成するようにコントローラを生成するものであることを特徴とする請求項５記載の高位合成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコントローラの回路構造、及び、そのコントローラを生成する高位合成方法に関し、特に、データパスとＦＳＭ（Ｆｉｎｉｔｅ Ｓｔａｔｅ Ｍａｃｈｉｎｅ）に基づくコントローラとを備えたデジタル回路において、ＦＳＭの状態に滞在する期間を任意に延長することができるコントローラの回路構造に関するとともに、デジタル回路の機能的な動作記述に基づいて、データパスとＦＳＭの状態に滞在する期間を任意に延長できる前記コントローラとを備えたデジタル回路の回路記述を生成する高位合成方法に関する。
【背景技術】
【０００２】
ＬＳＩの性能を向上させるために、アプリケーション専用のハードウェアが用いられることが多い。これは、プロセッサ上でソフトウェアを実行する場合より、専用ハードウェアでアプリケーションを実現した方が、処理時間、消費電力の面で勝っているからである。
【０００３】
通常、ハードウェアは、データパスと、このデータパスを制御するＦＳＭに基づくコントローラとによって構成される。図２８は、データパスとＦＳＭに基づくコントローラとを備えた従来の回路であり、後述する図１に示す動作を、後述する図２に示すＦＳＭに基づいて処理の実行順序を制御するように実現したものである。こうした回路の設計は、ハードウェア記述言語等を用いて、ＲＴＬ（Ｒｅｇｉｓｔｅｒ Ｔｒａｎｓｆｅｒ Ｌｅｖｅｌ）回路記述を作成することから始められる。この場合に、設計を論理設計、レイアウト設計と下流工程へ進めながら詳細化しても、ハードウェア仕様設計の段階で決定された動作周波数（制約動作周波数）で、回路を正常に動作させる必要がある。
【０００４】
近年のトランジスタ微細加工技術の発展により、膨大なトランジスタを１チップに集積できるようになった反面、トランジスタ間の配線による遅延（配線遅延）が、チップ性能に影響するようになってきている。配線遅延は、回路設計の下流工程であるレイアウト設計工程で確定するために、ＲＴＬ回路設計工程での予測が難しい。そのため、微細加工技術を用いた場合は、ＲＴＬ回路設計で決定した制約動作周波数を下流設計工程で満たさない場合が多い。
【０００５】
この問題（タイミング収束問題）を解決するために、さまざまな技術が提案されており、現在では、提案された技術を搭載した高価なＥＤＡ（Ｅｌｅｃｔｒｏｎｉｃ Ｄｅｓｉｇｎ Ａｕｔｏｍａｔｉｏｎ）ツールを用いて、各設計工程で回路を改善しながら、工程を進めている。しかし、これらＥＤＡツールを用いて回路を改善しても、回路が正常に動作しない場合もあり、その場合は、制約動作周波数で正常に動作するように、ＲＴＬ回路記述の再設計をするか、動作周波数を低くして処理が正常に動作する時間を確保する必要がある。
【０００６】
一方、特定のアプリケーション専用に構成されたハードウェアを短期間に、かつ効率的に設計するために、近年、ハードウェアの機能的な動作記述に基づいて、データパスとＦＳＭに基づくコントローラとにより構成されるデジタル回路のＲＴＬ（Ｒｅｇｉｓｔｅｒ Ｔｒａｎｓｆｅｒ Ｌｅｖｅｌ）回路記述を生成するための高位合成技術が利用されるようになってきている（例えば、非特許文献１参照。）。
【０００７】
図２９は、従来の高位合成技術の処理方法を示すフローチャートである。まず、ＣＤＦＧ（Ｃｏｎｔｒｌ Ｄａｔａ Ｆｌｏｗ Ｇｒａｐｈ）生成工程において、回路の機能を動作レベルで記述した入力ファイルに基づいてＣＤＦＧを生成する（ステップＳ１０１）。そして、スケジューリング工程において、ＣＤＦＧ生成工程によって生成されたＣＤＦＧと回路の動作周波数などの制約条件を記述した制約ファイルとに基づいて、ＣＤＦＧの各処理をクロックに同期した時間に割り当てて実行順序を決定する（ステップＳ１０２）。次に、アロケーション工程において、スケジューリング工程Ｓ１０２によってスケジューリングされたＣＤＦＧの各処理に対して、処理を実行するための資源を割り当てる（ステップＳ１０３）。その後、回路生成工程において、スケジューリング工程Ｓ１０２の結果とアロケーション工程Ｓ１０３の結果とに基づいて、処理を実行するデータパスとデータパスの処理をスケジュール結果通りに実行するように制御するためのＦＳＭ機構のコントローラとを生成する（Ｓ１０４）。最後に、回路記述出力工程において、回路生成工程Ｓ１０４によって生成されたデータパスとコントローラの回路記述を出力する（Ｓ１０５）。
【０００８】
このような高位合成技術によってＲＴＬ回路記述を生成する場合においても、生成された回路を改善しながら詳細化して行く過程で、制約動作周波数で正常に動作しないこともある。そのときには、ＲＴＬ回路記述を再生成するか、制約動作周波数より低い動作周波数で動作させて全ての処理が正常に動作するのに必要な時間を確保する。また、高位合成技術を利用する場合、制約動作周波数で正常に動作しない可能性があると判断すると、スケジューリング工程において、予め、余裕のある時間で処理を実行するように各処理をスケジューリングすることができる。
【非特許文献１】Ｄａｎｉｅｌ Ｇａｊｓｋｉ、他３名、“ＨＩＧＨ−ＬＥＶＥＬ ＳＹＮＴＨＥＳＩＳ Ｉｎｔｒｏｄｕｃｔｉｏｎ ｔｏ Ｃｈｉｐ ａｎｄ Ｓｙｓｔｅｍ Ｄｅｓｉｇｎ”、１９９２年、Ｋｌｕｗｅｒ Ａｃａｄｅｍｉｃ Ｐｕｂｌｉｓｈｅｒｓ
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、動作周波数を低くして回路を動作させる場合は、たとえ一部の処理のみが制約動作周波数で動作しない場合でも、正常に動作する他の処理を含めた全体の処理を低速に実行することになるため、回路全体の性能を落とすことになる。また、回路を再設計する場合は、多大な設計工数と設計期間を必要とするため、その回路を搭載する製品を早期に市場へ投入することが難しくなる。
【００１０】
また、高位合成技術によって回路を再生成する場合においても、下流の設計工程において確実に制約動作周波数で動作する回路が実現できるとは限らず、設計工程の手戻りが再度発生する可能性がある。
【００１１】
さらに、予め、処理時間に余裕があるスケジューリングを行った場合は、そのスケジュール通りにデータパスを制御するコントローラが生成されるため、下流工程において、制約動作周波数で正常に動作しなくなる危険を避けることができる一方、余裕があり過ぎる回路になる危険がある。余裕があり過ぎる場合は、必要以上に回路性能を低下させることになる。
【００１２】
そこで本発明は、制約動作周波数で正常に動作しない処理に対して、処理時間を確保するように外部から制御して正常に動作させることができるコントローラの回路構造と、その回路構造に基づくコントローラを搭載した回路を生成する高位合成方法とを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明に係るコントローラの回路構造は、係る問題を解決するために、データパスとＦＳＭに基づくコントローラとから構成されるデジタル回路において、ＦＳＭの任意の状態に対して、延長して滞在する期間を外部から任意に設定することができるＦＳＭ状態滞在延長制御機構を備えたコントローラを搭載する。これにより、ある処理が予定された周波数で正常に動作しない場合に、外部（例えば、ＣＰＵ上で動作するソフトウェアなど）から、その処理を実行するＦＳＭの状態に滞在する期間を延長するように設定して、その処理の実行に必要な時間を確保する。
【００１４】
本発明によれば、上記において、コントローラは、クロック毎に状態を変化させる必要の無い記憶資源に対しては、クロック信号の供給を停止する機構を備えていることが好適である。
【００１５】
また本発明によれば、上記において、回路の状態遷移タイミングをソフトウェアにより制御するように構成されていることが好適である。
また本発明は、上記回路の状態遷移タイミングを制御することを特徴とするコントローラの制御ソフトウェアであることが好適である。
【００１６】
また、本発明に係る高位合成方法は、デジタル回路の機能を動作レベルで記述した入力ファイルに基づいてＣＤＦＧ（Ｃｏｎｔｒｏｌ Ｄａｔａ Ｆｌｏｗ Ｇｒａｐｈ）を生成するＣＤＦＧ生成工程と、前記ＣＤＦＧ生成工程によって生成された前記ＣＤＦＧと回路の動作周波数などの制約条件を記述した制約ファイルとに基づいて、前記ＣＤＦＧの各処理をクロックに同期した時間に割り当てて実行順序を決定するスケジューリング工程と、前記スケジューリング工程によってスケジューリングされた前記ＣＤＦＧの各処理に対して、処理を実行するための資源を割り当てるアロケーション工程と、前記スケジューリング工程の結果と前記アロケーション工程の結果とに基づいて、処理を実行するデータパスとこのデータパスの各処理の実行順序を制御するためのＦＳＭに基づくコントローラを生成する回路生成工程と、前記回路生成工程によって生成されたデータパスとコントローラの回路記述を出力する回路記述出力工程とから構成され、前記回路生成工程は、前記アロケーションの結果に基づいて処理を実行するデータパスを生成するデータパス生成工程と、前記データパス生成工程によって生成されたデータパスの各処理をスケジュール通りに実行する初期ＦＳＭを生成する初期ＦＳＭ生成工程と、前記初期ＦＳＭ生成工程によって生成された初期ＦＳＭの任意の状態に対して、状態に滞在する期間を任意に延長することができるように前期初期ＦＳＭを変形するＦＳＭ変形工程と、前記ＦＳＭ変形工程によって変形された変形ＦＳＭに基づいて、ＦＳＭの状態に延長して滞在する期間を外部から任意に設定することができるＦＳＭ状態滞在延長制御機構を備えたコントローラを生成するコントローラ生成工程からなることを特徴とする。
【００１７】
本発明によれば、上記において、回路生成工程は、データパスの遅延情報を抽出するデータパス遅延情報抽出工程を備え、変形ＦＳＭ生成工程は、前記データパスの遅延情報に基づいて、ＦＳＭの状態毎にクリティカル度を計算し、この計算されたクリティカル度を利用してＦＳＭ状態滞在延長制御機構の必要性を判断したうえで、ＦＳＭを変形するものであることが好適である。
【００１８】
また本発明によれば、上記において、回路生成工程は、指定された面積増加率の範囲で、ＦＳＭの各状態に、ＦＳＭ状態滞在延長制御機構を挿入することで、ＦＳＭを変形するものであることが好適である。
【００１９】
また本発明によれば、上記において、回路生成工程は、データパスの遅延情報を抽出するデータパス遅延情報抽出工程を備え、変形ＦＳＭ生成工程は、前記データパスの遅延情報に基づいて、ＦＳＭの状態毎にクリティカル度を計算し、前記クリティカル度の高いＦＳＭの状態から、指定された面積増加の範囲で、ＦＳＭ状態滞在延長制御機構を挿入することで、ＦＳＭを変形するものであることが好適である。
【００２０】
また本発明によれば、上記において、データパスを構成する回路部品のライブラリ遅延情報と回路部品の接続関係とから算出した、記憶資源間のデータパス遅延値を、データパス遅延情報とすることが好適である。
【００２１】
また本発明によれば、上記において、同一ＦＳＭの状態に存在する全ての記憶資源間のデータパス遅延から、指定された動作クロック周期を引いた値に基づいて、各ＦＳＭの状態のクリティカル度を求めることが好適である。
【００２２】
また本発明によれば、上記において、コントローラ生成工程は、変形ＦＳＭ生成工程によって生成された変形ＦＳＭを解析して、ＦＳＭの状態に延長して滞在する間に、記憶資源が保持する値を更新しなくても処理の結果に影響を与えない記憶資源を抽出して、その記憶資源に対してクロック信号の供給を停止する機構を生成するようにコントローラを生成するものであることが好適である。
【発明の効果】
【００２３】
以上のように、本発明のＦＳＭ状態滞在延長制御機構を備えたコントローラの回路構造によれば、設計した回路が、制約動作周波数で正常に動作しないことが判明した場合にでも、回路を再設計することなく、外部から、正常に動作しないデータパスを処理しているＦＳＭの状態に、１クロック以上延長して滞在するように設定することにより、回路全体を制約動作周波数で動作させることができる。また、状態数が膨大で、多大な状態遷移を必要とする回路においては、従来のように、動作周波数を低くして回路全体を低速に動作させるよりも、制約動作周波数で正常に動作しない一部の状態の滞在期間のみを延長して動作させる方が、回路全体の性能低下を小さくすることができる。
【００２４】
また、論理設計工程以降の下流設計工程で、回路を改善しなくても、ＦＳＭの状態遷移を制御することで、制約動作周波数で動作する回路を容易に実現することができ、回路改善ＥＤＡツール費用、回路改善にかかる時間等を必要としない。
【００２５】
さらに、本発明の高位合成方法によれば、ＦＳＭの状態に延長して滞在する期間を外部から任意に設定できるＦＳＭ状態滞在延長制御機構を備えたコントローラを自動生成できるため、ＦＳＭ状態滞在延長制御機構を備えた回路の開発期間を短縮することができる。
【発明を実施するための最良の形態】
【００２６】
本発明の実施の形態に係る回路構造は、データパスと、このデータパスを制御するＦＳＭに基づくコントローラとを備え、このコントローラは、ＦＳＭの任意の状態に延長して滞在する機能を有し、かつ、延長して滞在する期間は外部から任意に設定することができる。このため、設計の下流工程において、回路が制約動作周波数で正常に動作しないことが判明した場合に、正常に動作しないデータパスを実行するＦＳＭの状態に延長して滞在することで、処理に必要な時間を確保することができる。従って、回路を再設計したり、また、動作周波数を低くして回路全体を低速に動作させたりすることなく、回路を制約動作周波数で正常に動作させることができる。
【００２７】
（実施の形態１）
この実施の形態１では、処理を実行するデータパスと、データパスの処理の実行順序を制御するＦＳＭに基づくコントローラとを備えた回路において、前記コントローラがＦＳＭの状態に延長して滞在する期間を外部から任意に設定できる機構を備える。
【００２８】
図１は、この実施の形態１において実現する回路が処理する動作を説明するための記述であり、入力ａとｂの加算の結果がレジスタＲＥＧ１に代入され、入力ｃとｄの乗算の結果がレジスタＲＥＧ２に代入され、レジスタＲＥＧ１が保持する値とレジスタＲＥＧ２が保持する値とを加算した結果がレジスタＲＥＧ１に再び代入される。
【００２９】
図２は、このような処理の実行順序を制御するＦＳＭと、ＦＳＭの各状態で実行する処理とを示す。ＦＳＭは状態Ｓ０とＳ１の２つの状態から構成される。状態Ｓ０では、入力ａと入力ｂを加算した結果をレジスタＲＥＧ１に代入する処理と、入力ｃと入力ｄを乗算した結果をレジスタＲＥＧ２に代入する処理とを、１クロックで実行する。また、状態Ｓ１では、レジスタＲＥＧ１が保持する値とレジスタＲＥＧ２が保持すると値を加算した結果をレジスタＲＥＧ１に再び代入する処理を、１クロックで実行する。
【００３０】
図３は、図２のＦＳＭの状態Ｓ０と状態Ｓ１とで実行される各処理が１クロックで実行できない場合を想定して、状態Ｓ０と状態Ｓ１に滞在する期間を任意に延長することができるように、図２のＦＳＭを変形した変形ＦＳＭを示す。ここで、状態Ｓ０から状態Ｓ１への遷移は、状態Ｓ０に滞在中に、状態Ｓ０に延長して滞在する期間をカウントするデクリメントカウンタＤＥＣ＿ＣＮＴ０が０になった場合に発生する。回路の実行の終了は、状態Ｓ１に滞在中に、状態Ｓ１に延長して滞在する期間をカウントするデクリメントカウンタＤＥＣ＿ＣＮＴ１が０になった場合に発生する。
【００３１】
図４は、図３の変形ＦＳＭに基づいてデータパスとコントローラとを回路として実現したものである。コントローラは、状態Ｓ０に延長して滞在する期間を制御するＦＳＭ滞在延長制御機構１（Ｓ２０１）と、状態Ｓ１に延長して滞在する期間を制御するＦＳＭ滞在延長制御機構２（Ｓ２０２）とを備える。デクリメントカウンタＤＥＣ＿ＣＮＴ０、ＤＥＣ＿ＣＮＴ１、レジスタＲＥＧ＿ａ、ＲＥＧ＿ｂ、ＲＥＧ＿ｃ、ＲＥＧ＿ｄの初期値は、回路を起動する前に外部から入力されるものとし、レジスタＲＥＧ＿Ｓ０、ＲＥＧ＿Ｓ１、ＲＥＧ１、ＲＥＧ２の初期値は０とする。また、回路は、外部から入力する起動信号を１サイクルだけ１にセットすることによって起動され、終了信号を１サイクルだけ１にセットすることにより、回路の実行の終了を知らせる。
【００３２】
以降において、図４に示す回路の動作を説明する。
まず、デクリメントカウンタＤＥＣ＿ＣＮＴ０とデクリメントカウンタＤＥＣ＿ＣＮＴ１とに０がセットされている場合の回路の動作を説明する。
【００３３】
起動信号が１にセットされると、論理和を実行するＯＲ＿Ｓ０は１を出力する。これにより、マルチプレクサＭＵＸ＿Ｓ０の選択ポートに入力される選択信号ｓｅｌ＿Ｓ０が１となり、ＭＵＸ＿Ｓ０は１を出力する。ＭＵＸ＿Ｓ０が出力した１は、レジスタＲＥＧ＿Ｓ０に入力されて、ＲＥＧ＿Ｓ０が保持する値に次のクロックの立ち上りで１が設定される（図５）。
【００３４】
次に、レジスタＲＥＧ＿Ｓ０が１に設定されて状態Ｓ０に滞在する第１のサイクルの動作を説明する。
データパスでは、マルチプレクサＭＵＸ１とＭＵＸ２のそれぞれに入力される選択信号ｓｅｌ１とｓｅｌ２は１となり、ＭＵＸ１とＭＵＸ２は、レジスタＲＥＧ＿ａとＲＥＧ＿ｂが保持する値をそれぞれ出力する。出力された値は、加算器ＡＤＤによって加算される。ＲＥＧ＿Ｓ０が１にセットされているので、論理和を実行するＯＲ＿ｒｅｇ１は１を出力して、レジスタＲＥＧ１のイネーブルポートに入力されるイネーブル信号ｒｅｇ１＿ｅｎが１となり、加算された結果は、次のサイクルの立ち上りでレジスタＲＥＧ１にセットされる。
【００３５】
一方、レジスタＲＥＧ＿ｃとＲＥＧ＿ｄが保持する値は、乗算器ＭＵＬによって乗算される。ＲＥＧ＿Ｓ０が１にセットされているので、図６に示すようにレジスタＲＥＧ２のイネーブルポートに入力されるイネーブル信号ｒｅｇ２＿ｅｎが１となり、乗算された結果は、次のクロックの立ち上りでレジスタＲＥＧ２にセットされる。
【００３６】
コントローラでは、ＦＳＭ滞在延長制御機構１（Ｓ２０１）で、図６に示すようにデクリメントカウンタＤＥＣ＿ＣＮＴ０は０にセットされているので、ゼロ比較器ＺＥＲＯ＿ＣＭＰ０の比較結果は常に真となり、ＺＥＲＯ＿ＣＭＰ０は常に１を出力する。従って、論理否定を実行するＮＯＴ＿Ｓ０で０に反転されて、論理積を実行するＡＮＤ＿Ｓ０ａに入力される。論理積を実行するＡＮＤ＿Ｓ０ａからは０が出力される。回路が起動している間、起動信号は０にセットされるので、選択信号ｓｅｌ＿ｓ０は０となり、マルチプレクサＭＵＸ＿Ｓ０が０を出力して、次のクロックの立ち上りでレジスタＲＥＧ＿Ｓ０に０がセットされる。また、ゼロ比較器ＺＥＲＯ＿ＣＭＰ０の比較結果として出力された１は、論理積を実行するＡＮＤ＿Ｓ０ｂへ入力される。レジスタＲＥＧ＿Ｓ０が現在保持する値は１であるので、ＡＮＤ＿Ｓ０ｂは１を出力する。
【００３７】
ＦＳＭ状態滞在延長制御機構２（Ｓ２０２）では、図６に示すように、論理和を実行するＯＲ＿Ｓ１にＡＮＤ＿Ｓ０ｂが出力した１が入力されて、ＯＲ＿Ｓ１は１を出力する。これにより、マルチプレクサＭＵＸ＿Ｓ１の選択ポートに入力される選択信号ｓｅｌ＿Ｓ１が１となり、ＭＵＸ＿Ｓ１は１を出力して、次のクロックの立ち上りで、レジスタＲＥＧ＿Ｓ１に１がセットされる。
【００３８】
次に、レジスタＲＥＧ＿Ｓ１が１にセットされて状態Ｓ１に滞在する第２のサイクルの動作を説明する。データパスでは、図７に示すように、マルチプレクサＭＵＸ１、ＭＵＸ２のそれぞれの選択ポートｓｅｌ１、ｓｅｌ２にＲＥＧ＿Ｓ０が保持する０が入力されて、それぞれ、レジスタＲＥＧ１とＲＥＧ２が保持する値を出力する。出力された値は、加算器ＡＤＤによって加算される。ＲＥＧ＿Ｓ１が１にセットされており、また、ＦＳＭ状態滞在延長制御機構２（Ｓ２０２）で、デクリメントカウンタＤＥＣ＿ＣＮＴ１は０にセットされているので、ゼロ比較器ＺＥＲＯ＿ＣＭＰ１の比較結果は常に真となり、ＺＥＲＯ＿ＣＭＰ１は常に１を出力する。従って、論理積を実行するＡＮＤ＿Ｓ１ｂは１を出力する。従って、論理和を実行するＯＲ＿ｒｅｇ１は１を出力して、レジスタＲＥＧ１のイネーブルポートに入力されるイネーブル信号ｒｅｇ１＿ｅｎが１となり、加算された結果は、次のサイクルの立ち上りでレジスタＲＥＧ１にセットされる。コントローラでは、上述したように、ＦＳＭ状態滞在延長制御機構２（Ｓ２０２）で、ＺＥＲＯ＿ＣＭＰ１は常に１を出力する。ゼロ比較器ＺＥＲＯ＿ＣＭＰ１が出力した１は論理否定を実行するＮＯＴ＿Ｓ１により０に反転されるので、論理積を実行するＡＮＤ＿Ｓ１ａは０を出力する。また、ＲＥＧ＿Ｓ０は０を保持するので、論理積を実行するＡＮＤ＿Ｓ０ｂは０を出力する。これにより、論理和を実行するＯＲ＿Ｓ１が０を出力して、マルチプレクサＭＵＸ＿Ｓ１の選択ポートに入力される選択信号ｓｅｌ＿Ｓ１が０になるので、ＭＵＸ＿Ｓ１は０を出力して、次のクロックの立ち上りで、レジスタＲＥＧ＿Ｓ１に０がセットされる。また、ゼロ比較器ＺＥＲＯ＿ＣＭＰ１が出力した１は、論理積を実行するＡＮＤ＿Ｓ１ｂにも入力される。レジスタＲＥＧ＿Ｓ１が保持する値が１であるので、ＡＮＤ＿Ｓ１ｂは１を出力する。これにより、回路の実行が終了することを知らせる終了信号が１になる。
【００３９】
次の第３のサイクル以降では、レジスタＲＥＧ＿Ｓ０とＲＥＧ＿Ｓ１が保持する値はともに０であるため、ＦＳＭのどの状態にも滞在せず、処理の結果であるレジスタＲＥＧ１の値を出力ポートへ出力する（図７）。
【００４０】
以上のようにして、デクリメントカウンタＤＥＣ＿ＣＮＴ０とＤＥＣ＿ＣＮＴ１をともに０にセットすることにより、回路を２サイクルで実行することができる。
【００４１】
続いて、デクリメントカウンタＤＥＣ＿ＣＮＴ０とＤＥＣ＿ＣＮＴ１をともに１がセットされた場合の回路の動作を説明する。
【００４２】
まず、図５に示すように起動信号が１にセットされると、論理和を実行するＯＲ＿Ｓ０は１を出力する。これにより、マルチプレクサＭＵＸ＿Ｓ０の選択ポートに入力される選択信号ｓｅｌ＿Ｓ０が１となり、ＭＵＸ＿Ｓ０は１を出力する。ＭＵＸ＿Ｓ０が出力した１は、レジスタＲＥＧ＿Ｓ０に入力されて、ＲＥＧ＿Ｓ０が保持する値が次のクロックの立ち上りで１に設定される。
【００４３】
次に、レジスタＲＥＧ＿Ｓ０が１に設定されて状態Ｓ０に滞在する第１のサイクルの動作を、図８を参照して説明する。まず、データパスでは、マルチプレクサＭＵＸ１とＭＵＸ２のそれぞれに入力される選択信号ｓｅｌ１とｓｅｌ２は１となり、ＭＵＸ１とＭＵＸ２は、レジスタＲＥＧ＿ａとＲＥＧ＿ｂが保持する値をそれぞれ出力する。出力された値は、加算器ＡＤＤによって加算される。ＲＥＧ＿Ｓ０が１にセットされているので、論理和を実行するＯＲ＿ｒｅｇ１は１を出力して、レジスタＲＥＧ１のイネーブルポートに入力されるイネーブル信号ｒｅｇ１＿ｅｎが１となり、加算された結果は、次のサイクルの立ち上りでレジスタＲＥＧ１にセットされる。
【００４４】
レジスタＲＥＧ＿ｃとＲＥＧ＿ｄが保持する値は、乗算器ＭＵＬによって乗算される。ＲＥＧ＿Ｓ０が１にセットされているので、レジスタＲＥＧ２のイネーブルポートに入力されるイネーブル信号ｒｅｇ２＿ｅｎが１となり、乗算された結果は、次のクロックの立ち上りでレジスタＲＥＧ２にセットされる。また、レジスタＲＥＧ＿Ｓ０が保持する値が１であるので、マルチプレクサＭＵＸ＿ａ、ＭＵＸ＿ｂ、ＭＵＸｃ、ＭＵＸ＿ｄのそれぞれの選択ポートに代入される選択信号ｓｅｌ＿ａ、ｓｅｌ＿ｂ、ｓｅｌ＿ｃ、ｓｅｌ＿ｄは１となり、ＭＵＸ＿ａ、ＭＵＸ＿ｂ、ＭＵＸ＿ｃ、ＭＵＸ＿ｄは、レジスタＲＥＧ＿ａ、ＲＥＧ＿ｂ、ＲＥＧ＿ｃ、ＲＥＧ＿ｄが保持する値をそれぞれ出力する。これにより、次のクロックの立ち上りで、ＲＥＧ＿ａ、ＲＥＧ＿ｂ、ＲＥＧ＿ｃ、ＲＥＧ＿ｄには、再び同じ値がセットされる。
【００４５】
コントローラでは、ＦＳＭ状態滞在延長制御機構１（Ｓ２０１）で、デクリメントカウンタＤＥＣ＿ＣＮＴ０は１にセットされているので、ゼロ比較器ＺＥＲＯ＿ＣＭＰ０の比較結果は偽となり、ＺＥＲＯ＿ＣＭＰ０は０を出力する。従って、論理否定を実行するＮＯＴ＿Ｓ０で１に反転されて、論理積を実行するＡＮＤ＿Ｓ０ａに入力される。レジスタＲＥＧ＿Ｓ０が保持する値は１であるので、ＡＮＤ＿Ｓ０ａは１を出力する。ＡＮＤ＿Ｓ０ａが出力した１は、論理和を実行するＯＲ＿Ｓ０に入力される。これにより、ＯＲ＿Ｓ０は１を出力し、マルチプレクサＭＵＸ＿Ｓ０の選択ポートに入力される選択信号が１になるので、ＭＵＸ＿Ｓ０は１を出力して、次のクロックの立ち上りでレジスタＲＥＧ＿Ｓ０に再び１がセットされる。また、ゼロ比較器ＺＥＲＯ＿ＣＭＰ０が出力した０は、論理積を実行するＡＮＤ＿Ｓ０ｂに入力されるので、ＡＮＤ＿Ｓ０ｂは０を出力する。  ＡＮＤ＿Ｓ０ｂが出力した０は、ＦＳＭ状態延長滞在制御機構２で、論理和を実行するＯＲ＿Ｓ１に入力される。レジスタＲＥＧ＿Ｓ１が保持する値が０であり、論理積を実行するＡＮＤ＿Ｓ１ａが０を出力するため、ＯＲ＿Ｓ１は０を出力する。これにより、マルチプレクサＭＵＸ＿Ｓ１の選択ポートに入力される選択信号ｓｅｌ＿Ｓ１が０になるので、次のクロックの立ち上りで、レジスタＲＥＧ＿Ｓ１に再び０がセットされる。また、デクリメントカウンタＤＥＣ＿ＣＮＴ０は、レジスタＲＥＧ＿Ｓ０が保持する値が１であるので、現在保持する値を１減算して、次のクロックの立ち上りで０をセットする。
【００４６】
次に、レジスタＲＥＧ＿Ｓ０が再び１に設定されて状態Ｓ０に滞在する第２のサイクルの動作を説明する。データパスを制御するコントローラのレジスタＲＥＧ＿Ｓ０とＲＥＧ＿Ｓ１が保持する値は、第１のサイクルと同じである。また、レジスタＲＥＧ＿Ｓ１が保持する値が０の時、ＦＳＭ状態滞在延長制御機構２のＡＮＤ＿Ｓ１ｂは常に０を出力するので、第１のサイクルと同じ値を出力する。従って、データパスは、第１のサイクルと同じ動作をする。なお、状態Ｓ０に滞在するときに、データパスの入力値を保持するレジスタＲＥＧ＿ａ、ＲＥＧ＿ｂ、ＲＥＧ＿ｃ、ＲＥＧ＿ｄは、第１のサイクルと同じ値を保持する。従って、第１のサイクルで行った処理を再度実行したことになる。
【００４７】
図９に示すように、コントローラでは、ＦＳＭ状態滞在延長制御機構１（Ｓ２０１）で、デクリメントカウンタＤＥＣ＿ＣＮＴ０は０にセットされているので、ゼロ比較器ＺＥＲＯ＿ＣＭＰ０の比較結果は真となり、ＺＥＲＯ＿ＣＭＰ０は１を出力する。従って、論理否定を実行するＮＯＴ＿Ｓ０で０に反転されて、論理積を実行するＡＮＤ＿Ｓ０ａに入力されるので、ＡＮＤ＿Ｓ０ａは０を出力する。回路が起動している間、起動信号は０にセットされるので、論理和を実行するＯＲ＿Ｓ０は０を出力する。これにより、選択信号ｓｅｌ＿ｓ０は０となり、マルチプレクサＭＵＸ＿Ｓ０が０を出力して、次のクロックの立ち上りでレジスタＲＥＧ＿Ｓ０に０がセットされる。また、ゼロ比較器ＺＥＲＯ＿ＣＭＰ０の比較結果として出力された１は、論理積を実行するＡＮＤ＿Ｓ０ｂへ入力される。レジスタＲＥＧ＿Ｓ０が現在保持する値は１であるので、ＡＮＤ＿Ｓ０ｂは１を出力する。ＦＳＭ状態滞在延長制御機構２（Ｓ２０２）では、論理和を実行するＯＲ＿Ｓ１にＡＮＤ＿Ｓ０ｂが出力した１が入力されて、ＯＲ＿Ｓ１は１を出力する。これにより、マルチプレクサＭＵＸ＿Ｓ１の選択ポートに入力される選択信号ｓｅｌ＿Ｓ１が１となり、ＭＵＸ＿Ｓ１は１を出力して、次のクロックの立ち上りで、レジスタＲＥＧ＿Ｓ２に１がセットされる。
【００４８】
次に、レジスタＲＥＧ＿Ｓ１が１に設定されて状態Ｓ１に滞在する第３のサイクルの動作を、図１０を参照して説明する。データパスでは、マルチプレクサＭＵＸ１、ＭＵＸ２のそれぞれの選択ポートｓｅｌ１、ｓｅｌ２にＲＥＧ＿Ｓ０が保持する０が入力されて、それぞれ、レジスタＲＥＧ１とＲＥＧ２が保持する値を出力する。出力された値は、加算器ＡＤＤによって加算される。しかしながら、ＦＳＭ状態滞在延長制御機構２（Ｓ２０２）で、デクリメントカウンタＤＥＣ＿ＣＮＴ１は１にセットされているので、ゼロ比較器ＺＥＲＯ＿ＣＭＰ１の比較結果は偽となり、ＺＥＲＯ＿ＣＭＰ１は０を出力する。従って、論理積を実行するＡＮＤ＿Ｓ１ｂは０を出力する。また、レジスタＲＥＧ＿Ｓ０が保持する値が０である。従って、論理和を実行するＯＲ＿ｒｅｇ１は０を出力するので、レジスタＲＥＧ１のイネーブルポートに入力されるイネーブル信号ｒｅｇ１＿ｅｎが０となり、次のサイクルの立ち上りでレジスタＲＥＧ１が保持する値は更新されない。また、レジスタＲＥＧ＿Ｓ０が保持する値が０であるので、レジスタＲＥＧ２のイネーブルポートに入力されるイネーブル信号ｒｅｇ２＿ｅｎが０となり、次のクロックの立ち上りで、ＲＥＧ２が保持する値は更新されない。
【００４９】
コントローラでは、ＦＳＭ状態滞在延長制御機構２（Ｓ２０２）で、上述したように、ＺＥＲＯ＿ＣＭＰ１は０を出力する。ゼロ比較器ＺＥＲＯ＿ＣＭＰ１が出力した０は論理否定を実行するＮＯＴ＿Ｓ１により１に反転される。レジスタＲＥＧ＿Ｓ１が保持する値が１であるので、論理積を実行するＡＮＤ＿Ｓ１ａは１を出力する。ＡＮＤ＿Ｓ１ａが出力した１は、論理和を実行するＯＲ＿Ｓ１に入力される。これにより、マルチプレクサＭＵＸ＿Ｓ１の選択ポートに入力される選択信号ｓｅｌ＿Ｓ１が１になるので、ＭＵＸ＿Ｓ１は１を出力して、次のクロックの立ち上りで、レジスタＲＥＧ＿Ｓ１に再び１がセットされる。また、デクリメントカウンタＤＥＣ＿ＣＮＴ１は、レジスタＲＥＧ＿Ｓ１が保持する値が１であるので、現在保持する値を１減算して、次のクロックの立ち上りで０をセットする。
【００５０】
次に、レジスタＲＥＧ＿Ｓ１が再び１に設定されて状態Ｓ１に滞在する第４のサイクルの動作を、図１１を参照して説明する。データパスでは、マルチプレクサＭＵＸ１、ＭＵＸ２のそれぞれの選択ポートｓｅｌ１、ｓｅｌ２にＲＥＧ＿Ｓ０が保持する０が入力されて、それぞれ、レジスタＲＥＧ＿ａとＲＥＧ＿ｂが保持する値を出力する。出力された値は、加算器ＡＤＤによって加算される。ＦＳＭ状態滞在延長制御機構２（Ｓ２０２）で、デクリメントカウンタＤＥＣ＿ＣＮＴ１は０にセットされているので、ゼロ比較器ＺＥＲＯ＿ＣＭＰ１の比較結果は真となり、ＺＥＲＯ＿ＣＭＰ１は１を出力する。また、レジスタＲＥＧ＿Ｓ１が保持する値が１であるので、論理積を実行するＡＮＤ＿Ｓ１ｂは１を出力する。ＡＮＤ＿Ｓ１ｂが出力した１は、論理和を実行するＯＲ＿ｒｅｇ１に入力されるので、ＯＲ＿ｒｅｇ１は１を出力する。従って、レジスタＲＥＧ１のイネーブルポートに入力されるイネーブル信号ｒｅｇ１＿ｅｎが１となり、次のサイクルの立ち上りで、加算された結果が、レジスタＲＥＧ１にセットされる。なお、状態Ｓ１に滞在するときに、データパスの入力値を保持するレジスタＲＥＧ１とＲＥＧ２は、第３のサイクルと同じ値を保持する。したがって、第３のサイクルで行った処理を再度実行したことになる。第３のサイクルとの違いは、加算の結果がレジスタＲＥＧ１にセットされたことである。
【００５１】
コントローラでは、上述したように、ＺＥＲＯ＿ＣＭＰ１は１を出力する。ゼロ比較器ＺＥＲＯ＿ＣＭＰ１が出力した１は論理否定を実行するＮＯＴ＿Ｓ１により０に反転されるので、論理積を実行するＡＮＤ＿Ｓ１ａは０を出力する。また、ＲＥＧ＿Ｓ０は０を保持するので、論理積を実行するＡＮＤ＿Ｓ０ｂは０を出力する。これにより、論理和を実行するＯＲ＿Ｓ１が０を出力して、マルチプレクサＭＵＸ＿Ｓ１の選択ポートに入力される選択信号ｓｅｌ＿Ｓ１が０になるので、ＭＵＸ＿Ｓ１は０を出力して、次のクロックの立ち上りで、レジスタＲＥＧ＿Ｓ１に０がセットされる。また、ゼロ比較器ＺＥＲＯ＿ＣＭＰ１が出力した１は、論理積を実行するＡＮＤ＿Ｓ１ｂにも入力される。レジスタＲＥＧ＿Ｓ１が保持する値が１であるので、ＡＮＤ＿Ｓ１ｂは１を出力する。これにより、回路の実行が終了することを知らせる終了信号が１になる（図７）。
【００５２】
次の第５のサイクル以降では、レジスタＲＥＧ＿Ｓ０とＲＥＧ＿Ｓ１が保持する値はともに０であるため、ＦＳＭのどの状態にも滞在せず、処理の結果であるレジスタＲＥＧ１の値を出力ポートへ出力する。
【００５３】
以上のようにして、デクリメントカウンタＤＥＣ＿ＣＮＴ０とＤＥＣ＿ＣＮＴ１をともに１にセットすることにより、回路全体を４サイクルで実行しているが、ＤＥＣ＿ＣＮＴ０を１にセットすることにより、状態Ｓ０に滞在する期間を１サイクル延長して、状態Ｓ０で実行する処理を２サイクルで実行している。また、ＤＥＣ＿ＣＮＴ１を１にセットすることにより、状態Ｓ１に滞在する期間を１サイクル延長して、状態Ｓ１で実行する処理を２サイクルで実行している。なお、ここでは、ＤＥＣ＿ＣＮＴ０とＤＥＣ＿ＣＮＴ１をともに０にセットしているが、任意の値をセットすることも可能であり、各状態に滞在する期間を任意に延長することができる。
【００５４】
以上説明したように、実施の形態１によれば、デクリメントカウンタにセットした値と同じだけ、ＦＳＭの状態に延長して滞在することができる。延長して滞在する間は、その状態で実行される処理の入力値はレジスタ等の記憶資源によって保持されるので、延長して滞在した分だけ処理に費やすサイクルを増やすことができる。従って、制約動作周波数で正常に動作しない処理がある場合、その処理を実行する状態に、１クロック以上延長して滞在するように設定することにより、回路を再設計したり、動作周波数を低くすることなく、制約動作周波数で正常に動作させることができる。なお、実施の形態１では、状態Ｓ０と状態Ｓ１の両方にＦＳＭ状態滞在延長制御機構を搭載したが、これを任意の状態に対して搭載することが可能であるので、滞在する期間を延長したい状態のみに、この機構を搭載しても良い。また、ＦＳＭ状態滞在延長制御機構は、実施の形態１で説明した機能を実現できるものであれば、その実現方法は実施の形態１で示した構造以外のものであっても良い。
【００５５】
（実施の形態２）
実施の形態２では、実施の形態１において生成されたコントローラが、ゲーテッドクロックを生成する。
【００５６】
実施の形態１で実現した図４の回路において、レジスタＲＥＧ１が保持する値は、ＦＳＭの状態Ｓ０に滞在中、すなわち、レジスタＲＥＧ＿Ｓ０が保持する値が１である場合か、状態Ｓ１に滞在中にＦＳＭ状態滞在延長制御機構２のゼロ比較器ＺＥＲＯ＿ＣＭＰ１が１を出力するとき、すなわち、ＡＮＤ＿Ｓ１ｂが１を出力する場合に、更新される。さらに、状態Ｓ０に滞在中にレジスタＲＥＧ１にセットされた値で、回路の処理に必要とされる値は、状態Ｓ１の加算処理の入力となる、ＦＳＭ状態滞在延長制御機構１のゼロ比較器ＺＥＲＯ＿ＣＭＰ０が１を出力した場合の値のみである。また、状態Ｓ２でセットされる値は、状態Ｓ０に滞在中で、ＦＳＭ状態滞在延長制御機構１が１を出力される場合にのみ、更新される。この値は、状態Ｓ１の加算処理の入力となるので、回路の処理に必要とされる。回路は、これらの処理に必要な値のみを保持することができれば、処理を正しく実行することができるので、実施の形態１で実現したコントローラが、レジスタＲＥＧ１とＲＥＧ２に処理に必要な値がセットされる場合にのみ、ＲＥＧ１とＲＥＧ２にクロックを供給して、ＲＥＧ１とＲＥＧ２が保持する値を更新するように変形する。
【００５７】
図１２は、実施の形態１で変形されたコントローラを、レジスタＲＥＧ１とＲＥＧ２に入力されるクロックをゲーテッドするように実現の形態を変形したものである。ここで、レジスタＲＥＧ１は、ＦＳＭの状態Ｓ０に滞在中に、ＦＳＭ状態滞在延長制御機構１のゼロ比較器ＺＥＲＯ＿ＣＭＰ０が１を出力する場合、すなわち、ＡＮＤ＿Ｓ０ｂが１を出力するか、状態Ｓ１に滞在中に、ＦＳＭ状態滞在延長制御機構２のゼロ比較器ＺＥＲＯ＿ＣＭＰ１が１を出力する場合、すなわち、ＡＮＤ＿Ｓ１ｂが１を出力する場合のみに、クロックが供給される。また、レジスタＲＥＧ２は、状態Ｓ０に滞在中に、ＺＥＲＯ＿ＣＭＰ１が１を出力する場合にのみ、クロックが供給される。これにより、レジスタＲＥＧ１とＲＥＧ２は、回路が処理を正しく実行するのに必要な値が入力されたときのみ、保持する値を更新する。
【００５８】
以上説明したように、実施の形態２によれば、データパスのレジスタに回路が処理を正しく実行するために必要とする値が入力された時のみ、レジスタにクロックが供給されて、レジスタが保持する値を更新する。これにより、レジスタに共有されるクロックが削減されるので、レジスタが消費する電力を削減することができる。従って、回路が全体として消費する電力を削減することができる。
【００５９】
（実施の形態２Ａ）
ここでは、実施の形態１で実現した回路を搭載する半導体集積回路システムと、実施の形態１で実現した回路がＦＳＭの状態に延長して滞在するように制御するソフトウェアとを、一例を使って説明する。
【００６０】
図１３は、実施の形態１で実現した回路を搭載した半導体集積回路システムの構成を示すものであり、実施の形態１で実現した回路にバスと接続するためのバスインターフェースを追加した専用ハードウェアエンジンと、ＣＰＵと、ＣＰＵ上で実行するプログラムを格納するＲＯＭと、ＣＰＵが処理するデータを格納するＲＡＭと、これらのハードウェアを接続するバスとから構成される。
【００６１】
図１４は、実施の形態１で実現した回路にバスと接続するためのバスインターフェース（Ｓ４０１）を追加した専用ハードウェアエンジンを示す。専用ハードウェアエンジンに搭載されたインターフェースは、実施の形態１で実現した回路に与える入力を保持するレジスタと、回路から出力された値を保持するレジスタとを備えており、起動信号（ｓｔａｒｔ）、状態Ｓ０に延長して滞在する期間（ｄｅｌａｙ０）、状態Ｓ１に延長して滞在する期間（ｄｅｌａｙ１）、処理の入力値ａ、ｂ、ｃ、ｄ、処理の出力値ｏｕｔ、終了信号ｆｉｎｉｓｈは、それぞれレジスタＭＲＥＧ＿ｓｔａｒｔ、ＭＲＥＧ＿ｄｅｌａｙ０、ＭＲＥＧ＿ｄｅｌａｙ１、ＭＲＥＧ＿ａ、ＭＲＥＧ＿ｂ、ＭＲＥＧ＿ｃ、ＭＲＥＧ＿ｄ、ＭＲＥＧ＿ｏｕｔ、ＭＲＥＧ＿ｆｉｎｉｓｈによって保持される。また、これらのレジスタは、バスを経由してアクセスできるように、それぞれを識別するための固有の番地（アドレス）が割り当てられたメモリマップドレジスタであり、ＣＰＵ上で実行するプログラムにおいて、これらのアドレスに値を代入することにより、対応するメモリマップドレジスタが保持する値を更新することができる。また、これらのアドレスを参照することにより、対応するメモリマップドレジスタから保持する値を取得することができる。メモリマップドレジスタが保持する値の更新と参照に関する制御は、専用ハードウェアエンジンに対して出力される回路選択信号が１になった場合にのみ行われる。どのメモリマップドレジスタに対するアクセスであるかは、入力されたアドレスをデコードすることにより認識する。
【００６２】
図１５は、メモリマップドレジスタＭＲＥＧ＿ｄｅｌａｙ０、ＭＲＥＧ＿ｄｅｌａｙ１、ＭＲＥＧ＿ａ、ＭＲＥＧ＿ｂ、ＭＲＥＧ＿ｃ、ＭＲＥＧ＿ｄに対して、それぞれ１、１、１０、２０、３０、４０を順番に書き込み、次に、ＭＲＥＧ＿ｓｔａｒｔに対して１を書き込むことにより、実施の形態１で実現した回路を起動し、次に、実施の形態１で実現した回路がＭＲＥＧ＿ｆｉｎｉｓｈに対して回路の実行の終了を知らせる１を書き込むのを待ってから、回路が処理の結果としてＭＲＥＧ＿ｏｕｔに対して出力した値を読み込むようにプログラムされたソフトウェアの一例である。なお、各メモリマップドレジスタに対しては、ここで設定した値以外に、任意の値を設定することが可能である。
【００６３】
以降、図１４に示す専用ハードウェアエンジンと図１５に示すソフトウェアとを使って、図１３に示す半導体集積回路システムにおいて、専用ハードウェアエンジンを構成する実施の形態１で実現された回路は、ＦＳＭの任意の状態に延長して滞在して処理を実行するサイクルを伸ばすことができ、かつ、その滞在期間はソフトウェアによって任意に設定できることを示す。
【００６４】
まず、図１５における１５行目は、ＭＲＥＧ＿ｄｅｌａｙ０＿ａｄｄｒによって定義されたアドレス０ｘ８００００００４に対して１を代入する動作であり、１６行目は、ＭＲＥＧ＿ｄｅｌａｙ１＿ａｄｄｒによって定義されたアドレス０ｘ８００００００８に対して１を代入する動作であり、１７行目は、ＭＲＥＧ＿ａ＿ａｄｄｒによって定義されたアドレス０ｘ８００００００ｃに対して１０を代入する動作であり、１８行目は、ＭＲＥＧ＿ｂ＿ａｄｄｒによって定義されたアドレス０ｘ８０００００１０に対して２０を代入する動作であり、１９行目は、ＭＲＥＧ＿ｃ＿ａｄｄｒによって定義されたアドレス０ｘ８０００００１４に対して３０を代入する動作であり、２０行目は、ＭＲＥＧ＿ｄ＿ａｄｄｒによって定義されたアドレス０ｘ８０００００１８に対して４０を代入する動作であり、２１行目は、ＭＲＥＧ＿ｓｔａｒｔ＿ａｄｄｒによって定義されたアドレス０ｘ８００００００に対して１を代入する動作である。
【００６５】
例えば、１５行目の半導体集積回路システムの動作では、ＣＰＵからアドレスとして０ｘ８００００００４が出力され、ライトデータとして１が出力され、ライト信号としてライトアクセスを表わす１が出力され、専用ハードウェアエンジンに対する回路選択信号として１が出力される。次に、バスインターフェースは、アドレスデコーダによってＭＲＥＧ＿ｄｅｌａｙ０に対するライトアクセスであることを認識して、アドレスデコーダは、ＭＲＥＧ＿ｄｅｌａｙ０に対するライトイネーブル信号を１にして、ＭＲＥＧ＿ｄｅｌａｙ０が保持する値を、ライトデータとして入力された１に更新する。同様にして、１６行目の動作では、ＭＲＥＧ＿ｄｅｌａｙ１が保持する値を１に更新して、１７行目の動作では、ＭＲＥＧ＿ａが保持する値を１０に更新して、１８行目の動作では、ＭＲＥＧ＿ｂが保持する値を２０に更新して、１９行目の動作では、ＭＲＥＧ＿ｃが保持する値を３０に更新して、２０行目の動作では、ＭＲＥＧ＿ｄが保持する値を４０に更新して、２１行目の動作では、ＭＲＥＧ＿ｓｔａｒｔが保持する値を１に更新する。これにより、実施の形態１で実現された図４に示す回路は、ＤＥＣ＿ＣＮＴ０が１にセットされて状態Ｓ０に延長して滞在する期間は１サイクルに設定され、ＤＥＣ＿ＣＮＴ１が１にセットされて状態Ｓ０に延長して滞在する期間は１サイクルに設定され、ＲＥＧ＿ａ、ＲＥＧ＿ｂ、ＲＥＧ＿ｃ、ＲＥＧ＿ｄが、それぞれ、１０、２０、３０、４０にセットされた状態で回路が起動される。
【００６６】
その後、ソフトウェアは、２３行目から２５行目の動作を繰り返し実行する。２４行目は、ＭＲＥＧ＿ｆｉｎｉｓｈ＿ａｄｄｒによって定義されたアドレス０ｘ８０００００２０に対応するＭＲＥＧ＿ｆｉｎｉｓｈが保持する値を参照する動作であり、参照された値が１である場合には、２３行目から２５行目までを繰り返し実行するループを抜ける。２４行目における半導体集積回路システムの動作では、ＣＰＵからアドレスとして０ｘ８０００００２０が出力され、ライト信号としてリードアクセスを表わす０が出力され、専用ハードウェアエンジンに対する回路選択信号として１が出力される。次に、バスインターフェースは、アドレスデコーダによってＭＲＥＧ＿ｆｉｎｉｓｈに対するリードアクセスであることを認識して、ＭＲＥＧ＿ｆｉｎｉｓｈが保持する値をリードデータとして出力するようにＭＵＸ１を制御する選択信号を出力する。また、同時に、リードデータを出力したことを伝えるためのリードネーブル信号を１にセットして出力する。図４に示すＦＳＭ状態滞在延長制御機構のＤＥＣ＿ＣＮＴ０とＤＥＣ＿ＣＮＴ１はともに１にセットされているので、回路は、実施の形態１で説明したように４サイクル後に処理の実行を終了する。その後に、処理の結果がＭＲＥＧ＿ｏｕｔにセットされ、また、ＭＲＥＧ＿ｆｉｎｉｓｈに回路の実行の終了を知らせる１がセットされる。
【００６７】
次に、ソフトウェアは、ＭＲＥＧ＿ｆｉｎｉｓｈに１がセットされると、２６行目の動作へ進む。２７行目は、ＭＲＥＧ＿ｏｕｔ＿ａｄｄｒによって定義されたアドレス０ｘ８０００００１ｃに対応するＭＲＥＧ＿ｏｕｔが保持する値を参照する動作であり、参照した値を変数ｒｅｓｕｌｔに書き込む。２７行目の動作における半導体集積回路システムの動作では、ＣＰＵからアドレスとして０ｘ８０００００１ｃが出力され、ライト信号としてリードアクセスを表わす０が出力され、専用ハードウェアエンジンに対する回路選択信号として１が出力される。次に、バスインターフェースは、アドレスデコーダによってＭＲＥＧ＿ｏｕｔに対するリードアクセスであることを認識して、ＭＲＥＧ＿ｏｕｔが保持する値をリードデータとして出力するようにＭＵＸ１を制御する選択信号を出力する。
【００６８】
以上説明したように、実施の形態２Ａによれば、半導体集積回路システムの一部として搭載された実施の形態１で実現した回路に対して、ＦＳＭの状態に延長して滞在する期間をソフトウェアによって任意に設定して実行することができる。従って、半導体集積回路システムの構成やバスインターフェースのハードウェア構成を変更することなく、ソフトウェアとして実現したプログラムを変更することによって、回路が処理に費やすサイクル数を任意に伸ばすことができる。
【００６９】
（実施の形態３）
図１６は、実施の形態３に係る高位合成方法を示すフローチャートである。Ｓ１０１は、ハードウェアの機能を動作レベルで記述した入力ファイルに基づいてＣＤＦＧを生成するＣＤＦＧ生成工程であり、Ｓ１０２は、回路の動作周波数などの制約条件を記述した制約ファイルとＣＤＦＧ生成工程で生成されたＣＤＦＧとに基づいて、ＣＤＦＧの各ノードをクロックに同期した時間に割り当てて処理の実行順序を決定するスケジューリング工程であり、Ｓ１０３は、スケジューリング後のＣＤＦＧの各ノードに対して回路を構成する資源を割り当てるアロケーション工程であり、Ｓ１０４は、回路生成工程であり、Ｓ１０５は、回路生成工程（Ｓ１０４）で生成されたデータパスとコントローラの回路記述を出力する回路記述出力工程である。回路生成工程（Ｓ１０４）は、スケジューリング工程（Ｓ１０２）の結果とアロケーション工程（Ｓ１０３）の結果とに基づいて、処理を実行するデータパスを生成するデータパス生成工程（Ｓ１０４１）と、スケジューリング工程（Ｓ１０２）の結果に基づいて処理がスケジュール通りに実行されるように制御するための初期ＦＳＭを生成する初期ＦＳＭ生成工程（Ｓ１０４２）と、初期ＦＳＭ生成工程（Ｓ１０４２）で生成された初期ＦＳＭに基づいて、ＦＳＭの任意の状態に対して滞在を延長する期間を任意に設定できるようにＦＳＭを変形する変形ＦＳＭ生成工程（Ｓ１０４３）と、変形ＦＳＭ生成工程（Ｓ１０４３）で変形された変形ＦＳＭに基づいてデータパスを制御するためのコントローラを生成するコントローラ生成工程（Ｓ１０４４）とから構成される。
以上のように構成された実施の形態３の高位合成方法について、その一動作例を説明する。
【００７０】
まず、ＣＤＦＧ生成工程（Ｓ１０１）にハードウェアの機能的な動作を記述した入力ファイルを入力する。図１７は、回路の機能を動作レベルで記述した入力ファイルの一例を示したものであり、入力変数ａとｂを加算した結果を変数Ｘに代入し、入力変数ｃとｄを乗算した結果を変数Ｙに代入し、変数ＸとＹに代入された値を加算した結果を出力変数Ｚに代入する処理を行う。
【００７１】
図１６のＣＤＦＧ生成工程（Ｓ１０１）では、入力ファイルに記述された動作の字句解析、構文解析、意味解析を順に行い、ＣＤＦＧを生成する。図１８は、図１７の動作レベル記述に対して生成されたＣＤＦＧであり、制御の流れを表わすＣＦＧ（Ｃｏｎｔｒｏｌ Ｆｌｏｗ Ｇｒａｐｈ）と、データの流れを表わすＤＦＧ（Ｄａｔａ Ｆｌｏｗ Ｇｒａｐｈ）とから構成される。図１８の動作レベル記述には、制御を表わす記述がないため、ＣＦＧのノードは１つだけとなる。
【００７２】
次に、図１６のスケジューリング工程（Ｓ１０２）において、ＣＤＦＧと回路の制約条件を記述した制約ファイルに基づいて、ＣＤＦＧの各処理に対してクロックに同期した時間を割り当てて実行する順序を決定する。ＣＦＧの遷移が発生する場合は、１クロックを要するものとする。図１９は、図１８のＣＤＦＧをスケジューリングして、ＤＦＧの各ノードをクロックに同期して実行順序を決定したものである。
【００７３】
次に、アロケーション工程（Ｓ１０３）において、スケジューリング工程でスケジューリングされたＣＤＦＧに対して、各処理を実行する資源を割り当てる。図２０は、図１９のＣＤＦＧに対して、各処理を実行する資源を割り当てたものである。変数ａ、ｂ、ｃ、ｄ、Ｙは、それぞれレジスタＲＥＧ＿ａ、ＲＥＧ＿ｂ、ＲＥＧ＿ｃ、ＲＥＧ＿ｄ、ＲＥＧ２に割り当てられる。変数ＸとＺは、レジスタＲＥＧ１に割り当てられる。加算オペレーション＋１と＋２は加算器ＡＤＤに割り当てられ、乗算オペレーション＊は乗算器ＭＵＬに割り当てられる。
【００７４】
次に、回路生成工程（Ｓ１０４）において、以下の処理を実施する。まず、データパス生成工程（Ｓ１０４１）において、スケジューリング工程（Ｓ１０２）の結果とアロケーション工程（Ｓ１０３）の結果とに基づいて処理を実行するデータパスを生成する。図２１は、図２０に示すスケジューリングの結果とアロケーションの結果とに基づいて生成されたデータパスを示す。加算器ＡＤＤは、図２０における加算オペレーション＋１と＋２の両方を実行するため、その加算入力がＭＵＸ１とＭＵＸ２によって制御されている。
【００７５】
次に、初期ＦＳＭ生成工程（Ｓ１０４２）において、データパス生成工程（Ｓ１０４１）で生成されたデータパスがスケジューリング工程（Ｓ１０２）で決められたスケジュール通りに実行されるように制御するための初期ＦＳＭを生成する。図２１のデータパスを図１９に示すスケジュールで実行されるように制御するためのＦＳＭは、実施の形態１で示された図２に示されるＦＳＭと同じになる。
【００７６】
次に、変形ＦＳＭ生成工程（Ｓ１０４３）において、初期ＦＳＭ生成工程（Ｓ１０４２）で生成された初期ＦＳＭに基づいて、任意のＦＳＭの状態に対して、滞在する期間を外部から任意に延長することができるように、そのＦＳＭを変形する。変形後の変形ＦＳＭは、実施の形態１で示された図３に示されるＦＳＭと同じになる。
【００７７】
次に、コントローラ生成工程（Ｓ１０４４）において、変形ＦＳＭ生成工程（Ｓ１０４３）によって変形された変形ＦＳＭに基づいて、外部から滞在期間を任意に延長することができるように構成されたコントローラを回路として実現する。また、実現するコントローラは、ＦＳＭを解析することによって、ＦＳＭの状態に延長して滞在している間に、クロックの供給を停止しても処理の結果に影響を与えない記憶資源に対して、ゲーテッドクロックを生成するように構成することができる。図３に示す変形ＦＳＭでは、状態Ｓ０に延長して滞在している間は、状態Ｓ０で実行される加算と乗算の結果は、それぞれレジスタＲＥＧ１とＲＥＧ２に代入されても、状態Ｓ１に遷移するまでは使用されないことが分かる。従って、状態Ｓ１に遷移する直前に、ＲＥＧ１とＲＥＧ２が保持する値を更新すればよいので、状態Ｓ０に延長して滞在している間は、ＲＥＧ１とＲＥＧ２に対するクロックの供給を停止しても処理の結果に影響を与えない。また、状態Ｓ１で実行されるレジスタＲＥＧ１が保持する値とＲＥＧ２が保持する値の加算は、結果がレジスタＲＥＧ１に代入されるが、状態Ｓ１に延長して滞在している間に、ＲＥＧ１が保持する値を更新すると、更新されたＲＥＧ１の値を使ってＲＥＧ２の値と加算を延長滞在中に行うことになる。従って、もともとＲＥＧ１が保持する値とＲＥＧ２が保持する値の加算の結果を得るために、状態Ｓ１に延長して滞在する間は、ＲＥＧ１の値を更新しないようにコントローラは制御する必要がある。このことから、状態Ｓ１に延長して滞在する間は、ＲＥＧ１に対するクロックの供給を停止しても加算の結果に影響を与えないことが分かる。
【００７８】
このようにして、ＦＳＭを解析することによって、ＦＳＭの状態に延長して滞在する間にクロックの供給を停止しても処理の結果に影響を与えない記憶資源を抽出することができる。このため、コントローラ生成工程（Ｓ１０４４）は、抽出された記憶資源に対して、ＦＳＭの状態に延長して滞在する間に、クロックの供給を停止するようにコントローラを生成することができる。変形ＦＳＭに基づいて、外部から滞在期間を任意に延長することができて、さらに、ゲーテッドクロックを生成するように構成されたコントローラは、図１２に示すものと同じである。
【００７９】
最後に、回路記述出力工程（Ｓ１０５）において、回路生成工程（Ｓ１０４）によって生成されたデータパスとコントローラの回路記述を出力する。図２２と図２３は、それぞれ出力されるデータパスとコントローラの回路記述の一例を示したものである。
【００８０】
以上説明したように、実施の形態３によれば、高位合成の回路生成工程において、スケジューリングの結果に基づいて生成されたＦＳＭを変形して、ＦＳＭの任意の状態に対して、スケジューリングで決められた滞在期間を超えて滞在できるようにする。また、延長して滞在する期間を外部から設定できるＦＳＭ状態滞在延長制御機構を備えたコントローラを回路として実現する。従って、制約動作周波数で正常に動作しない処理がある場合に、その処理を実行するＦＳＭの状態に、１クロック以上延長して滞在するように設定することにより、回路を再設計したり、動作周波数を低くすることなく、制約動作周波数で正常に動作させることができる。
【００８１】
さらに、コントローラは、ＦＳＭを解析することにより、ＦＳＭの状態に延長して滞在する場合に、クロックの供給を停止しても回路の処理の結果に影響を与えない記憶資源を抽出して、その記憶資源に対してゲーテッドクロックを生成するように構成することができるので、そのように構成されたコントローラを生成して回路に備えることにより、記憶資源が消費する電力を削減して、回路全体が消費する電力を小さく抑えることができる。
【００８２】
（実施の形態４）
図２４は、実施の形態４に係る高位合成方法を示すフローチャートである。図２４内のＳ１０１〜Ｓ１０５、Ｓ１０４１、Ｓ１０４２、Ｓ１０４４は、実施の形態３についての図１６と同様の工程である。Ｓ２１０１は、データパス遅延を抽出するデータパス遅延抽出工程、Ｓ２１０２は、データパス遅延を用いて、ＦＳＭの状態毎のクリティカル度を計算するクリティカル度計算工程、Ｓ２１０３は、クリティカル度を用いて、初期ＦＳＭの特定状態にのみＦＳＭ状態滞在延長制御機構を挿入する部分変形ＦＳＭ生成工程である。
【００８３】
以降、実施の形態４の高位合成方法について、その一動作例を用いて説明する。
ＣＤＦＧ生成工程（Ｓ１０１）からデータパス生成工程（Ｓ１０４１）までは実施の形態３と同様の処理を行ない、図２１のデータパスを生成する。
【００８４】
次に、データパス遅延抽出工程（Ｓ２１０１）において、データパス生成工程（Ｓ１０４１）によって生成されたデータパスの遅延を抽出する。図２５（ａ）は、図２１のデータパスに対して抽出した記憶資源間の遅延値を示したものであり、加算器ＡＤＤの遅延を５、乗算器ＭＵＬの遅延を１５、マルチプレクサＭＵＸ１とＭＵＸ２の遅延を１、各資源間の配線遅延を配線に接続された資源数から１引いた値、レジスタの遅延を１と仮定したものである。そして、このような仮定のもとで、レジスタＲＥＧ＿ａ、ＭＵＸ１、加算器ＡＤＤ、レジスタＲＥＧ１のデータパスと、レジスタＲＥＧ１、ＭＵＸ１、加算器ＡＤＤ、レジスタＲＥＧ１のデータパスと、レジスタＲＥＧ＿ｂ、ＭＵＸ２、加算器ＡＤＤ、レジスタＲＥＧ１のデータパスと、レジスタＲＥＧ２、ＭＵＸ２、加算器ＡＤＤ、レジスタＲＥＧ１のデータパスの遅延値は１１であり、レジスタＲＥＧ＿ｃ、乗算器ＭＵＬ、レジスタＲＥＧ２のデータパスと、レジスタＲＥＧ＿ｄ、乗算器ＭＵＬ、レジスタＲＥＧ２のデータパスの遅延値は１９であることを示す。
【００８５】
次に、初期ＦＳＭ生成工程（Ｓ１０４２）において、データパス生成工程（Ｓ１０４１）で生成されたデータパスがスケジューリング工程（Ｓ１０２）で決められたスケジュール通りに実行されるように制御するための初期ＦＳＭを生成する。図２１のデータパスを図１９に示すスケジュールで実行されるように制御するためのＦＳＭは、実施の形態１で示された図２に示されるＦＳＭと同じになる。
【００８６】
次に、クリティカル度計算工程（Ｓ２１０２）において、データパス遅延抽出工程（Ｓ２１０１）で抽出されたデータパスの遅延から、目標の動作クロック周期を減算した値を、各データパスのクリティカル度として計算する。回路のクロック周期が２０であると仮定して、図２５（ａ）に示した各データパスのクリティカル度を計算したものを図２５（ｂ）に示す。
【００８７】
次に、部分変形ＦＳＭ生成工程（Ｓ２１０３）において、初期ＦＳＭ生成工程（Ｓ１０４２）で生成された初期ＦＳＭとクリティカル度計算工程（Ｓ２１０２）で抽出された各データパスのクリティカル度とに基づいて、制約動作周波数で実行することが難しくなる可能性のあるデータパスを抽出し、データパスを実行するＦＳＭの状態に滞在する期間を外部から任意に遅らせることができるようにＦＳＭを変形する。ここでは、クリティカル度が−２以上である場合が、実現困難なデータパスであると仮定すると、ＲＥＧ＿ｃ、乗算器ＭＵＬ、レジスタＲＥＧ２のデータパスと、レジスタＲＥＧ＿ｄ、乗算器ＭＵＬ、レジスタＲＥＧ２のデータパスが対象となり、このデータパスの処理を実行する状態Ｓ０に、ＦＳＭ状態滞在延長制御機構を挿入することで、ＦＳＭを変形する。図２６は、状態Ｓ０に滞在する期間を任意に延長できるように変形した変形ＦＳＭである。
【００８８】
次に、図２４のコントローラ生成工程（Ｓ１０４４）において、部分変形ＦＳＭ生成工程によって変形された変形ＦＳＭに基づいて、外部から状態Ｓ０に滞在する期間を任意に延長することができるように構成して、コントローラを回路として実現する。図２７は、変形ＦＳＭに基づいて、状態Ｓ０に滞在する期間を任意に延長できるように構成したデータパスとコントローラを回路として実現したものを示す。延長して滞在することができる状態は状態Ｓ０のみであるので、状態Ｓ０に滞在する期間を制御するＦＳＭ状態滞在延長制御機構は、１つだけ生成される（Ｓ３０１）。
【００８９】
最後に、実施の形態３と同様に、図２４の回路記述出力工程（Ｓ１０５）において、回路生成工程によって生成されたデータパスとコントローラの回路記述を出力して高位合成処理を終了する。
【００９０】
以上説明したように、実施の形態４によれば、高位合成の回路生成工程において、スケジューリングの結果に基づいて生成されたＦＳＭを変形する。このとき、データパスの遅延に基づいて、制約動作周波数で正常に動作する回路を容易に実現することが難しいと判断されるデータパスの処理を抽出して、その処理を実行するＦＳＭの状態に対して、スケジューリングで決められた滞在期間を超えて滞在できるようにＦＳＭを変形する。これにより、コントローラに搭載するＦＳＭ状態滞在延長制御機構の数を削減することができるので、回路全体の面積を削減することができる。
【００９１】
（実施の形態４の変形例）
実施の形態４の変形例が、実施の形態４と異なる点は、図２４における部分変形ＦＳＭ生成工程（Ｓ２１０３）で、変形時の回路面積増加に制限が与えられた状態で、ＦＳＭ状態滞在延長制御機構が挿入される点である。
【００９２】
実施の形態４では、クリティカル度に閾値が設定されて、それ以上のクリティカル度を持つデータパスを処理しているＦＳＭ状態にのみ、ＦＳＭ状態滞在延長制御機構が挿入されているが、実施の形態４の変形例では、変形時に許される回路面積増加を予め設定しておき、その設定された範囲で、クリティカル度の高いデータパスから順に、そのデータパスを処理しているＦＳＭの状態に、ＦＳＭ状態滞在延長制御機構を挿入していく。
【００９３】
以上説明したように、実施の形態４の変形例では、ＬＳＩ製造コスト等の問題で、面積増加を可能な限り抑止したい場合や、逆に、面積は増加してもかまわないので、余裕を持ってＦＳＭ状態滞在延長制御機構を挿入したい場合など、状況に合わせて、設計者が回路面積を調整することが可能となるので、本発明の適用範囲を広げることができる。
【産業上の利用可能性】
【００９４】
本発明に係るコントローラの回路構造は、処理に費やすサイクルを任意に伸ばすことができる機能を有し、データパスとＦＳＭに基づくコントローラから構成される回路に適用することができる。
【００９５】
また、本発明に係る高位合成方法は、本発明に係るコントローラの回路構造によって構成されたコントローラのＲＴＬ回路記述を生成する機能を有し、従来の高位合成方法が生成することができるコントローラの回路構造を広げる方法として応用することができる。
【図面の簡単な説明】
【００９６】
【図１】本発明にもとづく回路の動作を示す図
【図２】本発明にもとづく回路の処理の実行順序を示すＦＳＭの一例を示す図
【図３】本発明の実施の形態１で実現する回路のＦＳＭの状態滞在期間を延長できるようにするために変形されたＦＳＭを示す図
【図４】実施の形態１で実現されたＦＳＭ滞在延長制御機構を搭載した回路を示す図
【図５】図４の回路を起動した場合を示す図
【図６】図４の回路を延長なしで動作させた場合の第１のサイクルを示す図
【図７】図４の回路を延長なしで動作させた場合の第２のサイクルを示す図
【図８】図４の回路を延長ありで動作させた場合の第１のサイクルを示す図
【図９】図４の回路を延長ありで動作させた場合の第２のサイクルを示す図
【図１０】図４の回路を延長ありで動作させた場合の第３のサイクルを示す図
【図１１】図４の回路を延長ありで動作させた場合の第４のサイクルを示す図
【図１２】本発明の実施の形態２で実現したゲーテッドクロックを生成するコントローラを備えた回路を示す図
【図１３】本発明の実施の形態２Ａで実現する半導体集積回路システムを示す図
【図１４】本発明の実施の形態２Ａで実現する専用ハードウェアエンジンを示す図
【図１５】本発明の実施の形態２Ａで実現する半導体集積回路を制御するソフトウェアを例示する図
【図１６】本発明の実施の形態３に係る高位合成方法を示すフローチャート
【図１７】本発明の実施の形態３にもとづき回路の機能的な動作を記述した入力ファイルの一例を示す図
【図１８】図１７の高位合成方法におけるＣＤＦＧ生成工程によって生成されるＣＤＦＧを示す図
【図１９】図１７の高位合成方法におけるスケジューリング工程によってスケジューリングされたＣＤＦＧを示す図
【図２０】図１７の高位合成方法におけるアロケーション工程によって処理を実行する資源が割り当てられたＣＤＦＧを示す図
【図２１】図１７の高位合成方法における回路生成工程のデータパス生成工程によって生成されたデータパスを示す図
【図２２】図１７の高位合成方法における回路記述生成工程によって生成されたデータパスの回路記述の一例を示す図
【図２３】図１７の高位合成方法における回路記述生成工程によって生成されたＦＳＭ滞在延長制御機構を搭載するコントローラの回路記述の一例を示す図
【図２４】本発明の実施の形態４に係る高位合成方法を示すフローチャート
【図２５】図２４の高位合成方法におけるデータパス遅延抽出工程によって生成されたデータパス遅延と同高位合成方法におけるクリティカル度計算工程によって生成されたクリティカル度とを示す図
【図２６】本発明の実施の形態４で実現する回路のＦＳＭの状態滞在期間を延長できるようにするために変形されたＦＳＭを示す図
【図２７】本発明の実施の形態４で実現されたＦＳＭ滞在延長制御機構を搭載した回路を示す図
【図２８】従来の回路の実現例を示す図
【図２９】従来の高位合成方法を示すフローチャート
【符号の説明】
【００９７】
Ｓ１０１    ＣＤＦＧ生成工程
Ｓ１０２    スケジューリング工程
Ｓ１０３    アロケーション工程
Ｓ１０４    回路生成工程
Ｓ１０４１    データパス生成工程
Ｓ１０４２    初期ＦＳＭ生成工程
Ｓ１０４３    変形ＦＳＭ生成工程
Ｓ１０４４    コントローラ生成工程
Ｓ１０５    回路記述出力工程
Ｓ２０１    ＦＳＭ状態滞在延長制御機構１
Ｓ２０２    ＦＳＭ状態滞在延長制御機構２
Ｓ２１０１    データパス遅延抽出工程
Ｓ２１０２    クリティカル度計算工程
Ｓ２１０３    部分変形ＦＳＭ生成工程
Ｓ４０１    バスインターフェース
【図１】
2005327055.tif 000003
【図２】
2005327055.tif 000004
【図３】
2005327055.tif 000005
【図４】
2005327055.tif 000006
【図５】
2005327055.tif 000007
【図６】
2005327055.tif 000008
【図７】
2005327055.tif 000009
【図８】
2005327055.tif 000010
【図９】
2005327055.tif 000011
【図１０】
2005327055.tif 000012
【図１１】
2005327055.tif 000013
【図１２】
2005327055.tif 000014
【図１３】
2005327055.tif 000015
【図１４】
2005327055.tif 000016
【図１５】
2005327055.tif 000017
【図１６】
2005327055.tif 000018
【図１７】
2005327055.tif 000019
【図１８】
2005327055.tif 000020
【図１９】
2005327055.tif 000021
【図２０】
2005327055.tif 000022
【図２１】
2005327055.tif 000023
【図２２】
2005327055.tif 000024
【図２３】
2005327055.tif 000025
【図２４】
2005327055.tif 000026
【図２５】
2005327055.tif 000027
【図２６】
2005327055.tif 000028
【図２７】
2005327055.tif 000029
【図２８】
2005327055.tif 000030
【図２９】
2005327055.tif 000031