(57)【要約】【課題】Ｄｕｔｙ保証を自動化した場合、各階層単体では論理が変わり単体での回路が変更前と変更後で論理的に一致しているか否か確認する論理等価性の保証ができない、などの課題を解決すること。【解決手段】ステップ６０１にてクロックのハイレベルとロウレベル期間の比であるＤｕｔｙ比を計算しフリップフロップに近い階層より順次Ｄｕｔｙを保証していき、フリップフロップを含む階層ではステップ６０２にてＣＴＳ手前に第１のインバータを置き、ステップ６０３にて入力から第１のインバータ間のＤｕｔｙ保証可能な位置に第２のインバータを置き、フリップフロップを含む階層以外では出力の手前に第１のインバータを置き入力と出力間にＤｕｔｙ保証可能な位置に第２のインバータを置くことにより、クロックのＤｕｔｙ保証を行う。【選択図】      図６
2004266034.tif 000002
【特許請求の範囲】
【請求項１】
設計しようとする半導体集積回路を複数の機能ブロックに分割し、各機能ブロックのレイアウトを行った後に、最上位階層のレイアウトを行う階層設計方法である半導体集積回路の設計方法において、
機能ブロックに入力された同一のクロックから当該機能ブロック内部で生成されその位相差であるクロックスキューの調整が必要な複数のクロックを、当該機能ブロック内の遅延素子の遅延量を変更することでスキュー調整する第１のスキュー調整ステップと、
同一の前記機能ブロックに複数入力され各クロック間の位相差であるクロックスキューの調整が必要な複数のクロックを、前記機能ブロック内の遅延素子の遅延量を変更することでスキュー調整する第２のスキュー調整ステップとを含み、
前記第１，第２のステップを半導体集積回路内のすべての機能ブロックに関して完了した後、前記遅延素子の遅延量を調整し、複数の機能ブロックに個別に入力されるクロック間のスキュー調整を行う、
ことを特徴とする半導体集積回路の設計方法。
【請求項２】
半導体集積回路を複数の機能ブロックに分割し、各機能ブロックのレイアウトを行った後に、最上位階層のレイアウトを行う階層設計方法を用いて設計される半導体集積回路において、
各機能ブロックに供給するクロックを制御する機能ブロックであるクロック制御部と、
該クロック制御部と、クロックの供給先である上記各機能ブロックとを接続する複数のクロック信号線とを備え、
前記クロック制御部内において前記複数の機能ブロックに接続される同一周期のクロック系が、予め分割して設けられ、
前記クロック信号線同士が、最上位階層において互いに等長となるように配線されてなる、
ことを特徴とする半導体集積回路。
【請求項３】
設計しようとする半導体集積回路を複数の機能ブロックに分割し、各機能ブロックのレイアウトを行った後に、最上位階層のレイアウトを行う階層設計方法である半導体集積回路の設計方法において、
半導体集積回路におけるクロック入力のハイレベル期間と、ロウレベル期間との比であるデューティ比を同一にする必要のあるクロック信号線について、クロックの立ち上がりエッジ、及び立ち下がりエッジの遅延値を計算する第１のステップと、
前記ステップの遅延計算結果に基づき立ち上がりエッジ及び立ち下がりエッジの遅延差が大きいクロック信号線について第１のインバータを挿入する第２のステップと、
前記第１のステップにより計算された遅延値に基づきクロックの立ち上がりエッジ及び立ち下がりエッジの遅延差を最小にすることが可能な第２のインバータを、前記第１のインバータが挿入された階層と同一の階層内に挿入する第３のステップとを含む、
ことを特徴とする半導体集積回路の設計方法。
【請求項４】
請求項２記載の半導体集積回路において、
前記クロック制御部から供給されるクロックを分周し分周クロックを作成する分周回路を、
当該分周クロックを必要とする機能ブロック内にそれぞれ設けた、
ことを特徴とする半導体集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体集積回路、および半導体集積回路の設計方法に関するものであり、特にＬＳＩ設計におけるクロック信号に対するレイアウト設計において、クロック間の位相差であるクロックスキューの低減、クロック入力のハイレベル期間とロウレベル期間との比であるデューティ（Ｄｕｔｙ）比を同一にする技術の改良，及びクロック設計の効率化を図ったものに関する。
【０００２】
【従来の技術】
半導体集積回路の微細化とともに低電圧化と高速化が進むハーフミクロン以降のＶＬＳＩにおいては、配線による遅延がゲート遅延に比べ大きいため、その半導体集積回路の設計手法として、遅延時間の差を最小化させたい信号線間の配線遅延量を調整する装置（クロック制御部）を半導体集積回路内に設けるとともに、設計しようとする半導体集積回路を複数の機能ブロックに分割し、各機能ブロックのレイアウトを行った後に最上位階層のレイアウトを行う階層設計手法が採られている。
【０００３】
このような階層設計手法においては、下位階層である複数の機能ブロックに接続されるクロックについては全階層を考慮してクロックスキュー調整を行い、複数の機能ブロックに接続されるクロックは最上位階層において分岐して各機能ブロックに供給され、クロックの周期をＮ（Ｎは自然数）倍する分周装置はクロックが複数の機能ブロックに分配される場合、クロックの供給を行うクロック制御部に配置されていた。
【０００４】
また、階層設計手法においては、クロック間の位相差であるクロックスキューの低減、クロック入力のハイレベル期間とロウレベル期間との比であるＤｕｔｙ比を同一にする場合、クロック信号線に階層を考慮せずインバータを挿入することによりＤｕｔｙ保証が行われていた（例えば、特許文献１参照）。
【０００５】
即ち、図２はこの従来の階層設計手法による半導体集積回路の設計方法を示すもので、ステップ１０１では、階層レイアウト手法、即ち、設計しようとするＬＳＩを複数の機能ブロックに分割し、各機能ブロックのレイアウトを行った後に最上位階層のレイアウトを行う半導体集積回路設計手法を行う場合に、その下位階層に該当する機能ブロックにおいて、ブロック単体で入力が同一であるクロック間スキューを調整する。この調整は、例えば図３における遅延素子３４３の出力よりフリップフロップ群３６３及び３６４までの経路のクロック間スキューが最小となるように遅延素子３５１及び３５２の値を変更しその遅延量を調整することにより行う。次のステップ１０２では、クロック間のスキューが合致せず回路動作上問題となるか否かを判定し、問題があると判定した場合、ステップ１０３において回路を修正する。これらステップ１０１および１０２が上記特許文献１の図４のフローの処理の繰り返しに相当する。そして、ステップ１０２でクロック間のスキューが良好であると判定されれば、図３の遅延素子３４３からフリップフロップ群３６３までの経路および遅延素子３４３からフリップフロップ群３６４までの経路の間はクロック間スキューの調整が完了したこととなる。
【０００６】
次に、ステップ１０７では階層レイアウトにおける下位階層に該当する機能ブロック単体、即ち、この図３の例では機能ブロック３０３または３０４における遅延値を計算する。ステップ１０８では前記計算結果に基づき各機能ブロックにおけるタイミングが回路動作上問題ないか否かを判定し、問題があればステップ１０９において回路修正を行い、そうでない場合は、次のステップ１１０へと進む。
【０００７】
ステップ１１０は最上位階層におけるクロックスキュー調整工程を行うものであり、すべての機能ブロックがタイミングを満たした時点で全階層を考慮に入れたクロック間のスキューを調整する。即ち、図３の例では、入力ピン３１１からフリップフロップ群３６１までの経路、入力ピン３１１からフリップフロップ群３６２までの経路、入力ピン３１１からフリップフロップ群３６３までの経路及び入力ピン３１１からフリップフロップ群３６４までの経路のそれぞれにおけるクロック間スキューが最小になるように、遅延素子３４１ないし３４３の値を変更しその遅延量を変更することでスキューを調整する。遅延素子３４２及び３４３については機能ブロック単体においてもクロック間のスキューを調整するために用いられていたので、遅延素子の変更を２度行うこととなる。ステップ１１１ではステップ１１０により調整されたクロック間のスキューが回路動作上問題ないか否かを判定する。問題があればステップ１１２において回路修正を行い、再度ステップ１１０においてクロック間のスキュー調整を行うこととなる。
【０００８】
ステップ１１３は最上位階層におけるタイミング調整工程を行うものであり、すべての機能ブロックがタイミングを満たした時点で全階層におけるタイミングを計算する。このステップでは、主に機能ブロック間におけるフリップフロップのタイミングチェックを行う。ステップ１１４は全階層においてタイミングが回路動作上問題ないか否かを判定する。問題があったと判定されればステップ１１５にて回路修正を行い、再度ステップ１１３においてタイミングチェックを行う。ステップ１１４にて問題がないと判断されればステップ１１６の製造工程に移る。
なお、以上の各ステップは、コンピュータ上で実行される。
【０００９】
また、図５は複数の機能ブロックに接続されるクロックが最上位階層にて分岐される、従来の半導体集積回路の内部構成を示すもので、クロック入力ピン４１１より最上位階層４１１に供給されたクロックはクロック制御部４０２内を介して、最上位階層４０１内の分岐点５４１にて分岐し、分岐したクロックは２つの配線を介して機能ブロック４０３，４０４内のフリップフロップ群４３１，４３２にそれぞれ供給される。
【００１０】
さらに、図８は階層設計手法においてクロックスキュー調整を全階層を考慮して行う、従来例の半導体集積回路の内部構成を示すもので、クロック入力ピン４１１より最上位階層４０１に供給されたクロックは、クロック制御部４０２内に設けられた第５のインバータ素子８１１により反転され、このクロック制御部４０２内の分岐点４４１にて分岐し、分岐した一方のクロックは、最上位階層４０１内の第１のバッファ素子７０１，第５のバッファ素子８０１，第２のバッファ素子７０２，第２のインバータ素子７１２を介して機能ブロック４０３内のフリップフロップ群４３１に供給される。また、上記分岐点４４１にて分岐した他方のクロックは、最上位階層４０１内の第３のインバータ７１３，第３のバッファ素子７０３，第４のバッファ素子７０４，第６のバッファ素子８０２を介して機能ブロック４０４内のフリップフロップ群４３２に供給される。
【００１１】
【特許文献１】
特開２００２−１４１４７１号公報（第３，４頁、第４図）
【００１２】
【発明が解決しようとする課題】
このように、従来の技術では、配線遅延による遅延差を調整することが可能であったが、複数の機能ブロックに分割し各機能ブロックのレイアウトを行った後に最上位階層のレイアウトを行う階層設計手法におけるクロックスキュー手法及び回路構成では、下位階層である複数の機能ブロックに接続されるクロックについては、図２に示すように、全階層を考慮してクロックスキュー調整を行っていたため、前記クロック系フリップフロップ群についても機能ブロック内においてクロックスキュー調整を行えず、タイミング調整を、下位階層に比べて設計時間を多く要する全階層において行わなければならず、設計期間が増大するという課題があった。
【００１３】
また、複数の機能ブロックに接続されるクロックは、図５に示すように、最上位階層において分岐していたため、配線遅延によるクロックスキューの半導体プロセスばらつきを低減調整するために行うクロック信号線の等長配線が困難となり、配線長の増加と配線長のばらつきとを招き、半導体集積回路の動作保証が困難になるという課題があった。
【００１４】
また、クロックのハイレベル期間とロウレベル期間との比であるＤｕｔｙ比を半導体装置の動作上問題のないレベルにする場合、従来の手法では、階層を考慮していなかったため、Ｄｕｔｙ保証を自動化した場合、図８に示すように、最上位階層と下位階層の両方に、階層間をまたいでインバータの挿入が行われてしまう。このため、各階層単体では論理が変わり、単体での回路の処理内容が変更前と変更後とで論理的に一致しているか否かを確認する論理等価性の保証ができない、などの課題があった。
【００１５】
この発明は、上記のような従来のものの課題を解決するためになされたもので、Ｄｕｔｙ保証を自動化した後も、各階層において論理の等価性を保証でき、かつＤｕｔｙ保証の自動化を容易にすることが可能な半導体集積回路、および半導体集積回路の設計方法を得ることを目的としている。
【００１６】
【課題を解決するための手段】
本発明の請求項１に係る半導体集積回路の設計方法は、設計しようとする半導体集積回路を複数の機能ブロックに分割し、各機能ブロックのレイアウトを行った後に、最上位階層のレイアウトを行う階層設計方法である半導体集積回路の設計方法において、機能ブロックに入力された同一のクロックから当該機能ブロック内部で生成されその位相差であるクロックスキューの調整が必要な複数のクロックを、当該機能ブロック内の遅延素子の遅延量を変更することでスキュー調整する第１のスキュー調整ステップと、同一の前記機能ブロックに複数入力され各クロック間の位相差であるクロックスキューの調整が必要な複数のクロックを、前記機能ブロック内の遅延素子の遅延量を変更することでスキュー調整する第２のスキュー調整ステップとを含み、前記第１，第２のステップを半導体集積回路内のすべての機能ブロックに関して完了した後、前記遅延素子の遅延量を調整し、複数の機能ブロックに個別に入力されるクロック間のスキュー調整を行う、ようにしたものである。
【００１７】
また、本発明の請求項２に係る半導体集積回路は、半導体集積回路を複数の機能ブロックに分割し、各機能ブロックのレイアウトを行った後に、最上位階層のレイアウトを行う階層設計方法を用いて設計される半導体集積回路において、各機能ブロックに供給するクロックを制御する機能ブロックであるクロック制御部と、該クロック制御部と、クロックの供給先である上記各機能ブロックとを接続する複数のクロック信号線とを備え、前記クロック制御部内において前記複数の機能ブロックに接続される同一周期のクロック系が、予め分割して設けられ、前記クロック信号線同士が、最上位階層において互いに等長となるように配線するようにしたものである。
【００１８】
また、本発明の請求項３に係る半導体集積回路の設計方法は、設計しようとする半導体集積回路を複数の機能ブロックに分割し、各機能ブロックのレイアウトを行った後に、最上位階層のレイアウトを行う階層設計方法である半導体集積回路の設計方法において、半導体集積回路におけるクロック入力のハイレベル期間と、ロウレベル期間との比であるデューティ比を同一にする必要のあるクロック信号線について、クロックの立ち上がりエッジ、及び立ち下がりエッジの遅延値を計算する第１のステップと、前記ステップの遅延計算結果に基づき立ち上がりエッジ及び立ち下がりエッジの遅延差が大きいクロック信号線について第１のインバータを挿入する第２のステップと、前記第１のステップにより計算された遅延値に基づきクロックの立ち上がりエッジ及び立ち下がりエッジの遅延差を最小にすることが可能な第２のインバータを、前記第１のインバータが挿入された階層と同一の階層内に挿入する第３のステップとを含む、ようにしたものである。
【００１９】
さらに、本発明の請求項４に係る半導体集積回路は、請求項２記載の半導体集積回路において、前記クロック制御部から供給されるクロックを分周し分周クロックを作成する分周回路を、当該分周クロックを必要とする機能ブロック内にそれぞれ設けるようにした、ものである。
【００２０】
【発明の実施の形態】
実施の形態１．
以下、この発明の実施の形態を図について説明する。
図１は本発明の実施の形態１における半導体集積回路の設計方法を構成する手順を示すものである。図１において、１０１は第１のクロックスキュー調整工程を行うステップであり、階層レイアウト手法、即ち、１つの機能ブロックを複数の機能ブロックに分割し、各機能ブロックのレイアウトを行った後に、最上位階層のレイアウトを行う半導体集積回路の設計方法を行う場合に、その下位階層に該当する機能ブロックにおけるブロック単体で入力が同一であるクロック間スキューを調整するステップ、１０２はこのクロックスキューが回路動作上問題ないか否かを判定するステップ、１０３は回路動作上問題があった場合に回路修正を行うステップ、１０４は第２のクロックスキュー調整工程を行うステップであり、階層レイアウトを行う場合の下位階層に該当する機能ブロックにおけるブロック単体で入力が異なるクロック間スキューを調整するステップ、１０５はこのクロックスキューが回路動作上問題ないか否かを判定するステップ、１０６は回路動作上問題があった場合に回路修正を行うステップ、１０７はクロックスキューの調整後クロックの遅延値を反映しタイミングチェックを行うステップ、１０８は機能ブロック内におけるタイミングが回路動作上問題ないか否かを判定するステップ、１０９は回路動作上問題があった場合に回路修正を行うステップである。
【００２１】
また、１１０は最上位階層におけるクロックスキュー調整工程を行うステップであり、すべての機能ブロックがタイミングを満たした時点で全機能ブロックを考慮に入れ機能ブロック間のクロック間スキューを調整するステップ、１１１は全機能ブロックにおいてクロックスキューが回路動作上問題ないか否かを判定するステップ、１１２は回路動作上問題があった場合に、クロック間のスキューが回路動作を保証しない機能ブロックまたは最上位階層の回路修正を行うステップ、１１３は最上位階層におけるタイミング調整を行うステップであり、すべての機能ブロックがクロックスキューを満たした時点で全機能ブロックを考慮に入れ機能ブロック間のタイミングチェックを行うステップ、１１４は全機能ブロックにおいてタイミングが回路動作上問題ないか否かを判定するステップ、１１５はタイミングに問題のある機能ブロックの回路修正を行うステップ、１１６はタイミング調整以降のＬＳＩ開発を行う製造工程のステップである。なお、これら各ステップはコンピュータ上で実行される。
【００２２】
以上のように構成された本実施の形態１による半導体集積回路の設計方法におけるクロックスキュー調整方法の詳細について、以下にその説明を行う。
例えば、図３のような回路構成において、クロックスキュー調整を行うものとする。図３において、３０１は最上位階層であり、設計しようとする半導体集積回路（ＬＳＩ）を複数の機能ブロックに分割し、各機能ブロックのレイアウトを行った後に最上位階層のレイアウトを行う階層レイアウト手法を行う場合の最上位の階層となるものである。また、３０２，３０３，３０４はこのような階層レイアウト手法における下位階層であり、３０２は各機能ブロックにどのようなクロックを供給するかの制御を行うクロック制御部である。３１１はＬＳＩにおける外部入力ピンであり、半導体集積回路の外部からクロックが入力される。３２１は機能ブロック３０２における入力ピン、３２２，３２３は機能ブロック３０２がその入力ピン３２１を介して入力されたクロックを分周して作成した分周クロックを出力する出力ピン、３２４は入力ピン３２１を介して機能ブロック３０２に入力されたクロックをそのまま出力する出力ピン、３２５は出力ピン３２２より供給されるクロックを入力する、機能ブロック３０３のクロック入力ピン、３２６は出力ピン３２３より供給されるクロックを入力する、機能ブロック３０４のクロック入力ピン、３２７は出力ピン３２４より供給されるクロックを入力する、機能ブロック３０４のクロック入力ピン、３３１は機能ブロック３０２の入力ピン３２１より供給されるクロックを２分周する分周器、３４１ないし３４３は機能ブロック間のクロック間のスキューを調整するための遅延素子、３５１，３５２は機能ブロック３０４内の起点が同じであるクロック間のスキューを調整するための遅延素子、３６１ないし３６４はフリップフロップ群である。
【００２３】
ここで、外部入力ピン３１１からフリップフロップ群３６１，３６２，３６３，３６４までのクロック間スキューをできる限り最小にする必要があるとすると、ステップ１０１では、階層レイアウト方法、即ち、設計しようとするＬＳＩを複数の機能ブロックに分割し、各機能ブロックのレイアウトを行った後に最上位階層のレイアウトを行う場合に、その下位階層に該当する機能ブロックにおいて、ブロック単体で入力が同一であるクロック間スキューを調整する。この調整は、例えば図３における遅延素子３４３の出力よりフリップフロップ群３６３及び３６４までの経路のクロック間スキューが最小となるように遅延素子３５１及び３５２の値を変更し遅延量を変更することにより行う。次のステップ１０２では、クロック間のスキューが合致せず回路動作上問題となるか否かを判定し、問題があると判定した場合、ステップ１０３において回路を修正する。ステップ１０２でクロック間のスキューが良好であると判定されれば、図３の遅延素子３４３からフリップフロップ群３６３までの経路および遅延素子３４３からフリップフロップ群３６４までの経路の間はクロック間スキューの調整が完了したこととなる。
【００２４】
ステップ１０４では、階層レイアウトを行う場合の下位階層に該当する機能ブロックにおけるブロック単体で入力が異なるクロック間スキューを調整する。例えば図３のクロック入力ピン３２６からフリップフロップ群３６２までの経路と、既にスキューが調整済みである入力ピン３２７からフリップフロップ群３６３または３６４までの経路のクロック間スキューが最小になるように遅延素子３４２及び３４３の値を変更して遅延量を調整する。また、ステップ１０５でクロック間のスキューが合致せず回路動作上問題となると判断された場合は、ステップ１０６において回路を修正する。ステップ１０５でクロック間のスキューが回路動作上問題にならないレベルと判定されれば、次のステップへ進む。
【００２５】
ステップ１０７では階層レイアウトにおける下位階層に該当する機能ブロック単体、即ち、この図３の例では機能ブロック３０３または３０４における遅延値を計算する。ステップ１０８では前記計算結果に基づき各機能ブロックにおけるタイミングが回路動作上問題ないか否かを判定し、問題があればステップ１０９において回路修正を行い、そうでない場合は、次のステップ１１０へと進む。
【００２６】
ステップ１１０では全階層を考慮に入れクロック間のスキューを調整する。この図３の例では、入力ピン３１１からフリップフロップ群３６１までの経路、入力ピン３１１からフリップフロップ群３６２までの経路、入力ピン３１１からフリップフロップ群３６３までの経路及び入力ピン３１１からフリップフロップ群３６４までの経路におけるクロック間スキューが最小になるように、遅延素子３４１ないし３４３の値を変更する。遅延素子３４２及び３４３については機能ブロック単体においてもクロック間のスキューを調整するために用いられているので、遅延素子の値を２度変更することとなる。ステップ１１１ではステップ１１０により調整されたクロック間のスキューが回路動作上問題ないか否かを判定する。問題があればステップ１１２において回路修正を行い再度ステップ１１０においてクロック間のスキュー調整を行うこととなる。
【００２７】
ステップ１１３では全階層におけるタイミングを計算する。このステップでは、主に機能ブロック間におけるフリップフロップのタイミングチェックを行う。ステップ１１４は全階層においてタイミングが回路動作上問題ないか否かを判定する。問題があったと判定されればステップ１１５にて回路修正を行い、再度ステップ１１３においてタイミングチェックを行う。ステップ１１４にて問題がないと判断されればステップ１１６の製造工程に移る。
【００２８】
ところで、従来例の技術では、図２のようなフローで前記ステップのクロックスキュー調整を行っており、この従来例のクロックスキュー調整方法では、図１に示すステップ１０４ないし１０６に相当するものは存在しない。これは、入力ピン３２６と３２７とが同一機能ブロック上の共通の信号ではなく、かつステップ１１０から１１２において全階層を考慮に入れ一括してクロック間のスキューの調整が行えるため、従来例ではこれらステップ１０４ないし１０６を必要としないのがその理由である。
【００２９】
しかしながら、近年ＬＳＩの回路規模が増大しており、全階層を考慮したタイミングチェックにかかる時間は機能ブロックのタイミングチェックに比べ数倍にものぼり、従来例の技術のようにクロック入力ピン３２６からフリップフロップ群３６２までの経路、クロック入力ピン３２７からフリップフロップ群３６３及び３６４までの経路のクロック間スキューの調整を行わない場合、フリップフロップ群３６３と３６４及び３６２間のタイミング調整を行えず、全階層を考慮したタイミングチェックを行う必要があり、これによりステップ１１０ないし１１２の繰り返し回数が増え、設計期間の増大を招いていた。
【００３０】
これに対し、本実施の形態１では、ステップ１０４ないし１０６のクロック間スキュー調整を行うことにより、全階層でのタイミングチェック回数を削減でき、これによる設計期間の短縮を実現できる。
【００３１】
このように、本実施の形態１によれば、下位階層に該当する機能ブロックにおけるブロック単体で入力が同一であるクロック間のスキューを調整する第１のクロックスキュー調整工程の後に、下位階層に該当する機能ブロックにおけるブロック単体で入力が異なるクロック間のスキューを調整する第２のクロックスキュー調整工程を設けるようにしたので、機能ブロックでのタイミングチェックに較べ時間を要する全階層でのタイミング回数を削減でき、設計期間の短縮が可能となる。
【００３２】
実施の形態２．
図４は本発明の実施の形態２による半導体集積回路の構成を示すものである。図４において、４０１は階層レイアウト方法を行う場合の最上位階層である。４０２ないし４０４は階層レイアウト方法における下位階層であり、４０２は各機能ブロックにどのようなクロックを供給するかの制御を行うクロック制御部、４０４及び４０５は機能ブロックである。４１１はＬＳＩにおける外部入力ピン、４２１は外部入力ピン４１１より供給されるクロックのクロック制御部４０２への入力ピン、４２２は入力ピン４２１よりクロック制御部４０２に入力されたクロックの出力ピンであり、このクロックはクロック信号線４５０を介して機能ブロック４０３へ供給される。４２３は入力ピン４２１よりクロック制御部４０２に入力されたクロックの出力ピンであり、このクロックはクロック信号線４５１を介して機能ブロック４０４へ供給される。４２３及び４２５はそれぞれクロック制御装置４０１から供給されるクロックの機能ブロック入力ピンである。４４１は外部入力ピン４１１より供給されるクロックの分岐点であり、４３１及び４３２は第１および第２の機能ブロック内のフリップフロップ群である。
【００３３】
以上のように構成された本実施の形態２の半導体集積回路について、以下、その動作を説明する。
入力ピン４１１より供給されたクロックはクロック制御部４０２内の分岐点４４１にて分岐し、分岐したクロックは出力ピン４２２、４２３を介してクロック制御部より出力され、最上位階層における配線による遅延値を一致させるためクロック出力ピン４２２からクロック入力ピン４２４までの経路及びクロック出力ピン４２３からクロック入力ピン４２５までの経路が互いに等長となるように配線された２つの信号線４５０，４５１を介して機能ブロック４０３，４０４内のフリップフロップ群４３１，４３２にそれぞれ供給される。
【００３４】
これに対し、図５に示すものは従来技術のクロック制御部であり、図５中の５４１はクロックの分岐点である。その他の構成は図４と同様の機能を果たす。
【００３５】
近年、半導体プロセスの微細化に伴い配線による遅延がゲート遅延に比べ大きくなり、半導体製造ばらつきによる配線遅延のばらつきが半導体集積回路に大きな影響を与える。配線遅延のばらつきは特にデータの記憶に使用されるフリップフロップの動作タイミングを決定する等の重要な役割を果たすクロックに大きな影響を与え、クロックの遅延がばらつくことにより回路の動作タイミングがずれ、回路の動作保証ができなくなり、半導体製造の歩留まり低下を招く。このため、入力ピン４１１からフリップフロップ群４３２までの配線及びゲート段数をなるべく等しくすることにより、半導体製造にばらつきが生じた場合においても動作を保証できるよう設計されてきた。特に最上位階層では下位階層ブロック間の配線のみを行うが、図５のような従来技術ではクロックの分岐点が最上位階層にあったため、レイアウトの構成によってはクロック信号線４５０及び４５１のように等長配線が困難であった。
【００３６】
しかしながら、本実施の形態２の半導体集積回路におけるクロック制御部では、信号の供給元が同一であっても図４のクロックの分岐点４４１のように、下位階層において信号を分岐させ、かつ下位階層の出力ピンを、図４の出力ピン４２２及び４２３のように接続先の機能ブロックと同数分設けることによって、クロック信号線４５０及び４５１の等長配線化を容易にし、設計期間短縮及び従来例に比べ配線が最短経路で引けるため配線遅延が少なくなり、信号の供給時間を短縮できるため、その効果は大である。
【００３７】
このように、本実施の形態２によれば、クロックを供給すべき複数の機能ブロックに対するクロックの分岐点を、最上位階層から見て下位の階層となるクロック制御部内に設けるようにしたので、このクロック分岐点からそれぞれの機能ブロックまでを最上位階層における配線で等長に配線することが容易となり、配線遅延を少なくすることが可能となる。
【００３８】
実施の形態３．
図６は本発明の実施の形態３による半導体集積回路の設計方法におけるクロック設計方法の手順を示すものである。図６において、６０１はステップ６２１で指定されたクロックの起点からフリップフロップを終点とする経路のクロック立ち上がりエッジと立ち下りエッジの遅延値及び前記遅延値よりクロックのＤｕｔｙ比を計算するステップ、６０２はクロックのスキューを調整するＣＴＳ（Ｃｌｏｃｋ  Ｔｒｅｅ  Ｓｙｎｓｅｓｉｓ）の起点となるバッファが手前となるように第１のインバータを挿入するステップ、６０３は機能ブロック内に第２のインバータを挿入することによりステップ６２１で指定されたクロックのＤｕｔｙ比を保証できるか否かを判定するステップ、６０４は前記ステップ６０３によりＤｕｔｙ比が保証可能であると判断された場合に全階層を通してクロックの起点からフリップフロップまでのＤｕｔｙを保証する場所に第２のインバータを挿入するステップ、６０５は機能ブロック単体でＤｕｔｙ保証可能な位置に第２のインバータを挿入するステップ、６０６は各下位階層を結線する最上位階層において下位階層である機能ブロックに最も近い位置に第３のインバータを挿入するステップ、６０７は前記ステップ６０５により機能ブロック内のＤｕｔｙ保証をふまえて最上位階層において全階層のＤｕｔｙ比が保証可能であるか否かを判定するステップ、６０８は最上位階層において全階層を通してクロックの起点からフリップフロップまでのＤｕｔｙを保証する場所に第４のインバータを挿入するステップ、６０９は最上位階層のみでＤｕｔｙ保証可能なポイントに第４のインバータを挿入するステップ、６１０は各機能ブロックに必要なクロックを供給するクロック制御部の出力に最も近い位置に第５のインバータを挿入するステップ、６１１は全階層においてＤｕｔｙ保証可能な第６のインバータを挿入するステップ、６１２はＤｕｔｙ保証を完了するステップ、６２１はＤｕｔｙ保証を行うクロックを指定する情報、６２２はＤｕｔｙ比の目標値の情報である。なお、これら各ステップはコンピュータ上で実行される。
【００３９】
以上のように構成された本実施の形態３の半導体集積回路の設計方法により行われるクロック設計方法について、以下にその動作を説明する。
ステップ６０１ではステップ６２１で指定されたクロックの起点からフリップフロップを終点とする経路のクロック立ち上がりエッジと立ち下りエッジの遅延値及び前記遅延値よりＤｕｔｙ比を計算する。このステップ６０１では、ステップ６２１のクロック情報に基づき全てのクロックについて遅延値を計算する。ステップ６０２ではクロックのスキューを調整するＣＴＳの起点となるバッファの手前に第１のインバータ７１１を挿入する。即ち、このステップ６０２では、ステップ６２２で指定されたＤｕｔｙ比の目標値に達していないクロック信号線にインバータを挿入する。ステップ６０３では機能ブロック内に仮に第２のインバータを挿入することによりステップ６２１で指定されたクロックのＤｕｔｙ比を保証できるか否か判定する。このステップ６０３では、前記第２のインバータを仮に挿入することによりクロックの起点から終点としてのフリップフロップまでのＤｕｔｙ比がステップ６２２で指定された目標値に達しているか否かを判定する。ステップ６０３では、Ｄｕｔｙ比を保証可能な場合、ステップ６０４においてＤｕｔｙ比を保証可能なクロック信号線上の位置に第２のインバータ７１２を挿入しＤｕｔｙ保証を完了する。また、Ｄｕｔｙ比の保証が不可能な場合、ステップ６０５において機能ブロックのクロック入力ピンからフリップフロップまでのクロック立ち上がりエッジと立ち下りエッジとの遅延差であるＤｕｔｙ比が保証可能な位置に第２のインバータを挿入し機能ブロック内においてはＤｕｔｙ保証がなされたことになる。ステップ６０６では各下位階層の結線のみを行う最上位階層において機能ブロックの入力ピンに最も近い位置に第３のインバータ７１３を挿入する。なお、ここでいう最も近い位置とは第３のインバータと機能ブロックの入力ピンとの間に組み合わせ論理回路が存在しないことを言う。
【００４０】
前記作業終了後、ステップ６０７に移り最上位階層においてクロックの起点からフリップフロップを終点とする経路のＤｕｔｙ比の保証可能か否かの判定を行う。Ｄｕｔｙ保証可能であればステップ６０８においてＤｕｔｙ比を保証する第４のインバータ７１４を最上位階層に挿入しＤｕｔｙ保証を完了する。Ｄｕｔｙ比の保証が不可能な場合、ステップ６０９では最上位階層のクロック入力ピンからフリップフロップまでのクロック立ち上がりエッジと立ち下りエッジとの遅延差であるＤｕｔｙ比が保証可能な位置に第４のインバータ７１４を挿入し、最上位階層でのＤｕｔｙ比を保証する。ステップ６１０では各機能ブロックに必要なクロックを供給するクロック制御部の出力に最も近い位置に第５のインバータ（図示せず）を挿入する。ステップ６１１ではクロックの起点からクロック制御部出力までのＤｕｔｙ比を保証できる位置に第６のインバータ（図示せず）を挿入する。このステップ６１１では、これによりクロックの起点からフリップフロップまでのＤｕｔｙ比を保証する。
【００４１】
一方、図８は従来技術を用いてＤｕｔｙ比の保証を行った場合の半導体集積回路であり、この従来技術では階層を考慮していなかったためＤｕｔｙ比の保証をするためにインバータを自動挿入した場合、図８のインバータ７１２、７１３、８１１のように階層間をまたいでインバータの挿入が行われていた。このため、Ｄｕｔｙ比を保証した場合、Ｄｕｔｙ比保証前とその後とでは各機能ブロックにおいてその入力信号の論理値が変化してしまい、論理の等価性が失われるため検証期間の増大を招いていた。
【００４２】
しかしながら、図６に示すように、本実施の形態３では各ブロックでＤｕｔｙ比の保証を行っていくため各ブロックで論理の等価性が保証される。例えば本実施の形態１を適用した場合、図７に示すようになり、インバータ７１１ないし７１４のように２つのクロック信号線に同一ブロック内でともに偶数個のインバータが挿入され、論理の等価性が保証されていることがわかる。また、各ブロックの出力ポイント、例えばインバータ７１２及び７１４のようにまず必ずインバータを挿入し、次に図７のインバータ７１１及び７１３のようにＤｕｔｙ比を保証するインバータを挿入することにより自動化の容易化を実現している。
【００４３】
このように、本実施の形態３によれば、複数の機能ブロックにクロックを供給する際に、機能ブロックの直前にインバータを挿入するとともに、Ｄｕｔｙ比が保証可能なクロック信号線上の位置にインバータを挿入するようにしたので、各機能ブロックにおける論理の等価性を保証しながら、Ｄｕｔｙ比が保証可能となり、Ｄｕｔｙ保証の自動化が容易となる。
【００４４】
実施の形態４．
図９は本発明の実施の形態４における半導体集積回路の構成を示すものである。図９において、９３１および９３２はクロックの周期を２倍にする分周回路、９４１ないし９４４は信号の遅延値を調整する遅延素子である。
【００４５】
以上のように構成された本実施の形態４による半導体集積回路について、以下にその動作を説明する。
入力ピン３１１より入力されたクロックは、クロック制御部３０２で４つの経路に分割され、機能ブロック３０３、３０４内のフリップフロップ群３６１から３６４へクロックが供給される。
【００４６】
一方、図３は従来技術の一例である。図３におけるクロックは入力ピン３１１より供給され、クロック制御部３０２を経て入力クロックに対して２倍の周期のクロックが必要な機能ブロック３０３，３０４には、分周回路３３１でクロックを分周しクロック制御部３０２で２つの経路に分岐し機能ブロック３０３，３０４へ供給される。また入力クロックと同一なクロックが必要な機能ブロック３０４のフリップフロップ群３６３及び３６４には機能ブロック３０４内で機能ブロック間においてクロック間スキューを調整するために用いられる遅延素子３４３を通過後分岐しそれぞれのフリップフロップ群にクロックが供給される。このような半導体集積回路ではクロックの分岐回数が増え、その結果として半導体製造におけるプロセスのばらつきの影響を受けやすくなり、半導体製造における歩留まり低下を招いていた。
【００４７】
しかしながら、本実施の形態４では、図９のように、クロック制御部３０２内のみでクロックの分岐を終えることにより、クロック信号の分岐回数を最小化し半導体製造におけるプロセスのばらつきの影響を受け難くすると共に、分周回路９３１，９３２を１つのクロック制御部３０２内にではなく分周クロックが必要となる機能ブロックごとに持たせることにより、クロックの立ち上がりエッジによりクロックを分周する分周回路９３１，９３２までのＤｕｔｙ比を保証でき、Ｄｕｔｙ保証の容易化を実現する。
【００４８】
このように、本実施の形態４によれば、クロック信号をクロック制御部内のみで分岐することにより、クロック信号の分岐回数を最小化でき、プロセスの変動の影響を受けにくくできるとともに、分周クロックが必要な機能ブロックごとに分周回路を設けるようにしたので、分周回路までのＤｕｔｙ比保証が容易に実現できる。
【００４９】
なお、分周回路９３１および９３２の分周比は、分周クロックを必要とする機能ブロックの要求に応じて適宜設定すればよく、２以外の正整数や正の分数であってもよい。
【００５０】
【発明の効果】
以上のように、本発明では機能ブロックに分割し各機能ブロックのレイアウトを行った後に最上位階層のレイアウトを行う半導体集積回路の設計方法である階層レイアウト方法を行う場合、クロック入力のハイレベルとロウレベル期間の比であるＤｕｔｙ比を計算しフリップフロップに近い階層より順次Ｄｕｔｙを保証していき、フリップフロップを含む階層ではＣＴＳ手前に第１のインバータを置くとともに入力から第１のインバータまでの間のＤｕｔｙ保証可能な位置に第２のインバータを置き、フリップフロップを含む階層以外では出力の手前に第１のインバータを置くとともに入力と出力との間のＤｕｔｙ保証可能な位置に第２のインバータを置くことにより、クロックのＤｕｔｙ保証を行うようにしたので、Ｄｕｔｙ保証後も各階層において論理の等価性を保証しかつＤｕｔｙ保証の自動化を容易にする。
【００５１】
また、本発明では機能ブロックに分割し各機能ブロックのレイアウトを行った後に最上位階層のレイアウトを行う半導体集積回路の設計方法である階層レイアウト方法を行う場合、下位階層にそれぞれ分周器を備えクロックの分岐回数を最小にすることにより、下位階層までのＤｕｔｙ保証を実現しかつ半導体製造のプロセスのばらつきによる影響を減少させる。
【００５２】
即ち、本発明の請求項１に係る半導体集積回路の設計方法によれば、設計しようとする半導体集積回路を複数の機能ブロックに分割し、各機能ブロックのレイアウトを行った後に、最上位階層のレイアウトを行う階層設計方法である半導体集積回路の設計方法において、機能ブロックに入力された同一のクロックから当該機能ブロック内部で生成されその位相差であるクロックスキューの調整が必要な複数のクロックを、当該機能ブロック内の遅延素子の遅延量を変更することでスキュー調整する第１のスキュー調整ステップと、同一の前記機能ブロックに複数入力され各クロック間の位相差であるクロックスキューの調整が必要な複数のクロックを、前記機能ブロック内の遅延素子の遅延量を変更することでスキュー調整する第２のスキュー調整ステップとを含み、前記第１，第２のステップを半導体集積回路内のすべての機能ブロックに関して完了した後、前記遅延素子の遅延量を調整し、複数の機能ブロックに個別に入力されるクロック間のスキュー調整を行う、ようにしたので、機能ブロックでのタイミングチェックに較べ時間を要する全階層でのタイミング回数を削減でき、設計期間の短縮が可能となる半導体集積回路の設計方法が得られる効果がある。
【００５３】
また、本発明の請求項２に係る半導体集積回路によれば、半導体集積回路を複数の機能ブロックに分割し、各機能ブロックのレイアウトを行った後に、最上位階層のレイアウトを行う階層設計方法を用いて設計される半導体集積回路において、各機能ブロックに供給するクロックを制御する機能ブロックであるクロック制御部と、該クロック制御部と、クロックの供給先である上記各機能ブロックとを接続する複数のクロック信号線とを備え、前記クロック制御部内において前記複数の機能ブロックに接続される同一周期のクロック系が、予め分割して設けられ、前記クロック信号線同士が、最上位階層において互いに等長となるように配線するようにしたので、クロック分岐点からそれぞれの機能ブロックまでを最上位階層における配線で等長に配線することが容易となり、配線遅延が少ない半導体集積回路が得られる効果がある。
【００５４】
また、本発明の請求項３に係る半導体集積回路の設計方法によれば、設計しようとする半導体集積回路を複数の機能ブロックに分割し、各機能ブロックのレイアウトを行った後に、最上位階層のレイアウトを行う階層設計方法である半導体集積回路の設計方法において、半導体集積回路におけるクロック入力のハイレベル期間と、ロウレベル期間との比であるデューティ比を同一にする必要のあるクロック信号線について、クロックの立ち上がりエッジ、及び立ち下がりエッジの遅延値を計算する第１のステップと、前記ステップの遅延計算結果に基づき立ち上がりエッジ及び立ち下がりエッジの遅延差が大きいクロック信号線について第１のインバータを挿入する第２のステップと、前記第１のステップにより計算された遅延値に基づきクロックの立ち上がりエッジ及び立ち下がりエッジの遅延差を最小にすることが可能な第２のインバータを、前記第１のインバータが挿入された階層と同一の階層内に挿入する第３のステップとを含む、ようにしたので、各機能ブロックにおける論理の等価性を保証しながら、Ｄｕｔｙ比が保証可能となり、Ｄｕｔｙ保証の自動化が容易となる半導体集積回路の設計方法が得られる効果がある。
【００５５】
また、本発明の請求項４に係る半導体集積回路によれば、請求項２記載の半導体集積回路において、前記クロック制御部から供給されるクロックを分周し分周クロックを作成する分周回路を、当該分周クロックを必要とする機能ブロック内にそれぞれ設けるようにしたので、分周回路までのＤｕｔｙ比保証が容易に実現できる半導体集積回路が得られる効果がある。
【図面の簡単な説明】
【図１】本発明の実施の形態１における半導体集積回路の設計方法のフローチャートを示す図
【図２】従来例における第１の半導体集積回路の設計方法のフローチャートを示す図
【図３】クロックに着目した半導体集積回路を示すブロック図
【図４】本発明の実施の形態２における半導体集積回路を示すブロック図
【図５】従来例における第２の半導体集積回路を示すブロック図
【図６】本発明における実施の形態３における半導体集積回路の設計方法のフローチャートを示す図
【図７】本発明における実施の形態３における半導体集積回路を示すブロック図
【図８】従来例における第３の半導体集積回路を示すブロック図
【図９】本発明の実施の形態４における半導体集積回路を示すブロック図
【符号の説明】
１０１  機能ブロックにおける第１のクロックスキュー調整工程
１０２  クロックスキューが回路動作に問題ないか否か判定する第１の工程
１０３  第１の回路修正工程
１０４  機能ブロックにおける第２のクロックスキュー調整工程
１０５  クロックスキューが回路動作に問題ないか否か判定する第２の工程
１０６  第２の回路修正工程
１０７  機能ブロックにおける遅延値を算出する工程
１０８  機能ブロックにおいてタイミングが回路動作上問題ないか判定する工程
１０９  第３の回路修正工程
１１０  最上位階層におけるクロックスキュー調整工程
１１１  クロックスキューが回路動作に問題ないか否か判定する第３の工程
１１２  第４の回路修正工程
１１３  全階層を含んだ遅延値を算出する工程
１１４  全階層においてタイミングが回路動作上問題ないか判定する工程
１１５  第５の回路修正工程
１１６  半導体製造工程
３０１  半導体集積回路における最上位階層
３０２  半導体集積回路におけるクロック制御部
３０３  第１の機能ブロック
３０４  第２の機能ブロック
３１１  半導体集積回路におけるクロックの入力ピン
３２１  クロック制御部クロック入力ピン
３２２  クロック制御部第１のクロック出力ピン
３２３  クロック制御部第２のクロック出力ピン
３２４  クロック制御部第３のクロック出力ピン
３２５  第１の機能ブロックにおけるクロック入力ピン
３２６  第２の機能ブロックにおける２倍の周期のクロック入力ピン
３２７  第２の機能ブロックにおけるクロック入力ピン
３３１  クロックの周期を２倍にする分周回路
３４１  機能ブロック間のクロックスキューを調整する第１の遅延素子
３４２  機能ブロック間のクロックスキューを調整する第２の遅延素子
３４３  機能ブロック間のクロックスキューを調整する第３の遅延素子
３５１  機能ブロック内のクロックスキューを調整する第１の遅延素子
３５２  機能ブロック内のクロックスキューを調整する第２の遅延素子
３６１  第１の機能ブロックにおけるフリップフロップ群
３６２  第２の機能ブロックにおける第１のフリップフロップ群
３６３  第２の機能ブロックにおける第２のフリップフロップ群
３６４  第２の機能ブロックにおける第３のフリップフロップ群
４０１  半導体集積回路における最上位階層
４０２  半導体集積回路におけるクロック制御部
４０３  第１の機能ブロック
４０４  第２の機能ブロック
４１１  半導体集積回路におけるクロックの入力ピン
４２１  クロック制御部クロック入力ピン
４２２  クロック制御部第１のクロック出力ピン
４２３  クロック制御部第２のクロック出力ピン
４２４  第１の機能ブロックにおけるクロック入力ピン
４２５  第２の機能ブロックにおけるクロック入力ピン
４３１  第１の機能ブロックにおけるフリップフロップ群
４３２  第２の機能ブロックにおけるフリップフロップ群
４４１  クロック制御部内におけるクロック分岐点
４５０  クロック信号線
４５１  クロック信号線
５４１  最上位階層におけるクロック分岐点
６０１  クロックの立ち上がり及び立ち下り遅延を計算する工程
６０２  ＣＴＳ開始点前に第１のインバータを挿入する工程
６０３  機能ブロック内で全階層のＤｕｔｙ比が保証可能か否かを判定する工程
６０４  機能ブロック内に全階層のＤｕｔｙ比保証可能な位置に第２のインバータを挿入する工程
６０５  機能ブロック内単体でＤｕｔｙ比保証可能な位置に第２のインバータを挿入する工程
６０６  最上位階層における第３のインバータを挿入する工程
６０７  最上位階層において全階層のＤｕｔｙ比が保証可能か否かを判定する工程
６０８  最上位階層に全階層のＤｕｔｙ比保証可能な位置に第４のインバータを挿入する工程
６０９  最上位階層単体でＤｕｔｙ比保証可能な位置に第４のインバータを挿入する工程
６１０  クロック制御部における第５のインバータを挿入する工程
６１１  全階層のＤｕｔｙ比保証可能な位置に第５のインバータを挿入する工程
６１２  Ｄｕｔｙ保証を完了する工程
７０１  第１のバッファ素子
７０２  第２のバッファ素子
７０３  第３のバッファ素子
７０４  第４のバッファ素子
７０５  第５のバッファ素子
７０６  第６のバッファ素子
７１１  第１のインバータ素子
７１２  第２のインバータ素子
７１３  第３のインバータ素子
７１４  第４のインバータ素子
８０１  第５のバッファ素子
８０２  第６のバッファ素子
８１１  第５のインバータ素子
９３１  機能ブロック３０３におけるクロックの周期を２倍にする分周回路
９３２  機能ブロック３０４におけるクロックの周期を２倍にする分周回路
９４１  機能ブロック３０３における遅延素子
９４２  機能ブロック３０４における第１の遅延素子
９４３  機能ブロック３０４における第２の遅延素子
９４４  機能ブロック３０４における第３の遅延素子
【図１】
2004266034.tif 000003
【図２】
2004266034.tif 000004
【図３】
2004266034.tif 000005
【図４】
2004266034.tif 000006
【図５】
2004266034.tif 000007
【図６】
2004266034.tif 000008
【図７】
2004266034.tif 000009
【図８】
2004266034.tif 000010
【図９】
2004266034.tif 000011