JP2010160580A - ホールドエラー修正方法、装置及びプログラム - Google Patents

ホールドエラー修正方法、装置及びプログラム Download PDF

Info

Publication number
JP2010160580A
JP2010160580A JP2009001130A JP2009001130A JP2010160580A JP 2010160580 A JP2010160580 A JP 2010160580A JP 2009001130 A JP2009001130 A JP 2009001130A JP 2009001130 A JP2009001130 A JP 2009001130A JP 2010160580 A JP2010160580 A JP 2010160580A
Authority
JP
Japan
Prior art keywords
hold error
hold
path
end point
error
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2009001130A
Other languages
English (en)
Inventor
Akira Mizutani
亮 水谷
Yasuji Shigihara
靖二 鴫原
Michitaka Hashimoto
通高 橋本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009001130A priority Critical patent/JP2010160580A/ja
Priority to US12/652,196 priority patent/US20100175037A1/en
Publication of JP2010160580A publication Critical patent/JP2010160580A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31725Timing aspects, e.g. clock distribution, skew, propagation delay
    • G01R31/31726Synchronization, e.g. of test, clock or strobe signals; Signals in different clock domains; Generation of Vernier signals; Comparison and adjustment of the signals

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

【課題】半導体集積回路の大規模化・複雑化に対応可能なホールドエラー修正方法等を提供する。
【解決手段】タイミング解析(S201,S202)の結果より、ホールドエラーが発生しているホールドエラーパスについて、パスの始点でのホールドエラー量及びその始点から始まる全データパスに対するセットアップのマージン最小値の組を含むホールドエラーパス始点情報と、パスの終点でのホールドエラー量及びその終点へ至る全データパスに対するセットアップのマージン最小値の組を含むホールドエラーパス終点情報とが得られる(S203)。得られた情報を基に、ホールドエラーパスは、ホールドエラーを解消可能か否かによって分類される(S205)。ホールドエラーを解消可能なパスは、所定の基準に従ってグループ化される(S206)。最後に、グループごとに、始点又は終点のどちらに遅延バッファを挿入するかが決定される(S207)。
【選択図】図2

Description

