(57)【要約】【課題】論理回路のクロック供給経路の解析を容易にし、クロック合成の際の手間を削減して、意図しない多段の論理を持つ論理回路の作成を防止する。【解決手段】論理回路設計装置１のクロック解析部４は、ネットリストなどの形式で与えられた論理回路について、クロック指定部２によって指定されたクロック供給源となる端子またはネット名から、フリップフロップとラッチおよびハードマクロのクロック入力ピンへのクロック経路を抽出する。抽出したクロック経路について、クロック接続確認部５は、例えばクロック入力ピンが複数のクロック供給源に接続されているか否かを判別する。論理段数抽出部６にてクロック経路の論理段数を抽出し、ルールチェック部７にて予め定めたルールを満たすか否かを判別する。解析の結果を表示部８に表示する。【選択図】  図１
2004326668.tif 000002
【特許請求の範囲】
【請求項１】
論理回路に含まれる構成要素間の接続関係を用いて上記論理回路を解析する論理回路設計装置であって、
クロックを生成するための信号を供給している上記構成要素を指定するクロック指定部と、
上記クロック指定部によって指定された上記構成要素から、上記論理回路に含まれるフリップフロップ、ラッチおよびハードマクロのクロック入力ピンまでの、上記構成要素を介して上記信号が供給されるクロック経路を、上記接続関係から抽出するクロック解析部とを備えていることを特徴とする論理回路設計装置。
【請求項２】
上記クロック解析部によって抽出された上記クロック経路の論理段数を抽出する論理段数抽出部を備えていることを特徴とする請求項１に記載の論理回路設計装置。
【請求項３】
上記論理段数抽出部の抽出した上記論理段数が、予め定められた論理段数の上限値としてのルールの値を超えているか否かを判別するルールチェック部を備えていることを特徴とする請求項２に記載の論理回路設計装置。
【請求項４】
上記論理回路に含まれる所望のフリップフロップ、ラッチおよびハードマクロを、解析の対象外とするための対象外構成要素と指定する対象外指定部を備えており、
上記クロック解析部が、上記対象外指定部によって指定された上記対象外構成要素を抽出の対象外として、上記クロック経路を抽出することを特徴とする請求項１ないし３のいずれか１項に記載の論理回路設計装置。
【請求項５】
上記クロック解析部によって抽出された上記クロック経路に基づいて、上記フリップフロップ、上記ラッチおよび上記ハードマクロのクロック入力ピンが、上記クロック指定部によって指定された複数の上記構成要素に接続されているか否かを判別するクロック接続確認部を備えていることを特徴とする請求項１に記載の論理回路設計装置。
【請求項６】
上記クロック解析部の抽出した上記クロック経路を表示するための表示部を備えていることを特徴とする請求項１ないし５のいずれか１項に記載の論理回路設計装置。
【請求項７】
コンピュータを、請求項１ないし６のいずれか１項に記載の論理回路設計装置の各手段として機能させるためのプログラム。
【請求項８】
請求項７に記載のプログラムを記録した、コンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、論理回路を設計するために用いられる論理回路設計装置、プログラムおよび記録媒体に関するものであり、より詳細には、例えばハードウェア記述言語（ＨＤＬ：ｈａｒｄｗａｒｅ  ｄｅｓｃｒｉｐｔｉｏｎ  ｌａｎｇｕａｇｅ）またはネットリストを用いて論理回路を設計するために用いられる論理回路設計装置、プログラムおよび記録媒体に関するものである。
【０００２】
【従来の技術】
近年、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）が高集積化するにつれ、そのＬＳＩに搭載される論理回路の規模が大きくなっている。このため、複数の設計者が機能ブロック単位で設計をして、その後に各ブロックを一つに統合してＬＳＩを設計する手法が一般的になっている。
【０００３】
ここで、独立に設計された複数のブロックを統合する際には、クロックのタイミングのずれ（クロックスキュー）が生ずる場合がある。すなわち、例えば所望のクロックを作成するための論理回路においては、クロックが所定の経路（クロック経路）を介して供給されるのであるが、ブロックの統合の際の接続関係によっては、互いに異なるクロック経路においてクロックのタイミングのずれを生ずることがある。この場合、このようなクロックスキューによって、論理回路が誤動作してしまう虞れがある。
【０００４】
そこで、クロックのタイミングのずれ（クロックスキュー）を低減するために、ゲーティッドクロック合成が行われる。また、このゲーティッドクロックを用いることによって、消費電力を低減できる。
【０００５】
このゲーティッドクロック合成においては、タイミングのずれを低減するように、タイミングを遅延させるバッファ（ノンインバータ）が、特定のクロック経路に挿入される。
【０００６】
なお、上述の従来技術に関して、文献公知発明に係る先行技術文献はない。
【０００７】
【発明が解決しようとする課題】
しかしながら、従来は、クロック経路の解析を行わず、またクロック経路の論理段数を把握せずに、ブロックを統合するゲーティッドクロック合成を行うため、意図しない多段の論理をもつ回路が合成されてしまう虞れがあった。
【０００８】
ここで、従来のゲーティッドクロック合成の一例について説明する。図８に示すように、論理回路６００は、別々に設計されたブロック６０２とブロック６０３とを含んでいる。
【０００９】
ブロック６０２は、論理ゲート６０４〜６０７と、フリップフロップ６０８〜６１０とを含んでいる。ブロック６０３は、２入力アンドゲート６１１とフリップフロップ６１２・６１３とを含んでいる。２入力アンドゲート６１１は、ゲーティッドクロックを作成する。
【００１０】
ここで、ブロック６０３のクロックイネーブルとして、ブロック６０２の論理ゲート６０４〜６０７を経由する信号が使われている。この経路中の論理ゲート６０４は、クロック６０１を入力としている。
【００１１】
このような回路６００に、ゲーティッドクロック合成を用いると、クロック６０１からブロック６０３のフリップフロップ６１２・６１３のクロック入力ピンまでのパスは、論理ゲート６０４〜６０７を経由するものが適応される。このため、このパスの遅延とフリップフロップ６０８〜６１０のクロック入力ピンまでの遅延を合わせる必要がある。このため、ゲーティッドクロック合成によって作成された回路６００ａには、図９に示すように、クロックツリー６１４が挿入されてしまうことがある。
【００１２】
このように、ゲーティッドクロック合成により、設計者の意図しないクロック経路が作成されたり、多くの論理回路を含むクロック経路が作成されたりする場合がある。また、上述のように、複数の設計者により機能ブロックレベルで設計して統合する場合には、各設計者間でクロックに関する情報の漏れが生じやすく、ゲーティッドクロック合成により、設計者の意図しない多段数の論理を持つクロック回路が作成されることがある。
【００１３】
これらの回路は、クロック合成後のクロックツリー構成を人手にて解析し、回路修正を行い、クロック合成を行う工程を繰り返す必要があった。このため、例えば複数の機能ブロックを統合する場合などにおいて、クロック合成の際の手間が増大するという問題があった。
【００１４】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、クロック経路の解析を容易にし、クロック合成の際の手間を削減でき、設計者の意図しない多段数の論理を持つクロック回路の作成を防止した、論理回路設計装置、プログラムおよび記録媒体を提供することにある。
【００１５】
【課題を解決するための手段】
本発明に係る論理回路設計装置は、上記課題を解決するために、論理回路に含まれる構成要素間の接続関係を用いて上記論理回路を解析する論理回路設計装置であって、クロックを生成するための信号を供給している上記構成要素を指定するクロック指定部と、上記クロック指定部によって指定された上記構成要素から、上記論理回路に含まれるフリップフロップ、ラッチおよびハードマクロのクロック入力ピンまでの、上記構成要素を介して上記信号が供給されるクロック経路を、上記接続関係から抽出するクロック解析部とを備えていることを特徴としている。
【００１６】
ここで、論理回路に含まれる構成要素とは、例えば（組合せ）論理素子としてのアンドゲート、オアゲート、順序回路としてのフリップフロップに加えて、ラッチ、ハードマクロなどを意味するものとする。また、構成要素には、論理回路の入力端子、出力端子をも含むものとする。なお、ハードマクロとは、レイアウトデータで登録されているセル（マクロセル）である。例えば、従来からのライブラリ（設計資産）は、ほぼハードマクロとなっている。
【００１７】
また、論理回路に含まれる構成要素間の接続関係とは、例えばネットリストまたはハードウェア記述言語を意味するものとする。例えば、ネットリストによって接続関係が与えられている場合には、構成要素はネット名となる。上記論理回路設計装置には、この構成要素間の接続関係が与えられる。この接続関係を上記論理回路設計装置に与える方法はどのようなものであってもよい。
【００１８】
ここで、論理回路設計装置のクロック指定部は、クロックを生成するための信号（クロック信号）を供給する構成要素（クロック供給源）を指定する。
【００１９】
クロック指定部は、例えばユーザがネットリストなどに応じて設定した、クロック供給源となるような構成要素を、クロックを生成するための信号を供給する構成要素として指定する。例えば、クロック入力端子がユーザによって設定されると、クロック指定部はそのクロック入力端子を、クロックを生成するための信号を供給する構成要素として指定する。または、例えば、クロック指定部が、予め設定した規則に基づいて、ネットリストなどの接続関係から、クロックを生成するための信号を供給する構成要素を抽出して指定する構成であってもよい。
【００２０】
ここで、論理回路設計装置の解析の対象となる論理回路においては、クロック指定部によって指定された構成要素から、その構成要素に接続された他の構成要素へと順次信号が供給される。すなわち、対象となる論理回路は、一般に、クロックを作成するための論理回路である。そして、信号は、論理回路に含まれる、フリップフロップ、ラッチおよびハードマクロのクロック入力ピンに供給される。または、信号は、論理回路の出力端子に供給される。このように、各構成要素を介して、クロックを生成するための信号が供給される経路を、ここではクロック経路と呼ぶ。
【００２１】
論理回路設計装置のクロック解析部は、クロック指定部によって指定された構成要素から、論理回路に含まれるフリップフロップ、ラッチおよびハードマクロのクロック入力ピンまでのクロック経路を、論理回路に含まれる構成要素間の接続関係から抽出する。
【００２２】
より詳細には、例えばクロック解析部は、構成要素間の接続関係から、フリップフロップ、ラッチおよびハードマクロを抽出する。そして、これらの構成要素のクロック入力ピンに接続されている、他の構成要素を抽出する。このようにして、順次構成要素を抽出して、入力端子、またはフリップフロップ、ラッチ、ハードマクロの出力に行き着くまで繰り返して、論理回路におけるクロックを解析する。
【００２３】
したがって、このように抽出したクロック経路を用いて、論理回路の構造をより簡単に、かつ正確に把握することができる。このため、例えば論理回路の構造にエラーがある場合であっても、エラーを簡単に見つけて、作業効率を向上できる。また、予め合成するためのブロック、論理回路などを解析することによって、例えばクロック合成において意図しない多段のクロックツリーが挿入されることを防止できる。また、上記論理回路設計装置によって得られた論理回路において、電力削減、面積削減、コスト低下などを達成できる。
【００２４】
したがって、クロック経路の解析を容易にし、クロック合成の際の手間を増大させず、設計者の意図しない多段数の論理を持つクロック回路の作成を防止できる。
【００２５】
このように、論理回路設計装置は、ハードウェア記述またはネットリストからクロック経路を解析する手段を持つ。経路解析の際に、論理素子は通過して経路解析を行うが、レジスタとラッチおよびハードマクロはスルーしない。したがって、論理回路設計装置がクロック経路を解析するので、人為的にクロック経路の解析を行う必要が無くなり、論理回路設計の効率の向上が可能となる。
【００２６】
なお、上述の論理回路設計装置を、一つ、又は複数の入力クロックを持つ論理回路を設計する論理回路設計支援装置においてハードウェア記述言語またはネットリストからクロック経路を解析する手段を持つ論理設計支援装置である、と表現することもできる。
【００２７】
本発明に係る論理回路設計装置は、上記課題を解決するために、上記構成において、上記クロック解析部によって抽出された上記クロック経路の論理段数を抽出する論理段数抽出部を備えていることを特徴としている。
【００２８】
このように、クロック指定部によって指定された構成要素からフリップフロップ、ラッチおよびハードマクロのクロック入力ピンまでのクロック経路に介在する構成要素の数を、論理段数抽出部が抽出するので、この論理段数を簡単に把握することができる。
【００２９】
したがって、この論理段数などを参考にして、論理回路やブロックの統合などを、統合の前に予め容易に解析することができる。
【００３０】
また、論理段数を自動的に抽出する手段を持つので、人為的に論理段数を抽出する手間を省いて、作業効率を向上することが可能となる。
【００３１】
なお、上記論理回路設計装置を、一つ、または複数の入力クロックを持つ論理回路を設計する論理回路設計支援装置であって、前記解析結果よりフリップフロップとラッチおよびハードマクロのクロック入力ピンへの論理段数を抽出する手段を持つ構成である、と表現することもできる。
【００３２】
本発明に係る論理回路設計装置は、上記課題を解決するために、上記構成において、上記論理段数抽出部の抽出した上記論理段数が、予め定められた論理段数の上限値としてのルールの値を超えているか否かを判別するルールチェック部を備えていることを特徴としている。
【００３３】
ここで、論理段数の上限値としてのルールの値は、例えばユーザによって、上記論理回路設計装置に対して予め設定される。または、解析の対象となるブロック、論理回路内の接続関係に応じて、例えばクロック解析部がルールチェック部に対して適切なルールの値を設定する構成であってもよい。
【００３４】
上記構成によれば、ルールチェック部が、論理段数抽出部の抽出した論理段数がルールの値を超えているか否かを判別するので、予め設定したルールが満たされているか否かを直ぐに確認できる。したがって、作業効率の向上を図ることができる。
【００３５】
なお、上記論理回路設計装置を、一つ、又は複数の入力クロックを持つ論理回路を設計する論理回路設計支援装置において、前記抽出結果より求められたフリップフロップとラッチおよびハードマクロのクロック入力ピンまでの論理段数に対して自動的にルールチェックを行う手段を持つ構成である、と表現することもできる。または、求められた論理段数が、与えられた基準を満たしているかどうかを自動的にチェックする構成である、と表現することもできる。
【００３６】
本発明に係る論理回路設計装置は、上記課題を解決するために、上記構成において、上記論理回路に含まれる所望のフリップフロップ、ラッチおよびハードマクロを、解析の対象外とするための対象外構成要素として指定する対象外指定部を備えており、上記クロック解析部が、上記対象外指定部によって指定された上記対象外構成要素を抽出の対象外として、上記クロック経路を抽出することを特徴としている。
【００３７】
上記対象外指定部は、所望のフリップフロップ、ラッチおよびハードマクロを、解析の対象外とするための対象外構成要素と指定する。例えば、対象外指定部は、ユーザによって、解析の対象外とするためのフリップフロップ、ラッチおよびハードマクロが設定されると、その構成要素を対象外構成要素と指定する。または、例えば対象外指定部は、予め定めた規則に従って、所定のフリップフロップ、ラッチおよびハードマクロを、解析の対象外とするための対象外構成要素と指定してもよい。
【００３８】
このため、指定した構成要素についてのクロック経路の抽出を省略できるので、例えば処理時間を短縮して、作業効率を向上できる。
【００３９】
なお、上記対象外指定部が解析の対象外とした構成要素については、クロック経路が抽出されないので、上述の論理段数抽出およびルールチェック（ルールの値を超えているか否か）についても、処理の対象外となる。
【００４０】
また、上記論理回路設計装置を、一つ、又は複数の入力クロックを持つ論理回路を設計する論理回路設計支援装置において、指定したフリップフロップとラッチおよびハードマクロのクロック入力ピンのクロック経路解析と論理段数抽出とルールチェックを無効にする手段を持つ構成である、と表現することもできる。また、クロック経路解析と論理段数抽出とルールチェックとの対象外となるフリップフロップ、ラッチおよびハードマクロを指定する手段を持つ構成である、と表現することもできる。
【００４１】
本発明に係る論理回路設計装置は、上記課題を解決するために、上記構成において、上記クロック解析部によって抽出された上記クロック経路に基づいて、上記フリップフロップ、上記ラッチおよび上記ハードマクロのクロック入力ピンが、上記クロック指定部によって指定された複数の上記構成要素に接続されているか否かを判別するクロック接続確認部を備えていることを特徴としている。
【００４２】
ここで、解析の対象となる論理回路においては、フリップフロップ、ラッチおよびハードマクロのクロック入力ピンは、クロックを生成するための信号を供給している構成要素（クロック供給源）へと、クロック経路を介して接続されている。
【００４３】
上記構成によれば、クロック接続確認部は、クロック入力ピンが複数のクロック供給源に接続されているか否かを判別する。
【００４４】
したがって、例えば複数のクロック供給源に接続されているとクロック接続確認部が判別した場合には、エラーであるとしてユーザに対して警告を行うようにして、論理回路の解析作業の効率を向上できる。
【００４５】
また、クロック接続確認部は、さらに、クロック解析部の抽出したクロック経路が、クロック指定部で指定されたクロック供給源への経路となっているかどうかを確認してもよい。
【００４６】
本発明に係る論理回路設計装置は、上記課題を解決するために、上記構成において、上記クロック解析部の抽出した上記クロック経路を表示するための表示部を備えていることを特徴としている。
【００４７】
このように、抽出したクロック経路を表示部に表示すれば、クロック解析部の解析内容を容易に把握して、作業効率を向上できる。
【００４８】
また、上記表示部には、上記論理段数抽出部の抽出した論理段数を表示してもよい。また、上記表示部には、上記ルールチェック部の判別結果を表示してもよい。また、上記表示部には、上記対象外指定部の指定した対象外構成要素を表示してもよい。また、上記表示部には、上記クロック接続確認部の判別結果を表示してもよい。
【００４９】
すなわち、上記論理回路設計装置は、上述のクロック経路と、上述の論理段数と、上述のルールチェック結果を表示するので、視覚的に判断することが可能となり、作業の効率化を図ることが可能となる。
【００５０】
なお、上記表示部は、例えば表示パネルに表示を行ってもよいし、印刷シートに印刷出力を行うことによって表示を行ってもよい。または、表示パネルへの表示と印刷出力とをともに行う構成であってもよい。
【００５１】
また、上述した論理回路設計装置を、フリップフロップとラッチおよびハードマクロのクロック入力ピンまでのクロック経路を解析し、論理段数を抽出して得られた結果を自動的にチェックし、フリップフロップとラッチおよびハードマクロのクロック入力ピンまでのクロック経路と論理段数とルールチェックの結果とを表示する手段を持つ構成である、と表現することもできる。また、上述した論理回路設計装置を、一つ、又は複数の入力クロックを持つ論理回路を設計する論理回路設計支援装置において、クロックを定義する手段と、フリップフロップとラッチおよびハードマクロのクロック入力ピンへのクロック経路を解析する手段と、この解析結果より論理段数を抽出する手段と、前記抽出手段で得られた論理段数に対して自動的にルールチェックを行う手段と、クロック経路解析と論理段数の抽出およびルールチェックの対象外となるフリップフロップとラッチおよびハードマクロを指定する手段と、クロック経路と論理段数と論理段数のチェック結果を表示する手段と、を持つ構成である、と表現することもできる。この構成によれば、人為的にクロック経路を解析することなく不具合を見つけることが可能となるため、論理回路設計効率の向上が可能となる。
【００５２】
また、本発明に係るプログラムは、上記課題を解決するために、コンピュータを、上述のいずれかの論理回路設計装置の各手段として機能させるためのプログラムであることを特徴としている。
【００５３】
上記プログラムは、コンピュータを、論理回路設計装置のクロック指定部、クロック解析部、または、論理段数抽出部、ルールチェック部、対象外指定部、クロック接続確認部、表示部として機能させる。このように、プログラムをコンピュータに読取らせて実行させることによって上述の論理回路設計装置を実現できるので、汎用性を高めることができる。
【００５４】
また、本発明に係る記録媒体は、上記課題を解決するために、上述のプログラムを記録した、コンピュータ読取可能な記録媒体であることを特徴としている。
【００５５】
この記録媒体のプログラムをコンピュータに読取らせて実行させることによって、上述の論理回路設計装置を実現できるので、汎用性を高めることができる。
【００５６】
なお、この記録媒体はどのような形態であってもよく、例えばＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フロッピー（登録商標）ディスクなどの形態で実現できる。
【００５７】
以上のように、本発明によれば、フリップフロップとラッチおよびハードマクロのクロック入力ピンまでの経路を解析し、この解析結果より論理段数を抽出し、この論理段数に対して自動的にチェックを行い、論理段数とルールチェックの結果を表示することが可能なため、設計効率の向上を図ることが可能な論理回路設計支援装置を得ることができる。
【００５８】
【発明の実施の形態】
本発明の一実施の形態について図１ないし図７に基づいて説明すると以下の通りである。
【００５９】
本実施形態に係る論理回路設計装置は、例えばハードウェア記述言語（ＨＤＬ：ｈａｒｄｗａｒｅ  ｄｅｓｃｒｉｐｔｉｏｎ  ｌａｎｇｕａｇｅ、ＨＤＬ記述）またはネットリストを用いて論理回路を設計するために用いられる。上記論理回路設計装置は、例えば所望のクロックを作成するための論理回路を解析する。
【００６０】
ここで、ＨＤＬとは、回路やシステムなどのハードウェアを記述するための言語である。例えば、ＨＤＬを用いて、論理回路を記述することができる。また、ネットリストとは、論理回路における接続関係を記述したものである。
【００６１】
論理回路設計装置１は、図１に示すように、概略的に、クロック指定部２、対象外指定部３、クロック解析部４、クロック接続確認部５、論理段数抽出部６、ルールチェック部７、および表示部８を備えている。
【００６２】
論理回路設計装置１は、複数のブロックを統合した論理回路の、供給されるクロックに対する応答を解析する。ここで、論理回路、ブロックなどは、例えば、論理回路に含まれる構成要素間の接続関係としてのＨＤＬまたはネットリストの形式によって、論理回路設計装置１に与えられる。
【００６３】
より詳細には、論理回路設計装置１は、論理回路において、クロックを生成するための信号が供給される所定の経路（クロック経路）について、解析をする。ここで、クロックを生成するための信号とは、例えばクロック信号自身であってもよいし、またはクロックの有効・無効を切り換えるためのイネーブル信号、セレクト信号などであってもよい。なお、以下では、クロック経路とは、具体的には、フリップフロップとラッチおよびハードマクロへのクロック入力ピンから、上述の信号の起点（供給源、クロック供給源）までの経路を意味するものとする。
【００６４】
クロック指定部２は、論理回路設計装置１に対して、解析の対象となる論理回路で使用するクロックを指定する。例えば、クロック指定部２は、論理回路で使用するクロックとしてユーザによって設定されたものを、論理回路設計装置１のクロック解析部４に対して指定する。
【００６５】
より詳細には、ユーザによって、例えばネットリストを参照して、クロックの起点となる端子またはネット名が設定される。クロック指定部２は、そのクロックの起点となる端子またはネット名を、その論理回路で使用するクロックとして指定する。なお、クロック指定部２を、クロックを定義する手段であると表現することもできる。
【００６６】
クロック指定部２は、ユーザによる設定を検出するために、例えば図示しないキーボードのような入力手段を備えていてもよい。また、例えば図示しないマウスのような入力手段を備え、選択可能な端子またはネット名を後述する表示部８に表示させて選択可能とする構成であってもよい。
【００６７】
クロック指定部２について、図２および図３に基づいて説明する。図２においては、外部から入力されたクロックで動作する回路について、図３においては、ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ：位相同期ループ）  や分周回路のような回路内部で作成されたクロックで動作する回路について、それぞれクロックを定義する方法を説明する。
【００６８】
回路１００は、図２に示すように、ブロック１０３・１０４を含んでいる。また、回路１００は、クロック入力端子１０１、クロックイネーブル入力端子１０２を備えている。この回路１００は、外部から入力されたクロックで動作する回路である。
【００６９】
ブロック１０３は、２入力アンドゲート１０５を含んでいる。またブロック１０４は、フリップフロップ１０６・１０７を含んでいる。
【００７０】
フリップフロップ１０６・１０７のクロック入力ピンには、２入力アンドゲート１０５を経由して、クロック入力端子１０１が接続されている。すなわち、回路１００においては、クロック経路は、クロック入力端子１０１から２入力アンドゲート１０５を経由してフリップフロップ１０６・１０７のクロック入力ピンに至る経路である。
【００７１】
このように、クロック経路に論理ゲート（２入力アンドゲート）のみが存在する場合は、ユーザによって、クロック入力端子１０１からのクロックが、論理回路としての回路１００において使用するクロックとして設定される。クロック指定部２は、設定されたクロック入力端子１０１を、回路１００（論理回路）で使用するクロックの端子として指定する。
【００７２】
また、回路２００は、図３に示すように、ブロック２０２・２０３・２０５、およびＰＬＬ２０４を含んでいる。また、回路２００は、クロック入力端子２０１を備えている。また、回路２００は、回路内部のＰＬＬ２０４で作成されたクロックで動作する回路でもある。
【００７３】
ブロック２０２は、フリップフロップ２０６を含んでいる。また、ブロック２０２は、端子ＣＬＫＯＵＴ２１１を備えている。ブロック２０２は、このＣＬＫＯＵＴ２１１からブロック２０３にクロックを供給する。
【００７４】
ブロック２０３は、フリップフロップ２０７・２０８を含んでいる。フリップフロップ２０７・２０８には、ブロック２０２のＣＬＫＯＵＴ２１１からクロック入力ピンにクロックが供給される。
【００７５】
ＰＬＬ２０４は、入力信号と発振器の出力信号の位相差を一定に保つようにフィードバック制御している回路である。論理回路においては、例えばビット同期のために用いられる。ＰＬＬ２０４は、出力端子ＰＬＬＯＵＴ２１２を備えている。ＰＬＬ２０４は、この出力端子ＰＬＬＯＵＴ２１２からブロック２０５にクロックを供給する。
【００７６】
ブロック２０５は、フリップフロップ２０９・２１０を含んでいる。フリップフロップ２０９・２１０には、ＰＬＬ２０４のＰＬＬＯＵＴ２１２から、クロック入力ピンにクロックがそれぞれ供給される。
【００７７】
ここで、この回路２００におけるクロックとしては、クロック入力端子２０１から入力され、ブロック２０２内部のフリップフロップ２０６のクロック入力ピンとＰＬＬ２０４のクロック入力とに供給されるクロックがある。
【００７８】
また、回路２００には、回路内部で作成されたクロックとして、ブロック２０２のフリップフロップ２０６の出力端子から、ブロック２０３のフリップフロップ２０７・２０８のクロック入力ピンに供給されるクロックがある。
【００７９】
また、回路２００には、回路内部で作成されたクロックとして、ＰＬＬ２０４の出力からブロック２０５のフリップフロップ２０９・２１０のクロック入力ピンに供給されるクロックがある。
【００８０】
このように、ＰＬＬや分周回路のような、回路内部で作成されるクロックがある場合には、クロック供給元である、ＣＬＫＯＵＴ２１１またはＣＬＫＯＵＴ２１１に接続されるネット名と、ＰＬＬＯＵＴ２１２またはＰＬＬＯＵＴ２１２に接続されるネット名とが、ユーザによって設定される。クロック指定部２は、設定されたネット名、端子などを、回路２００で使用するクロックのネット名、端子として指定する。
【００８１】
以上に説明したように、クロック指定部２は、ユーザによって指定された端子またはネット名を、その回路で使用するクロックの供給源として、論理回路設計装置１に対して指定する。
【００８２】
なお、上述の例においては、単にユーザによる設定に基づいて指定をする構成についてのみ記載したが、クロック指定部２の構成はこれに限るものではない。例えば、クロック指定部２は、ＨＤＬまたはネットリストの形式によって与えられた論理回路について、その論理回路で使用するクロックの供給源の候補となる端子またはネット名を、所定のルールに基づいて抽出して、後述する表示部８に表示する構成であってもよい。また、例えば、表示部８に表示された候補のうちから、ユーザが適当なものを選択するようにしてもよい。なお、所定のルールとしては、例えば上述のように、外部から入力されるクロックのクロック経路に論理ゲートのみが存在する場合には、そのクロックの起点となる端子などを候補とすればよい。また、例えば上述のように、回路内部で作成されたクロックがある場合には、その作成されたクロックを出力する端子などを候補とすればよい。
【００８３】
対象外指定部３は、例えばユーザによって指示されたフリップフロップとラッチおよびハードマクロについて、所定の処理の対象外となるように、論理回路設計装置１に対して指定するものである。ここで、クロック経路においてなされる所定の処理とは、例えば後述するクロック経路解析、論理段数抽出、および論理段数チェックである。
【００８４】
対象外指定部３の動作を図４に基づいて説明する。回路３００は、図４に示すように、ＰＬＬ３０１とブロック３０２とを含んでいる。
【００８５】
ＰＬＬ３０１は、入力端子ＣＬＫと出力端子ＰＬＬＯＵＴとを備えている。入力端子ＣＬＫには回路３００に供給されるクロックが入力される。また、ＰＬＬ３０１は、出力端子ＰＬＬＯＵＴからブロック３０２にクロックを供給する。
【００８６】
また、ブロック３０２は、入力を８分の１に分周して出力する分周回路である。ブロック３０２は、フリップフロップ３０３〜３０５を含んでいる。フリップフロップ３０３には、ＰＬＬ３０１のＰＬＬＯＵＴからクロックが供給される。フリップフロップ３０３は、出力をフリップフロップ３０４に供給する。フリップフロップ３０４には、フリップフロップ３０３からの出力が供給される。フリップフロップ３０４は、出力をフリップフロップ３０５に供給する。フリップフロップ３０５には、フリップフロップ３０４からの出力が供給される。フリップフロップ３０５の出力は、ブロック３０２の外部へと供給される。
【００８７】
ここで、このブロック３０２は、ＰＬＬ３０１の出力を８分の１に分周するものであり、ＰＬＬ３０１を観測するための回路である。このため、回路３００において例えばクロックスキューを考慮する際には、ブロック３０２中のフリップフロップ３０３〜３０５のクロック入力ピンについては解析する必要がないといえる。
【００８８】
そこで、例えばユーザによってフリップフロップ３０３〜３０５が対象外であると設定された場合には、対象外指定部３は、論理回路設計装置１のクロック解析部４に対して、フリップフロップ３０３〜３０５を処理の対象外に指定する。フリップフロップ３０３〜３０５を対象外と指定することによって、これらについてはクロック経路解析、論理段数抽出、ルールチェックを行うことがないので、処理時間の短縮を図ることができる。
【００８９】
なお、解析の対象となる上述の回路３００のような実際の論理回路において、このように解析の対象外にできる回路の存在が予め判明している場合には、対象外に指定しておくことによってチェックを省いてチェック時間を短縮できるが、論理回路設計装置１はこの構成に限るものではない。
【００９０】
クロック解析部４は、クロック経路解析を行うものであり、例えば入力されたＨＤＬ記述またはネットリストから、フリップフロップとラッチおよびハードマクロのクロック入力ピンまでのクロック経路を抽出するものである。すなわち、クロック解析部４は、フリップフロップとラッチおよびハードマクロへのクロック入力ピンから、クロックを生成するための信号の起点までの経路、すなわちクロック経路を解析（判別、抽出）する手段として機能する。
【００９１】
例えば、クロック解析部４は、フリップフロップおよびラッチ、ハードマクロのクロック入力ピンに接続される出力ピンを持つセルを抽出する。そして、そのセルが論理素子ならば、この論理素子の入力ピンに接続される出力ピンを持つセルを抽出する。このような動作を論理回路の入力端子、またはフリップフロップ、ラッチ、ハードマクロの出力ピンに行き着くまで繰り返して、クロック経路を解析するようになっている。
【００９２】
ここで、図５に基づいてクロック解析部４の動作について説明する。回路４００は、図５に示すように、ブロック４０４・４０５を含んでいる。また、回路４００は、入力端子４０１〜４０３を備えている。
【００９３】
ブロック４０４は、フリップフロップ４０６、２入力データセレクタ４０７、２入力アンドゲート４０８、およびノンインバータ４０９を含んでいる。
【００９４】
フリップフロップ４０６には、入力端子４０１からクロックが供給される。フリップフロップ４０６は、出力を２入力データセレクタ４０７の端子ＩＮ１に供給する。
【００９５】
２入力データセレクタ４０７は、入力端子ＩＮ０・ＩＮ１とセレクト端子（コントロール入力ピン）Ｓとを備えている。入力端子ＩＮ０には入力端子４０１からクロックが供給される。入力端子ＩＮ１にはフリップフロップ４０６からの出力が供給される。セレクト端子Ｓには入力端子４０３からセレクト信号が供給される。２入力データセレクタ４０７は、入力端子ＩＮ０・ＩＮ１に供給される信号を、セレクト端子Ｓに供給されるセレクト信号に応じて選択して出力する。２入力データセレクタ４０７の出力は２入力アンドゲート４０８に供給される。
【００９６】
２入力アンドゲート４０８は、入力端子Ａ・Ｂを備えている。入力端子Ａには、入力端子４０２からクロックイネーブル信号が供給される。入力端子Ｂには、２入力データセレクタ４０７の出力が供給される。２入力アンドゲート４０８は、入力端子Ａ・Ｂへの入力に応じて、出力をノンインバータ４０９に供給する。
【００９７】
ノンインバータ４０９は、入力される信号をそのまま出力するものである。ノンインバータ４０９によって、入力される信号のタイミングを遅延させて出力することができる。ノンインバータ４０９は、２入力アンドゲート４０８から供給される信号を出力する。ノンインバータ４０９からの出力は、ブロック４０５に供給される。
【００９８】
ブロック４０５は、フリップフロップ４１０・４１１を含んでいる。フリップフロップ４１０・４１１のクロック入力ピンには、ブロック４０４のノンインバータ４０９からの出力がそれぞれ供給される。
【００９９】
上記構成の回路４００に対して、クロック解析部４は、以下のようにクロック経路を解析する。
【０１００】
まず、回路４００において使用されるクロックが、ユーザによって設定される。より詳細には、この回路４００においては、入力端子４０１〜４０３およびフリップフロップ４０６の出力端子が、クロックを生成するための信号の起点として設定される。クロック指定部２は、入力端子４０１〜４０３およびフリップフロップ４０６の出力端子を、回路４００で使用するクロックの端子として指定する。
【０１０１】
一方、クロック解析部４は、ネットリストなどで表現された、回路４００の有する構成要素のうちから、クロック経路の終点となるようなフリップフロップとラッチおよびハードマクロを抽出する。ここでは、図５に示すように、ブロック４０５のフリップフロップ４１０・４１１が抽出される。
【０１０２】
そして、クロック解析部４は、抽出したフリップフロップ、ラッチ、ハードマクロのクロック入力ピンから、順次クロック経路の上流側のセルへと戻るようにして、入力端子、または他のフリップフロップ、ラッチ、ハードマクロの出力端子へと行き着くまで解析する。
【０１０３】
まず、ブロック４０５のフリップフロップ４１０・４１１のクロック入力ピンには、ブロック４０４のノンインバータ４０９が接続されている。このノンインバータ４０９の入力ピンは２入力アンドゲート４０８に接続されている。２入力アンドゲート４０８の入力ピンＡは入力端子４０２に接続されている。入力端子まで行き着いたため、２入力アンドゲート４０８の入力ピンＡについての経路解析は完了する。
【０１０４】
また、２入力アンドゲート４０８のもう１つの入力ピンＢは、２入力データセレクタ４０７に接続されている。２入力データセレクタ４０７のコントロール入力ピンＳは入力端子４０３に接続されている。入力端子４０３まで行き着いたため、２入力データセレクタ４０７のコントロール入力ピンＳについての経路解析は完了する。
【０１０５】
また、２入力データセレクタ４０７の入力ピンＩＮ０は、入力端子４０１に接続されている。入力端子４０１まで行き着いたため、２入力データセレクタ４０７の入力ピンＩＮ０についての経路解析は完了する。
【０１０６】
また、２入力データセレクタ４０７の入力ピンＩＮ１は、フリップフロップ４０６の出力に接続されている。フリップフロップの出力端子に行き着いたので、２入力データセレクタ４０７の入力ピンＩＮ１についての経路解析は完了する。
【０１０７】
このようにして、クロック解析部４によって、指定された端子またはネット名から、フリップフロップおよびラッチ、ハードマクロのクロック入力ピンへの、各構成要素を介して信号が供給されるクロック経路を抽出することができる。
【０１０８】
なお、本実施形態のクロック解析部４は、フリップフロップ４１１のクロック入力ピンのように、フリップフロップ４１０のクロック入力ピンと同じクロックネットに接続されているフリップフロップを、１つのフリップフロップ群として扱うようになっている。これによって、処理を簡単にできる。なお、クロック解析部４はこの構成に限るものではなく、例えばフリップフロップ４１０・４１１を別個に処理する構成であってもよいし、または、クロック経路の解析においては一つのフリップフロップ群として扱い、その後に例えば表示部８に表示を行う際には別個のものとして扱う（表示する）構成であってもよい。
【０１０９】
なお、解析の対象となるクロック経路において、ハードマクロについては、いわゆるホワイトボックスの場合は内部の構成が分かるため、ハードマクロとして含める必要はない。しかしながら、通常は、ハードマクロは、グレーボックス、ブラックボックスとして提供されるので、本実施形態のクロック解析部４の対象として含めている。なお、フリップフロップは順序回路であると表現することもできる。また、ラッチについては順序回路でない場合が存在する。
【０１１０】
クロック接続確認部５は、クロック経路の接続を確認する。より詳細には、クロック接続確認部５は、クロック解析部４の解析結果に基づいて、フリップフロップなどのクロック入力ピンが複数のクロック供給源に接続されているか否かを調査する。また、クロック接続確認部５は、クロック指定部２で指定されたクロックへの経路があるか、すなわちクロック解析部４の抽出したクロック経路が実際にクロック指定部２で指定されたクロックへの経路となっているかどうかを調査する。このクロック接続確認部５の動作については後述する。
【０１１１】
論理段数抽出部６は、クロック経路における論理段数を抽出する。より詳細には、論理段数抽出部６は、クロック解析部４の解析結果に基づいて、クロック経路における（狭義の）論理回路の数、すなわちクロック経路の起点と終点との間に存在する構成要素の数を抽出する。
【０１１２】
ここで、図５に基づいて、論理段数抽出部６の動作について説明する。上述のように、クロック解析部４の解析によって、例えばフリップフロップ４１０・４１１のクロック入力ピンから入力端子４０１までの経路として、ノンインバータ４０９、２入力アンドゲート４０８、２入力データセレクタ４０７を経由する経路が判明しているものとする。この場合、論理段数抽出部６は、使用するクロックの端子として入力端子４０１がクロック指定部２によって指定されていれば、上述の解析結果から、論理段数として３を抽出する。このように、クロック解析部４の解析結果から論理段数を得ることができる。
【０１１３】
ルールチェック部７は、予め定めたルールが満たされているか否かを判別する。例えば、ルールチェック部７は、論理段数抽出部６の抽出結果に対してルールチェックを行う。より詳細には、例えばユーザによって、論理段数の上限値としてのルールが予めルールチェック部７に対して設定される。ルールチェック部７は、論理段数チェックとして、論理段数抽出部６によって得られた論理段数が、予め定めたルールを超えているか否かを判別する。
【０１１４】
ここで、ルールチェック部７の動作について図５に基づいて説明する。例えば、上述したフリップフロップ４１０・４１１のクロック入力ピンから入力端子４０１までの経路については、論理段数抽出部６によって論理段数が３であると判別されている。そこで、ルールチェック部７は、予め定められたルールと論理段数抽出部６によって得られた論理段数との比較を行う。例えば、ルールチェック部７は、得られた論理段数がルールの値を超えていれば違反ありと判定し、得られた論理段数がルールの値以下であれば違反なしと判定する。
【０１１５】
表示部８は、例えば液晶パネルのような表示パネルを備えており、入力される情報を表示パネルに表示する。より詳細には、表示部８は、クロック解析部４で得られたクロック経路、論理段数抽出部６で得られた論理段数、ルールチェック部７のチェック結果などを、図示しない表示パネルに表示する。表示部８については後述する。
【０１１６】
次に、図６に基づいて、論理回路設計装置１の全体としての動作について説明をする。論理回路設計装置１にて解析を行う対象となる、複数のブロックなどが統合された論理回路の一例として、回路５００を図６に示す。
【０１１７】
回路５００は、ブロック５０５〜５０７・５０９・５１０、およびＰＬＬ５０８を含んでいる。また、回路５００は、入力端子として、ＥＮＢＬ５０１、ＣＬＫ５０２、ＳＥＬ５０３、およびＢＣＬＫ５０４を備えている。
【０１１８】
ブロック５０５は、フリップフロップ５１１、セレクタ５１２、アンドゲート５１３、バッファ５１４を含んでいる。
【０１１９】
フリップフロップ５１１のクロック入力ピンにはＣＬＫ５０２からのクロックが供給される。フリップフロップ５１１の出力は、セレクタ５１２の一方の端子に供給される。
【０１２０】
セレクタ５１２には、一方の端子にフリップフロップ５１１の出力が供給され、他方の端子にはＣＬＫ５０２からのクロックが供給される。また、セレクタ５１２のセレクト端子（コントロール入力ピン）には、ＳＥＬ５０３からのセレクト信号が供給される。セレクタ５１２の出力は、アンドゲート５１３の一方の端子に供給される。
【０１２１】
アンドゲート５１３には、一方の端子にセレクタ５１２の出力が供給され、他方の端子にＥＮＢＬ５０１からのイネーブル信号が供給される。アンドゲート５１３の出力は、バッファ５１４に供給される。
【０１２２】
バッファ５１４は、入力される信号をそのまま出力する。バッファ５１４によって、入力される信号のタイミングを遅延させて出力できる。バッファ５１４は、アンドゲート５１３から供給される信号を出力する。バッファ５１４からの出力は、ブロック５０６に供給される。
【０１２３】
また、ブロック５０６は、フリップフロップ５１５・５１６・５１８、およびインバータ５１７を含んでいる。フリップフロップ５１５、フリップフロップ５１６およびインバータ５１７には、それぞれ、ブロック５０５のバッファ５１４からの出力が供給される。インバータ５１７は、出力をフリップフロップ５１８に供給する。
【０１２４】
ブロック５０７は、セレクタ５１９、およびフリップフロップ５２０・５２１を含んでいる。セレクタ５１９には、一方の入力端子にブロック５０５のバッファ５１４からの出力が供給され、他方の入力端子にはＢＣＬＫ５０４からのクロックが供給される。セレクタ５１９のセレクト端子には、図示しないセレクト信号が供給される。セレクタ５１９の出力は、フリップフロップ５２０、フリップフロップ５２１にそれぞれ供給される。
【０１２５】
ＰＬＬ５０８には、端子ＣＬＫにＢＣＬＫ５０４からのクロック信号が供給される。ＰＬＬ５０８は、ＰＬＬＯＵＴ５２７からの出力をブロック５０９およびブロック５１０に供給する。
【０１２６】
ブロック５０９は、フリップフロップ５２２・５２３を含んでいる。フリップフロップ５２２およびフリップフロップ５２３には、ＰＬＬ５０８のＰＬＬＯＵＴ５２７からの出力がそれぞれ供給される。
【０１２７】
また、ブロック５１０は、フリップフロップ５２４〜５２６を含んでいる。フリップフロップ５２４には、ＰＬＬ５０８のＰＬＬＯＵＴ５２７からの出力が供給される。フリップフロップ５２４の出力は、フリップフロップ５２５のクロック入力ピンに供給される。フリップフロップ５２５の出力は、フリップフロップ５２６のクロック入力ピンに供給される。フリップフロップ５２６の出力は、ブロック５１０の外部へと出力される。
【０１２８】
ユーザによって、この回路５００において使用するクロックを生成するための信号の端子として、ここでは、ＣＬＫ５０２、ＢＣＬＫ５０４、およびＰＬＬ５０８の出力ピンＰＬＬＯＵＴ５２７が設定されたとする。論理回路設計装置１のクロック指定部２は、ユーザの設定に基づき、ＣＬＫ５０２、ＢＣＬＫ５０４、およびＰＬＬＯＵＴ５２７を、回路５００で使用するクロックの端子として指定する。
【０１２９】
また、ユーザによって、ブロック５１０中のフリップフロップ５２４〜５２６が、解析の対象外であるものと設定（無効指定）されたとする。これに応じて、対象外指定部３は、ユーザの設定に基づき、ブロック５１０中のフリップフロップ５２４〜５２６を、クロック経路解析、論理段数抽出、および論理段数チェックの対象外に指定する。
【０１３０】
また、ユーザによって、予め定める論理段数の上限値としてのルールの値が例えば３であるとして、ルールチェック部７に対して設定される。ルールチェック部７は、ルールを３であると指定する。
【０１３１】
論理回路設計装置１は、以上の設定に応じて、回路５００のクロック経路の解析を行う。
【０１３２】
クロック解析部４は、まず、回路５００に含まれる、フリップフロップ、ラッチ、ハードマクロを抽出する。そして、そのクロック入力ピンに接続される出力ピンを持つセルを抽出する。このようにして、順次クロック経路の上流側のセルを抽出し、論理回路の入力端子、またはフリップフロップ、ラッチ、ハードマクロの出力ピンに行き着くまで繰り返す。
【０１３３】
例えば、クロック解析部４は、ブロック５０６のフリップフロップ５１５を抽出する。そして、順次、ブロック５０５のバッファ５１４、ブロック５０５のアンドゲート５１３、ブロック５０５のセレクタ５１２、ＣＬＫ５０２のように解析して、クロック経路を抽出する。ここでは簡単のために他のクロック経路については説明を省略する。
【０１３４】
また、クロック接続確認部５は、クロック解析部４の解析結果に応じて、フリップフロップなどのクロック入力ピンが複数のクロック供給源に接続されているか否か、また、フリップフロップなどのクロック入力ピンがクロック指定部２で指定されたクロックの端子に接続されているかを調査する。ここでは、フリップフロップ５２０・５２１が、それぞれ、ＣＬＫ５０２とＢＣＬＫ５０４との二つのクロック供給源に接続されていることを判別する。
【０１３５】
また、論理段数抽出部６は、クロック解析部４の解析結果に応じて、回路５００におけるクロック経路の論理段数として、以下の結果を得る。ここでは、クロック供給源の端子ごとに説明する。
【０１３６】
まず、ＣＬＫ５０２から各フリップフロップまでの論理段数について説明する。フリップフロップ５１１のＣＬＫ５０２に対する論理段数は０である。フリップフロップ５１５・５１６は、論理段数３である。フリップフロップ５１８は、論理段数４である。フリップフロップ５２０・５２１は、論理段数３である。
【０１３７】
また、ＢＣＬＫ５０４に対する各フリップフロップの論理段数については、フリップフロップ５２０・５２１の論理段数が１となっている。
【０１３８】
また、ＰＬＬＯＵＴ５２７に対する各フリップフロップの論理段数については、フリップフロップ５２２・５２３の論理段数が０となっている。
【０１３９】
なお、論理段数抽出部６による論理段数の抽出は、クロック経路について行えばよく、各フリップフロップなどのクロック入力ピンごとにまとめて処理するものであってもよいし、または上述のようにクロック供給源ごとにまとめて処理するものであってもよい。
【０１４０】
ルールチェック部７は、論理段数抽出部６による解析結果に対して処理を行う。ここでは、ＣＬＫ５０２に対するフリップフロップ５１８の論理段数４が、ルールの値である３を超えており、違反しているという結果を得る。
【０１４１】
表示部８は、上述の各手段による解析結果を、図７に示すように表示パネルに表示する。なお、ここでは解析結果の全てを表示している訳ではなく、解析結果のうちの適当なものを表示している。また、図７においては、ブロックをＢＬＯＣＫ、フリップフロップをＦＦ、セレクタをＳＥＬ、アンドゲートをＡＮ、バッファをＢＵＦ、インバータをＩＮＶとそれぞれ示している。
【０１４２】
表示部８は、図７に示すように、判別した結果を、上から表示領域２７ａ〜２７ｆとして区分して表示する。
【０１４３】
表示領域２７ａには、ルールチェック部７による判別結果を、違反したフリップフロップおよびそのクロック経路とともに示している。また、表示領域２７ｂには、クロック接続確認部５による判別結果を、警告すべきフリップフロップおよびそのクロック経路とともに示している。
【０１４４】
このように、表示部８は、ルールなどに違反したフリップフロップ、警告すべきフリップフロップなどについての情報を、画面の上方に配置された表示領域２７ａ・２７ｂに表示する。
【０１４５】
また、表示部８は、表示領域２７ｃ〜２７ｅには、それぞれブロック５０５・５０６・５０９ごとに区分して、ブロックに含まれるフリップフロップとそのクロック経路とを表示している。なお、本実施形態のクロック解析部４は、上述のように例えばブロック５０９のフリップフロップ５２２・５２３を１つのフリップフロップ群として処理をするが、表示部８においてはフリップフロップごとに、それぞれフリップフロップ５２２とフリップフロップ５２３とを別個に表示している。
【０１４６】
また、表示部８は、表示領域２７ｆに、対象外指定部３によって対象外と指定されたフリップフロップ５２４〜５２６についての情報を、ユーザに確認させるために表示している。
【０１４７】
なお、図７に示す表示領域２７ｃ〜２７ｅにおいては、クロック経路が示されているのみで、抽出した論理段数が示されていないが、これに限るものではなく、論理段数を表示してもよい。また、表示領域２７ｃ〜２７ｅにおいては、ブロックごとに区分してフリップフロップおよびクロック経路を表示しているが、これに限るものではなく、例えばクロックの起点となる端子ごとに区分して表示してもよい。また、論理回路設計装置１が、ユーザによる操作が可能な図示しないユーザインタフェースを備えており、ユーザインタフェースへのユーザによる指示に応じて、表示する際の区分を切り換えるようにしてもよい。また、区分を並べる順序についても、任意に指定可能であるものとする。
【０１４８】
以上の構成によれば、ネットリストまたはＨＤＬ記述を読み込み、クロック解析部４にてクロック経路の解析を行い、クロック解析部４にて得られるクロック経路、クロック接続確認部５における確認結果、論理段数抽出部６にて抽出した論理段数についてのルールチェック部７におけるチェック結果などを、表示部８に表示することが可能となる。
【０１４９】
以上のように、本実施形態に係る論理回路設計装置１は、クロックを生成するための信号を供給している構成要素を指定するクロック指定部２と、クロック指定部２によって指定された構成要素から論理回路に含まれるフリップフロップ、ラッチおよびハードマクロのクロック入力ピンまでのクロック経路を、接続関係としてのネットリストなどから抽出するクロック解析部４とを備えている。
【０１５０】
したがって、このように抽出したクロック経路を用いて、論理回路の構造をより簡単に、かつ正確に把握することができる。このため、例えば論理回路の構造にエラーがある場合であっても、エラーを簡単に見つけて、作業効率を向上できる。また、予め合成するためのブロック、論理回路などを解析することによって、例えばクロック合成において意図しない多段のクロックツリーが挿入されることを防止できる。また、上記論理回路設計装置によって得られた論理回路において、電力削減、面積削減、コスト低下などを達成できる。
【０１５１】
また、例えば、クロック解析部４の解析結果を用いて、図１に示すように、論理回路の論理段数、指定クロックに行き着かないレジスタおよびラッチ、ルールチェック結果を得ることができる。ここで、指定クロックに行き着かないレジスタおよびラッチは、例えばクロック指定が誤っていたり、または例えば意図しない回路となっていたりする場合に生ずる。このように、指定クロックに行き着かないレジスタおよびラッチのようなエラーを簡単に見つけて、作業効率を向上できる。
【０１５２】
なお、上述の実施形態においては、論理回路設計装置１がネットリストまたはＨＤＬ記述を用いるものとしたが、本発明はこれに限るものではない。ネットリストまたはＨＤＬ記述以外の形式であっても、論理回路の有するセルの接続関係が表現されたものであればよい。
【０１５３】
また、上述した論理回路設計装置１は、コンピュータと、上述した論理回路設計装置１の有する各手段としてコンピュータを機能させるためのプログラムと、によって実現されるものであってもよい。または、上述した論理回路設計装置１は、上記プログラムが記録された記録媒体がコンピュータにて読取られ、そのプログラムが実行されることによって実現されるものであってもよい。
【０１５４】
ここで、論理回路におけるクロック合成について補足的に説明する。クロック合成とは、クロック信号に対してクロックツリーを構成することを意味する。クロック合成には２種類の方法があり、クロック信号に接続されているピンを対象としてクロックツリーを構成する方法と、クロック信号が論理ゲートに入力されている場合に論理ゲートの出力を含むクロックネットワーク全体にクロックツリーを構成する方法とがある。
【０１５５】
前者の方法（狭義のクロック合成）においては、ゲーティッドクロックを作成する論理ゲートがある場合に、そのゲートの入力ピンまでがクロックツリーを構成する対象となる。一方、その論理ゲートの出力に接続されているフリップフロップのクロック入力ピンは対象とならない。また、各々のクロック経路毎にクロック合成を行うため、複数回の処理が必要となり、また各クロック経路間のクロック調整に時間を要することとなる。
【０１５６】
これに対して、後者の方法（ゲーティッドクロック合成）は、論理ゲートを含むクロックネットワークがクロックツリーを構成する対象となる。このため、１回の処理でクロック系全体のクロックスキュー調整が可能となる。
【０１５７】
前述のような特徴から、同期回路においては、ブロックを統合する際に使用されるクロック合成の方法として、ゲーティッドクロック合成が用いられることが多い。
【０１５８】
しかしながら、複数の非同期クロックを持つ非同期回路では、一つのクロック信号から作成された信号を、他のクロックのイネーブル信号として使用することがある。このため、ゲーティッドクロック合成ではない、（狭義の）クロック合成を用いることもある。このように、クロック合成の方法として常にゲーティッドクロック合成が用いられる訳ではない。
【０１５９】
ここで、従来の技術における、意図しない多段の論理をもつ回路が合成されるという問題は、ゲーティッドクロック合成の場合のみに生ずるものである。そして、この場合に、従来においては、手作業で解析を行い、ブロックの統合を試行錯誤して、クロック合成を繰り返すようになっていた。
【０１６０】
そこで、本発明においては、ブロックを統合してゲーティッドクロック合成を行う場合に、例えば各ブロック、ブロックの組合せについて、予め解析、計算を行うようにする。そして、クロック経路の解析を行い、クロック経路の論理段数を計算して表示するので、意図しない多段の論理をもつ回路の合成を防止できる。
【０１６１】
すなわち、本発明に係る論理回路設計装置は、所望のブロックなどのネットリストまたはＨＤＬ記述などを用いて、クロック経路および論理段数を解析し、表示をする。上記論理回路設計装置によって解析・表示を行うことによって、エラーを簡単に見つけて、作業効率を向上できる。なお、上記論理回路設計装置を用いた場合であっても、遅延を合わせるためのクロックツリーは挿入されうるが、上記論理回路設計装置を用いれば、それが意図しない多段のものとなることを防止できる。このように、多段のクロックツリーの発生を防止すれば、上記論理回路設計装置によって得られた論理回路において、電力削減、面積削減、コスト低下などを達成できる。
【０１６２】
なお、上記論理回路設計装置によって、エラーが発見されたネットリストなどは、例えば他の装置を用いた機能設計、自動合成などによって修正、再作成される。この修正、再作成の工程はどのようなものであってもよい。また、回路として実際に所望のものが得られるか否かは、上記の機能設計、自動合成などの工程に依存する。
【０１６３】
また、以上のように、本発明の目的の一つは、従来技術による問題を解決するため、クロック経路の論理段数を通知することにより、作業効率の向上が可能な論理設計支援装置および記憶媒体を供給することにある。より詳細には、フリップフロップとラッチおよびハードマクロのクロック入力ピンから、指令された入力クロックまでのクロック経路を調査し、与えられた基準を満たしているかどうかを自動的にチェックし、クロック経路、論理段数、チェック結果を表示することが可能な論理設計支援装置を提供する。また、コンピュータを前記の論理設計支援装置として機能させるためのプログラムが記録されたコンピュータ読取可能な記憶媒体を提供する。これによって、クロック経路の解析を容易にして、設計者の意図しないクロック回路がゲーティッドクロック合成の使用によって作成されることを防止できる。
【０１６４】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても、本発明の技術的範囲に含まれる。
【０１６５】
上述の具体的な実施形態または実施例は、あくまでも、本発明の技術内容を明らかにするものであって、本発明はそのような具体例にのみ限定して狭義に解釈されるべきものではなく、特許請求の範囲に示した範囲で種々の変更が可能であり、変更した形態も本発明の技術的範囲に含まれる。
【０１６６】
【発明の効果】
本発明に係る論理回路設計装置は、以上のように、クロックを生成するための信号を供給している構成要素を指定するクロック指定部と、上記クロック指定部によって指定された上記構成要素から、論理回路に含まれるフリップフロップ、ラッチおよびハードマクロのクロック入力ピンまでの、上記構成要素を介して上記信号が供給されるクロック経路を、上記接続関係から抽出するクロック解析部とを備えている構成である。
【０１６７】
それゆえ、クロック解析部がクロック経路を抽出するので、このように抽出したクロック経路を用いて、論理回路の構造をより簡単に、かつ正確に把握でき、クロック経路の解析を容易にし、クロック合成の際の手間を増大させず、設計者の意図しない多段数の論理を持つクロック回路の作成を防止できるという効果を奏する。
【０１６８】
本発明に係る論理回路設計装置は、以上のように、上記構成において、上記クロック解析部によって抽出された上記クロック経路の論理段数を抽出する論理段数抽出部を備えている構成である。
【０１６９】
それゆえ、論理段数を簡単に把握でき、この論理段数などを参考にして、論理回路やブロックの統合などを、統合の前に予め容易に解析できるという効果を奏する。
【０１７０】
本発明に係る論理回路設計装置は、以上のように、上記構成において、上記論理段数抽出部の抽出した上記論理段数が、予め定められた論理段数の上限値としてのルールの値を超えているか否かを判別するルールチェック部を備えている構成である。
【０１７１】
それゆえ、予め設定したルールが満たされているか否かを直ぐに確認でき、作業効率の向上を図ることができるという効果を奏する。
【０１７２】
本発明に係る論理回路設計装置は、以上のように、上記構成において、上記論理回路に含まれる所望のフリップフロップ、ラッチおよびハードマクロを、解析の対象外とするための対象外構成要素と指定する対象外指定部を備えており、上記クロック解析部が、上記対象外指定部によって指定された上記対象外構成要素を抽出の対象外として、上記クロック経路を抽出する構成である。
【０１７３】
それゆえ、指定した構成要素についてのクロック経路の抽出を省略できるので、例えば処理時間を短縮して、作業効率を向上できるという効果を奏する。
【０１７４】
本発明に係る論理回路設計装置は、以上のように、上記構成において、上記クロック解析部によって抽出された上記クロック経路に基づいて、上記フリップフロップ、上記ラッチおよび上記ハードマクロのクロック入力ピンが、上記クロック指定部によって指定された複数の上記構成要素に接続されているか否かを判別するクロック接続確認部を備えている構成である。
【０１７５】
それゆえ、例えば複数のクロック供給源に接続されているとクロック接続確認部が判別した場合には、エラーであるとしてユーザに対して警告を行うようにして、論理回路の解析作業の効率を向上できるという効果を奏する。
【０１７６】
本発明に係る論理回路設計装置は、以上のように、上記構成において、上記クロック解析部の抽出した上記クロック経路を表示するための表示部を備えている構成である。
【０１７７】
それゆえ、クロック解析部の解析内容を表示部に表示して、内容の把握を容易にして、作業効率を向上できるという効果を奏する。
【０１７８】
また、本発明に係るプログラムは、以上のように、コンピュータを、上述のいずれかの論理回路設計装置の各手段として機能させるためのプログラムである。
【０１７９】
それゆえ、プログラムによって上述の論理回路設計装置を実現できるので、汎用性を高めることができるという効果を奏する。
【０１８０】
また、本発明に係る記録媒体は、以上のように、上述のプログラムを記録した、コンピュータ読取可能な記録媒体である。
【０１８１】
それゆえ、記録媒体によって、上述の論理回路設計装置を実現できるので、汎用性を高めることができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明に係る論理回路設計装置の概略を示すブロック図である。
【図２】上記論理回路設計装置の動作を説明するための論理回路の一例を示すブロック図である。
【図３】上記論理回路設計装置の動作を説明するための論理回路の他の一例を示すブロック図である。
【図４】上記論理回路設計装置の動作を説明するための論理回路のさらに他の一例を示すブロック図である。
【図５】上記論理回路設計装置の動作を説明するための論理回路のさらに他の一例を示すブロック図である。
【図６】上記論理回路設計装置の動作を説明するための論理回路のさらに他の一例を示すブロック図である。
【図７】上記論理回路設計装置の表示状態の一例を説明するための図である。
【図８】従来の論理回路設計を説明するためのブロック図の一例である。
【図９】従来の論理回路設計を説明するためのブロック図の他の一例である。
【符号の説明】
１      論理回路設計装置
２      クロック指定部
３      対象外指定部
４      クロック解析部
５      クロック接続確認部
６      論理段数抽出部
７      ルールチェック部
８      表示部
【図１】
2004326668.tif 000003
【図２】
2004326668.tif 000004
【図３】
2004326668.tif 000005
【図４】
2004326668.tif 000006
【図５】
2004326668.tif 000007
【図６】
2004326668.tif 000008
【図７】
2004326668.tif 000009
【図８】
2004326668.tif 000010
【図９】
2004326668.tif 000011