(57)【要約】  フリップフロップ回路を含む半導体集積回路を設計する装置であって、前記フリップフロップ回路の入力および出力ノードの値を含むタイミング解析データに応じてホールドエラーを検出すると共に、ホールドエラーが発生したノードを特定するタイミング解析部と、前記タイミング解析部による解析結果に基づいて、ホールドエラー部に立下りＦＦ又はバッファの挿入を決定する立下りＦＦ・バッファ挿入決定部と、前記立下りＦＦ・バッファ挿入決定部による立下りＦＦ挿入位置データに基づいて、立下りＦＦを挿入するように位置決定されたホールドエラー部に立下りＦＦを挿入し、この挿入された立下りＦＦにクロック線を接続する立下りＦＦ挿入部と、前記立下りＦＦ・バッファ挿入決定部によるバッファ挿入位置データに基づいて、立下りＦＦを挿入するように位置決定されたホールドエラー部にバッファを挿入するバッファ挿入部とを具備する。
2010101029.tif 000002
【特許請求の範囲】
【請求項１】
フリップフロップ回路を含む半導体集積回路を設計する装置であって、
前記フリップフロップ回路の入力および出力ノードの値を含むタイミング解析データに応じてホールドエラーを検出すると共に、前記ホールドエラーが発生したノードを特定するタイミング解析部と、
前記タイミング解析部による解析結果に基づいて、前記ホールドエラー部に立下りＦＦ又はバッファの挿入を決定する立下りＦＦ・バッファ挿入決定部と、
前記立下りＦＦ・バッファ挿入決定部による立下りＦＦ挿入位置データに基づいて、立下りＦＦを挿入するように位置決定された前記ホールドエラー部に立下りＦＦを挿入し、この挿入された立下りＦＦにクロック線を接続する立下りＦＦ挿入部と、
前記立下りＦＦ・バッファ挿入決定部によるバッファ挿入位置データに基づいて、バッファを挿入するように位置決定された前記ホールドエラー部にバッファを挿入するバッファ挿入部
とを具備することを特徴とする半導体集積回路設計装置。
【請求項２】
半導体集積回路設計データが格納されたデータベースを更に具備し、
前記タイミング解析部は、前記半導体集積回路設計データを基にしてホールドエラーを検出すると共に、前記ホールドエラーが発生したノードを特定する部であり、
前記立下りＦＦ挿入部は、前記半導体集積回路設計データと前記立下りＦＦ・バッファ挿入決定部による立下りＦＦ挿入位置データとを基にして前記ホールドエラー部に立下りＦＦを挿入し、この挿入された立下りＦＦにクロック線を接続する部であり、
前記バッファ挿入部は、前記半導体集積回路設計データと前記立下りＦＦ・バッファ挿入決定部によるバッファ挿入位置データとを基にして前記ホールドエラー部にバッファを挿入する部である
ことを特徴とする請求項１の半導体集積回路設計装置。
【請求項３】
前記立下りＦＦ・バッファ挿入決定部は、全てのホールドエラー部がクロック周期の半分の遅延を挿入してもセットアップエラーを発生するか否を基準にして、立下りＦＦを挿入するかバッファを挿入するかを決定する部である
ことを特徴とする請求項１の半導体集積回路設計装置。
【請求項４】
ホールドエラーの対策が施されたフリップフロップ回路を含む半導体集積回路を設計する方法であって、
タイミング解析部が、半導体集積回路設計データを基にして、ホールドエラーを検出すると共に、前記ホールドエラーが発生したノードを特定する解析工程と、
立下りＦＦ・バッファ挿入決定部が、前記タイミング解析工程による解析結果に基づいて、前記ホールドエラー部に立下りＦＦ又はバッファの挿入を決定する立下りＦＦ・バッファ挿入決定工程と、
立下りＦＦ挿入部が、前記立下りＦＦ・バッファ挿入決定工程による立下りＦＦ挿入位置データに基づいて、立下りＦＦを挿入するように位置決定された前記ホールドエラー部に立下りＦＦを挿入し、この挿入された立下りＦＦにクロック線を接続する立下りＦＦ挿入工程と、
バッファ挿入部が、前記立下りＦＦ・バッファ挿入決定工程によるバッファ挿入位置データに基づいて、バッファを挿入するように位置決定された前記ホールドエラー部にバッファを挿入するバッファ挿入工程
とを具備することを特徴とする半導体集積回路設計方法。
【請求項５】
フリップフロップ回路を含む半導体集積回路をコンピュータに設計させるプログラムであって、
前記プログラムは、コンピュータを、
前記フリップフロップ回路の入力および出力ノードの値を含むタイミング解析データに応じてホールドエラーを検出すると共に、前記ホールドエラーが発生したノードを特定するタイミング解析部、
前記タイミング解析部による解析結果に基づいて、前記ホールドエラー部に立下りＦＦ又はバッファの挿入を決定する立下りＦＦ・バッファ挿入決定部、
前記立下りＦＦ・バッファ挿入決定部による立下りＦＦ挿入位置データに基づいて、立下りＦＦを挿入するように位置決定された前記ホールドエラー部に立下りＦＦを挿入し、この挿入された立下りＦＦにクロック線を接続する立下りＦＦ挿入部、
前記立下りＦＦ・バッファ挿入決定部によるバッファ挿入位置データに基づいて、バッファを挿入するように位置決定された前記ホールドエラー部にバッファを挿入するバッファ挿入部
として機能させる
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体集積回路の設計技術に関する。
【背景技術】
【０００２】
同期式半導体集積回路は、一般に、回路中のフリップフロップ回路がクロックに同期する方式で実現される。この同期式半導体集積回路においては、回路中のフリップフロップ回路間の伝播遅延時間の最長値が、同期されるクロックの周波数を決定する。フリップフロップ回路間の伝播遅延は短ければ短いほど良いものでは無い。すなわち、フリップフロップ回路がデータを読み取れるようになるまでの時間や、伝播信号で接続された2個のフリップフロップ回路間に供給されるクロックの時間差などの影響で、個別のフリップフロップ回路間に規定される所定時間（或る時間以上の時間）の伝播遅延が必要で有る。例えば、伝播信号で接続されたフリップフロップ回路間に前記所定時間の遅延が無いと、前のクロックの信号をフリップフロップ回路がデータとして取り込んでしまう。この結果、誤動作が発生する。このような誤動作はホールドエラーと呼ばれる。このホールドエラーを防止する為の技術が提案（特許文献１〜８、非特許文献１）されている。【０００３】
前記非特許文献１の半導体集積回路設計システムは、半導体集積回路データと、回路遅延測定システムと、遅延バッファ挿入判断システムと、遅延バッファ挿入システムとを具備する。このシステムにあっては、回路遅延測定システムが、先ず、信号が伝播するフリップフロップ回路対の遅延を測定する。次に、遅延バッファ挿入判断システムが、前記測定結果を用いて、ホールドエラーが発生する可能性が有る部位を判断する。そして、遅延バッファ挿入システムが、ホールドエラーが発生しないように遅延を生じさせる遅延バッファを挿入する。例えば、遅延を生じさせる回路素子なしに2個のフリップフロップ回路間が直結されていてホールドエラーの発生が予想される場合は、本半導体集積回路設計システムによって、遅延ゲートが挿入される。これによりホールドエラーが解消される（図９参照）。【０００４】
特許文献１の半導体集積回路設計システムは、半導体集積回路データと、回路遅延測定システムと、ラッチ回路挿入判断システムと、ラッチ回路挿入システムとを具備する。このシステムにあっては、回路遅延測定システムが、先ず、信号が伝播するフリップフロップ回路対の遅延を測定する。次に、ラッチ回路挿入判断システムが、前記測定結果を用いて、ホールドエラーが発生する可能性が有る部位を判断する。そして、ラッチ回路挿入システムが、クロックの半周期は信号の伝達を阻止し、クロックの半周期は信号の伝達を許すラッチ回路を挿入する。その結果、クロックの半周期の遅延がホールドエラー信号線に与えられる。例えば、遅延を生じさせる回路素子なしに2個のフリップフロップ回路間が直結されていてホールドエラーの発生が予想される場合は、本半導体集積回路設計システムによって、ラッチ回路が挿入される。これによりクロック周期の半分の遅延が挿入される。この結果、ホードエラーが解消される（図９，１０参照）。【０００５】
特許文献２には、ラッチ回路を使った設計手法が提案されている。但し、一般的なフリップフロップベースの同期回路で適用される設計手法の適用が非常に困難で有る。【０００６】
特許文献３には、「いずれの条件下でのフリップフロップ回路もラッチ回路へ分割することが可能な場合には、前段のパスの遅延と後段のパスの遅延などの条件によって決定する。」の記載が有る。又、「パイプラインのフリップフロップ回路設計において、クロック周期を所定値長くして論理回路を配置し、クロック周期の目標値に対してエラーを生じるエラーパスに関連するフリップフロップ回路をラッチ回路で置換して論理回路を再配置しており、論理パスの許容最大論理遅延時間を長くすることができ、パイプライン設計を容易に行なうことができる。」の記載も有る。【０００７】
特許文献４には、「本実施の形態の信号配線の接続システムは、半導体装置の論理設計データを格納した論理設計データ記憶部と、信号配線のタイミングを解析して新しいビア接続配線パターンを作成するプログラムなどを格納したプログラム格納部と、論理素子の配置および配線経路情報を格納する配置配線情報記憶部と、信号配線の信号伝播遅延時間に関するタイミング解析情報を格納するタイミング情報記憶部と、異なる配線層にそれぞれ形成され、且つビアを通して互いに接続する信号配線に関するビア情報を格納するビア情報記憶部と、一連の信号配線の接続処理を実行するための手段を備えた処理制御部と、入出力制御部を介して処理結果を出力する出力装置と、処理制御部への指示等を入力する入力装置とで構成されている。」の記載が有る。又、「論理素子間のタイミング制御に十分な信号伝播遅延時間が得られる信号配線の接続方法、該信号配線の接続システムを提供することができる。」の記載も有る。【０００８】
特許文献５には、「階層設計において、複数の設計階層のそれぞれに対応して設けられ、配線形態に関するネットリスト情報を有する複数のタイミング情報データベースから回路の機能に関するブロック情報を入力され、回路の遅延要素により生じる遅延値を配分して得るタイミング配分値を出力し得る複数のタイミング配分作成部と、複数のタイミング配分作成部のそれぞれの間の接続を動的に変更するとともに、複数のタイミング配分作成部のそれぞれの間とタイミング配分値に関する修正情報を送受信する階層間連携マネージャとを備えて構成されている。」の記載が有る。又、「タイミング仕様が変更されたときに、その影響範囲を即座に参照でき、仕様変更の参照ミスがなくなる。また、仮配線と実配線との組み合わせにより、フロアプランの実行速度向上と精度の向上の両立が図れる。さらに、階層エンティティを用いることができ分散設計環境が構築でき、トップダウン設計において、必要部分のみ詳細化でき、一つの設計チームにおいて、試行検討で分割されたタイミング仕様の良否を検討でき、インプリメント時の問題を予測でき、手戻りを削減できる。」の記載も有る。【０００９】
特許文献６には、「遅延最適化部では、前記最小遅延制約に違反した信号経路にレベルラッチ回路を挿入するステップを備え、この挿入するステップは、前記順序同期回路に含まれる出力端毎に最小遅延制約に違反した信号経路の重複度を計算するステップと、この重複度が大きい信号経路から順に前記順序同期回路のＬＳＩレイアウトパターン面積が最小となるように前記レベルラッチ回路を挿入するステップとを備えたところに有る。」の記載が有る。又、「最大遅延時間に影響を与えることがないため、計算処理時間を短縮することができる。また、順序同期回路のＬＳＩレイアウトパターン面積増加を低減させることができる。」の記載も有る。【００１０】
特許文献７には、「クロック信号及びデータ信号が入力されるフリップフロップ構成手段と、前記フリップフロップ構成手段の出力信号及び前記クロック信号が入力されるラッチ構成手段と、前記フリップフロップ構成手段からの信号を出力する第１出力端子、及び前記ラッチ構成手段からの信号を出力する第２出力端子とを備えたフリップフロップ機能素子のパターンデータを用いて、半導体集積回路を設計する方法であって、前記第１出力端子を用いてデータパスを形成して回路を設計する段階と、前記データパスの後段素子におけるホールドタイムの検査を行なう段階と、前記検査においてホールドタイム違反を起こす可能性がある場合には、前記後段素子を前記第１出力端子に代えて前記第２出力端子に接続する段階を実行することを特徴とする半導体集積回路設計方法。」「クロック信号及びデータ信号が入力されるフリップフロップ構成手段と、前記フリップフロップ構成手段の出力信号及び前記クロック信号が入力されるラッチ構成手段と、前記フリップフロップ構成手段からの信号を出力する第１出力端子、及び前記ラッチ構成手段からの信号を出力する第２出力端子とを備えたフリップフロップ機能素子のパターンデータを用いて、半導体集積回路の設計装置であって、前記第１出力端子を用いてデータパスを形成して回路を設計する設計処理手段と、前記データパスの後段素子におけるホールドタイムの検査を行なうホールドタイム検査手段と、前記検査においてホールドタイム違反を起こす可能性がある場合には、前記後段素子を前記第１出力端子に代えて前記第２出力端子に接続するデータパス修正手段とを備えたことを特徴とする半導体集積回路設計装置。」の記載が有る。【００１１】
特許文献８には、「ホールド・エラー・パス上にホールド・エラー解消の為のバッファの配置スペースが無い場合、バッファの配置スペースは有るが、セットアップ・エラーを招いてしまう場合、他のセルの移動や配線の二重化や配線経路の変更により、新たに遅延エラーを発生させないバッファ挿入ポイントの探索を可能にし、ＥＣＯレイアウトの繰り返しを回避できるようにした半導体集積回路のレイアウト設計方法の提供」を目的として、「半導体集積回路のネットリストに基づいて、初期配置・配線手段により初期配置・配線を行い、レイアウト情報を作成する工程と、前記レイアウト情報に基づいて、ＲＣ抽出・遅延計算・静的タイミング解析手段により配線抵抗および配線容量の抽出と遅延計算と静的タイミング解析とを行い、配線抵抗・配線容量情報およびホールド・エラー・パス／スラック情報を作成する工程と、前記ホールド・エラー・パス／スラック情報に基づいて、ホールド・エラー有無判定手段によりホールド・エラー有無の判定を行い、ホールド・エラーがある場合、前記レイアウト情報および前記ホールド・エラー・パス／スラック情報に基づいて、ペナルティ情報作成手段によりホールド・エラー解消のためのバッファの挿入ポイントの探索に必要なペナルティ情報を作成する工程と、前記ペナルティ情報に基づいて、バッファ挿入ポイント探索・決定・遅延調整手段により前記挿入ポイントの探索および決定と遅延調整を行う工程を有することを特徴とする半導体集積回路のレイアウト設計方法。」の記載が有る。しかしながら、特許文献８には、フリップフロップ回路についての記載は無い。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特許登録第２６７７２５６号公報
【特許文献２】特開２００５−２７７９０９号公報
【特許文献３】特開２００３−２３４６４３号公報
【特許文献４】特開２００５−２６３９０号公報
【特許文献５】特開２００７−１８８５１７号公報
【特許文献６】特開平０９−００８１４３号公報
【特許文献７】特開２００７−１４２０９４号公報
【特許文献８】特開２００８−２１７６４２号公報
【非特許文献】
【００１３】
【非特許文献１】ＶＬＳＩシステム設計 回路と実装の基礎、中澤喜三郎、中村宏監訳、丸善株式会社、３５６〜３５８頁
【発明の概要】
【発明が解決しようとする課題】
【００１４】
前記特許文献１〜特許文献８、及び前記非特許文献１は、次の二つの問題点の具体的な解決手法を示していない。【００１５】
第１の問題点は、ホールドエラーを発生している半導体集積回路に対して遅延ゲートを挿入することによってホールドエラーを解消させる設計手法は、面積の大幅な増大を招くことである。遅延を故意に発生させる遅延ゲートは、遅延を故意に発生させる為に、通常のゲート回路素子を積み重ねて作成する。従って、大きな面積を必要とする。この傾向は、将来の超微細プロセスでは更に大きくなると予想される。現状のプロセスレベルでも、ホールドエラーを解消する為、回路面積が２倍程度まで大きくなる。特に、2個のフリップフロップが直結の場合、比較的大きな値のホールドエラーを解消させる為には、多数の遅延を発生（即ち、多大な面積を必要とするようなゲートを挿入）させる必要が有る。将来の微細プロセスによってトランジスタが高速化すると、更なる巨大な面積を持つ遅延ゲートを挿入する必要が有る。【００１６】
ところで、半導体集積回路に対してラッチ素子を挿入する手法（上記特許文献参照）は、２個のフリップ間のホールドエラーを解消する場合が多い。しかしながら、ラッチ素子挿入の手法は第２の問題点を引き起こす。すなわち、挿入されたラッチ回路自体に供給されるクロックのタイミングが合ってなければ、正しいタイミングで遅延値を挿入できないと言うことである。そして、挿入されるラッチ素子のクロックタイミング制御が困難である。【００１７】
従って、本発明が解決しようとする課題は、半導体集積回路に対して、フリップフロップ回路間の伝播信号に関して、比較的大きな遅延挿入値を必要とする場合、又は比較的大きな遅延挿入を行っても遅延値が大き過ぎることによるエラー（セットアップエラー）を起こさないような場合、ホールドエラーを解消する為に必要な面積増加が小さく、かつ、制御が容易な設計装置（設計システム）を提供供することである。
【課題を解決するための手段】
【００１８】
前記課題は、
フリップフロップ回路を含む半導体集積回路を設計する装置であって、
前記フリップフロップ回路の入力および出力ノードの値を含むタイミング解析データに応じてホールドエラーを検出すると共に、前記ホールドエラーが発生したノードを特定するタイミング解析部と、
前記タイミング解析部による解析結果に基づいて、前記ホールドエラー部に立下りＦＦ又はバッファの挿入を決定する立下りＦＦ・バッファ挿入決定部と、
前記立下りＦＦ・バッファ挿入決定部による立下りＦＦ挿入位置データに基づいて、立下りＦＦを挿入するように位置決定された前記ホールドエラー部に立下りＦＦを挿入し、この挿入された立下りＦＦにクロック線を接続する立下りＦＦ挿入部と、
前記立下りＦＦ・バッファ挿入決定部によるバッファ挿入位置データに基づいて、バッファを挿入するように位置決定された前記ホールドエラー部にバッファを挿入するバッファ挿入部
とを具備することを特徴とする半導体集積回路設計装置によって解決される。【００１９】
前記課題は、
ホールドエラーの対策が施されたフリップフロップ回路を含む半導体集積回路を設計する方法であって、
タイミング解析部が、半導体集積回路設計データを基にして、ホールドエラーを検出すると共に、前記ホールドエラーが発生したノードを特定する解析工程と、
立下りＦＦ・バッファ挿入決定部が、前記タイミング解析工程による解析結果に基づいて、前記ホールドエラー部に立下りＦＦ又はバッファの挿入を決定する立下りＦＦ・バッファ挿入決定工程と、
立下りＦＦ挿入部が、前記立下りＦＦ・バッファ挿入決定工程による立下りＦＦ挿入位置データに基づいて、立下りＦＦを挿入するように位置決定された前記ホールドエラー部に立下りＦＦを挿入し、この挿入された立下りＦＦにクロック線を接続する立下りＦＦ挿入工程と、
バッファ挿入部が、前記立下りＦＦ・バッファ挿入決定工程によるバッファ挿入位置データに基づいて、バッファを挿入するように位置決定された前記ホールドエラー部にバッファを挿入するバッファ挿入工程
とを具備することを特徴とする半導体集積回路設計方法によって解決される。【００２０】
前記課題は、
フリップフロップ回路を含む半導体集積回路をコンピュータに設計させるプログラムであって、
前記プログラムは、コンピュータを、
前記フリップフロップ回路の入力および出力ノードの値を含むタイミング解析データに応じてホールドエラーを検出すると共に、前記ホールドエラーが発生したノードを特定するタイミング解析部、
前記タイミング解析部による解析結果に基づいて、前記ホールドエラー部に立下りＦＦ又はバッファの挿入を決定する立下りＦＦ・バッファ挿入決定部、
前記立下りＦＦ・バッファ挿入決定部による立下りＦＦ挿入位置データに基づいて、立下りＦＦを挿入するように位置決定された前記ホールドエラー部に立下りＦＦを挿入し、この挿入された立下りＦＦにクロック線を接続する立下りＦＦ挿入部、
前記立下りＦＦ・バッファ挿入決定部によるバッファ挿入位置データに基づいて、バッファを挿入するように位置決定された前記ホールドエラー部にバッファを挿入するバッファ挿入部
として機能させる
ことを特徴とするプログラムによって解決される。
【発明の効果】
【００２１】
フリップフロップ回路間の伝播信号に関して、個別に設定される遅延値よりも小さな遅延値となっている信号線に発生するホールドエラーが解消される。このホールドエラー解消に必要な面積の増加は少ない。大きな遅延の挿入に際して、挿入素子に対するクロック信号の到着時刻の制御が容易である。
【図面の簡単な説明】
【００２２】
【図１】本発明になる一実施形態の半導体集積回路設計装置の概略図
【図２】図１の半導体集積回路設計装置をコンピュータで実施する際の概略図
【図３】本発明になる一実施形態の半導体集積回路設計方法のフローチャート
【図４】立下りＦＦ挿入部のフローチャート
【図５】バッファ挿入部のフローチャート
【図６】立下りＦＦ挿入の一例を表す説明図
【図７】立下りＦＦ挿入のタイミング図
【図８】バッファ挿入の一例を表す説明図
【図９】従来のホールドエラー対策の説明図
【図１０】従来のホールドエラー対策（ラッチ挿入の場合）のタイミング図
【発明を実施するための形態】
【００２３】
本発明になる半導体集積回路設計装置は、フリップフロップ回路を含む半導体集積回路を設計する装置である。前記装置はタイミング解析部を有する。前記タイミング解析部は、前記フリップフロップ回路の入力および出力ノードの値を含むタイミング解析データに応じてホールドエラーを検出すると共に、前記ホールドエラーが発生したノードを特定する。前記タイミング解析部は、好ましくは、前記フリップフロップ回路の入力および出力ノードの値を含むタイミング解析データと、前記フリップフロップに供給されるクロックの到着時刻に応じてホールドエラーを検出すると共に、前記ホールドエラーが発生したフリップフロップ間ノードを特定する。前記タイミング解析部は、好ましくは、半導体集積回路設計データを基にしてホールドエラーを検出すると共に、前記ホールドエラーが発生したノードを特定する。前記装置は立下りＦＦ・バッファ挿入決定部を有する。前記立下りＦＦ・バッファ挿入決定部は、前記タイミング解析部による解析結果に基づいて、ホールドエラー部に立下りＦＦ又はバッファの挿入を決定する。前記立下りＦＦ・バッファ挿入決定部は、好ましくは、全てのホールドエラー部がクロック周期の半分の遅延を挿入してもセットアップエラーを発生するか否を基準にして、立下りＦＦを挿入するかバッファを挿入するかを決定する。前記装置は立下りＦＦ挿入部を有する。前記立下りＦＦ挿入部は、前記立下りＦＦ・バッファ挿入決定部による立下りＦＦ挿入位置データに基づいて、立下りＦＦを挿入するように位置決定された前記ホールドエラー部に立下りＦＦを挿入し、この挿入された立下りＦＦにクロック線を接続する。前記立下りＦＦ挿入部は、好ましくは、前記半導体集積回路設計データと前記立下りＦＦ・バッファ挿入決定部による立下りＦＦ挿入位置データとを基にして、前記ホールドエラー部に立下りＦＦを挿入し、この挿入された立下りＦＦにクロック線を接続する。前記装置はバッファ挿入部を有する。前記バッファ挿入部は、前記立下りＦＦ・バッファ挿入決定部によるバッファ挿入位置データに基づいて、バッファを挿入するように位置決定された前記ホールドエラー部にバッファを挿入する。前記バッファ挿入部は、好ましくは、前記半導体集積回路設計データと前記立下りＦＦ・バッファ挿入決定部によるバッファ挿入位置データとを基にして、前記ホールドエラー部にバッファを挿入する。前記装置は、好ましくは、半導体集積回路設計データが格納されたデータベースを更に有する。
【００２４】
本発明になる半導体集積回路設計方法は、ホールドエラーの対策が施されたフリップフロップ回路を含む半導体集積回路を設計する方法である。前記方法は解析工程を有する。前記解析工程は、タイミング解析部が、半導体集積回路設計データを基にして、ホールドエラーを検出すると共に、前記ホールドエラーが発生したノードを特定する工程である。前記解析工程は、好ましくは、タイミング解析部が、前記フリップフロップ回路の入力および出力ノードの値、各フリップフロップに供給されるクロックの到着時刻を含むタイミング解析データに応じてホールドエラーを検出すると共に、前記ホールドエラーが発生したフリップフロップ間ノードを特定する工程である。前記方法は立下りＦＦ・バッファ挿入決定工程を有する。前記立下りＦＦ・バッファ挿入決定工程は、立下りＦＦ・バッファ挿入決定部が、前記解析工程による解析結果に基づいて、前記ホールドエラー部に立下りＦＦ又はバッファの挿入を決定する工程である。前記方法は立下りＦＦ挿入工程を有する。前記立下りＦＦ挿入工程は、立下りＦＦ挿入部が、前記立下りＦＦ・バッファ挿入決定工程による立下りＦＦ挿入位置データに基づいて、立下りＦＦを挿入するように位置決定された前記ホールドエラー部に立下りＦＦを挿入し、この挿入された立下りＦＦにクロック線を接続する工程である。前記方法はバッファ挿入工程を有する。前記バッファ挿入工程は、バッファ挿入部が、前記立下りＦＦ・バッファ挿入決定工程によるバッファ挿入位置データに基づいて、バッファを挿入するように位置決定された前記ホールドエラー部にバッファを挿入する工程である。前記方法は、好ましくは、前記本発明の半導体集積回路設計装置が行う方法である。
【００２５】
本発明になる半導体集積回路設計プログラムは、フリップフロップ回路を含む半導体集積回路をコンピュータに設計させるプログラムである。本プログラムは、コンピュータを、前記タイミング解析部、前記立下りＦＦ・バッファ挿入決定部、前記立下りＦＦ挿入部、前記バッファ挿入部として機能させるプログラムである。或いは、コンピュータに前記方法を実施させるプログラムである。前記プログラムは記憶媒体に書き込まれている。
【００２６】
本発明は、ホールドエラーの解消に大きな効果を奏する。例えば、ホールドエラー解消に必要な面積増加が少ない。大きな遅延の挿入に際して、挿入素子に対するクロック信号の到着時刻の制御が容易である。
【００２７】
例えば、立下りフリップフロップを挿入する本発明は、単純に回路素子を挿入する遅延ゲート挿入法や、ラッチ回路挿入法と比較して、クロック周期の半分と言う比較的大きな遅延を1個のフリップフロップと言う小さな面積で実現できる。特に、将来、微細化して容量の増大する配線と、微細化により動作速度が向上する回路素子とを原因とするタイミング不一致の問題の調整を図る為、遅延ゲートを用いる場合、クロック周期の半分程度の遅延を挿入しようとすると、数十個のバッファが必要である。このことを鑑みると、本発明の手法は、非常に小さい面積で対応できる。小面積で済むことから、消費電力も少なくて済む。
【００２８】
本発明は、立下りデータをラッチするフリップフロップを挿入する。この為、挿入素子自体のクロック到着時刻のズレの調整が無くても済む。すなわち、クロックの立下りはクロック周期の半周期で行われる。この為、このクロック立下りの到着時刻が多少ずれても、正しくクロックの半周期の遅延を挿入箇所に与えることが出来る。理論上、全くズレが無い理想的な状態と比較して、クロック周期の半分以上のクロック到着時刻の早着が発生しない限り、ラッチ挿入の場合に起きるズレによる破綻が発生しない。
【００２９】
立下りデータをラッチするフリップフロップを挿入する為、この挿入する立下りフリップフロップに関しては、良品選抜の為のテストを考慮する必要が無い。例えば、この立下りフリップフロップは遅延挿入の目的のみに利用される。この為、外部からスキャンによって値を与えてテストを行う必要が無い。
【００３０】
以下本発明について更に詳しく説明する。
【００３１】
尚、本発明は、下記の実施の形態に限定されず、本発明の技術思想の範囲内において、適宜、変更される。
【００３２】
［第１実施形態］
図１は本発明になる一実施形態の半導体集積回路設計装置の概略図である。
【００３３】
本実施形態の半導体集積回路設計装置（半導体集積回路の設計支援システム）は、機能ブロック１０２と、機能ブロック１０４と、機能ブロック１０６と、機能ブロック１０７とを有する。又、機能ブロック１０２，１０４，１０６，１０７と関連するデータベース（メモリ）１０１，１０３，１０５，１０８を有する。
【００３４】
機能ブロック１０２はタイミング解析部である。機能ブロック１０４は立下りＦＦ・バッファ挿入決定部である。機能ブロック１０６は立下りＦＦ挿入部である。機能ブロック１０７はバッファ挿入部である。
【００３５】
データベース１０１は半導体集積回路設計データベースである。データベース１０１に格納されているデータは、タイミング解析部１０２、立下りＦＦ挿入部１０６、及びバッファ挿入部１０７に出力されるデータである。データベース１０３はタイミング解析データベースである。データベース１０３に格納されているデータは、タイミング解析部１０２から出力されたデータである。データベース１０３に格納されているデータは、立下りＦＦ・バッファ挿入決定部１０４に出力されるデータである。データベース１０５は立下りＦＦ・バッファ挿入位置データベースである。データベース１０５に格納されているデータは、立下りＦＦ・バッファ挿入決定部１０４から出力されたデータである。データベース１０５に格納されているデータは、立下りＦＦ挿入部１０６（又はバッファ挿入部１０７）に出力されるデータである。データベース１０８はホールドエラー対策半導体集積回路設計データベースである。データベース１０８に格納されているデータは、機能ブロック１０６，１０７からの出力結果である。そして、ホールドエラー対策済みの半導体集積回路設計データである。
【００３６】
上記機能ブロックは、各々、大略、次のように動作する。
【００３７】
タイミング解析部１０２は、半導体集積回路の各回路素子の伝播遅延とフリップフロップ回路間の伝播遅延とを求める。詳細には、次に説明されるタイミング解析手法が使われる。すなわち、隣接する回路素子ゲートの遅延、配線の遅延が、各々、計算される。これ等の計算値を用いて、回路素子ゲート間の遅延値、接続されたフリップフロップ回路間の接続の伝播遅延値、フリップフロップへのクロックの到着時刻差が解析される。そして、ゲートまたは回路ブロックレベルでの回路配置上の遅延位置と遅延値とが特定され、タイミング解析データとして出力される。このタイミング解析データはタイミング解析データベース（メモリ）１０３に格納される。タイミング解析手法としては、素子レベルシミュレーション、遅延付ゲートレベルシミュレーション、ポストレイアウトシミュレーション等が用いられる。具体的には、米国Ｓｙｎｏｐｓｙｓ社のＰｒｉｍｅｔｉｍｅ（商標）や、ＴｉｍｅＭｉｌｌ（商標）、ＳＰＩＣＥ（商標）が用いられる。
【００３８】
立下りＦＦ・バッファ挿入決定部１０４は、タイミング解析データベース１０３からのデータを基にして、立下りＦＦを挿入可能な2つのフリップフロップ間配線を決定する。詳細には、全てのホールドエラーがタイミング解析データベース１０３から検出される。前記ホールドエラーに対して、クロックの半周期程度の遅延が挿入された場合、セットアップエラーが生じるか否かが判断される。セットアップエラーが生じない場合、立下がりＦＦを挿入することが決定される。セットアップエラーが生じる場合、バッファを挿入することが決定される。立下りＦＦ・バッファ挿入決定部１０４は、決定を立下りＦＦ・バッファ挿入位置データベース１０５に出力する。前記決定は、各ホールドエラーに対して、立下りＦＦを挿入するか、バッファを挿入するかの決定である。
【００３９】
立下りＦＦ挿入部１０６は、半導体集積回路設計データベース１０１からのデータと、立下りＦＦ・バッファ挿入位置データベース１０５からのデータとを基にして、立下りＦＦが挿入と決定されているホールドエラーの位置に、立下りＦＦを挿入する。挿入位置が出力側のフリップフロップの前と決定されていると、処理が簡単である。但し、挿入位置は何所でも良い。出力側の任意の位置に挿入されれば良い。両端のフリップフロップと同じクロック信号がフリップフロップのクロック入力に接続される。結果がホールドエラー対策半導体集積回路設計データベース１０８に出力される。
【００４０】
バッファ挿入部１０７は、半導体集積回路設計データベース１０１からのデータと、立下りＦＦ・バッファ挿入位置データベース１０５からのデータとを基にして、バッファが挿入と決定されているホールドエラーの位置に、バッファを挿入する。挿入位置を出力側のフリップフロップの前と決定しておくと処理が簡単である。但し、挿入位置は何所でも良い。例えば、出力側の任意の位置に挿入されれば良い。この挿入は、ホールドエラーが解消されるバッファ（又はホールドエラー解消に必要な数のバッファ）である。結果がホールドエラー対策半導体集積回路設計データベース１０８に出力される。
【００４１】
データベースは、各々、大略、次のように構成される。
【００４２】
半導体集積回路設計データベース１０１には、半導体集積回路を設計・製造するゲートレベルネットリストと、ＨＤＬと、遅延データやプロセスデータを含むライブラリデータとが格納されている。又、１チップ又はコアレベルのデータが格納されている。更に、シミュレート可能なデータ（例えば、レイアウトデータより抽出された配線長と配線容量等を含む配線まで含めた遅延情報と言ったデータ）が格納されている。すなわち、半導体集積回路を設計・製造するに必要なデータが格納されている。
【００４３】
タイミング解析データベース１０３には、タイミング解析部１０２によるタイミング解析の結果データが格納されている。例えば、テスト用入力信号や各ノードの時間軸上の電位変位情報が格納されている。
【００４４】
立下りＦＦ・バッファ挿入位置データベース１０５には、全てのホールドエラーのデータが格納されている。又、ホールドエラーに対する立下りＦＦかバッファの何れかを挿入するデータが格納されている。前記データは立下りＦＦ・バッファ挿入決定部１０４が決定したデータである。
【００４５】
ホールドエラー対策半導体集積回路設計データベース１０８には、半導体集積回路設計のデータが格納されている。このデータは、半導体集積回路設計データに対して、立下りＦＦ挿入部１０６（又はバッファ挿入部１０７）によってホールドエラー対策が施されたデータである。
【００４６】
本発明が中央演算素子（コンピュータ）で構成された場合のブロック図が図２に示される。
【００４７】
本発明の半導体集積回路設計装置（半導体集積回路の設計支援システム）は、中央演算素子（ＣＰＵ）３と、プログラムメモリ５と、データベースメモリ７とを有する。プログラムメモリ５には、タイミング解析部１０２と、立下りＦＦ・バッファ挿入決定部１０４と、立下りＦＦ挿入部１０６と、バッファ挿入部１０７とが格納されている。前記機能ブロック１０２，１０４，１０６，１０７がプログラムメモリ５に格納された状態において、中央演算素子３と協働して動作しても良く、或いは他のメモリ装置に転送してから動作させても良い。データベースメモリ７には、半導体集積回路設計データベース１０１と、タイミング解析データベース１０３と、立下りＦＦ・バッファ挿入位置データベース１０５と、ホールドエラー対策半導体集積回路設計データベース１０８とが格納されている。上記プログラムメモリ５やデータベースメモリ７に用いられるメモリは、磁気メモリ、半導体メモリ又は他の手法によるメモリの何れでも良い。
【００４８】
中央演算素子（ＣＰＵ）３は上記プログラムメモリ５から読み出したコンピュータ・プログラム（ソフトウェア）を実行する。これによって、図２の半導体集積回路設計装置は図１の各機能ブロックの機能を実現する。
【００４９】
次に、図１，２の半導体集積回路設計装置の動作を説明する（図３〜図８参照）。
【００５０】
先ず、タイミング解析部１０２は、半導体集積回路設計データベース１０１に必要なデータの要求を行う。半導体集積回路設計データベース１０１には、半導体集積回路の設計時（半導体集積回路の製造前）において利用される設計データが格納されている。この半導体集積回路設計データベース１０１から得たデータを基にして、タイミング解析部１０２は、適切なテストパターンを用いて、各論理素子ゲート間の伝播遅延、フリップフロップ回路間の伝播遅延をタイミング解析データとして算出する（Ｓ１）。
【００５１】
タイミング解析部１０２は、算出された各論理素子ゲート間、フリップフロップ回路間の伝播遅延からホールドエラーの発生の有無を判定する（Ｓ２：（図３参照））。
【００５２】
ホールドエラーの発生が無の場合、タイミング解析部１０２は、タイミング解析を終了させる（Ｓ３）。
【００５３】
ホールドエラーの発生が有の場合、立下りＦＦ・バッファ挿入決定部１０４は、タイミング解析データベース１０３における伝播遅延情報が格納されているタイミング解析結果を使って、ホールドエラー発生箇所の各々に対して、ホールドエラー部にクロック周期の半分の遅延を挿入した場合のタイミングを計測する。そして、セットアップエラーが発生するか否かを判定する（Ｓ４，５，６）。
【００５４】
セットアップエラーが無の場合、ホールドエラー部に立下りＦＦが挿入される（Ｓ７）。そして、ホールドエラーの有無が確認される（Ｓ２）。
エラーの有無に応じて、上記Ｓ３のステップ又はＳ４のステップに移る。
【００５５】
セットアップエラーが有の場合、ホールドエラー部にバッファが挿入される（Ｓ８）。そして、ホールドエラーの有無が確認される（Ｓ２）。
エラーの有無に応じて、上記Ｓ３のステップ又はＳ４のステップに移る。
【００５６】
立下りＦＦ挿入部１０６は、立下りＦＦ・バッファ挿入位置データベース１０５に格納された各ホールドエラーに対する対策として、立下りＦＦを挿入するものに対して、ホールドエラーが発生している配線上に立下りＦＦを挿入し、両端のフリップフロップと同じクロックを供給する（図４参照）。
【００５７】
バッファ挿入部１０７は、立下りＦＦ・バッファ挿入位置データベース１０５に格納された各ホールドエラーに対する対策として、ホールドエラーを解消可能なバッファを挿入するものに対して、ホールドエラーを発生している配線上にバッファを挿入する（図５参照）。
【００５８】
この結果、大きな値のホールドエラーが解消される。
【００５９】
図９は、ホールドエラーの一例と、ホールドエラーを改善する為の対策の従来手法である。フリップフロップ間の信号伝播値が両方のフリップフロップのクロック到着時刻込みで小さ過ぎる場合、ホールドエラーが発生する。この問題に対しては、前記先行技術文献が提案した如きの「バッファ挿入」「ラッチ挿入」の技術を用いて信号を半周期ブロックする手法が知られている。
【００６０】
しかしながら、先行技術文献の「バッファ挿入」技術は、半導体の高速化によって、比較的大きな値のホールドエラーの場合には、多数のバッファを挿入する必要が有る。先行技術文献の「ラッチ挿入」技術は、挿入するラッチへのクロック供給を厳密に行う必要が有る（図１０参照）。図１０に示されるクロック波形の場合、データがすり抜ける。この結果、ホールドエラーの対策が出来ない。
【００６１】
そこで、2個のＦＦ間に立下りＦＦを挿入し、挿入する立下りＦＦに両端のＦＦと同じクロックを供給する（図６参照）。こうすると、立下りＦＦのクロック供給に対してクロック周期の半分の前後マージンがある。従って、両端のＦＦのクロック到着時刻と、挿入する立下りＦＦのクロック到着時刻とに多少のズレが有っても、このズレがクロック周期の半分程度の場合には、クロック周期の半分の遅延を挿入できる（図７参照）。
【００６２】
尚、立下りＦＦの挿入ではクロック周期の半分の遅延が挿入される。この為、クロック周期以上の遅延がフリップフロップ間に発生する恐れが有る。このような場合には、バッファが必要に応じて挿入される（図８参照）。
【００６３】
上記実施形態の技術は、半導体集積回路に対して、ホールドエラーと呼ばれる２個のフリップフロップ回路間のクロックの到着時刻を含めた伝播遅延が小さ過ぎることに起因する設計誤動作要因を解消する。しかも、必要な面積増加が小さい。かつ、簡単である。
【００６４】
上記においては、セットリセットフリップフロップ回路のセット信号としてＣＬＫ（クロック）信号を何れのＦＦにも入力することで各回路の同期式回路に適用した例について説明した。しかし、セット信号をＣＬＫでなく他回路の入力データと認識して作動させる非同期式回路についても適用可能であることは言うまでもない。又、本明細書では「回路配置上の位置」という表現を用いているが、これはスケマティック回路配置上の位置とレイアウト上の物理的な位置である。
【００６５】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００６６】
（付記１）フリップフロップ回路を含む半導体集積回路を設計する装置であって、
前記フリップフロップ回路の入力および出力ノードの値を含むタイミング解析データに応じてホールドエラーを検出すると共に、前記ホールドエラーが発生したノードを特定するタイミング解析部と、
前記タイミング解析部による解析結果に基づいて、前記ホールドエラー部に立下りＦＦ又はバッファの挿入を決定する立下りＦＦ・バッファ挿入決定部と、
前記立下りＦＦ・バッファ挿入決定部による立下りＦＦ挿入位置データに基づいて、立下りＦＦを挿入するように位置決定された前記ホールドエラー部に立下りＦＦを挿入し、この挿入された立下りＦＦにクロック線を接続する立下りＦＦ挿入部と、
前記立下りＦＦ・バッファ挿入決定部によるバッファ挿入位置データに基づいて、バッファを挿入するように位置決定された前記ホールドエラー部にバッファを挿入するバッファ挿入部
とを具備する半導体集積回路設計装置。
【００６７】
（付記２）半導体集積回路設計データが格納されたデータベースを更に具備し、
前記タイミング解析部は、前記半導体集積回路設計データを基にしてホールドエラーを検出すると共に、前記ホールドエラーが発生したノードを特定する部であり、
前記立下りＦＦ挿入部は、前記半導体集積回路設計データと前記立下りＦＦ・バッファ挿入決定部による立下りＦＦ挿入位置データとを基にして前記ホールドエラー部に立下りＦＦを挿入し、この挿入された立下りＦＦにクロック線を接続する部であり、
前記バッファ挿入部は、前記半導体集積回路設計データと前記立下りＦＦ・バッファ挿入決定部によるバッファ挿入位置データとを基にして前記ホールドエラー部にバッファを挿入する部である
付記１に記載の半導体集積回路設計装置。
【００６８】
（付記３）前記立下りＦＦ・バッファ挿入決定部は、全てのホールドエラー部がクロック周期の半分の遅延を挿入してもセットアップエラーを発生するか否を基準にして、立下りＦＦを挿入するかバッファを挿入するかを決定する部である
付記１又は付記２に記載の半導体集積回路設計装置。
【００６９】
（付記４）ホールドエラーの対策が施されたフリップフロップ回路を含む半導体集積回路を設計する方法であって、
タイミング解析部が、半導体集積回路設計データを基にして、ホールドエラーを検出すると共に、前記ホールドエラーが発生したノードを特定する解析工程と、
立下りＦＦ・バッファ挿入決定部が、前記タイミング解析工程による解析結果に基づいて、前記ホールドエラー部に立下りＦＦ又はバッファの挿入を決定する立下りＦＦ・バッファ挿入決定工程と、
立下りＦＦ挿入部が、前記立下りＦＦ・バッファ挿入決定工程による立下りＦＦ挿入位置データに基づいて、立下りＦＦを挿入するように位置決定された前記ホールドエラー部に立下りＦＦを挿入し、この挿入された立下りＦＦにクロック線を接続する立下りＦＦ挿入工程と、
バッファ挿入部が、前記立下りＦＦ・バッファ挿入決定工程によるバッファ挿入位置データに基づいて、バッファを挿入するように位置決定された前記ホールドエラー部にバッファを挿入するバッファ挿入工程
とを具備する半導体集積回路設計方法。
【００７０】
（付記５）フリップフロップ回路を含む半導体集積回路をコンピュータに設計させるプログラムであって、
前記プログラムは、コンピュータを、
前記フリップフロップ回路の入力および出力ノードの値を含むタイミング解析データに応じてホールドエラーを検出すると共に、前記ホールドエラーが発生したノードを特定するタイミング解析部、
前記タイミング解析部による解析結果に基づいて、前記ホールドエラー部に立下りＦＦ又はバッファの挿入を決定する立下りＦＦ・バッファ挿入決定部、
前記立下りＦＦ・バッファ挿入決定部による立下りＦＦ挿入位置データに基づいて、立下りＦＦを挿入するように位置決定された前記ホールドエラー部に立下りＦＦを挿入し、この挿入された立下りＦＦにクロック線を接続する立下りＦＦ挿入部、
前記立下りＦＦ・バッファ挿入決定部によるバッファ挿入位置データに基づいて、バッファを挿入するように位置決定された前記ホールドエラー部にバッファを挿入するバッファ挿入部
として機能させるプログラム。
【００７１】
この出願は、２００９年３月３日に出願された日本出願特願２００９−４９９１６を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００７２】
３      中央演算素子（ＣＰＵ）
５      プログラムメモリ
１０２  タイミング解析部
１０４  立下りＦＦ・バッファ挿入決定部
１０６  立下りＦＦ挿入部
１０７  バッファ挿入部
７      データベースメモリ
１０１  半導体集積回路設計データベース
１０３  タイミング解析データベース
１０５  立下りＦＦ・バッファ挿入位置データベース
１０８  ホールドエラー対策半導体集積回路設計データベース
【図１】
2010101029.tif 000003
【図２】
2010101029.tif 000004
【図３】
2010101029.tif 000005
【図４】
2010101029.tif 000006
【図５】
2010101029.tif 000007
【図６】
2010101029.tif 000008
【図７】
2010101029.tif 000009
【図８】
2010101029.tif 000010
【図９】
2010101029.tif 000011
【図１０】
2010101029.tif 000012
【国際調査報告】
2010101029.tif 000013
2010101029.tif 000014