本発明は、半導体集積回路のホールドエラー修正方法、装置及びプログラムに関する。
LSI(Large Scale Integration)等の半導体集積回路のホールドエラー修正手法として、データパス上の全回路素子におけるホールドエラー量及びセットアップマージン値を考慮して遅延バッファ挿入箇所を探索するものが知られている。
図1は、従来のホールドエラー修正方法を説明するフローチャートである。
ステップS101でホールドタイミング解析が実行される。また、ステップS102でセットアップタイミング解析が実行される。これらのタイミング解析は、集積回路で論理回路を利用する場合に、論理回路中のパスの伝播遅延時間を積算し、それらの値から、Dフリップフロップ等の入力に定義されるタイミング制約の違反があるか否かを判定するためのものである。ホールドタイミング解析では、パスの始点及び終点、更に、ホールドエラーが発生する場合にはホールドエラー値が得られる。セットアップタイミング解析では、パスの始点及び終点、更に、セットアップ制約に対してどれだけ余裕があるかを表すセットアップマージン値が得られる。結果として、ステップS103で、パスごとに、始点及び終点の組並びに始点及び終点の夫々のホールドエラー値及びセットアップマージン値の組が作られる。
ステップS104で、パスごとの値の組から、ホールドエラーパスが抽出される。抽出されたパスに対して、ステップS105で、ホールドエラー違反を改善するための最適な遅延バッファ挿入箇所が探索される。遅延バッファ挿入箇所を探索するための具体的な方法として、データパスを始点又は終点からトレースしていく方法や、データパス上の回路素子に評価関数を設定し優先順位付けを行う方法等がある。
特開2001−188819号公報 特開2002−073714号公報 特開2003−162556号公報 特開2008−152329号公報 特開2001−044287号公報
しかし、上述したような従来の方法は、全てのホールドエラーパスに対して遅延バッファ挿入箇所を探索するので、ホールドエラー解消が不能なパスか否かを判定するためにデータパス上の回路素子全ての探索を行わなければならない。よって、従来の方法は、半導体集積回路の大規模化・複雑化に伴うデータパスの増大により、遅延バッファ挿入箇所の探索量が爆発的に増加し、解を得るために膨大な処理時間を必要とし実用的でなくなるという問題を有する。
本発明は、上記問題を鑑みなされたものであり、半導体集積回路の大規積化・複雑化に対応可能なホールドエラー修正方法、装置及びプログラムを提供することを目的とする。
上記目的を達成するために、本発明の一態様によれば、半導体集積回路におけるセットアップ時間及びホールド時間に関して定義されるタイミング制約の違反があるかどうかを解析するホールドタイミング解析及びセットアップタイミング解析を実行する工程と、
前記ホールドタイミング解析及び前記セットアップタイミング解析の各結果より、ホールドエラーが発生しているホールドエラーパスについて、該ホールドエラーパスの始点におけるホールドエラー量及び前記始点から始まるデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス始点情報と、前記ホールドエラーパスの終点におけるホールドエラー量及び前記終点へ至るデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス終点情報とを得る工程と、
前記ホールドエラーパス始点情報及び前記ホールドエラーパス終点情報に基づき、前記ホールドエラーパスを、ホールドエラーが解消可能であるホールドエラー解消可能パス又はホールドエラーが解消不可能であるホールドエラー解消不能パスのいずれかに分類する工程と、
前記ホールドエラー解消可能パスを、該ホールドエラー解消可能パスの各自の始点又は終点が一致するかどうかによってグループ化する工程と、
グループ化された前記ホールドエラー解消可能パスのグループごとに、前記ホールドエラー解消可能パスの始点又は終点のどちらに遅延バッファを挿入するかを決定する工程と
を有する、半導体集積回路のホールドエラー修正方法が提供される。
これにより、バッファ挿入箇所の探索に要するメモリ量及び処理時間が従来の方法に比べて低減されるので、半導体集積回路の大規積化・複雑化に対応することができる。
また、本発明の他の態様によれば、上述されたホールドエラー修正方法をコンピュータに実行させるホールドエラー修正プログラム及びその記録媒体が提供される。
本開示の方法により、半導体集積回路の大規積化・複雑化に対応することが可能となる。
従来のホールドエラー修正方法を説明するフローチャートである。 第1実施例に従うホールドエラー修正方法を説明するフローチャートである。 ホールドエラーパスのグループ化動作を詳述する図である。 バッファ挿入箇所の選択動作を詳述する図である。 第2実施例に従うホールドエラー修正方法を説明するフローチャートである。 第3実施例に従うホールドエラー修正方法を説明するフローチャートである。 一実施例に従うホールドエラー修正方法の対象となる回路のブロック図を示す。 一実施例に従うホールドエラー修正方法によって最終的に遅延バッファを挿入された回路のブロック図を示す。 一実施形態に従うホールドエラー修正方法を従来の方法と比較するための回路例を示す。 一実施例に従うホールドエラー修正プログラムを実行するコンピュータのハードウェア構成例を示す。
本発明を実施するための最良の形態を、添付の図面を参照して説明する。
図2は、第1実施例に従うホールドエラー修正方法を説明するフローチャートである。
ステップS201でホールドタイミング解析が実行され、ステップS202でセットアップタイミング解析が実行される。これらのタイミング解析は、集積回路で論理回路を利用する場合に、論理回路中のパスの伝播遅延時間を積算し、それらの値から、Dフリップフロップ等の入力に定義されるタイミング制約の違反があるか否かを判定するためのものである。ホールドタイミング解析では、パスの始点及び終点、更に、ホールドエラーが発生する場合にはホールドエラー値が得られる。セットアップタイミング解析では、パスの始点及び終点、更に、セットアップ制約に対してどれだけ余裕があるかを表すセットアップマージン値が得られる。
ステップS203で、ホールドタイミング解析及びセットアップタイミング解析の各結果より、ホールドエラーが発生しているホールドエラーパスの夫々について、ホールドエラーパス始点情報及びホールドエラーパス終点情報が得られる。ホールドエラー始点情報は、ホールドエラーパスの始点におけるホールドエラー量を示す値及びその始点から始まる全データパスに対するセットアップのマージン最小値の組を含む。ホールドエラーパス終点情報は、ホールドエラーパスの終点におけるホールドエラー量を示す値及びその終点へ至る全データパスに対するセットアップのマージン最小値の組を含む。そして、ステップS204で、パスごとのホールドエラーパス始点情報及びホールドエラーパス終点情報が集約され、結果として、複数のデータパスの中からホールドエラーパスが抽出される。
ステップS205で、ホールドエラーパスは、所定の判定基準に従って、ホールドエラーが解消可能なパスと解消不能なパスとに分類される。この分類方法としては、パスの始点、終点、ホールドエラー値及びセットアップマージン値を入力とする評価関数を定義することが考えられる。例えば、以下の式:
a×(始点セットアップマージン値)−b×(始点ホールドエラー値)>c
かつ
d×(終点セットアップマージン値)−e×(終点ホールドエラー値)>f
が満たされるならば、対象のホールドエラーパスはホールドエラー解消可能パスであると判断される。ここで、a、b、c、d、e及びfの各係数は、半導体集積回路の要求性能によって定まる値であり、設計者又はテクノロジ提供者によって定義される。
次に、ステップS206で、ホールドエラー解消可能なパスと判断されたホールドエラーパスは、複数のホールドエラーパスグループを形成するようグループ化される。形成されたグループごとに、ステップS207で、パスの始点又は終点のどちらに遅延バッファを挿入するかが選択される。これにより、遅延バッファ挿入箇所を示す情報が作成される。バッファ挿入箇所は、バッファ個数、遅延量、挿入面積、消費電力、ホールドエラー修正可能データパス数、バッファ挿入によるレイアウト変更処理量等を組み合わせたコスト関数を用意して、グループごとにコスト最小になるよう選択されることが望ましい。
バッファ挿入箇所の探索に要するメモリ量及び処理時間は、ホールドエラーが発生したデータパス数分の始点、終点及びバッファ挿入量の情報に限られるため、回路規模やデータパスの複雑さに関わらずホールドエラー数に依存する。よって、本実施例のように、ホールドエラーパスを分類しグループ化し、グループごとにバッファ挿入箇所を選択することで、バッファ挿入箇所の探索に要するメモリ量及び処理時間は、従来の方法に比べて低減される。
図3は、ホールドエラー解消可能なパスと判断されたホールドエラーパスをグループ化するための動作ステップ(S206)を詳述する図である。
最初に、ステップS301で、対象のホールドエラーパスの始点又は終点の少なくとも一方が、既存のグループに含まれる他のホールドエラーパスの始点又は終点となっているか否かが判断される。対象のホールドエラーパスの始点又は終点のいずれも既存のグループに含まれる他のホールドエラーパスの始点又は終点となっていない場合は、ステップS302で、その対象のホールドエラーパスを含む新規のグループが追加される。その後、ステップS303で、対象のホールドエラーパスの始点及び終点は、新規のグループ又は該当する既存のグループに対応付けられる。
次に、ステップS304で、ホールドエラー解消可能なパスと判断された全てのホールドエラーパスについてグループ分けが行われたかどうかが判断される。そして、ホールドエラー解消可能なパスと判断された全てのホールドエラーパスについてグループ分けが行われるまで、ステップS301乃至S303が繰り返される。最後に、ステップS305で、グループごとにパスが分割される。
図4は、ホールドエラーパスグループごとにバッファ挿入箇所を選択するための動作ステップ(S207)を詳述する図である。
最初に、ステップS401で、対象のホールドエラーパスグループについて、グループに含まれる各ホールドエラーパスのホールドエラー量が始点及び終点の夫々に分けられる。
ステップS402で、始点について、バッファ個数、遅延量、挿入面積、消費電力、ホールドエラー修正可能データパス数、バッファ挿入によるレイアウト変更処理量等を組み合わせたコスト関数を用いて、遅延バッファ挿入コストが計算される。同様に、ステップS403で、終点についても遅延バッファ挿入コストが計算される。
ステップS404で、始点側の遅延バッファ挿入コストと終点側の遅延バッファ挿入コストとが比較される。始点側の遅延バッファ挿入コストの方が小さい場合は、そのグループについては始点側に遅延バッファが挿入される。ステップS405で、始点側に遅延バッファが挿入された場合の遅延バッファ挿入箇所を示す情報が作成される。一方、終点側の遅延バッファ挿入コストの方が小さい場合は、そのグループについては終点側に遅延バッファが挿入される。ステップS406で、終点側に遅延バッファが挿入された場合の遅延バッファ挿入箇所を示す情報が作成される。
次に、ステップS407で、全てのホールドエラーパスグループについてバッファ挿入箇所が選択されたかどうかが判断される。そして、全てのホールドエラーパスグループについてバッファ挿入箇所が選択されるまで、ステップS401乃至S406が繰り返される。最後に、ステップS408で、グループごとに作成された情報が集約される。
図5は、第2実施例に従うホールドエラー修正方法を説明するフローチャートである。
図5に表される実施例は、ホールドエラーが発生したパスと始点あるいは終点を同じとするパスに対してのみセットアップタイミング解析を行う点で、図2を参照して説明された第1実施例と相違する。ステップS501でホールドタイミング解析が実行され、パスの始点及び終点、更に、ホールドエラーが発生する場合にはホールドエラー値が得られる。次に、ステップS502で、ホールドエラーが発生したパスと始点あるいは終点を同じとするパスに対してのみ、セットアップタイミング解析が実行される。
このように、セットアップタイミング解析では、ホールドエラーの発生した始点及び終点の情報を利用することで、回路全体のセットアップマージンを計算する必要がなくなり、処理時間が短縮される。
図6は、第3実施例に従うホールドエラー修正方法を説明するフローチャートである。
図6に表される実施例は、ホールドタイミング解析及びセットアップタイミング解析が複数の動作モードで実行される点で、図2を参照して説明された第1実施例及び図5を参照して説明された第2実施例の夫々と相違する。ある1つの動作モードについて、ステップS601でホールドタイミング解析が実行され、ステップS602でセットアップタイミング解析が実行される。
次に、ステップS603で、全ての動作モードについてホールドタイミング解析及びセットアップタイミング解析が実行されたかどうかが判断される。そして、全ての動作モードについてホールドタイミング解析及びセットアップタイミング解析が実行されるまで、ステップS601及びS602が繰り返される。
従って、ステップS604では、動作モードごとに、ホールドエラーが発生しているホールドエラーパスの夫々について、ホールドエラーパス始点情報及びホールドエラーパス終点情報が得られる。ホールドエラー始点情報は、ホールドエラーパスの始点におけるホールドエラー量を示す値及びその始点から始まる全データパスに対するセットアップのマージン最小値の組を含む。ホールドエラーパス終点情報は、ホールドエラーパスの終点におけるホールドエラー量を示す値及びその終点へ至る全データパスに対するセットアップのマージン最小値の組を含む。すなわち、以降の工程で用いられる値の組は、最終的に、パスごとのみならず、全ての動作モードを考慮したものが得られる。
このようにして一実施形態に従うホールドエラー修正方法の処理を拡張することも可能である。
図7は、一実施例に従うホールドエラー修正方法の対象となる回路のブロック図を示す。
図7で、301〜305は始点側のフリップフロップ回路を表し、306〜309は終点側のフリップフロップ回路を表す。データは、始点側のフリップフロップ回路301〜305のいずれか1つから組合せ論理回路310を通って終点側のフリップフロップ回路306〜309のいずれか1つへ至る。
図7は、ホールドタイミング解析及びセットアップタイミング解析の結果からホールドエラーパスの情報を構築した状態を表している。ホールドタイミング解析及びセットアップタイミング解析により、始点及び終点の組並びに始点及び終点の夫々のホールドエラー値及びセットアップマージン値が得られる。これらの値より、始点又は終点に遅延バッファを挿入した場合に、その始点又は終点に接続するデータパスでセットアップ制約に対してどれだけ余裕があるかが判定され得る。
例えば、始点側のフリップフロップ回路301〜305から終点側のフリップフロップ回路306〜309へ向かう矢印401乃至408によって示されるようなホールドエラーパスが得られる。フリップフロップ回路301の出力を始点としてフリップフロップ回路306及び307の夫々へ向かう2つのホールドエラーパス401、402が存在する。フリップフロップ回路302の出力を始点としてフリップフロップ回路307及び308の夫々へ向かう2つのホールドエラーパス403、404が存在する。フリップフロップ回路303の出力を始点としてフリップフロップ回路308及び309の夫々へ向かう2つのホールドエラーパス405、406が存在する。フリップフロップ回路304の出力を始点としてフリップフロップ回路309へ向かう1つのホールドエラーパス407が存在する。フリップフロップ回路305の出力を始点としてフリップフロップ回路309へ向かう1つのホールドエラーパス408が存在する。
更に、図中でホールドエラーパスの始点及び終点においてマル又はバツによって表されるように、始点又は終点に遅延バッファを挿入した場合に各データパスでセットアップ制約が満足されるか否かが判定される。この判定結果に基づき、ホールドエラーパスをホールドエラー解消可能パス又はホールドエラー解消不能パスのいずれかに分類する。具体的に、始点又は終点の少なくとも一方に遅延バッファを挿入することでセットアップ制約を満足しないデータパスは、ホールドエラー解消不能パスであると判断される。図7の例では、フリップフロップ回路305の出力を始点とするホールドエラーパス408について、その始点に遅延バッファを挿入した場合にはセットアップ制約が満足されない。また、フリップフロップ回路308の入力を終点とするホールドエラーパス404及び405の少なくとも1つについて、その終点に遅延バッファを挿入した場合にはセットアップ制約が満足されない。よって、フリップフロップ回路305の出力を始点とするホールドエラーパス408並びにフリップフロップ回路308の入力を終点とするホールドエラーパス404及び405は、ホールドエラー解消不能パスであると判断される。一方、それ以外のホールドエラーパス401〜403、406及び407は、ホールドエラー解消可能パスであると判断される。
次いで、図3で詳述されたように、ホールドエラー解消可能パスであると判断されたホールドエラーパス401〜403、406及び407について、始点及び/又は終点につながりがあるか否かによってグループ分けを行う。例えば、ホールドエラーパス401及び402は共にフリップフロップ回路301の出力を始点としているので、同じグループに属するとする。また、ホールドエラーパス403は、ホールドエラーパス402と同じくフリップフロップ回路307の入力を終点としているので、ホールドエラーパス402と同じグループに属するとする。このようにして、ホールドエラーパス401、402及び403を含む第1のグループと、ホールドエラーパス406及び407を含む第2のグループとが形成される。
最終的に、図4で詳述されたように、形成されたグループごとに、始点又は終点のどちらに遅延バッファが挿入されるかが決定される。例えば、バッファ挿入コストの計算はバッファ個数で行われ、始点又は終点のいずれにおいても同数となる場合は始点を優先的に選択することとするようにしても良い。図8は、一実施例に従うホールドエラー修正方法によって最終的に遅延バッファを挿入された回路のブロック図を示す。図8の例で、ホールドエラーパス401、402及び403を含む第1のグループでは、遅延バッファ501及び502はホールドエラーパスの始点に挿入される。一方、ホールドエラーパス406及び407を含む第2のグループでは、遅延バッファ503はホールドエラーパスの終点に挿入される。挿入される遅延バッファ501乃至503の夫々は、同じ特性を有する必要はなく、むしろ、各ホールドエラーパスにおいてホールドエラーを解消するに足る遅延量を有する異なるバッファである。
以上説明してきた実施形態によれば、ホールドエラーが発生するデータパスの始点及び終点の組のみに着目するため、従来の方法に比べて処理負荷を抑制することができる。従来の方法では、最適なバッファ挿入量及び位置を求めるために、ホールドエラーが発生するデータパスの全経路についてホールドエラー値及びセットアップマージン値を得る必要があった。これらの値の保持に必要なメモリ量及び遅延バッファ挿入箇所を選択するための計算量は、回路規模に依存し、大規模回路では処理負荷の増大につながる。
図9は、一実施形態に従うホールドエラー修正方法を従来の方法と比較するための回路例を示す。(a)は従来の方法を説明するための回路を示し、(b)は本発明の一実施形態に従うホールドエラー修正方法を説明するための回路を示す。
図9に示される例となる回路は、始点側にフリップフロップ回路601〜603を設けられ、終点側にフリップフロップ回路604及び605を設けられている。フリップフロップ回路601からのデータは、論理回路611を通ってフリップフロップ回路604へ伝えられると共に、更に論理回路613を通ってフリップフロップ回路605へ伝えられる。フリップフロップ回路602からのデータは、論理回路611をフリップフロップ回路604へ伝えられると共に、更に論理回路613を通って、又は論理回路611を通らずに論理回路612及び613を通って、フリップフロップ回路605へ伝えられる。フリップフロップ回路603からのデータは、論理回路612及び613を通ってフリップフロップ回路605へ伝えられる。従来の方法では、このような回路全体の接続情報を知っておく必要がある。しかし、本発明の一実施形態に従う方法によれば、図9(b)に示されるように、フリップフロップ回路間にある組合せ論理回路615の詳細な接続態様を知っておく必要はない。
また、従来の方法では、図9(a)に示される回路例において、例えば10箇所のノード(破線)についてホールドエラー値及びセットアップマージン値のデータ保持が必要とされる。更に、適切なバッファ挿入箇所を探索するために、(210−1)通りの組み合わせから1つを選択する処理が必要とされる。しかし、本発明の一実施形態に従う方法によれば、5つのフリップフロップ回路の接続情報及び5箇所のノード(フリップフロップ回路601〜603の夫々の出力及びフリップフロップ回路604、605の夫々の入力)についてのデータさえ保持すれば良い。よって、本発明の一実施形態に従う方法は、図9に示される回路例において、従来の方法と比較しておよそ半分のメモリ使用量で足りる。また、バッファ挿入箇所の探索は、データパスの始点側又は終点側の2通りからの選択処理により達成される。
上記実施形態により得られる効果は、回路の複雑さが増すほどに顕著となる。計算量を比較するために、少し複雑な例として、フリップフロップ回路の数が100で且つデータパスが全て3段の2入力組合せ論理回路で構成された回路を考える。このような回路では、1つの終点側フリップフロップ回路までには8つの始点側フリップフロップ回路からのデータパスが存在し、全データパスは約800になり、全ノードは1500以上になる。もし全データパスがホールドエラーを起こしたとすると、従来の方法では、1500以上のノード全てに対してバッファ挿入/非挿入の判定結果をフラグとして付与する必要がある。しかし、本発明の実施形態に従う方法によれば、始点又は終点の選択結果に応じて、多くても100程度のノードへのフラグ付与で足りる。
確かに、従来技術でも、始点及び終点のみに着目して行われるホールドエラー修正方法が存在しないわけではない。しかし、この従来技術に従う方法では、ホールドエラーが発生した各データパスを順次に処理していくので、回路全体を見た場合に遅延挿入量を最適化することが不可能となる場合がある。例えば、図7及び図8に示された回路を例とすると、本発明の一実施形態に従う方法によれば、回路全体として挿入される遅延バッファの個数は3個であった。しかし、従来技術に従う方法では、ホールドエラーパスを順次に処理するために、遅延バッファを挿入してもセットアップマージンを満足することができるデータパスの始点側ノードに遅延バッファが挿入されることとなる。すなわち、回路全体として挿入される遅延バッファの個数は4個であり、本発明の一実施形態に従う方法の場合よりも多い。このように、本発明の一実施形態に従う方法によれば、ホールドエラーを解消しながら、そのための回路規模の増大を最小限とすることができる。言い換えると、上記実施形態によれば、回路全体で遅延バッファ挿入量の最適化を図ることが可能となる。これは、ホールドエラーパスをホールドエラーが解消可能か否かによって分類し、更にホールドエラーパスごとに適切にグループ化し、パスグループごとに始点又は終点のどちらかにバッファを挿入するよう選択を行うことによる。
また、従来技術に従う他のホールドエラー修正方法として、クロックツリーを修正して始点側フリップフロップ回路のクロックを遅らせる、又は終点側フリップフロップ回路のクロックを早めるという方法も存在する。この方法では、ホールドエラー発生パスの始点及び終点の夫々のホールドエラー値及びセットアップマージン値に加え、始点及び終点の夫々の前段及び後段のデータパスについてもこれらの値を保持する必要がある。よって、本発明の一実施形態に従う方法に比べて最大3倍のメモリ量を要するため不利である。
上記実施形態に従うホールドエラー修正方法は、コンピュータにインストールされて実行されるプログラムとして具現化されても良い。
図10は、一実施例に従うホールドエラー修正プログラムを実行するコンピュータのハードウェア構成例を示す。図10に示されるように、コンピュータ10は、バス16によって相互に接続されたドライブ装置11と、補助記憶装置12と、メモリ装置13と、演算処理装置14と、インターフェース装置15とを有する。
ドライブ装置11は、記録媒体17を読み取るための装置である。プログラムを記録した記録媒体17がドライブ装置11にセットされると、プログラムが記録媒体17からドライブ装置11を介して補助記憶装置12にインストールされる。例えば、ホールドエラー修正プログラムは、例えばCD−ROM等の記録媒体17に記録されており、これをコンピュータ10が読み込むことでインストールされる。
補助記憶装置12は、インストールされたプログラムを格納すると共に、必要なファイル及びデータ等を格納する装置である。メモリ装置13は、プログラムの起動指示があった場合に、補助記憶装置12からプログラムを読み出して格納する装置である。演算処理装置14は、メモリ装置13に格納されたプログラムに従って、コンピュータ10に係る機能を実行する装置である。インターフェース装置15は、コンピュータ10をインターネット、ローカルエリアネットワーク(LAN)又はイントラネット等のネットワークへ接続するための装置である。例えば、ホールドエラー修正プログラムは、ネットワークを介して接続される外部サーバに記憶されており、これをコンピュータ10が読み込むことでインストールされても良い。
以上、発明を実施するための最良の形態について説明を行ったが、本発明は、この最良の形態で述べた実施の形態に限定されるものではない。本発明の主旨を損なわない範囲で変更することが可能である。
例えば、ホールドエラー修正方法を実現するホールドエラー修正装置がハードウェア、ソフトウェア又はこれらの組み合わせによって提供され得る。ホールドエラー修正装置は、半導体集積回路で発生するホールドエラーを修正するホールドエラー修正装置であって、解析手段と、ホールドエラー情報取得手段と、分類手段と、グループ化手段と、決定手段とを有する。解析手段は、半導体集積回路におけるセットアップ時間及びホールド時間に関して定義されるタイミング制約の違反があるかどうかを解析するホールドタイミング解析及びセットアップタイミング解析を行う。ホールドエラー情報取得手段は、解析手段からの各結果より、ホールドエラーが発生しているホールドエラーパスについて、ホールドエラーパス始点情報及びホールドエラーパス終点情報を得る。分類手段は、ホールドエラー情報取得手段の出力に基づき、ホールドエラーパスを、ホールドエラーが解消可能であるホールドエラー解消可能パス又はホールドエラーが解消不可能であるホールドエラー解消不能パスのいずれかに分類する。グループ化手段は、分類手段によりホールドエラー解消可能パスと分類されたパスを、それらのホールドエラー解消可能パスの各自の始点又は終点が一致するかどうかによってグループ化する。最後に、決定手段は、グループ化手段によってグループ化されたホールドエラー解消可能パスのグループごとに、ホールドエラー解消可能パスの始点又は終点のどちらに遅延バッファを挿入するかを決定する。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
半導体集積回路におけるセットアップ時間及びホールド時間に関して定義されるタイミング制約の違反があるかどうかを解析するホールドタイミング解析及びセットアップタイミング解析を実行する工程と、
前記ホールドタイミング解析及び前記セットアップタイミング解析の各結果より、ホールドエラーが発生しているホールドエラーパスについて、該ホールドエラーパスの始点におけるホールドエラー量及び前記始点から始まるデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス始点情報と、前記ホールドエラーパスの終点におけるホールドエラー量及び前記終点へ至るデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス終点情報とを得る工程と、
前記ホールドエラーパス始点情報及び前記ホールドエラーパス終点情報に基づき、前記ホールドエラーパスを、ホールドエラーが解消可能であるホールドエラー解消可能パス又はホールドエラーが解消不可能であるホールドエラー解消不能パスのいずれかに分類する工程と、
前記ホールドエラー解消可能パスを、該ホールドエラー解消可能パスの各自の始点又は終点が一致するかどうかによってグループ化する工程と、
グループ化された前記ホールドエラー解消可能パスのグループごとに、前記ホールドエラー解消可能パスの始点又は終点のどちらに遅延バッファを挿入するかを決定する工程と
を有する、半導体集積回路のホールドエラー修正方法。
(付記2)
前記セットアップタイミング解析は、前記ホールドタイミング解析においてホールドエラーが発生したパスと始点あるいは終点を同じとするパスに対して実行される、付記1記載のホールドエラー修正方法。
(付記3)
前記ホールドタイミング解析及びセットアップタイミング解析を実行する工程は、複数の所定の動作モードについて実行される、付記1又は2記載のホールドエラー修正方法。
(付記4)
前記ホールドエラーパスは、前記ホールドエラーパス始点情報及び前記ホールドエラーパス終点情報を入力とする評価関数:
a×(始点セットアップマージン値)−b×(始点ホールドエラー値)>c
かつ
d×(終点セットアップマージン値)−e×(終点ホールドエラー値)>f
を満たす場合に、ホールドエラー解消可能パスである判断される、付記1乃至3記載のホールドエラー修正方法。
(付記5)
前記遅延バッファの挿入箇所は、バッファ個数、遅延量、挿入面積、消費電力、ホールドエラー修正可能データパス数、バッファ挿入によるレイアウト変更処理量を組み合わせたコスト関数を用いて、前記ホールドエラー解消可能パスのグループごとにコスト最小になるよう決定される、付記1乃至3記載のホールドエラー修正方法。
(付記6)
半導体集積回路で発生するホールドエラーを修正するホールドエラー修正プログラムであって、
コンピュータに
半導体集積回路におけるセットアップ時間及びホールド時間に関して定義されるタイミング制約の違反があるかどうかを解析するホールドタイミング解析及びセットアップタイミング解析を実行する工程と、
前記ホールドタイミング解析及び前記セットアップタイミング解析の各結果より、ホールドエラーが発生しているホールドエラーパスについて、該ホールドエラーパスの始点におけるホールドエラー量及び前記始点から始まるデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス始点情報と、前記ホールドエラーパスの終点におけるホールドエラー量及び前記終点へ至るデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス終点情報とを得る工程と、
前記ホールドエラーパス始点情報及び前記ホールドエラーパス終点情報に基づき、前記ホールドエラーパスを、ホールドエラーが解消可能であるホールドエラー解消可能パス又はホールドエラーが解消不可能であるホールドエラー解消不能パスのいずれかに分類する工程と、
前記ホールドエラー解消可能パスを、該ホールドエラー解消可能パスの各自の始点又は終点が一致するかどうかによってグループ化する工程と、
グループ化された前記ホールドエラー解消可能パスのグループごとに、前記ホールドエラー解消可能パスの始点又は終点のどちらに遅延バッファを挿入するかを決定する工程と
を実行させるホールドエラー修正プログラム。
(付記7)
ネットワークを介して前記コンピュータにロードされる付記6記載のホールドエラー修正プログラム。
(付記8)
付記6記載のホールドエラー修正プログラムを記録したコンピュータ読取可能な記録媒体。
(付記9)
半導体集積回路で発生するホールドエラーを修正するホールドエラー修正装置であって、
半導体集積回路におけるセットアップ時間及びホールド時間に関して定義されるタイミング制約の違反があるかどうかを解析するホールドタイミング解析及びセットアップタイミング解析を行う解析手段と、
前記解析手段からの各結果より、ホールドエラーが発生しているホールドエラーパスについて、該ホールドエラーパスの始点におけるホールドエラー量及び前記始点から始まるデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス始点情報と、前記ホールドエラーパスの終点におけるホールドエラー量及び前記終点へ至るデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス終点情報とを得るホールドエラー情報取得手段と、
前記ホールドエラー情報取得手段の出力に基づき、前記ホールドエラーパスを、ホールドエラーが解消可能であるホールドエラー解消可能パス又はホールドエラーが解消不可能であるホールドエラー解消不能パスのいずれかに分類する分類手段と、
前記分類手段により前記ホールドエラー解消可能パスと分類されたパスを、該ホールドエラー解消可能パスの各自の始点又は終点が一致するかどうかによってグループ化するグループ化手段と、
前記グループ化手段によってグループ化された前記ホールドエラー解消可能パスのグループごとに、前記ホールドエラー解消可能パスの始点又は終点のどちらに遅延バッファを挿入するかを決定する決定手段と
を有するホールドエラー修正装置。
10 コンピュータ
17 記録媒体
301〜309,601〜605 フリップフロップ回路
310,615 組合せ論理回路
401〜408 ホールドエラーパス
501〜503 遅延バッファ
611〜613 論理回路

