(57)【要約】標的デバイス上でシステムを設計するための方法を開示する。システムは、システムの高水準記述をゲート、レジスタ、およびリセット回路に変換することによって、合成される。分析が、冗長リセット回路を同定および解除するために行われる。システムは、冗長リセット回路が解除された後、最適化される。他の実施形態も開示される。本発明のある側面によると、分析は、システム内のリセット信号の同定を含む。共通リセット信号を有するレジスタセットが同定される。レジスタセット内の各レジスタに対して、リセット条件が適用され、システムの冗長部分が同定され、コスト値が割り当てられる。
2013526738.tif 000002
【特許請求の範囲】
【請求項１】
標的デバイス上でシステムを設計するための方法であって、
該方法は、
共通リセット信号によって該システム内のレジスタセットを同定することと、
該レジスタセット内の各レジスタに対して、該レジスタにリセット条件を適用することによって該システムの対応する冗長部分を同定することと、
同定された該システムの冗長部分に基づいて、各レジスタに対するコストを決定することと、
既に解除されたリセットに対応しない該レジスタセット内の各レジスタに対して、最高から最低までのコスト順に、該レジスタに対して同定された対応する冗長部分に連結された該リセット信号を解除することと
を含む、方法。
【請求項２】
前記リセット信号は、非同期リセット信号である、請求項１に記載の方法。
【請求項３】
前記リセット信号は、同期リセット信号である、請求項１に記載の方法。
【請求項４】
前記レジスタセットを同定することは、少なくとも所定の数のレジスタを同定することを含む、請求項１に記載の方法。
【請求項５】
前記所定の数は、およそ１０万の大きさである、請求項４に記載の方法。
【請求項６】
前記同定されたシステムの冗長部分に基づいて、各レジスタに対するコストを決定することは、冗長となる該システムの一部を考慮することを含む、請求項１に記載の方法。
【請求項７】
前記同定されたシステムの冗長部分に基づいて、各レジスタに対するコストを決定することは、冗長となる論理ゲート、レジスタ、および配線の数を考慮することを含む、請求項１に記載の方法。
【請求項８】
前記同定されたシステムの冗長部分に基づいて、各レジスタに対するコストを決定することは、冗長となる回路の深度を考慮することを含む、請求項１に記載の方法。
【請求項９】
同期リセット信号を同定することをさらに含む、請求項３に記載の方法。
【請求項１０】
同期リセット信号を同定することは、
第１の閾値よりも大きい論理出力を有する信号を同定することと、
１の値を該信号に割り当てる場合に、一定である入力を有する第１の数のレジスタを同定することと、
０の値を該信号に割り当てる場合に、一定である入力を有する第２の数のレジスタを同定することと、
該第１の数または第２の数のいずれかが、第２の閾値より大きいときに、該信号を同期リセット信号として指定することと
を含む、請求項９に記載の方法。
【請求項１１】
前記リセット信号を解除することは、レジスタから、単一の論理出力ノードを通して、同期リセット信号まで逆行してトレースすることと、該リセット信号を反対の値に設定することとを含む、請求項３に記載の方法。
【請求項１２】
前記リセット信号を解除後、前記システムにおいて最適化を行うことをさらに含む、請求項１に記載の方法。
【請求項１３】
前記システムを前記標的デバイス上に設置することと、
該システムを該標的デバイス上に経路設定することと
をさらに含む、請求項１２に記載の方法。
【請求項１４】
命令のシーケンスが記憶されているコンピュータ可読媒体であって、該命令のシーケンスは、プロセッサによって実行されると、該プロセッサが、
システムの高水準記述をゲート、レジスタ、およびリセット回路に変換することによって、システムを合成することと、
冗長リセット回路を同定および解除するための分析を行うこと、
該冗長リセット回路が解除された後に、該システムを最適化すること
を実行するようにさせる、コンピュータ可読媒体。
【請求項１５】
冗長リセット回路を同定および解除するための分析を行うことは、同期リセット信号前に、非同期リセット信号と関連付けられた冗長リセット回路を同定および解除することを含む、請求項１４に記載のコンピュータ可読媒体。
【請求項１６】
冗長リセット回路を同定および解除するための分析を行うことは、
共通リセット信号によって前記システム内のレジスタセットを同定することと、
該レジスタセット内の各レジスタに対して、該レジスタにリセット条件を適用することに基づいて、該システムの対応する冗長部分を同定することと、
同定された該システムの冗長部分に基づいて、各レジスタに対するコストを決定することと、
解除されたリセットに対応しない該レジスタセット内の各レジスタに対して、最高から最低までのコスト順に、該レジスタに対して同定された対応する冗長部分に連結されたリセット信号を解除することと
を含む、請求項１４に記載のコンピュータ可読媒体。
【請求項１７】
前記レジスタセットを同定することは、少なくとも、所定の数のレジスタを同定することを含む、請求項１６に記載のコンピュータ可読媒体。
【請求項１８】
同定された前記システムの冗長部分に基づいて、各レジスタに対するコストを決定することは、冗長となる該システムの一部を考慮することを含む、請求項１６に記載のコンピュータ可読媒体。
【請求項１９】
同定された前記システムの冗長部分に基づいて、各レジスタに対するコストを決定することは、冗長となる回路の深度を考慮することを含む、請求項１６に記載のコンピュータ可読媒体。
【請求項２０】
同期リセット信号を同定することをさらに含む、請求項１６に記載のコンピュータ可読媒体。
【請求項２１】
同期リセット信号を同定することは、
第１の閾値よりも大きい論理出力を有する信号を同定することと、
１の値を該信号に割り当てる場合に、一定である入力を有する第１の数のレジスタを同定することと、
０の値を該信号に割り当てる場合に、一定である入力を有する第２の数のレジスタを同定することと、
該第１の数または第２の数のいずれかが、第２の閾値より大きいときに、該信号を同期リセット信号として指定することと
を含む、請求項２０に記載のコンピュータ可読媒体。
【請求項２２】
前記システムを前記標的デバイス上に設置することと、
該システムを該標的デバイス上に経路設定することと
をさらに含む、請求項１４に記載のコンピュータ可読媒体。
【請求項２３】
システムデザイナであって、
該システムデザイナは、
リセット条件がシステム内のレジスタに適用されるときに、該システム内の冗長回路を同定するための冗長部分同定ユニットと、
該システム内のレジスタに対するコスト値をその対応する冗長回路に基づいて算出するためのコスト算出ユニットと、
対応するレジスタに割り当てられたコスト値に基づいて、該システム内の冗長回路に対するリセットを解除するためのリセット解除ユニットと
を含む、システムデザイナ。
【請求項２４】
前記コスト値は、冗長となる前記システムの一部に基づいている、請求項２３に記載の装置。
【請求項２５】
前記コスト値は、冗長となる論理ゲート、レジスタ、および配線の数に基づいている、請求項２３に記載の装置。
【請求項２６】
前記コスト値は、冗長となる回路の深度に基づいている、請求項２３に記載の装置。
【請求項２７】
同期リセット信号を同定するためのリセット同定ユニットをさらに含む、請求項２３に記載の装置。
【請求項２８】
前記冗長部分同定ユニット、コスト算出ユニット、およびリセット解除ユニットは、リセットが解除された後に、前記システム上で最適化を行う合成ユニット内に常駐する、請求項２３に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
（優先権）
本願は、先に出願された米国実用特許出願第１２／８００，２２７号（２０１０年５月１１日出願）の優先権を主張し、この出願は、本明細書に参照によって援用される。
【０００２】
（分野）
本発明の実施形態は、標的デバイス上でシステムを設計するためのツールに関する。より具体的には、本発明の実施形態は、合成中の非同期および同期リセット解除のための方法および装置に関する。
【背景技術】
【０００３】
大型システム用の電子設計は、何百万ものゲートおよびメガビットの組み込みメモリを含み得る。標的デバイス上の電子設計を管理および最適化する際に必要とされるタスクのうち、利用可能なリソースを利用した、合成、配置、および経路設定が最も困難で時間がかかるものとなり得る。大型システムの複雑性は、多くの場合、システムのための設計を管理および最適化するために、コンピュータ支援設計（ＣＡＤ）または電子設計自動化（ＥＤＡ）ツールの使用を必要とする。ＣＡＤツールは、標的デバイス上の合成、配置、および経路設定という時間のかかるタスクを行う。
【０００４】
システム内のレジスタは、起動中またはエラーの発生後に、システムを既知の状態にするように動作するリセット信号に接続され得る。リセット信号は、イベントの発生に応じて、または一定時間経過後に、システムをリセットするために使用され得る。しかしながら、レジスタリセットは、標的デバイス上でシステムを設計するための課題を呈する。非同期および同期リセットに関する課題として、リセット信号を多数の宛先に論理出力する必要があるとき、タイミング収束を達成すること、およびリセットのために配分された限定配線リソースとの適合を行う一方、リセットと関連付けられたクラスタ化制約に準拠することが挙げられる。非同期リセットはさらに、順次最適化問題に関するさらなる困難を呈する。ＣＡＤまたはＥＤＡツールによって使用される順次最適化アルゴリズムは、リセットまたは負荷等の非同期信号を有するレジスタをバイパスし得る。順次最適化がバイパスされない場合、非同期リセットによって生成される起動条件は、依然として、リタイミング後も維持される。さらに、論理は、正確な起動挙動を確実にするために追加される付加的論理を必要とするリセットを伴わずに、順次要素にパックされる必要があり得る。
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明のある実施形態によると、特定のリセット条件下において、冗長となるシステムの部分を同定し、解除することができるリセットを同定する分析が、合成中に行われる。リセットの解除後に、合成における最適化が行われてもよく、システムの配置および経路設定が行われてもよい。本発明のある側面によると、分析は、システム内のリセット信号の同定を含む。共通リセット信号を有するレジスタセットが同定される。レジスタセット内の各レジスタに対して、リセット条件が適用され、システムの冗長部分が同定され、コスト値が割り当てられる。解除のためにマークされていない最高から最低までのコスト順にあるレジスタセット内の各レジスタに対して、リセット条件が適用され、リセット信号接続等の冗長である回路が、解除のためにマークされる。コスト順の全レジスタが分析された後に、解除のためにマークされた回路内のレジスタに対するリセットが、解除される。
【０００６】
本発明の実施形態の特徴および利点は、一例として例示され、本発明の実施形態の範囲を示された特定の実施形態に限定することを目的としていない。
【図面の簡単な説明】
【０００７】
【図１】図１は、本発明の例示的実施形態による、システムを設計するための方法を例示する、フローチャートである。
【図２】図２は、本発明の例示的実施形態による、合成を行うための方法を例示する、フローチャートである。
【図３】図３は、本発明の例示的実施形態による、リセット分析および解除を行うための方法を例示する。
【図４】図４は、本発明の例示的実施形態による、システムの冗長部分の第１の実施例を例示する。
【図５】図５は、本発明の例示的実施形態による、システムの冗長部分の第２の実施例を例示する。
【図６】図６は、本発明の例示的実施形態による、同期リセット同定を行うための方法を例示する。
【図７】図７は、本発明のある実施形態による、リセット分析および解除を行う実施例を例示する。
【図８】図８は、本発明のある実施形態による、システムデザイナを実装する、コンピュータシステムのブロック図を例示する。
【図９】図９は、本発明の例示的実施形態による、システムデザイナのブロック図である。
【図１０】図１０は、本発明のある実施形態による、リセット分析および解除ユニットのブロック図である。
【図１１】図１１は、本発明のある実施形態による、例示的標的デバイスを例示する。
【発明を実施するための形態】
【０００８】
以下の説明において、説明の目的で、本発明の実施形態の徹底的な理解を提供するために、具体的な用語が記載される。本発明の実施形態を実践するために、説明における具体的詳細が必要とされなくてもよいことが、当業者に明白となるであろう。他の場合において、本発明の実施形態を不必要に曖昧にすることを回避するように、周知の回路、デバイス、およびブロックがブロック図形態で示されている。
【０００９】
図１は、本発明の例示的実施形態による、標的デバイス上でシステムを設計するための方法を例示するフローチャートである。標的デバイスは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、構造化ＡＳＩＣ、または他のデバイスであってもよい。一実施形態によると、図１に例示されたプロシージャは、コンピュータシステム上で実装されるコンピュータ支援設計（ＣＡＤ）／電子設計自動化（ＥＤＡ）ツールによって行われてもよい。１０１において、システムが合成される。本発明のある実施形態によると、合成は、実装されるシステムの論理設計を生成するステップを伴う。
【００１０】
図２は、本発明のある実施形態による、合成を行うための方法を例示するフローチャートである。図２に例示される方法は、１０１を行うために利用されてもよい。２０１において、精緻化および抽出が行われる。本発明のある実施形態によると、精緻化および抽出は、システムの高水準記述から、システムの論理表現を生成するステップを含む。システムの高水準記述は、回路図、ＶＨＤＬ、Ｖｅｒｉｌｏｇ、または他の設計定義の形態であってもよい。論理表現は、システムに必要とされる論理ゲートおよび論理要素等の機能ブロックおよびレジスタ（「構成要素」）を含む表現を含んでもよい。精緻化および抽出の間、初期最適化もまた、行われてもよい。初期最適化は、ネットリストのクリーンアウトおよび定数伝搬を含んでもよい。抽出ネットリストは、抽出の間に生成される。
【００１１】
２０２において、パーティションが、抽出ネットリストから同定される。本発明のある実施形態によると、レジスタリセットは、特定のリセット条件下において、冗長となるシステムの部分を同定するために分析される。分析は、各レジスタリセットに対する冗長性の影響のコストを算出するステップを伴う。システムのこれらの冗長部分に対するサポートレジスタリセットと関連付けられた回路は、算出されたコストに基づいて、解除される。
【００１２】
２０３において、最適化が、改訂されたシステム設計に適用される。リセット分析および解除プロシージャは、システム内の信号に、論理出力を喪失させるか、または同期リセットの場合、定数を設定させてもよい。最適化は、レジスタリタイミング、微妙な状態機械再合成、および他の最適化プロシージャを含んでもよい。最適化は、大型／コースブロックが最適化される、ＲＴＬ合成、および単純ブロックが最適化されるゲートレベル合成を含んでもよい。
【００１３】
２０４において、マッピング（技術マッピング）もまた、最適化論理設計上で行われる。本発明のある実施形態によると、マッピングは、標的デバイス上で利用可能なリソースによって、最適化論理表現において論理ゲートおよび論理要素をどのように実装するかを決定するステップを含む。利用可能なリソースとして、ＬＵＴおよび他のリソースが挙げられ得る。本発明のある実施形態によると、ネットリストは、マッピングから生成される。このネットリストは、ＨＤＬから生成される最適化技術マッピングネットリストであってもよい。
【００１４】
図１に戻って参照すると、１０２において、マッピングされた論理システム設計内に構成要素が設置される。配置は、最適化技術マッピングネットリストに作用して、機能ブロックのそれぞれに対する配置を生成する。本発明のある実施形態によると、配置は、論理設計上のどのリソースが特定の論理要素に使用されるか、および合成中に決定されるようなシステムを実装するために決定される他の機能ブロックを決定することによって、標的デバイス上でシステムを適合するステップを含む。配置は、標的デバイス上に存在する論理クラスタを形成するように、論理要素を一緒にグループ化するステップを有するクラスタ化を含んでもよい。本発明の実施形態によると、クラスタ化は、配置の初期段階で行われ、配置準備段階の間の合成直後に発生する。
【００１５】
１０３において、配置された設計が、経路設定される。経路設定の間、標的デバイス上の経路設定リソースが、標的デバイス上の論理ゲート、論理要素、および他の構成要素間の相互接続を提供するように配分される。経路設定可能性の最適化もまた、配置された論理設計上で行われ得る。本発明のある実施形態によると、経路設定可能性の最適化の目標は、配置された論理設計における構成要素を接続するために使用される配線の量を削減することである。経路設定可能性の最適化は、論理出力分割、論理重複、論理再配線、または他のプロシージャを行うステップを含んでもよい。プロシージャのうちの１つ以上が、配置された論理設計上で行われてもよいことを理解されたい。
【００１６】
１０４において、アセンブリプロシージャが、行われる。アセンブリプロシージャは、１０１−１０３によって説明されるコンパイルプロシージャによって決定される情報を含む、データファイルを作成するステップを伴う。データファイルは、標的デバイスをプログラムするために使用され得るビットストリームであってもよい。本発明のある実施形態によると、図１に例示されるプロシージャは、第１のコンピュータシステム上で実行されるＥＤＡツールによって行われてもよい。生成されるデータファイルは、システムの設計がさらに処理されることを可能にするように、第２のコンピュータシステムに伝送されてもよい。代替として、データファイルは、システム設計に従って、標的デバイスをプログラムするために使用され得る、第２のコンピュータシステムに伝送されてもよい。システムの設計は、表示デバイスまたは他の媒体上等で、他の形態で出力されてもよいことを理解されたい。
【００１７】
１０５において、標的デバイスは、データファイルでプログラムされる。データファイルで標的をプログラムすることによって、標的デバイス上の構成要素は、システムを実装するように物理的に変換される。
【００１８】
図３は、本発明のある実施形態による、リセット分析および解除を行うための方法を例示する。図３に例示される方法は、図２の２０２で実装されてもよい。３０１において、共通リセット信号ｘを有するレジスタセットＲ（ｘ）が同定される。本発明のある実施形態によると、レジスタセットは、最小数のレジスタを有し、その数は、あらかじめ定められる。一実施形態において、最小数は約１０万である。
【００１９】
プロシージャ３０２−３０５は、レジスタセットＲ（ｘ）内の各レジスタ上で行われる。
【００２０】
３０２において、リセット条件が、以前に検討されていない、レジスタセットＲ（ｘ）内の現在のレジスタｙに適用される。本発明のある実施形態によると、リセット条件は、レジスタに０を出力させるリセット信号であってもよい。代替として、リセット条件は、レジスタに１を出力させるプリセット信号であってもよい。
【００２１】
３０３において、システムの冗長部分が、同定される。本発明のある実施形態によるとシステムの冗長部分は、システムの一部であって、３０２で適用されたリセット条件下において冗長となる任意の部分である。
【００２２】
図４は、本発明のある実施形態による、システムの冗長部分の第１の実施例をを例示する。図４は、２つのレジスタ、レジスタＸおよびＹと、論理ゲートＺとを有するシステムの一部を例示する。レジスタＸは、入力信号Ａを受信し、レジスタＹは、入力信号Ｂを受信する。レジスタＸおよびＹは、同一クロック信号ＣＬＫによってクロックされ、共通リセット信号を共有する。リセットがトリガされると、レジスタＸおよびＹは両方とも、ゼロを出力する。論理ゲートＺはＡＮＤゲートであるので、論理ゲートＺの出力は、レジスタＸおよびＹの出力のうちの少なくとも１つがゼロであるとき、ゼロである。リセット信号が、レジスタＸおよびＹのうちの一方のみに接続された場合、論理ゲートｚの出力は、同一となるであろう。したがって、本実施例において、リセット条件が、レジスタＸに適用されると、システムの冗長部分は、レジスタＹを含むであろう。
【００２３】
図５は、本発明のある実施形態による、システムの冗長部分の第２の実施例を例示する。図５は、第１のレジスタＰ集合および第２のレジスタＱ集合と、制御レジスタＲと、出力レジスタＺ集合を有するシステムの一部を例示する。レジスタＰは、入力信号Ａを受信し、レジスタＱは、入力Ｂを受信する。レジスタＰ、Ｑ、Ｒ、およびＺは、同一クロック信号ＣＬＫによってクロックされる。レジスタＰ、Ｑ、およびＲは、共通リセット信号を共有する。マルチプレクサＭは、レジスタＰまたはレジスタＱのいずれかに由来する入力を選択する。リセット条件下において、制御レジスタＲはゼロを出力し、マルチプレクサＭに、レジスタＱの条件または出力に関わらず、レジスタＰに由来する入力を選択させる。したがって、本実施例において、リセット条件がレジスタＲに適用されると、システムの冗長部分は、レジスタＱを含むであろう。
【００２４】
図３に戻って参照すると、３０４において、現在のレジスタｙに対するコストが、同定されたシステムの冗長部分に基づいて、算出される。本発明のある実施形態によると、コストは、冗長となるシステムの一部、論理ゲート、レジスタの数、および／または冗長となる配線の数あるいは長さ、冗長となる回路の深度、もしくは他の測定基準に基づいてもよい。
【００２５】
３０５において、コストが、レジスタセットＲ（ｘ）内の最後のレジスタ（レジスタのすべて）に対して算出されたかどうか決定される。コストが、レジスタセット内の最後のレジスタに対して算出されていない場合、制御は、３０２に戻り、レジスタセットＲ（ｘ）内の次のレジスタ上でプロシージャ３０２−３０４を行う。コストが、レジスタセット内の最後のレジスタに対して算出されている場合、制御は、３０６に進む。
【００２６】
プロシージャ３０６−３０９は、解除のためにマークされていない、レジスタセットＲ（ｘ）内のレジスタのそれぞれ上で行われる。
【００２７】
３０６において、リセット条件が、コスト順に、解除のために以前にマークされていない、レジスタセットＲ（ｘ）内の現在のレジスタｙに適用される。
【００２８】
３０７において、リセット条件の適用から生じる、システムの冗長部分が、解除のためにマークされる。
【００２９】
３０８において、解除のために以前にマークされていない、レジスタセットＲ（ｘ）内の最後のレジスタｙに、リセット条件が適用されたかどうか決定される。解除のために以前にマークされていない、レジスタセット内の最後のレジスタに、リセット条件が適用されていない場合、制御は、３０６に戻り、レジスタセット内の次のレジスタ上でプロシージャ３０６−３０７を行う。解除のために以前にマークされていない、レジスタセット内の最後のレジスタに、リセット条件が適用された場合、制御は、３０９に進む。
【００３０】
３０９において、解除のためにマークされている、各レジスタにおけるリセットが、解除される。
【００３１】
プロシージャ３０１−３０９は、反復され、システム内の他のレジスタセットに的ようされ、解除すべき付加的リセットを同定してもよいことを理解されたい。さらに、図３に説明される方法は、非同期または同期リセットのリセット分析および解除を行うために使用されてもよいことを理解されたい。図３に説明される方法におけるプロシージャは、各グループのリセット（非同期または同期）３０１−３０９に別個に適用されるべきである。本発明のある実施形態によると、プロシージャ３０１−３０９は、同期リセットに適用される前に、非同期リセットに適用される。
【００３２】
本発明のある実施形態によると、解除のためにマークされたレジスタにおいて、同期リセットを解除するとき、同期リセットが、レジスタに存在する場合、リセットが、解除される。しかしながら、リセット信号が、データ入力に連結される場合、接続は、レジスタから、単一論理出力ノードを通して、同期リセット信号へと逆行してトレースされてもよく、その場合、リセット信号は、反対の値に設定される。
【００３３】
図６は、本発明のある実施形態による、同期リセット同定を行うための方法を例示する。図６に説明される方法は、図３において説明される方法を使用する前に行われ、同期リセットにおいてリセット分析および解除を行ってもよい。６０１において、第１の閾値数より大きい論理出力数を有する信号ｉが同定される。
【００３４】
６０２において、１の値が信号に割り当てられる。
【００３５】
６０３において、一定である入力を有する第１の数のレジスタが、１の値を信号に割り当てるステップによって、論理条件を評価した後に同定される。
【００３６】
６０４において、０の値が信号に割り当てられる。
【００３７】
６０５において、一定である入力を有する第２の数のレジスタが、０の値を信号に割り当てるステップによって論理条件を評価した後に、同定される。
【００３８】
６０６において、第１の数のレジスタまたは第２の数のレジスタのいずれか大きい方が、第２の閾値数よりも大きいか否かを決定される。第１の数のレジスタまたは第２の数のレジスタのいずれか大きい方が第２の閾値数より大きい場合、制御は、６０７に進む。第１の数のレジスタまたは第２の数のレジスタのいずれか大きい方が、第２の閾値数より大きくない場合、制御は６０８に進む。
【００３９】
６０７において、信号がリセット信号として指定される。
【００４０】
６０８において、信号がリセット信号として指定されない。
【００４１】
プロシージャ６０１−６０８が反復され、他の信号に適用され、信号がリセット信号であるか否か決定してもよいことを理解されたい。
【００４２】
前述のプロシージャを参照して、第１の所定の閾値および第２の所定の閾値が使用されてもよいことを理解されたい。第１の所定の閾値は、最初に、高論理出力を有する信号を同定するために使用されてもよい。第２の所定の閾値は、信号が同期リセットであるか否かを同定することに先立って、一定となるレジスタを同定するために使用されてもよい。本発明の一側面によると、第１の所定の閾値は、第２の所定の閾値よりも大きくてもよい。
【００４３】
本発明のある実施形態によると、リセットまたはプリセット信号として使用され得る信号が、同定される。レジスタをゼロにさせる場合、信号は「リセット」である。レジスタを１にさせる場合、信号は「プリセット」である。非同期リセット／プリセットの場合、信号は、レジスタ上でそれに連結されるポートが、リセットまたはプリセットポートであるか否かを検証することによって、リセットまたはプリセットのいずれかとして同定されてもよい。同期リセット／プリセットの場合、信号がリセットまたはプリセットであるか否か同定するために、分析が必要とされてもよい。分析は、最初に、高論理出力を有する信号を同定するステップを伴ってもよく、潜在的に、レジスタを１またはゼロに設定することができる。次に、信号が、１またはゼロに設定されるとき、どうなるかについて決定が行われてもよい。多数のレジスタ（閾値数より大きい）がゼロになる場合、リセットが同定される。しかしながら、多数のレジスタが１になる場合、プリセットが同定される。
【００４４】
図１−３、および６は、本発明の実施形態を例示する、フローチャートである。例示される技術のうちのいくつかは、順次、並行して、または説明される順序および説明されるプロシージャが繰り返されてもよい順序以外の順序で行われてもよい。説明される技術の全てが行われることが要求されるわけではないこと、付加的な技術が追加されてもよいこと、および例示した技術のうちのいくつかが他の技術と置換されてもよいことを理解されたい。
【００４５】
図７は、本発明のある実施形態による、リセット分析および解除の実施例を例示する。図７は、レジスタＶ、Ｗ、およびＸを有するシステムの一部を例示する。レジスタＶは、入力信号Ａを受信する。レジスタＷは、入力信号Ｂを受信する。レジスタＸは、入力信号Ｃを受信する。レジスタＶ、Ｗ、およびＸは、ＣＬＫによってクロックされ、リセット信号を共有する。論理ゲートＹは、ＯＲゲートであって、論理ゲートＺは、ＡＮＤゲートである。
【００４６】
図３を参照すると、３０１において、レジスタＶ、Ｗ、およびＸは、共通リセットを有するとして同定される。
【００４７】
３０２および３０３において、リセット条件がレジスタＶに適用されると、レジスタＶの出力は０となる。Ｖの出力は、論理ゲートＹに入力される前にインバータを通過する。１の入力が、論理ゲートＹに入力される場合、論理ゲートＹは、レジスタＷからの入力に関わらず、常に、１つを出力する。したがって、レジスタＷからの入力は、冗長となる。論理ゲートＺがＡＮＤゲートであるので、レジスタＸから論理ゲートＺへの入力は、依然として関連している。
【００４８】
３０４において、冗長部分であるレジスタＷに対するコストは、１レジスタである。他の測定基準も、冗長部分をコスト化するために使用され得ることを理解されたい。
【００４９】
３０５において、レジスタＶは、コストのために分析されるレジスタセット内の最後のレジスタではない。制御は、３０２に戻り、レジスタＷを評価する。
【００５０】
３０２および３０３において、リセット条件がレジスタＷに適用されると、レジスタＷの出力は０となる。Ｗの出力は、論理ゲートＹに入力される。論理ゲートＹは、ＯＲゲートであるので、論理ゲートＹへの他の入力も、依然として関連している。したがって、リセット条件がレジスタＷに適用されると、システムの冗長部分は存在しない。
【００５１】
３０４において、冗長部分に対するコストは、０である。
【００５２】
３０５において、レジスタＷは、コストに対して分析されるべきレジスタセット内の最後のレジスタではない。制御は、３０２に戻り、レジスタＸを評価する。
【００５３】
３０２および３０３において、リセット条件がレジスタＸに適用されると、レジスタＸの出力は０となる。論理ゲートＺはＡＮＤゲートであるので、レジスタＸからの入力が０である場合、論理ゲートＺは、論理ゲートＹからの入力に関わらず、常に、０を出力する。したがって、論理ゲートＹからの入力は冗長となり、論理ゲートＹならびにレジスタＶおよびＷは冗長である。
【００５４】
３０４において、冗長部分である論理ゲートＹならびにレジスタＶおよびＷに対するコストは、１論理ゲートおよび２レジスタである。他の測定基準も、冗長部分をコスト化するために使用され得ることを理解されたい。
【００５５】
３０５において、レジスタＶ、Ｗ、およびＸはすべて、コストに対して分析されたので、制御は３０６に進む。
【００５６】
３０６において、最高コスト順のレジスタが、レジスタＸとして決定される。レジスタＸは、解除のためにマークされていないので、リセット条件がレジスタＸに適用される。
【００５７】
３０７において、冗長部分である論理ゲートＹならびにレジスタＶおよびＷは、解除のためにマークされる。
【００５８】
３０８において、レジスタＸはマークされておらず、分析されたレジスタセット内の最後のレジスタであるので、制御は３０９に進む。
【００５９】
３０９において、解除のためにマークされた各レジスタにおけるリセットが、解除される。
【００６０】
図７に例示される実施例は、非同期リセットまたは同期リセットに対するものであり得る。同期リセットに対するリセットを解除する場合に、同期リセットがレジスタに存在するとき（ＳＣＬＲ）、リセットは解除されてもよいことを理解されたい。代替として、同期リセットがレジスタに存在しないとき、レジスタから、単一の論理出力ノードを通して、同期リセット信号へと逆行してトレースが行われてもよい。次いで、リセット信号は、反対の値に設定することによって解除されてもよい。
【００６１】
図８は、本発明のある実施形態による、システムデザイナを実装するコンピュータシステムのブロック図を例示する。示されるように、コンピュータシステム８００は、プロセッサ８０１を含む。プロセッサ８０１は、プロセッサ８０１とコンピュータシステム８００内の他の構成要素との間でデータ信号を伝送するＣＰＵバス８１０に連結される。
【００６２】
コンピュータシステム８００は、メモリ８１３を含む。メモリ８１３は、動的ランダムアクセスメモリデバイス、静的ランダムアクセスメモリデバイス、および／または他のメモリデバイスであってもよい。メモリ８１３は、プロセッサ８０１によって実行され得る、データ信号によって表される命令およびコードを記憶してもよい。ブリッジメモリコントローラ８１１が、ＣＰＵバス８１０およびメモリ８１３に連結される。ブリッジメモリコントローラ８１１は、プロセッサ８０１、メモリ８１３、およびコンピュータシステム８００内の他の構成要素の間でデータ信号をダイレクトし、ＣＰＵバス８１０、メモリ８１３、および第１のＩＯバス８２０の間でデータ信号をブリッジする。
【００６３】
第１のＩＯバス８２０は、単一のバスまたは複数のバスの組み合わせであってもよい。第１のＩＯバス８２０は、コンピュータシステム８００内の構成要素間に通信リンクを提供する。ネットワークコントローラ８２１は、第１のＩＯバス８２０に連結される。ネットワークコントローラ８２１は、コンピュータシステム８００をコンピュータのネットワーク（図示せず）にリンクさせ、機械間の通信をサポートする。表示デバイスコントローラ８２２が、第１のＩＯバス８２０に連結される。表示デバイスコントローラ８２２は、コンピュータシステム８００への表示デバイス（図示せず）の連結を可能にし、表示デバイスとコンピュータシステム８００との間のインターフェースの役割を果たす。
【００６４】
第２のＩＯバス８３０は、単一のバスまたは複数のバスの組み合わせであってもよい。第２のＩＯバス８３０は、コンピュータシステム８００内の構成要素間に通信リンクを提供する。データ記憶デバイス８３１が、第２のＩＯバス８３０に連結される。データ記憶デバイス８３１は、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ＣＤ−ＲＯＭデバイス、フラッシュメモリデバイス、または他の大容量記憶デバイスであってもよい。入力インターフェース８３２が、第２のＩＯバス８３０に連結される。入力インターフェース８３２は、コンピュータシステム８００への入力デバイスの連結を可能にし、入力デバイスからコンピュータシステム１００へデータ信号を伝送する。バスブリッジ８２３が、第１のＩＯバス８２０を第２のＩＯバス８３０に連結する。バスブリッジ８２３は、データ信号をバッファし、第１のＩＯバス８２０と第２のＩＯバス８３０との間でデータ信号をブリッジするように動作する。異なるアーキテクチャを有するコンピュータシステムもまた、コンピュータシステム８００を実装するために使用されてもよいことを理解されたい。
【００６５】
システムデザイナ８４０が、メモリ８１３の中に常駐し、プロセッサ８０１によって実行されてもよい。システムデザイナ８４０は、システムを合成する、標的デバイス上にシステムを配置する、システムを経路設定する、システムをアセンブルする、およびシステムを実装するよう標的デバイスをプログラムするように動作してもよい。合成の間、分析がシステムデザイナ８４０によって行われ、特定のリセット条件下において、冗長となるシステムの部分を同定し、解除されることができるリセットを同定してもよい。同定されたリセットを解除後に、合成における最適化が行われてもよい。
【００６６】
図９は、本発明の例示的実施形態によるシステムデザイナ９００を例示する。システムデザイナ９００は、図８に示されるシステムデザイナ８４０を実装するために使用されてもよく、図１−３および６で説明されるプロシージャを行ってもよい。システムデザイナ９００は、標的デバイス上でシステムを設計するためのＣＡＤツールであってもよい。標的デバイスは、例えば、ＡＳＩＣ、構造化ＡＳＩＣ、ＦＰＧＡ、プログラマブル論理デバイス（ＰＬＤ）、プリント回路基板（ＰＣＢ）、または他の回路であってもよい。図９は、システムデザイナ９００の実施形態を実装するモジュールを例示する。一実施形態によると、システム設計は、例えば、図８に例示されるコンピュータシステム等のコンピュータシステムによって行われ、図９に示されるモジュールによって表される命令のシーケンスを実行してもよい。命令のシーケンスの実行は、以降で説明されるように、コンピュータシステムにシステム設計をサポートさせる。代替実施形態において、本発明を実装するために、ソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて、ハードワイヤ回路が使用されてもよい。したがって、本発明は、ハードウェア回路およびソフトウェアの任意の特定の組み合わせに限定されない。システムデザイナ９００は、システムデザイナマネージャ９１０を含む。システムデザイナマネージャ９１０は、システムデザイナ９００の構成要素に接続され、それらの間でデータを伝送する。システム設計マネージャ９１０はまた、システムデザイナ９００に入力される設計情報に精緻化を行ってもよい。精緻化は、情報の構文が正しいことを確実にするように、設計情報を再検討することを含んでもよい。
【００６７】
ブロック９２０は、合成ユニットを表す。本発明のある実施形態によると、合成ユニット９２０は、システムの高水準記述からシステムの論理表現を生成するステップを含む精緻化および抽出を行う。システムの高水準記述は、回路図、ＶＨＤＬ、Ｖｅｒｉｌｏｇ、または他の設計定義の形態であってもよい。論理表現は、システムに必要とされる論理ゲートおよび論理要素等の機能ブロックおよびレジスタ（「構成要素」）を含む表現を含んでもよい。合成ユニット９２０は、レジスタリセットを分析し、特定のリセット条件下において、冗長となるシステムの部分を同定するリセット分析および解除ユニット９２１を含む。分析は、各レジスタリセットに対して、冗長性の影響のコストを算出するステップを伴う。これらのシステムの冗長部分に対して、サポートレジスタリセットと関連付けられた回路が、算出されたコストに基づいて解除される。システムの冗長部分に対する、サポートレジスタリセットと関連付けられた回路の解除後に、最適化が、改訂されたシステム設計に適用される。最適化は、レジスタリタイミング、微妙な状態機械再合成、および他の最適化プロシージャを含んでもよい。最適化は、大型／コースブロックが最適化されるＲＴＬ合成、および単純ブロックが最適化されるゲートレベル合成を含んでもよい。合成ユニット９２０はまた、最適化論理設計上でマッピング（技術マッピング）を行う。本発明のある実施形態によると、マッピングは、標的デバイス上で利用可能なリソースによって、最適化論理表現において論理ゲートおよび論理要素をどのように実装するかを決定するステップを含む。利用可能なリソースとして、ＬＵＴおよび他のリソースが挙げられ得る。本発明のある実施形態によると、ネットリストが、マッピングから生成される。このネットリストは、ＨＤＬから生成される最適化技術マッピングネットリストであってもよい。
【００６８】
ブロック９３０は、配置ユニットを表す。配置ユニット９３０は、標的デバイス上のどの構成要素または領域が、特定の機能ブロックおよびレジスタのために使用されるかを決定することによって、標的デバイス上にシステムを配置する。システムデザイナ９００のある実施形態によると、配置ユニット９３０は、最初に、クラスタ内に最適化論理設計の複数部分をどのように実装するかを決定する。クラスタは、論理設計上の構成要素の一部を表してもよい。クラスタは、例えば、一緒にグループ化された標準セルの数によって表されてもよい。本実施形態において、最適化論理設計の複数部分がクラスタ内に実装された後、クラスタは、標的デバイス上の特定の部分にクラスタを割り当てることによって配置されてもよい。配置ユニット９３０は、標的デバイス上のリソースの良好な割当を決定するために、コスト関数を利用してもよい。
【００６９】
ブロック９４０は、経路設定ユニットを表す。経路設定ユニット９４０は、論理設計の機能ブロックおよびレジスタを実装する構成要素間の相互接続を提供するために使用する、標的デバイス上の経路設定リソースを決定する。
【００７０】
ブロック９５０は、アセンブリユニットを表す。アセンブリユニット９５０は、システムデザイナ９００によって行われるコンパイルプロシージャによって決定される情報を含む、データファイルを作成する。データファイルは、標的デバイスをプログラムするために使用され得る、ビットストリームであってもよい。本発明のある実施形態によると、生成されるデータファイルは、システムの設計がさらに処理されることを可能にするように、別のコンピュータシステムに伝送されてもよい。代替として、データファイルは、システム設計に従って標的デバイスをプログラムするために使用されてもよい、別のコンピュータシステムに伝送されてもよい。データファイルで標的デバイスをプログラムすることによって、標的デバイス上の構成要素は、システムを実装するように物理的に変換される。システムの設計は、表示デバイスまたは他の媒体上等で、他の形態で出力されてもよいことを理解されたい。
【００７１】
図１０は、本発明のある実施形態による、リセット分析および解除ユニット１０００のブロック図である。リセット分析および解除ユニット１０００は、図９に例示されるリセット分析および解除ユニット９２１を実装するために使用されてもよい。リセット分析および解除ユニット１０００は、リセット分析および解除マネージャ１０１０を含む。リセット分析および解除マネージャ１０１０は、リセット分析および解除ユニット１０００内の構成要素に連結され、その間で情報を伝達する。
【００７２】
リセット分析および解除マネージャ１０００は、リセット同定ユニット１０２０を含む。リセット同定ユニット１０２０は、同期リセットを同定するように動作する。本発明のある実施形態によると、リセット同定ユニット１０２０は、図６に例示されるプロシージャを行い、システム内の信号から、同期リセットを同定してもよい。
【００７３】
リセット分析および解除ユニット１０００は、冗長部分同定ユニット１０３０を含む。本発明のある実施形態によると、冗長部分同定ユニット１０３０は、共通同期リセットｘを有するレジスタセットＲ（ｘ）を同定し、リセット条件をレジスタセットＲ（ｘ）内の各レジスタｙに同時に適用し、システム内の論理の条件を分析し、リセット条件が適用されるとき、システムの他の論理に影響を及ぼさないシステムの部分を同定することによってシステムの冗長部分を同定する。
【００７４】
リセット分析および解除ユニット１０００は、コスト算出ユニット１０４０を含む。コスト算出ユニット１０４０は、同定されたシステムの冗長部分に基づいて、各レジスタｙに対するコストを算出する。本発明のある実施形態によると、コストは、冗長となるシステムの一部、論理ゲートの数、および／または冗長となる配線の数あるいは長さ、冗長となる回路の深度、もしくは他の測定基準に基づいてもよい。
【００７５】
リセット分析および解除ユニット１０００は、リセット解除ユニット１０５０を含む。リセット解除ユニット１０５０は、コスト順に、解除のために以前にマークされていないレジスタセットＲ（ｘ）内の各レジスタｙにリセット条件を適用する。リセット解除ユニット１０５０は、解除のために以前にマークされていないレジスタＲ（ｘ）内のレジスタすべてが、リセット条件が適用されるまで、解除のためのリセット条件の適用から生じる、システムの冗長部分をマークする。次いで、解除のためにマークされている、各レジスタにおけるリセットが、解除される。解除のためにマークされたレジスタにおいて、同期リセットを解除するとき、同期リセットがレジスタに存在する場合、リセットが、解除される。しかしながら、リセット信号がデータ入力に連結される場合、接続は、レジスタから、単一論理出力ノードを通して、同期リセット信号へと逆行してトレースされてもよく、その場合、リセット信号は反対の値に設定される。
【００７６】
本発明の実施形態は、冗長リセット信号を同定を解除するステップを参照して論じられた。本発明の実施形態はまた、同様に、冗長プリセット信号を同定および解除するために使用されてもよいことを理解されたい。
【００７７】
本発明の実施形態は、命令を有するコンピュータ可読または機械可読媒体を含み得る、コンピュータプログラム製品、またはソフトウェアとして提供されてもよいことを理解されたい。コンピュータ可読または機械可読媒体上の命令は、コンピュータシステムまたは他の電子デバイスをプログラムするために使用されてもよい。機械可読媒体は、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ、光磁気ディスク、または電子命令を記憶するために好適な他の種類の媒体／機械可読媒体を含んでもよいが、それらに限定されない。本明細書で説明される技術は、いずれの特定のソフトウェア構成にも限定されない。それらは、任意の計算または処理環境で適用性を見出してもよい。本明細書で使用される「コンピュータ可読媒体」または「機械可読媒体」という用語は、コンピュータによって実行するための命令のシーケンスを記憶または符号化することが可能であり、本明細書で説明される方法のうちのいずれか１つをコンピュータに行わせる任意の媒体を含むものとする。さらに、当技術分野では、１つの形態または別の形態（例えば、プログラム、プロシージャ、プロセス、アプリケーション、モジュール、ユニット、論理等）のソフトウェアを措置を講じるか、または結果を引き起こすものであると言うことが一般的である。そのような表現は、処理システムによるソフトウェアの実行が、結果を生じる動作をプロセッサに行わせることを述べる簡便な方法にすぎない。
【００７８】
図１１は、本発明のある実施形態による、標的デバイスを実装するために使用され得るデバイス１１００を例示する。デバイス１１００は、複数の論理アレイブロック（ＬＡＢ）を含む、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）である。各ＬＡＢは、複数の論理ブロック、キャリーチェーン、ＬＡＢ制御信号、参照テーブル（ＬＵＴ）チェーン、およびレジスタチェーン接続ラインから形成されてもよい。論理ブロックは、ユーザ論理関数の効率的な実装を提供する論理の小単位である。論理ブロックは、１つ以上の組み合わせセルを含み、各組み合わせセルは、単一の出力およびレジスタを有する。本発明の一実施形態によると、論理ブロックは、Ａｌｔｅｒａ（登録商標）Ｃｏｒｐｏｒａｔｉｏｎによって製造されているＳｔｒａｔｉｘまたはＣｙｃｌｏｎｅデバイスで見られるもの等の論理要素（ＬＥ）、またはＸｉｌｉｎｘＩｎｃ．によって製造されているＶｉｒｔｅｘデバイスで見られるもの等の組み合わせ論理ブロック（ＣＬＢ）と同様に動作してもよい。本実施形態において、論理ブロックは、構成可能なレジスタを有する４入力ＬＵＴを含んでもよい。本発明の代替実施形態によると、論理ブロックは、Ａｌｔｅｒａ  Ｃｏｒｐｏｒａｔｉｏｎによって製造されているＳｔｒａｔｉｘデバイスで見られるもの等の適応論理モジュール（ＡＬＭ）と同様に動作してもよい。ＬＡＢは、デバイス１１００にわたって、行および列にグループ化されてもよい。ＬＡＢの列は、１１１１−１１１６として示される。論理ブロックは、付加的または代替構成要素を含んでもよいことを理解されたい。
【００７９】
デバイス１１００は、メモリブロックを含む。メモリブロックは、例えば、最大で種々の周波数で最大で種々のビット幅の専用の真のデュアルポート、単純デュアルポート、または単一ポートメモリを提供する、二重ポートランダムアクセスメモリ（ＲＡＭ）ブロックであってもよい。メモリブロックは、選択されたＬＡＢの間でデバイスにわたって列にグループ化されるか、またはデバイス１１００内で個別に、あるいは対になって位置してもよい。メモリブロックの列は、１１２１−１１２４として示される。
【００８０】
デバイス１１００は、デジタル信号処理（ＤＳＰ）ブロックを含む。ＤＳＰブロックは、加算または減算特徴を有する種々の構成の乗算器を実装するために使用されてもよい。ＤＳＰブロックは、シフトレジスタ、乗算器、加算器、および累算器を含む。ＤＳＰブロックは、デバイス１１００を横断する列にグループ化されてもよく、１１３１として示される。
【００８１】
デバイス１１００は、複数の入力／出力要素（ＩＯＥ）１１４０を含む。各ＩＯＥは、デバイス１１００上のＩＯピン（図示せず）にフィードする。ＩＯＥ１１４０は、デバイス１１００の周辺の周囲におけるＬＡＢ行および列端に位置する。各ＩＯＥは、双方向ＩＯバッファと、入力、出力、および出力イネーブル信号をレジスタするための複数のレジスタとを含んでもよい。
【００８２】
デバイス１１００は、標的デバイス上の構成要素間で信号を経路設定するように、ＬＡＢローカル相互接続ライン、行相互接続ライン（「Ｈ型ワイヤ」）、および列相互接続ライン（「Ｖ型ワイヤ」）（図示せず）等の経路設定リソースを含んでもよい。
【００８３】
前述の明細書において、本発明の実施形態は、その具体的な例示的実施形態を参照して説明されている。しかしながら、本発明の実施形態のより広い精神および範囲から逸脱することなく、種々の修正および変更が行われてもよいことが明白となるであろう。したがって、本明細書および図面は、限定的な意味よりもむしろ例示的な意味で見なされるものである。
【図１】
2013526738.tif 000003
【図２】
2013526738.tif 000004
【図３】
2013526738.tif 000005
【図４】
2013526738.tif 000006
【図５】
2013526738.tif 000007
【図６】
2013526738.tif 000008
【図７】
2013526738.tif 000009
【図８】
2013526738.tif 000010
【図９】
2013526738.tif 000011
【図１０】
2013526738.tif 000012
【図１１】
2013526738.tif 000013
【国際調査報告】
2013526738.tif 000014
2013526738.tif 000015