JP2007524891A - カットベース手法を用いたリタイミング回路 - Google Patents

カットベース手法を用いたリタイミング回路 Download PDF

Info

Publication number
JP2007524891A
JP2007524891A JP2006507445A JP2006507445A JP2007524891A JP 2007524891 A JP2007524891 A JP 2007524891A JP 2006507445 A JP2006507445 A JP 2006507445A JP 2006507445 A JP2006507445 A JP 2006507445A JP 2007524891 A JP2007524891 A JP 2007524891A
Authority
JP
Japan
Prior art keywords
cut
retimeable
retiming
path
retimed
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.)
Granted
Application number
JP2006507445A
Other languages
English (en)
Other versions
JP4473264B2 (ja
Inventor
スアリス,ピーター
ウァン,ドンシェン
Original Assignee
メンター・グラフィクス・コーポレーション
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 メンター・グラフィクス・コーポレーション filed Critical メンター・グラフィクス・コーポレーション
Publication of JP2007524891A publication Critical patent/JP2007524891A/ja
Application granted granted Critical
Publication of JP4473264B2 publication Critical patent/JP4473264B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Architecture (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

集積回路をリタイミングするための方法および装置について説明する。本発明のいくつかの実施形態によれば、リタイミングは、集積回路内の1つまたは複数のパスについてタイミング解析を実行してスラック値を取得するステップと、取得したスラック値に基づいてパスの1つを選択するステップと、選択したパス沿いのリタイミング可能カットを決定するステップとを含む。これらの例示的な実施形態におけるリタイミング可能カットは、集積回路内の1つまたは複数の論理インスタンスの一組の入力ピンを含み、選択したパスのスラック値を改善するため、それらのピンに1つまたは複数のリタイミングした順序素子を結合することができる。具体的な実施形態では、リタイミング可能カットは、選択したパス沿いの複数の可能なカットから自動的に選択される。集積回路をリタイミングするためのその他の実施形態、ならびに開示の方法によってリタイミングされる集積回路、および回路設計データベースも開示される。開示の方法を実行するための命令を保存するコンピュータ実行可能媒体も開示される。

Description

(関連出願の相互参照)
本出願は、2003年3月19日に出願された米国仮出願第60/456306号の恩典を主張し、また2003年11月21日に出願された米国仮出願第60/524300号の恩典を主張する。両出願を参照により本明細書に組み込む。
(技術分野)
本出願は、例えばフィールド・プログラマブル・ゲート・アレイなどの集積回路のリタイミングに関する。
EDA(コンピュータによる電子回路の設計自動化、electronic design automation)の出現によって、複雑なハードウェアシステムの設計が、ハードウェア回路図から始められることはもはやなくなった。それに代って、回路設計は一般に、ハードウェアシステムの挙動や機能を記述するソフトウェアプログラムから始められるようになった。例示的な一手法では、電子回路デザインの挙動または機能を、(例えば、VHDL、Verilog、または他の同種の言語などの)ハードウェア記述言語(HDL、hardware−description language)を用いて記述することができる。回路設計者は、EDA論理合成ツールを用いて、回路内の素子および素子間の相互接続のリストから成るネットリストを生成することができる。論理合成ステージで、設計者は、何らかの設計制約(例えば、クロック、データパス素子の数およびタイプ、および/またはある機能を実行するのに望ましいクロックサイクル数など)を変更することによって、集積回路の代替構成を生成することができる。物理設計ステージでは、ネットリストと回路レイアウトについての情報を用いて、回路の様々な素子の配置および配線を決定することができる。その後、設計を具現した物理回路を作成することができる。
EDA工程の一環として、回路デザインのタイミング特性が一般に評価される。これは、論理合成ステージの最中、回路の詳細な配置および配線を行う前に実施することができる。タイミング解析はまた、詳細な配置および配線を行った後の、EDA工程の物理合成ステージの最中に実行することもできる。タイミング解析は一般に、回路デザインがそのデザインに内在する信号遅延を許容できるかどうかの評価を含む。例えば、あるクロック速度が与えられた場合、ある特定の回路デザインでは、適切に機能するために、信号がある一定の時間内に回路パスまたは回路素子を伝播する必要があるかもしれない。タイミング解析の間に、ある特定のパスまたは素子の実際の遅延時間が決定され、そのパスまたは素子で要求される時間と比較される。この比較によって、パスを伝わる信号の遅延時間(パス遅延)が、そのパスで要求される時間遅延を満たしているかどうかを決定することができる。実際の遅延時間と要求される遅延時間の相違量は、一般に「スラック(slack)」と呼ばれる。本明細書で用いられるように、スラックは正数値をとることができ、これは、信号が要求されるよりも早く(すなわち、短い時間で)伝播し、タイミングにいくらかの余分な時間を盛り込めることを示している。スラックは負数値をとることもでき、これは、信号が回路のタイミング要件を満たすのに十分な時間で伝播しないことを示している。あるいは、スラックはゼロ値をとることができ、これは、信号が要求される時間遅延を満たすのに十分な時間で伝播するが、余分な時間は残っていないことを示している。したがって、ゼロ値または正数値のスラックは、パスまたは素子がタイミング要件を満たすことを示し、負数値のスラックは、回路を動作させたいクロック速度では、回路パスまたは素子がタイミング要件を満たすことができないことを示す。
総括的に「リタイミング」と呼ばれる技法では、回路素子を再配置し、再設定し、場合によっては回路デザインから取り除いて、ある特定の回路パスの遅延を減らしたり増やしたりすることができる。リタイミングは望ましくは、回路の機能が変化しないように実行される。すなわち、リタイミング後の回路の観察可能な挙動は、リタイミング前の回路の挙動と同一であるべきである。通常、リタイミングは、論理インスタンス(例えば、組合せロジック、参照用テーブル(LUT)など)を越えての順序素子(例えば、フリップフロップ、ラッチ、レジスタ、または他のクロック駆動素子)の移動を含む。リタイミングは、例えば、回路を動作させるのに必要なクロック周期を最小にするため、回路内のレジスタ数を減らすため、かつ/または回路で消費される電力を削減するために実行することができる。例えば、クロック周期を最小にするためにリタイミングを実行する場合、1つまたは複数の順序素子を回路内で再配置して、すべての回路パスがゼロ値または正数値のスラックをもつようにすることができる。代替的に、クロック速度を遅くして、要求される遅延時間を増やし、回路内のすべての回路パスがゼロ値または正数値のスラックをもつようにすることもできる。
効果的であるためには、リタイミング技法はできるだけ正確であり、集積回路の実際の性能を確実に予測すべきである。しかし、多くの従来のリタイミング技法は、相互接続で発生する回路遅延を正確に把握していない。より小さなフィーチャサイズおよびより速いクロック速度へと向かい続ける趨勢の中にあって、回路の相互接続で発生する遅延は主要な問題となっている。実際、回路内の遅延の70%ほどが、相互接続で発生する場合もある。したがって、相互接続遅延を解析し把握することのできる効果的なリタイミング操作は、有効な回路デザインにとって重要である。さらに、フィールド・プログラマブル・ゲート・アレイ(FPGA)のますますの普及に伴い、FPGAデザインに内在する構成および構造上の制約を把握することのできるリタイミング技法が望まれる。
集積回路をリタイミングするための様々な新規かつ非自明な例示的方法を、関連する装置と共に開示する。これらの方法は、例えば、フィールド・プログラマブル・ゲート・アレイ(FPGA)または他の同種のプログラム可能論理デバイスをリタイミングし、あるいはリタイミング可能順序素子を有する集積回路をリタイミングするのに使用することができる。開示の例示的な方法は、いかなる点においても、限定的なものと解釈すべきではない。本開示はむしろ、様々な開示の実施形態の新規かつ非自明な特徴および態様に向けられており、それらの特徴および態様は、単独であることもあり、互いの様々な組合せおよび部分組合せであることもある。これらの方法は、どのような特定の態様または特徴、あるいはそれらの組合せにも限定されず、開示の方法は、1つまたは複数の具体的な利点が存在せず、あるいは問題が解決されなくてもかまわない。
開示の方法の1つは、集積回路をリタイミングするための例示的な方法である。この方法によれば、集積回路内の1つまたは複数のパスを伝播する信号の遅延時間を取得するために、それらのパスについてタイミング解析が実行される。取得した遅延時間に基づいて、パスの1つが選択される。選択されたパスは、タイミング制約を満たさない遅延時間を有しており、始点順序素子から始まり、終点順序素子で終る。選択されたパスはさらに、2またはより多くの論理インスタンスを含む。選択されたパス沿いのリタイミング・ロケーションが決定される。リタイミング・ロケーションは、タイミング制約を満たすように、始点順序素子または終点順序素子の一方を再配置することのできるロケーションである。さらに、この例示的な実施形態では、リタイミング・ロケーションは、再配置することのできる始点順序素子または終点順序素子の一方からの少なくとも2つの論理インスタンスである。始点順序素子または終点順序素子の一方をリタイミング・ロケーションに再配置するために、集積回路の設計データベースを更新する。本発明のいくつかの実施形態では、タイミング解析を実行する動作はさらに、取得した遅延時間とタイミング制約を用いて行われるスラック値の決定を含む。パスを選択する動作の間に、スラック値を評価することができる。いくつかの実施形態では、リタイミング・ロケーションを決定する動作は、回路機能を維持するために、さらに1つまたは複数の順序素子を、リタイミング・ロケーションあるいは1つまたは複数の追加のロケーションに再配置する必要があるかどうかについての決定を含む。リタイミング・ロケーションおよび1つまたは複数の追加のロケーションは、リタイミング可能カット(retimeable cut)を含むことができる。いくつかの実施形態では、リタイミング・ロケーションを決定する動作は、論理インスタンスの1つまたは複数の出力ピンからの少なくとも1つのフォワード・トレースの実行を含むことができ、その論理インスタンス越えて始点順序素子または終点順序素子の一方を再配置することができる。リタイミング・ロケーションを決定する動作は、論理インスタンスの1つまたは複数の入力ピンからの少なくとも1つのバックワード・トレースの実行をさらに含むことができ、その論理インスタンス越えて始点順序素子または終点順序素子の一方を再配置することができる。開示の方法はさらに、始点順序素子または終点順序素子の一方のリタイミング後の初期状態を決定する動作を含むことができる。この方法はまた、(例えば、1つまたは複数の制御信号を個々の順序素子から分離するなど)始点順序素子または終点順序素子の一方の構成上の制約の緩和を含むことができる。
集積回路をリタイミングするための別の開示の方法では、集積回路内のフェイリング(failing)信号パスが特定される。フェイリング信号パスは、始点順序素子から始まり、論理コーンの1つまたは複数の論理インスタンスを通過して延び、終点順序素子で終る。フェイリング信号パスは、タイミング制約を満たすことのできない遅延時間を有する。フェイリング信号パスの遅延時間を改善するために始点順序素子または終点順序素子の一方を再配置することのできるフェイリング信号パス沿いのロケーションが選択される。この例示的な実施形態によれば、選択されたロケーションは、フェイリング信号パス沿いの論理インスタンスの1つに関連する。回路機能を維持するため、選択されたロケーションから、関連する論理インスタンスの出力パスおよび入力パスをサーチして、再配置する1つまたは複数の追加の順序素子を特定する。いくつかの実施形態では、出力パスおよび入力パスをサーチする動作は、回路機能を維持するために1つまたは複数の追加の順序回路を再配置する集積回路内の1つまたは複数の追加のロケーションの特定を含む。フェイリングパス内のロケーションおよび1つまたは複数の追加のロケーションは共に、リタイミング可能カットを含むことができる。フェイリング信号パス内のロケーションは、フォワード・リタイミング可能カットの一部を含み、出力パスおよび入力パスをサーチする動作は、論理インスタンスのうちの選択された1つが、1つまたは複数の順序素子または定常入力/出力ピンによって駆動されることの確認を含むことができる。代替的に、フェイリング信号パス内のロケーションは、バックワード・リタイミング可能カットの一部を含み、出力パスおよび入力パスをサーチする動作は、論理インスタンスのうちの選択された1つが、1つまたは複数の順序素子によって駆動されることの確認を含むことができる。本発明の一実施形態では、フェイリング信号パス沿いのロケーションは、始点順序素子または終点順序素子の一方を再配置するための複数のロケーションのうちの1つであり、始点順序素子または終点順序素子の一方のために選択されたロケーションは、フェイリング信号パスのスラック時間に最も優れた改善をもたらす。いくつかの実施形態では、この方法は、再配置することのできる始点順序素子または終点順序素子の一方、あるいは特定された1つまたは複数の追加の順序素子のリタイミング後の初期状態の決定を含むことができる。この方法はまた、(例えば、1つまたは複数の制御信号を個々の順序素子から分離するなど)再配置することのできる始点順序素子または終点順序素子の一方、あるいは特定された1つまたは複数の追加の順序素子の構成上の制約の緩和を含むことができる。
集積回路内のリタイミング可能カットを特定するための例示的な一方法も開示される。この実施形態では、リタイミングされる信号パスが選択される。信号パスは、始点順序素子から始まり、1つまたは複数の論理インスタンスを通過して延び、終点順序素子で終る。信号パス沿いのリタイミング可能カットが見つけられる。リタイミング可能カットを見つける動作は、信号パス内の選択された論理インスタンスの1つまたは複数の出力ピンからのフォワード・トレースの実行と、信号パス内の選択された論理インスタンスの1つまたは複数の入力ピンからのバックワード・トレースの実行を含むことができる。リタイミング可能カットに関連する遅延時間を決定するために、リタイミング可能カットを用いてタイミング評価が実行される。本発明のいくつかの実施形態では、遅延時間がタイミング制約に違反していない場合は、そのリタイミング可能カットをセーブすることができる。いくつかの実施形態では、前記リタイミング可能カットは、第1のリタイミング可能カットであり、この方法はさらに、信号パス沿いの第2のリタイミング可能カットの発見を含み、第2のリタイミング可能カットに関連する遅延時間を決定するために、第2のリタイミング可能カットを用いてタイミング評価が実行され、第1のリタイミング可能カットに関するスラック時間と第2のリタイミング可能カットに関するスラック時間を比較して、最善のリタイミング可能カットを決定する。最善のリタイミング可能カットは、リタイミングされた信号パスのスラック値が全体として最もよく改善されるリタイミング可能カットとすることができる。いくつかの実施形態では、リタイミング可能カットは、フォワード・リタイミング可能カットであり、別の実施形態では、リタイミング可能カットは、バックワード・リタイミング可能カットである。この方法はさらに、リタイミング可能カット内に含まれる1つまたは複数の順序素子のリタイミング後の初期状態の決定を含むことができ、あるいはリタイミング可能カット内に含まれる1つまたは複数の順序素子の制御信号の分離を含むことができる。
集積回路をリタイミングするための別の開示の方法は、集積回路内の1つまたは複数のパスのタイミング解析を実行してスラック値を取得するステップと、取得したスラック値に基づいて1つまたは複数のパスを選択するステップと、選択されたパス沿いのリタイミング可能カットを決定するステップとを含む。この実施形態によるリタイミング可能カットは、集積回路内の1つまたは複数の論理インスタンスの一組の入力ピンを含み、選択されたパスのスラック値を改善するため、これらのピンに、1つまたは複数のリタイミングされた順序素子をそれぞれ結合することができる。この実施形態では、リタイミング可能カットは、選択されたパス沿いの複数の可能なカットから自動的に選択される。具体的な一実施では、一組の入力ピンは、少なくとも1つのリタイミングされる順序素子からの少なくとも2つの論理インスタンスの論理インスタンスに関連付けられる。いくつかの実施形態では、この方法は、少なくとも1つのリタイミングされた順序素子の初期状態を決定するステップ、または少なくとも1つのリタイミングされる順序素子の構成上の制約を緩和するステップをさらに含む。いくつかの実施形態では、この方法は、リタイミング可能カットに関係する論理インスタンスからのフォワード・トレースおよびバックワード・トレースを実行するステップをさらに含む。リタイミング可能カットは、フォワード・リタイミング可能カットまたはバックワード・リタイミング可能カットとすることができる。
開示の実施形態はいずれも、コンピュータ可読媒体に保存されるコンピュータ実行可能命令でプログラムされたコンピュータによって実行することができる。これらの実施形態では、コンピュータ可読命令が、開示の実施形態のいずれかをコンピュータに実行させる。さらに、開示の実施形態のいずれかを使用して、コンピュータ可読媒体に保存された回路設計情報を更新または修正することができる。したがって、本明細書に記載の方法によってリタイミングされた回路デザインを保存する、修正された設計データベースも開示される。そのような方法は、例えば、スタンドアロン・ワークステーションで、またはネットワークを介して実行することができる。さらに、開示の方法によってリタイミングされた集積回路(例えば、開示の方法のいずれかによってリタイミングされたFPGA)も開示される。
上記およびその他の特徴について、添付の図面を参照しながら以下に記載する。
回路デザインを解析し、リタイミングするための方法の代表的な実施形態を、以下に開示する。開示の方法を、いかなる点においても、限定的なものと解釈すべきではない。本開示はむしろ、様々な開示の実施形態の新規かつ非自明な特徴および態様に向けられており、それらの特徴および態様は、単独であることもあり、互いの様々な組合せおよび部分組合せであることもある。これらの方法は、どのような特定の態様または特徴、あるいはそれらの組合せにも限定されず、開示の方法は、1つまたは複数の具体的な利点が存在せず、あるいは問題が解決されなくてもかまわない。
提示の都合から、いくつかの開示の方法における操作を特定の順序で説明したが、以下の説明で具体的な順序が、明示的な言葉によって要求されていない限り、この説明の仕方が別の順序も包含することを理解されたい。例えば、順番に説明される操作は、いくつかの場合では、順序を変更することができ、または同時に実行することができる。さらに、説明を簡潔にするため、添付の図面には、開示の方法を他の方法と共に使用できるようにする様々な手段を示していない。さらに、開示の方法を説明するのに、「決定する」、「評価する」などの語が説明中で使用されることがある。これらの語は、実行される実際の操作を高いレベルで抽象化したものである。これらの語に対応する実際の操作は、具体的な実施に応じて変化するが、当業者であれば容易に理解できるであろう。
開示の実施形態は、多種多様な順序集積回路に適用することができる。順序集積回路(または順序回路)とは、その出力が現在の入力に依存するだけでなく、過去の入力の順序、場合によっては任意の過去からの入力の順序にも依存する回路のことである。順序回路の例として、フィールド・プログラマブル・ゲート・アレイ(FPGA)などのプログラム可能論理デバイス(PLD)、特定用途向け集積回路(ASIC)、およびシステムオンチップ(SoC)を挙げることができる。順序回路は、フリップフロップ、同期RAM素子、またはラッチなど、少なくとも1つの順序回路素子を含む。一般に順序回路素子(または順序素子)とは、その出力状態の変化が自走クロック信号によって指定された時間に発生する任意の回路素子のことである。
開示の方法はいずれも、コンピュータ可読媒体に保存され、コンピュータ上で実行されるソフトウェアを用いて実行することができる。そのようなソフトウェアとして、例えば、論理または物理合成に利用されるEDA(コンピュータによる電子回路の設計自動化)ソフトウェアツールを挙げることができる。そのようなソフトウェアは、単一のコンピュータ上で、あるいは(例えば、インターネット、ワイドエリアネットワーク、ローカルエリアネットワーク、クライアント/サーバネットワーク、または他のネットワークを介して)ネットワーク接続されたコンピュータ上で実行することができる。説明を明瞭にするため、ソフトウェアベースの実施のうちいくつかの態様だけを選択して説明する。当技術分野で周知のその他の詳細は省略する。例えば、開示の技法が、特定のコンピュータ言語、プログラム、またはコンピュータに限定されるものではないことを理解されたい。同じ理由から、コンピュータハードウェアについては詳細に説明しない。
開示の方法は、全体的な合成方式の1つまたは複数のステージで用いることができる。例えば、開示のリタイミング方法はいずれも、論理合成後のデザインを最適化し、あるいは改良するのに利用することができる。開示のリタイミング方法は、実施されたデザインを改良するため、配置および配線を行った後に、使用することもできる。このステージでは、相互接続遅延など追加の物理的情報が一般には利用でき、遅延時間をより正確に計算することができる。
一般に、リタイミングは、特定の回路パスの遅延を減らしたり増やしたりするための、回路素子の再配置、再設定、場合によっては、回路デザインからの回路素子の除去を含む。本明細書で開示する集積回路をリタイミングするための方法は、フリップフロップ、ラッチ、または他のクロック駆動素子などの順序素子の再配置を含む。「レジスタ」という語は、本明細書では、FPGA内のフリップフロップまたは等価な順序素子を指すのにしばしば用いられる。
一般に、集積回路内のパスは、特定の始点順序素子の出力で始まり、複数の論理インスタンスを通過する相互接続に沿って延び、特定の終点順序素子の入力で終る。始点順序素子の出力は、その出力が2以上の終点順序素子の入力に接続される場合、2またはより多くのパスを駆動することがあり、終点順序素子の入力は、その入力が論理コーンを通過する2以上の始点順序素子の出力によって駆動される場合、2またはより多くのパスの終点から構成されることがある。この開示では、パスの「パス遅延」または「遅延時間」という語は、信号がパスの始点順序素子から終点順序素子まで1つまたは複数の論理インスタンスを通過して伝播するのに要する時間を指す。パス遅延は通常、(始点および終点順序素子を除く)パス沿いの回路素子の内部遅延と、パス沿いの相互接続の遅延の両方を含む。しかし、本発明の代替実施形態では、パス遅延は、始点順序素子と終点順序素子の一方または両方を含むことができ、かつ/または中間論理インスタンスを除外することもできる。
図1〜図3には、リタイミングの一例が示されている。この例では、図示の順序素子は、遅延なしで動作すると仮定される。図1には、順序素子(例えば、フリップフロップ)から成るバンク20で始まり、順序素子から成る中間バンク22を経由して、順序素子から成るバンク24で終る、パイプライン10が示されている。動作中、バンク20の値が、組合せロジック40(例えば、参照用テーブル(LUT)、または1つまたは複数の論理ゲート)を通過するパス群30に出力され、中間バンク22に到達する。ロジック40を通過するパス群30の様々なパスにおける遅延は、パス毎に変化し得る。この例では、パス群30の少なくとも1つのパスにおける最も長い遅延が10nsであるとする。組合せロジック40で識別される遅延は、(2以上のパスが10nsの遅延を有することがあるので)最も遅いパスまたはパス群に等しい。次のクロックサイクルで、中間バンク22からの値が、少なくとも1つのパスが最長遅延14nsを有する、組合せロジック42を通過するパス群32の様々なパスに出力され、バンク24に到達する。図1に見られるように、図示のパイプライン10を駆動するクロックは、クロック周期12nsを有する。したがって、パス群32の少なくとも1つのパスが最長遅延14nsを有するので、パス群32上の少なくとも1つの値は、次のクロックサイクルまでにバンク24の入力に到達しない。したがって、パイプライン10は、このタイミングの不一致を補正するか、クロック周期を遅くするかしないうちは、適切に機能しない。図1に示す状況では、パス群32は、スラック値「−2」を有すると言われる。より具体的には、パス群32のうちの最も遅いパスがスラック値「−2」を有し、これは、パス群32の少なくとも1つのパスが2nsだけタイミング要件を満たせていないことを示す。
図2には、「フォワード・リタイミング」と称されるリタイミングの1タイプが示されている。フォワード・リタイミングでは、1つまたは複数の順序素子を前方に移動させることによって、リタイミング対象のパスまたはパス群32を短くする。図2に見られるように、例えば、組合せロジック42の一部分44を中間バンク22’の入力側に再配置することによって、中間バンク22’を2nsだけ前方に移動させる。その結果、組合せロジック42の最大遅延は12nsに短縮し、クロックのタイミング要件が満たされる。具体的には、リタイミングの後、バンク20と中間バンク22’の間のパス群、および中間バンク22’とレジスタバンク24の間のパス群は各々、最大遅延12nsを有し、クロックのタイミング要件を満足する。
図3には、「バックワード・リタイミング」と称されるリタイミングの第2のタイプが示されている。バックワード・リタイミングでは、1つまたは複数の順序素子をパイプラインの中で後方に移動させることによって、リタイミング対象のパスまたはパス群を短くする。図3に見られるように、例えば、組合せロジック42の一部分46をレジスタバンク24’の出力側に再配置することによって、レジスタバンク24’を後方に移動させて、ロジック42を通過するパス群の最大遅延を12nsに短縮する。その結果、クロックのリタイミング要件が満たされる。フォワード・リタイミングおよびバックワード・リタイミングは共に他の信号パスにも影響を与えるので、隣接パスがタイミング要件を依然として満たしていることを保証するように、リタイミング対象パスは一般に検査される。
リタイミング操作中、再配置される順序素子の初期状態を再設定する必要が起こる場合がある。例えば、リタイミング対象の順序素子がフリップフロップである場合、リタイミングされる回路の機能を適切に維持するため、フリップフロップの初期状態をRESETからSETに、またはPRESETからCLEARに変更しなければならない場合がある。リタイミングされた順序素子を再設定する必要があるかどうかは、順序素子がそれを越えて移動する1つまたは複数の論理インスタンスの機能を評価することによって決定される。さらに、リタイミング操作が何らかの設計規則に違反するため、それ以外の点では有効なリタイミング操作を実行すべきではない場合がある。以下でさらに詳しく説明するように、例えば、多くのFPGAデザインは、分割できない、または違反できないFPGA構成設計規則を含んだ組合せロジックのブロックを含む。
リタイミングは、回路を一度に1論理インスタンスずつ解析し、インスタンス単位で順序素子を再配置することによって実行することができる。しかし、この技法は、時間がかかり、集中的な計算を要することがある。対照的に、多くの場合、回路の1つまたは複数の順序素子を組合せ構成要素のグループ(すなわち2つまたはより多くの論理インスタンス)を越えて移動させることができ、その結果、より効率的なリタイミングが可能となる。この開示では、順序素子を再配置またはリタイミングできる回路内の場所または位置を「カット」と称する。より具体的には、カットは、リタイミング対象の順序素子を挿入できる(例えば、FPGA内のLUTといった論理インスタンスの)一組のインスタンス・ピンから構成される。これに対応して、カット内の各インスタンス・ピンは「カット・ピン(cut pin)」と呼ばれる。以下で説明する例示的な実施形態では、カット・ピンは一般に、論理インスタンスの入力ピンから構成される。しかし、この慣習を限定的なものと解釈すべきではなく、カット・ピンが論理インスタンスの出力ピンから、または出力ピンと入力ピンの組合せから構成されるように、記載の実施形態を容易に変更することができる。どのようなデバイス構成規則にも違反することなく、あるカットにリタイミング対象の順序素子を挿入できるならば、そのカットは「有効カット」と称される(例えば、レジスタをカットに配置した際に、どのようなFPGAデバイス構成規則にも違反しないカット)。さらに、回路機能を変化させることなく、リタイミング対象の順序素子を配置できる有効カットは、「リタイミング可能カット」と称され、回路内の他の順序素子を再配置する必要がある追加のインスタンス・ピンを含むことがある。
リタイミング可能カットの例示的な一形態は一般に、集積回路内の論理コーン(cone)を第1(または左側)の区画と第2(または右側)の区画に分割し、リタイミングされた素子の一方の側にファンアウトなし(fan−out−free)の論理コーンを生成するものとして特徴付けることができる。具体的な一実施形態では、フォワード・リタイミング可能カットは、論理コーンの第1(または左側)の区画から、カット自体へのものを除いて、ファンアウトがなく、第1(または左側)の区画が、互換順序素子(例えば、等価な順序素子)または定常ピン(定常入力/出力ピン)のどちらかによって駆動される、リタイミング可能カットから構成される。同様に、この実施形態によれば、バックワード・リタイミング可能カットは、論理コーンの第2(または右側)の区画への、カット自体からのものを除いて、ファンインがなく、第2(または右側)の区画が、1つまたは複数の順序素子を駆動する、リタイミング可能カットから構成される。リタイミング可能カットが、論理コーンへの入力とならない1つまたは複数のファンアウトを有する順序素子によって駆動される場合、そのカットは依然としてリタイミング可能であることができる。しかし、このような場合、回路機能を維持するため、リタイミング後に順序素子を回路内に残す必要がある場合もある。
図4A〜図4Bは、集積回路の論理コーンにおけるカットベース・リタイミングの例を示した概略ブロック図である。具体的には、図4Aには、論理コーン54を駆動するレジスタ群52から成る第1のバンクを含む、FPGAの例示的な一部分50が示されている。一般に、論理コーン54は、レジスタ群56から成る第2のバンクを駆動する1つまたは複数の論理インスタンス(例えば、1つまたは複数のLUT)を含む。レジスタ群52から成る第1のバンクは、様々な他の回路構成要素58によって駆動される。レジスタ群52から成る第1のバンクまたは様々な他の回路構成要素58は、論理コーン54の外部の他の回路構成要素を駆動する1つまたは複数の出力パスを含むことができる。しかし、論理コーン54は、第2のバンクのレジスタ群56を除き、レジスタへのファンアウトを有しない点で特徴付けられる。
図4Aには、論理コーン54を第1(または左側)の区画64と第2(または右側)の区画66に分割するリタイミング可能カット60が概略的に示されている。図示の例では、カット60はフォワード・リタイミング可能カットである。したがって、図4Bに示すように、第1のバンクのレジスタ群52の一部分62が、リタイミング可能カット60に再配置される。リタイミングされたレジスタ群62は、左側の区画64によって駆動され、右側の区画66を駆動して、リタイミングされたレジスタ群62とレジスタ群56から成る第2のバンクの間のスラックを効果的に減少させる。
図5は、例示的な回路における様々なタイプのカットを示した概略ブロック図である。具体的には、回路70は、FPGAなどの回路の一部分であり、7つのレジスタR、R、R、R、R、R、Rと、5つの参照用テーブルLUT、LUT、LUT、LUT、LUTを含む。図示の回路では、信号は、図の左側の第1の組のレジスタ(R、R、R、R)から、LUTを経由して、図の右側の第2の組のレジスタ(R、R、R)に伝播する。図5のLUTは、レジスタの第1の組と第2の組の間に論理コーンを形成する。(カット「A」と名づけられた)第1のカット80は、LUT、LUT、LUT、LUTを越える、R、R、R、Rのフォワード・リタイミングを可能とする。具体的には、この例のカット80は、カットとレジスタR、R、R、Rの間にファンアウトがないため、リタイミング可能である(レジスタ群が、その出力信号が第1のLUTで論理コーンに入る前にファンアウトをもつとしても、リタイミングを達成できることに留意されたい。しかし、このような状況では、回路機能を維持するため、リタイミング後に順序素子を回路内に残す必要がある場合もある)。図6は、レジスタR、R、R、Rをリタイミング可能カット80に再配置した後の、回路70の概略ブロック図である。リタイミングされたレジスタRretim.1、Rretim.2が、(「A」で示す)カット80のところに示されている。図6から分かるように、フォワード・リタイミング可能カット80を用いて回路70をリタイミングする場合、論理コーンを駆動するのに使用されるレジスタの数が4から2に減少している。LUT、LUT、LUT、LUTの機能に応じて、回路70内で機能的等価性を維持するため、リタイミングされた2つのレジスタの初期状態を調整しなければならない場合もある。
図5に戻ると、(カット「B」と名づけられた)第2のカット82は、LUT、LUTを越える、R、Rのバックワード・リタイミングを可能とする。具体的には、カット82は、カットとレジスタR、Rの間に論理コーンへのファンインがないため、リタイミング可能である。図7は、レジスタR、Rをリタイミング可能カット82に再配置した後の、回路70の概略ブロック図である。図7に見られるように、レジスタR、Rは、(図7において「B」で示す)カット82沿いに配置された3つのリタイミングされたレジスタRretim.1、Rretim.2、Rretim.3によって置き換えられている。LUT、LUTの機能に応じて、回路70内で機能的等価性を維持するため、リタイミングされたレジスタの初期状態を調整しなければならない場合もある。
図5に戻ると、(カット「C」と名づけられた)第3のカット84は、この例ではフォワード・リタイミングについての無効カットを表す。すなわち、第3のカット84は、カットとリタイミング対象レジスタの間にファンアウトがあるため、容認されない。具体的には、レジスタRはLUTにファンアウトし、LUTはLUTにファンアウトするが、それらは、第3のカット84に含まれない信号である。
(カット「D」と名づけられた)第4のカット86は、この例ではバックワード・リタイミングについての無効カットを表す。第4のカット86は、カットとリタイミング対象レジスタの間のロジックへのファンインがあるため、容認されない。具体的には、LUTはRからの入力パスを有し、LUTはLUTからの入力パスを有するが、それらは、カットに含まれないレジスタR、Rからの信号によって駆動される。
一般に、開示のリタイミング操作の最中に考慮され得る複数のタイプの制約が存在する。考慮される制約には、タイミング制約、構成上の制約、構造上の制約がある。タイミング制約は、デザイン中のパスに最大および/または最小の遅延をもつように要求する設計制約を含む。要求される遅延は、関連するクロック信号のサイクル周期によって指示することができ、または設計者が明示的に定義することもできる。パスは、タイミング制約をもたないことがあり(「疑似パス」と呼ばれることがある)、またはある特定のパスが複数のクロックドメインに結合されるような場合、重複する制約をもつことがある。別のタイプのタイミング制約として、リタイミング操作を実行するのに使用される順序素子の数は、元のレジスタの数より少ないか、あるいは等しいという要件を挙げることができる。例えば、デザイン中の順序素子によるオーバヘッドを減らすためにリタイミング操作が利用される場合などに、この制約は、望ましいものとなり得る。
構成上の制約とは、リタイミング対象の集積デバイスに固有のデザインによって提示される制約である。例えば、FPGAの場合、レジスタは一般に、事前に製造され、あるロケーションに配置される。したがって、リタイミングのために、レジスタをすでに決定されたロケーション以外のロケーションに移動させることはできない。さらに、あるパスまたは回路構成要素は、事前に製造され、リタイミング中に分割することはできない。例えば、Xilinx(登録商標)が製造するVirtex−II(登録商標)FPGAでは、構成可能論理ブロック(CLB)が、いくつかのLUTと2つの2入力1出力マルチプレクサ(MUXF5、MUXF6)を使用して、8入力1出力マルチプレクサを実装する。この構成では、マルチプレクサMUXF5とMUXF6の間にレジスタを挿入することは許可されない。図8には、リタイミングできないVirtex−II(登録商標)構成の一部分の別の例が示されている。具体的には、図8には、2つの2入力1出力マルチプレクサ102(MUXCY)を用いて実装された加算器回路の桁上げチェーン100が示されており、これらのマルチプレクサは、高速1ビット桁上げ伝播機能を実行するのに使用される。図8には、Virtex−II(登録商標)FPGAの構成規則に従えば、リタイミングされたレジスタを配置すると規則違反になるロケーション104も示されている。レジスタを違反となるロケーションに配置した場合、桁上げチェーンがレジスタによって分断され、高速ローカル接続が使用できなくなるので、遅延が著しく増大する。
いくつかの制約は、論理および/または配置転換によって緩和することができる。例えば、上述した第1の例に関して、MUXF6マルチプレクサを、FPGAの別個のスライスにLUTとして実装することができ、そうすることによって、MUXF5とLUTの間にレジスタを挿入することが可能になる。このタイプの転換は、リタイミング可能性の改善を図ることができるが、回路構成要素の全体的な配置を混乱させることがあり、タイミング性能に全体として負の影響を及ぼすことがある。したがって、開示の技法のいくつかの実施形態では、論理および/または配置転換は、リタイミング可能カットの既存の有効ロケーションを用いて回路をリタイミングできない場合のみ考察される。そのような転換を行った後、物理タイミング解析ツール(例えば、増分タイミング解析ツール)を用いて、回路の動作を確認するのがしばしば望ましい。上述の例は、説明のためのものに過ぎず、いかなる点においても限定的なものと解釈すべきではない。実際、構成上の制約のタイプおよび質は、リタイミングのために解析される具体的な回路に応じて変化する。
構造上の制約は一般に、回路内に実装された際にリタイミング可能性を制限する回路構成要素を生成する場合がある、ネットリスト構造に起因する。例えば、レジスタが不等価な制御信号を有する場合、リタイミング操作は阻害される。しかし、そのような制約を克服するため、制御信号をレジスタから分離することができる場合があり、そうすることによって、レジスタを等価にし、リタイミング可能にする。制御信号分離のいくつかの例を、図9〜図12に関して以下で説明する。しかし、これらの例を限定的なものと解釈すべきではなく、以下の説明で例示される原理のいずれかを利用する、信号分割のさらに別の方法も可能である。
最初に、図9Aに示すようなFPGAの2つのレジスタについて考察する。第1のレジスタ110は、クロック信号(図示せず)によって駆動される通常のD型フリップフロップである。第2のレジスタ112は、クロック有効信号(CE)を含むD型フリップフロップである。第1のレジスタ110は制御信号をもたず、第2のレジスタ112はもつので、2つのレジスタは等価ではない。図9Bに見られるように、第2のレジスタ112に関して、クロック有効信号を第2のレジスタから分離する転換を実行することができる。具体的には、クロック有効信号をもたない通常のD型フリップフロップで構成されるレジスタ114からQ信号をループバックするのに、クロック有効信号によって制御されるマルチプレクサ118を使用し、元のレジスタ112と機能的に等価なレジスタ構造を生成することができる。この転換が実行された後、この例では、レジスタをリタイミングすることができる。リタイミングを行った結果の回路が図9Cに示されており、マルチプレクサ118へのフィードバックパスを有する、リタイミングされたレジスタ120を1つ含む。
次に、図10Aに示すようなFPGAの2つのレジスタについて考察する。レジスタ130は、同期セット入力を有する単一のD型フリップフロップ(例えば、Xilinx(登録商標)のFDSレジスタ)であり、レジスタ132は、同期リセット入力を有する単一のD型フリップフロップ(例えば、Xilinx(登録商標)のFDRレジスタ)である。図10Aでは、レジスタ130、132は、同一クロック(図示せず)によって駆動される。2つの等価なレジスタ134、135をレジスタ130、132の代りに使用できるように、レジスタ130、132のセットおよびリセット信号を、図10Bに示すように分離することができる。具体的には、レジスタ130からのセット信号の分離は、入力信号DおよびSに関して論理関数D+Sを実行する論理インスタンス140(例えば、論理ゲート、または図示するようなLUT)を、レジスタ134の上流に実装することによって達成することができる。結果として得られる論理インスタンス140からの出力は、レジスタ130の動作と等価であり、レジスタを通常のD型フリップフロップ(例えば、Xilinx(登録商標)のFDレジスタ)として再実装することができる。同様に、レジスタ132からのリセット信号は、入力信号DおよびRに関して論理関数
Figure 2007524891
を実行する論理インスタンス142を実装することによって分離することができる。図10Cに示すように、結果として得られる等価なレジスタ134、135は、リタイミングされたレジスタ136として、論理インスタンス144を越えてリタイミングすることができる。
状況によっては、デザイン中のレジスタから制御信号を分離する必要がない場合もある。例えば、レジスタ130、132のセットおよびリセット信号が同じであれば、論理インスタンス144の機能に関して適切なレジスタの初期状態を計算することによって、2つのレジスタをフォワード・リタイミングすることができる。例えば、論理インスタンスがOR関数を実行する場合、レジスタ130、132の初期状態が、それぞれ1および0であれば、リタイミングされたレジスタ136の初期状態は1とすべきである。
次に、図11Aに示すようなFPGAのレジスタについて考察する。レジスタ150は、D型フリップフロップから構成され、レジスタ152は、クロック有効信号(CE)と同期セット信号(S)を有するD型フリップフロップ(例えば、Xilinx(登録商標)のFDSEレジスタ)から構成される。図11Bに示すように、クロック有効信号と同期セット信号は共に、D型フリップフロップ154と4入力論理インスタンス162(例えば、4入力LUT)によって置き換えることができる。具体的には、4入力論理インスタンス162は、論理関数
Figure 2007524891
を実行する。ただし、Qはレジスタ154からの出力とする。図11Cに示すように、レジ150、154は、リタイミングされたレジスタ156として、論理インスタンス160を越えてリタイミングすることができる。先に述べたように、これらの転換は、カットをリタイミング可能にする必要がある場合に用いることができる。本発明の一実施形態では、転換は、配置が可能であり、タイミングへの影響が肯定的なものである場合のみ用いることができる。
構造上の制約は、他の方法を用いても同じように緩和することがしばしば可能である。例えば、レジスタを駆動する1つの出力と駆動しない別の出力を有する論理インスタンスを越えて、レジスタをバックワード・リタイミングすることが望ましい場合、論理インスタンスの複製を作成して、複製にレジスタを駆動しない出力をもたせることができる。したがって、元の論理インスタンスは、レジスタを駆動する出力だけを有し、この例では、リタイミングすることができる。しかし、そのような転換は、組合せロジックのネットリストを変更し、全体的な回路デザインに負の影響を及ぼすことがある。したがって、本明細書で開示するいずれの実施形態でも、そのような転換は、肯定的な影響をもつことが確認された場合にのみ実行することができる。
図12のフローチャートは、リタイミング可能カットを用いて回路をリタイミングするための例示的な方法200を示している。必ずしも必要ではないが、例示的な方法200は望ましくは、初期配置および配線を行った後に実行される。FPGAについて言及するが、図12に示す例示的な方法は、任意の適切な回路(例えば、ASIC、SOC、またはリタイミング可能順序素子を含み、類似のタイミング制約を有する他のデバイス)をリタイミングするのに用いることができる。さらに、図12に示す例示的な方法は、レジスタのリタイミングに関して説明されるが、この方法は一般に、回路のどのようなリタイミング可能順序素子(例えば、ラッチなど)にも適用することができる。
手順ブロック202で、遅延時間を取得するため、集積回路の1つまたは複数のパスについてタイミング解析が実行される。このタイミング解析は望ましくは、実際の回路デザインに存在するタイミング制約を取り扱うことができる多用途タイミング解析エンジンを用いて実行される。例えば、本発明の例示的な一実施形態では、メンターグラフィックスコーポレーション(登録商標)から入手できるSST Velocity(登録商標)タイミング解析エンジンが使用される。具体的な一実施形態では、タイミング解析エンジンは、設計者または使用者が、回路全体のタイミングを計算しなくても、回路デザインの特定領域(例えば、特定の論理コーン)に対するタイミング変化を解析し評価できるようにする増分解析を実行することができる。本発明の一実施形態では、タイミング解析は、1つまたは複数のパスについて計算されたスラック値を含む。
手順ブロック204で、手順ブロック202で取得した遅延時間に基づいて、回路のレジスタ群をソートする。本発明の一実施形態では、レジスタ群をソートするのにパスのスラック値が用いられる。具体的な一実施形態では、例えば、レジスタに関連するスラック値は、そのレジスタによって駆動されるパスにおける最悪のスラック時間に対応する。この実施形態によれば、例えば、レジスタがスラック値−3、−1、および2nsを有する3つのパスを駆動する場合、そのレジスタは、スラック値−3を有すると見なされる。いくつかの実施形態では、手順ブロック204は実行されない。
手順ブロック206で、手順ブロック204でソートしたレジスタ群から1つのレジスタを選択する。この選択は、複数の異なる基準に基づいて行うことができる。本発明の例示的な一実施形態では、例えば、最大の負のスラック値を有するレジスタが選択される。このレジスタは、ソートされたレジスタ群のリスト中の第1のレジスタに対応することができる。
手順ブロック208で、選択されたレジスタにとって最善のリタイミング可能カットが見つけられる。最善のリタイミング可能カットを見つけるため、フォワード・リタイミング可能カット、バックワード・リタイミング可能カット、または両方の組合せについてサーチを実行することができる。最善のフォワード・リタイミング可能カットを見つけるための例示的な方法が、図14および図15に示されており、以下でより詳しく説明する。最善のバックワード・リタイミング可能カットを見つけるための例示的な方法が、図18に示されており、以下でより詳しく説明する。
手順ブロック210で、最善のリタイミング可能カットを含むように、回路デザインが更新(または変更)される。具体的には、更新された回路デザインでは、選択されたレジスタおよび最善のリタイミング可能カットに含まれる他のレジスタが再配置される。本発明のいくつかの実施形態では、手順ブロック212に示すように、この更新手順は、回路機能を維持するため、リタイミングされたレジスタの初期状態の決定および再設定を含むことができる。例えば、図13には、リタイミングされる前の3つのレジスタ240、242、244の初期状態が示されている。レジスタ240(R)は初期状態がsetであり、レジスタ242(R)はresetであり、レジスタ244(R)はsetである。図13には、論理関数
Figure 2007524891
を実行する例示的な論理インスタンス246(例えば、LUT)も示されている。レジスタが初期状態にあるとき、論理インスタンス246の出力はハイとなる。リタイミング後、3つのレジスタは取り除かれ、1つのフォワード・リタイミングレジスタ248(Rretim.)に置き換えられる。論理インスタンス246の出力側に配置されるリタイミングされたレジスタ248は、リタイミング前に伝播していたのと同じ値が論理インスタンス246の下流に伝播するように、初期状態「set」を有するように設定すべきである。V.シンガル(Singhal)、M.シャラド(Sharad)、R.ブライトン(Brayton)、「明示的リセット回路を用いたリタイミングの事例(The Case for Retiming with Explicit Reset Circuitry)」、コンピュータ援用設計国際会議会報(Proc. of Intl. Conf. on Computer Aided Design)(1996年11月)に記載の例示的な技法を、初期状態を計算するのに用いることができ、同文献を参照により本明細書に組み込む。
図12に戻ると、手順ブロック214に示すように、回路デザインを更新するステップは、構成/構造上の制約を緩和するステップをさらに含むことができる。上でより詳しく説明したように、構成/構造上の制約を緩和するステップは、いくつかの順序素子から制御信号を分離して、それらを等価にし、その結果、リタイミング可能にするステップを含むことができる。
手順ブロック216で、増分配置(incremental placement)および物理的リタイミングが実行される。リタイミングは望ましくは、できるだけ元の配置を混乱させないように行うべきである。本発明のいくつかの実施形態では、リタイミング中、同じ物理ロケーションでのインスタンスの重複を許容することができる。これらの実施形態では、リタイミング後、タイミング駆動増分配置を用いて、すべての重複を取り除くことができる。増分配置を行う際、必ずしも必要ではないが、予期せぬ長い相互接続遅延を回避するため、リタイミングされたレジスタをカット・ピンの近くに配置するのが望ましい。本発明の例示的な一実施形態では、相互接続遅延を把握でき、ワイヤロード遅延モデルではなく物理遅延モデルを構築できるタイミングアナライザが、物理リタイミングを行う際に使用される。
増分配置を行う際、リタイミング対象のレジスタが「配置可能」であるかどうか判定することができる。すなわち、リタイミング対象の順序素子を特定のロケーションに配置した場合、集積回路(例えば、FPGA)の構成規則のいずれかに違反するかどうか判定することができる。例えば、特定のFPGA構成の単一スライスは、2つ以上のレジスタを保有することができるかもしれないが、クロック有効ピンを外部接続に接続する信号線は1本しかもたないかもしれない。したがって、クロック有効信号を有するレジスタがスライス内にすでに1つ配置されており、クロック有効信号を有する新しいレジスタを同じスライス内にさらに配置する場合、2つのレジスタのクロック有効信号は同じでなければならない。同じでない場合は、配置および配線はできないかもしれない。
増分配置を行う際、リタイミング操作に起因する全体的な密集を評価することもできる。例えば、バックワード・リタイミング中に大きなリタイミング可能カットが見つかった場合、多数の新しいレジスタを生成し、カットロケーションの周辺に配置する必要が起こるかもしれない。多数の新しいレジスタは回路内に激しい密集を生むため、(例えば、FPGAのデザイン、許容可能なレジスタの事前設定された数、またはその他の基準に基づいて)カットでのリタイミングは拒否されるかもしれない。
図12の手順ブロック218で、考察すべきレジスタ(例えば、負のスラック時間を有する別のレジスタ)がまだ他にも存在するかどうか判定される。存在する場合、手順200は望ましくは、(ソートされたレジスタ群からの、または手順ブロック216の物理リタイミング中に特定された)次のレジスタについて、手順ブロック206から繰り返される。存在しない場合、リタイミング手順200は、手順ブロック220で終了する。
図14には、最善のフォワード・リタイミング可能カットを見つけるための例示的な手順250が示されている。この手順は、例えば、図12の手順ブロック208における最善のリタイミング可能カットを見つける手順の少なくとも一部として用いることができる。図示の実施形態によれば、手順250は、最大の負のスラック時間を有する、選択されたレジスタからのパスについて実行される。本明細書では、このパスを「フェイリングパス」と呼ぶことがある。手順ブロック252で、フェイリングパス沿いの論理インスタンスの第1のピンが選択される。本発明の一実施形態によれば、第1のピンは、選択されたレジスタで始まるフェイリングパス沿いの最初の論理インスタンスの入力ピンである。手順ブロック254で、選択されたピンを用いて、フォワード・リタイミング可能カットが見つけられる。フォワード・リタイミング可能カットを見つける例示的な方法について、図15を参照しながら以下で説明する。手順ブロック256で、見つけられたフォワード・リタイミング可能カットについて増分タイミング評価を実行して、カットの結果である新しい遅延時間および/またはスラック値を決定する。手順ブロック258で、そのカットが、方法250で最初に見つけられたカットであるかどうかが判定される。カットが最初に見つけられたカットである場合、手順ブロック260で、そのカットがセーブされる。カットが最初に見つけられたカットでない場合、手順ブロック262で、現在のカットの遅延時間および/またはスラック値が、セーブされたカットの遅延時間および/またはスラック値と比較される。現在のカットの時間のほうがセーブされたカットの時間より優れている場合(例えば、フェイリングパス沿いの全体的な時間短縮によって決定される)、手順ブロック263で、現在のカットがセーブされて、それまでセーブされていたカットと置き換えられる。代替的に、後の評価のために、複数のカットをセーブしてもよい。例えば、2またはより多くのカットによって、申し分のないスラック値の改善がもたらされる場合がある。しかし、スラック値の改善はさほど大きくはないにしても、カットを1つにしたほうが、実装はより簡単になるであろう。この場合、最善のカットが最も良いタイミング性能を達成しなくても、それを最も望ましいカットと見なすことができる。しかし、大概は、最善のカットが、最大のタイミング改善を提供するカットであると見なされる。手順ブロック264で、フェイリングパス沿いにまだ考察する入力ピンがあるかどうか判断される。例えば、本発明の一実施形態では、フェイリングパス沿いのインスタンス・ピンは、パスの始点順序素子から終点順序素子へ順番に考察される。考察するピンがまだある場合、手順ブロック266で、次のピンが選択され、方法250が手順ブロック254から繰り返される。考察するピンがもうない場合、方法250は手順ブロック268で終了し、最善のフォワード・リタイミング可能カットが返される。最善のバックワード・リタイミング可能カットを見つける手順も、バックワード・リタイミング可能カットを見つけ(手順ブロック254)、評価する(手順ブロック256から264)点を除いて、上述した手順と類似している。本発明の例示的な一実施形態では、最善のバックワード・リタイミング可能カットを見つける手順は、フェイリングパス沿いの最後の論理インスタンスの入力ピンで始まり、フェイリングパス沿いの最初の論理インスタンスに向かって順番に進められる。バックワード・リタイミング可能カットを見つけるための例示的な方法については、図18に関して以下で説明する。
図15には、図14の手順ブロック254で用いることのできるフォワード・リタイミング可能カットを見つけるための例示的な方法300が示されている。一般に、方法300は、選択された入力ピンに関連する論理インスタンスから、論理コーンのパスを前方および後方にトレースする。フォワードおよびバックワード・トレースを行うこの手順は、回路機能を維持するためにリタイミングする必要がある他の順序素子を特定し、評価するのに役立つ。この手順は、見つかったカットが有効であることを保証するのにも役立つ。例えば、フォワード・リタイミング可能カットの場合、バックワード・トレースを行う手順は、論理コーンの第1(または左側)の区画からファンアウトがないこと、またリタイミング可能カットの第1(または左側)の区画が互換順序素子または定常出力ピンによって駆動されることを確認するのに有用である。
図15の手順ブロック302で、選択された入力ピンに関連する論理インスタンスの出力ピンから、フォワード・トレースが実行される。例えば、AND関数を実行するLUTの入力ピンが選択された場合、そのLUTの出力ピンによって駆動されるすべてのパスがトレースされる。一般に、「フォワード・トレース」とは、特定の出力ピンによって駆動される入力ピンを特定する手順のことである。関連する入力ピンは、例えば、ネットリストまたは回路デザインを保存する他の設計データベース(例えば、VHDLまたはVerilogファイル)から特定することができる。手順ブロック304で、手順ブロック302で特定された入力ピンがカットに追加される。手順ブロック306で、バックワード・トレースが実行される。本発明の一実施形態では、バックワード・トレースは、選択された入力ピン自体を含む、選択された入力ピンに関連する論理インスタンスのすべての入力ピンから実行される。フォワード・トレースに類似して、「バックワード・トレース」とは、特定の入力ピンを駆動する出力ピンを特定すると共に、特定されたそれらの出力ピンによって駆動される他の入力ピンを特定する手順のことである。バックワード・トレースの間に特定された出力ピン(すなわち、ドライバ)の各々について、手順ブロック308で、ドライバがリタイミング可能であるかどうかが決定される。本発明の一実施形態では、例えば、ドライバは、それが順序素子、定常入力/出力ピン、または別の論理インスタンスである場合に限り、リタイミング可能である。ドライバが順序素子である場合、順序素子を評価して、それが関連するリタイミングされるレジスタと等価であるか、または(例えば、上述したように制御信号を除去することによって)等価になるように再構成できるかどうかが決定される。ドライバが論理インスタンスである場合、評価を実行して、論理インスタンスのドライバがリタイミング可能であるかどうかを決定することができる。ドライバがリタイミング可能でない場合、方法300は、手順ブロック312で、現在のカットが無効であることを通知する。手順ブロック310で、バックワード・トレースの間に特定された他の入力ピンについて、トレース手順が繰り返される。本発明の例示的な一実施形態では、例えば、方法300は、各バックワードサーチで特定された新しい入力ピン毎に反復して実行される。その結果、新しい入力ピンがカットに追加され、そのドライバがリタイミング目的のため評価される。手順ブロック310で特定された他の入力ピンは、選択されたレジスタ以外のレジスタによって駆動することができるので、リタイミングされる追加のレジスタをリタイミング可能カットに含めることができる。関連する入力ピンと出力ピンがすべて考察された後、カットのピンが返される。これらのピンは、図14の手順ブロック254におけるフォワード・リタイミング可能カットを構成する。
図16および図17には、フォワード・リタイミングの一例が示されている。図示の例は、図12、図14、および図15に関して上述した例示的方法を利用する。この例では、レジスタRからLUTおよびLUTを経由してレジスタRに至る信号パス沿いで、レジスタRが最悪のスラック値を有することが、タイミング解析(図12の手順ブロック202)によって示され、そのためレジスタRがリタイミングされるために選択される(図12の手順ブロック206)と仮定する。また、この例では、方法250は、フェイリングパス沿いの各入力ピンについて順番に実行されると仮定する。この例示的な方法によれば、入力ピンiが、フォワード・リタイミングのために最初に選択されるピンである(図14の手順ブロック252)。入力ピンiから始めるので、フォワード・トレースは、入力ピンiに関連する論理インスタンスの出力ピンから実行される(図15の手順ブロック302)。したがって、フォワード・トレースは、関連するLUTの出力ピンoから実行される。フォワード・トレースによって、oで始まるパス部分の終点として、入力ピンiが特定され、カットに追加される(図15の手順ブロック304)。バックワード・トレースが、入力ピンiとLUTの他の入力ピンから実行される(図15の手順ブロック306)。入力ピンiからバックワード・トレースを行うことによって、パスのドライバとしてレジスタRが特定され、レジスタRからの他のファンアウトがないことが分かる。入力ピンiからバックワード・トレースを行うことによって、レジスタRとレジスタRからのファンアウト中に入力ピンiが特定される。レジスタRが評価されて、それがリタイミング可能ドライバであるかどうかが決定される(図15の手順ブロック308)。この場合、レジスタRはレジスタRと等価であり、したがって、リタイミング可能である。フォワード・リタイミング手順300が、新たに特定された入力ピンiから繰り返される(図15の手順ブロック310)。LUTの唯一の出力ピンである出力ピンoからのフォワード・トレースによって、入力ピンiとiが特定される(図15の手順ブロック302)。入力ピンiとiが、カットに追加される(図15の手順ブロック304)。バックワード・トレースが、入力ピンiとiから実行される(図15の手順ブロック306)。レジスタRからiおよびiに至るパス部分はすでに考察されているので、いくつかの実施形態では、入力ピンiからのバックワード・トレースは実行されない。入力ピンiからのバックワード・トレースによって、レジスタRが特定され、リタイミング目的のため評価される(図15の手順ブロック308)。この例では、レジスタRはレジスタRと等価であり、したがって、リタイミング可能である。他に考察する入力ピンがないので、カットのピンが有効リタイミング可能カットとして返される。具体的には、入力ピンi、i、およびiを含むカットが返される(図15の手順ブロック312)。このカットは、図16にカット「AA」として示されている。見つかったカットを用いてタイミング評価が実行され、カットの遅延および/またはスラックが決定される(図15の手順ブロック312)。この例では、計算されたカットのスラックが、フェイリングパスについての元のスラック時間に対して改善(例えば、−2から1ns)を示すと仮定する。カットは第1のカットとしてセーブされ(図14の手順ブロック258、260)、次の入力ピンについて考察が行われる(図14の手順ブロック264、266)。
図17には、同じ例示的な方法を用いて次のフォワード・リタイミング可能カットを見つける手順が示されている。この例示的な方法によれば、次の入力ピンは、フェイリングパス沿いの次の入力ピン、すなわち、入力ピンiである。入力ピンiから始めるので、フォワード・トレースは、LUTの出力ピンoから実行される(図15の手順ブロック302)。フォワードサーチによって、レジスタRの入力ピンDとLUTの入力ピンiが特定され、それらがカットに追加される(図15の手順ブロック304)。バックワード・トレースが、入力ピンiとiから実行される(図15の手順ブロック306)。入力ピンiからのバックワード・トレースによって、LUTから出力ピンoが特定され、出力ピンoからのファンアウトに他の入力ピンはないことが分かる。いくつかの実施形態では、出力ピンoが、リタイミング可能レジスタであるレジスタR、Rから駆動されるかどうかを決定するため、評価が実行される(図15の手順ブロック308)。入力ピンiからのバックワード・トレースによって、ドライバとしての出力ピンoと、出力ピンoからのファンアウト内の別の入力ピンとしての入力ピンiが特定される。出力ピンoが、リタイミング可能レジスタであるレジスタR、Rから駆動されるかどうかを決定するため、評価が実行されるが(図15の手順ブロック308)、この情報は、上述したカット「AA」を見つける手順でセーブされている場合もある。フォワード・トレースおよびバックワード・トレース手順が、入力ピンiからのバックワード・トレースによって特定された他のピンである入力ピンiから実行される(図15の手順ブロック310)。LUTの出力ピンoからのフォワード・トレースによって、入力ピンi10とレジスタRの入力ピンDが特定される(図15の手順ブロック302)。入力ピンi10とレジスタRの入力ピンDが、カットに追加される(図15の手順ブロック304)。LUTの入力ピンiからのバックワード・トレースによって、ドライバとしてのレジスタRが特定され(図15の手順ブロック306)、それがリタイミング可能レジスタであることが確認される(図15の手順ブロック308)。他に考察する入力ピンがないので、方法300は終了し、レジスタRの入力ピンD、レジスタRの入力ピンD、および入力ピンi、i10を含むリタイミング可能カットが返される(図15の手順ブロック312)。このリタイミング可能カットは、図17にカット「BB」として示されている。見つかったカットを用いてタイミング評価が実行され、カットの遅延および/またはスラックが決定される(図14の手順ブロック256)。この例では、計算されたカットのスラックが、セーブされた第1のカットの時間に対して改善(例えば、1から2ns)を示すと仮定する。したがって、カット「BB」がセーブされる(図14の手順ブロック262、263)。フェイリングパス沿いには他に考察する入力ピンがないので、カット「BB」が最善のフォワード・リタイミング可能カットとして返される(図14の手順ブロック240)。
図18には、バックワード・リタイミング可能カットを見つけるための例示的な方法350が示されている。方法350は、バックワード・リタイミング可能カットに適用するために変更することができる図14に示す方法など、リタイミング可能カットを見つけ、評価するより一般的な方法の一環として実施することができる。フォワード・リタイミング可能カットを見つけるのと類似して、方法350は、回路機能を維持するためにリタイミングする必要がある他のインスタンスを特定し、評価するために、論理コーンのパスを前方および後方にトレースする。この手順は、見つかったカットが有効であることを保証するのにも役立つ。例えば、バックワード・リタイミング可能カットの場合、フォワード・トレースを行う手順は、論理コーンの第2(または右側)の区画へのファンインがないこと、またリタイミング可能カットの第2(または右側)の区画が順序素子(例えば、FPGAのレジスタ)を駆動することを確認するのに有用である。
本発明の一実施形態の例示的な手順350は、フェイリングパス沿いの論理インスタンスの入力ピン(例えば、フェイリングパス沿いの最後の論理インスタンスの入力ピン)から始まる。図18の手順ブロック352で、選択された入力ピンと論理インスタンスの関連する入力ピンがカットに追加される。関連する入力ピンは、例えば、ネットリストまたは回路デザインを保存する他の設計データベースから特定される。手順ブロック354で、フォワード・トレースが、選択された入力ピンに関連する論理インスタンスの出力から実行される。本発明の一実施形態では、例えば、フォワード・トレースは、論理インスタンスのすべての出力ピンから実行される。フォワード・トレースを行う手順によって、特定の出力によって駆動される入力ピン(すなわち、特定の出力からの信号の終点)が特定される。フォワード・トレースの間に特定された入力ピンの各々について、手順ブロック356で、入力ピンがリタイミング可能素子に結合されているかどうかが決定される。本発明の一実施形態では、例えば、回路素子は、それが順序素子、または別の論理インスタンスである場合に限り、リタイミング可能である。回路素子が論理インスタンスである場合、評価を実行して、論理インスタンスがリタイミング可能順序素子であるかどうかを決定することができる。出力ピンによって駆動される順序素子を評価して、それが関連するレジスタ(例えば、リタイミングされるレジスタ、または関連するリタイミングされたレジスタ)と等価であるか、または等価になるように再構成できるかどうかを決定することができる。どの順序素子もリタイミング可能でない場合、方法350は、手順ブロック360で、現在のカットが無効であることを通知する。手順ブロック358で、フォワード・トレースの間に特定された他の入力ピンについて、手順350が繰り返される。本発明の例示的な一実施形態では、例えば、方法350は、フォワード・トレースで特定された新しい論理インスタンス毎に反復して実行される。その結果、新しい入力ピンがカットに追加され、新しい出力ピンとそれが駆動する順序素子が評価される。反復手順の間、本発明の具体的な一実施では、入力ピンがバックワード・リタイミング可能カットに追加された論理インスタンスによって駆動される入力ピンは、カットに追加されない。関連する入力ピンと出力ピンがすべて考察された後、手順ブロック360で、カットのピンが返される。これらのピンは、バックワード・リタイミング可能カットを構成する。
図19および図20には、バックワード・リタイミングの一例が示されている。図16および図17に示した例のように、レジスタRからLUTおよびLUTを経由してレジスタRに至る信号パス沿いで、レジスタRが最悪のスラック値を有し、そのためレジスタRがリタイミングされるために選択される(図12の手順ブロック206)と仮定する。また、この例では、方法350は、最後の論理インスタンスから始めて、フェイリングパス沿いの各入力ピンについて順番に実行されると仮定する。この例示的な方法によれば、入力ピンiが、バックワード・リタイミングのために最初に選択されるピンである(図18の手順ブロック352)。入力ピンiから始めるので、入力ピンiとiがカットに追加される(図18の手順ブロック352)。フォワード・トレースが、LUTの出力ピンoから実行される(図18の手順ブロック354)。フォワード・トレースによって、oで始まる信号の終点としての入力ピンDと入力ピンiが特定される。レジスタRが評価されて、それがリタイミング可能素子であるかどうかが決定される(図18の手順ブロック356)。この場合、レジスタRはリタイミング可能であると仮定する。LUTも評価されて、それがリタイミング可能回路素子であるかどうかが決定される。この場合、LUTは、リタイミング可能であると仮定するレジスタRを駆動する。手順350が、新たに特定された入力ピンiとLUTから繰り返される(図18の手順ブロック358)。反復された手順において、入力ピンi10がカットに追加される(図18の手順ブロック352)。この具体的な例では、入力ピンiは、入力ピンがすでにカットに含まれている論理インスタンスによって駆動される(すなわち、入力ピンiはLUTによって駆動され、LUTの入力ピンiとiはすでにカットに含まれている)ので、カットに追加されない。LUTの唯一の出力ピンである出力ピンoからのフォワード・トレースによって、すでにリタイミング可能であると決定されているレジスタRの入力ピンDが特定される(図18の手順ブロック354、356)。他に考察する論理インスタンスがないので、カットのピンが有効リタイミング可能カットとして返される。具体的には、入力ピンi、i、およびi10を含むカットが、有効バックワード・リタイミング可能カットとして返される(図18の手順ブロック360)。このカットは、図19にカット「CC」として示されている。見つかったカットを用いてタイミング評価が実行され、カットのスラックが決定され(図14の手順ブロック256)、カットは第1のカットとしてセーブされ(図14の手順ブロック258、260)、次の入力ピンについて考察が行われる(図14の手順ブロック264、266)。
図20には、同じ例示的な方法を用いて、次のバックワード・リタイミング可能カットを見つける手順が示されている。この例示的な方法によれば、次の入力ピンは、フェイリングパス沿いの直前の入力ピン、すなわち、入力ピンiである。入力ピンiとiがカットに追加される(図18の手順ブロック352)。フォワード・トレースが、LUTの出力ピンoから実行される(図18の手順ブロック354)。フォワードサーチによって、LUTの入力ピンが特定される。LUTがリタイミング可能順序素子を駆動するかどうかを決定するために評価が実行される。レジスタRとLUTの入力ピンiが特定され、評価される。レジスタRはリタイミング可能であり、LUTはやはりリタイミング可能なレジスタRを駆動するので、方法は進められる。手順350は、新たに特定された入力ピンiとLUTから第1の反復を繰り返す(図18の手順ブロック358)。入力ピンiがカットに追加される(図18の手順ブロック352)。しかし、この例では、入力ピンiは、入力ピンがすでにカットに含まれている論理インスタンスによって駆動される(すなわち、入力ピンiはLUTによって駆動され、LUTの入力ピンiとiはすでにカットに含まれている)ので、カットに追加されない。LUTの唯一の出力ピンである出力ピンoからのフォワード・トレースによって、すでにリタイミング可能であると決定されているレジスタRとLUTの入力ピンiが特定される(図18の手順ブロック354、356)。手順350は次に、入力ピンiとLUTから第2の反復を繰り返す(図18の手順ブロック358)。入力ピンi10がカットに追加されるが(図18の手順ブロック352)、入力ピンiは、入力ピンがすでにカットに含まれている論理インスタンスによって駆動されるので、追加されない。出力ピンoからのフォワード・トレースによって、すでにリタイミング可能であると決定されているレジスタRが特定される(図18の手順ブロック354、356)。他に考察する論理インスタンスがないので、カットのピン(i、i、i、およびi10)が有効リタイミング可能カットとして返される。このリタイミング可能カットは、図20にカット「DD」として示されている。見つかったカットを用いてタイミング評価が実行され、カットの遅延および/またはスラックが決定される(図14の手順ブロック256)。この例では、カットのスラックが計算され、セーブされた第1のカットの時間に対して改善(例えば、2nsから1ns)を示すと仮定する。したがって、カット「DD」がセーブされる(図14の手順ブロック262、263)。フェイリングパス沿いには他に考察する入力ピンがないので、カット「DD」が最善のバックワード・リタイミング可能カットとして返される(図14の手順ブロック240)。
図12、図14、図15に示した最善のフォワード・リタイミング可能カットを見つけるための例示的な方法の実施形態を用いて、いくつかの実験を行った。具体的には、例示的な方法の実施形態を使用して、Xilinx(登録商標)Virtex−II(登録商標)FPGAに実装されたデザインをリタイミングした。表1には、800から8000スライス(Xilinx(登録商標)デバイスの基本構成ユニット)を有するFPGAデザインに関する実験結果が示されている。複数のクロックドメインを有するデザインの場合、表に示すクロックドメインは、最悪のタイミング違反を犯すクロックドメインとする。表1に示す結果はすべて、最終的な配置および配線を行った後に取得された。したがって、図示のクロック時間は、実クロックサイクル時間である。第1欄には、事例1から10として10のデザインが掲げてあり、さらに各事例の平均も含まれている。「スライス」と記された第2欄には、各デザイン毎のスライスの数が示してある。「合成」と記された第3欄には、リタイミングを行わない論理合成の後に取得されたクロックサイクル時間が示してある。「リタイミング1」と記された第4欄には、図12、図14、図15に示し、上で概略を説明した方法の第1版を用いて取得したクロックサイクル時間が示してある。具体的には、第1版の方法は、物理遅延モデル、配置制約(例えば、配置中にレジスタの密集を防止するのに使用される基準)、制御信号分離技法を使用し、スラックが最もよく改善されるように最善のフォワード・リタイミング可能カットを探索した。第4欄の括弧内の値は、リタイミングを行ったことで追加されたレジスタと除去されたレジスタの数をそれぞれ表す。「改善1」と記された第5欄には、論理合成後に得られた回路に対する、例示的な方法を用いてリタイミングした回路の改善率が示してある。「リタイミング2」と記された第6欄には、リタイミングアルゴリズムの第2版の結果が示してあり、括弧内にはリタイミングプログラムの実行に要した分数が含まれている。「改善2」と記された第7欄には、論理合成後に得られた回路に対する、例示的な方法の第2版を用いてリタイミングした回路の改善率が示してある。第6欄および第7欄に示された第2版のリタイミングアルゴリズム「リタイミング2」では、より正確な物理遅延モデルの代りにワイヤロード遅延モデルを使用した。さらに、第2版では、どのような形式の配置制約も使用しなかった。物理情報の欠落のため精度の低いタイミング評価の下でリタイミングが行われ、タイミング精度が低下したことで、全体的な結果は第1版の方法ほど良好なものではない。結果的に、改善率は平均で8.2%である。しかし、いくつかのケースでは、論理合成によって達成されたタイミングよりも悪いタイミングが得られた。「リタイミング3」と記された第8欄には、リタイミングアルゴリズムの第3版のタイミング結果が示してある。追加されたレジスタと除去されたレジスタの数が、括弧内にそれぞれ示してある。「改善3」と記された第9欄には、論理合成後に得られた回路に対する、例示的な方法の第3版を用いてリタイミングした回路の改善率が示してある。リタイミング方法の第3版では、第1版で使用した構造上の制約を緩和するのに使用される制御信号分離手続きが省略された。第9欄に示すように、第3版を用いた際の改善率は7.14%である。さらに、第8欄に示すように、除去されたレジスタと追加されたレジスタの数は、第1版と比べて著しく少ない。最後に、「改善4」と記された第10欄には、リタイミングアルゴリズムの第4版の結果が示してある。リタイミング手順の実行に要した分数が括弧内に示してある。「改善4」と記された第11欄には、論理合成後に得られた回路に対する、例示的な方法の第4版を用いてリタイミングした回路の改善率が示してある。第4版のアルゴリズムでは、物理配置の考察、制御信号の分離、および最善カットの探索を除外する変更を第1版に施した。これらの変更の結果、第11欄に示すように、平均改善率は1.9%となり、アルゴリズムによる全体的タイミング利得はほとんど失われ、第10欄に示すように、むしろ悪化したケースも多く見られる。第4版の実行時間を第6欄に示す第2版と比較することから分かるように、カット探索手順を含むカットベース・リタイミングは、リタイミングアルゴリズムの実行時間を大幅に短縮することができる。実際、第2版の方法では、第4版に比べて平均実行時間が68.3%改善している。
Figure 2007524891
上述した技法の態様はどれも、分散コンピュータネットワークを用いて実行または設計することができる。図21には、そのような例示的なネットワークの1つが示されている。サーバコンピュータ400は、(サーバコンピュータの内部または外部に)関連する記憶装置402を有することができる。例えば、サーバコンピュータ400は、(例えば、EDAソフトウェアツールの一部として)上述した実施形態のいずれかを用いて回路デザインをリタイミングできるように構成することができる。サーバコンピュータ400は、例えば、ワイドエリアネットワーク、ローカルエリアネットワーク、クライアント/サーバネットワーク、インターネット、またはその他のネットワークを含む、全体として404で示されるネットワークに結合することができる。1つまたは複数の406、408で示されるようなクライアントコンピュータは、ネットワークプロトコルを用いてネットワーク404に結合することができる。
図22には、設計情報(例えば、ネットリスト)を含むデータベースが本明細書に開示した実施形態のいずれかに従ってリタイミングされた回路の設計情報を含むように、データベースを図21に示すサーバコンピュータ400などのリモートサーバコンピュータを使用して更新(または変更)できることが示されている。手順ブロック450で、例えば、クライアントコンピュータが、リタイミングされる回路に関する設計データを送信する。例えば、クライアントコンピュータは、ネットリストまたはその他のEDA設計データベースを送信することができる。手順ブロック452で、データはサーバコンピュータによって受信され、ロードされる。手順ブロック454で、データベースによって定義された回路が、開示の実施形態のいずれかに従ってリタイミングされる。リタイミング後のデザインを表す新しいデータベースを作成することができる。この新しい設計データは、設計データベースの更新(または変更)版として、または1つまたは複数の独立のデータベースとして保存することができる。手順ブロック456で、サーバコンピュータは、更新データベースまたはその他のデータベースをクライアントコンピュータに送信し、手順ブロック458で、クライアントコンピュータはそのデータベースを受信する。図22に示す例が関連する設計データを含む設計データベースを更新するための唯一の方法でないことは、当業者には明らかであろう。例えば、設計データは、ネットワークに接続されておらず、サーバに単独で送付されるコンピュータ可読媒体に保存することができる。あるいは。サーバコンピュータは、設計手続きの一部だけを実行することができる。
いくつかの実施形態によって本発明の原理を例示し、説明してきたが、本発明の原理から逸脱することなく、それらの実施形態を構成および詳細について変更できることは明らかであろう。説明した実施形態は例示的なものに過ぎず、本発明の範囲を限定するものと解釈すべきではない。例えば、本開示は、説明した方法、ならびに開示の方法によってリタイミングされた集積回路(例えば、開示の方法のいずれかによってリタイミングされたFPGA)を包含する。本発明は、添付の特許請求の範囲およびその均等物の範囲および主旨の中に収まるすべての実施形態を包含する。
順序素子および論理インスタンスを含む例示的なパイプラインを示したブロック図である。 図1の例示的なパイプラインを用いるフォワード・リタイミングの一例を示したブロック図である。 図1の例示的なパイプラインを用いるバックワード・リタイミングの一例を示したブロック図である。 フィールド・プログラマブル・ゲート・アレイ(FPGA)の論理コーン内のリタイミング可能カットにレジスタを再配置する手順の一例を示したブロック図である。 フィールド・プログラマブル・ゲート・アレイ(FPGA)の論理コーン内のリタイミング可能カットにレジスタを再配置する手順の一例を示したブロック図である。 FPGA内の例示的な論理コーンおよび論理コーン内の4つの例示的なカットのブロック図である。 例示的なフォワード・リタイミング可能カットにリタイミングされたレジスタを有する図5の論理コーンのブロック図である。 例示的なバックワード・リタイミング可能カットにリタイミングされたレジスタを有する図5の論理コーンのブロック図である。 FPGA内の例示的な構成上の制約を示したブロック図である。 リタイミング中に使用できる制御信号を分離する第1の例示的な手順を示したブロック図である。 リタイミング中に使用できる制御信号を分離する第1の例示的な手順を示したブロック図である。 リタイミング中に使用できる制御信号を分離する第1の例示的な手順を示したブロック図である。 リタイミング中に使用できる制御信号を分離する第2の例示的な手順を示したブロック図である。 リタイミング中に使用できる制御信号を分離する第2の例示的な手順を示したブロック図である。 は、リタイミング中に使用できる制御信号を分離する第2の例示的な手順を示したブロック図である。 リタイミング中に使用できる制御信号を分離する第3の例示的な手順を示したブロック図である。 リタイミング中に使用できる制御信号を分離する第3の例示的な手順を示したブロック図である。 リタイミング中に使用できる制御信号を分離する第3の例示的な手順を示したブロック図である。 集積回路をリタイミングするための例示的な方法を示したフローチャートである。 リタイミングされた3つのレジスタのリタイミング後の初期状態を見つける例示的な手順を示したブロック図である。 図12に示した方法で使用できる最善のフォワード・リタイミング可能カットを決定する例示的な方法を示したフローチャートである。 選択した入力ピンからのフォワード・トレースおよびバックワード・トレースによってフォワード・リタイミング可能カットを見つける例示的な手順を示したフローチャートである。 図15に示した例示的な方法に従ってFPGAの論理コーン内の第1のフォワード・リタイミング可能カットを見つける手順を示したブロック図である。 図15に示した例示的な方法に従ってFPGAの論理コーン内の第2のフォワード・リタイミング可能カットを見つける手順を示したブロック図である。 選択した入力ピンからのフォワード・トレースおよびバックワード・トレースによってバックワード・リタイミング可能カットを見つける例示的な手順を示したフローチャートである。 図18に示した例示的な方法に従ってFPGAの論理コーン内の第1のバックワード・リタイミング可能カットを見つける手順を示したブロック図である。 図18に示した例示的な方法に従ってFPGAの論理コーン内の第2のバックワード・リタイミング可能カットを見つける手順を示したブロック図である。 開示のリタイミング方法を実行する際に使用することができるクライアント/サーバネットワークのシステム図である。 例えば、図21のネットワークを使用するデータベース作成を示したフローチャートである。

Claims (48)

  1. EDA(コンピュータによる電子回路の設計自動化)環境において集積回路をリタイミングするための方法であって、
    前記集積回路内の1つまたは複数のパスについてタイミング解析を実行して、前記パスに沿って伝播する信号の遅延時間を取得するステップと、
    前記取得した遅延時間に基づいてタイミング制約を満たさない遅延時間を有するパスを選択するステップであって、前記選択したパスは、始点順序素子で始まり、終点順序素子で終り、前記選択したパスは、2つまたはより多くの論理インスタンスをさらに含む、ステップと、
    前記タイミング制約を満たすように前記始点順序素子または前記終点順序素子の一方を再配置できる前記選択したパス沿いのリタイミング・ロケーションを決定するステップであって、前記リタイミング・ロケーションは、前記始点順序素子または前記終点順序素子の前記一方からの少なくとも2つの論理インスタンスである、ステップと、
    前記集積回路の設計データベースを更新して、前記始点順序素子または前記終点順序素子の前記一方を前記リタイミング・ロケーションに再配置するステップと、
    を含む方法。
  2. 請求項1に記載の方法であって、前記タイミング解析を実行するステップは、前記取得した遅延時間と前記タイミング制約を用いてスラック値を決定するステップをさらに含み、前記パスを選択するステップは、前記スラック値を評価するステップをさらに含む、方法。
  3. 請求項1に記載の方法であって、前記リタイミング・ロケーションを決定するステップは、回路機能を維持するため、1つまたは複数の追加の順序素子が、前記リタイミング・ロケーションあるいは1つまたは複数の追加のリタイミング・ロケーションに再配置する必要があるかどうか判定するステップを含む、方法。
  4. 請求項3に記載の方法であって、前記リタイミング・ロケーションおよび前記1つまたは複数の追加のリタイミング・ロケーションは、リタイミング可能カットを含む、方法。
  5. 請求項1に記載の方法であって、前記リタイミング・ロケーションを決定するステップは、
    論理インスタンスの1つまたは複数の出力ピンから少なくとも1つのフォワード・トレースを実行するステップであって、前記論理インスタンスを越えて前記始点順序素子または前記終点順序素子の前記一方を再配置することができる、ステップと、
    論理インスタンスの1つまたは複数の入力ピンから少なくとも1つのバックワード・トレースを実行するステップであって、前記論理インスタンスを越えて前記始点順序素子または前記終点順序素子の前記一方を再配置することができる、ステップと、
    を含む、方法。
  6. 請求項1に記載の方法であって、
    前記始点順序素子または前記終点順序素子の前記一方のリタイミング後の初期状態を決定するステップを、
    さらに含む方法。
  7. 請求項1に記載の方法であって、
    前記始点順序素子または前記終点順序素子の前記一方の構成上の制約を緩和するステップを、
    さらに含む方法。
  8. 請求項7に記載の方法であって、前記構成上の制約を緩和するステップは、前記始点順序素子または前記終点順序素子の前記一方から1つまたは複数の制御信号を分離するステップを含む、方法。
  9. 請求項1に記載の方法であって、前記リタイミング・ロケーションを決定するステップは、
    前記選択したパス内の複数の可能なリタイミング・ロケーションに関連するスラック値を比較するステップと、
    前記スラック値に基づいて前記複数の可能なリタイミング・ロケーションから前記リタイミング・ロケーションを選択するステップと、
    を含む、方法。
  10. 請求項9に記載の方法であって、前記選択したリタイミング・ロケーションは、前記選択したパスのスラック値に最も優れた改善をもたらす、方法。
  11. 請求項1に記載の方法であって、前記集積回路は、フィールド・プログラマブル・ゲート・アレイである、方法。
  12. 請求項1に記載の方法によってリタイミングされる集積回路。
  13. 請求項1に記載の方法をコンピュータシステムに実行させるコンピュータ実行可能命令を保存するコンピュータ可読媒体。
  14. 請求項1に記載の方法によってリタイミングされた集積回路の設計情報を含む設計データベースを保存するコンピュータ可読媒体。
  15. EDA(コンピュータによる電子回路の設計自動化)環境において集積回路をリタイミングするための方法であって、
    タイミング制約を満たさない遅延時間を有する前記集積回路内のフェイリング信号パスを特定するステップであって、前記フェイリング信号パスは、始点順序素子で始まり、論理コーンの1つまたは複数の論理インスタンスを通過して延び、終点順序素子で終る、ステップと、
    前記フェイリング信号パスの前記遅延時間を改善するために前記始点順序素子または前記終点順序素子の一方を再配置できる前記フェイリング信号パス沿いのロケーションを選択するステップであって、前記選択したロケーションは、前記論理インスタンスのうちの関連する1つの論理インスタンスの入力に結合される、ステップと、
    前記選択したロケーションから、前記関連する論理インスタンスの出力パスと入力パスをサーチして、回路機能を維持するために再配置する1つまたは複数の追加の順序素子を特定するステップと、
    を含む方法。
  16. 請求項15に記載の方法であって、前記出力パスと入力パスをサーチするステップは、回路機能を維持するために前記1つまたは複数の追加の順序素子を再配置する前記集積回路内の1つまたは複数の追加のロケーションを特定するステップを含む、方法。
  17. 請求項16に記載の方法であって、前記選択したロケーションおよび前記1つまたは複数の特定した追加のロケーションは、リタイミング可能カットを含む、方法。
  18. 請求項15に記載の方法であって、前記選択したロケーションは、バックワード・リタイミング可能カットの一部であり、前記出力パスと入力パスをサーチするステップは、前記関連する論理インスタンスが1つまたは複数の順序素子を駆動することを確認するステップを含む、方法。
  19. 請求項15に記載の方法であって、前記選択したロケーションは、フォワード・リタイミング可能カットの一部であり、前記出力パスと入力パスをサーチするステップは、前記関連する論理インスタンスが、1つまたは複数の順序素子によって、または1つまたは複数の定常入力/出力ピンによって、駆動されることを確認するステップを含む、方法。
  20. 請求項15に記載の方法であって、前記選択したロケーションは、前記始点順序素子または前記終点順序素子の前記一方を再配置する複数の可能なロケーションの1つであり、前記選択したロケーションは、前記フェイリング信号パスのスラック時間に最も優れた改善をもたらす、方法。
  21. 請求項15に記載の方法であって、
    再配置できる前記始点順序素子または前記終点順序素子の前記一方のリタイミング後の初期状態、あるいは1つまたは複数の前記特定した追加の順序素子のリタイミング後の初期状態を決定するステップを、
    さらに含む方法。
  22. 請求項15に記載の方法であって、
    再配置できる前記始点順序素子または前記終点順序素子の前記一方の構成上の制約、あるいは1つまたは複数の前記特定した追加の順序素子の構成上の制約を緩和するステップを、
    さらに含む方法。
  23. 請求項15に記載の方法であって、前記集積回路が、フィールド・プログラマブル・ゲート・アレイである、方法。
  24. 請求項15に記載の方法によってリタイミングされる集積回路。
  25. 請求項15に記載の方法をコンピュータシステムに実行させるコンピュータ実行可能命令を保存するコンピュータ可読媒体。
  26. 請求項15に記載の方法によってリタイミングされた集積回路の設計情報を含む設計データベースを保存するコンピュータ可読媒体。
  27. 集積回路内でリタイミング可能カットを特定するための方法であって、
    リタイミングする信号パスを選択するステップであって、前記信号パスは、始点順序素子で始まり、1つまたは複数の論理インスタンスを通過して延び、終点順序素子で終る、ステップと、
    前記信号パス沿いにリタイミング可能カットを発見するステップであって、
    前記信号パス内の選択した論理インスタンスの1つまたは複数の出力ピンからフォワード・トレースを実行するステップと、
    前記信号パス内の選択した論理インスタンスの1つまたは複数の入力ピンからバックワード・トレースを実行するステップと、
    を含むステップと、
    前記リタイミング可能カットに関連する遅延時間を決定するために前記リタイミング可能カットを用いてタイミング評価を実行するステップと、
    を含む方法。
  28. 請求項27に記載の方法であって、
    前記遅延時間が関連するタイミング制約に違反していない場合、前記リタイミング可能カットをセーブするステップを、
    さらに含む方法。
  29. 請求項27に記載の方法であって、前記リタイミング可能カットは、第1のリタイミング可能カットであり、該方法は、
    リタイミングする前記信号パス沿いに第2のリタイミング可能カットを発見するステップと、
    前記第2のリタイミング可能カットを用いてタイミング評価を実行して、前記第2のリタイミング可能カットに関連する遅延時間を決定するステップと、
    前記第1のリタイミング可能カットに関連する前記遅延時間と前記第2のリタイミング可能カットに関連する前記遅延時間を比較して、最善のリタイミング可能カットを決定するステップと、
    をさらに含む方法。
  30. 請求項27に記載の方法であって、前記最善のリタイミング可能カットは、リタイミングする前記信号パスのスラック値に全体として最も優れた改善をもたらす、方法。
  31. 請求項27に記載の方法であって、前記リタイミング可能カットは、フォワード・リタイミング可能カットである、方法。
  32. 請求項27に記載の方法であって、前記リタイミング可能カットは、バックワード・リタイミング可能カットである、方法。
  33. 請求項27に記載の方法であって、
    前記リタイミング可能カットに含まれる少なくとも1つの順序素子のリタイミング後の初期状態を決定するステップを、
    さらに含む方法。
  34. 請求項27に記載の方法であって、
    前記リタイミング可能カットに含まれる少なくとも1つの順序素子の1つまたは複数の制御信号を分離するステップを、
    さらに含む方法。
  35. 請求項27に記載の方法であって、前記集積回路が、フィールド・プログラマブル・ゲート・アレイである、方法。
  36. 請求項27に記載の方法によってリタイミングされる集積回路。
  37. 請求項27に記載の方法をコンピュータシステムに実行させるコンピュータ実行可能命令を保存するコンピュータ可読媒体。
  38. 請求項27に記載の方法によってリタイミングされた集積回路の設計情報を含む設計データベースを保存するコンピュータ可読媒体。
  39. EDA(コンピュータによる電子回路の設計自動化)環境において集積回路をリタイミングするための方法であって、
    前記集積回路内の1つまたは複数のパスについてタイミング解析を実行して、スラック値を取得するステップと、
    前記取得したスラック値に基づいて前記パスの1つを選択するステップと、
    前記選択したパス沿いのリタイミング可能カットを決定するステップであって、前記リタイミング可能カットは、前記集積回路内の1つまたは複数の論理インスタンスの一組の入力ピンを含み、前記選択されたパスのスラック値を改善するため、前記入力ピンに1つまたは複数のリタイミングした順序素子をそれぞれ結合することができ、前記リタイミング可能カットは、前記選択したパス沿いの2つまたはより多くの可能なカットから自動的に選択される、ステップと、
    を含む方法。
  40. 請求項39に記載の方法であって、前記一組の入力ピンは、前記リタイミングした順序素子の少なくとも1つから少なくとも論理インスタンス2つ離して配置された論理インスタンスに関連付けられる、方法。
  41. 請求項39に記載の方法であって、
    前記リタイミング後の順序素子の少なくとも1つの初期状態を決定するステップを、
    さらに含む方法。
  42. 請求項39に記載の方法であって、
    前記リタイミング後の順序素子の少なくとも1つの構成上の制約を緩和するステップを、
    さらに含む方法。
  43. 請求項39に記載の方法であって、
    前記リタイミング可能カット内に入力ピンを有する論理インスタンスからフォワード・トレースおよびバックワード・トレースを実行するステップを、
    さらに含む方法。
  44. 請求項39に記載の方法であって、前記リタイミング可能カットは、バックワード・リタイミング可能カットである、方法。
  45. 請求項39に記載の方法であって、前記リタイミング可能カットは、フォワード・リタイミング可能カットである、方法。
  46. 請求項39に記載の方法によってリタイミングされる集積回路。
  47. 請求項39に記載の方法をコンピュータシステムに実行させるコンピュータ実行可能命令を保存するコンピュータ可読媒体。
  48. 請求項39に記載の方法によってリタイミングされた集積回路の設計情報を含む設計データベースを保存するコンピュータ可読媒体。
JP2006507445A 2003-03-19 2004-03-18 カットベース手法を用いたリタイミング回路 Expired - Lifetime JP4473264B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US45630603P 2003-03-19 2003-03-19
US52430003P 2003-11-21 2003-11-21
PCT/US2004/008690 WO2004084277A2 (en) 2003-03-19 2004-03-18 Retiming circuits using a cut-based approach

Publications (2)

Publication Number Publication Date
JP2007524891A true JP2007524891A (ja) 2007-08-30
JP4473264B2 JP4473264B2 (ja) 2010-06-02

Family

ID=33032718

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006507445A Expired - Lifetime JP4473264B2 (ja) 2003-03-19 2004-03-18 カットベース手法を用いたリタイミング回路

Country Status (4)

Country Link
US (1) US7203919B2 (ja)
EP (1) EP1623448B1 (ja)
JP (1) JP4473264B2 (ja)
WO (1) WO2004084277A2 (ja)

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7162704B2 (en) * 2003-05-09 2007-01-09 Synplicity, Inc. Method and apparatus for circuit design and retiming
US7120883B1 (en) 2003-05-27 2006-10-10 Altera Corporation Register retiming technique
US7392494B2 (en) * 2003-06-09 2008-06-24 Kuoching Lin Clustering circuit paths in electronic circuit design
US7584441B2 (en) * 2003-09-19 2009-09-01 Cadence Design Systems, Inc. Method for generating optimized constraint systems for retimable digital designs
US7810061B2 (en) * 2004-09-17 2010-10-05 Cadence Design Systems, Inc. Method and system for creating a useful skew for an electronic circuit
US7620917B2 (en) 2004-10-04 2009-11-17 Synopsys, Inc. Methods and apparatuses for automated circuit design
US7236009B1 (en) 2004-12-01 2007-06-26 Andre Rohe Operational time extension
US7428721B2 (en) * 2004-12-01 2008-09-23 Tabula, Inc. Operational cycle assignment in a configurable IC
US20060190754A1 (en) * 2005-02-24 2006-08-24 Atrenta, Inc. A Method for Automatic Recognition of Handshake Data Exchange at Clock-Domain Crossing in Integrated Circuit Design
US7523426B2 (en) * 2005-03-29 2009-04-21 Lsi Corporation Intelligent timing analysis and constraint generation GUI
US7677441B2 (en) * 2005-04-01 2010-03-16 Microsoft Corporation Relaxed currency constraints
US7337422B1 (en) * 2005-05-10 2008-02-26 Xilinx, Inc. Programmably configurable logic-based macro
US7492186B2 (en) 2005-07-15 2009-02-17 Tabula, Inc. Runtime loading of configuration data in a configurable IC
US7363606B1 (en) * 2005-08-23 2008-04-22 Sun Microsystems, Inc. Flip-flop insertion method for global interconnect pipelining
US7478356B1 (en) 2005-09-30 2009-01-13 Xilinx, Inc. Timing driven logic block configuration
US7372297B1 (en) 2005-11-07 2008-05-13 Tabula Inc. Hybrid interconnect/logic circuits enabling efficient replication of a function in several sub-cycles to save logic and routing resources
US7679401B1 (en) * 2005-12-01 2010-03-16 Tabula, Inc. User registers implemented with routing circuits in a configurable IC
US7317348B2 (en) * 2006-01-27 2008-01-08 International Business Machines Corporation Noise reduction in digital systems
US7571412B1 (en) * 2006-03-15 2009-08-04 Altera Corporation Method and system for semiconductor device characterization pattern generation and analysis
US20070225960A1 (en) * 2006-03-27 2007-09-27 Greener Robert J Subchip boundary constraints for circuit layout
US7584443B1 (en) * 2007-03-07 2009-09-01 Altera Corporation Clock domain conflict analysis for timing graphs
EP2597777A3 (en) 2007-03-20 2014-08-20 Tabula, Inc. Configurable IC having a routing fabric with storage elements
US20090319579A1 (en) * 2007-05-15 2009-12-24 Fedor Pikus Electronic Design Automation Process Restart
US7839162B2 (en) * 2007-06-27 2010-11-23 Tabula, Inc. Configurable IC with deskewing circuits
US7652498B2 (en) * 2007-06-27 2010-01-26 Tabula, Inc. Integrated circuit with delay selecting input selection circuitry
US8069425B2 (en) 2007-06-27 2011-11-29 Tabula, Inc. Translating a user design in a configurable IC for debugging the user design
US8412990B2 (en) * 2007-06-27 2013-04-02 Tabula, Inc. Dynamically tracking data values in a configurable IC
US20090070720A1 (en) * 2007-09-11 2009-03-12 International Business Machines Corporation System to Identify Timing Differences from Logic Block Changes and Associated Methods
US7676779B2 (en) 2007-09-11 2010-03-09 International Business Machines Corporation Logic block timing estimation using conesize
US8990651B2 (en) 2007-09-19 2015-03-24 Tabula, Inc. Integrated circuit (IC) with primary and secondary networks and device containing such an IC
US7681160B1 (en) * 2007-09-27 2010-03-16 Lattice Semiconductor Corporation Weight based look up table collapsing for programmable logic devices
US8381142B1 (en) * 2007-10-09 2013-02-19 Altera Corporation Using a timing exception to postpone retiming
US8037337B2 (en) * 2007-11-28 2011-10-11 International Business Machines Corporation Structures including circuits for noise reduction in digital systems
US8813001B2 (en) * 2008-02-01 2014-08-19 Northwestern University System and method for efficient and optimal minimum area retiming
US8863067B1 (en) 2008-02-06 2014-10-14 Tabula, Inc. Sequential delay analysis by placement engines
EP2104047A1 (en) * 2008-03-19 2009-09-23 Panasonic Corporation Router-aided post-placement and routing retiming
US8555218B2 (en) 2008-05-24 2013-10-08 Tabula, Inc. Decision modules
US8166435B2 (en) 2008-06-26 2012-04-24 Tabula, Inc. Timing operations in an IC with configurable circuits
US8525548B2 (en) * 2008-08-04 2013-09-03 Tabula, Inc. Trigger circuits and event counters for an IC
EP2190022B1 (en) * 2008-11-20 2013-01-02 Hitachi Ltd. Spin-polarised charge carrier device
US8843862B2 (en) * 2008-12-16 2014-09-23 Synopsys, Inc. Method and apparatus for creating and changing logic representations in a logic design using arithmetic flexibility of numeric formats for data
US8091060B1 (en) * 2009-02-10 2012-01-03 Xilinx, Inc. Clock domain partitioning of programmable integrated circuits
US20100218150A1 (en) * 2009-02-26 2010-08-26 International Business Machines Corporation Logic Design Verification Techniques for Liveness Checking
US8255848B2 (en) * 2009-02-27 2012-08-28 International Business Machines Corporation Logic design verification techniques for liveness checking with retiming
US8037443B1 (en) * 2009-07-02 2011-10-11 Calypto Design Systems, Inc. System, method, and computer program product for optimizing an altered hardware design utilizing power reports
US8549448B2 (en) 2009-07-09 2013-10-01 Synopsys, Inc. Delay optimization during circuit design at layout level
US8072234B2 (en) 2009-09-21 2011-12-06 Tabula, Inc. Micro-granular delay testing of configurable ICs
US8327302B2 (en) * 2009-10-16 2012-12-04 International Business Machines Corporation Techniques for analysis of logic designs with transient logic
US10275557B1 (en) * 2010-01-08 2019-04-30 Altera Corporation Method and apparatus for performing incremental compilation using structural netlist comparison
JP2011198028A (ja) * 2010-03-19 2011-10-06 Fujitsu Ltd 回路設計支援装置およびプログラム
US8912820B2 (en) 2010-04-02 2014-12-16 Tabula, Inc. System and method for reducing reconfiguration power
US8539413B1 (en) * 2010-04-27 2013-09-17 Applied Micro Circuits Corporation Frequency optimization using useful skew timing
US8418106B2 (en) 2010-08-31 2013-04-09 International Business Machines Corporation Techniques for employing retiming and transient simplification on netlists that include memory arrays
US8365116B2 (en) * 2010-12-06 2013-01-29 University Of Utah Research Foundation Cycle cutting with timing path analysis
WO2012171142A1 (en) * 2011-06-17 2012-12-20 Telefonaktiebolaget L M Ericsson (Publ) Look-up tables for delay circuitry in field programmable gate array (fpga) chipsets
US8984464B1 (en) 2011-11-21 2015-03-17 Tabula, Inc. Detailed placement with search and repair
US8789001B1 (en) 2013-02-20 2014-07-22 Tabula, Inc. System and method for using fabric-graph flow to determine resource costs
US10810790B1 (en) * 2013-02-28 2020-10-20 TheMathWorks, Inc. Identification and correction of temporal ages in separate signal paths of a graphical model
US8863059B1 (en) 2013-06-28 2014-10-14 Altera Corporation Integrated circuit device configuration methods adapted to account for retiming
US9436565B2 (en) 2013-07-04 2016-09-06 Altera Corporation Non-intrusive monitoring and control of integrated circuits
GB2523188A (en) * 2014-02-18 2015-08-19 Ibm Method and system for pipeline depth exploration in a register transfer level design description of an electronic circuit
US9971858B1 (en) 2015-02-20 2018-05-15 Altera Corporation Method and apparatus for performing register retiming in the presence of false path timing analysis exceptions
US9710591B1 (en) * 2015-02-20 2017-07-18 Altera Corporation Method and apparatus for performing register retiming in the presence of timing analysis exceptions
US9483597B1 (en) * 2015-03-24 2016-11-01 Xilinx, Inc. Opportunistic candidate path selection during physical optimization of a circuit design for an IC
US9646126B1 (en) * 2015-03-27 2017-05-09 Xilinx, Inc. Post-routing structural netlist optimization for circuit designs
US10152565B2 (en) 2015-06-03 2018-12-11 Altera Corporation Methods for performing register retiming operations into synchronization regions interposed between circuits associated with different clock domains
US9996652B2 (en) 2015-09-04 2018-06-12 Altera Corporation Incremental register retiming of an integrated circuit design
US9824177B1 (en) * 2016-03-24 2017-11-21 Altera Corporation Method and apparatus for verifying structural correctness in retimed circuits
US10162918B1 (en) 2016-04-27 2018-12-25 Altera Corporation Integrated circuit retiming with selective modeling of flip-flop secondary signals
US10417374B1 (en) * 2016-05-09 2019-09-17 Altera Corporation Method and apparatus for performing register retiming by utilizing native timing-driven constraints
US10387600B2 (en) * 2016-09-15 2019-08-20 Xilinx, Inc. Dynamic power reduction in circuit designs and circuits
US10394990B1 (en) * 2016-09-27 2019-08-27 Altera Corporation Initial condition support for partial reconfiguration
US10354038B1 (en) * 2016-11-15 2019-07-16 Intel Corporation Methods for bounding the number of delayed reset clock cycles for retimed circuits
US10181001B2 (en) * 2017-02-02 2019-01-15 Intel Corporation Methods and apparatus for automatically implementing a compensating reset for retimed circuitry
US10642951B1 (en) * 2018-03-07 2020-05-05 Xilinx, Inc. Register pull-out for sequential circuit blocks in circuit designs
US10678983B1 (en) * 2018-05-23 2020-06-09 Xilinx, Inc. Local retiming optimization for circuit designs
US10606979B1 (en) * 2018-06-06 2020-03-31 Xilinx, Inc. Verifying equivalence of design latency
CN116502578B (zh) * 2023-06-29 2024-04-16 深圳国微晶锐技术有限公司 网表化简时序模型的构建方法及静态时序分析方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5553000A (en) * 1992-11-05 1996-09-03 Nec Usa, Inc. Eliminating retiming bottlenecks to improve performance of synchronous sequential VLSI circuits
JP2601168B2 (ja) * 1993-03-30 1997-04-16 日本電気株式会社 順次回路をリタイミングする方法および再設計する方法
US5751593A (en) * 1996-04-10 1998-05-12 Motorola, Inc. Accurate delay prediction based on multi-model analysis
US6367056B1 (en) * 1998-04-23 2002-04-02 Altera Corporation Method for incremental timing analysis
US7000137B2 (en) * 2002-10-07 2006-02-14 Hewlett-Packard Development Company, L.P. System for and method of clock cycle-time analysis using mode-slicing mechanism
US7010763B2 (en) * 2003-05-12 2006-03-07 International Business Machines Corporation Method of optimizing and analyzing selected portions of a digital integrated circuit

Also Published As

Publication number Publication date
WO2004084277A2 (en) 2004-09-30
WO2004084277A3 (en) 2006-11-16
EP1623448B1 (en) 2016-12-14
EP1623448A2 (en) 2006-02-08
JP4473264B2 (ja) 2010-06-02
US7203919B2 (en) 2007-04-10
EP1623448A4 (en) 2007-04-18
US20050132316A1 (en) 2005-06-16

Similar Documents

Publication Publication Date Title
JP4473264B2 (ja) カットベース手法を用いたリタイミング回路
US10387603B2 (en) Incremental register retiming of an integrated circuit design
US7657855B1 (en) Efficient timing graph update for dynamic netlist changes
AU2016292791B2 (en) Reciprocal quantum logic (RQL) circuit simulation system
US10162918B1 (en) Integrated circuit retiming with selective modeling of flip-flop secondary signals
US8918748B1 (en) M/A for performing automatic latency optimization on system designs for implementation on programmable hardware
EP3324317B1 (en) Methods for verifying retimed circuits with delayed initialization
Hung et al. Incremental trace-buffer insertion for FPGA debug
EP3101568B1 (en) Methods for performing register retiming operations into synchronization regions interposed between circuits associated with different clock domains
Hutchings et al. Rapid post-map insertion of embedded logic analyzers for Xilinx FPGAs
US9811621B2 (en) Implementing integrated circuit designs using depopulation and repopulation operations
US8667435B1 (en) Function symmetry-based optimization for physical synthesis of programmable integrated circuits
US20170328951A1 (en) Embedded built-in self-test (bist) circuitry for digital signal processor (dsp) validation
US9552456B2 (en) Methods and apparatus for probing signals from a circuit after register retiming
US9529947B1 (en) Register retiming and verification of an integrated circuit design
US10169518B1 (en) Methods for delaying register reset for retimed circuits
Hung et al. Maximum flow algorithms for maximum observability during FPGA debug
US20180349544A1 (en) Methods for performing register retiming with hybrid initial states
EP3336727A1 (en) System and method for defining a programmable logic architecture
US10354038B1 (en) Methods for bounding the number of delayed reset clock cycles for retimed circuits
US20180082720A1 (en) Pipelined interconnect circuitry having reset values holding capabilities
JP2004246402A (ja) 論理回路最適化方法、論理回路最適化装置、及び、論理回路合成装置
Zeh Incremental design reuse with partitions
Ling et al. FPGA programmable logic block evaluation using quantified Boolean satisfiability
Ling Field-Programmable Gate Array Logic Synthesis Using Boolean Satisfiability

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090616

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090819

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090826

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091112

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091211

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100222

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100304

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130312

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4473264

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130312

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140312

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term