Claims (5)

  1. 半導体集積回路におけるセットアップ時間及びホールド時間に関して定義されるタイミング制約の違反があるかどうかを解析するホールドタイミング解析及びセットアップタイミング解析を実行する工程と、
    前記ホールドタイミング解析及び前記セットアップタイミング解析の各結果より、ホールドエラーが発生しているホールドエラーパスについて、該ホールドエラーパスの始点におけるホールドエラー量及び前記始点から始まるデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス始点情報と、前記ホールドエラーパスの終点におけるホールドエラー量及び前記終点へ至るデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス終点情報とを得る工程と、
    前記ホールドエラーパス始点情報及び前記ホールドエラーパス終点情報に基づき、前記ホールドエラーパスを、ホールドエラーが解消可能であるホールドエラー解消可能パス又はホールドエラーが解消不可能であるホールドエラー解消不能パスのいずれかに分類する工程と、
    前記ホールドエラー解消可能パスを、該ホールドエラー解消可能パスの各自の始点又は終点が一致するかどうかによってグループ化する工程と、
    グループ化された前記ホールドエラー解消可能パスのグループごとに、前記ホールドエラー解消可能パスの始点又は終点のどちらに遅延バッファを挿入するかを決定する工程と
    を有する、半導体集積回路のホールドエラー修正方法。
  2. 前記セットアップタイミング解析は、前記ホールドタイミング解析においてホールドエラーが発生したパスと始点あるいは終点を同じとするパスに対して実行される、請求項1記載のホールドエラー修正方法。
  3. 前記ホールドタイミング解析及びセットアップタイミング解析を実行する工程は、複数の所定の動作モードについて実行される、請求項1又は2記載のホールドエラー修正方法。
  4. 半導体集積回路で発生するホールドエラーを修正するホールドエラー修正プログラムであって、
    コンピュータに
    半導体集積回路におけるセットアップ時間及びホールド時間に関して定義されるタイミング制約の違反があるかどうかを解析するホールドタイミング解析及びセットアップタイミング解析を実行する工程と、
    前記ホールドタイミング解析及び前記セットアップタイミング解析の各結果より、ホールドエラーが発生しているホールドエラーパスについて、該ホールドエラーパスの始点におけるホールドエラー量及び前記始点から始まるデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス始点情報と、前記ホールドエラーパスの終点におけるホールドエラー量及び前記終点へ至るデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス終点情報とを得る工程と、
    前記ホールドエラーパス始点情報及び前記ホールドエラーパス終点情報に基づき、前記ホールドエラーパスを、ホールドエラーが解消可能であるホールドエラー解消可能パス又はホールドエラーが解消不可能であるホールドエラー解消不能パスのいずれかに分類する工程と、
    前記ホールドエラー解消可能パスを、該ホールドエラー解消可能パスの各自の始点又は終点が一致するかどうかによってグループ化する工程と、
    グループ化された前記ホールドエラー解消可能パスのグループごとに、前記ホールドエラー解消可能パスの始点又は終点のどちらに遅延バッファを挿入するかを決定する工程と
    を実行させるホールドエラー修正プログラム。
  5. 半導体集積回路で発生するホールドエラーを修正するホールドエラー修正装置であって、
    半導体集積回路におけるセットアップ時間及びホールド時間に関して定義されるタイミング制約の違反があるかどうかを解析するホールドタイミング解析及びセットアップタイミング解析を行う解析手段と、
    前記解析手段からの各結果より、ホールドエラーが発生しているホールドエラーパスについて、該ホールドエラーパスの始点におけるホールドエラー量及び前記始点から始まるデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス始点情報と、前記ホールドエラーパスの終点におけるホールドエラー量及び前記終点へ至るデータパスの全てに対するセットアップのマージン最小値の組を含むホールドエラーパス終点情報とを得るホールドエラー情報取得手段と、
    前記ホールドエラー情報取得手段の出力に基づき、前記ホールドエラーパスを、ホールドエラーが解消可能であるホールドエラー解消可能パス又はホールドエラーが解消不可能であるホールドエラー解消不能パスのいずれかに分類する分類手段と、
    前記分類手段により前記ホールドエラー解消可能パスと分類されたパスを、該ホールドエラー解消可能パスの各自の始点又は終点が一致するかどうかによってグループ化するグループ化手段と、
    前記グループ化手段によってグループ化された前記ホールドエラー解消可能パスのグループごとに、前記ホールドエラー解消可能パスの始点又は終点のどちらに遅延バッファを挿入するかを決定する決定手段と
    を有するホールドエラー修正装置。
