(57)【特許請求の範囲】
【請求項１】
回路を記述した第１ハードウェア記述に含まれるフリップフロップから第１クロックおよび制御信号を受信するフリップフロップを抽出するとともに、前記抽出したフリップフロップが受信するクロックを第２クロックに変更した第２ハードウェア記述を生成し、この第２ハードウェア記述に対して、前記第１クロックおよび前記制御信号に基づき前記第２クロックの供給を停止する制御回路を挿入した第３ハードウェア記述を生成するプロセッサを有し、
前記制御信号は、前記第１ハードウェア記述に含まれるフリップフロップが受信するリセット信号であることを特徴とする回路設計装置。
【請求項２】
前記第１ハードウェア記述を記憶する記憶装置をさらに有し、
前記プロセッサは、前記記憶装置から前記第１ハードウェア記述を読みだすとともに、前記第３ハードウェア記述を前記記憶装置に書き込むことを特徴とする請求項１に記載の回路設計装置。
【請求項３】
前記プロセッサは、前記第２ハードウェア記述に対して、前記制御回路に対する前記制御信号の伝達を遅延させる遅延回路をさらに挿入することを特徴とする請求項１に記載の回路設計装置。
【請求項４】
前記プロセッサは、前記第１ハードウェア記述に含まれるフリップフロップ内、受信するクロックと、受信するリセット信号と、受信するリセット信号がアクティブを示す信号のレベルと、が共通であるフリップフロップを抽出することを特徴とする請求項１に記載の回路設計装置。
【請求項５】
回路を記述した第１ハードウェア記述に含まれるフリップフロップから第１クロックおよび、前記第１ハードウェア記述に含まれるフリップフロップが受信するリセット信号である制御信号を受信するフリップフロップを抽出するとともに、前記抽出したフリップフロップが受信するクロックを第２クロックに変更した第２ハードウェア記述を生成し、この第２ハードウェア記述に対して、前記第１クロックおよび前記制御信号に基づき前記第２クロックの供給を停止する制御回路を挿入した第３ハードウェア記述を生成する処理をコンピュータに実行させるプログラム。
【請求項６】
前記第２ハードウェア記述に対して、さらに、前記制御回路に対する前記制御信号の伝達を遅延させる遅延回路を挿入する処理をコンピュータに実行させる請求項５記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムＬＳＩ（Large Scale Integration）の設計に関し、クロック供給を停止させる回路設計装置、回路設計方法、及び、回路設計プログラムに関する。
【背景技術】
【０００２】
従来、ＬＳＩ全体に対するクロックの供給は一元的にされており、ＬＳＩに対しては人手によってクロック供給停止回路が挿入されていた。近年、ＬＳＩの大規模化が進み、従来のＬＳＩが１つの部品的要素であるマクロブロックとして扱われるようになった。このため、ＬＳＩに挿入されるクロック供給停止回路は、数多くのマクロブロックを制御する必要があり、多様化、煩雑化が進んできた。
【０００３】
一方、ＬＳＩの内部において、動作していないフリップフロップ（以降、Ｆ／Ｆと記す）に対してクロック供給停止回路を挿入することが知られている。このクロック供給停止回路の挿入は、人手により個々のＦ／Ｆが動作しない期間を抽出し、この抽出結果に基づいて、行われる。このクロック供給停止回路の挿入は、多大な時間がかかる。また、上記のクロック供給停止回路の挿入方法では、係るクロック供給停止回路の抽出や挿入のミスが発生する確率が高い。そのため、これにより開発期間の長期化やコストの上昇を招くという問題があった。
このような問題を解決する為に、クロック供給停止回路を自動挿入する方法、及び、その新たな回路構成が必要となり、例えば、特許文献１から特許文献３の技術が開示されている。
【０００４】
例えば、特許文献１には、ハードウェア記述からステートマシンを構成するレジスタ及びステートマシンがアイドル状態以外の時のみ動作するレジスタを検出する工程と、検出したレジスタにゲーテッドクロックを供給するゲーテッドクロック供給回路を生成し、ハードウェア記述にゲーテッドクロック供給回路を反映させる工程を有する論理回路設計方法および装置が開示されている。これは、ステートマシンがアイドル状態のときにクロックを停止させるクロック供給停止回路を挿入する手法である。
【０００５】
図１７は、特許文献１に開示された論理回路設計装置の一実施形態の概略的構成図である。図１７に示す論理回路設計装置は、レジスタ検出条件を入力する手段１０ｐと、ハードウェア記述（ＨＤＬソース）からステートマシンを構成するレジスタを検出する手段２０ｐと、ステートマシンのアイドル状態を検出する手段３０ｐと、ステートマシンがアイドル状態以外の時のみ動作するレジスタを検出する手段４０ｐと、検出したレジスタにゲーテッドクロックを供給するゲーテッドクロック供給回路を生成する手段５０ｐと、生成したゲーテッドクロック供給回路を反映させたハードウェア記述を生成する手段６０ｐを備える。
【０００６】
図１８は、図１７に示す論理回路設計装置により生成されるゲーテットクロック供給回路を示す回路図である。図１８において、回路ブロック１（アイドル状態判定）７０ｐは、ステートマシンのアイドル状態を検出し、クロック供給停止回路のイネーブル信号ＩＤＬ＿ＥＮを生成する。回路ブロック２（ＦＦ）８０ｐ及び回路ブロック３（ＡＮＤ）９０ｐは、ステートマシンを構成する回路ブロック４（ＣＵＲＲＥＮＴ＿ＳＴＡＴＥレジスタＣ）１００ｐに対してのみ、クロック供給停止回路を自動挿入する。
【０００７】
特許文献２には、イネーブル信号がイネーブル状態の時に内容がクロック信号に同期して更新される第１のＦ／Ｆ（フリップフロップ）を、クロック信号がイネーブル信号に基づいてゲーテッドクロック化された第２のＦ／Ｆに変更する回路設計方法及び回路設計装置が開示されている。これは、Ｆ／Ｆがディスエーブル状態のときにクロック供給停止回路を挿入する手法である。
【０００８】
図１９は、特許文献２に開示された回路設計装置の構成を示す図である。図１９に示す回路設計装置は、次の回路設計方法を実現する。回路設計方法は、ハードウェア記述を解析してＦ／Ｆの動作条件を求め、イネーブル信号を抽出するステップ（２ｐ）と、イネーブル信号とＦ／Ｆの対応関係を表すハードウェア記述に変更するステップ（３ｐ）と、変更されたＲＴＬ記述とテストベクトルを入力し、回路のシミュレーションをするステップ（５ｐ）と、シミュレーション結果からイネーブル状態となる比率のアクティブ率を求めるステップと、アクティブ率に基づいてゲーテッドクロック化されたＦ／Ｆに変更するステップ（７ｐ）とを有し、その結果をハードウェア記述として出力する（ステップ８ｐ）
【０００９】
図２０は、図１９に示す回路設計装置によってゲーテットクロック化した構成を示す図である。図２０により、特許文献２により生成されたクロック供給停止回路挿入後のハードウェア記述による論理回路について説明する。図２０において、ラッチ回路１０３ｐの入力となっているｅｎは、Ｆ／Ｆ１０２ｐが動作しているときにＨｉｇｈになり、動作していないときにＬｏｗとなる信号である。ラッチ回路１０３ｐ及びＡＮＤゲート１０４ｐによりイネーブル付きのＦ／Ｆ１０２ｐに対してのみ、クロック供給停止回路を自動挿入する。また、関連技術として、クロック信号制御方式、特に伝搬速度の速いフリップ・フロップ回路群が使用されている電子計算機において、クロック信号とリセット信号とが同時に上記フリップ・フロップ回路に入力したとき、その出力が不定となることを避けるため、クロック信号の入力を一時的に停止させた状態の下でリセットを掛け、上記フリップ・フロップ回路群を完全にリセット状態にするようにしたクロック信号制御方式が開示されている（特許文献３）。
【特許文献１】特開２００３−３３０９８８号公報
【特許文献２】特開２００２−９２０６５号公報
【特許文献３】特開昭５７−１０８９１１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１の技術は、ステートマシンを構成するＦ／Ｆに対してのみクロック供給停止回路を挿入する方法である。また、特許文献２の技術は、イネーブル付きのＦ／Ｆに対してのみクロック供給停止回路を挿入する方法である。このため、上記特許文献１および２の技術は、ステートマシンを構成するＦ／Ｆおよびイネーブル付きのＦ／Ｆ以外の他のＦ／Ｆに対してクロック供給停止回路を挿入することができない。
【００１１】
Ｆ／Ｆは、設定値を保持しておく回路や、データを数クロック分遅らせる回路等にも用いられる。従って、Ｆ／Ｆは、ステートマシンを構成する回路に用いられるものや、イネーブル付きのＦ／Ｆに限られるものではない。また、各種回路には、リセット時には動作をしないＦ／Ｆが多用されている。このため、特許文献１及び特許文献２に開示された技術では、クロック供給停止回路を挿入する対象のＦ／Ｆとして抽出されないＦ／Ｆが多数存在する。特許文献１および特許文献２の技術では抽出することができないＦ／Ｆはリセット時には動作しないＦ／Ｆである。
【００１２】
このように、従来の技術は、所定の制御信号を受けるＦ／Ｆに対してクロック供給停止回路を自動で挿入することができなかった。
【課題を解決するための手段】
【００１３】
本発明に係る回路設計装置の一態様は、回路を記述した第１ハードウェア記述に含まれるフリップフロップから第１クロックおよび制御信号を受信するフリップフロップを抽出するとともに、前記抽出したフリップフロップが受信するクロックを第２クロックに変更した第２ハードウェア記述を生成し、この第２ハードウェア記述に対して、前記第１クロックおよび前記制御信号に基づき前記第２クロックの供給を停止する制御回路を挿入した第３ハードウェア記述を生成するプロセッサを有することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、同一のクロック及び制御信号を受信するフリップフロップを抽出して、抽出されたフリップフロップへのクロック供給を制御する制御回路を自動挿入することが可能となる。これにより、論理回路が消費する電力の低減を図ることができる。また、論理回路の設計作業の効率化を図ることが可能となる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。各図面において同一の構成または機能を有する構成要素および相当部分には、同一の符号を付し、その説明は省略する。
【００１６】
（実施形態１）
実施形態１では、ハードウェア記述に含まれるＦ／Ｆをグループ化し、グループ毎にクロック供給停止回路を挿入する回路設計を行う一態様を説明する。
【００１７】
図１は、本発明の実施形態１に係る回路設計装置の概念を示した図である。回路設計装置１は、基本ハードウェア記述１１及びＦ／Ｆ情報テーブル１２情報テーブル１２が有する情報を取得する。回路設計装置１は、処理を行う構成要素として、グループ化手段２１とクロック供給停止回路自動挿入手段（以下、「挿入手段」という）２２とを備える。また、回路設計装置１は、グループテーブル（Ｇｒｏｕｐテーブル）１３とクロック供給停止回路挿入後のハードウェア記述（以下、「修正後ハードウェア記述」という）１４とを生成し、生成した修正後ハードウェア記述１４を出力する。
【００１８】
基本ハードウェア記述１１は、クロック供給停止回路を含まない論理回路のハードウェア記述である。
Ｆ／Ｆ情報テーブル１２は、基本ハードウェア記述１１に含まれる各Ｆ／Ｆの名、リセット名、Ｆ／Ｆがリセットされるときの論理（リセットアクティブ情報）をまとめた情報テーブルである。例えば、図５の回路を記述した基本ハードウェア記述に含まれる各Ｆ／Ｆの情報をまとめたＦ／Ｆ情報テーブル１２は、図７となる。リセットアクティブ情報は、Ｈｉ又はＬｏｗで表される。本明細書では、クロック名、リセット名、及びリセットアクティブ情報をまとめて「リセット情報」という。Ｆ／Ｆ情報テーブル１２は、基本ハードウェア記述１１に基づいて、一般的に知られる手法を用いて得ることができる。例えば、Ｆ／Ｆ情報テーブル１２は、ＥＤＡツールであるＣｏｎｆｏｒｍａｌ−ＡＳＩＣが基本ハードウェア記述１１を解析することにより得ることができる。Ｆ／Ｆ情報テーブル１２は、「Ｃｌｏｃｋ／Ｒｅｓｅｔ／Ｒｅｓｅｔ  Ａｃｔｉｖｅテーブル」ともいう。
【００１９】
グループテーブル１３は、Ｆ／Ｆ情報テーブル１２が保持するそれぞれのＦ／Ｆを、クロック名、リセット名、リセットアクティブ情報が同一であるＦ／Ｆごとにグループ化したグループ情報テーブルである。図８は、本実施の形態を説明するために用いるグループテーブル１３の一例である。図８では、図７に示した各Ｆ／Ｆが、同一のクロック、リセット名、リセットアクティブ情報を有する４つのグループに分類されている。グループテーブル１３は、挿入手段２２がクロック供給停止回路を自動挿入する際に、最小規模のクロック供給停止回路を挿入するために用いられる。
修正後ハードウェア記述１４は、基本ハードウェア記述１１へ、クロック供給停止回路を自動挿入したハードウェア記述である。
【００２０】
グループ化手段２１は、Ｆ／Ｆ情報テーブル１２から各Ｆ／Ｆの名、リセット名、Ｆ／Ｆがリセットされるときの論理、すなわちリセット情報を取得するとともに、基本ハードウェア記述１１に含まれる各Ｆ／Ｆをクロック名、リセット名、及びリセットアクティブ情報が同一であるＦ／Ｆごとに分類するための手段である。グループ化手段２１は、リセット情報が同一であるＦ／Ｆをグループ化したグループ情報をグループテーブル１３として出力する。グループ化手段２１は、リセット情報が同じＦ／Ｆ名と、Ｆ／Ｆに共通するリセット情報（具体的には、クロック名、リセット名、リセットアクティブ情報）とを対応させたグループ情報をグループテーブル１３へ保存する。
【００２１】
挿入手段２２は、基本ハードウェア記述１１及びグループ化手段２１が作成したグループテーブル１３が有する情報を取得するとともに、グループテーブル１３が保存しているグループ毎に、基本ハードウェア記述１１に、クロック供給停止回路を自動挿入する。本明細書では、クロック供給停止回路は、イネーブル時にクロック供給を停止するように動作する回路であり、イネーブル又はディスエーブル時にヒゲが出ない回路である。
【００２２】
なお、回路設計装置１は、図１には明示していないが、基本ハードウェア記述１１及びＦ／Ｆ情報テーブル１２を記憶する記憶領域を備える。また、回路設計装置１は、生成するグループテーブル１３及び修正後ハードウェア記述１４を記憶する記憶領域を備える。例えば、基本ハードウェア記述１１を第１記憶領域、Ｆ／Ｆ情報テーブル１２を第２記憶領域、グループテーブル１３を第３記憶領域、修正後ハードウェア記述１４を第４記憶領域へ記憶するようにしてもよい。また、グループ化手段２１及び挿入手段２２を制御部８という。制御部８は、ハードウェア、ファームウェア、ソフトウェアの少なくとも二つの組み合わせで構成されてもよいし、ハードウェア、ファームウェア、ソフトウェアのいずれか一つで構成されてもよい。ソフトウェアで実現される部分については、プログラムがメモリにロードされ、ＣＰＵにより各命令が実行されることになる。従って、回路とソフトウェア（ＣＰＵによる命令の実行）の組み合わせによって実現することも可能である。以下では、グループ化手段２１と挿入手段２２をプログラムで実現する場合について説明する。
【００２３】
図２は、本実施の形態に係る回路設計装置１の構成例を示す。図２の回路設計装置９は、メモリ２、ＣＰＵ（Central Processing Unit）３、ワークメモリ４、バス５、及び入出力ポート（Ｉ／Ｏ）６を備える。
【００２４】
メモリ２は、データ記憶領域１０とプログラム記憶領域２０とを備える。データ記憶領域１０は、少なくとも、入出力ポート６を介して入力される基本ハードウェア記述１１とＦ／Ｆ情報テーブル１２、及び、回路設計装置９が生成するグループテーブル１３と修正後ハードウェア記述１４を記憶する領域を備える。プログラム記憶領域２０は、少なくとも、グループ化手段２１と挿入手段２２とを記憶する領域を備える。図２は、データ記憶領域１０及びプログラム記憶領域２０に備える記憶領域の一例を示したものであり、これら以外の記憶領域を備えることもある。
【００２５】
ＣＰＵ３は、回路設計装置９が実行する処理を制御する。ワークメモリ４は、ＣＰＵが実行するプログラムやデータを一時的に記憶する領域であり、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの揮発性メモリが用いられる。回路設計装置９内の各構成要素は、バス５を介してデータをやり取りする。
【００２６】
入出力ポート６は、例えば、基本ハードウェア記述１１、Ｆ／Ｆ情報テーブル１２を受信し、バス５を介してこれら基本ハードウェア記述１１、Ｆ／Ｆ情報テーブル１２をデータ記憶領域１０へ出力する。また、入出力ポート６は、例えば、挿入手段２２が生成した修正後ハードウェア記述１４を外部へ出力する。入出力ポート６の詳細説明はここでは省略する。なお、図２の構成は一例であり、回路設計装置１は、図２の構成に限定されるものではない。以下で説明する機能を実現する回路設計装置であれば、他の構成であってもかまわない。さらに、本明細書では、基本ハードウェア記述１１と修正後ハードウェア記述１４とを区別して表している。しかしながら、基本ハードウェア記述１１へ、クロック供給停止回路を挿入して上書きするような場合であってもよい。このように、二つのハードウェア記述の記憶領域が共通する場合であってもよい。
【００２７】
続いて、図２乃至図５、図７、図８を用いて、本実施形態の回路設計装置がクロック供給停止回路を自動挿入する動作の一例を説明する。なお、以下の説明では、図５の回路が記載された基本ハードウェア記述１１を用いて、本実施の形態の具体的な動作の一例を説明するが、図５以外の回路が記載された基本ハードウェア記述に対しても本実施の形態は適用できる。
【００２８】
まず、ＣＰＵ３はバス５を介してメモリ２のプログラム記憶領域２０にアクセスし、グループ化手段２１をメモリ２のプログラム記憶領域２０からワークメモリ４へ読み出して実行する。ＣＰＵ３は実行したグループ化手段に基づき、バス５を介してメモリ２のデータ記憶領域１０にアクセスする。そしてＣＰＵ３は、データ記憶領域１０内のＦ／Ｆ情報テーブル１２から、基本ハードウェア記述１１に含まれるＦ／Ｆの数を取得する（Ｓ３１）。Ｆ／Ｆ情報テーブル１２は、ここでは、図５の回路を記述した基本ハードウェア記述に含まれる各Ｆ／Ｆのリセット情報を有する。つまり、Ｆ／Ｆ情報テーブル１２は、図７に示すリセット情報を有する。従って、例えば、データ記憶領域１０が図７に示すＦ／Ｆ情報テーブル１２を記憶している場合、ＣＰＵ３は当該Ｆ／Ｆ情報テーブル１２からＦ／Ｆの数として８を取得する。その後、ＣＰＵ３は、処理を行う各Ｆ／Ｆ（以降、処理対象となるＦ／Ｆを「処理対象Ｆ／Ｆ」という）について、ステップＳ３２からステップＳ３６までの処理を、取得したＦ／Ｆの数、繰り返す。図３では、処理対象Ｆ／Ｆは、Ｆ／Ｆ情報テーブルからｉ番目に読み出されるＦ／Ｆである。
【００２９】
ＣＰＵ３は、Ｆ／Ｆ情報テーブル１２から処理対象Ｆ／Ｆのリセット情報（クロック名、リセット名、リセットアクティブ情報）を読み出す（Ｓ３２）。例えば、図７を参照して、ＣＰＵ３が第１番目の処理対象Ｆ／Ｆの情報をメモリ２のデータ記憶領域１０に格納されているＦ／Ｆ情報テーブル１２から読み出す場合、クロック名としてＣＬＫ１、リセット名としてＲＳＴＢ、リセットアクティブ情報としてＬｏｗ、という三種類の情報を読み出す。次に、ＣＰＵ３は、バス５を介してメモリ２のデータ記憶領域内にあるグループテーブル１３にアクセスする。そしてＣＰＵ３はこのグループテーブル１３からグループ情報を読み出す（Ｓ３３）。ＣＰＵ３は、複数のグループ情報が保存されている場合、係るグループテーブル１３から、グループ全部のグループ情報を読み出す。
【００３０】
ＣＰＵ３は、Ｆ／Ｆ情報テーブル１２から読み出した一のＦ／Ｆにおける（例えば第１番目）リセット情報と、グループテーブル１３からのグループ情報とを比較する（Ｓ３４）。すなわち、ＣＰＵ３は、処理対象である一のＦ／Ｆのクロック名、リセット名、リセットアクティブ情報と、グループテーブル１３が有するクロック名、リセット名、リセットアクティブ情報とを比較する。そしてＣＰＵ３は、一つのＦ／Ｆのリセット情報が既にグループテーブル１３に保存されている場合（Ｓ３４でＹＥＳ）には、バス５を介してメモリ２のデータ記憶領域１０にアクセスし、係る一のＦ／Ｆに対するリセット情報と一致するグループテーブル１３内のグループ情報に、処理対象Ｆ／Ｆの名称（Ｆ／Ｆ名）を保存する（Ｓ３６）。ＣＰＵ３は、処理対象である一のＦ／Ｆのリセット情報がグループテーブル１３が有するグループ情報に保存されてない場合（Ｓ３４でＮＯ）、同様にメモリ２のデータ記憶領域１０へアクセスし、処理対象である一のＦ／Ｆのリセット情報に含まれるクロック名、リセット名、リセットアクティブ情報をグループテーブル１３に新規に保存する（Ｓ３５）。その後、ＣＰＵ３は、新規に保存した当該グループ情報に処理対象Ｆ／ＦのＦ／Ｆ名を保存する（Ｓ３６）。ＣＰＵ３は、処理対象Ｆ／Ｆが他に存在する場合は、Ｓ３２からの処理を繰り返す（Ｓ３７）。
【００３１】
例えば図７における第１番目のＦ／Ｆに対してＣＰＵ３がＳ３２からＳ３６までの処理を行った場合には、図７における第２番目のＦ／Ｆに対して再びＳ３２からＳ３６の処理を実行する。この例では、ＣＰＵ３は、Ｓ３１において、図７にＦ／Ｆ情報テーブルからＦ／Ｆの数として８を取得している。従って、ＣＰＵ３は、Ｓ３２からＳ３６までの処理を合計８回繰り返すことになる。また、この例において、ＣＰＵ３は図８に示したグループテーブル１３を作成する。ＣＰＵ３はこのグループテーブル１３を中間データとして保持するようにしてもよい。
【００３２】
次に、ＣＰＵ３は、バス５を介してメモリ２にアクセスし、メモリ２のプログラム記憶領域２０に格納されている挿入手段２２をワークメモリ４へ読み出して実行する。ＣＰＵ３は実行した挿入手段２２に基づいて、クロック供給停止回路を基本ハードウェア記述１１へ挿入する。前述した通り、一例として、図５の回路を記載した基本ハードウェア記述１１を用いてＣＰＵ３が図５の回路にクロック供給停止回路を挿入する動作を説明する。以下、図２、図４ないし図８を用いて、係る動作を説明する。
【００３３】
まずＣＰＵ３は、実行した挿入手段２２に基づいて、グループテーブル１３からグループ数として４を取得する（Ｓ４１）。ＣＰＵ３は、ステップＳ４２からＳ４６までの処理を取得したグループ数の回数繰り返す。以降の説明では、ステップＳ４２からステップＳ４６の各ステップで処理するｉ番目のグループ情報（Ｇｒｏｕｐ［ｉ］）を処理対象グループ情報とする。
【００３４】
ＣＰＵ３は、グループテーブル１３から、処理対象である一のグループに含まれるＦ／Ｆの数を取得する（Ｓ４２）。例えば処理対象のグループが図８におけるグループ１であれば、ＣＰＵ３は２の値を取得する。図８におけるグループ１は図５におけるＦ／Ｆ１とＦ／Ｆ２の二つを含むからである。そして、ＣＰＵ３は、バス５を介してメモリ２のデータ記憶領域１０にアクセスし、基本ハードウェア記述１１を取得する（Ｓ４３）。そしてＣＰＵ３は、取得した基本ハードウェア記述１１の内、処理対象となるグループに含まれる各Ｆ／Ｆが受信するクロックの名称を別名に変更（リネーム）する（Ｓ４３）。例えば、図８のグループテーブル１３におけるグループ１が処理対象グループである場合、ＣＰＵ３は、基本ハードウェア記述１１に含まれる各Ｆ／Ｆであってグループ１にも含まれる各Ｆ／Ｆが受信するクロックのそれぞれの名称をＣＬＫ１からＣＬＫ１＿Ｇ１にリネームする。そして、ＣＰＵ３は、上記の各Ｆ／Ｆが受信するクロックの名称をＣＬＫ１からＣＬＫ＿Ｇ１に変更したハードウェア記述であるクロックリネーム後のハードウェア記述１６を生成する（Ｓ４３）。このクロックリネーム後のハードウェア記述は中間データであり、ＣＰＵ３はワークメモリ４にこのクロックリネーム後のハードウェア記述１６を保持している。
【００３５】
次に、ＣＰＵ３は、クロックリネーム後のハードウェア記述１６に対して、クロック供給停止回路を挿入する処理を行い、修正後ハードウェア記述を得る。ここで、クロック供給停止回路は三つの端子を有する。すなわち、Ｄａｔａ端子、Ｅｎａｂｌｅ端子、Ｏｕｔｐｕｔ端子である。係る三つの端子の内、Ｄａｔａ端子はクロックを受信する端子であり、Ｅｎａｂｌｅはリセット信号を受信する端子であり、Ｏｕｔｐｕｔ端子は信号を出力するための端子である。そこでＣＰＵ３は、クロック供給停止回路のＤａｔａ端子が受信する信号名を、処理対象グループに含まれる各Ｆ／Ｆに対して出力されるクロック信号の名称に設定する（Ｓ４５）。例えば処理対象であるグループが図８に示すグループテーブル１３の内の第１番目のグループ、すなわちグループ１である場合には、ＣＰＵ３は挿入する一のクロック供給停止回路のＤａｔａ端子が受信する信号名をＣＬＫ１に設定する。また、ＣＰＵ３は、クロック供給停止回路のＥｎａｂｌｅ端子が受信するリセット信号の名称を、処理対象グループに含まれる各Ｆ／Ｆにが受信するリセット信号の名称に設定する（Ｓ４５）。例えば図８に示すグループテーブルの内の第１番目のグループが処理対象グループである場合、ＣＰＵ３は、挿入する一のクロック供給停止回路のＥｎａｂｌｅ端子が受信する信号の名称をＲＳＴＢに設定する。
【００３６】
さらに、ＣＰＵ３は、処理対象である一のグループに含まれる各Ｆ／Ｆのリセットアクティブ情報［Ｈｉ又はＬｏｗ］を、クロック供給停止回路のＥｎａｂｌｅのアクティブ情報とする。例えば図８に示すグループテーブル１３の内、第１番目のグループが処理対象グループである場合、ＣＰＵ３は、挿入するクロック供給停止回路のＥｎａｂｌｅのアクティブ情報をＬｏｗと設定する。そしてＣＰＵ３は、クロック供給停止回路のＯｕｔｐｕｔ端子が出力する信号名を、ＣＰＵ３がステップＳ４３においてリネームしたクロック名に設定する（Ｓ４５）。そして、ＣＰＵ３は、処理対象グループに含まれる各Ｆ／Ｆにクロック供給停止回路を挿入した「クロック供給停止回路挿入後のハードウェア記述」を生成し、それを修正後ハードウェア記述１４として出力する（Ｓ４６）。ＣＰＵ３は、以上のＳ４２からＳ４６までの処理をステップ４１で取得したグループの数だけ繰り返す。すなわち、ＣＰＵ３は、グループテーブル１３が有する各グループのそれぞれに対してＳ４２からＳ４６までの処理を繰り返してクロック供給停止回路の自動挿入を完了する。そしてＣＰＵ３は、グループテーブル１３の各グループに含まれるすべてのＦ／Ｆに対してクロック供給停止回路を挿入した修正後ハードウェア記述１４を得る。具体的にはＣＰＵ３は、図６に示した回路を記述した修正後ハードウェア記述１４を得る。
【００３７】
その後、ＣＰＵ３は、バス５を介して、クロック供給停止回路を自動挿入した後の修正後ハードウェア記述１４をメモリ２内のデータ記憶領域１０へ保存する（Ｓ４６）。
【００３８】
以上の説明で、具体例として用いた図５、図６の回路図を、基本ハードウェア記述１１と修正後ハードウェア記述１４と比較しながら説明する。上述した本実施の形態に係る動作説明からもわかるように、図５は基本ハードウェア記述の回路例を示す図であり、図６は図５に示す基本ハードウェア記述へクロック供給停止回路を自動挿入した修正後ハードウェア記述の回路例を示す図である。
【００３９】
図５に示す回路例において、Ｆ／Ｆ１（Ｄ１）及びＦ／Ｆ２（Ｄ２）のクロック名はＣＬＫ１であり、リセット名はＲＳＴＢである。Ｆ／Ｆ３（Ｄ３）及びＦ／Ｆ４（Ｄ４）のクロック名はＣＬＫ１であり、リセット名はＲＳＴＢとＦ／Ｆ２（Ｄ２）の論理積を取ったＲＳＴＢ１（Ｄ９）である。Ｆ／Ｆ５（Ｄ５）のクロック名はＣＬＫ２であり、リセット名はＲＳＴＢである。Ｆ／Ｆ６（Ｄ６）及びＦ／Ｆ７（Ｄ７）及びＦ／Ｆ８（Ｄ８）のクロック名はＣＬＫ２であり、リセット名はＲＳＴＢとＦ／Ｆ５（Ｄ５）の論理積を取ったＲＳＴＢ２（Ｄ１０）である。また、全てのＦ／Ｆ（Ｄ１〜Ｄ８）におけるリセットアクティブ情報はＬｏｗである。
【００４０】
図５に示す基本ハードウェア記述１１に基づいて、一般的に知られる手法（例えば、ＥＤＡツールであるＣｏｎｆｏｒｍａｌ−ＡＳＩＣ）にて取得した情報を、図７に示す。図７は、Ｆ／Ｆ情報テーブルの一例を示す図である。上述した本実施の形態の動作説明では、この図７をＦ／Ｆ情報テーブルとして具体的に使用した
【００４１】
図７に示すＦ／Ｆ情報テーブル１２に基づいて、ＣＰＵ３が生成したグループテーブルを図８に示す。ＣＰＵ３は、クロック供給停止回路を自動挿入する図４のフローを実行する前に、図３で説明したフローに従ってグループテーブル１３を作成する。これは、最小規模のクロック供給停止回路を挿入するために実施される。
【００４２】
図７のＦ／Ｆ情報テーブルでは、Ｆ／Ｆ１とＦ／Ｆ２に関するクロック名、リセット名及びリセットアクティブ情報が同じである。同様に、Ｆ／Ｆ３とＦ／Ｆ４に関するクロック名、リセット名及びリセットアクティブ情報、Ｆ／Ｆ６とＦ／Ｆ７とＦ／Ｆ８に関するクロック名、リセット名及びリセットアクティブ情報が同じである。このため、ＣＰＵ３は、図８一例として示すグループテーブル１３のように、Ｆ／Ｆ１とＦ／Ｆ２を一つのグループに、Ｆ／Ｆ３とＦ／Ｆ４をひとつのグループに、Ｆ／Ｆ５とＦ／Ｆ６とＦ／Ｆ８を一つのグループにする。そして、ＣＰＵ３は、各グループのグループ情報を生成し、グループテーブルへ保存する。また、図７に示すＦ／Ｆ情報テーブル例では、Ｆ／Ｆ５に関するクロックとリセットとリセットアクティブ情報は他のＦ／Ｆにはない。このため、ＣＰＵ３は、図８に示すグループテーブル１３のように、１つのグループとしてグループ情報を生成し、保存する。
【００４３】
次に、図６に示す修正後ハードウェア記述について説明する。ＣＰＵ３は、図４で説明した手続きに従って、図６に示す修正後ハードウェア記述１４を生成する。具体的には、ＣＰＵ３は、図８に示すグループテーブル１３に基づいて、図５に示す基本ハードウェア記述１１へクロック供給停止回路を自動挿入し、修正後ハードウェア記述１４を生成する。
【００４４】
図６に示す修正後ハードウェア記述１４の論理回路例では、Ｆ／Ｆ１（Ｄ１）及びＦ／Ｆ２（Ｄ２）のクロック名はＣＬＫ１からＣＬＫ１＿Ｇ１にリネームされている。また、Ｆ／Ｆ３（Ｄ３）及びＦ／Ｆ４（Ｄ４）のクロック名はＣＬＫ１からＣＬＫ１＿Ｇ２にリネームされている。Ｆ／Ｆ５（Ｄ５）のクロック名はＣＬＫ２からＣＬＫ２＿Ｇ３にリネームされている。Ｆ／Ｆ６（Ｄ６）、Ｆ／Ｆ７（Ｄ７）及びＦ／Ｆ８（Ｄ８）のクロック名はＣＬＫ２からＣＬＫ２＿Ｇ４にリネームされている。また、図８に示すグループテーブル１３に保存されているグループ毎に、Ｇｒｏｕｐ１のクロック供給停止回路（Ｅ１）、Ｇｒｏｕｐ２のクロック供給停止回路（Ｅ２）、Ｇｒｏｕｐ３のクロック供給停止回路（Ｅ３）、Ｇｒｏｕｐ４のクロック供給停止回路（Ｅ４）が挿入されている。
【００４５】
挿入するクロック供給停止回路は、一般的に知られるイネーブル時にクロック供給を停止するように動作する回路であり、イネーブル又はディスエーブル時にヒゲが出ない回路である。例えば、特開２００２−３５１５７１号公報に開示されているクロック供給停止回路である。また、クロック供給停止回路の挿入に伴って、各Ｆ／Ｆにクロック供給停止回路から出力されるクロックが入力されるように配線の変更がなされる。
【００４６】
次に、本実施形態の回路設計装置及び方法により得られたクロック供給停止回路挿入後の修正後ハードウェア記述１４による論理回路において、リセット時のクロック供給停止について説明する。図９は、図６に一例として示す修正後ハードウェア記述に基づいて生成した論理回路におけるリセット時の動作を示すタイミングチャートである。
【００４７】
図９に示すＣＬＫは、図６に示すＣＬＫ１、ＣＬＫ２に対応する。図９に示すＦ／Ｆに供給されるクロックは、図６に示すＣＬＫ１＿Ｇ１、ＣＬＫ１＿Ｇ２、ＣＬＫ２＿Ｇ３、ＣＬＫ２＿Ｇ４に対応する。図９に示すＲＳＴＢは、図６に示すＲＳＴＢに対応する。図９において、Ｔ１はＲＳＴＢが立ち下がった期間から次の立ち上がりまでの期間である。本発明により自動挿入されたクロック供給停止回路により、このＴ１の期間、Ｆ／Ｆに供給されるクロックが停止されている。
【００４８】
以上説明したように、本実施形態の回路設計装置及び方法によれば、基本ハードウェア記述１１に含まれるＦ／Ｆについて、クロック名、リセット名及びリセットアクティブ情報が同じＦ／Ｆに共通するクロック供給停止回路を挿入することができる。これにより、リセット時にクロック供給を停止することが可能となる。このため、消費電力を削減することができる。また、クロック供給停止回路を自動挿入することにより、回路設計に要する時間を節約することができると共に、人手によるミスを無くすことができる。これにより、論理回路の設計作業の効率化を図ることができる。
【００４９】
（実施形態２）
実施形態２では、実施形態１に示した回路設計装置及び方法へ、クロック供給停止回路がクロック供給を停止するまでの期間を調整する機能を追加した一態様を説明する。本実施形態では、実施形態１の図４に示したＣＰＵ３が行うフローに新たな処理を追加した構成となる。具体的には、図２のメモリ２内にあるプログラム記憶領域２０が有する挿入手段２２を、異なる挿入手段２３とする。その他の構成、機能等については、実施形態１と同様であるため、説明を省略する。
【００５０】
図１０は、実施形態２におけるＣＰＵ３のクロック供給停止回路の挿入動作の一例を示すフローチャートである。実施形態２では、ＣＰＵ３は、入力情報として、新たにパラメータ１７を取得する。パラメータ１７は、自動挿入するクロック供給停止回路のＥｎａｂｌｅを何（要素）によりどれだけ遅延させるかを決定する遅延情報である。従って、パラメータ（遅延情報）は、Ｅｎａｂｌｅを遅らせ、クロック供給停止回路がクロック供給を停止するまでの期間を延長するための情報である。例えば、パラメータ１７は、回路設計者が任意に与えることができる情報として、挿入手段２３に記述しておくことができる。図１１から図１３にパラメータの一例を示す。例えば、図１１に示すパラメータ１７の例では、クロックＣＬＫ１に対して挿入するクロック供給停止回路のＥｎａｂｌｅを３クロック分遅延させ、ＣＬＫ２というクロックに対して挿入するクロック供給停止回路のＥｎａｂｌｅを３クロック分遅延させることを示している。
【００５１】
また、図１２に示すパラメータ例では、挿入するクロック供給停止回路のＥｎａｂｌｅを、遅延素子を用いて５ｍｓｅｃ遅延させる。図１３に示すパラメータ例では、挿入するクロック供給停止回路のＥｎａｂｌｅを、遅延素子ＴＤＸＤＬＹ１を２個用いて遅延させる。
【００５２】
また、図１０に示す処理では、ＣＰＵ３は、図４と比較して、ステップＳ５１、Ｓ５２の処理を追加して実施する。図４のステップＳ４５は図１０のステップＳ５３に対応する。他の処理は図４と同様であるため説明を省略し、追加・変更された処理である点線で囲まれた処理について説明する。ＣＰＵ３は、実施の形態１で説明した場合と同様に、クロックリネーム後のハードウェア記述１６を中間データとして取得する。その後、ＣＰＵ３は、ステップＳ５１、Ｓ５２の処理を、グループテーブル１３に保存されている各グループの数だけ繰り返す。まずＣＰＵ３は、パラメータ１７を取得する。具体的には、ＣＰＵ３はグループテーブル１３に保存されている各グループの内、処理対象である一のグループのリセット名に対応する信号の遅延値を読み出す（Ｓ５１）。例えば図８に示したグループテーブル１３の内の第１番目のグループが処理対象グループであり、また、パラメータ１７が図１１に記載の情報を有している場合、ＣＰＵ３は、パラメータ１７から、図８のグループ１内の各Ｆ／Ｆのそれぞれが受信するＲＳＴＢを、ＣＬＫ１の３クロック分遅延させる旨の情報を取得する（Ｓ５１）。次にステップＳ５２において、ＣＰＵ３は、グループテーブル１３の各グループの内、処理対象である一のグループのリセット名に対応する信号を遅延させる遅延回路を挿入する（Ｓ５２）。
【００５３】
具体的には、ＣＰＵ３は、ハードウェア記述の遅延回路の入力端子Ｉｎｐｕｔに対し、処理対象である一のグループに含まれる各Ｆ／Ｆが受信するリセット信号の名称を設定する（Ｓ５１）。例えば処理対象グループが図８に示した第１グループであり、パラメータが図１１に示すものである場合、ＣＰＵ３はパラメータ１７からＣＬＫ１の３クロック分という遅延値を取得する（Ｓ５１）。そうすると後のステップにおいてＣＰＵ３は、クロックリネーム後のハードウェア記述に含まれるＦ／Ｆ１およびＦ／Ｆ２が受信するリセット信号ＲＳＴＢをＣＬＫ１の３クロック分遅延させるべく、クロックリネーム後のハードウェア記述に対して遅延回路を挿入する必要がある。そこでまずＣＰＵ３はあらかじめ遅延回路を用意する。ＣＰＵ３はハードウェア記述の遅延回路の入力端子Ｉｎｐｕｔが受信する信号名をＲＴＳＢに設定する。次にＣＰＵ３は遅延回路のＯｕｔｐｕｔ端子が受信する信号名を新規に作成する新規信号名に設定する。この遅延回路は出力端子Ｏｕｔｐｕｔから、リセット信号を出力する回路である。すなわちこの遅延回路は入力端子Ｉｎｐｕｔを介してリセット信号を受信し、所定遅延時間後、受信したリセット信号を出力端子Ｏｕｔｐｕｔを介して出力する。例えば図８の第１グループに対して、図１１のパラメータに基づいて挿入された遅延回路は、リセット信号ＲＳＴＢを受信してからＣＬＫ１の３クロック分の時間が経過した後、受信したリセット信号ＲＳＴＢを出力端子Ｏｕｔｐｕｔを介して出力する。
【００５４】
ＣＰＵ３は、図４のステップＳ４５において、クロック供給停止回路のＥｎａｂｌｅに、ｉ番目のグループ情報に含まれるＦ／Ｆが受信するリセット信号の名称を代入していた。一方、ステップＳ５３では、ＣＰＵ３はクロック供給停止回路のＥｎａｂｌｅが受信する信号名をステップＳ５２で作成した新規信号名に設定する（Ｓ５３）。その他のデータは、具体的には、図４のステップＳ４５と同様である。ここで、実施の形態１と同様にクロック供給停止回路は三つの端子を有する。すなわち、Ｄａｔａ端子、Ｅｎａｂｌｅ端子、Ｏｕｔｐｕｔ端子である。係る三つの端子の内、Ｄａｔａ端子はクロックを受信する端子であり、Ｅｎａｂｌｅ端子はリセット信号を受信する端子であり、Ｏｕｔｐｕｔ端子は信号を出力するための端子である。そこでＣＰＵ３は、クロック供給停止回路のＤａｔａ端子が受信する信号の名称を、処理対象であるｉ番目のグループ情報に含まれる各Ｆ／Ｆが受信するクロック信号の名称に設定する（Ｓ５３）。また、ＣＰＵ３はクロック供給停止回路のＥｎａｂｌｅ端子が受信する信号名をステップ５２で挿入した遅延回路の出力信号名に設定する（Ｓ５３）。
【００５５】
さらに、ＣＰＵは、処理対象であるｉ番目のグループ情報に含まれる各Ｆ／Ｆのリセットアクティブ情報［Ｈｉ又はＬｏｗ］を、クロック供給停止回路のＥｎａｂｌｅのアクティブ情報とする（Ｓ５３）。最後に、ＣＰＵ３は、クロック供給停止回路のＯｕｔｐｕｔ端子が出力する信号名を、ステップＳ４３においてリネームしたクロック信号の名称に設定する（Ｓ５３）。
ＣＰＵ３は図１０のＳ４２からＳ４６までの処理をステップ４１で取得したグループ数だけ繰り返す。そして、ＣＰＵ３は、グループテーブルが有する各グループ内のＦ／Ｆのそれぞれに対してクロック供給停止回路を挿入した回路であって、対応するクロック供給停止回路のＥｎａｂｌｅに遅延回路を接続した回路を示す修正後ハードウェア記述１４を完成させる（Ｓ５３）。具体的にはＣＰＵ３は、図１４に示した回路を記述した修正後ハードウェア記述１４を得る。図６記載の回路と比較すると図１４に記載の回路には遅延回路が含まれていることが分かる。そして、ＣＰＵ３は、バス５を介してメモリ２のデータ記憶領域１０へアクセスし、修正後ハードウェア記述をデータ記憶領域１０に書き込む。
【００５６】
図１４、図１５を用いて、本実施形態の回路設計装置１を適用してクロック供給停止回路を自動挿入した修正後ハードウェア記述１４による論理回路例について説明する。図１４は、図５に示す基本ハードウェア記述へクロック供給停止回路及び遅延回路を自動挿入した修正後ハードウェア記述の回路例を示す図である。図１５は、遅延回路の内部回路構成の一例を示す図である。
【００５７】
図１４に示す回路例において、実施形態１で生成した修正後ハードウェア記述（図６）に対して、Ｇｒｏｕｐ１のクロック供給停止回路（Ｅ１）における遅延回路ＤＬ１（Ｈ１）、Ｇｒｏｕｐ２のクロック供給停止回路（Ｅ２）における遅延回路ＤＬ２（Ｈ２）、Ｇｒｏｕｐ３のクロック供給停止回路（Ｅ３）におけるＤＬ３（Ｈ３）、Ｇｒｏｕｐ４のクロック供給停止回路（Ｅ４）におけるＤＬ４（Ｈ４）が追加されている。
【００５８】
図１５は、遅延回路ＤＬ１（Ｈ１）〜ＤＬ４（Ｈ４）の内部の回路構成を示している。図１５における入力信号ＲＳＴＢは、図１４の遅延回路ＤＬ１（Ｈ１）においてはＲＳＴＢと対応し、遅延回路ＤＬ２（Ｈ２）においてはＲＳＴＢ１と対応し、遅延回路ＤＬ３（Ｈ３）においてはＲＳＴＢと対応し、遅延回路ＤＬ４（Ｈ４）においてはＲＳＴＢ２と対応する。
【００５９】
同様に、図１５における入力信号ＣＬＫは、図１４の遅延回路ＤＬ１（Ｈ１）においてはＣＬＫ１と対応し、遅延回路ＤＬ２（Ｈ２）においてはＣＬＫ１と対応し、遅延回路ＤＬ３（Ｈ３）においてはＣＬＫ２と対応し、遅延回路ＤＬ４（Ｈ４）においてはＣＬＫ２と対応する。さらに、図１５における出力信号Ｅｎａｂｌｅは、図１４の一のクロック供給停止回路の入力端子であるＥｎａｂｌｅ（ＥＮ）に繋がる信号と対応する。
【００６０】
図１５において、Ｅｎａｂｌｅは、Ｆ／Ｆ  Ｄ１（Ｊ１）、Ｆ／Ｆ  Ｄ２（Ｊ２）、Ｆ／Ｆ  Ｄ３（Ｊ３）により、ＲＳＴＢをＣＬＫの３クロック分遅延させた信号と、ＲＳＴＢとの論理積（Ｊ４）である。Ｆ／Ｆ  Ｄ１（Ｊ１）、Ｆ／Ｆ  Ｄ２（Ｊ２）、Ｆ／Ｆ  Ｄ３（Ｊ３）は、ＣＬＫの立ち上がりで動作するＦ／Ｆである。図１５は、一例として、図１１に示すパラメータ例の内部構成の一例を示している。図１１に示すパラメータ１７は、挿入するクロック供給停止回路のＥｎａｂｌｅをＣＬＫ１に対して３クロック分、ＣＬＫ２に対して３クロック分遅延させる場合である。例えば、パラメータ１７が挿入するクロック供給停止回路のＥｎａｂｌｅをＣＬＫ１に対して５クロック分遅延させるパラメータの場合、ＣＬＫ１というクロックに対して挿入する遅延回路には合計５つのＦ／ＦでＲＳＴＢを遅延させる。
【００６１】
また、図１５の遅延回路構成はＦ／Ｆによるものであるが、図１３に示すパラメータ例のように、挿入するクロック供給停止回路のＥｎａｂｌｅに対して遅延素子ＴＤＸＤＬＹ１を２個挿入して遅延させる場合、遅延素子ＴＤＸＤＬＹ１を２個使用して同様の効果が得られる。
【００６２】
次に、本実施形態の回路設計装置及び方法により得られたクロック供給停止回路挿入後の修正後ハードウェア記述１４による論理回路において、リセット時のクロック供給停止について説明する。図１６は、図１４に一例として示す修正後ハードウェア記述に基づいて生成した論理回路におけるリセット時の動作を示すタイミングチャートである。
【００６３】
図１６に示すＣＬＫは、図６及び図１４に示すＣＬＫ１、ＣＬＫ２と対応する。図１６に示すＦ／Ｆに供給されるクロック（実施形態１）は、図６に示すＣＬＫ１＿Ｇ１、ＣＬＫ１＿Ｇ２、ＣＬＫ２＿Ｇ３、ＣＬＫ２＿Ｇ４と対応する。図１６におけるＦ／Ｆに供給されるクロック（実施形態２）は、図１４に示すＣＬＫ１＿Ｇ１、ＣＬＫ１＿Ｇ２、ＣＬＫ２＿Ｇ３、ＣＬＫ２＿Ｇ４と対応する。図１６に示すＲＳＴＢは、図６及び図１４に示すＲＳＴＢと対応する。図１６に示すＥｎａｂｌｅは、図１４に示す遅延回路ＤＬ１〜ＤＬ４（Ｈ１〜Ｈ４）の出力端子Ｏｕｔｐｕｔから出力され、クロック供給停止回路の入力端子の一であるＥｎａｂｌｅ端子（ＥＮ）に繋がる信号と対応する。
【００６４】
図１６において、Ｕ１はＲＳＴＢが立ち下がった期間から次の立ち上がりまでの期間である。実施形態１では、Ｕ１の期間、Ｆ／Ｆに供給されるクロックが停止されている。Ｕ２はＥｎａｂｌｅが立ち下がった期間から次の立ち上がりまでの期間である。実施形態２では、Ｕ２の期間、Ｆ／Ｆに供給されるクロックが停止されていることを示す。Ｕ４は、挿入された遅延回路によりクロック供給停止を遅延させた期間である。
【００６５】
実施形態１では、クロック供給を停止するＥｎａｂｌｅ信号がＲＳＴＢと同じであり、ＲＳＴＢはクロック（ＣＬＫ）と非同期であるため、図１６に示すＵ３のタイミングにおいて、Ｆ／Ｆに供給されるクロック（実施形態１）の立ち上がりに衝突する可能性があった。このとき、Ｆ／Ｆはデータが安定せず不定値になってしまう。上記の問題は、論理設計において、論理合成及びレイアウトを実施した後の遅延を考慮した検証でのみ発見することが可能であり、問題が見つかった場合には、後戻りが大きく開発期間の長期化やコストの上昇を招くという問題があった。実施形態２では、図１６に示すＵ３のタイミングでは、Ｆ／Ｆに供給されるクロック（実施形態２）は停止（Ｌｏｗ）となっている。従って、リセット解除時（Ｕ３）にＦ／Ｆに供給されるクロック（実施形態２）の立ち上がりに衝突する可能性がなくなり、Ｆ／Ｆはデータが常に安定し不定値になることはない。これは、Ｅｎａｂｌｅ信号が遅延回路によって遅延させられているからである。
【００６６】
このように、本実施形態では、実施形態１に加え、Ｅｎａｂｌｅ信号がアクティブになるタイミングを遅らせる遅延回路を自動挿入することができる。これにより、クロック供給を停止するまでの期間を延長し、リセットが解除されるタイミングとクロック供給を再開するタイミングとをずらすことができる。また、パラメータによって、クロック供給を停止するまでの期間を指定することにより、設計者の所望のタイミングでクロック供給を再開させることができる。
【００６７】
以上説明したように、本発明の好適な実施形態では、回路設計装置、方法及びプログラム（以下、「回路設計装置等）という）は、リセットがかかるＦ／Ｆに対して、リセット時にクロック供給を停止する回路設計を行う。回路設計装置等は、クロック供給停止回路を自動挿入する際に、最小規模のクロック供給停止回路を挿入する。このために、クロック供給停止を回路化することなしに作成された論理回路のハードウェア記述におけるＦ／Ｆ情報テーブルに保存されているクロック名、リセット名及びリセットアクティブ情報を共通化し、分類して、グループテーブルを作成する。これにより、クロック供給停止を回路化することなしに作成された論理回路のハードウェア記述に対して、クロック供給停止回路を自動挿入する。このようにして、論理回路の設計作業の効率化を図ることができる。また、リセット時における論理回路の低消費電力化を図ることができる。
【００６８】
さらに、本発明別の好適な実施形態では、回路設計装置等は、遅延回路と合わせてクロック供給停止回路を自動挿入する回路設計を行う。これにより、クロック供給を停止するまでの期間を延長することが可能になる。このようにして、回路設計装置等は、論理合成及びレイアウトを実施した後の遅延を考慮した検証を行わずに、リセット解除時とクロック変化点との衝突を防ぎ、論理回路の設計作業の効率化を図ることができる。
【００６９】
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。
【図面の簡単な説明】
【００７０】
【図１】本発明の実施形態１に係る回路設計装置の概念を示した図である。
【図２】本実施の形態に係る回路設計装置を計算機上で実現する場合の構成例を示す図である。
【図３】実施形態１のグループ化手段２１の動作例を説明するフローチャートである。
【図４】実施形態１の挿入手段の動作例を説明するフローチャートである。
【図５】基本ハードウェア記述の回路例を示す図である。
【図６】実施形態１において、図５に示す基本ハードウェア記述へクロック供給停止回路を自動挿入した修正後ハードウェア記述の回路例を示す図である。
【図７】Ｆ／Ｆ情報テーブルの一例を示す図である。
【図８】図７に基づいて生成したグループテーブルの一例を示す図である。
【図９】図６に一例として示す修正後ハードウェア記述に基づいて生成した論理回路におけるリセット時の動作を示すタイミングチャートである。
【図１０】基本ハードウェア記述の回路例を示す図である。
【図１１】パラメータ（遅延情報）の一例を示す図である。
【図１２】パラメータ（遅延情報）の他の一例を示す図である。
【図１３】パラメータ（遅延情報）の他の一例を示す図である。
【図１４】実施形態２において、図５に示す基本ハードウェア記述へクロック供給停止回路及び遅延回路を自動挿入した修正後ハードウェア記述の回路例を示す図である。
【図１５】遅延回路の内部回路構成の一例を示す図である。
【図１６】図１４に一例として示す修正後ハードウェア記述に基づいて生成した論理回路におけるリセット時の動作を示すタイミングチャートである。
【図１７】特許文献１に開示された論理回路設計装置の一実施形態の概略的構成図である。
【図１８】図１７に示す論理回路設計装置により生成されるゲーテットクロック供給回路を示す回路図である。
【図１９】特許文献２に開示された回路設計装置の構成を示す図である。
【図２０】図１９に示す回路設計装置によってゲーテットクロック化した構成を示す図である。
【符号の説明】
【００７１】
１、９  回路設計装置
２  メモリ
３  ＣＰＵ
４  ワークメモリ
５  バス
６  入出力ポート
８  制御部
１１  基本ハードウェア記述
１２  Ｆ／Ｆ情報テーブル
１３  グループテーブル
１４  修正後ハードウェア記述
１６  クロックリネーム後のハードウェア記述
１７  パラメータ
２１  グループ化手段
２２、２３  クロック供給停止回路自動挿入手段（挿入手段）
【図１】
0004955484.tif 000002
【図２】
0004955484.tif 000003
【図３】
0004955484.tif 000004
【図４】
0004955484.tif 000005
【図５】
0004955484.tif 000006
【図６】
0004955484.tif 000007
【図７】
0004955484.tif 000008
【図８】
0004955484.tif 000009
【図９】
0004955484.tif 000010
【図１０】
0004955484.tif 000011
【図１１】
0004955484.tif 000012
【図１２】
0004955484.tif 000013
【図１３】
0004955484.tif 000014
【図１４】
0004955484.tif 000015
【図１５】
0004955484.tif 000016
【図１６】
0004955484.tif 000017
【図１７】
0004955484.tif 000018
【図１８】
0004955484.tif 000019
【図１９】
0004955484.tif 000020
【図２０】
0004955484.tif 000021