(57)【要約】【課題】半導体集積回路の大規模化・複雑化に対応可能なホールドエラー修正方法等を提供する。【解決手段】タイミング解析（Ｓ２０１，Ｓ２０２）の結果より、ホールドエラーが発生しているホールドエラーパスについて、パスの始点でのホールドエラー量及びその始点から始まる全データパスに対するセットアップのマージン最小値の組を含むホールドエラーパス始点情報と、パスの終点でのホールドエラー量及びその終点へ至る全データパスに対するセットアップのマージン最小値の組を含むホールドエラーパス終点情報とが得られる（Ｓ２０３）。得られた情報を基に、ホールドエラーパスは、ホールドエラーを解消可能か否かによって分類される（Ｓ２０５）。ホールドエラーを解消可能なパスは、所定の基準に従ってグループ化される（Ｓ２０６）。最後に、グループごとに、始点又は終点のどちらに遅延バッファを挿入するかが決定される（Ｓ２０７）。【選択図】図２
2010160580.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路におけるセットアップ時間及びホールド時間に関して定義されるタイミング制約の違反があるかどうかを解析するホールドタイミング解析及びセットアップタイミング解析を実行する工程と、
前記ホールドタイミング解析及び前記セットアップタイミング解析の各結果より、ホールドエラーが発生しているホールドエラーパスについて、該ホールドエラーパスの始点におけるホールドエラー量及び前記始点から始まるデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス始点情報と、前記ホールドエラーパスの終点におけるホールドエラー量及び前記終点へ至るデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス終点情報とを得る工程と、
前記ホールドエラーパス始点情報及び前記ホールドエラーパス終点情報に基づき、前記ホールドエラーパスを、ホールドエラーが解消可能であるホールドエラー解消可能パス又はホールドエラーが解消不可能であるホールドエラー解消不能パスのいずれかに分類する工程と、
前記ホールドエラー解消可能パスを、該ホールドエラー解消可能パスの各自の始点又は終点が一致するかどうかによってグループ化する工程と、
グループ化された前記ホールドエラー解消可能パスのグループごとに、前記ホールドエラー解消可能パスの始点又は終点のどちらに遅延バッファを挿入するかを決定する工程と
を有する、半導体集積回路のホールドエラー修正方法。
【請求項２】
前記セットアップタイミング解析は、前記ホールドタイミング解析においてホールドエラーが発生したパスと始点あるいは終点を同じとするパスに対して実行される、請求項１記載のホールドエラー修正方法。
【請求項３】
前記ホールドタイミング解析及びセットアップタイミング解析を実行する工程は、複数の所定の動作モードについて実行される、請求項１又は２記載のホールドエラー修正方法。
【請求項４】
半導体集積回路で発生するホールドエラーを修正するホールドエラー修正プログラムであって、
コンピュータに
半導体集積回路におけるセットアップ時間及びホールド時間に関して定義されるタイミング制約の違反があるかどうかを解析するホールドタイミング解析及びセットアップタイミング解析を実行する工程と、
前記ホールドタイミング解析及び前記セットアップタイミング解析の各結果より、ホールドエラーが発生しているホールドエラーパスについて、該ホールドエラーパスの始点におけるホールドエラー量及び前記始点から始まるデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス始点情報と、前記ホールドエラーパスの終点におけるホールドエラー量及び前記終点へ至るデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス終点情報とを得る工程と、
前記ホールドエラーパス始点情報及び前記ホールドエラーパス終点情報に基づき、前記ホールドエラーパスを、ホールドエラーが解消可能であるホールドエラー解消可能パス又はホールドエラーが解消不可能であるホールドエラー解消不能パスのいずれかに分類する工程と、
前記ホールドエラー解消可能パスを、該ホールドエラー解消可能パスの各自の始点又は終点が一致するかどうかによってグループ化する工程と、
グループ化された前記ホールドエラー解消可能パスのグループごとに、前記ホールドエラー解消可能パスの始点又は終点のどちらに遅延バッファを挿入するかを決定する工程と
を実行させるホールドエラー修正プログラム。
【請求項５】
半導体集積回路で発生するホールドエラーを修正するホールドエラー修正装置であって、
半導体集積回路におけるセットアップ時間及びホールド時間に関して定義されるタイミング制約の違反があるかどうかを解析するホールドタイミング解析及びセットアップタイミング解析を行う解析手段と、
前記解析手段からの各結果より、ホールドエラーが発生しているホールドエラーパスについて、該ホールドエラーパスの始点におけるホールドエラー量及び前記始点から始まるデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス始点情報と、前記ホールドエラーパスの終点におけるホールドエラー量及び前記終点へ至るデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス終点情報とを得るホールドエラー情報取得手段と、
前記ホールドエラー情報取得手段の出力に基づき、前記ホールドエラーパスを、ホールドエラーが解消可能であるホールドエラー解消可能パス又はホールドエラーが解消不可能であるホールドエラー解消不能パスのいずれかに分類する分類手段と、
前記分類手段により前記ホールドエラー解消可能パスと分類されたパスを、該ホールドエラー解消可能パスの各自の始点又は終点が一致するかどうかによってグループ化するグループ化手段と、
前記グループ化手段によってグループ化された前記ホールドエラー解消可能パスのグループごとに、前記ホールドエラー解消可能パスの始点又は終点のどちらに遅延バッファを挿入するかを決定する決定手段と
を有するホールドエラー修正装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路のホールドエラー修正方法、装置及びプログラムに関する。
【背景技術】
【０００２】
ＬＳＩ（Large  Scale  Integration）等の半導体集積回路のホールドエラー修正手法として、データパス上の全回路素子におけるホールドエラー量及びセットアップマージン値を考慮して遅延バッファ挿入箇所を探索するものが知られている。
【０００３】
図１は、従来のホールドエラー修正方法を説明するフローチャートである。
【０００４】
ステップＳ１０１でホールドタイミング解析が実行される。また、ステップＳ１０２でセットアップタイミング解析が実行される。これらのタイミング解析は、集積回路で論理回路を利用する場合に、論理回路中のパスの伝播遅延時間を積算し、それらの値から、Ｄフリップフロップ等の入力に定義されるタイミング制約の違反があるか否かを判定するためのものである。ホールドタイミング解析では、パスの始点及び終点、更に、ホールドエラーが発生する場合にはホールドエラー値が得られる。セットアップタイミング解析では、パスの始点及び終点、更に、セットアップ制約に対してどれだけ余裕があるかを表すセットアップマージン値が得られる。結果として、ステップＳ１０３で、パスごとに、始点及び終点の組並びに始点及び終点の夫々のホールドエラー値及びセットアップマージン値の組が作られる。
【０００５】
ステップＳ１０４で、パスごとの値の組から、ホールドエラーパスが抽出される。抽出されたパスに対して、ステップＳ１０５で、ホールドエラー違反を改善するための最適な遅延バッファ挿入箇所が探索される。遅延バッファ挿入箇所を探索するための具体的な方法として、データパスを始点又は終点からトレースしていく方法や、データパス上の回路素子に評価関数を設定し優先順位付けを行う方法等がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−１８８８１９号公報
【特許文献２】特開２００２−０７３７１４号公報
【特許文献３】特開２００３−１６２５５６号公報
【特許文献４】特開２００８−１５２３２９号公報
【特許文献５】特開２００１−０４４２８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、上述したような従来の方法は、全てのホールドエラーパスに対して遅延バッファ挿入箇所を探索するので、ホールドエラー解消が不能なパスか否かを判定するためにデータパス上の回路素子全ての探索を行わなければならない。よって、従来の方法は、半導体集積回路の大規模化・複雑化に伴うデータパスの増大により、遅延バッファ挿入箇所の探索量が爆発的に増加し、解を得るために膨大な処理時間を必要とし実用的でなくなるという問題を有する。
【０００８】
本発明は、上記問題を鑑みなされたものであり、半導体集積回路の大規積化・複雑化に対応可能なホールドエラー修正方法、装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明の一態様によれば、半導体集積回路におけるセットアップ時間及びホールド時間に関して定義されるタイミング制約の違反があるかどうかを解析するホールドタイミング解析及びセットアップタイミング解析を実行する工程と、
前記ホールドタイミング解析及び前記セットアップタイミング解析の各結果より、ホールドエラーが発生しているホールドエラーパスについて、該ホールドエラーパスの始点におけるホールドエラー量及び前記始点から始まるデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス始点情報と、前記ホールドエラーパスの終点におけるホールドエラー量及び前記終点へ至るデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス終点情報とを得る工程と、
前記ホールドエラーパス始点情報及び前記ホールドエラーパス終点情報に基づき、前記ホールドエラーパスを、ホールドエラーが解消可能であるホールドエラー解消可能パス又はホールドエラーが解消不可能であるホールドエラー解消不能パスのいずれかに分類する工程と、
前記ホールドエラー解消可能パスを、該ホールドエラー解消可能パスの各自の始点又は終点が一致するかどうかによってグループ化する工程と、
グループ化された前記ホールドエラー解消可能パスのグループごとに、前記ホールドエラー解消可能パスの始点又は終点のどちらに遅延バッファを挿入するかを決定する工程と
を有する、半導体集積回路のホールドエラー修正方法が提供される。
【００１０】
これにより、バッファ挿入箇所の探索に要するメモリ量及び処理時間が従来の方法に比べて低減されるので、半導体集積回路の大規積化・複雑化に対応することができる。
【００１１】
また、本発明の他の態様によれば、上述されたホールドエラー修正方法をコンピュータに実行させるホールドエラー修正プログラム及びその記録媒体が提供される。
【発明の効果】
【００１２】
本開示の方法により、半導体集積回路の大規積化・複雑化に対応することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】従来のホールドエラー修正方法を説明するフローチャートである。
【図２】第１実施例に従うホールドエラー修正方法を説明するフローチャートである。
【図３】ホールドエラーパスのグループ化動作を詳述する図である。
【図４】バッファ挿入箇所の選択動作を詳述する図である。
【図５】第２実施例に従うホールドエラー修正方法を説明するフローチャートである。
【図６】第３実施例に従うホールドエラー修正方法を説明するフローチャートである。
【図７】一実施例に従うホールドエラー修正方法の対象となる回路のブロック図を示す。
【図８】一実施例に従うホールドエラー修正方法によって最終的に遅延バッファを挿入された回路のブロック図を示す。
【図９】一実施形態に従うホールドエラー修正方法を従来の方法と比較するための回路例を示す。
【図１０】一実施例に従うホールドエラー修正プログラムを実行するコンピュータのハードウェア構成例を示す。
【発明を実施するための形態】
【００１４】
本発明を実施するための最良の形態を、添付の図面を参照して説明する。
【００１５】
図２は、第１実施例に従うホールドエラー修正方法を説明するフローチャートである。
【００１６】
ステップＳ２０１でホールドタイミング解析が実行され、ステップＳ２０２でセットアップタイミング解析が実行される。これらのタイミング解析は、集積回路で論理回路を利用する場合に、論理回路中のパスの伝播遅延時間を積算し、それらの値から、Ｄフリップフロップ等の入力に定義されるタイミング制約の違反があるか否かを判定するためのものである。ホールドタイミング解析では、パスの始点及び終点、更に、ホールドエラーが発生する場合にはホールドエラー値が得られる。セットアップタイミング解析では、パスの始点及び終点、更に、セットアップ制約に対してどれだけ余裕があるかを表すセットアップマージン値が得られる。
【００１７】
ステップＳ２０３で、ホールドタイミング解析及びセットアップタイミング解析の各結果より、ホールドエラーが発生しているホールドエラーパスの夫々について、ホールドエラーパス始点情報及びホールドエラーパス終点情報が得られる。ホールドエラー始点情報は、ホールドエラーパスの始点におけるホールドエラー量を示す値及びその始点から始まる全データパスに対するセットアップのマージン最小値の組を含む。ホールドエラーパス終点情報は、ホールドエラーパスの終点におけるホールドエラー量を示す値及びその終点へ至る全データパスに対するセットアップのマージン最小値の組を含む。そして、ステップＳ２０４で、パスごとのホールドエラーパス始点情報及びホールドエラーパス終点情報が集約され、結果として、複数のデータパスの中からホールドエラーパスが抽出される。
【００１８】
ステップＳ２０５で、ホールドエラーパスは、所定の判定基準に従って、ホールドエラーが解消可能なパスと解消不能なパスとに分類される。この分類方法としては、パスの始点、終点、ホールドエラー値及びセットアップマージン値を入力とする評価関数を定義することが考えられる。例えば、以下の式：
ａ×（始点セットアップマージン値）−ｂ×（始点ホールドエラー値）＞ｃ
かつ
ｄ×（終点セットアップマージン値）−ｅ×（終点ホールドエラー値）＞ｆ
が満たされるならば、対象のホールドエラーパスはホールドエラー解消可能パスであると判断される。ここで、ａ、ｂ、ｃ、ｄ、ｅ及びｆの各係数は、半導体集積回路の要求性能によって定まる値であり、設計者又はテクノロジ提供者によって定義される。
【００１９】
次に、ステップＳ２０６で、ホールドエラー解消可能なパスと判断されたホールドエラーパスは、複数のホールドエラーパスグループを形成するようグループ化される。形成されたグループごとに、ステップＳ２０７で、パスの始点又は終点のどちらに遅延バッファを挿入するかが選択される。これにより、遅延バッファ挿入箇所を示す情報が作成される。バッファ挿入箇所は、バッファ個数、遅延量、挿入面積、消費電力、ホールドエラー修正可能データパス数、バッファ挿入によるレイアウト変更処理量等を組み合わせたコスト関数を用意して、グループごとにコスト最小になるよう選択されることが望ましい。
【００２０】
バッファ挿入箇所の探索に要するメモリ量及び処理時間は、ホールドエラーが発生したデータパス数分の始点、終点及びバッファ挿入量の情報に限られるため、回路規模やデータパスの複雑さに関わらずホールドエラー数に依存する。よって、本実施例のように、ホールドエラーパスを分類しグループ化し、グループごとにバッファ挿入箇所を選択することで、バッファ挿入箇所の探索に要するメモリ量及び処理時間は、従来の方法に比べて低減される。
【００２１】
図３は、ホールドエラー解消可能なパスと判断されたホールドエラーパスをグループ化するための動作ステップ（Ｓ２０６）を詳述する図である。
【００２２】
最初に、ステップＳ３０１で、対象のホールドエラーパスの始点又は終点の少なくとも一方が、既存のグループに含まれる他のホールドエラーパスの始点又は終点となっているか否かが判断される。対象のホールドエラーパスの始点又は終点のいずれも既存のグループに含まれる他のホールドエラーパスの始点又は終点となっていない場合は、ステップＳ３０２で、その対象のホールドエラーパスを含む新規のグループが追加される。その後、ステップＳ３０３で、対象のホールドエラーパスの始点及び終点は、新規のグループ又は該当する既存のグループに対応付けられる。
【００２３】
次に、ステップＳ３０４で、ホールドエラー解消可能なパスと判断された全てのホールドエラーパスについてグループ分けが行われたかどうかが判断される。そして、ホールドエラー解消可能なパスと判断された全てのホールドエラーパスについてグループ分けが行われるまで、ステップＳ３０１乃至Ｓ３０３が繰り返される。最後に、ステップＳ３０５で、グループごとにパスが分割される。
【００２４】
図４は、ホールドエラーパスグループごとにバッファ挿入箇所を選択するための動作ステップ（Ｓ２０７）を詳述する図である。
【００２５】
最初に、ステップＳ４０１で、対象のホールドエラーパスグループについて、グループに含まれる各ホールドエラーパスのホールドエラー量が始点及び終点の夫々に分けられる。
【００２６】
ステップＳ４０２で、始点について、バッファ個数、遅延量、挿入面積、消費電力、ホールドエラー修正可能データパス数、バッファ挿入によるレイアウト変更処理量等を組み合わせたコスト関数を用いて、遅延バッファ挿入コストが計算される。同様に、ステップＳ４０３で、終点についても遅延バッファ挿入コストが計算される。
【００２７】
ステップＳ４０４で、始点側の遅延バッファ挿入コストと終点側の遅延バッファ挿入コストとが比較される。始点側の遅延バッファ挿入コストの方が小さい場合は、そのグループについては始点側に遅延バッファが挿入される。ステップＳ４０５で、始点側に遅延バッファが挿入された場合の遅延バッファ挿入箇所を示す情報が作成される。一方、終点側の遅延バッファ挿入コストの方が小さい場合は、そのグループについては終点側に遅延バッファが挿入される。ステップＳ４０６で、終点側に遅延バッファが挿入された場合の遅延バッファ挿入箇所を示す情報が作成される。
【００２８】
次に、ステップＳ４０７で、全てのホールドエラーパスグループについてバッファ挿入箇所が選択されたかどうかが判断される。そして、全てのホールドエラーパスグループについてバッファ挿入箇所が選択されるまで、ステップＳ４０１乃至Ｓ４０６が繰り返される。最後に、ステップＳ４０８で、グループごとに作成された情報が集約される。
【００２９】
図５は、第２実施例に従うホールドエラー修正方法を説明するフローチャートである。
【００３０】
図５に表される実施例は、ホールドエラーが発生したパスと始点あるいは終点を同じとするパスに対してのみセットアップタイミング解析を行う点で、図２を参照して説明された第１実施例と相違する。ステップＳ５０１でホールドタイミング解析が実行され、パスの始点及び終点、更に、ホールドエラーが発生する場合にはホールドエラー値が得られる。次に、ステップＳ５０２で、ホールドエラーが発生したパスと始点あるいは終点を同じとするパスに対してのみ、セットアップタイミング解析が実行される。
【００３１】
このように、セットアップタイミング解析では、ホールドエラーの発生した始点及び終点の情報を利用することで、回路全体のセットアップマージンを計算する必要がなくなり、処理時間が短縮される。
【００３２】
図６は、第３実施例に従うホールドエラー修正方法を説明するフローチャートである。
【００３３】
図６に表される実施例は、ホールドタイミング解析及びセットアップタイミング解析が複数の動作モードで実行される点で、図２を参照して説明された第１実施例及び図５を参照して説明された第２実施例の夫々と相違する。ある１つの動作モードについて、ステップＳ６０１でホールドタイミング解析が実行され、ステップＳ６０２でセットアップタイミング解析が実行される。
【００３４】
次に、ステップＳ６０３で、全ての動作モードについてホールドタイミング解析及びセットアップタイミング解析が実行されたかどうかが判断される。そして、全ての動作モードについてホールドタイミング解析及びセットアップタイミング解析が実行されるまで、ステップＳ６０１及びＳ６０２が繰り返される。
【００３５】
従って、ステップＳ６０４では、動作モードごとに、ホールドエラーが発生しているホールドエラーパスの夫々について、ホールドエラーパス始点情報及びホールドエラーパス終点情報が得られる。ホールドエラー始点情報は、ホールドエラーパスの始点におけるホールドエラー量を示す値及びその始点から始まる全データパスに対するセットアップのマージン最小値の組を含む。ホールドエラーパス終点情報は、ホールドエラーパスの終点におけるホールドエラー量を示す値及びその終点へ至る全データパスに対するセットアップのマージン最小値の組を含む。すなわち、以降の工程で用いられる値の組は、最終的に、パスごとのみならず、全ての動作モードを考慮したものが得られる。
【００３６】
このようにして一実施形態に従うホールドエラー修正方法の処理を拡張することも可能である。
【００３７】
図７は、一実施例に従うホールドエラー修正方法の対象となる回路のブロック図を示す。
【００３８】
図７で、３０１〜３０５は始点側のフリップフロップ回路を表し、３０６〜３０９は終点側のフリップフロップ回路を表す。データは、始点側のフリップフロップ回路３０１〜３０５のいずれか１つから組合せ論理回路３１０を通って終点側のフリップフロップ回路３０６〜３０９のいずれか１つへ至る。
【００３９】
図７は、ホールドタイミング解析及びセットアップタイミング解析の結果からホールドエラーパスの情報を構築した状態を表している。ホールドタイミング解析及びセットアップタイミング解析により、始点及び終点の組並びに始点及び終点の夫々のホールドエラー値及びセットアップマージン値が得られる。これらの値より、始点又は終点に遅延バッファを挿入した場合に、その始点又は終点に接続するデータパスでセットアップ制約に対してどれだけ余裕があるかが判定され得る。
【００４０】
例えば、始点側のフリップフロップ回路３０１〜３０５から終点側のフリップフロップ回路３０６〜３０９へ向かう矢印４０１乃至４０８によって示されるようなホールドエラーパスが得られる。フリップフロップ回路３０１の出力を始点としてフリップフロップ回路３０６及び３０７の夫々へ向かう２つのホールドエラーパス４０１、４０２が存在する。フリップフロップ回路３０２の出力を始点としてフリップフロップ回路３０７及び３０８の夫々へ向かう２つのホールドエラーパス４０３、４０４が存在する。フリップフロップ回路３０３の出力を始点としてフリップフロップ回路３０８及び３０９の夫々へ向かう２つのホールドエラーパス４０５、４０６が存在する。フリップフロップ回路３０４の出力を始点としてフリップフロップ回路３０９へ向かう１つのホールドエラーパス４０７が存在する。フリップフロップ回路３０５の出力を始点としてフリップフロップ回路３０９へ向かう１つのホールドエラーパス４０８が存在する。
【００４１】
更に、図中でホールドエラーパスの始点及び終点においてマル又はバツによって表されるように、始点又は終点に遅延バッファを挿入した場合に各データパスでセットアップ制約が満足されるか否かが判定される。この判定結果に基づき、ホールドエラーパスをホールドエラー解消可能パス又はホールドエラー解消不能パスのいずれかに分類する。具体的に、始点又は終点の少なくとも一方に遅延バッファを挿入することでセットアップ制約を満足しないデータパスは、ホールドエラー解消不能パスであると判断される。図７の例では、フリップフロップ回路３０５の出力を始点とするホールドエラーパス４０８について、その始点に遅延バッファを挿入した場合にはセットアップ制約が満足されない。また、フリップフロップ回路３０８の入力を終点とするホールドエラーパス４０４及び４０５の少なくとも１つについて、その終点に遅延バッファを挿入した場合にはセットアップ制約が満足されない。よって、フリップフロップ回路３０５の出力を始点とするホールドエラーパス４０８並びにフリップフロップ回路３０８の入力を終点とするホールドエラーパス４０４及び４０５は、ホールドエラー解消不能パスであると判断される。一方、それ以外のホールドエラーパス４０１〜４０３、４０６及び４０７は、ホールドエラー解消可能パスであると判断される。
【００４２】
次いで、図３で詳述されたように、ホールドエラー解消可能パスであると判断されたホールドエラーパス４０１〜４０３、４０６及び４０７について、始点及び／又は終点につながりがあるか否かによってグループ分けを行う。例えば、ホールドエラーパス４０１及び４０２は共にフリップフロップ回路３０１の出力を始点としているので、同じグループに属するとする。また、ホールドエラーパス４０３は、ホールドエラーパス４０２と同じくフリップフロップ回路３０７の入力を終点としているので、ホールドエラーパス４０２と同じグループに属するとする。このようにして、ホールドエラーパス４０１、４０２及び４０３を含む第１のグループと、ホールドエラーパス４０６及び４０７を含む第２のグループとが形成される。
【００４３】
最終的に、図４で詳述されたように、形成されたグループごとに、始点又は終点のどちらに遅延バッファが挿入されるかが決定される。例えば、バッファ挿入コストの計算はバッファ個数で行われ、始点又は終点のいずれにおいても同数となる場合は始点を優先的に選択することとするようにしても良い。図８は、一実施例に従うホールドエラー修正方法によって最終的に遅延バッファを挿入された回路のブロック図を示す。図８の例で、ホールドエラーパス４０１、４０２及び４０３を含む第１のグループでは、遅延バッファ５０１及び５０２はホールドエラーパスの始点に挿入される。一方、ホールドエラーパス４０６及び４０７を含む第２のグループでは、遅延バッファ５０３はホールドエラーパスの終点に挿入される。挿入される遅延バッファ５０１乃至５０３の夫々は、同じ特性を有する必要はなく、むしろ、各ホールドエラーパスにおいてホールドエラーを解消するに足る遅延量を有する異なるバッファである。
【００４４】
以上説明してきた実施形態によれば、ホールドエラーが発生するデータパスの始点及び終点の組のみに着目するため、従来の方法に比べて処理負荷を抑制することができる。従来の方法では、最適なバッファ挿入量及び位置を求めるために、ホールドエラーが発生するデータパスの全経路についてホールドエラー値及びセットアップマージン値を得る必要があった。これらの値の保持に必要なメモリ量及び遅延バッファ挿入箇所を選択するための計算量は、回路規模に依存し、大規模回路では処理負荷の増大につながる。
【００４５】
図９は、一実施形態に従うホールドエラー修正方法を従来の方法と比較するための回路例を示す。（ａ）は従来の方法を説明するための回路を示し、（ｂ）は本発明の一実施形態に従うホールドエラー修正方法を説明するための回路を示す。
【００４６】
図９に示される例となる回路は、始点側にフリップフロップ回路６０１〜６０３を設けられ、終点側にフリップフロップ回路６０４及び６０５を設けられている。フリップフロップ回路６０１からのデータは、論理回路６１１を通ってフリップフロップ回路６０４へ伝えられると共に、更に論理回路６１３を通ってフリップフロップ回路６０５へ伝えられる。フリップフロップ回路６０２からのデータは、論理回路６１１をフリップフロップ回路６０４へ伝えられると共に、更に論理回路６１３を通って、又は論理回路６１１を通らずに論理回路６１２及び６１３を通って、フリップフロップ回路６０５へ伝えられる。フリップフロップ回路６０３からのデータは、論理回路６１２及び６１３を通ってフリップフロップ回路６０５へ伝えられる。従来の方法では、このような回路全体の接続情報を知っておく必要がある。しかし、本発明の一実施形態に従う方法によれば、図９（ｂ）に示されるように、フリップフロップ回路間にある組合せ論理回路６１５の詳細な接続態様を知っておく必要はない。
【００４７】
また、従来の方法では、図９（ａ）に示される回路例において、例えば１０箇所のノード（破線）についてホールドエラー値及びセットアップマージン値のデータ保持が必要とされる。更に、適切なバッファ挿入箇所を探索するために、（２１０−１）通りの組み合わせから１つを選択する処理が必要とされる。しかし、本発明の一実施形態に従う方法によれば、５つのフリップフロップ回路の接続情報及び５箇所のノード（フリップフロップ回路６０１〜６０３の夫々の出力及びフリップフロップ回路６０４、６０５の夫々の入力）についてのデータさえ保持すれば良い。よって、本発明の一実施形態に従う方法は、図９に示される回路例において、従来の方法と比較しておよそ半分のメモリ使用量で足りる。また、バッファ挿入箇所の探索は、データパスの始点側又は終点側の２通りからの選択処理により達成される。
【００４８】
上記実施形態により得られる効果は、回路の複雑さが増すほどに顕著となる。計算量を比較するために、少し複雑な例として、フリップフロップ回路の数が１００で且つデータパスが全て３段の２入力組合せ論理回路で構成された回路を考える。このような回路では、１つの終点側フリップフロップ回路までには８つの始点側フリップフロップ回路からのデータパスが存在し、全データパスは約８００になり、全ノードは１５００以上になる。もし全データパスがホールドエラーを起こしたとすると、従来の方法では、１５００以上のノード全てに対してバッファ挿入／非挿入の判定結果をフラグとして付与する必要がある。しかし、本発明の実施形態に従う方法によれば、始点又は終点の選択結果に応じて、多くても１００程度のノードへのフラグ付与で足りる。
【００４９】
確かに、従来技術でも、始点及び終点のみに着目して行われるホールドエラー修正方法が存在しないわけではない。しかし、この従来技術に従う方法では、ホールドエラーが発生した各データパスを順次に処理していくので、回路全体を見た場合に遅延挿入量を最適化することが不可能となる場合がある。例えば、図７及び図８に示された回路を例とすると、本発明の一実施形態に従う方法によれば、回路全体として挿入される遅延バッファの個数は３個であった。しかし、従来技術に従う方法では、ホールドエラーパスを順次に処理するために、遅延バッファを挿入してもセットアップマージンを満足することができるデータパスの始点側ノードに遅延バッファが挿入されることとなる。すなわち、回路全体として挿入される遅延バッファの個数は４個であり、本発明の一実施形態に従う方法の場合よりも多い。このように、本発明の一実施形態に従う方法によれば、ホールドエラーを解消しながら、そのための回路規模の増大を最小限とすることができる。言い換えると、上記実施形態によれば、回路全体で遅延バッファ挿入量の最適化を図ることが可能となる。これは、ホールドエラーパスをホールドエラーが解消可能か否かによって分類し、更にホールドエラーパスごとに適切にグループ化し、パスグループごとに始点又は終点のどちらかにバッファを挿入するよう選択を行うことによる。
【００５０】
また、従来技術に従う他のホールドエラー修正方法として、クロックツリーを修正して始点側フリップフロップ回路のクロックを遅らせる、又は終点側フリップフロップ回路のクロックを早めるという方法も存在する。この方法では、ホールドエラー発生パスの始点及び終点の夫々のホールドエラー値及びセットアップマージン値に加え、始点及び終点の夫々の前段及び後段のデータパスについてもこれらの値を保持する必要がある。よって、本発明の一実施形態に従う方法に比べて最大３倍のメモリ量を要するため不利である。
【００５１】
上記実施形態に従うホールドエラー修正方法は、コンピュータにインストールされて実行されるプログラムとして具現化されても良い。
【００５２】
図１０は、一実施例に従うホールドエラー修正プログラムを実行するコンピュータのハードウェア構成例を示す。図１０に示されるように、コンピュータ１０は、バス１６によって相互に接続されたドライブ装置１１と、補助記憶装置１２と、メモリ装置１３と、演算処理装置１４と、インターフェース装置１５とを有する。
【００５３】
ドライブ装置１１は、記録媒体１７を読み取るための装置である。プログラムを記録した記録媒体１７がドライブ装置１１にセットされると、プログラムが記録媒体１７からドライブ装置１１を介して補助記憶装置１２にインストールされる。例えば、ホールドエラー修正プログラムは、例えばＣＤ−ＲＯＭ等の記録媒体１７に記録されており、これをコンピュータ１０が読み込むことでインストールされる。
【００５４】
補助記憶装置１２は、インストールされたプログラムを格納すると共に、必要なファイル及びデータ等を格納する装置である。メモリ装置１３は、プログラムの起動指示があった場合に、補助記憶装置１２からプログラムを読み出して格納する装置である。演算処理装置１４は、メモリ装置１３に格納されたプログラムに従って、コンピュータ１０に係る機能を実行する装置である。インターフェース装置１５は、コンピュータ１０をインターネット、ローカルエリアネットワーク（ＬＡＮ）又はイントラネット等のネットワークへ接続するための装置である。例えば、ホールドエラー修正プログラムは、ネットワークを介して接続される外部サーバに記憶されており、これをコンピュータ１０が読み込むことでインストールされても良い。
【００５５】
以上、発明を実施するための最良の形態について説明を行ったが、本発明は、この最良の形態で述べた実施の形態に限定されるものではない。本発明の主旨を損なわない範囲で変更することが可能である。
【００５６】
例えば、ホールドエラー修正方法を実現するホールドエラー修正装置がハードウェア、ソフトウェア又はこれらの組み合わせによって提供され得る。ホールドエラー修正装置は、半導体集積回路で発生するホールドエラーを修正するホールドエラー修正装置であって、解析手段と、ホールドエラー情報取得手段と、分類手段と、グループ化手段と、決定手段とを有する。解析手段は、半導体集積回路におけるセットアップ時間及びホールド時間に関して定義されるタイミング制約の違反があるかどうかを解析するホールドタイミング解析及びセットアップタイミング解析を行う。ホールドエラー情報取得手段は、解析手段からの各結果より、ホールドエラーが発生しているホールドエラーパスについて、ホールドエラーパス始点情報及びホールドエラーパス終点情報を得る。分類手段は、ホールドエラー情報取得手段の出力に基づき、ホールドエラーパスを、ホールドエラーが解消可能であるホールドエラー解消可能パス又はホールドエラーが解消不可能であるホールドエラー解消不能パスのいずれかに分類する。グループ化手段は、分類手段によりホールドエラー解消可能パスと分類されたパスを、それらのホールドエラー解消可能パスの各自の始点又は終点が一致するかどうかによってグループ化する。最後に、決定手段は、グループ化手段によってグループ化されたホールドエラー解消可能パスのグループごとに、ホールドエラー解消可能パスの始点又は終点のどちらに遅延バッファを挿入するかを決定する。
【００５７】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
半導体集積回路におけるセットアップ時間及びホールド時間に関して定義されるタイミング制約の違反があるかどうかを解析するホールドタイミング解析及びセットアップタイミング解析を実行する工程と、
前記ホールドタイミング解析及び前記セットアップタイミング解析の各結果より、ホールドエラーが発生しているホールドエラーパスについて、該ホールドエラーパスの始点におけるホールドエラー量及び前記始点から始まるデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス始点情報と、前記ホールドエラーパスの終点におけるホールドエラー量及び前記終点へ至るデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス終点情報とを得る工程と、
前記ホールドエラーパス始点情報及び前記ホールドエラーパス終点情報に基づき、前記ホールドエラーパスを、ホールドエラーが解消可能であるホールドエラー解消可能パス又はホールドエラーが解消不可能であるホールドエラー解消不能パスのいずれかに分類する工程と、
前記ホールドエラー解消可能パスを、該ホールドエラー解消可能パスの各自の始点又は終点が一致するかどうかによってグループ化する工程と、
グループ化された前記ホールドエラー解消可能パスのグループごとに、前記ホールドエラー解消可能パスの始点又は終点のどちらに遅延バッファを挿入するかを決定する工程と
を有する、半導体集積回路のホールドエラー修正方法。
（付記２）
前記セットアップタイミング解析は、前記ホールドタイミング解析においてホールドエラーが発生したパスと始点あるいは終点を同じとするパスに対して実行される、付記１記載のホールドエラー修正方法。
（付記３）
前記ホールドタイミング解析及びセットアップタイミング解析を実行する工程は、複数の所定の動作モードについて実行される、付記１又は２記載のホールドエラー修正方法。
（付記４）
前記ホールドエラーパスは、前記ホールドエラーパス始点情報及び前記ホールドエラーパス終点情報を入力とする評価関数：
ａ×（始点セットアップマージン値）−ｂ×（始点ホールドエラー値）＞ｃ
かつ
ｄ×（終点セットアップマージン値）−ｅ×（終点ホールドエラー値）＞ｆ
を満たす場合に、ホールドエラー解消可能パスである判断される、付記１乃至３記載のホールドエラー修正方法。
（付記５）
前記遅延バッファの挿入箇所は、バッファ個数、遅延量、挿入面積、消費電力、ホールドエラー修正可能データパス数、バッファ挿入によるレイアウト変更処理量を組み合わせたコスト関数を用いて、前記ホールドエラー解消可能パスのグループごとにコスト最小になるよう決定される、付記１乃至３記載のホールドエラー修正方法。
（付記６）
半導体集積回路で発生するホールドエラーを修正するホールドエラー修正プログラムであって、
コンピュータに
半導体集積回路におけるセットアップ時間及びホールド時間に関して定義されるタイミング制約の違反があるかどうかを解析するホールドタイミング解析及びセットアップタイミング解析を実行する工程と、
前記ホールドタイミング解析及び前記セットアップタイミング解析の各結果より、ホールドエラーが発生しているホールドエラーパスについて、該ホールドエラーパスの始点におけるホールドエラー量及び前記始点から始まるデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス始点情報と、前記ホールドエラーパスの終点におけるホールドエラー量及び前記終点へ至るデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス終点情報とを得る工程と、
前記ホールドエラーパス始点情報及び前記ホールドエラーパス終点情報に基づき、前記ホールドエラーパスを、ホールドエラーが解消可能であるホールドエラー解消可能パス又はホールドエラーが解消不可能であるホールドエラー解消不能パスのいずれかに分類する工程と、
前記ホールドエラー解消可能パスを、該ホールドエラー解消可能パスの各自の始点又は終点が一致するかどうかによってグループ化する工程と、
グループ化された前記ホールドエラー解消可能パスのグループごとに、前記ホールドエラー解消可能パスの始点又は終点のどちらに遅延バッファを挿入するかを決定する工程と
を実行させるホールドエラー修正プログラム。
（付記７）
ネットワークを介して前記コンピュータにロードされる付記６記載のホールドエラー修正プログラム。
（付記８）
付記６記載のホールドエラー修正プログラムを記録したコンピュータ読取可能な記録媒体。
（付記９）
半導体集積回路で発生するホールドエラーを修正するホールドエラー修正装置であって、
半導体集積回路におけるセットアップ時間及びホールド時間に関して定義されるタイミング制約の違反があるかどうかを解析するホールドタイミング解析及びセットアップタイミング解析を行う解析手段と、
前記解析手段からの各結果より、ホールドエラーが発生しているホールドエラーパスについて、該ホールドエラーパスの始点におけるホールドエラー量及び前記始点から始まるデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス始点情報と、前記ホールドエラーパスの終点におけるホールドエラー量及び前記終点へ至るデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス終点情報とを得るホールドエラー情報取得手段と、
前記ホールドエラー情報取得手段の出力に基づき、前記ホールドエラーパスを、ホールドエラーが解消可能であるホールドエラー解消可能パス又はホールドエラーが解消不可能であるホールドエラー解消不能パスのいずれかに分類する分類手段と、
前記分類手段により前記ホールドエラー解消可能パスと分類されたパスを、該ホールドエラー解消可能パスの各自の始点又は終点が一致するかどうかによってグループ化するグループ化手段と、
前記グループ化手段によってグループ化された前記ホールドエラー解消可能パスのグループごとに、前記ホールドエラー解消可能パスの始点又は終点のどちらに遅延バッファを挿入するかを決定する決定手段と
を有するホールドエラー修正装置。
【符号の説明】
【００５８】
１０  コンピュータ
１７  記録媒体
３０１〜３０９，６０１〜６０５  フリップフロップ回路
３１０，６１５  組合せ論理回路
４０１〜４０８  ホールドエラーパス
５０１〜５０３  遅延バッファ
６１１〜６１３  論理回路
【図１】
2010160580.tif 000003
【図２】
2010160580.tif 000004
【図３】
2010160580.tif 000005
【図４】
2010160580.tif 000006
【図５】
2010160580.tif 000007
【図６】
2010160580.tif 000008
【図７】
2010160580.tif 000009
【図８】
2010160580.tif 000010
【図９】
2010160580.tif 000011
【図１０】
2010160580.tif 000012