JP2009001130A 2009-01-06 2009-01-06 ホールドエラー修正方法、装置及びプログラム Withdrawn JP2010160580A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009001130A JP2010160580A (ja) 2009-01-06 2009-01-06 ホールドエラー修正方法、装置及びプログラム
US12/652,196 US20100175037A1 (en) 2009-01-06 2010-01-05 Method, apparatus, and program for correcting hold error

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009001130A JP2010160580A (ja) 2009-01-06 2009-01-06 ホールドエラー修正方法、装置及びプログラム

Publications (1)

Publication Number Publication Date
JP2010160580A true JP2010160580A (ja) 2010-07-22

Family

ID=42312540

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009001130A Withdrawn JP2010160580A (ja) 2009-01-06 2009-01-06 ホールドエラー修正方法、装置及びプログラム

Country Status (2)

Country Link
US (1) US20100175037A1 (ja)
JP (1) JP2010160580A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8453090B2 (en) * 2010-10-21 2013-05-28 Global Unichip Corp. System and method for optimizing logic timing

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4237434B2 (ja) * 2001-11-26 2009-03-11 富士通マイクロエレクトロニクス株式会社 集積回路のホールドタイムエラー修正方法及びその修正プログラム
EP1464970A1 (en) * 2003-04-04 2004-10-06 Agilent Technologies Inc Loop-back testing with delay elements

