(57)【要約】  【課題】  正常動作が困難なフリップフロップが生じること等を防止することができる半導体集積回路の設計方法等を提供する。  【解決手段】  ネットリスト記録部４と、セルライブラリ記録部５と、配線遅延予想値記録部６と、フリップフロップの設計使用値としてのホールドタイムを算出するホールドタイム算出部７と、設計使用値としてのホールドタイムの中の最大値を抽出するホールドタイム最大値抽出部８と、設計使用値としてのホールドタイムの中の最大値をクロックスキューに換算するホールドタイム最大値換算部９と、セル配置部１０と、クロックツリーシンセシス部１１と、配線部１２と、タイミングシミュレーションを行うタイミングシミュレーション部１３と、タイミングエラーが生じた場合に、配線の配置、タイミングシミュレーションを再度行わせるタイミングシミュレーション結果チェック部１４とを具備する。【選択図】  図１
2005128633.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路の設計を行うためにコンピュータが実行する方法であって、
設計対象である半導体集積回路のネットリスト、設計対象である半導体集積回路に含まれる複数のセルの内の複数のフリップフロップのセルライブラリ内に格納されている仕様値としてのホールドタイム、及び、配線による信号遅延の予想値を用いて、前記複数のフリップフロップの設計使用値としてのホールドタイムを算出するステップ（ａ）と、
前記複数のフリップフロップの設計使用値としてのホールドタイムの中の最大値を抽出するステップ（ｂ）と、
前記複数のフリップフロップの設計使用値としてのホールドタイムの中の最大値をクロックスキューに換算するステップ（ｃ）と、
前記複数のセルの配置を行うステップ（ｄ）と、
配置が行われた前記複数のセルに対し、前記クロックスキューを用いて、クロックツリーシンセシスを行うステップ（ｅ）と、
前記複数のセル間を接続する複数の配線をするステップ（ｆ）と、
ステップ（ｄ）〜ステップ（ｆ）によって得られた回路に対し、タイミングシミュレーションを行うステップ（ｇ）と、
ステップ（ｇ）にてタイミングエラーが生じた場合に、ステップ（ｆ）〜ステップ（ｇ）を繰り返すステップ（ｈ）と、
を具備する半導体集積回路の設計方法。
【請求項２】
ステップ（ａ）の実行に先立って、前記ネットリストから得られるゲーテッドセルの段数及び前記複数のフリップフロップの仕様値としてのホールドタイムを用いてタイミングチェックを行うステップ（ｉ）を更に具備する、請求項１記載の半導体集積回路の設計方法。
【請求項３】
ステップ（ｉ）が、
前記ネットリスト、前記複数のフリップフロップのセルライブラリ内に格納されている仕様値としてのホールドタイム、及び、前記配線による信号遅延の予想値を用いて、前記複数のフリップフロップの設計使用値としてのホールドタイムを算出するステップ（ｊ）と、
ステップ（ｊ）にて算出された前記複数のフリップフロップの設計使用値としてのホールドタイムを用いて、前記複数のフリップフロップの中に動作タイミング条件が厳しいフリップフロップが存在するか否かをチェックするステップ（ｋ）と、
前記複数のフリップフロップの中に動作タイミング条件が厳しいフリップフロップが存在する場合に、前記ゲーテッドセルの段数及び前記複数のフリップフロップの設計使用値としてのホールドタイムを用いて、前記複数のフリップフロップの中の動作タイミング条件が厳しいフリップフロップのクロックスキューを算出するステップ（ｌ）と、
ステップ（ｌ）にて算出されたクロックスキューを用いて、前記複数のフリップフロップの中に正常動作ができないフリップフロップが存在するか否かをチェックするステップ（ｍ）と、
前記複数のフリップフロップの中に正常動作ができないフリップフロップが存在する場合に、前記ネットリストを修正するステップ（ｎ）と、
を含む、請求項２記載の半導体集積回路の設計方法。
【請求項４】
ステップ（ｃ）の実行の後且つステップ（ｄ）の実行に先立って、前記複数のフリップフロップの中から動作タイミング条件が厳しいフリップフロップを抽出して配置を行うステップ（ｏ）を更に具備する、請求項１〜３のいずれか１項に記載の半導体集積回路の設計方法。
【請求項５】
ステップ（ｏ）が、
前記ネットリスト、前記複数のフリップフロップのセルライブラリ内に格納されている仕様値としてのホールドタイム、及び、前記配線による信号遅延の予想値を用いて、前記複数のフリップフロップの設計使用値としてのホールドタイムを算出するステップ（ｐ）と、
ステップ（ｐ）にて算出された前記複数のフリップフロップの設計使用値としてのホールドタイムを用いて、前記複数のフリップフロップの中に動作タイミング条件が厳しいフリップフロップが存在するか否かをチェックするステップ（ｑ）と、
前記複数のフリップフロップの中に動作タイミング条件が厳しいフリップフロップが存在する場合に、前記複数のフリップフロップの中の動作タイミング条件が厳しいフリップフロップをかためて配置するステップ（ｒ）と、
を含む、請求項４記載の半導体集積回路の設計方法。
【請求項６】
請求項１〜５のいずれか１項に記載の半導体集積回路の設計方法によって設計されたことを特徴とする半導体集積回路。
【請求項７】
半導体集積回路の設計を行うための装置であって、
設計対象である半導体集積回路のネットリスト、セルライブラリ、及び、配線による信号遅延の予想値を記録する記録手段と、
前記ネットリスト、設計対象である半導体集積回路に含まれる複数のセルの内の複数のフリップフロップの前記セルライブラリ内に格納されている仕様値としてのホールドタイム、及び、前記配線による信号遅延の予想値を用いて、前記複数のフリップフロップの設計使用値としてのホールドタイムを算出する第１の手段と、
前記複数のフリップフロップの設計使用値としてのホールドタイムの中の最大値を抽出する第２の手段と、
前記複数のフリップフロップの設計使用値としてのホールドタイムの中の最大値をクロックスキューに換算する第３の手段と、
前記複数のセルの配置を行う第４の手段と、
配置が行われた前記複数のセルに対し、前記クロックスキューを用いて、クロックツリーシンセシスを行う第５の手段と、
前記複数のセル間を接続する複数の配線をする第６の手段と、
前記第４〜第６の手段によって得られた回路に対し、タイミングシミュレーションを行う第７の手段と、
タイミングシミュレーションにおいてタイミングエラーが生じた場合に、前記第６の手段に前記複数の配線の配置を再度行わせ、前記第７の手段にタイミングシミュレーションを再度行わせる第８の手段と、
を具備する半導体集積回路の設計装置。
【請求項８】
半導体集積回路の設計を行うためのプログラムであって、
設計対象である半導体集積回路のネットリスト、設計対象である半導体集積回路に含まれる複数のセルの内の複数のフリップフロップのセルライブラリ内に格納されている仕様値としてのホールドタイム、及び、配線による信号遅延の予想値を用いて、前記複数のフリップフロップの設計使用値としてのホールドタイムを算出する手順（ａ）と、
前記複数のフリップフロップの設計使用値としてのホールドタイムの中の最大値を抽出する手順（ｂ）と、
前記複数のフリップフロップの設計使用値としてのホールドタイムの中の最大値をクロックスキューに換算する手順（ｃ）と、
前記複数のセルの配置を行う手順（ｄ）と、
配置が行われた前記複数のセルに対し、前記クロックスキューを用いて、クロックツリーシンセシスを行う手順（ｅ）と、
前記複数のセル間を接続する複数の配線をする手順（ｆ）と、
手順（ｄ）〜手順（ｆ）によって得られた回路に対し、タイミングシミュレーションを行う手順（ｇ）と、
手順（ｇ）にてタイミングエラーが生じた場合に、手順（ｆ）〜手順（ｇ）を繰り返すステップ（ｈ）と、
をＣＰＵに実行させるための半導体集積回路の設計プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の設計方法及びそのような半導体集積回路の設計方法によって設計された半導体集積回路に関する。さらに、本発明は、そのような半導体集積回路の設計方法を用いた半導体集積回路の設計装置及び半導体集積回路の設計を行うためのプログラムに関する。
【背景技術】
【０００２】
従来のＡＳＩＣ（Application Specific Integrated Circuit）の設計方法について、図１４を参照しながら説明する。図１４は、従来のＡＳＩＣの設計方法の概要を示すフローチャートである。
【０００３】
図１４に示すように、従来のＡＳＩＣの設計方法においては、まず、ユーザ（半導体集積回路の設計技術者）が、経験に基づいて、フリップフロップのホールドタイムを設定する（ステップＳ７０１）。
【０００４】
ここで、フリップフロップのホールドタイムと入力データ信号のクロックエッジ後信号値保持時間について、図１５を参照しながら説明する。図１５（ａ）に示すように、Ｄ型のフリップフロップＦＦ１１に入力データ信号及びクロック信号が供給されるときに、フリップフロップＦＦ１１が正しく動作するためには、入力データ信号がクロック信号のエッジより第１の所定時間（フリップフロップＦＦ１１のセットアップタイム）以上前に確定し、且つ、クロック信号のエッジより第２の所定時間（フリップフロップＦＦ１１のホールドタイム）経過後まで確定している必要がある。すなわち、図１５（ｂ）に示すように入力データ信号及びクロック信号が変化する場合に、入力データ信号がハイレベルとなってからクロック信号の立ち上がりエッジまでの時間ｔ１３（以下、「入力データ信号のクロックエッジ前保持時間」という）がフリップフロップＦＦ１１のセットアップタイムｔ１１より長く、且つ、クロック信号の立ち上がりエッジから入力データ信号がハイレベルではなくなるまでの時間ｔ１４（以下、「入力データ信号のクロックエッジ後保持時間」という）がフリップフロップＦＦ１１のホールドタイムｔ１２より長い必要がある。
【０００５】
すなわち、フリップフロップＦＦ１１が正常動作するためには、
ｔ１３＞ｔ１１      …（１）
ｔ１４＞ｔ１２      …（２）
が成立する必要がある。
このように、フリップフロップのホールドタイムが長いほど、フリップフロップの動作タイミング条件は厳しくなる。また、フリップフロップへの入力データ信号のクロックエッジ後保持時間が短いほど、フリップフロップの動作タイミング条件は厳しくなる。
【０００６】
また、図１６に示す回路５１のタイミングチャート（図１７参照）と、図１８に示す回路６１のタイミングチャート（図１９参照）とを比較すると、回路６１のフリップフロップＦＦ３２（図１８参照）の方が動作タイミング条件が緩く、回路５１のフリップフロップＦＦ２２（図１６参照）の方が動作タイミング条件が厳しい。これは、回路６１においては、フリップフロップＦＦ３１の出力データ信号がＡＮＤゲート回路Ａ３１によって遅延され、ＡＮＤゲート回路Ａ３１の出力データ信号のクロックエッジ後保持時間が長くなるためである。
【０００７】
再び図１４を参照すると、ステップＳ７０１においては、ユーザ（半導体集積回路の設計技術者）が、フリップフロップのライブラリ内に記録されているホールドタイム（ライブラリ仕様値）と過去の経験（例えば、製造プロセス、チップ全体に形成されるフリップフロップの総数等）に基づいて、ＡＳＩＣの設計において用いるためのホールドタイム（ユーザ設定値）を設定する。
【０００８】
次に、セル（フリップフロップ及びゲーテッド（Gated）セルを含む）の配置を行い（ステップＳ７０２）、その後、ステップＳ７０１にて設定したフリップフロップのホールドタイム（ユーザ設定値）を用いて、クロックツリーシンセシス（Clock Tree Synthesis）を行う（ステップＳ７０３）。
ここで、クロックツリーシンセシスについて、図２０及び図２１を参照しながら説明する。図２０に示すような回路において、フリップフロップＦＦ４１〜ＦＦ４３への入力データ信号及びクロック信号のタイミングを合わせるために、クロックツリー上にバッファ回路Ｂ４２〜Ｂ４５を適宜挿入すること（図２１参照）をクロックツリーシンセシスという。
【０００９】
再び図１４を参照すると、ステップＳ７０３におけるクロックツリーシンセシス後においても、入力データ信号とクロック信号とのタイミングの関係において正常動作が困難な（例えば、フリップフロップへの入力データ信号のクロックエッジ後保持時間がフリップフロップのホールドタイムより短いか、または、略同じ程度でマージンが少ない等）フリップフロップがあるか否かをチェックする。そして、そのようなフリップフロップがある場合には、処理をステップＳ７０１に戻し、そうでない場合には、処理をステップＳ７０５に移す（ステップＳ７０４）。
【００１０】
ステップＳ７０４にて入力データ信号とクロック信号とのタイミングの関係において正常動作が困難なフリップフロップがないと判断した場合、配線を行う（ステップＳ７０５）。
つづいて、タイミングシミュレーションを行う（ステップＳ７０６）。
【００１１】
そして、ステップＳ７０６におけるタイミングシミュレーションの結果、タイミング的に間に合わない信号がある場合には、処理をステップＳ７０１に戻し、そうでない場合には、処理を終了する（ステップＳ７０７）。
【００１２】
上記した従来のＡＳＩＣの設計方法においては、ユーザ（半導体集積回路の設計技術者）が経験に基づいてフリップフロップのホールドタイム（ユーザ設定値）を設定しているが（図１４のステップＳ７０１参照）、このホールドタイム（ユーザ設定値）は非常に大きく設定されていた。そのため、このホールドタイム（ユーザ設定値）を用いたクロックツリーシンセシス（図１４のステップＳ７０３参照）において、クロックツリー上にバッファ回路を挿入しても、正常動作が困難なフリップフロップが生じてしまっていた。
【００１３】
また、従来のＡＳＩＣの設計方法においては、ユーザ（半導体集積回路の設計技術者）が経験に基づいてフリップフロップのホールドタイム（ユーザ設定値）を設定しているが（図１４のステップＳ７０１参照）、このホールドタイム（ユーザ設定値）を用いてクロックツリーシンセシスを行うと（図１４のステップＳ７０３参照）、タイミングシミュレーション（図１４のステップＳ７０６参照）において、クロックスキューを原因とするタイミングエラーが発生することがあった。
【００１４】
また、従来のＡＳＩＣの設計方法においては、フリップフロップのホールドタイム（ユーザ設定値）が大きいにもかかわらず、異なるゲーテッドセル間のクロックスキューを小さくすることができなかった。
【００１５】
また、従来のＡＳＩＣの設計方法においては、ゲーテッドセルを追加する際に、フリップフロップのホールドタイム（ユーザ設定値）を考慮することなく追加していたため、クロックスキューが大きくなってしまっていた。
【００１６】
また、従来のＡＳＩＣの設計方法においては、クロックスキューを小さくさせる設定をしてクロックツリーシンセシスを行っていたため、クロックツリー上に挿入されるバッファ回路の数が多くなり、（１）クロックラインの遅延値が大きく、（２）クロックラインを駆動する回路の消費電力が大きくなっていた。
【００１７】
ところで、集積回路のレイアウト時に、仮想的にクロックの遅延を与え、クロックの遅延を考慮してレイアウトを行うことを特徴とする集積回路レイアウト方法が知られている（例えば、特許文献１参照）
しかしながら、特許文献１に掲載されている集積回路レイアウト方法は、仮想的にクロックの遅延を与え、クロックの遅延を考慮してレイアウトを行うものであるが、入力データ信号のクロックエッジ後保持時間を与え、入力データ信号のクロックエッジ後保持時間を考慮してレイアウトを行うものではない。
【００１８】
【特許文献１】特開２００３−９９４９１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
そこで、上記の点に鑑み、本発明は、経験に基づいてホールドタイムを設定するのではなく、適切なホールドタイムを算出して用いることができる半導体集積回路の設計方法を提供することを第１の目的とする。また、本発明はそのような半導体集積回路の設計方法によって設計された半導体集積回路を提供することを第２の目的とする。また、本発明は、そのような半導体集積回路の設計方法を用いた半導体集積回路の設計装置を提供することを第３の目的とする。また、本発明は、半導体集積回路の設計を行うためのプログラムを提供することを第４の目的とする。
【課題を解決するための手段】
【００２０】
以上の課題を解決するため、本発明に係る半導体集積回路の設計方法は、半導体集積回路の設計を行うためにコンピュータが実行する方法であって、設計対象である半導体集積回路のネットリスト、設計対象である半導体集積回路に含まれる複数のセルの内の複数のフリップフロップのセルライブラリ内に格納されている仕様値としてのホールドタイム、及び、配線による信号遅延の予想値を用いて、複数のフリップフロップの設計使用値としてのホールドタイムを算出するステップ（ａ）と、複数のフリップフロップの設計使用値としてのホールドタイムの中の最大値を抽出するステップ（ｂ）と、複数のフリップフロップの設計使用値としてのホールドタイムの中の最大値をクロックスキューに換算するステップ（ｃ）と、複数のセルの配置を行うステップ（ｄ）と、配置が行われた複数のセルに対し、クロックスキューを用いて、クロックツリーシンセシスを行うステップ（ｅ）と、複数のセル間を接続する複数の配線をするステップ（ｆ）と、ステップ（ｄ）〜ステップ（ｆ）によって得られた回路に対し、タイミングシミュレーションを行うステップ（ｇ）と、ステップ（ｇ）にてタイミングエラーが生じた場合に、ステップ（ｆ）〜ステップ（ｇ）を繰り返すステップ（ｈ）とを具備する。
【００２１】
ここで、ステップ（ａ）の実行に先立って、前記ネットリストから得られるゲーテッドセルの段数及び前記複数のフリップフロップの仕様値としてのホールドタイムを用いてタイミングチェックを行うステップ（ｉ）を更に具備することとしても良い。さらに、ステップ（ｉ）が、ネットリスト、複数のフリップフロップのセルライブラリ内に格納されている仕様値としてのホールドタイム、及び、配線による信号遅延の予想値を用いて、複数のフリップフロップの設計使用値としてのホールドタイムを算出するステップ（ｊ）と、ステップ（ｊ）にて算出された複数のフリップフロップの設計使用値としてのホールドタイムを用いて、複数のフリップフロップの中に動作タイミング条件が厳しいフリップフロップが存在するか否かをチェックするステップ（ｋ）と、複数のフリップフロップの中に動作タイミング条件が厳しいフリップフロップが存在する場合に、ゲーテッドセルの段数及び複数のフリップフロップの設計使用値としてのホールドタイムを用いて、複数のフリップフロップの中の動作タイミング条件が厳しいフリップフロップのクロックスキューを算出するステップ（ｌ）と、ステップ（ｌ）にて算出されたクロックスキューを用いて、複数のフリップフロップの中に正常動作ができないフリップフロップが存在するか否かをチェックするステップ（ｍ）と、複数のフリップフロップの中に正常動作ができないフリップフロップが存在する場合に、ネットリストを修正するステップ（ｎ）とを含むこととしても良い。
【００２２】
また、ステップ（ｃ）の実行の後且つステップ（ｄ）の実行に先立って、複数のフリップフロップの中から動作タイミング条件が厳しいフリップフロップを抽出して配置を行うステップ（ｏ）を更に具備することとしても良い。さらに、ステップ（ｏ）が、ネットリスト、複数のフリップフロップのセルライブラリ内に格納されている仕様値としてのホールドタイム、及び、配線による信号遅延の予想値を用いて、複数のフリップフロップの設計使用値としてのホールドタイムを算出するステップ（ｐ）と、ステップ（ｐ）にて算出された複数のフリップフロップの設計使用値としてのホールドタイムを用いて、複数のフリップフロップの中に動作タイミング条件が厳しいフリップフロップが存在するか否かをチェックするステップ（ｑ）と、複数のフリップフロップの中に動作タイミング条件が厳しいフリップフロップが存在する場合に、複数のフリップフロップの中の動作タイミング条件が厳しいフリップフロップをかためて配置するステップ（ｒ）とを含むこととしても良い。
【００２３】
また、上記した課題を解決するため、本発明に係る半導体集積回路は、本発明に係る半導体集積回路の設計方法によって設計されたことを特徴とする。
【００２４】
また、上記した課題を解決するため、本発明に係る半導体集積回路の設計装置は、半導体集積回路の設計を行うための装置であって、設計対象である半導体集積回路のネットリスト、セルライブラリ、及び、配線による信号遅延の予想値を記録する記録手段と、ネットリスト、設計対象である半導体集積回路に含まれる複数のセルの内の複数のフリップフロップのセルライブラリ内に格納されている仕様値としてのホールドタイム、及び、配線による信号遅延の予想値を用いて、複数のフリップフロップの設計使用値としてのホールドタイムを算出する第１の手段と、複数のフリップフロップの設計使用値としてのホールドタイムの中の最大値を抽出する第２の手段と、複数のフリップフロップの設計使用値としてのホールドタイムの中の最大値をクロックスキューに換算する第３の手段と、複数のセルの配置を行う第４の手段と、配置が行われた複数のセルに対し、クロックスキューを用いて、クロックツリーシンセシスを行う第５の手段と、複数のセル間を接続する複数の配線をする第６の手段と、第４〜第６の手段によって得られた回路に対し、タイミングシミュレーションを行う第７の手段と、タイミングシミュレーションにおいてタイミングエラーが生じた場合に、第６の手段に複数の配線の配置を再度行わせ、第７の手段にタイミングシミュレーションを再度行わせる第８の手段とを具備する。
【００２５】
また、上記した課題を解決するため、本発明に係る半導体集積回路の設計プログラムは、半導体集積回路の設計を行うためのプログラムであって、設計対象である半導体集積回路のネットリスト、設計対象である半導体集積回路に含まれる複数のセルの内の複数のフリップフロップのセルライブラリ内に格納されている仕様値としてのホールドタイム、及び、配線による信号遅延の予想値を用いて、複数のフリップフロップの設計使用値としてのホールドタイムを算出する手順（ａ）と、複数のフリップフロップの設計使用値としてのホールドタイムの中の最大値を抽出する手順（ｂ）と、複数のフリップフロップの設計使用値としてのホールドタイムの中の最大値をクロックスキューに換算する手順（ｃ）と、複数のセルの配置を行う手順（ｄ）と、配置が行われた複数のセルに対し、クロックスキューを用いて、クロックツリーシンセシスを行う手順（ｅ）と、複数のセル間を接続する複数の配線をする手順（ｆ）と、手順（ｄ）〜手順（ｆ）によって得られた回路に対し、タイミングシミュレーションを行う手順（ｇ）と、手順（ｇ）にてタイミングエラーが生じた場合に、手順（ｆ）〜手順（ｇ）を繰り返すステップ（ｈ）とをＣＰＵに実行させる。
【発明の効果】
【００２６】
本発明によれば、正常動作が困難なフリップフロップが生じること等を防止することが可能となる。
【発明を実施するための最良の形態】
【００２７】
以下、図面を参照しながら、本発明の実施の形態について説明する。なお、同一の構成要素については、同一の参照番号で示している。
図１は、本発明の第１の実施形態に係る半導体集積回路の設計装置の概要を示す図である。本実施形態は、本発明をＡＳＩＣ（Application Specific Integrated Circuit）の設計装置に適用したものである。
【００２８】
図１に示すように、この半導体集積回路の設計装置１は、入力部２と、表示部３と、ネットリスト記録部４と、セルライブラリ記録部５と、配線遅延予想値記録部６と、ホールドタイム算出部７と、ホールドタイム最大値抽出部８と、ホールドタイム最大値換算部９と、セル配置部１０と、クロックツリーシンセシス部１１と、配線部１２と、タイミングシミュレーション部１３と、タイミングシミュレーション結果チェック部１４とを具備する。
入力部２は、ユーザ（半導体集積回路の設計技術者）が入力を行うためのキーボード等であり、表示部３は、半導体集積回路の設計結果等を表示するためのＣＲＴ、ＬＣＤ等である。
【００２９】
ネットリスト記録部４は、設計対象であるＡＳＩＣのネットリストを記録する。
セルライブラリ記録部５は、設計に用いられるセル（フリップフロップ、ゲーテッド（Gated）セル（ＡＮＤゲート回路、ＯＲゲート回路、バッファ回路等を含む）を含む）に関する情報を含むセルライブラリを記録する。なお、セルライブラリには、フリップフロップのホールドタイム（ライブラリ仕様値）の情報が含まれている。
配線遅延予想値記録部６は、配線による信号遅延の予想値を記録する。
【００３０】
ホールドタイム算出部７は、ネットリスト記録部４に記録されているネットリスト、セルライブラリ記録部５に記録されている情報（特に、フリップフロップのホールドタイム（ライブラリ仕様値））、及び、配線遅延予想値記録部６に記録されている配線による信号遅延の予想値に基づいて、設計対象であるＡＳＩＣ内の全フリップフロップのホールドタイム（算出値）を算出する。
ホールドタイム最大値抽出部８は、ホールドタイム算出部７によって算出された全フリップフロップのホールドタイム（算出値）の中から最大値（動作タイミング条件が最も厳しい値）を抽出する。
【００３１】
ホールドタイム最大値換算部９は、ホールドタイム最大値抽出部８によって抽出されたホールドタイム（算出値）の最大値をクロックスキュー値に換算する。
セル配置部１０は、ネットリスト記録部４に記録されているネットリスト及びセルライブラリ記録部５に記録されているセルライブラリに基づいて、セルの配置を行う。
【００３２】
クロックツリーシンセシス部１１は、セル配置部１０によるセルの配置後に、クロックツリーシンセシスを行う。
配線部１２は、クロックツリーシンセシス部１１によるクロックツリーシンセシス後に、配線を行う。
【００３３】
タイミングシミュレーション部１３は、配線部１２による配線後に、タイミングシミュレーションを行う。
タイミングシミュレーション結果チェック部１４は、タイミングシミュレーション部１３によるタイミングシミュレーションの結果のチェックを行う。
【００３４】
図１に示すホールドタイム算出部７、ホールドタイム最大値抽出部８、ホールドタイム最大値換算部９、セル配置部１０、クロックツリーシンセシス部１１、配線部１２、タイミングシミュレーション部１３、及び、タイミングシミュレーション結果チェック部１４は、ＣＰＵとソフトウェア（プログラム）で構成することができる。このプログラムと、ネットリスト、セルライブラリ、及び、配線による信号遅延の予想値は、ハードディスク、フレキシブルディスク、ＭＯ、ＭＴ、ＲＡＭ、ＣＤ−ＲＯＭ、又は、ＤＶＤ−ＲＯＭ等の記録媒体に記録することができる。
【００３５】
図２は、半導体集積回路の設計装置１の半導体集積回路の設計処理を示すフローチャートである。以下、図２を参照しながら、半導体集積回路の設計装置１の半導体集積回路設計処理について説明する。
【００３６】
まず、ユーザ（半導体集積回路の設計技術者）が、半導体集積回路の設計処理を開始することを指示する指示データを入力部２から入力すると、ホールドタイム算出部７が、ネットリスト、セルライブラリ（特に、フリップフロップのホールドタイム（ライブラリ仕様値））、及び、配線による信号遅延の予想値を用い、設計対象であるＡＳＩＣ内の全フリップフロップについて、ホールドタイム（算出値）を算出する（ステップＳ１０１）。
そして、ホールドタイム最大値抽出部８が、ホールドタイム算出部７によって算出された全ホールドタイム（算出値）の中の最大値（動作タイミング条件として最も厳しい値）を抽出する（ステップＳ１０２）。
【００３７】
さらに、ホールドタイム最大値換算部９が、ホールドタイム最大値抽出部８によって抽出された全ホールドタイム（算出値）の中の最大値をクロックスキュー値に換算する（ステップＳ１０３）。
そして、セル配置部１０が、ホールドタイム最大値換算部９によって算出されたクロックスキュー値、ネットリスト記録部４に記録されているネットリスト、及び、セルライブラリ記録部５に記録されているセルライブラリを用いて、セルの配置を行う（ステップＳ１０４）。
【００３８】
次に、クロックツリーシンセシス部１１が、セル配置部１０によって配置されたセルにクロック信号を供給するためのクロックツリーに対して、クロックツリーシンセシスを行う（ステップＳ１０５）。
クロックツリーシンセシスが行われた後、配線部１２が、配線を行う（ステップＳ１０６）。
【００３９】
次に、タイミングシミュレーション部１３が、タイミングシミュレーションを行う（ステップＳ１０７）。
そして、タイミングシミュレーション結果チェック部１４が、タイミングエラーが存在する（正常動作しないセルが存在する又はタイミング的に間に合わない信号が存在する）か否かをチェックし、タイミングエラーが存在する場合には、配線部１２に配線のやり直しを行わせ、タイミングエラーが存在しない場合には、処理を終了する（ステップＳ１０８）。
【００４０】
従来の半導体集積回路の設計方法においては、ユーザ（半導体集積回路の設計技術者）が過剰に大きなホールドタイム（ユーザ設定値）を設定していた。一方、半導体集積回路の設計装置１においては、ホールドタイム算出部７が、ネットリスト、セルライブラリ（特に、フリップフロップのホールドタイム（ライブラリ仕様値））、及び、配線による信号遅延の予想値に基づいて、全フリップフロップのホールドタイム（算出値）を算出し、ホールドタイム最大値抽出部８が、全フリップフロップのホールドタイム（算出値）の中の最大値を抽出し、ホールドタイム最大値換算部９が、全フリップフロップのホールドタイム（算出値）の中の最大値をクロックスキュー値に換算する。
このように、半導体集積回路の設計装置１によれば、過剰に大きなホールドタイム（ユーザ設定値）を用いるのではなく、ホールドタイム（算出値）を用いるので、クロックツリーシンセシス部１１により追加されるバッファ回路を少なくすることができる。これにより、消費電力を低減することができ、チップサイズを小さくすることができる。
【００４１】
また、過剰に大きなホールドタイム（ユーザ設定値）を用いるのではなく、ホールドタイム（算出値）を用いるので、タイミングシミュレーションにおいて、タイミングエラーが生じることを少なくすることができる。これにより、配線のやり直しを少なくすることができ、設計時間を短縮することができる。
【００４２】
次に、本発明の第２の実施形態について説明する。図３は、本発明の第２の実施形態に係る半導体集積回路の設計装置の概要を示す図である。本実施形態は、本発明をＡＳＩＣの設計装置に適用したものである。
【００４３】
図３に示すように、この半導体集積回路の設計装置２１は、入力部２と、表示部３と、ネットリスト記録部４と、セルライブラリ記録部５と、配線遅延予想値記録部６と、タイミングチェック部２２と、ホールドタイム算出部７と、ホールドタイム最大値抽出部８と、ホールドタイム最大値換算部９と、セル配置部１０と、クロックツリーシンセシス部１１と、配線部１２と、タイミングシミュレーション部１３と、タイミングシミュレーション結果チェック部１４とを具備する。
【００４４】
タイミングチェック部２２は、ゲーテッドセルの段数及びフリップフロップのホールドタイム（ライブラリ仕様値）を用い、タイミングチェックを行う。図４は、タイミングチェック部２２の内部構成を示す図である。図４に示すように、タイミングチェック部２２は、ホールドタイム算出部２３と、ホールドタイムチェック部２４と、クロックスキュー算出部２５と、クロックスキューチェック部２６と、ネットリスト修正部２７とを具備する。
タイミングチェック部２２、ホールドタイム算出部２３、ホールドタイムチェック部２４、クロックスキュー算出部２５、クロックスキューチェック部２６、及び、ネットリスト修正部２７は、ＣＰＵとソフトウェア（プログラム）で構成することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＭＯ、ＭＴ、ＲＡＭ、ＣＤ−ＲＯＭ、又は、ＤＶＤ−ＲＯＭ等の記録媒体に記録することができる。
【００４５】
図５〜図６は、半導体集積回路の設計装置２１の半導体集積回路の設計処理を示すフローチャートである。以下、図５〜図６を参照しながら、半導体集積回路の設計装置２１の半導体集積回路設計処理について説明する。
【００４６】
まず、ユーザ（半導体集積回路の設計技術者）が、半導体集積回路の設計処理を開始することを指示する指示データを入力部２から入力すると、タイミングチェック部２２が、ゲーテッドセルの段数及びフリップフロップのホールドタイム（ライブラリ仕様値）を用い、タイミングチェックを行う（ステップＳ２０１）。図６は、タイミングチェック部２２が行うタイミングチェック処理の内容を示すフローチャートである。
【００４７】
図６の処理を開始すると、まず、タイミングチェック部２２内のホールドタイム算出部２３は、ネットリスト、セルライブラリ（特に、フリップフロップのホールドタイム（ライブラリ仕様値））、及び、配線による信号遅延の予想値を用い、設計対象であるＡＳＩＣ内の全フリップフロップについて、ホールドタイム（算出値）を算出する（ステップＳ３０１）。
次に、ホールドタイムチェック部２４は、ステップＳ３０１にて算出されたホールドタイム（算出値）を用い、動作タイミング条件が厳しい（正常動作が困難な）フリップフロップが存在するか否かをチェックし、正常動作が困難なフリップフロップが存在する場合には、処理をステップＳ３０３に移し、存在しない場合には、処理を終了する（ステップＳ３０２）。
【００４８】
ステップＳ３０２にて動作タイミング条件が厳しいフリップフロップが存在すると判断した場合、クロックスキュー算出部２５は、ゲーテッドセルの段数、ステップＳ３０１にて算出されたホールドタイム（算出値）を用い、動作タイミング条件が厳しいフリップフロップのクロックスキューを算出する（ステップＳ３０３）。
次に、クロックスキューチェック部２６は、ステップＳ３０３にて算出されたクロックスキューを用い、正常動作しないフリップフロップが存在するか否かをチェックし、正常動作しないフリップフロップが存在する場合には、処理をステップＳ３０５に移し、存在しない場合には、処理を終了する（ステップＳ３０４）。
【００４９】
ここで、クロックスキューチェック部２６が行うチェックについて、図７を参照しながら説明する。図７（ａ）は、正常に動作する回路の一例を示す図であり、図７（ｂ）は正常に動作しない回路の一例を示す図である。図７（ａ）において、フリップフロップＦＦ１の出力データ信号がフリップフロップＦＦ２の入力端に直接供給されており、フリップフロップＦＦ１の出力データ信号のクロックエッジ後保持時間が短い。しかしながら、フリップフロップＦＦ１、ＦＦ２には、１つのＡＮＤゲート回路Ａ１からクロック信号が供給されており、クロックスキューを小さく抑えることができるため、図７（ａ）に示す回路は、正常動作する。
一方、図７（ｂ）において、フリップフロップＦＦ３の出力データ信号がフリップフロップＦＦ４の入力端に直接供給されており、フリップフロップＦＦ３の出力データ信号のクロックエッジ後保持時間が短い。さらに、フリップフロップＦＦ３には、ＡＮＤゲート回路Ａ３からクロック信号が供給され、フリップフロップＦＦ４には、ＡＮＤゲート回路Ａ４からクロック信号が供給されており、クロックスキューを小さく抑えることができないため、図７（ｂ）に示す回路は、正常動作しない。
【００５０】
再び図６を参照すると、ステップＳ３０４にて正常動作しないフリップフロップが存在すると判断した場合、ネットリスト修正部２７は、ネットリストの修正（回路修正）を行い（ステップＳ３０５）、処理をステップＳ３０１に戻す。
【００５１】
再び図５を参照すると、タイミングチェック（ステップＳ２０１）の終了後、ホールドタイム算出部７が、ネットリスト、セルライブラリ（特に、フリップフロップのホールドタイム（ライブラリ仕様値））、及び、配線による信号遅延の予想値を用い、設計対象であるＡＳＩＣ内の全フリップフロップについて、ホールドタイム（算出値）を算出する（ステップＳ２０２）。
そして、ホールドタイム最大値抽出部８が、ホールドタイム算出部７によって算出された全ホールドタイム（算出値）の中の最大値（動作タイミング条件として最も厳しい値）を抽出する（ステップＳ２０３）。
【００５２】
さらに、ホールドタイム最大値換算部９が、ホールドタイム最大値抽出部８によって抽出された全ホールドタイム（算出値）の中の最大値をクロックスキュー値に換算する（ステップＳ２０４）。
そして、セル配置部１０が、ホールドタイム最大値換算部９によって算出されたクロックスキュー値、ネットリスト記録部４に記録されているネットリスト、及び、セルライブラリ記録部５に記録されているセルライブラリを用いて、セルの配置を行う（ステップＳ２０５）。
【００５３】
次に、クロックツリーシンセシス部１１が、セル配置部１０によって配置されたセルにクロック信号を供給するためのクロックツリーに対して、クロックツリーシンセシスを行う（ステップＳ２０６）。
クロックツリーシンセシスが行われた後、配線部１２が、配線を行う（ステップＳ２０７）。
【００５４】
次に、タイミングシミュレーション部１３が、タイミングシミュレーションを行う（ステップＳ２０８）。
そして、タイミングシミュレーション結果チェック部１４が、タイミングエラーが存在する（正常動作しないセルが存在する又はタイミング的に間に合わない信号が存在する）か否かをチェックし、タイミングエラーが存在する場合には、配線部１２に配線のやり直しを行わせ、タイミングエラーが存在しない場合には、処理を終了する（ステップＳ２０９）。
【００５５】
このように、半導体集積回路の設計装置２１によれば、タイミングチェック処理（図５のステップＳ２０１及び図６のステップＳ３０１〜Ｓ３０５参照）において、フリップフロップのホールドタイム（算出値）とゲーテッドセルの段数からクロックスキューを算出し、正常動作しないフリップフロップが存在する場合に、ネットリストの修正（回路修正）を行うことができる。
【００５６】
次に、本発明の第３の実施形態について説明する。図８は、本発明の第３の実施形態に係る半導体集積回路の設計装置の概要を示す図である。本実施形態は、本発明をＡＳＩＣの設計装置に適用したものである。
【００５７】
図８に示すように、この半導体集積回路の設計装置３１は、入力部２と、表示部３と、ネットリスト記録部４と、セルライブラリ記録部５と、配線遅延予想値記録部６と、ホールドタイム算出部７と、ホールドタイム最大値抽出部８と、ホールドタイム最大値換算部９と、正常動作困難フリップフロップ配置部３２と、セル配置部３３と、クロックツリーシンセシス部１１と、配線部１２と、タイミングシミュレーション部１３と、タイミングシミュレーション結果チェック部１４とを具備する。
【００５８】
正常動作困難フリップフロップ配置部３２は、正常動作が困難なフリップフロップをかためて配置し、セル配置部３３は、正常動作が困難なフリップフロップ以外のセルを配置する。図９は、正常動作困難フリップフロップ配置部３２の内部構成を示す図である。図９に示すように、正常動作困難フリップフロップ配置部３２は、ホールドタイム算出部３４と、ホールドタイムチェック部３５と、正常動作困難フリップフロップ配置処理部３６とを具備する。
正常動作困難フリップフロップ配置部３２、ホールドタイム算出部３４、ホールドタイムチェック部３５、及び、正常動作困難フリップフロップ配置処理部３６は、ＣＰＵとソフトウェア（プログラム）で構成することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＭＯ、ＭＴ、ＲＡＭ、ＣＤ−ＲＯＭ、又は、ＤＶＤ−ＲＯＭ等の記録媒体に記録することができる。
【００５９】
図１０〜図１１は、半導体集積回路の設計装置３１の半導体集積回路の設計処理を示すフローチャートである。以下、図１０〜図１１を参照しながら、半導体集積回路の設計装置３１の半導体集積回路設計処理について説明する。
【００６０】
まず、ユーザ（半導体集積回路の設計技術者）が、半導体集積回路の設計処理を開始することを指示する指示データを入力部２から入力すると、ホールドタイム算出部７が、ネットリスト、セルライブラリ（特に、フリップフロップのホールドタイム（ライブラリ仕様値））、及び、配線による信号遅延の予想値を用い、設計対象であるＡＳＩＣ内の全フリップフロップについて、ホールドタイム（算出値）を算出する（ステップＳ４０１）。
そして、ホールドタイム最大値抽出部８が、ホールドタイム算出部７によって算出された全ホールドタイム（算出値）の中の最大値（動作タイミング条件として最も厳しい値）を抽出する（ステップＳ４０２）。
【００６１】
さらに、ホールドタイム最大値換算部９が、ホールドタイム最大値抽出部８によって抽出された全ホールドタイム（算出値）の中の最大値をクロックスキュー値に換算する（ステップＳ４０３）。
次に、正常動作困難フリップフロップ配置部３２が、全フリップフロップの中から正常動作が困難なフリップフロップを抽出し、配置する（ステップＳ４０４）。図１１は、正常動作困難フリップフロップ配置部３２が行う処理の内容を示すフローチャートである。
【００６２】
図１１の処理を開始すると、まず、正常動作困難フリップフロップ配置部３２内のホールドタイム算出部３４は、ネットリスト、セルライブラリ（特に、フリップフロップのホールドタイム（ライブラリ仕様値））、及び、配線による信号遅延の予想値を用い、設計対象であるＡＳＩＣ内の全フリップフロップについて、ホールドタイム（算出値）を算出する（ステップＳ５０１）。
次に、ホールドタイムチェック部３５は、ステップＳ５０１にて算出されたホールドタイム（算出値）を用い、正常動作が困難なフリップフロップが存在するか否かをチェックし、正常動作が困難なフリップフロップが存在する場合には、処理をステップＳ５０３に移し、存在しない場合には、処理を終了する（ステップＳ５０２）。
【００６３】
ステップＳ５０２にて正常動作が困難なフリップフロップが存在すると判断した場合、正常動作困難フリップフロップ配置処理部３６は、正常動作が困難なフリップフロップをかためて配置する（ステップＳ５０３）。これにより、正常動作が困難と判断されたフリップフロップを正常動作させることができる。正常動作困難フリップフロップ配置部３２は、その後処理を終了する。
【００６４】
再び図１０を参照すると、正常動作が困難なフリップフロップの配置（ステップＳ４０４）の終了後、セル配置部３３が、正常動作困難フリップフロップ配置部３２によって配置されたフリップフロップ以外のセル（フリップフロップ、ゲーテッドセルを含む）の配置を行う（ステップＳ４０５）。
【００６５】
次に、クロックツリーシンセシス部１１が、正常動作困難フリップフロップ配置部３２及びセル配置部３３によって配置されたセルにクロック信号を供給するためのクロックツリーに対して、クロックツリーシンセシスを行う（ステップＳ４０６）。
クロックツリーシンセシスが行われた後、配線部１２が、配線を行う（ステップＳ４０７）。
【００６６】
次に、タイミングシミュレーション部１３が、タイミングシミュレーションを行う（ステップＳ４０８）。
そして、タイミングシミュレーション結果チェック部１４が、タイミングエラーが存在する（正常動作しないセルが存在する又はタイミング的に間に合わない信号が存在する）か否かをチェックし、タイミングエラーが存在する場合には、配線部１２に配線のやり直しを行わせ、タイミングエラーが存在しない場合には、処理を終了する（ステップＳ４０９）。
【００６７】
このように、半導体集積回路の設計装置３１によれば、正常動作が困難なフリップフロップをかためて配置する（図１０のステップＳ４０４及び図１１のステップＳ５０１〜Ｓ５０３参照）ことにより、正常動作が困難なフリップフロップを正常動作させることができる。
【００６８】
次に、本発明の第４の実施形態について説明する。図１２は、本発明の第４の実施形態に係る半導体集積回路の設計装置の概要を示す図である。本実施形態は、本発明をＡＳＩＣの設計装置に適用したものである。
【００６９】
図１２に示すように、この半導体集積回路の設計装置４１は、入力部２と、表示部３と、ネットリスト記録部４と、セルライブラリ記録部５と、配線遅延予想値記録部６と、タイミングチェック部２２と、ホールドタイム算出部７と、ホールドタイム最大値抽出部８と、ホールドタイム最大値換算部９と、正常動作困難フリップフロップ配置部３２と、セル配置部３３と、クロックツリーシンセシス部１１と、配線部１２と、タイミングシミュレーション部１３と、タイミングシミュレーション結果チェック部１４とを具備する。
【００７０】
図１３は、半導体集積回路の設計装置４１の半導体集積回路の設計処理を示すフローチャートである。以下、図１３を参照しながら、半導体集積回路の設計装置４１の半導体集積回路設計処理について説明する。
【００７１】
まず、ユーザ（半導体集積回路の設計技術者）が、半導体集積回路の設計処理を開始することを指示する指示データを入力部２から入力すると、タイミングチェック部２２が、ゲーテッドセルの段数及びフリップフロップのホールドタイム（ライブラリ仕様値）を用い、タイミングチェックを行う（ステップＳ６０１）。なお、このタイミングチェック処理の内容は、先に説明した半導体集積回路の設計装置２１と同様である（図６参照）。
【００７２】
ステップＳ６０１におけるタイミングチェックの終了後、ホールドタイム算出部７が、ネットリスト、セルライブラリ（特に、フリップフロップのホールドタイム（ライブラリ仕様値））、及び、配線による信号遅延の予想値を用い、設計対象であるＡＳＩＣ内の全フリップフロップについて、ホールドタイム（算出値）を算出する（ステップＳ６０２）。
そして、ホールドタイム最大値抽出部８が、ホールドタイム算出部７によって算出された全ホールドタイム（算出値）の中の最大値（動作タイミング条件として最も厳しい値）を抽出する（ステップＳ６０３）。
【００７３】
さらに、ホールドタイム最大値換算部９が、ホールドタイム最大値抽出部８によって抽出された全ホールドタイム（算出値）の中の最大値をクロックスキュー値に換算する（ステップＳ６０４）。
次に、正常動作困難フリップフロップ配置部３２が、全フリップフロップの中から正常動作が困難なフリップフロップを抽出し、配置する（ステップＳ６０５）。なお、この正常動作が困難なフリップフロップの配置処理の内容は、先に説明した半導体集積回路の設計装置３１と同様である（図１１参照）。
【００７４】
正常動作が困難なフリップフロップの配置（ステップＳ６０５）の終了後、セル配置部３３が、正常動作困難フリップフロップ配置部３２によって配置されたフリップフロップ以外のセル（フリップフロップ、ゲーテッドセルを含む）の配置を行う（ステップＳ６０６）。
次に、クロックツリーシンセシス部１１が、正常動作困難フリップフロップ配置部３２及びセル配置部３３によって配置されたセルにクロック信号を供給するためのクロックツリーに対して、クロックツリーシンセシスを行う（ステップＳ６０７）。
クロックツリーシンセシスが行われた後、配線部１２が、配線を行う（ステップＳ６０８）。
【００７５】
次に、タイミングシミュレーション部１３が、タイミングシミュレーションを行う（ステップＳ６０９）。
そして、タイミングシミュレーション結果チェック部１４が、タイミングエラーが存在する（正常動作しないセルが存在する又はタイミング的に間に合わない信号が存在する）か否かをチェックし、タイミングエラーが存在する場合には、配線部１２に配線のやり直しを行わせ、タイミングエラーが存在しない場合には、処理を終了する（ステップＳ６１０）。
【００７６】
このように、半導体集積回路の設計装置４１によれば、タイミングチェック処理（図１３のステップＳ６０１参照）において、フリップフロップのホールドタイム（算出値）とゲーテッドセルの段数からクロックスキューを算出し、正常動作しないフリップフロップが存在する場合に、ネットリストの修正（回路修正）を行うことができる。さらに、半導体集積回路の設計装置４１によれば、正常動作が困難なフリップフロップをかためて配置する（図１３のステップＳ６０５参照）ことにより、正常動作が困難なフリップフロップを正常動作させることが可能となる。
【産業上の利用可能性】
【００７７】
本発明は、半導体集積回路、半導体集積回路の設計方法及び設計装置、並びに半導体集積回路の設計プログラムにおいて利用可能である。さらに、ＡＳＩＣ、ＡＳＩＣの設計方法及び設計装置、並びにＡＳＩＣの設計プログラムにおいて利用可能である。
【図面の簡単な説明】
【００７８】
【図１】本発明の第１実施形態に係る半導体集積回路の設計装置の概要を示す図。
【図２】図１の半導体集積回路の設計装置１の動作を示すフローチャート。
【図３】本発明の第２実施形態に係る半導体集積回路の設計装置の概要を示す図。
【図４】図３のタイミングチェック部２２の内部構成を示す図。
【図５】図３の半導体集積回路の設計装置２１の動作を示すフローチャート。
【図６】図３の半導体集積回路の設計装置２１の動作を示すフローチャート。
【図７】フリップフロップを用いた回路の例を示す図。
【図８】本発明の第３実施形態に係る半導体集積回路の設計装置の概要を示す図。
【図９】図８の正常動作困難フリップフロップ配置部３２の内部構成を示す図。
【図１０】図８の半導体集積回路の設計装置３１の動作を示すフローチャート。
【図１１】図８の半導体集積回路の設計装置３１の動作を示すフローチャート。
【図１２】本発明の第４実施形態に係る半導体集積回路の設計装置の概要を示す図。
【図１３】図１２の半導体集積回路の設計装置４１の動作を示すフローチャート。
【図１４】従来の半導体集積回路の設計方法を示すフローチャート。
【図１５】フリップフロップを用いた回路及びそのタイミングチャートを示す図。
【図１６】フリップフロップを用いた回路の例を示す図。
【図１７】図１６の回路５１のタイミングチャートを示す図。
【図１８】フリップフロップを用いた回路の例を示す図。
【図１９】図１８の回路６１のタイミングチャートを示す図。
【図２０】フリップフロップを用いた回路の例を示す図。
【図２１】フリップフロップを用いた回路の例を示す図。
【符号の説明】
【００７９】
１、２１、３１、４１  半導体集積回路の設計装置、２  入力部、３  表示部、４  ネットリスト記録部、５  セルライブラリ記録部、６  配線遅延予想値記録部、７、２３、３４  ホールドタイム算出部、８  ホールドタイム最大値抽出部、９  ホールドタイム最大値換算部、１０  セル配置部、１１  クロックツリーシンセシス部、１２  配線部、１３  タイミングシミュレーション部、１４  タイミングシミュレーション結果チェック部、２２  タイミングチェック部、２４、３５  ホールドタイムチェック部、２５  クロックスキュー算出部、２６  クロックスキューチェック部、２７  ネットリスト修正部、３２  正常動作困難フリップフロップ配置部、３３  セル配置部、３６  正常動作困難フリップフロップ配置処理部、Ａ１〜Ａ４、Ａ３１、Ａ４１  ＡＮＤゲート回路、Ｂ２１、Ｂ３１、Ｂ４１〜Ｂ４５  バッファ回路、ＦＦ１〜ＦＦ５、ＦＦ１１、ＦＦ２１、ＦＦ２２、ＦＦ３１、ＦＦ３２、ＦＦ４１〜ＦＦ４３  フリップフロップ
【図１】
2005128633.tif 000003
【図２】
2005128633.tif 000004
【図３】
2005128633.tif 000005
【図４】
2005128633.tif 000006
【図５】
2005128633.tif 000007
【図６】
2005128633.tif 000008
【図７】
2005128633.tif 000009
【図８】
2005128633.tif 000010
【図９】
2005128633.tif 000011
【図１０】
2005128633.tif 000012
【図１１】
2005128633.tif 000013
【図１２】
2005128633.tif 000014
【図１３】
2005128633.tif 000015
【図１４】
2005128633.tif 000016
【図１５】
2005128633.tif 000017
【図１６】
2005128633.tif 000018
【図１７】
2005128633.tif 000019
【図１８】
2005128633.tif 000020
【図１９】
2005128633.tif 000021
【図２０】
2005128633.tif 000022
【図２１】
2005128633.tif 000023