(57)【特許請求の範囲】
【請求項１】
データ処理システムにおいて、クロック駆動の論理回路内でタイミング・クロージャを達成するための方法であって、
ローカル・クロック・バッファのセットにおける各ローカル・クロック・バッファに対して、第１タイミング制約が適合し得るようなターゲット周波数で前記ローカル・クロック・バッファへのクロック制御信号を駆動するクロック制御信号入力をクロック制御信号入力のセットから決定し、それによって、１つの決定されたクロック制御信号入力を形成するステップと、
前記決定されたクロック制御信号入力の決定に応答して、前記決定されたクロック制御信号入力に前記ローカル・クロック・バッファを結合するステップと、
を含み、
前記決定されたクロック制御信号入力が前記ターゲット周波数で前記ローカル・クロック・バッファへの前記クロック制御信号を駆動して前記クロック駆動の論理回路内でタイミング・クロージャを達成する、方法。
【請求項２】
前記第１タイミング制約が適合し得るように前記ターゲット周波数で前記ローカル・クロック・バッファへの前記クロック制御信号を駆動するクロック制御信号入力を前記クロック制御信号入力のセットから決定し得なかったことに応答して、前記第１タイミング制約が適合し得なかった場所を表わす概要ネットリストおよび統計を生成するステップを更に含む、請求項１に記載の方法。
【請求項３】
ラッチのセットにおける各ラッチに対して、クロック信号が前記ローカル・クロック・バッファから前記ラッチにターゲット周波数で駆動されるように第２タイミング制約が適合するかどうかを決定するステップと、
前記クロック信号によって前記ラッチを前記ターゲット周波数で駆動し得なかったことに応答して、前記第２タイミング制約が適合し得るよう、前記クロック信号によって前記ラッチを前記ターゲット周波数で駆動するために前記ローカル・クロック・バッファがクローン化される必要がある回数を決定するステップと、
前記ローカル・クロック・バッファを前記決定された回数だけ自動的にクローン化し、それによってローカル・クロック・バッファのセットを形成するステップと、
を更に含む、請求項１に記載の方法。
【請求項４】
前記ラッチのセットにおける各ラッチに対して、前記第２タイミング制約が適合し得るように前記ローカル・クロック・バッファのセットにおけるどのローカル・クロック・バッファが前記クロック信号によって前記ラッチを前記ターゲット周波数で駆動するかを決定し、それによって、１つの決定されたローカル・クロック・バッファを形成するステップと、
前記決定されたローカル・クロック・バッファの決定に応答して、前記クロック駆動の論理回路においてタイミング・クロージャを達成するために前記ラッチを前記決定されたローカル・クロック・バッファに結合するステップと、
を更に含む、請求項３に記載の方法。
【請求項５】
前記第１タイミング制約および前記第２タイミング制約は、前記クロック駆動の論理回路の物理的境界内における前記ラッチのセット、前記ローカル・クロック・バッファのセット、および前記クロック制御信号入力のセットの物理的配置に依存する、請求項３に記載の方法。
【請求項６】
前記物理的境界内における前記ラッチのセットおよび前記ローカル・クロック・バッファのセットの物理的配置は、前記第１タイミング制約および前記第２タイミング制約が適合し得る限り任意である、請求項５に記載の方法。
【請求項７】
前記クロック制御信号入力のセットの物理的配置は前記クロック駆動の論理回路の物理的境界に関連したデータによって定義されるように固定される、請求項５に記載の方法。
【請求項８】
データ処理システムにおいて実行されるとき、
ローカル・クロック・バッファのセットにおける各ローカル・クロック・バッファに対して、第１タイミング制約が適合し得るようなターゲット周波数で前記ローカル・クロック・バッファへのクロック制御信号を駆動するクロック制御信号入力をクロック制御信号入力のセットから決定し、それによって、１つの決定されたクロック制御信号入力を形成し、
前記決定されたクロック制御信号入力の決定に応答して、前記決定されたクロック制御信号入力に前記ローカル・クロック・バッファを結合する
ように前記データ処理システムを動作させ、
前記決定されたクロック制御信号入力が前記ターゲット周波数で前記ローカル・クロック・バッファへの前記クロック制御信号を駆動して前記クロック駆動の論理回路内でタイミング・クロージャを達成させる、コンピュータ・プログラム。
【請求項９】
前記第１タイミング制約が適合し得るように前記ターゲット周波数で前記ローカル・クロック・バッファへの前記クロック制御信号を駆動するクロック制御信号入力を前記クロック制御信号入力のセットから決定し得なかったことに応答して、前記第１タイミング制約が適合し得なかった場所を表わす概要ネットリストおよび統計を生成するように前記データ処理システムを更に動作させる、請求項８に記載のコンピュータ・プログラム。
【請求項１０】
ラッチのセットにおける各ラッチに対して、クロック信号が前記ローカル・クロック・バッファから前記ラッチにターゲット周波数で駆動されるように第２タイミング制約が適合するかどうかを決定し、
前記クロック信号によって前記ラッチを前記ターゲット周波数で駆動し得なかったことに応答して、前記第２タイミング制約が適合し得るよう、前記クロック信号によって前記ラッチを前記ターゲット周波数で駆動するために前記ローカル・クロック・バッファがクローン化される必要がある回数を決定し、
前記ローカル・クロック・バッファを前記決定された回数だけ自動的にクローン化し、それによってローカル・クロック・バッファのセットを形成する
ように前記データ処理システムを更に動作させる、請求項８に記載のコンピュータ・プログラム。
【請求項１１】
前記ラッチのセットにおける各ラッチに対して、前記第２タイミング制約が適合し得るように前記ローカル・クロック・バッファのセットにおけるどのローカル・クロック・バッファが前記クロック信号によって前記ラッチを前記ターゲット周波数で駆動するかを決定し、それによって、１つの決定されたローカル・クロック・バッファを形成し、
前記決定されたローカル・クロック・バッファの決定に応答して、前記クロック駆動の論理回路においてタイミング・クロージャを達成するために前記ラッチを前記決定されたローカル・クロック・バッファに結合する
ように前記データ処理システムを更に動作させる、請求項１０に記載のコンピュータ・プログラム。
【請求項１２】
プロセッサと、
前記プロセッサに結合され、命令を含むメモリと、
を含み、
前記命令は、前記プロセッサによって実行されるとき、
ローカル・クロック・バッファのセットにおける各ローカル・クロック・バッファに対して、第１タイミング制約が適合し得るようなターゲット周波数で前記ローカル・クロック・バッファへのクロック制御信号を駆動するクロック制御信号入力をクロック制御信号入力のセットから決定し、それによって、１つの決定されたクロック制御信号入力を形成し、
前記決定されたクロック制御信号入力の決定に応答して、前記決定されたクロック制御信号入力に前記ローカル・クロック・バッファを結合する
ように前記プロセッサを動作させ、
前記決定されたクロック制御信号入力が前記ターゲット周波数で前記ローカル・クロック・バッファへの前記クロック制御信号を駆動して前記クロック駆動の論理回路内でタイミング・クロージャを達成させる、システム。
【請求項１３】
前記第１タイミング制約が適合し得るように前記ターゲット周波数で前記ローカル・クロック・バッファへの前記クロック制御信号を駆動するクロック制御信号入力を前記クロック制御信号入力のセットから決定し得なかったことに応答して、前記第１タイミング制約が適合し得なかった場所を表わす概要ネットリストおよび統計を生成するように前記プロセッサを更に動作させる、請求項１２に記載のシステム。
【請求項１４】
ラッチのセットにおける各ラッチに対して、クロック信号が前記ローカル・クロック・バッファから前記ラッチにターゲット周波数で駆動されるように第２タイミング制約が適合するかどうかを決定し、
前記クロック信号によって前記ラッチを前記ターゲット周波数で駆動し得なかったことに応答して、前記第２タイミング制約が適合し得るよう、前記クロック信号によって前記ラッチを前記ターゲット周波数で駆動するために前記ローカル・クロック・バッファがクローン化される必要がある回数を決定し、
前記ローカル・クロック・バッファを前記決定された回数だけ自動的にクローン化し、それによってローカル・クロック・バッファのセットを形成する
ように前記プロセッサを更に動作させる、請求項１２に記載のシステム。
【請求項１５】
前記ラッチのセットにおける各ラッチに対して、前記第２タイミング制約が適合し得るように前記ローカル・クロック・バッファのセットにおけるどのローカル・クロック・バッファが前記クロック信号によって前記ラッチを前記ターゲット周波数で駆動するかを決定し、それによって、１つの決定されたローカル・クロック・バッファを形成し、
前記決定されたローカル・クロック・バッファの決定に応答して、前記クロック駆動の論理回路においてタイミング・クロージャを達成するために前記ラッチを前記決定されたローカル・クロック・バッファに結合する
ように前記プロセッサを更に動作させる、請求項１４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、データ処理システムおよびデータ処理方法の改良に関し、特に、本発明は、クロック駆動の論理回路においてタイミング・クロージャ（timing closure）を達成するために制御ロジックのマルチソース・ネットワークを効率的に利用することに関するものである。
【背景技術】
【０００２】
半導体集積回路は、コンピュータおよび他のデジタル電子製品における電子回路の大部分を構成する。例えば、現在の集積回路は数百万個のトランジスタを含み得るし、中央処理装置（ＣＰＵ）、演算論理ユニット（ＡＬＵ）、ランダム・アクセス・メモリ（ＲＡＭ）、プログラマブル・ロジック・アレイ（ＰＬＡ）、特定用途向け集積回路（ＡＳＩＣ）、或いはデジタル信号プロセサ（ＤＳＰ）として構成され得る。これらの集積回路の複雑性および動作速度のいずれも、より小型の且つより高速の装置をもたらす集積回路製造技術の改良により急速に増大した。
【０００３】
複雑なデジタル集積回路では、クロック制御信号は、通常、前述のＣＰＵ、ＡＬＵ、ＲＡＭ、ＰＬＡ、ＡＳＩＣ、およびＤＳＰ集積回路のようなクロック駆動の多重状態論理回路を操作するために必要とされる。クロック制御信号は、集積回路の至るところで、そこに含まれたクロック駆動の論理回路に分配される。集積回路の機能によっては、多くのクロック制御信号が望ましいことがあり、或いは必要とされることがある。
【０００４】
複雑な集積回路の設計は、その設計をシリコンに委ねる前に、集積回路設計者がその設計を容易に行いそしてテストすることを可能にするコンピュータ・シミュレーションによって達成される。コンピュータにより集積回路のレイアウトを設計する場合、その要件の１つは、前述のクロック制御信号を分配することである。図１は、集積回路におけるクロック制御信号の分配を示す。図１に示されるように、集中クロック制御回路１０２が、ステージング・ラッチ１０６を介してクロック駆動の論理回路（ＣＬＣ）１０８にクロック制御信号１０４の経路を指定する。集中クロック制御回路１０２からのクロック制御信号１０４は、ステージング・ラッチ１０６にそれを供給するメイン・トランクによって経路を指定され、一方、ステージング・ラッチ１０６はそれをトリビュタリに供給する。一方、トリビュタリは、クロック制御信号１０４を必要とするクロック駆動の論理回路１０８を駆動する。クロック分配技術は、集積回路におけるクロック駆動の論理回路１０８への接続を必要とするとき、トリビュタリを有するメイン・トランクを利用してその接続をメイン・トランクから分岐させる。
【０００５】
集積回路ロジックのロード要件によっては、ローカル・クロック・バッファと一般的に呼ばれるアクティブ・デバイス・バッファ回路がクロック駆動の論理回路内のラッチを駆動するために使用される。図２は、クロック駆動の論理回路におけるクロック制御信号の分配を示す。図２に示されるように、クロック制御信号２０２はステージング・ラッチ２０４に供給され、一方、ステージング・ラッチ２０４はそれをクロック駆動の論理回路２０６に供給する。上述のように、クロック駆動の論理回路２０６内には、１つまたは複数のローカル・クロック・バッファ（ＬＣＢ）２０８が存在し得る。しかし、クロック駆動の論理回路２０６が多数のＬＣＢを含むとき、ポイント２１０によって示される各ＬＣＢへのクロック制御信号２０２を高い周波数で駆動することができる信号分配ネットワークを構築することは困難であることがある。
【０００６】
即ち、すべての電子回路の負荷は、集積回路の物理的な構造に固有の抵抗、インダクタンスおよびキャパシタンスを有する。集積回路デバイスは、抵抗およびキャパシタンスを圧倒的に多く有する。抵抗「Ｒ」およびキャパシタンス「Ｃ」は、クロック制御信号のような速い立ち上がり縁部矩形波に対してＲＣ時定数遅れを生じる。クロック制御信号の過度の遅れは、ＬＣＢによる予測不能な動作を生じさせることがある。集積回路におけるクロック駆動の論理回路の信頼性あるオペレーションは、ＬＣＢが適切に動作することに依存する。クロック制御信号が遅れる場合、クロック駆動の論理回路は適切に機能し得ず、潜在的にシステムの不安定性を引き起こすことがある。
【０００７】
現在の１つの解決方法は、クロック駆動の論理回路を減らして、各々が少数の論理装置を含む複数のクロック駆動の論理回路にするために、ロジックを再構成することに関連している。この解決方法は、本質的には最適でない方法で設計を区分けさせることがあるので、望ましくない。もう１つの解決方法は、ロジック合成ツールによって生じる伝播遅延よりも小さい伝播遅延を有する、カスタム設計の分配ネットワークを実装することである。これは、自動設計ツールによって完全に実施されることを意図されたクロック駆動の論理回路に対する手操作の介入を必要とするので、望ましくない。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、クロック駆動の論理回路においてタイミング・クロージャを達成するための方法およびシステムを提供することにある。
【課題を解決するための手段】
【０００９】
本実施例は、クロック駆動の論理回路のインターフェースにおける複数の入力にクロック制御信号を供給する。開示されるシステムは、ラッチを駆動するために必要とされるローカル・クロック・バッファの必要な数の決定を行う。一方、そのラッチは、ＬＣＢへのクロック制御信号がターゲット周波数で駆動されるために、クロック駆動の論理回路における組み合せ論理回路を駆動する。開示されるシステムは、更に多数のクロック制御信号入力の各々の論理的等価性の認識を行い、多数のクロック制御信号入力のどれをクロック駆動の論理回路における各ローカル・クロック・バッファに接続すべきかに関して最適な選択を行う。本実施例は、クロック駆動の論理回路の論理的等価性を検証するために、概要ネットリストを介してクロック駆動の論理回路のパラメータと多数のクロック制御信号入力とを読み取る。
【００１０】
本実施例は、クロック駆動の論理回路においてタイミング・クロージャの達成を提供する。本実施例は、ローカル・クロック・バッファのセットにおける各ローカル・クロック・バッファに対して、第１タイミング制約が適合し得るようなターゲット周波数でローカル・クロック・バッファへのクロック制御信号を駆動するクロック制御信号入力をクロック制御信号入力のセットから決定して、１つの決定されたクロック制御信号入力を形成する。本実施例は、決定されたクロック制御信号入力の決定に応答して、その決定されたクロック制御信号入力にローカル・クロック・バッファを結合し、その決定されたクロック制御信号入力がターゲット周波数でローカル・クロック・バッファへのクロック制御信号を駆動して、クロック駆動の論理回路内でタイミング・クロージャを達成する。
【００１１】
本実施例は、第１タイミング制約が適合し得るようにターゲット周波数でローカル・クロック・バッファへのクロック制御信号を駆動するクロック制御信号入力をクロック制御信号入力のセットから決定し得なかったことに応答して、第１タイミング制約が適合し得なかった場所を表わす概要ネットリストおよび統計を生成する。
【００１２】
本実施例は、ラッチのセットにおける各ラッチに対して、クロック信号がローカル・クロック・バッファからラッチにターゲット周波数で駆動されるように第２タイミング制約が適合するかどうかを決定する。本実施例は、クロック信号によってラッチをターゲット周波数で駆動し得なかったことに応答して、第２タイミング制約が適合し得るよう、クロック信号によってラッチをターゲット周波数で駆動するためにローカル・クロック・バッファがクローン化される必要がある回数を決定する。本実施例は、ローカル・クロック・バッファをその決定された回数だけ自動的にクローン化し、それによってローカル・クロック・バッファのセットを形成する。
【００１３】
本実施例は、ラッチのセットにおける各ラッチに対して、第２タイミング制約が適合し得るようにローカル・クロック・バッファのセットにおけるどのローカル・クロック・バッファがクロック信号によってラッチをターゲット周波数で駆動するかを決定し、それによって、１つの決定されたローカル・クロック・バッファを形成する。本実施例は、決定されたローカル・クロック・バッファの決定に応答して、クロック駆動の論理回路においてタイミング・クロージャを達成するためにラッチをその決定されたローカル・クロック・バッファに結合する。
【００１４】
本実施例では、第１タイミング制約および第２タイミング制約は、クロック駆動の論理回路の物理的境界内におけるラッチのセット、ローカル・クロック・バッファのセット、およびクロック制御信号入力のセットの物理的配置に依存し得る。
【００１５】
本実施例では、物理的境界内におけるラッチのセットおよびローカル・クロック・バッファのセットの物理的配置は、第１タイミング制約および第２タイミング制約が適合し得る限り任意であってもよい。更に、本実施例では、クロック制御信号入力のセットの物理的配置はクロック駆動の論理回路の物理的境界に関連したデータによって定義されるように固定されてもよい。
【００１６】
別の実施例では、コンピュータ可読プログラムを有するコンピュータ使用可能媒体を含むコンピュータ・プログラム製品が提供される。コンピュータ可読プログラムは、コンピューティング装置上で実行されたとき、方法に関連した実施例に関して概説したオペレーションにおける種々のものおよびそれらのオペレーションを結合したものを遂行させる。
【００１７】
更に別の実施例では、１つのシステムが提供される。そのシステムは、プロセッサに結合されたプロセッサおよびメモリを含み得る。メモリは、プロセッサによって実行される時、方法の実施例に関して概説したオペレーションのうちの種々のものおよびそれらのオペレーションを結合したものをプロセッサに遂行させる命令を含み得る。
【００１８】
本発明のこれらの並びに他の特徴および利点は、本実施例に関する以下の詳細な説明において記述されるし、それらの説明からみて当業者には明らかになるであろう。
【発明を実施するための最良の形態】
【００１９】
本実施例は、クロック駆動の論理回路においてタイミング・クロージャを達成するための制御ロジックにおけるマルチソース・ネットワークの効率的な利用方法を提供する。図３は、本実施例を実装し得るデータ処理環境の例示的な概略図として提供される。図３は、単に例示的なものであり、本発明の実施態様或いは実施例を実装し得る環境に関して何らかの限定を主張または示唆することを意図するものでないことは明らかである。本発明の主旨および範囲から逸脱することなく、図示された環境に対する多くの修正を施すことが可能である。
【００２０】
次に図３を参照すると、本実施例を実装し得るデータ処理システムのブロック図が示される。データ処理システム３００は、本実施例に関するプロセスを具現化するコンピュータ使用可能コードまたは命令を設けることが可能なコンピュータの一例である。
【００２１】
図示の例では、データ処理システム３００は、ノース・ブリッジ兼メモリ・コントローラ・ハブ（ＭＣＨ）３０２、並びにサウス・ブリッジ兼入出力（Ｉ／Ｏ）コントローラ・ハブ（ＩＣＨ）３０４を含むハブ・アーキテクチャを使用する。処理ユニット３０６、メイン・メモリ３０８、およびグラフィックス・プロセッサ３１０は、ノース・ブリッジ兼メモリ・コントローラ・ハブ３０２に接続される。処理ユニット３０６は、１つまたは複数のプロセッサを含んでおり、１つまたは複数の異種のプロセッサ・システムを使用して具現化されてもよい。グラフィックス・プロセッサ３１０は、例えば、アクセラレイテッド・グラフィック・ポート（ＡＧＰ）を介してＭＣＨ３０２に接続されてもよい。
【００２２】
図示の例では、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ３１２がサウス・ブリッジ兼Ｉ／Ｏコントローラ・ハブ３０４に接続され、オーディオ・アダプタ３１６、キーボードおよびマウス・アダプタ３２０、モデム３２２、読取り専用メモリ（ＲＯＭ）３２４、ユニバーサル・シリアル・バス（ＵＳＢ）ポートおよび他の通信ポート３３２、並びにＰＣＩ／ＰＣＩｅ装置３３４がバス３３８を介してサウス・ブリッジ兼Ｉ／Ｏコントローラ・ハブ３０４に接続され、ハードディスク・ドライブ（ＨＤＤ）３２６およびＣＤ−ＲＯＭドライブ３３０がバス３４０を介してサウス・ブリッジ兼Ｉ／Ｏコントローラ・ハブ３０４に接続される。ＰＣＩ／ＰＣＩｅ装置は、例えば、イーサネット（登録商標）・アダプタ、アドイン・カード、およびノート型コンピュータのためのＰＣカードを含み得る。ＰＣＩはカード・バス・コントローラを使用し、一方、ＰＣＩｅはそれを使用しない。ＲＯＭ３２４は、例えば、フラッシュ・バイナリ入出力システム（ＢＩＯＳ）であってもよい。ハードディスク・ドライブ３２６およびＣＤ−ＲＯＭドライブ３３０は、例えば、統合ドライブ・エレクトロニクス（ＩＤＥ）またはシリアル・アドバンスト・テクノロジ・アタッチメント（ＳＡＴＡ）インターフェースを使用し得る。スーパＩ／Ｏ（ＳＩＯ）装置３３６がサウス・ブリッジ兼Ｉ／Ｏコントローラ・ハブ３０４に接続されてもよい。
【００２３】
オペレーティング・システムが処理ユニット３０６において作動し、図３におけるデータ処理システム３００内の種々のコンポーネントを調整し、そのコンポーネントの制御を行う。オペレーティング・システムは、Microsoft（商標）Windows（登録商標）ＸＰ（MicrosoftおよびWindowsは、米国におけるマイクロソフト社の商標である）のような市販のオペレーティング・システムであってもよい。Ｊａｖａプログラミング・システムのようなオブジェクト指向プログラミング・システムは、オペレーティング・システムと関連して作動し得るし、データ処理システム３００上で実行されるＪａｖａ（登録商標）プログラム或いはアプリケーションからオペレーティング・システムへのコールを行い得る。ＪａｖａおよびすべてのＪａｖａベースの商標は、米国におけるSunMicrosystems社の商標である。
【００２４】
オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーション或いはプログラムのための命令は、ハードディスク・ドライブ３２６のような記憶装置に配置され、処理ユニット３０６による実行のためにメイン・メモリ３０８にロードされる。本実施例のプロセスは、例えば、メイン・メモリ３０８、読取り専用メモリ３２４のようなメモリに、或いは１つまたは複数の周辺装置に配置することが可能なコンピュータ実装の命令を使用して、処理ユニット３０６により遂行することができる。
【００２５】
図３におけるハードウェアは実施態様に依存して変更することが可能である。フラッシュ・メモリ、同等の不揮発性のメモリ、または光ディスク・ドライブ等のような他の内部ハードウェア或いは周辺装置が、図３に示されたハードウェアに加えて、或いはそのハードウェアの代わりに使用されてもよい。更に、本実施例のプロセスはマルチプロセッサ・データ処理システムに適用されてもよい。
【００２６】
実施例によっては、バス・システムが、システム・バス、Ｉ／Ｏバス、およびＰＣＩバスのような１つまたは複数のバスで構成されることも可能である。もちろん、バス・システムは、任意のタイプの通信ファブリックまたはアーキテクチャを使用して具現化することが可能であり、それらのブリッジまたはアーキテクチャに接続された種々のコンポーネント或いはデバイスの間のデータ転送を行う。通信ユニットは、モデムまたはネットワーク・アダプタのような、データを送受信するために使用される１つまたは複数のデバイスを含んでもよい。メモリは、例えば、メイン・メモリ３０８、或いはノース・ブリッジ兼メモリ・コントローラ・ハブ３０２において見られるようなキャッシュ、であってもよい。処理ユニットは１つまたは複数のプロセッサまたはＣＰＵを含み得る。図３に示された例および上記の例は、アーキテクチャ上の限定を意味するものではない。例えば、データ処理システム３００は、タブレット・コンピュータ、ラップトップ・コンピュータ、電話装置、パーソナル・デジタル・アシスタント（ＰＤＡ）等であってもよい。
【００２７】
本実施例は、クロック駆動の論理回路のインターフェースにおける多数の入力にクロック制御信号を供給する。このクロック駆動の論理回路の設計レベルでは、これらのクロック制御信号入力の各々は、種々の、しかし論理的に同等のラッチされたクロック制御信号に接続されることが可能である。上記のシステムは、ラッチを駆動するために必要なローカル・クロック・バッファ（ＬＣＢ）の必要な数の決定を行う。一方、それらのラッチは、ＬＢＣへのクロック制御信号がターゲット周波数で駆動されるために、クロック駆動の論理回路の組み合わせ論理回路を駆動する。上記のシステムは、更に、多数のクロック制御信号入力の各々の論理的等価性の認識を行い、クロック駆動の論理回路における各ローカル・クロック・バッファに多数のクロック制御信号入力のどれを接続するべきかに関して最適な選択を行う。本実施例は、概要ネットリストを介してクロック駆動の論理回路のパラメータおよび多数のクロック制御信号入力を読み取り、クロック駆動の論理回路の論理的等価性を検証する。
【００２８】
図４は、実施例に従ってタイミング閉鎖を達成するためにクロック駆動の論理回路の例示的な論理的合成および論理的透過性をチェックするためのブロック図を示す。ロジック合成ツール４０２は、クロック駆動の論理回路の入力として物理的境界データ４０６、タイミング制約データ４０８、およびロジック記述データ４１０を受ける比較モジュール４０４を含む。クロック駆動の論理回路は、集積回路の一部分または集積回路全体を包含し得る。物理的境界データ４０６は、次元、クロック制御信号入力ロケーション等のようなクロック駆動の論理回路の物理的境界を提供する。タイミング制約データ４０８は、最大のシステム・クロック周波数、クロック駆動の論理回路に着信する信号の予測到着時間、発信する信号の必要な発信時間等を含み得る。本実施例は、１つだけのタイミング制約または複数のタイミング制約を使用し得る。ロジック記述データ４１０は、超高速集積回路（ＶＨＳＩＣ）ハードウェア記述言語（ＶＨＤＬ）、Verilog（商標）等のような、クロック駆動の論理回路のロジックを作動させる方法を記述するハードウェア記述言語で書かれる。ロジック記述データ４１０は、例えば、ユーザが決定したラッチの数、１つのＬＣＢ、クロック制御信号入力の１つからＬＣＢへの接続、クロック駆動の論理回路の機能を定義する組み合わせ論理方程式等を含む。
【００２９】
比較モジュール４０４は、ロジック合成を継続する前に、３つの入力によって提供されるデータが一致することを保証するために、入力に含まれたデータを比較することによって比較チェックを行う。即ち、比較モジュール４０４は、１つの入力におけるデータが、１つまたは複数の入力に含まれた同様のデータと一致するということを確認する。一旦比較モジュール４０４が比較チェックを終了すると、デバイス配置モジュール４１２が、物理的境界データ４０６によって定義されたクロック駆動の論理回路の物理的境界内における、ロジック記述データ４１０において定義された組み合わせ論理回路、ラッチ、および、ＬＣＢの初期配置を行う。デバイスの初期配置は、ロジック合成ツール４０２がクロック駆動の論理回路のタイミング制約に適合するために、多くの反復を介してすべてのデバイスの配置を決定するので、デバイスの最終的な位置であることもあり、そうでないこともある。
【００３０】
一旦デバイス配置モジュール４１２がロジック記述データ４１０からのデバイスの配置を完了すると、ロジック合成ツール４０２は、クロック制御信号を含むすべての必要な信号に対するターゲット周波数が得られたかどうか決定するためにタイミング・モジュール４１４を起動する。ラッチがターゲット周波数でタイミング信号を受け取っていないことをタイミング・モジュール４１４が決定する場合、クローンＬＣＢモジュール４１６が、ターゲット周波数でラッチを駆動するために必要とされるＬＣＢモジュールをクローン化する。従って、ロジック合成ツール４０２のモジュールは、ラッチを駆動するために必要とされるＬＣＢの必要な数を決定する。一方、ラッチは、ＬＢＣへのクロック制御信号がターゲット周波数で駆動されるために、クロック駆動の論理回路の組み合わせ論理回路を駆動する。一旦クローンＬＣＢモジュール４１６がＬＣＢからラッチまでのタイミング要件を満たすために受容可能な数のＬＣＢをクローン化し、デバイス配置モジュール４１２が、物理的境界データ４０６によって定義されたクロック駆動の論理回路の物理的境界内にそのクローン化されたＬＣＢを配置すると、ＬＣＢ接続モジュール４１８へのクロック制御信号入力は、ＬＢＣへのクロック制御信号がターゲット周波数で駆動されるためにはどのクロック制御信号入力をどのＬＣＢに接続するべきかを決定する。
【００３１】
ロジック合成ツール４０２は、ラッチを駆動する各ＬＣＢが所望のターゲット周波数でクロック制御信号を受け取るために、ＬＣＢ接続モジュール４１８へのクロック制御信号入力を使用して、種々のＬＣＢにクロック制御信号入力を接続するという反復を数多く行い得る。ロジック合成ツール４０２によって行なわれた反復の数は、例えば、所望の機能が得られるまでの、ユーザによって定義されるような、或いはラン・タイム等によって限定されるような、所定の反復数となり得る。所定の反復数が望ましい場合、ロジック合成ツール４０２は反復数を表す計数を保持するカウンタを含み得る。所定量の時間の間ロジック合成が作動することを許される場合、ロジック合成ツール４０２は、ロジック合成が作動した回数を保持するタイミング装置を含み得る。従って、ロジック合成ツール４０２のモジュールは、多数のクロック制御信号入力の各々の論理的等価性を認識し、多数のクロック制御信号入力のどれをクロック駆動の論理回路における各ローカル・クロック・バッファに接続するべきかの最適な選択を行う。
【００３２】
一旦ロジック合成ツール４０２が、所望のターゲット周波数が得られるようなデバイスの最終的配置を決定すると、或いは一旦ロジック合成ツールが、所望の機能が得られるまで、事前定義された条件に基づいてできるだけ多くの反復を実行すると、概要ネットリスト・ジェネレータ４２０が、クロック駆動の論理回路の物理的境界内にあるデバイス、それらの配置、およびそれらの接続に関する詳細な記述を提供する概要ネットリスト４２６を生成する。更に、統計ジェネレータ４２２が、例えば、行なわれた反復の数、クローン化されたＬＣＢの数、デバイスが置換された回数、接続が変更された回数等を含み得る統計４２４を生成する。ロジック合成ツール４０２はできるだけ多くの反復のために作動したが、それでもなおデバイスの最終的配置を決定することができなかった場合、統計ジェネレータ４２２は、接続されてないデバイス、回数調整（timing）が行われ得なかったデバイス等のようなエラーを含む統計４２４を生成し得る。
【００３３】
概要ネットリスト・ジェネレータ４２０によって生成された概要ネットリスト４２６は、その後、ロジック等価性チェック・ツール４２８によって使用される。ロジック等価性チェック・ツール４２８内のクロック入力グループ化モジュール４３０がクロック駆動の論理回路の概要ネットリスト４２６を使用して、グループ化キーワードを備えたクロック駆動の論理回路の等価的なクロック制御信号入力のセットをマークする。そのグループ化キーワードを使用して、クロック入力グループ化モジュール４３０は、クロック制御信号入力グループ情報を保存するインターフェース記述ファイル４３２を生成する。
【００３４】
ロジック等価性チェック・ツール４２８は、クロック入力マージ・モジュール４３４および等価性チェック・モジュール４３６も含む。クロック入力マージ・モジュール４３４は、インターフェース記述ファイル４３２と共にクロック駆動の論理回路の概要ネットリスト４２６を使用して、等価性チェックのためにクロック駆動の論理回路の等価的なクロック制御信号入力を単一のクロック制御信号入力にマージする。しかる後、等価性チェック・モジュール４３６は、マージされたクロック制御信号入力およびクロック駆動の論理回路のロジック記述データ４１０を用いて概要ネットリスト４２６の等価性チェックを行う。等価性チェックは、ロジック記述データ４１０からクロック駆動の論理回路の論理的な記述を抽出すること、概要ネットリスト４２６の入力ポートおよび出力ポートを論理的な記述に対応させること、および、両モデルの出力が、同じ入力によって駆動されたときには同じであるということを保証するために種々のアルゴリズムを使用すること、を含み得る。一旦概要ネットリスト４２６およびロジック記述データ４１０の等価性チェックが完了すると、等価性チェック・モジュール４３６は等価性レポート４３８を生成する。等価性レポート４３８は、概要ネットリスト４２６とロジック記述データ４１０との間のいずれの相違点も表す。従って、ロジック等価性チェック・ツール４２８のモジュールは、概要ネットリストを介してクロック駆動の論理回路および多数のクロック制御信号入力のパラメータを読み取り、クロック駆動の論理回路の論理的等価性を検証する。
【００３５】
図５および６は、本実施例に従ってロジック合成ツールにより行なわれる例示的な関連を示す。図５は、図４のデバイス配置モジュール４１２のようなデバイス配置モジュールによってクロック駆動の論理回路に関連したデバイスの例示的な二次元の初期配置５０２を示す。なお、そのデバイス配置モジュール４１２は、図４のロジック記述データ４１０および物理的境界データ４０６のようなロジック記述および物理的境界によって記述される。図４のロジック合成ツール４０２のようなロジック合成ツールは、クロック駆動の論理回路の境界５０４を作成するためにその提供された物理的境界を使用する。ロジック合成ツールは、図５にローカル・クロック・バッファ（ＬＣＢ）５０６も配置している。図示されてないが、ロジック合成ツールは、当初は、更にクロック駆動の論理回路のすべての組み合わせロジックおよびラッチも配置している。クロック制御信号入力５０８の位置は物理的境界を通して与えられるであろう。可視的にするために、クロック制御信号入力５０８は、ステージング・ラッチ５１２を介して集中クロック制御回路からのクロック制御信号５１０に接続されるように示される。
【００３６】
図６は、図４の概要ネットリスト４２６のような概要ネットリストによって記述されるクロック駆動の論理回路に関連したデバイスの例示的な二次元の最終的配置５１４を示す。その最終的配置５１４に到達するために、ロジック合成ツールは、ターゲット周波数が得られたかどうかを決定するためにタイミング・モジュールを開始させる。図６は、ターゲット周波数でクロック駆動の論理回路のラッチを駆動するための更なる７個のＬＣＢ５０６の要件を示す。図４のクローンＬＣＢモジュール４１６のようなクローンＬＣＢモジュールがＬＣＢ５０６をクローン化する。一旦、クローン化されたＬＣＢの数が決定されると、その後、図４のＬＣＢ接続モジュール４１８へのクロック制御信号入力のようなＬＣＢ接続モジュールへのクロック制御信号入力は、クロック駆動の論理回路のＬＣＢへのクロック制御信号が接続線５１６によって表されたターゲット周波数で駆動されるよう、クロック制御信号入力５０８のどれをＬＣＢ５０６に接続するべきかを決定する。再び、ロジック合成ツールは、デバイス配置モジュールを使用してデバイスを配置すること、クローンＬＣＢモジュールを使用してＬＣＢ５０６をクローン化すること、および、クロック制御信号によって正しく制御されるＬＣＢによって各ラッチが適切に制御されるためにＬＣＢ接続モジュールへのクロック制御信号入力を使用してクロック制御信号入力５０８をＬＣＢ５０６に接続することを数多く反復し得る。
【００３７】
従って、図５および図６は、ラッチを駆動する必要があるＬＣＢの必要な数の決定を示す。なお、そのラッチは、ＬＣＢへのクロック制御信号がターゲット周波数で駆動されるためにクロック駆動の論理回路の組み合わせ論理回路を駆動する。更に、図５および図６は、多数のクロック制御信号入力の各々の論理的等価性の認識を示し、多数のクロック制御信号入力のどれをクロック駆動の論理回路における各ローカル・クロック・バッファに接続するべきかに関する最適な選択を行う。
【００３８】
図７は、実施例に従ってタイミング・クロージャを達成するためにロジック合成ツールによって行なわれる例示的なオペレーションを概説するフローチャートを示す。上記オペレーションは、図４のロジック合成ツール４０２のようなロジック合成ツールによって行なわれる。オペレーションが開始すると、図４の比較モジュール４０４のような比較モジュールが、クロック駆動の論理回路の物理的境界データ、タイミング制約データ、およびロジック記述データを入力として受け取る（ステップ６０２）。比較モジュールは、ロジック合成を継続する前に、３つの入力によって提供されるデータが一致するということを保証するために入力の比較チェックを行う（ステップ６０４）。一旦比較モジュールが比較チェックを完了すると、図４のデバイス配置モジュール４１２のようなデバイス配置モジュールは、組み合わせ論理回路、ラッチ、および、クロック駆動の論理回路の物理的境界内のロジック記述データにおいて定義されたＬＣＢの初期配置を行う（ステップ６０６）。
【００３９】
一旦デバイスが初期配置されると、図４のクローンＬＣＢモジュール４１６のようなクローンＬＣＢモジュールが、ターゲット周波数でラッチを駆動することを求められるときにＬＣＢをクローンし、デバイス配置モジュールが、クロック駆動の論理回路の物理的境界内にデバイスを配置する（ステップ６０８）。一旦多数のＬＣＢがクローン化され且つ配置されると、図４のタイミング・モジュール４１４のようなタイミング・モジュールが、クロック駆動の論理回路のＬＣＢへのクロック制御信号がターゲット周波数で駆動され得るかどうかを決定する（ステップ６１０）。ステップ６１０において、ＬＣＢがターゲット周波数でクロック信号を受け取っていないということをタイミング・モジュールが決定する場合、図４のＬＣＢ接続モジュール４１８へのクロック制御信号入力のようなＬＣＢ接続モジュールへのクロック制御信号入力が、ターゲット周波数でラッチを駆動するＬＣＢへのクロック制御信号入力の接続を決定する（ステップ６１２）。ロジック合成ツールは、各ＬＣＢが所望のターゲット周波数でクロック制御信号を受け取るために、ＬＣＢにクロック制御信号入力を接続することを何回も反復し得る。
【００４０】
次に、タイミング・モジュールは、クロック駆動の論理回路のためのタイミング制約が適合したかどうかを決定する（ステップ６１４）。ステップ６１４において、すべてのタイミング制約が適合した場合、図４の概要ネットリスト・ジェネレータ４２０のような概要ネットリスト・ジェネレータが、クロック駆動の論理回路の物理的境界内にあるデバイス、それらの配置、および、それらの接続、に関する詳細な記述を提供する概要のネットリストを生成し、図４の統計ジェネレータ４２２のような統計ジェネレータが、例えば、クローン化されたＬＣＢの数、デバイスが置換された回数、接続が変更された回数等を含み得る統計を生成し（ステップ６１６）しかる後、オペレーションが終了する。ステップ６１０に戻ると、ターゲット周波数が得られたことをタイミング・モジュールが決定する場合、オペレーションはステップ６１６に継続し、しかる後、終了する。
【００４１】
ステップ６１４においてタイミング制約が適合しなかった場合、ロジック合成ツールは、所定数の反復が行なわれたかどうかを決定する（ステップ６１８）。ステップ６１８において所定数の反復行われていない場合、ロジック合成ツール内のカウンタがインクリメントされ（ステップ６２０）、オペレーションはステップ６１０に戻る。例示のオペレーションは、多数の反復に基づいてロジック合成を行うという限定を示すが、この実施例は、所望の機能が達成されるまで、ラン・タイム等によって限定されるようなロジック合成を限定する別の手段を認める。ステップ６１８において所定数の反復が行なわれた場合、概要ネットリスト・ジェネレータは、クロック駆動の論理回路の物理的境界内にあるデバイス、それらの配置、および、それらの接続に関する詳細な記述、および、接続されてないデバイス、タイミングが行われ得ないデバイス等のようなエラーを含む統計を提供する概要ネットリストを生成し（ステップ６２２）、しかる後、オペレーションが終了する。
【００４２】
従って、図６において行なわれるオペレーションは、ラッチを駆動するために必要とされるＬＣＢの必要な数を決定する。一方、そのＬＣＢは、ＬＣＢへのクロック制御信号がターゲット周波数で駆動され、多数のクロック制御信号入力の各々の論理的等価性を認識して多数のクロック制御信号入力のどれをクロック駆動の論理回路における各ローカル・クロック・バッファに接続するべきかに関する最適の選択を行うために、クロック駆動の論理回路の組み合わせ論理回路を駆動する。
【００４３】
図８は、実施例に従ってロジック等価性チェック・ツールにより行われる例示的なオペレーションを概説するフローチャートを示す。上記オペレーションは、図４のロジック等価性チェック・ツール４２８のようなロジック等価性チェック・ツールによって行われる。オペレーションが開始すると、ロジック等価性ツールはクロック駆動の論理回路の概要ネットリストおよびロジック記述を受け取る（ステップ７０２）。図４のクロック入力グループ化モジュール４３０のようなクロック入力グループ化モジュールが、ロジック合成ツールによって生成された概要ネットリストを使用してグループ化キーワードによりクロック駆動の論理回路の等価なクロック制御信号入力のセットをマークする（ステップ７０４）。グループ化キーワードを使用して、クロック入力グループ化モジュールは、等価のクロック制御信号入力グループ情報を保存するインターフェース記述ファイルを生成する（ステップ７０６）。
【００４４】
図４のクロック入力マージ・モジュール４３４のようなクロック・グループ化モジュールが、等価性チェックのために、インターフェース記述ファイルと共にクロック駆動の論理回路の概要ネットリストを使用して、クロック駆動の論理回路の等価なクロック制御信号入力を単一のクロック制御信号入力にマージする（ステップ７０８）。図４の等価性チェック・モジュール４３６のような等価性チェック・モジュールが、そのマージされたクロック制御信号入力およびクロック駆動の論理回路のロジック記述を用いて概要ネットリストの等価性チェックを行う（ステップ７１０）。一旦等価性チェックが完了すると、等価性チェック・モジュールは、その後オペレーションが終了するとき、概要ネットリストとクロック駆動の論理回路のロジック記述との間の如何なる相違点も表す等価性レポートを生成する（ステップ７１２）。従って、図８において行われたオペレーションは、概要ネットリストを介してクロック駆動の論理回路および多数のクロック制御信号入力のパラメータを読み取り、クロック駆動の論理回路の論理的等価性を検証した。
【００４５】
従って、本実施例は、ラッチを駆動するために必要とされるローカル・クロック・バッファ（ＬＣＢ）の必要な数の決定を行う。一方、そのラッチは、ＬＣＢへのクロック制御信号がターゲット周波数で駆動されるために、クロック駆動の論理回路の組み合わせ論理回路を駆動する。本実施例は、多数のクロック制御信号の各々の論理的等価性を認識し、多数のクロック制御信号入力のどれをクロック駆動の論理回路における各ローカル・クロック・バッファに接続するべきかに関する最適の選択を行う。本実施例は、概要ネットリストを介してクロック駆動の論理回路パラメータおよび多数のクロック制御信号入力を読み取り、クロック駆動の論理回路の論理的等価性を検証する。
【００４６】
本実施例が、全体的にハードウェアの実施例、全体的にソフトウェアの実施例、或いはハードウェア要素およびソフトウェア要素の両方を含む実施例の形式を取り得るということは明らかであろう。１つの実施例では、その実施例の機構が、ファームウェア、常駐のソフトウェア、マイクロコード等を含むがそれに制限されないソフトウェアで具現化される。
【００４７】
更に、本実施例は、コンピュータ或いは任意の命令実行システムによって、またはそれに関連して使用するためのプログラム・コードを提供するコンピュータ使用可能媒体或いはコンピュータ可読媒体からアクセスし得るコンピュータ・プログラム製品の形式を取り得る。説明の便宜上、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、或いはデバイスによって、またはそれに関連して使用するためのプログラムを収容し、格納し、通信し、伝播し、または搬送することができる任意の装置であってもよい。
【００４８】
媒体は、電子的、磁気的、光学的、電磁気的、赤外線、或いは半導体システム（または装置またはデバイス）或いは伝播媒体であってもよい。コンピュータ可読媒体の例は、半導体メモリまたはソリッド・ステート・メモリ、磁気テープ、取外し可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、固定磁気ディスク、および光ディスクを含む。光ディスクの現在の例は、コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、コンパクト・ディスク読取り／書込み（ＣＤ−Ｒ／Ｗ）、およびＤＶＤを含む。
【００４９】
プログラム・コードを格納および／または実行するに適したデータ処理システムは、システム・バスを介してメモリ素子に直接にまたは間接的に接続された少なくとも１つのプロセッサを含むであろう。メモリ素子は、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量記憶装置、および、コードが実行中に大容量記憶装置から検索されなければならない回数を減らすために少なくとも幾つかのプログラム・コードの一時的記憶装置を提供するキャッシュ・メモリを含み得る。
【００５０】
入出力装置、即ちＩ／Ｏ装置（キーボード、ディスプレイ、ポインティング・デバイス等を含むが、それに限定されない）を、システムに直接に或いはＩ／Ｏコントローラの介在を通してシステムに接続することも可能である。データ処理システムが専用ネットワーク或いは公衆ネットワークの介在を介して他のデータ処理システム或いは遠隔のプリンタまたは記憶装置に接続されることを可能にするために、ネットワーク・アダプタをシステムに接続することも可能である。モデム、ケーブル・モデム、およびイーサネット（登録商標）・カードは、わずかな現在利用可能なタイプのネットワーク・アダプタである。
【００５１】
本発明の説明は、図解および記述を目的として示され、網羅的であることまたは開示された形式の発明に制限されることを意図するものではない。多くの修正および変更も当業者には明らかであろう。実施例は、発明の原理および実用的な応用を最もよく説明するために、および意図する特定の用途に適するように種々の修正を伴う種々の実施例に関連して当業者が本発明を理解することを可能にするために、選択および記述された。
【図面の簡単な説明】
【００５２】
【図１】集積回路におけるクロック制御信号の分配を示す概略図である。
【図２】クロック駆動の論理回路におけるクロック制御信号の分配を示す概略図である。
【図３】本実施例の諸態様を具現化し得る例示的なデータ処理システムのブロック図である。
【図４】本実施例に従ってタイミング・クロージャを達成するためのクロック駆動の論理回路の例示的な論理的合成および論理的等価性チェックを示すブロック図である。
【図５】本実施例に従ってロジック合成ツールにより行なわれる例示的接続の概略図である。
【図６】本実施例に従ってロジック合成ツールにより行なわれるもう１つの例示的接続の概略図である。
【図７】本実施例に従ってタイミング・クロージャを達成するためにロジック合成ツールによって行なわれる例示的オペレーションを概説するフローチャートである。
【図８】本実施例に従ってタイミング・クロージャを確認するためにロジック等価性チェック・ツールにより行なわれる例示的オペレーションを概説するフローチャートである。
【図１】
0005063511.tif 000002
【図２】
0005063511.tif 000003
【図３】
0005063511.tif 000004
【図４】
0005063511.tif 000005
【図５】
0005063511.tif 000006
【図６】
0005063511.tif 000007
【図７】
0005063511.tif 000008
【図８】
0005063511.tif 000009