Also Published As

Publication number Publication date
US20100175037A1 (en) 2010-07-08

Similar Documents

Publication Publication Date Title
JP5014920B2 (ja) 回路設計方法、ならびにその方法により製造される集積回路
WO2010092825A1 (ja) 回路解析方法
US7380228B2 (en) Method of associating timing violations with critical structures in an integrated circuit design
JP5041882B2 (ja) 半導体集積回路の設計方法及び設計支援装置
JP2008129724A (ja) 半導体レイアウト設計装置
US8527925B2 (en) Estimating clock skew
JP4969416B2 (ja) 動作タイミング検証装置及びプログラム
US7168057B2 (en) Targeted optimization of buffer-tree logic
JP4736822B2 (ja) 半導体集積回路の設計支援装置、設計支援方法および設計支援プログラム
JP4541196B2 (ja) 故障検出改善装置、故障検出改善プログラム、故障検出改善方法
JP2010073136A (ja) ホールドタイムエラーの収束方法、収束装置、及び収束プログラム
JP2008293088A (ja) 半導体集積回路及びその設計方法
JP4017583B2 (ja) 半導体集積回路の設計データの回路表示方法
JP2010160580A (ja) ホールドエラー修正方法、装置及びプログラム
JP5115003B2 (ja) 論理設計支援システム及びプログラム
JP2006268165A (ja) 集積回路のタイミング解析装置、集積回路のタイミング最適化装置、集積回路のタイミング解析方法、集積回路のタイミング最適化方法、集積回路基板の製造方法、制御プログラムおよび可読記録媒体
JP4886559B2 (ja) 半導体設計支援装置、半導体設計支援方法および半導体設計支援プログラム
JP4587754B2 (ja) クロック合成方法、半導体装置及びプログラム
JP4448048B2 (ja) 構造解析プログラム
JP2000150659A (ja) 半導体集積回路装置のレイアウト設計方法
JP2008152329A (ja) 回路解析方法、及び回路解析プログラム、回路シミュレーション装置
JP2011002903A (ja) 非同期回路検証装置及びプログラム
US8869092B2 (en) Wiring inspection apparatus and wiring inspection method
JP5245861B2 (ja) 半導体集積回路の設計装置、その設計方法、プログラム及び記録媒体
JP5515757B2 (ja) スキャンフリップフロップ追加システム及びスキャンフリップフロップ追加方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111006

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20120622