(57)【特許請求の範囲】
【請求項１】
ホールドタイム違反を起こす可能性のある第１のパスの起点及び終点の回路素子の少なくとも一方を、特性が最適化されている修正用回路ユニットに置換した構造を有し、
前記修正用回路ユニットは、第１のパスの起点又は終点の回路素子の入力端子と出力端子とにそれぞれ遅延回路を挿入した構造であり、
かつ回路面積を最小化することにより特性が最適化されていることを特徴とした半導体集積回路。
【請求項２】
ホールドタイム違反の度合いに応じて、前記遅延回路の遅延量が異なる複数の修正用回路ユニットの内の少なくとも一つが選択使用されていることを特徴とした請求項１に記載の半導体集積回路。
【請求項３】
ホールドタイム違反を解消するための制約は与えずに、セットアップタイム違反を解消するための制約のみを与えて半導体集積回路を論理合成する第１の処理と、
半導体集積回路を構成する回路の構造と各回路間の接続情報とを解析する第２の処理と、
この第２の処理の解析結果に基づき、ホールドタイム違反を起こす可能性のある第１のパスを抽出する第３の処理と、
この第３の処理で抽出されたパスのホールドタイム違反を防止するための回路変更を行う処理であって、前記第１のパスの起点及び終点の回路素子の少なくとも一方を、前記第１のパスの起点又は終点の回路素子の入力端子と出力端子とにそれぞれ遅延回路を挿入した構造であり、かつ回路面積を最小化することにより特性が最適化されている修正用回路ユニットに置換する第４の処理と、を備えたことを特徴とする半導体集積回路の設計方法。
【請求項４】
前記修正用回路ユニットを、予めライブラリに登録しておくことを特徴とした請求項３に記載の半導体集積回路の設計方法。
【請求項５】
修正度合いの異なる複数種の修正用回路ユニットを、ライブラリに登録しておき、前記ホールドタイム違反の度合いに応じた修正用回路ユニットを選択することを特徴とした請求項３に記載の半導体集積回路の設計方法。
【請求項６】
前記修正用回路ユニットは、前記第１のパスの起点又は終点の回路素子の入力端子と出力端子とにそれぞれ遅延回路を挿入した構造で、かつ回路面積を最小化することにより特性が最適化されており、前記遅延回路の遅延量が異なる複数種の修正用回路ユニットを予めライブラリに登録しておき、前記ホールドタイム違反の度合いに応じた修正用回路ユニットを選択することを特徴とした請求項３に記載の半導体集積回路の設計方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体集積回路及びその設計方法に関するものである。
【０００２】
【従来の技術】
デジタル集積回路に分類される集積回路の総称である論理ＬＳＩの設計フローでは、仕様設計→機能設計→論理設計→回路設計→レイアウト設計の順序で各設計工程が行われる。
【０００３】
仕様設計では、論理ＬＳＩの具体的な用途，価格，目標性能，内蔵機能，従来品種との互換性といった要素について実現可能性を吟味し、要素間の整合性を考慮しつつ外部仕様としてまとめる。
【０００４】
機能設計では、まず、データの流れと制御の考え方を主要ハードウェアと共に表現した機能ブロック図を作成し、次に、機能ブロック図に基づいてハードウェア記述言語を用いて全機能を詳細に記述した詳細機能記述を作成し、続いて、詳細機能記述を機能シミュレータにかけて機能検証を行う。
【０００５】
論理設計では、機能ブロック図および詳細機能記述を具体的なハードウェアに変換してロジック図（ネットリスト）を作成する。
【０００６】
レイアウト設計では、まず、ネットリストに表現された論理をパターン設計が可能なレベルまで具体化する回路設計を行って回路図を作成し、次に、回路図に基づいてパターン設計を行ってパターン図を作成し、続いて、パターン図に基づいて、回路図を構成する各素子や素子間を接続する配線を半導体基板上に具体化するためのマスクを作成する。
【０００７】
以上の設計フローで半導体基板上に作成された実際の論理ＬＳＩにおいて、フリップフロップ等、クロックに応じて動作する回路は、セットアップタイム及びホールドタイムが満足していないと正しく動作することができない。セットアップタイムとは、一般に、クロック端子に供給されるクロック信号のトリガエッジの時点から前に信号レベルが変化しない時間が、このセットアップタイムより短ければ、動作が保証されないことを意味する時間であり、ホールドタイムとは、一般に、クロック端子に供給されるクロック信号のトリガエッジの時点から後に信号レベルが変化しない時間が、このホールドタイムより短ければ、動作が保証されないことを意味する時間である。
【０００８】
したがって、論理ＬＳＩにおいて、配線抵抗，配線容量，負荷容量などによって配線遅延が生じ、また、信号が論理ゲートを通過する際にも遅延が生じ、これら配線遅延や論理ゲートによる遅延によってデータ遅延やクロック遅延が発生すると、各フリップフロップの正常な同期動作が阻害されて、セットアップ違反やデータホールド違反等のタイミング違反が起こるおそれがある。
【０００９】
このように、データ遅延やクロック遅延や論理ゲートによる遅延が過度に発生すると、論理回路のクロック同期動作が阻害されるタイミング違反が起こり、機能設計で作成した詳細機能記述を満足しなくなるために、仕様設計で作成した外部仕様を実現できなくなる。
【００１０】
そこで、従来の回路設計方法では、論理設計において、レイアウト後に実際に生じるであろう配線遅延を予測し、その配線遅延に基づいてタイミング解析を行うことにより、タイミング違反を起こすと予測される箇所を探し出し、タイミングを満足させるように回路変更を行うことが一般的であり、そのための論理合成ソフトウェアも種々販売されている。
【００１１】
上記タイミング違反のための解析は、セットアップ違反、ホールドタイム違反共に制約が与えられ、論理合成時に、セットアップ違反及びホールドタイム違反の双方を修正したネットリストが作成される。
【００１２】
この場合、セットアップ違反を修正するには、一般的には、セットアップ違反が生じる可能性のあるデータの信号経路上の論理ゲート段数を、論理圧縮等の手法を用いて削減することにより、データの伝達時間が短くなるように調整し、この伝達時間がセットアップ違反修正に関する制約の範囲内に納まるようにする。
【００１３】
一方、ホールドタイム違反を修正するには、一般的には、ホールドタイム違反が生じる可能性のある論理接続個所を探し出し、その論理接続箇所に遅延回路（遅延セル，バッファなど）を挿入することで、フリップフロップ棟の素子間の遅延時間がホールドタイム違反修正に関する制約の範囲内に納まるようにする。
【００１４】
【発明が解決しようとする課題】
従来例にあっては、タイミング違反を起こすと予測される個所の全てにセットアップ違反又はホールドタイム違反の解消のための回路変更を行うため、予測した配線遅延や論理構造によっては実際にはタイミング違反を起こさない個所にも回路変更を行うことになる。この場合、セットアップ違反の修正のための回路変更は、上述した通り、論理ゲート段数を減らすように論理圧縮等を行うものであるので、比較的問題は生じにくいが、ホールドタイム違反の修正のための回路変更は、上述した通り、論理接続個所に新たに遅延回路を挿入するものであるので、不必要に挿入された遅延回路の分だけ論理回路数（ゲート数）が増加して回路規模が増大するため、半導体集積回路の高集積化を阻害する問題がある。
【００１５】
本発明は、斯かる問題点を解決するためになされたものであって、その目的は、ホールドタイム違反の防止と高集積化とを両立することが可能な半導体集積回路及びその設計方法を提供することにある。
【００１６】
【課題を解決するための手段】
本発明の半導体集積回路は、ホールドタイム違反を起こす可能性のある第１のパスの起点及び終点の回路素子の少なくとも一方を、特性が最適化されている修正用回路ユニットに置換した構造を有し、修正用回路ユニットは、第１のパスの起点又は終点の回路素子の入力端子と出力端子とにそれぞれ遅延回路を挿入した構造であり、かつ回路面積を最小化することにより特性が最適化されていることをその要旨とする。
【００１７】
すなわち、ホールドタイム違反を防止するための回路変更を行うために、ユニット化された修正用回路が用いられるので、精度良く修正作業が行われた半導体集積回路が構成されている。
【００１８】
また、修正用回路ユニットはユニットのセル面積を最小化しているので、面積の増加を最小限に抑えることができる。
【００１９】
また、修正用回路ユニットは、第１のパスの起点又は終点の回路素子の入力端子と出力端子とにそれぞれ遅延回路を挿入した構造であるため、１種類の修正用回路ユニットを、第１のパスの起点及び終点の回路素子の双方の置き換えに使用することができる。
【００２０】
また、ホールドタイム違反の度合いに応じて、前記遅延回路の遅延量が異なる複数の修正用回路ユニットの内の少なくとも一つが選択使用されていることが望ましい。こうすることで、ホールドタイム違反の修正のために、不必要に大きな遅延量の遅延回路を設けことが抑制されている。
【００２１】
また、本発明の半導体集積回路の設計方法は、ホールドタイム違反を解消するための制約は与えずに、セットアップタイム違反を解消するための制約のみを与えて半導体集積回路を論理合成する第１の処理と、半導体集積回路を構成する回路の構造と各回路間の接続情報とを解析する第２の処理と、この第２の処理の解析結果に基づき、ホールドタイム違反を起こす可能性のある第１のパスを抽出する第３の処理と、この第３の処理で抽出されたパスのホールドタイム違反を防止するための回路変更を行う処理であって、前記第１のパスの起点及び終点の回路素子の少なくとも一方を、第１のパスの起点又は終点の回路素子の入力端子と出力端子とにそれぞれ遅延回路を挿入した構造であり、かつ回路面積を最小化することにより特性が最適化されている修正用回路ユニットに置換する第４の処理と、を備えたことをその要旨とする。
【００２２】
すなわち、ホールドタイム違反を解消するための制約は与えずに、セットアップタイム違反を解消するための制約のみを与えて半導体集積回路を論理合成することにより、必要以上にホールドタイム違反解消のための回路変更が行われることを防止する。
【００２３】
また、ホールドタイム違反を防止するための回路変更を行うために、ユニット化された修正用回路を用いるので、修正作業を精度良く且つ楽に行うことができる。
【００２５】
この場合において、修正用回路ユニットはユニットのセル面積を最小化しているので、面積の増加を最小限に抑えることができる。
【００２６】
また、修正用回路ユニットは、第１のパスの起点又は終点の回路素子の入力端子と出力端子とにそれぞれ遅延回路を挿入した構造であるため、１種類の修正用回路ユニットを、第１のパスの起点及び終点の回路素子の双方の置き換えに使用することができる。
【００２７】
また、前記修正用回路ユニットを、予めライブラリに登録しておくことが望ましい。こうすることで、修正のための置換作業がきわめて楽になる。
【００２８】
また、以上の場合において、修正度合いの異なる複数種の修正用回路ユニットを、ライブラリに登録しておき、前記ホールドタイム違反の度合いに応じた修正用回路ユニットを選択することが望ましい。こうすることで、ホールドタイム違反の度合いに応じた最適な修正を行うことができる。
【００２９】
また、以上の場合において、前記修正用回路ユニットは、第１のパスの起点又は終点の回路素子の入力端子と出力端子とにそれぞれ遅延回路を挿入した構造であり、かつ回路面積を最小化することにより特性が最適化されており、前記遅延回路の遅延量が異なる複数種の修正用回路ユニットを予めライブラリに登録しておき、前記ホールドタイム違反の度合いに応じた修正用回路ユニットを選択する。こうすることで、ホールドタイム違反の修正のために、不必要に大きな遅延量の遅延回路を設けなくて済む。
【００３０】
【発明の実施の形態】
（第１実施形態）
以下、本発明を具体化した第１実施形態を図面と共に説明する。図１は、論理設計装置の概略構成を示すブロック図である。この設計は、マスタースライス方式のゲートアレイやスタンダードセル方式について適用される。
【００３１】
設計仕様格納部１は、記憶装置で構成され、ハードウェア記述言語（ＨＤＬ）で記述された半導体集積回路の機能及び構造に関するデータを格納している。
【００３２】
ライブラリ２は、記憶装置で構成され、半導体集積回路を構成すべき基本的な素子（論理演算子（論理積、論理和、排他的論理和、排他的論理積、否定等）やフリップフロップ回路等）及びその面積、更にはセルの遅延情報やセットアップ及びホールドタイムに関する制約情報を格納している。
【００３３】
論理合成部３は、ライブラリ２に登録された素子を用い、設計仕様格納部１に格納されたデータに基づいてゲートレベルの回路を生成し、そのネットリストをタイミング検証部４に供給する。ネットリストは、階層構造を保持しており、各機能ブロック内のネットリストと機能ブロック間のネットリストとからなる。
【００３４】
タイミング検証部４は、ネットリストに表される全ての論理回路の構造（ネット情報）と各論理回路間の全ての接続情報（ファンアウト数）とを解析する。
【００３５】
これら、設計仕様格納部１、ライブラリ２、論理合成部３及びタイミング検証部４の各動作は、フロア表示部５の画面上に表示される。
【００３６】
制御部６は、操作者からタッチペンや操作キーなどからなる入力部７を介して入力された命令を実行するように設計仕様格納部１、ライブラリ２、論理合成部３、タイミング検証部４及びフロア表示部５の各動作の動作を統轄する。
【００３７】
以上の構成において、本第１実施形態における半導体集積回路のタイミングの解析及び修正方法を、図２に示すフローチャートに従って説明する。
【００３８】
本実施形態の論理ＬＳＩの設計フローにおいても、従来と同様に、仕様設計→機能設計→論理設計の順序で各設計工程を行う。
【００３９】
まず、ステップ（以下、Ｓという）１００において、論理設計の段階で、論理合成部３は、設計仕様格納部１に格納されたデータに基づいてネットリストを作成する。この時、ホールドタイム違反に関する制約は与えずに、セットアップ違反に関する制約のみを与えて論理合成を行う。
【００４０】
すなわち、論理合成部３は、レイアウト後に実際に生じるであろう配線遅延を予測し、その配線遅延に基づいてタイミング解析を行うことにより、セットアップ違反を起こすと予測される箇所を探し出し、タイミングを満足させるようにセットアップ違反が生じる可能性のあるデータの信号経路上の論理ゲート段数を、論理圧縮等の手法を用いて削減する。
【００４１】
そして、論理合成部３は、論理設計により作成したネットリストのデータをタイミング検証部４に入力する。
【００４２】
次に、Ｓ２００において、タイミング検証部４では、ネットリストに表される全ての論理回路の構造（ネット情報）と各論理回路間の全ての接続情報とを解析する。
【００４３】
次に、Ｓ３００において、Ｓ２００における解析レポートが、論理合成部３に入力される。
【００４４】
ここで、半導体集積回路の構造には、例えば、図３（ａ）に示す基本となる回路構成がある。図３（ａ）において、フリップフロップ回路（以下、ＦＦ回路という）８，９は、組合せ論理回路１０を介して接続されている。また、ＦＦ回路８からの出力は、組み合わせ論理回路１０に入力される手前から分岐して、他のＦＦ回路１１に入力される。
【００４５】
組合せ論理回路１０は、基本的な論理演算子（論理積、論理和、排他的論理和、排他的論理積、否定など）を組合せて構成している回路（インバータ、フリップフロップ、加算器，カウンタ，乗算器，シフタ，ＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ），ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）など）である。
【００４６】
ここで、組合せ論理回路１０において、それぞれの論理ゲートの数を論理ゲート段数という。ＦＦ回路８からＦＦ回路９までの遅延時間、ＦＦ回路８からＦＦ回路１１までの遅延時間は、この論理ゲート段数（回路遅延）とメディアディレイ（配線遅延）とによって決まる。尚、ＦＦ回路８が、本発明における「始点の回路素子」に相当し、ＦＦ回路１１が、本発明における「終点の回路素子」に相当する。
【００４７】
各ＦＦ回路８，９，１１は、それぞれクロック信号ＣＫ１，ＣＫ２，ＣＫ３の立ち上がり（又は立ち下がり）によって同期をとっており、ビットデータＤ１はＦＦ回路８に、ビットデータＤ２はＦＦ回路９に、ビットデータＤ３はＦＦ回路１１に保持される。この時、ビットデータＤ２は、ＦＦ回路８のデータ出力値及び組合せ論理回路１０に従って変化し、ビットデータＤ３は、ＦＦ回路８のデータ出力に従って変化する。
【００４８】
各ＦＦ回路８，９，１１は、出力が“Ｈ”又は“Ｌ”の安定状態を持ち、出力を変化させるような入力の変化があるまでは、その状態を保持する回路であり、各データＤ１〜Ｄ３が入力される入力端子と、出力データの出力端子と、クロック信号ＣＫ１，ＣＫ２，ＣＫ３が入力されるクロック入力端子とをそれぞれ備えている。
【００４９】
尚、ＦＦ回路８，９，１１の種類には、非同期式，同期化，同期式の３種類があるが、本実施形態はいずれの種類にも適用することができる。非同期式フリップフロップとは同期動作のできないものを指す。同期化フリップフロップとは、クロック入力端子（同期入力端子）をもち、そのクロック入力端子にＨレベルのクロックが入力されているときにのみ動作するものを指す。同期式フリップフロップとは、クロック入力端子をもち、そのクロック入力端子に入力されたクロックの立ち上がりのタイミングにのみ動作するもの（ポジティブエッジトリガ形）や、クロックの立ち下がりのタイミングにのみ動作するもの（ネガティブエッジトリガ形）を指す。そして、同期式フリップフロップには、ＲＳフリップフロップ，Ｄフリップフロップ，ＪＫフリップフロップなどがある。一般に、非同期式および同期化のフリップフロップをラッチと総称し、同期式フリップフロップのことを単にフリップフロップと呼んでいる。
【００５０】
次に、図２のＳ４００において、論理合成部３は、Ｓ３００における解析レポートに基づき、予め設定しておいた条件を参照することにより、ホールドタイム違反を起こす可能性のあるパス（以下、ホールドタイムエラーパスという）を抽出する。尚、ここでは、図３（ａ）に示す回路において、ＦＦ回路８とＦＦ回路１１との間にホールドタイム違反を起こす可能性があると判断したとする。尚、このホールドタイムエラーパスが、本発明における「第１のパス」に相当する。
【００５１】
次に、Ｓ５００において、タイミング検証部４は、ホールドタイムエラーパスの始点であるＦＦ回路８と終点であるＦＦ回路１１に関し、以下のパスの抽出を行う。
【００５２】
（ａ）ＦＦ回路８を起点として最も遅延時間が発生するパス（以下、最大遅延パスＡという）。尚、ここでは、ＦＦ回路８とＦＦ回路９との間が最大遅延パスＡであるとする。
【００５３】
（ｂ）ＦＦ回路８を終点として最も遅延時間が発生するパス（以下、最大遅延パスＢという）。
【００５４】
（ｃ）ＦＦ回路１１を起点として最も遅延時間が発生するパス（以下、最大遅延パスＣという）。
【００５５】
（ｂ）ＦＦ回路１１を終点として最も遅延時間が発生するパス（以下、最大遅延パスＤという）。
【００５６】
そして、Ｓ６００において、タイミング検証部４は、最大遅延パスＡ〜Ｄにおけるセットアップ違反に対するマージン（すなわち、各最大遅延パスＡ〜Ｄにどの程度の遅延回路を挿入してもセットアップ違反が発生しないか）を算出し、フロア表示部５に表示する。
【００５７】
これにより、操作者は、各最大遅延パスＡ〜Ｄに遅延回路を挿入してもセットアップ違反が起こらないかどうか、すなわち各最大遅延パスＡ〜Ｄのタイミングマージンが充分かどうかを判別することができ、その結果、以下の通りの修正作業を行う。
【００５８】
（ケース１）最大遅延パスＡ及びＢのタイミングマージンが充分である場合
：図３（ｂ）に示す通り、予めライブラリ２に登録してある修正用ＦＦ回路ユニット１２を読み出し、ホールドタイムエラーパスの起点であるＦＦ回路８と置き換える。
【００５９】
（ケース２）最大遅延パスＡ又はＢのタイミングマージンが充分でなく、最大遅延パスＣ及びＤのタイミングマージンが充分である場合
：図３（ｃ）に示す通り、予めライブラリ２に登録してある修正用ＦＦ回路ユニット１２を読み出し、ホールドタイムエラーパスの終点であるＦＦ回路１１と置き換える。
【００６０】
（ケース３）最大遅延パスＡのみのタイミングマージンが充分である場合
：修正用ＦＦ回路ユニット１２への置き換えは行わずに、ＦＦ回路８の出力端子に別途遅延回路を挿入する。
【００６１】
（ケース４）最大遅延パスＡのタイミングマージンが充分でなく、最大遅延パスＣ又はＤのタイミングマージンも充分でない場合
：修正用ＦＦ回路ユニット１２への置き換えは行わずに、ホールドタイムエラーパス上にのみ別途遅延回路を挿入する。
【００６２】
修正作業を終了した後、Ｓ７００において、論理合成部３は、Ｓ６００で行われた回路変更に基づいてネットリストを修正し、正当性を確認する。この正当性の確認は、テストパターンを用いること無く、回路変更の正当性をカバレッジ１００％で検証するものであり、一般的にフォーマル検証と呼ばれている。
【００６３】
正当性を確認できた場合、一連の作業は終了し、再びＳ４００に戻る。
【００６４】
修正用ＦＦ回路ユニット１２は、図４に示す通り、遅延回路１３を、ＦＦ回路８（９，１１）のデータ入力端子前とデータ出力端子後とにそれぞれ接続することにより構成されており、特性が最適化（本第１実施形態にあっては、セル面積が最小化）された上で、予めセルユニットとしてライブラリ２に登録（格納）されている。したがって、上述した修正作業において、操作者は、修正を必要とするＦＦ回路８（１１）を、ライブラリ２から読み出した修正用ＦＦ回路ユニット１２に置き換えるだけで良く、修正作業がきわめて楽になる上に修正後の回路面積の増加も最小限に抑えることができる。ここで、ＦＦ回路８，９，１１は、論理合成時に異なったタイプのものを用いる場合があるので、その場合には、各ＦＦ回路のタイプに合わせた修正用ＦＦ回路ユニット１２を用意しておく必要がある。尚、修正用ＦＦ回路ユニット１２が、本発明における「修正用回路ユニット」に相当する。
【００６５】
その後は、修正したネットリストを用いて、従来と同様にレイアウト設計を行う。
【００６６】
以上詳述したように、本第１実施形態においては、以下の通りの作用効果を奏する。
【００６７】
（１−１）ホールドタイム違反に関する制約は与えずに、セットアップ違反に関する制約のみを与えて論理合成を行うので、実際にはタイミング違反を起こさない論理接続個所に不必要な遅延素子が数多く挿入されて回路規模の増大を招くことを防止できる。
【００６８】
（１−２）修正時には、ライブラリ２から読み出した修正用ＦＦ回路ユニット１２に置き換えるだけで良く、修正作業がきわめて楽になる。また、修正用ＦＦ回路ユニット１２のセル面積を予め最小化しておくことにより、修正後の回路面積の増加を自動的に最小限に抑えることができる。
（第２実施形態）
本発明を具体化した第２実施形態を以下に説明する。
【００６９】
本第２実施形態にあっては、遅延回路１３の遅延量を異ならせた複数種類の修正用ＦＦ回路ユニット１２を予めライブラリ２に登録しておく。こうすることにより、修正作業において、ホールドタイム違反を解消できるだけの必要最小限の遅延量を有する修正用ＦＦ回路ユニット１２を選択使用することができ、以下の通りの効果を奏することができる。
【００７０】
（２−１）データが不必要に遅延することを防止できる。
【００７１】
（２−２）遅延量の異なる複数の修正用ＦＦ回路ユニット１２を組み合わせて使用することで、より細かな遅延量の調整を行うことができる。
（第３実施形態）
本発明を具体化した第３実施形態を図面に基づいて説明する。本第３実施形態が第１実施形態と異なるのは、図３（ａ）に示した基本となる回路構成において、タイミングエラーパスの起点となるＦＦ回路１２がＲＡＭ等のメモリ素子に代わっている点のみであって、その他の構成及び図２に示す制御フローは同様であるので、同一構成については同じ符号を用い、その詳細な説明を省略する。
【００７２】
図５（ａ）は、本第３実施形態における基本となる回路構成を示している。同図において、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０の複数の各出力端子に、組合せ論理回路１０、ＦＦ回路９，１１、からなる図３（ａ）に示したものと同様の回路が接続されている。
【００７３】
ＲＡＭ２０は、ＦＦ回路１２と同様にクロック信号ＣＫ１の立ち上がり（又は立ち下がり）によって同期をとっている。尚、ＲＡＭ２０の種類には、非同期式，同期式の２種類があるが、本実施形態はいずれの種類にも適用することができる。尚、ＲＡＭ２０が、本発明における「起点の回路素子」に相当する。
【００７４】
このような回路構成において、本第３実施形態における半導体集積回路のタイミングの解析及び調整方法は、図２に示すフローチャートと同様である。
【００７５】
すなわち、Ｓ４００において、論理合成部３は、ＲＡＭ２０を起点としＦＦ回路１１を終点とするタイミングエラーパスを抽出する。
【００７６】
次に、Ｓ５００において、最大遅延パスＡ〜Ｄの解析を行い、続いて、Ｓ６００において、各最大遅延パスＡ〜Ｄのタイミングマージンの算出を行う。尚、本第２実施形態における最大遅延パスＡは、ＦＦ回路１２に代わってＲＡＭ２０を起点とするパスのことを意味し、最大遅延パスＢは、ＦＦ回路１２に代わってＲＡＭ２０を終点とするパスのことを意味する。
【００７７】
操作者は、フロア表示部５に表示されたタイミングマージンによって、上記第１実施形態と同様に次のケース１〜４の処理を行う。
【００７８】
（ケース１）ＲＡＭ２０の全ての入出力端子において、最大遅延パスＡ及びＢのタイミングマージンが充分である場合
：図５（ｂ）に示す通り、予めライブラリ２に登録してある修正用ＲＡＭユニット２１を読み出し、ホールドタイムエラーパスの起点であるＲＡＭ２０と置き換える。
【００７９】
（ケース２）ＲＡＭ２０の入出力端子の内、少なくとも一つにおいて、最大遅延パスＡ又はＢのタイミングマージンが充分でなく、全ての最大遅延パスＣ及びＤのタイミングマージンが充分である場合
：図５（ｃ）に示す通り、予めライブラリ２に登録してある修正用ＦＦ回路ユニット１２を読み出し、ホールドタイムエラーパスの終点であるＦＦ回路１１と置き換える。
【００８０】
（ケース３）ＲＡＭ２０の全ての入出力端子において、最大遅延パスＡのタイミングマージンが充分であり、少なくとも一つの最大遅延パスＢのタイミングマージンが充分でない場合
：修正用ＲＡＭユニット２１、修正用ＦＦ回路ユニット１２への置き換えは行わずに、ＲＡＭ２０の各出力端子に別途遅延回路を挿入する。
【００８１】
（ケース４）ＲＡＭ２０の全ての入出力端子において、少なくとも一つの最大遅延パスＡのタイミングマージンが充分でなく、全ての最大遅延パスＣ及びＤの内、少なくとも一つのパスのタイミングマージンも充分でない場合
：修正用ＲＡＭユニット２１への置き換えは行わずに、ホールドタイムエラーパス上にのみ別途遅延回路を挿入する。
【００８２】
修正作業を終了した後、Ｓ７００において、論理合成部３は、Ｓ６００で行われた回路変更に基づいてネットリストを修正し、正当性を確認する。この正当性の確認は、テストパターンを用いること無く、回路変更の正当性をカバレッジ１００％で検証するものであり、一般的にフォーマル検証と呼ばれている。
【００８３】
正当性を確認できた場合、一連の作業は終了し、再びＳ４００に戻る。
【００８４】
ここで、修正用ＲＡＭユニット２１は、図６に示す通り、遅延回路１３を、ＲＡＭ２０の全てのデータ入力端子前と全てのデータ出力端子後とにそれぞれ接続することにより構成されており、修正用ＦＦ回路ユニット１２と同様に、特性が最適化（本第２実施形態にあっては、セル面積が最小化）された上で、予めセルユニットとしてライブラリ２に登録（格納）されている。したがって、Ｓ６００の修正作業において、操作者は、修正を必要とするＲＡＭ２０を、ライブラリ２から読み出した修正用ＲＡＭユニット２１に置き換えるだけで良く、修正作業がきわめて楽になる上に修正後の回路面積の増加も最小限に抑えることができる。尚、修正用ＲＡＭユニット２１が、本発明における「修正用回路ユニット」に相当する。
【００８５】
尚、上記第２実施形態と同様に、遅延回路１３の遅延量を異ならせた複数種類の修正用ＲＡＭユニット２１を予めライブラリ２に登録しておくことにより、第２実施形態と同様の作用効果を享受することができる。
（第４実施形態）
本発明を具体化した第４実施形態を図７に基づいて説明する。本第４実施形態において、各ステップ（Ｓ１００〜Ｓ７００）毎の処理は、第１実施形態と同様であるので、その詳細な説明は省略する。
【００８６】
上記各実施形態では、上述した通り、論理合成時にセットアップ違反に関する制約のみを与えて論理合成を行っているので、セットアップ違反が生じる可能性のあるデータの信号経路上の論理ゲート段数は、タイミングを満足させるように、論理圧縮等の手法を用いて削減されている。ところが、論理合成の内容によっては、論理圧縮されていない個所が残っている場合がある。
【００８７】
そこで、本第４実施形態では、図７のフローチャートにおいて、Ｓ６００においてホールドタイム違反の修正作業を行った後、操作者は、Ｓ８００において最大遅延パスＡの論理圧縮が可能か否かを判別し、論理圧縮が可能であると判断した場合に、Ｓ９００において実際に論理圧縮作業を行なう。
【００８８】
例えば、図８（ａ）に示すように、ＦＦ回路８の出力が、ＡＮＤ回路３０の入力となり、ＡＮＤ回路３０の出力がインバータ回路３１の入力となり、インバータ回路３１の出力がＯＲ回路３２の入力となり、ＯＲ回路３１の出力が、組合せ回路１０の入力となっている場合、Ｓ８００において、ＡＮＤ回路３０のファンアウトが１であることを確認できれば、Ｓ９００において、図８（ｂ）に示すように、ＡＮＤ回路３０とインバータ回路３１とを論理圧縮してＮＡＮＤ回路３３としても、回路変更前後で論理的等価性は保たれる。
【００８９】
このように回路変更を行なうことで、最大遅延パスの遅延を削減することができるため、より高速な半導体集積回路装置を実現することができる。
【００９０】
尚、以上の各実施形態において、遅延回路１３としては、遅延セルまたはバッファを用いればよい。遅延セルは、複数個のインバータを直列に接続して構成される。バッファとしては、データの入出力に所定の遅延時間が生じる各種回路（例えば、波形整形回路、駆動回路など）があげられる。
【００９１】
また、以上の各実施形態における半導体集積回路の設計方法を実行する機能は、操作者による修正作業を除き、コンピュータシステムで実行されるプログラムとして備えることができる。このようなプログラムは、コンピュータで読みとり可能な各種記録媒体（例えば、半導体メモリ，ハードディスク，フロッピーディスク，データカード（ＩＣカード，磁気カードなど），光ディスク（ＣＤ−ＲＯＭ，ＤＶＤなど），光磁気ディスク（ＭＤなど），相変化ディスク，磁気テープなど）に記録し、必要に応じてコンピュータシステムにロードして起動することにより用いることができる。または、ＲＯＭやバックアップＲＡＭをコンピュータで読み取り可能な記録媒体として前記プログラムを記録しておき、このＲＯＭあるいはバックアップＲＡＭをコンピュータシステムに組み込んで用いてもよい。
【００９２】
ここで、以上に説明した実施形態に基づいて、特許請求の範囲の欄に記載した各請求項以外の技術的思想を以下に列挙する。
【００９３】
▲１▼前記ホールドタイム違反を起こす可能性のある第１のパスの起点の回路素子の出力が、他の第２のパスにも関係している場合、前記回路変更によって前記第２のパスにタイミング違反が生じる可能性かあるか否かを判定し、可能性が無いと判定した場合に、前記第１のパスの終点の回路素子を前記修正用回路ユニットに置換することを特徴とした請求項１に記載の半導体集積回路の設計方法。
【００９４】
▲２▼前記ホールドタイム違反を起こす可能性のある第１のパスの起点の回路素子の出力が、他の第２のパスにも関係している場合、前記回路変更によって前記第２のパスにタイミング違反が生じる可能性かあるか否かを判定し、可能性があると判定した場合に、前記第１のパスの終点の回路素子を前記修正用回路ユニットに置換することを特徴とした請求項１に記載の半導体集積回路の設計方法。
【００９５】
尚、本発明は上記実施形態に限定されるものではなく、以下のように変更してもよく、その場合でも、上記実施形態と同様の作用および効果を得ることができる。
【００９６】
（１）遅延回路１３は、それと同等の遅延を持つようにレイアウト上の変更を行なったものでも良い。例えば、遅延回路１３と同等の遅延を得るため、ＦＦ回路１２のデータ入出力端子に適当な付加容量を与えても良い。
【００９７】
（２）第３実施形態において、ＲＡＭ２０に代えて、ＲＯＭ，ＥＰＲＯＭ，ＥＥＰＲＯＭ，フラッシュメモリ等のメモリ素子を用いる。
【００９８】
（３）上記各実施形態では、論理設計により作成したネットリストに対して回路変更を行うことにより当該ネットリストのデータを修正し、その修正したネットリストを用いて従来通りにレイアウト設計を行っている。
【００９９】
しかし、ネットリストに対して回路変更を行うことにより当該ネットリストを修正するのではなく、レイアウト設計において回路変更を行うようにしてもよい。例えば、レイアウト設計において、従来通りに作成した回路図中に遅延回路を挿入するように回路変更して回路図のデータを修正し、その修正した回路図を用いて従来通りにパターン設計を行うようにしてもよい。また、レイアウト設計において、従来通りに作成したパターン図中に遅延回路を挿入するように回路変更してパターン図のデータを修正し、その修正したパターン図を用いて従来通りにマスクを作成してもよい。つまり、本発明は、論理設計およびレイアウト設計のどの段階で実施してもよい。
【０１００】
（４）上記実施形態では、説明の簡単化のためにクロックＣＫ１〜ＣＫ３が外部端子に入力されるとしたが、クロックＣＫ２〜ＣＫ３はクロックＣＫ１を半導体集積回路内で分周したものであってもよい。
【０１０１】
【発明の効果】
本発明にあっては、ホールドタイム違反の修正精度が高く且つ回路規模の増大が抑制された半導体集積回路を提供することができる。
【０１０２】
また、本発明にあっては、ホールドタイム違反の修正を精度良く行うと共に回路規模の増大を抑制することができる半導体集積回路の設計方法を提供することができる。
【図面の簡単な説明】
【図１】本発明を具体化した第１〜第４実施形態の論理設計装置を示すブロック図である。
【図２】本発明を具体化した第１〜第３実施形態の動作を説明するためのフローチャートである。
【図３】第１実施形態における基本回路構成図を示し、同図（ａ）は基本回路図、同図（ｂ）（ｃ）はそれぞれ回路変更後の基本回路図である。
【図４】第１実施形態における修正用ＦＦ回路ユニットの構成図である。
【図５】第３実施形態における基本回路構成図を示し、同図（ａ）は基本回路図、同図（ｂ）（ｃ）は回路変更後の基本回路図である。
【図６】第３実施形態における修正用ＲＡＭユニットの構成図である。
【図７】本発明を具体化した第４実施形態の動作を説明するためのフローチャートである。
【図８】第４実施形態における基本回路構成図を示し、同図（ａ）は基本回路図、同図（ｂ）は回路変更後の基本回路図である。
【符号の説明】
１  仕様設計格納部
２  ライブラリ
３  論理合成部
４  タイミング検証部
５  フロア表示部
６  制御部
８，９，１１  ＦＦ回路
１０  組み合わせ論理回路
１２  修正用ＦＦ回路ユニット
１３  遅延回路
２０  ＲＡＭ
２１  修正用ＲＡＭユニット
【図１】
0003561661.tif 000002
【図２】
0003561661.tif 000003
【図３】
0003561661.tif 000004
【図４】
0003561661.tif 000005
【図５】
0003561661.tif 000006
【図６】
0003561661.tif 000007
【図７】
0003561661.tif 000008
【図８】
0003561661.tif 000009