(58)【調査した分野】(Int.Cl.,DB名)
集積回路(IC)の複数のフロップ回路を第1のモードで動作させるステップであって、前記複数のフロップ回路はそれぞれ、マスターラッチとスレーブラッチを有し、前記第1のモードで動作させるステップは、前記複数のフロップ回路の各々に関して、前記マスターラッチは、第1のクロック信号に従ってトランスペアレントであり、前記スレーブラッチは、第2のクロック信号に従ってトランスペアレントであり、前記マスターラッチと、前記スレーブラッチが同時にトランスペアレントにならないことを含むステップと、
前記複数のフロップ回路の各々を第2のモードで動作させるステップであって、前記第2のモードで動作させるステップは、前記複数のフロップ回路の各々に関して、前記マスターラッチをトランスペアレントに保持するステップを含み、前記スレーブラッチは、前記第2のクロック信号に従ってトランスペアレントであることを含むステップと、
前記第1のモードおよび種々のパルス幅を有する前記第2のクロック信号に従った前記第2のモードでの前記動作させるステップに基づいて、前記ICのその後の改訂に備えて、前記複数のフロップのどれをマスタースレーブフリップフロップとして動作させ、どのフロップをパルスフロップとして動作させるべきかを判定するステップとを含む方法。
前記ICの前記その後の改訂において、前記複数のフロップの第1のフロップはマスタースレーブフリップフロップとして動作すべきと判定するステップと、前記ICの前記その後の改訂において、前記複数のフロップの第2のフロップはパルスフロップとして動作すべきと判定するステップをさらに含む、請求項1に記載の方法。
前記ICの前記その後の改訂に備えて、前記複数のフロップの前記第1のフロップの前記マスターラッチのクロック入力を前記第2のクロック信号を受信するように構成するステップをさらに含む、請求項2に記載の方法。
前記複数のフロップの前記第1のフロップの前記マスターラッチを、前記第2のクロック信号の第1の相においてトランスペアレントになるように構成するステップと、前記スレーブラッチを前記クロック信号の第2の相においてトランスペアレントになるように構成するステップをさらに含み、前記第2の相が、前記第1の相の逆相である、請求項3に記載の方法。
前記複数のフロップの第1のサブセットの各々は、マスタースレーブフリップフロップとして動作すべきであり、前記複数のフロップの第2のサブセットの各々は、パルスフロップとして動作すべきと判定するステップをさらに含み、前記判定するステップが、各々のフロップに対して個別に行なわれる、請求項1に記載の方法。
前記第1のモードにおいて動作する際、前記第1のクロック信号および前記第2のクロック信号は、それぞれが50%未満のデューティサイクルを有するパルスクロック信号である、請求項1に記載の方法。
前記第2のクロック信号を、第1の状態にあるクロックユニットによって受信される信号に応答して第1のパルス幅で供給するステップと、前記第2のクロック信号を、第2の状態にある前記信号に応答して前記第1のパルス幅を下回る第2のパルス幅で供給するステップをさらに含む、請求項7に記載の方法。
前記クロックユニットは、前記第1の複数のフロップ回路の各々の前記マスターステージと、前記スレーブステージが、前記第1のモードで動作する際、同時にトランスペアレントにならないように前記第1および第2のクロック信号を調整するように構成される、請求項9に記載の集積回路。
前記集積回路はさらに、第2の複数のフロップ回路を含み、前記第2の複数のフロップ回路の各々が、マスタースレーブフリップフロップ構成においてマスターラッチとして作用するように構成された第1ステージと、スレーブラッチとして作用するように構成された第2のステージとを含み、前記第1および第2ステージの各々のクロック入力はそれぞれ、前記第2のクロック信号を受信するように結合され、前記第2の複数のフロップ回路の前記第1および第2ステージは、それらが互いに同時にトランスペアレントにならないように構成される、請求項9に記載の集積回路。
集積回路(IC)設計のレイアウトを実施するステップであって、前記レイアウトを実施するステップが、複数のフロップの各々のマスターラッチを第1のクロック信号を受信するように構成するステップと、前記複数のフロップの各々のスレーブラッチを第2のクロック信号を受信するように構成するステップを含むステップと、
前記IC設計を実装するステップと、
前記ICを第1のモードで動作させるステップであって、そこでは前記複数のフロップの各々の前記マスターラッチは、前記第1のクロック信号に応答してトランスペアレントであり、前記複数のフロップの各々の前記スレーブラッチは、前記第2のクロック信号に応答してトランスペアレントであるステップと、
前記ICを第2のモードで動作させるステップであって、そこでは前記複数のフロップの各々の前記マスターラッチは、トランスペアレントに保持され、前記複数のフロップの各々の前記スレーブラッチは、前記第2のクロック信号に応答してトランスペアレントであるステップと、
前記第1のモードおよび種々のパルス幅を有する前記第2のクロック信号に応答した前記第2のモードでの前記動作させるステップに基づいて、前記ICのその後の改訂に備えて、前記複数のフロップのどれがマスタースレーブフリップフロップとして動作すべきか、どのフロップがパルスフロップとして動作すべきかを判定するステップとを含む方法。
前記複数のフロップのどれがマスタースレーブフリップフロップとして動作し、どのフロップがパルスフロップとして動作すべきかの前記判定するステップは、前記複数のフロップの各々に対して個別に行なわれる、請求項14に記載の方法。
前記判定するステップが、前記複数のフロップのどれが、前記第2のモードでの動作中に前記ICの誤作動を引き起こしているかを判定するステップを含む、請求項14に記載の方法。
前記複数のフロップの選択されたフロップを、前記その後の改訂においてマスタースレーブフリップフロップとして動作するように構成するステップをさらに含み、前記その後改訂に備えて、前記複数のフロップの選択されたフロップに関するクロック接続の前記修正するステップを含んでおり、前記クロック接続の前記修正するステップは、前記複数のフロップの選択されたフロップの前記マスターラッチのクロック入力を、前記第1のクロック信号を伝送するように結合された第1の信号パスから切り離すステップと、
前記複数のフロップの前記選択されたフロップの前記マスターラッチの前記クロック入力を前記第2のクロック信号を伝送するように結合された第2の信号パスに接続するステップとをさらに含む、請求項14に記載の方法。
前記切り離すステップと、前記接続するステップは、金属層を変えることで、前記複数のフロップの前記選択されたフロップの前記マスターラッチの前記クロック入力が、前記その後の改訂に備えて前記第2の信号パスに結合されるステップを含む、請求項17に記載の方法。
前記複数のフロップの前記選択されたフロップを前記その後の改訂においてパルスフロップとして動作するように構成するステップをさらに含み、前記構成するステップが、
前記複数のフロップの前記選択されたフロップの前記マスターおよびスレーブラッチのクロック接続をその後の改訂に備えてもとのままにするステップと、
前記ICの前記その後の改訂を前記第2のモードで動作させるステップであって、前記複数のフロップの前記選択されたフロップの前記マスターラッチは、前記第2のモードでの動作中トランスペアレントのままであるステップとを含む、請求項14に記載の方法。
【発明を実施するための形態】
【0011】
本発明は、種々の修正形態および代替の形式の余地があるが、その特定の実施形態は図面中の例によって示されており、これを本明細書に詳細に記載する。しかしながら図面およびそれに対する記載は、本発明を開示される特定の形態に限定することは意図しておらず、逆に本発明は、添付の特許請求の範囲によって定義されるように、本発明の精神および範囲内にある全ての修正形態、等価物および代替形態を包含するものである。
【0012】
概要
本開示は、集積回路(IC)の設計において特定のフロップ回路に関してフロップタイプ(例えばマスタースレーブフリップフロップまたはパルスフロップ)を判定する方法を対象としている。本明細書で使用されるように、用語フロップ回路(またはフロップ)は、複数の異なるタイプの記憶回路の1つを指すことができ、これには、マスタースレーブフリップフロップ、パルスフロップ、およびそうでなければ先の2つの回路の一部ではないラッチが含まれる。
【0013】
IC設計における一部のフロップ回路は、設計工程の早期にマスタースレーブフリップフロップまたはパルスフロップとして指定することができ、その他の回路は、マスタースレーブフリップフロップまたはパルスフロップとして容易に指定されない場合がある。以下でさらに詳細に説明するように、ノンクリティカルとして指定されたフロップは、マスタースレーブフリップフロップとして実装することができ、周波数制限器(または「F制限器」)として指定されたものは、パルスフロップとして実装することができる。第3のカテゴリのフロップは、本明細書ではクリティカルフロップとして指定されており、これはマスタースレーブフリップフロップとして、あるいはパルスフロップとして最適に実装されたかどうかを判定するのが難しい場合もある。本開示は、このようなフロップが、マスタースレーブフリップフロップまたはパルスフロップとして最適に実装されたかどうかを判定するための方法を対象としている。方法はさらに、個々のフロップ単位ベースで実施することができる。すなわち一部のクリティカルフロップは、マスタースレーブフリップフロップとして指定され、その他のものはパルスフロップとして指定することができ、この判定は、各々のフロップに対して個別に行なわれる。
【0014】
また、どのフロップをマスタースレーブフリップフロップとして実装すべきか、およびどのフロップをパルスフロップとして実装すべきかを判定することができる装置も開示されている。この構成によって、第1のモードと、第2のモードでのICの動作が可能になることにより、どのフロップタイプがクリティカルとして指定されるフロップに最適かを判定することが可能になる。第1のモードでは、クリティカルとして指定されたフロップは、マスタースレーブフリップフロップとして動作することができる。第2のモードでは、クリティカルフロップのマスターラッチは、トランスペアレントに保持することができるため、それらはパルスフロップとして動作する。ICを第1および第2の両方のモードで動作させた後、その動作の分析が行なわれ、その後の改訂における各々のクリティカルフロップに関するフロップ実装形態を判定することができる。
【0015】
図1から
図8およびそれらに対応する本開示の記載は、ICの初期バージョンにおいてクリティカルフロップを実装するのに使用され得る種々のフロップ回路タイプを対象としている。
図9から
図12およびそれらに対応する記載は、ICのその後の改訂における種々のカテゴリのフロップ回路、ならびにクリティカルフロップに関するフロップタイプを判定するための方法および装置を説明することを対象としている。
【0016】
集積回路およびパルスフロップブロック図
次に
図1に注目すると、集積回路(IC)の一実施形態のブロック図が示されている。IC100のブロック図は例示であり、本開示の特定の態様を例示することを目的としているが、但しそれは限定することは意図していないことに留意されたい。したがってIC100の実際の実装形態は、本明細書に明確に示したり、考察したりしていない構成要素を含む場合もある。
【0017】
示される実施形態のIC100は、第1の論理ユニット105と、第2の論理ユニット110とを含む。このような論理ユニットはそれぞれ、種々の組み合わせ論理回路を含むことができる。示される実施形態における論理ユニット105および110は、種々のパルスフロップを経由して互いに通信するように結合されている。パルスフロップを利用することで、通信をパルスクロック、クロック(例えば50%のデューティサイクルを有する通常のクロック)あるいはその両方に対して同期させることができる。このような通信は、種々のタイプのパルスフロップを利用して促進させることができる。
【0018】
論理ユニット105から論理ユニット110への第1の通信パスは、示される実施形態では直列式の2つのパルスフロップ30によって形成される。示される実施形態における各々のパルスフロップ30は、パルスクロックを受信するように結合され、他のクロックは受信しない。パルスクロックは、パルスクロックヘッダ115によって生成され、供給することができる。パルスクロックは、50%未満のデューティサイクルを有するクロックであってよい。パルスフロップ30は、このデューティサイクルに対してそれぞれトランスペアレントであり得るが(例えばパルスがhighにアサートされた場合)、それ以外ではこのサイクルの残りの期間においては信号の伝達を阻止することができる。以下にさらに詳細に説明するように、パルスフロップ30をmin−time問題を回避するように構成することができ、この場合、パルスフロップ30が共にトランスペアレントであるとき(例えばこの例ではパルスがアサートされたとき)、そうでなければその信号状態が2つ以上のパルスフロップを通過する可能性がある。
【0019】
示される例では、論理ユニット105から論理ユニット110までの第2の通信パスは、パルスフロップ50によって形成される。論理ユニット110から論理ユニット105まで信号を伝送するように動作可能な第3の通信パスは、パルスフロップ70によって形成される。パルスフロップ50および70はそれぞれ、パルスクロックと、50%のデューティサイクルのクロック信号(「クロック」)の両方を受信するようにそれぞれ結合されている。50%のデューティサイクルのクロック信号は、クロックヘッダ125によって生成され、供給することができる。一部の実施形態では、パルスフロップ50および70に供給されるクロック信号は、相補的なクロック信号であってよく、すなわち一方の信号は、他方の要素に与えられる50%のデューティサイクルのクロック信号と、180°の位相差を有する。パルスフロップ50および70は、以下で考察するように、パルスクロックおよび50%のデューティサイクルクロックの両方、あるいはその補集合によって動作中に同期させることができる。
【0020】
示される実施形態では、IC100は、スキャンテストをサポートするように動作可能であり、これにはスキャンデータ入力と、スキャンデータ出力の両方が含まれる。スキャンチェインは、論理ユニット105および110、ならびに種々のスキャンパルスフロップを経由するように形成することができる。しかしながらスキャンテストをサポートするための回路は任意選択であり、他の実施形態も実現可能であり企図されており、この場合スキャンテストはサポートされないことに留意されたい。
【0021】
図2は、パルスフロップの一実施形態のブロック図である。より詳細には、示される実施形態におけるパルスフロップ20は、上記で採り上げ以下でさらに考察するように、パルスフロップ30、50および70の基本的な構成を示すのに利用することができる。
【0022】
示される実施形態におけるパルスフロップ20は、入力回路22と、転送回路24と、記憶回路26と、出力回路28とを含んでいる。一部の実施形態では、入力回路22は、クロック信号の補集合clkバーを受信するように結合させることができ、この場合クロック信号の補集合(その真の対応物などの)は、50%のデューティサイクルを有する。他の実施形態において、入力回路は、パルスクロック信号pclkを受信するように結合させることができ、その場合デューティサイクルは50%未満である。入力されるデータは、入力ノード(「In」)における入力回路によって受信することができる。
【0023】
示される実施形態における入力回路22は、第1および第2のフロートノード、すなわちフロート1およびフロート2を介して転送回路24に結合される。これらの回路ノードは、パルスフロップ20の動作サイクルの少なくとも一部において、少なくとも一方が「浮遊」する可能性があることから、この実施形態ではそのように名前が付けられている。本明細書で使用されるように、ノードに関する用語「フロート」は、ノードが、PMOS(p−チャネル金属酸化物半導体)またはNMOS(n−チャネル金属酸化物半導体)デバイスのいずれかによって有効に駆動されない場合のその動作における特定の時間を指すことができる。同様にフロートノードは、パルスフロップの動作サイクルの一部にわたっていずれのデバイスによっても有効に駆動されないノードとして定義される場合もある。したがってその特定のフロートノードに対するいずれの電圧も、一定の時間にわたって静電容量式に保持することができ、但しこの電圧は、特定の時間が経過した後ノードが有効に駆動されない場合、このノード上で減衰する場合もある。しかしながらパルスフロップ20は、高速動作用に設計され得るため、一定の電圧を保持するのにフロートノードに必要な時間量は相対的に小さく、これによりそのノードから受信する電圧によって他のデバイスを始動することが可能になる。さらにフロートノードを使用するパルスフロップの実装において、このようなノードを駆動させるのに余分なトランジスタが必要ないため、回路領域の無駄を省くことができる。これはまた、回路全体の遅延を抑えることもできる。
【0024】
示される実施形態における転送回路24は、パルスクロック信号pclkを受信するように結合される。パルスクロックのアクティブ相への遷移に応答して(例えばlowからhighへ)、転送回路24が始動することで、入力信号の論理値ならびにその補集合を記憶回路26に転送することができる。入力データの補集合は、一方のフロートノード(例えばフロート1)に伝送することができ、真の入力データは、他方のフロートノード(例えばフロート2)に伝送することができる。
【0025】
記憶回路26は、入力データ信号およびその補集合の状態を記憶するように構成されており、転送回路24を停止させた後もこのような値を記憶し続けることができる。示される実施形態における出力回路28は、出力信号の補集合outバーを受信するように結合されており、その出力ノードにおいて真の出力信号outを駆動させるように構成されている。いくつかの実施形態において、出力信号は、入力信号の補集合であり得ることに留意されたい。
【0026】
パルスフロップ回路実施形態および動作
図3、5および7はそれぞれ、パルスフロップ回路の種々の実施形態を示している。
図4、6および8はそれぞれ、
図3、5および7のタイミングの関係をそれぞれ示している。示されるパルスフロップ回路はそれぞれ、パルスクロックに従って動作することができ、後の2つの実施形態は、50%のデューティサイクルクロックに従って動作するように構成されている。さらに本明細書で考察すべき回路実施形態はそれぞれ、min−time問題を回避するように構成されている。より詳細には考察すべき回路実施形態はそれぞれ、動作中その各々の入力ノードと出力ノードの間で全面的にトランスペアレントではないが、なおパルスフロップの機能性を与えるように構成されている。したがって本明細書で考察される種々のパルスフロップ実施形態は、高速信号伝達を必要とする用途(およびこれにより、マスタースレーブフリップフロップは適さない)において有効である場合があり、その一方で2つ以上の直列に結合されたパルスフロップ回路間で競合する信号状態を阻止する能力を与えることができる。
【0027】
示される種々の回路実施形態において、「P」で示されるトランジスタは、PMOSトランジスタであり、「N」で示されるトランジスタは、NMOSトランジスタであることに留意されたい。しかしながらこのような実施形態におけるPMOSおよびNMOSトランジスタの配置は例示であり、よって他の構成も可能であり企図されていることに留意されたい。
【0028】
次に
図3に注目すると、パルスフロップ回路の一実施形態の概略図が示されている。示される実施形態におけるパルスフロップ30は、パルスクロックpclkに従って動作するように構成されており、これは50%のデューティサイクルクロックを必要としない。示される実施形態において、入力回路32と、転送回路34は共に、パルスクロックを受信するように結合されるが、その反対の状態に基づいて機能する。
【0029】
示される実施形態における入力回路32は、2つの直列に結合したゲーテッドインバータを含む。第1のゲーテッドインバータは、データ入力Dを受信するように結合され、トランジスタP31、P32およびN31を含んでいる。第2のゲーテッドインバータは、P33、P34およびN32を含む。トランジスタP32およびP34は、そのそれぞれのインバータに関してゲート機能を与えるように構成されている。pclkがlowのとき、トランジスタP32およびP34はアクティブである。したがってpclkがlowのとき、第1のゲーテッドインバータは、入力Dの補集合Dバーを第1のフロートノード、フロート1に供給することができ、Dの論理的同値が、第2のフロートノード、フロート2に供給される。
【0030】
pclkがhighに遷移する際、少なくとも1つのゲートインバータに関するプルアップパスが閉鎖される。例えばDがlowならば、pclkがlowのとき、フロート1は、Vddに向かってP31およびP32を介してhighになる。しかしながらpclkがhighに遷移する際、P32が停止し、これによりプルアップパスが閉鎖される。さらにP32は、pclkがhighのときイナクティブになり、DがlowのときN31がイナクティブになるため、Dがlowでpclkがhighであることにより、第1のフロートノード、フロート1がいずれのデバイスによっても駆動されず、これによりそれに対する電圧が浮遊する状況になる。pclkがhighに遷移するその時にフロート1に生じている高圧は、一定の時間にわたって静電容量式に保持することができ、これはN32およびN34を始動させるのに十分である(N34は、転送回路34の一部である)。一実施形態において、パルスクロック(この場合high)のアクティブ部分の長さは、フロート1が高圧を保持することでN32を始動させ、N34が全体を通してアクティブのままでいるように時間を決めることができる。
【0031】
pclkがlowのときにD入力がhighであることによりN31を始動させ、これによりフロート1をlowにすることができる。フロート1がlowであることによりP33を始動させ、これによりフロート2をP33およびP34を介してhighにすることができる。フロート1は、pclkがhighに遷移した後、プルダウンパスがN31を経由する状態のままであるため駆動されたままであってよい。しかしながらpclkがhighに遷移する際、P34が停止することで、フロート2と、Vdd間のプルアップパスを排除する。したがってフローティング電圧が、フロート2に生じている可能性があり、この電圧は、一定の時間にわたって静電容量式に保持されてよい。しかしながら上記に述べたように、そのパルス幅は、(転送回路34の)N35がパルスのアクティブ部分全体にわたってアクティブであるようにフロート2が十分な長さにわたってhighのままでいることができるように選択することができる。
【0032】
先に述べたように、転送回路34は、デバイスN34およびN35ならびにN33も含んでいる。入力回路32によってノードDで受信した入力データに応じて、トランジスタN34およびN35の一方が、所与の時間にアクティブになってよい。pclkがlowのとき、N33はイナクティブである。しかしながらこの実施形態においてpclkがhighに遷移するとき、N33が始動することで、それ自体およびN34およびN35のアクティブな方を経由するプルダウンパスを形成する。N34が、N33と同時にアクティブであるならば、記憶回路36のノードSが、これらのデバイスを介してlowなる。ノードSバーは、これらのデバイスが同時にアクティブになったとき、N33およびN35を介してlowになる。
【0033】
示される実施形態における記憶回路36は、一組の交差結合したインバータを含む。第1のこのようなインバータは、プルダウンデバイスN1およびN2と共にプルアップデバイスP1およびP2を含む。第2のこのようなインバータは、プルダウンデバイスN3およびN4と共にプルアップデバイスP3およびP4を含む。第1のインバータは、入力としてノードSに結合され、ノードSバーに対して出力を進めるように構成される。第2のインバータは、入力としてノードSバーに結合され、出力としてノードSを駆動するように結合される。
【0034】
転送回路34のデバイスN33、N34およびN35は、後の2つのいずれかが、先のものと同時にアクティブになったとき、集積された駆動力が、記憶回路36のいずれかのインバータを無効にするのに十分なものであるようにサイズが決められることに留意されたい。したがってN33およびN34が共にアクティブである場合、第2のインバータの出力、すなわちノードSを、例え第2のインバータがノードSをhighで駆動しようと努めていたとしてもlowにすることができる。これにより、ノードSバーをhighで駆動することによって第1のインバータが応答し、これにより結果として第2のインバータがノードSをlowで駆動するように切り替えるため、記憶回路36の状態をフリップさせることができる。同様にデバイスN33およびN35が共にアクティブの場合、第1のインバータの出力ノードSバーは、例え第1のインバータがこのノードをhighにしようと努めていたとしてもlowにすることができる。その結果、第2のインバータが切り替わることでノードSをhighで駆動し始め、これにより第1のインバータはノードSバーをlowで駆動することができる。
【0035】
示される実施形態では、出力回路は、インバータI31を利用して実装されている。この特定の例では、I31の入力は、ノードSに結合されており、ノードQバーに対して与えられる出力は、ノードDに与えられる入力の補集合である。しかしながらI31の入力ノードがノードSバーに結合される(よってこの入力の論理的同値は、その出力に与えられる)実施形態は、実行可能であり、企図されていることに留意されたい。さらに他の構成(例えば2つのインバータが直列に結合された)を利用する出力回路を有する実施形態も実行可能であり、企図されている。
【0036】
図4は、
図3のパルスフロップ回路の実施形態の動作を示すタイミング図である。所与の例において、pclkがhighに遷移するほんの少し前に、入力ノードDはhighになり、フロート2も同様であり、フロート1は、lowである。pclkがhighに遷移する際、N33が始動する。デバイスN35もまた、pclkがhighに遷移する際、遷移の時のフロート2がhighであることによりアクティブになる。よってN33およびN35は同時にアクティブになる場合、Sバーは、(1)においてこのようなデバイスを介してlowになり、Sはこれに対応してhighになる。出力ノードQバーもまたSバーに続いてlowになるが、この応答は、わずかに遅れる場合がある(簡素化するために遅延はここでは描いていない)。
【0037】
(2)において点線で描かれるように、フロート2は、pclkがlowからhighに遷移した後に浮遊する可能性がある。pclkがhighに遷移する際、P34は停止する。したがってP33およびP34を経由するVddへのプルアップパスは、P34の停止により切断される。N32もまたこの時点でイナクティブになることにより、フロート2はいずれのデバイスによっても駆動されない。したがってpclkがlowからhighに遷移するほんの少し前にフロート2に生じているhighは、静電容量式に保持される。pclkがhighである時間量が、少なくともN35をアクティブに保持することで、Sバーをlowにするのに十分な期間にわたって、フロート2がその電圧を保持することができる十分に短い持続時間であるようにパルスフロップ30を設計することができる。一部の実施形態において、回路は、フロート2がその電圧をpclkのhighの部分全体にわたって静電容量式に保持することができるように設計される場合もある。P34はもう一度アクティブになり、このデバイスおよびP33を経由するプルアップパスが復活するため、フロート2は、pclkがlowに低下した後、再びhighになる。
【0038】
pclkがhighのとき、パルスフロップ30はトランスペアレントではないことにも留意されたい。これは結果として生じるP32と、P34の停止に起因するものである。したがって、pclkがhighのときDがlowに低下したとしても、結果としてP32が停止することでフロート1とVddの間のプルアップパス(P31とP32を経由する)が閉鎖されるため、転送回路34の状態は変わらない。
【0039】
この例においてその後pclkがlowに低下することで、ノードDに対するデータもまた、新たな入力データに起因してlowに低下する。Dがlowに低下する際、N31は停止し、P31は始動する。pclkがlowの場合、フロート1は、アクティブデバイスP31およびP32を介してhighになる。フロート1のhighは、N32のゲートで受信され、これもまた始動することで、フロート2をlowにする。フロート1のhighもまた、N34のゲートターミナルにおいて受信される。pclkが再度highに遷移する際、N34とN33が両方とも同時にアクティブになる。したがってノードSは(3)においてlowになる。ノードSバーは、ノードSがlowになることにより、これに対応してhighになる。
【0040】
(4)において点線で描かれるように、フロート1は、pclkがこの状態においてhighであるとき、いかなるデバイスによっても駆動されない。これはpclkがhighのとき、P32が停止することに起因するものであり、これによりフロート1とVdd間のプルアップパスを閉鎖する。N31もまた入力ノードDがlowであることによりイナクティブになるため、フロート1は駆動されない。lowからhighに遷移するほんの少し前のフロート1のhighは、N34をアクティブに保持し、これによりノードSをlowにするのに十分な時間にわたって(pclkのhigh相の全持続期間にわたってではないにせよ)このように静電容量式に保持されてよい。
【0041】
図3に戻ると、示される実施形態におけるパルスフロップ30は、スキャン要素39を含んでおり、これを利用してパルスフロップ30、ならびに他のスキャン要素に結合された他の回路のスキャンテストを可能にすることができる。スキャン要素39は、連続して結合されたスキャン要素のチェインの1つであってよい。さらにスキャン要素39を利用して、記憶要素36にテスト刺激データを入力し、記憶要素36からテスト結果データを取り込むことができる。さらにスキャンデータは、スキャンシフト作業においてスキャン要素39を介して移動させることができ、この作業において、テスト刺激データがロードされる、あるいはテスト結果データがアンロードされる。
【0042】
スキャン要素39は、スキャン入力(si)を含んでおり、これを介してスキャンシフト作業中にデータが受信される。スキャン入力データはインバータI1によって受信することができ、これはPMOSプルアップデバイスおよびNMOSプルダウンデバイスと共に実装することができ、これらのデバイスはそれぞれノードsiに結合したゲートターミナルを有する。テスト刺激データは、スキャン入力クロック(siclk)がアサートされた(およびこれによりデバイスN5およびN7がアクティブになった)とき、スキャン要素39によって記憶回路36にロードすることができる。
【0043】
スキャン入力データがhighの場合、インバータI1はlowを出力し、N6はイナクティブになる。ノードSバーは、スキャン入力データと、スキャン入力クロックが共にhighのとき、トランジスタN7(これは、スキャン入力クロックがhighのときアクティブである)およびインバータI1のNMOSデバイスを介してlowにすることができる。
【0044】
スキャン入力データがlowの場合、インバータI1はhighを出力する。インバータI1からのこのhighの出力がN6を始動し、その一方でN5は、スキャン入力クロックがhighのときhighである。それに応じてノードSはlowになる。ノードSバーはこのような状況において記憶回路36のP1、P2、N1およびN2を介してhighになる。
【0045】
スキャンクロック(soclk)がhighの時、ノード(so)に対してスキャン出力データを供給することができる。Sバーがスキャン出力クロックノードのhighと同時にhighであるならば、N8とN9は共にアクティブであり、スキャンデータ出力ノードはlowで駆動される(直列に結合されたI3およびI4を介して)。Sがスキャン入力クロックノードのhighと同時にhighであるならば、デバイスN10とN11は同時にアクティブであり、スキャンデータ出力ノードは、インバータI4を介してhighで駆動される。
【0046】
図5は、パルスフロップ回路の別の実施形態の概略図である。この実施形態では、記憶回路56と、スキャン要素59は、
図3に示されるそれぞれの相当する部分と同様に配置されているためさらに詳細には考察しないことに留意されたい。さらに示される実施形態におけるパルスフロップ50は、インバータI53を利用して出力回路を実装している。しかしながら、パルスフロップ30を参照して上記で考察したそれらの代替の実施形態など他の出力回路の実施形態も実行可能であり、企図されていることに留意されたい。
【0047】
図5に示される実施形態では、パルスフロップ50は、入力回路52を含んでおり、これは、入力ノードDバーを有しており、相補的なクロック信号clkバーを受信するようにさらに結合されている。相補的なクロック信号clkバーは、50%のデューティサイクル信号であってよく、これは、パルスフロップ50が実装されるICにおいて他の回路に配信されるクロック信号の逆相である。
【0048】
入力Dバーと、相補的なクロック信号clkバーは、示される実施形態ではゲーテッドインバータI51によって受信される。本明細書には明確に示していないが、ゲーテッドインバータI51は、少なくとも1つのPMOSプルアップデバイスと、少なくとも1つのNMOSプルダウンデバイスとを含むことができ、そのそれぞれが、Dバーに結合した各々のゲートターミナルを有し、1つまたは複数の補助のゲートデバイスは、clkバーに対する各々のゲートターミナルを有する。よってclkバーがhighのとき、インバータI51は、Dバーで受信した入力信号の論理レベルに従ってフロート1を駆動することができる。clkバーがlowのとき、I51は、例えDバーに変化が生じたとしても、フロート1において状態が変化するのを阻止することができる。
【0049】
示される実施形態における転送回路54は、インバータI52(これはPMOSプルアップデバイスと、NMOSプルダウンデバイスを含む標準的なインバータであってよい)と一緒にデバイスN51、N52およびN53を含んでいる。フロート1は、N51のゲートターミナルおよびI52の入力に結合され、I52の出力は、N53のゲートターミナルに結合される。N52のゲートターミナルは、pclkに結合され、これによりパルスクロックがhighのときアクティブになる。転送回路54は、ノードS(N51およびN52を経由する)またはノードSバー(N53およびN52を経由する)のためのプルダウンパスを形成することにより入力回路52によって受信された論理状態を転送することができる。
【0050】
パルスフロップ50の動作は、
図6のタイミング図によってさらに示されている。clkバーがhighのとき、Dバーがhighからlowに遷移することにより、フロート1がhighに遷移し、フロート2が、それに応答してlowに低下することになる。クロック信号(clk)がhighに遷移し、これによりclkバーがlowに低下する際、フロート1は、(1)における点線によって描かれるようにインバータI51によって駆動されなくなる。フロート1のhighは、それがもはや、パルスフロップ30のフロートノードに関して上記に記載したのと同様のやり方でI51によって駆動されなくなると、静電容量式に保持することができる。その後clkバーがlowに低下した後の時点で、pclkはhighに遷移する。pclkがlowからhighに遷移することにより、N51とN52が共にこの時同時にアクティブになり、これによりノードSは、(2)においてlowになり、Sバーはその結果としてhighで駆動される。フロート1は、clkバーが再びhighに遷移するまで浮遊し続ける。
【0051】
clkバーがhighに遷移した後の時点で、示される例ではDバーに対する入力信号がhighに遷移する。これに応じてフロート1はlowに低下し、フロート2は、I52によってhighで駆動される。clkバーがその後再びlowに低下する際、フロート1は再び、もはやいかなるデバイスにも駆動されなくなり、これにより(3)においてlowで浮遊する。しかしながらインバータI52の出力は、フロート1にある電圧が十分低いまま維持される限り、highのままであってよい。その後pclkがlowからhighに遷移することで、N52が始動することになる。これによりN53およびN52は同時にアクティブになり、Sバーは、(4)においてこれらのデバイスを介してlowになり、Sは、Sバーの状態の変化に応答してhighで駆動される。
【0052】
図7は、パルスフロップ回路の別の実施形態の概略図である。パルスフロップ70の転送回路74と、記憶回路76と、スキャン要素79は、
図3に示されるパルスフロップ30のそれぞれの相当する部分と同様のやり方で配置されており、よって同様に動作することができる。
【0053】
示される実施形態における入力回路72は、直列に結合された2つのゲーテッドインバータを含む。第1のこのようなインバータは、デバイスP71、N71およびN72を含む。第2のこのようなインバータは、P72、N73およびN74を含む。デバイスN71およびN73のゲートターミナルはそれぞれ、ノードclkバーに結合され、これによりその各々のインバータに関してプルダウンパスをイネーブルにしたり、閉鎖したりすることができる。次に
図8のタイミング図を参照して、パルスフロップ70の動作を説明する。
【0054】
図8に示されるタイミング図は、ノードDがhighの状態で始まり、その後lowに低下する。ノードclkバーは、この時点ではhighであり、よってN71およびN73は共にアクティブである。Dがlowに低下した結果として、P71が始動され、これによりフロート1がhighになる。フロート1のhighは、N74のゲートターミナルによって受信され、これが始動する。これによりフロート2はlowになる。
【0055】
clkバーがlowに低下する際、N71およびN73は共に停止する。フロート1は、P71を経由するプルアップパスが閉鎖されないためこの時点でhighのままである。しかしながらフロート2から接地へのプルダウンパスは、N73が停止する際閉鎖される。P72もまたこの時点でイナクティブになるため、フロート2は、いかなるデバイスによっても駆動されず、これにより(1)において点線で描かれるようにlowで浮遊する。pclkがその後上昇する際、ノードSは、(2)において同時にアクティブなデバイスN75およびN77を介してlowになる。ノードSバーはこの時点で、ノードSがlowになった結果としてhighになる。clkバーが再びhighに遷移した後、N73およびN74を経由するプルダウンパスが復活し、フロート2は再びlowで駆動される。
【0056】
示される例では、pclkがlowに低下し、clkバーが再びhighに遷移した後、Dはhighに遷移する。clkバーが再びlowに低下したとき、フロート1と接地の間のプルダウンパスは、N71が停止することによって閉鎖される。P71もまたイナクティブであるため(Dがhighであるため)、フロート1は、これによりこの時点でいかなるデバイスによっても駆動されず、これによりフロートは、(3)に示されるようにlowで浮遊する。フロート2は、フロート1における電圧がP72を確実にアクティブのままにするのに十分に低いままであるならば、highのままであってよい。したがってフロート2のhighは、N76を始動することができる。pclkがその後highに遷移する際、N77が始動する。これに応じてSバーは、(4)においてN76およびN77を介してlowになり、Sは、その結果としてhighで駆動される。
【0057】
集積回路に関するフロップ選択
図9から12は、ICにおける特定のフロップに関するフロップタイプを判定するための方法および装置を対象としている。ICの設計において、どのフロップ回路がマスタースレーブフリップフロップとして動作すべきか、どのフロップ回路がパルスフロップとして動作すべきかを知ることは重要である。様々な要因を利用してこのような判定を行なうことができる。このような要因には、フロップ回路全体の遅延時間、フロップ回路間の遅延時間、上記で考察したmin−time問題の影響および所望される動作周波数が含まれる。
【0058】
特定のフロップ回路の場合、設計工程の終わりまでに、最適なまたは正しいフロップタイプの選択を判定することは、不可能ではないにしても、困難な場合がある。このときには、恐らくICの平面図はおおかた決定されている。設計の工程の終わりにICの平面図を変更することは、相当の余分な費用がかかり、市場に出るまでに余分な時間がかかる、あるいはその両方が起こる可能性がある。したがってフロップタイプの選択は、ICの平面図に影響を与えないことが望ましい。
【0059】
図9および10は、ICの一実施形態において利用することができる異なるカテゴリのフロップタイプ101/102を示している。
図9では、IC100は、3つの異なるフロップタイプ、すなわちノンクリティカル、クリティカルおよび周波数制限装置を含むことができる。ノンクリティカルおよびクリティカルフロップ102はそれぞれ、マスターラッチ(’M’)とスレーブラッチ(’S’)を使用して実装することができる。周波数制限器フロップ101は、単独のスレーブラッチ(’S’)を使用して実装することができる。
【0060】
示される例におけるフロップタイプ101/102における各々のラッチは、クロック信号を受信するように結合されたクロック入力を含む。ラッチは、特定の状態の受信したクロック信号に応答してトランスペアレントであってよい。本明細書で使用されるように、フロップ回路に適用される用語「トランスペアレント」は、ラッチ回路が、各々のデータ入力で受信したデータを取り込み、これに従って各々の出力が応答する状態にある場合と定義することができる。例えばラッチは、その各々の入力において受信したデータが論理0から論理1に変化することで、その各々のデータ出力に対してこれに対応する変化(例えば別の論理0から論理1)を生じさせるものとみなすことができる。ラッチは、論理的に反転することができ、これにより入力において論理0から論理1へ遷移することによって、その場合その出力においてこれに対応する論理1から論理0への変化を生じさせることができることに留意されたい。ラッチは、その各々の入力で受信したデータの変化をその各々の出力に反映することができないような状態にあるとき、本明細書で定義されるようにトランスペアレントではない。よって非トランスペアレントラッチの入力における論理0から論理1への遷移は、そのラッチの出力に対してこれに対応する変化を生じさせることはない。非トランスペアレント状態はまた、保持状態と呼ばれる場合もある。
【0061】
この実施形態において、フロップタイプ102のマスターラッチの各々は、アクティブlow条件(例えばクロックがlow)に応答するクロック入力を含んでいる。したがって各々のマスターラッチは、クロックがlowのときトランスペアレントであるように構成されている。反対に本実施形態における各々のスレーブラッチ(フロップタイプ101および102における)は、その各々のクロック入力におけるクロック信号がhighのときトランスペアレントであるように構成されている。よってフロップタイプ102の場合、マスターおよびスレーブラッチは、逆のクロック信号状態に関してトランスペアレントである。
【0062】
図10は、フロップタイプの分類を示すのに使用される例を提供している。フロップタイプの分類は、IC100における特定のフロップの配置、ならびにこれもまたICに実装される他のフロップに対するその関連性に基づくことができる。
【0063】
ノンクリティカルフロップは、2つのフロップ間に、またはフロップが仲介要素である異なる状態の要素間にほとんどまたは全く論理遅延がないフロップであり得る。ノンクリティカルフロップを例示するのに本明細書で使用される例では、フロップ102は、レジスタファイル105と、ステートマシーン106の間に実装される。このような回路はそれぞれ、クロック信号pclkを受信するように結合され、その各々の動作はそれに対して同期される。フロップ102以外の論理回路は、レジスタファイル105とステートマシーン106の間に結合されない。したがってレジスタファイル105とフロップ102の間には論理遅延は存在せず、フロップ102とステートマシーン106間にも論理遅延は全く存在しない。
【0064】
レジスタファイル105とステートマシーン106間の信号の転送は、pclk信号に従ってより秩序立った様式で続行するように意図されることで、後者が正確に動作することを保証することができる。より詳細には、この特定の例において、レジスタファイル105とステートマシーン106の間の特定の信号状態の転送は、pclk信号の2つの別個のサイクルにわたって行なわれるように意図されている。したがってmin−time問題を回避することは、このような状況において重要な問題である。min−time問題を免れない場合、レースコンディションが生じる可能性があり、この場合信号状態は、そのトランスペアレンシーにおいてフロップ102を通過し、その結果レジスタファイル105とステートマシーン106間で信号を転送するのに、pclkの一方のサイクルのみが経過する。意図される際に先行するサイクルの信号状態を受信することにより、ステートマシーン106の誤作動が生じる場合があり、これにより、それが実装されているICを動作不能にする恐れがある。したがってノンクリティカルとして指定されたフロップ102は、従来式のマスタースレーブフリップフロップとして実装することができ、この場合マスターおよびスレーブラッチは同時にトランスペアレントにはならない。このようなマスタースレーブフリップフロップでは、第1のサイクルのクロック信号に従って受信した信号は、第2のサイクルのクロック信号まで同じものによって転送することができないためmin−time問題は関係ない。よって
図10に示されるノンクリティカルフロップの例に戻ると、レジスタファイル105とステートマシーン106間で信号を転送することを目的としたクロック信号の2つのサイクルの要件は、ノンクリティカルフロップ102をマスタースレーブフリップフロップとして実装することによって履行することができる。多用な従来式のマスタースレーブフリップフロップを使用してノンクリティカルフロップ102を実装することができる。
【0065】
周波数制限器として指定されたフロップの場合、min−time問題は特定の要因ではない。
図10に示される例では、2つのフロップ101は、論理回路109によって隔てられている。この例における論理回路109の論理ゲートは、AND、OR、NAND、NOR、XORおよびXNORゲートを含んでおり、このようなゲートタイプの一部の複数の実例を有する。したがって、図面の左にあるフロップ101の出力Qと、図面の右にあるフロップ101の入力Dの間には有意な大きさの論理遅延が存在する。
【0066】
周波数制限器として指定されたフロップ間の論理遅延の大きさに起因する最も重要な問題は、フロップ自体を経由する遅延であり得る。有意な大きさの論理遅延を受ける信号パスは、周波数を制限することができるため(例えば、その各々のICが動作することができるクロック周波数を制限することができる)、フロップ101自体を経由する遅延を最小限にすることが望ましい。したがって周波数制限器として分類されたフロップ101は、単独のステージを有するクロックトラッチ/パルスフロップとして実装することができる。フロップ101のためのこの特定の回路構成を選択することで、ICの動作周波数を上げるという目的によりいかなる切換え遅延も最小限にすることができる。
【0067】
このような回路の1つの可能な実装形態は、
図5のパルスフロップ50と同様のものであってよく、入力回路52は取り外されている。パルスフロップ50から入力回路52を取り外すことで、その入力からその出力への遅延を最小限にし、その一方で第2のクロック信号に対するその依存性を排除することができる。よってこのような回路は、pclkがhighのときはいつでもトランスペアレントであってよい。
【0068】
クリティカルフロップは、ノンクリティカルフロップと周波数制限器フロップの中間のいずれかに当たるフロップであってよい。ノンクリティカルフロップと、周波数制限器フロップは、比較的容易に識別することができ、これによりこのような状況において使用するフロップのタイプの判定も容易に行なうことができる。対照的に、この例におけるノンクリティカルフロップは、このような判定を容易に行なうことができないフロップである。
【0069】
示される例では、論理回路107は2つのゲートを含んでおり、これにより2つの論理ゲートは2つのフロップ102間のパスにおいて遅延する。このようなゲートがもたらす遅延の大きさによって、min−time問題が生じたり生じなかったりすることがある。min−time遅延が生じた場合、クリティカルとして特定されたフロップは、マスタースレーブフリップフロップとして実装することができる。min−time遅延が生じない場合、クリティカルフロップは、パルスフロップとして実装することができる。したがって本明細書で考察される方法論を使用して、どのクリティカルフロップをパルスフロップとして実装することができ、どのクリティカルフロップをマスタースレーブフリップフロップとして実装すべきかを判定することができる。
【0070】
図9に戻ると、各々のノンクリティカルフロップのマスターおよびスレーブラッチのそれぞれは、pclk信号を受信するように結合されることに留意されたい。先に述べたように、この特定の例におけるマスターラッチは、受信したクロック信号がlowのときトランスペアレントであり、受信したクロック信号がhighのときスレーブラッチはトランスペアレントである。したがってノンクリティカルフリップのマスターラッチとスレーブラッチを共にpclk信号を受信するように結合することによって、それぞれのトランスペアレンシー窓は、互いを除外することができる。
【0071】
クリティカルフロップに関して、そのマスターラッチは最初にクロック信号L−clkを受信するように結合され、この信号は、各々のスレーブラッチによって受信されるpclk信号とは異なる。L−clk信号は、第1のモードで動作する際、pclk信号と同様のクロック信号として供給することができる。したがって第1のモードで動作する際、クリティカルフロップは、マスタースレーブフリップフロップとして機能することができる。第2の動作モードにおいて、L−clk信号は阻止され、これによりクロックユニット92は、その対応する信号ラインにDC(直流電流)信号を伝送することができる。DC信号は、この特定の実装形態においてlowに保持することができ、これにより各々のクリティカルフロップのマスターラッチは、トランスペアレントに保持することができる。したがって第2の動作モードにおいてクリティカルフロップはパルスフロップとして動作することができる。
【0072】
IC100の少なくとも最初のバージョンに関して、クリティカルフロップは、第1および第2のモードの両方で動作することで、このようなフロップをその後マスタースレーブフリップフロップまたはパルスフロップとして実装すべきかを判定するのを助けることができる。クリティカルフロップはそれぞれ、個々の基準で評価することができる。これにより、フロップをグループ基準で評価しなければならない方法論とは対照的に、IC100の特定の性能および電力特性をきめ細かに最適化することが可能になる。マスタースレーブフリップフロップとして動作するフロップのみが、改訂する間に変更する必要があるように実装されている。さらにこのような変更は、単独の接続のみを変えることによって行なうことができる。
【0073】
その後のIC100の改訂においてマスタースレーブフリップフロップとして実装すべきクリティカルフロップに関して、そのそれぞれのマスターラッチは、pclkを受信するように再び接続することができる。これは、マスタースレーブフリップフロップとして実装すべき各々のクリティカルフロップのマスターラッチに関するビアコネクションをL−clk信号が伝送される信号ラインから、pclk信号が伝送される信号ラインに変えることによって達成することができる。ビアコネクションを変更することによって、IC100の金属層をその後の改訂に備えて変えることができる。
【0074】
その後のIC100の改訂においてパルスフロップとして実装されるべきクリティカルフロップに関して、接続は、元々実装されたように維持することができ、各々のマスターラッチは、L−clk信号が伝送される信号ラインに結合される。開発後の通常のIC100の動作において、動作は第2のモードにおいて行なうことができ、L−clk信号はDCレベル(例えばこの例ではlow)に保持される。よってパルスフロップとして実装される各々のクリティカルフロップのマスターラッチは、トランスペアレントのままであってよく、その一方で対応するスレーブラッチは、pclk信号に従って動作することができる。
【0075】
図3−8を参照して考察した回路の種々の実施形態を使用して、クリティカルフロップを実装することができる。例えばパルスフロップ30の一実施形態を使用してデバイスP32およびP34のゲートターミナルを、L−clk信号を受信するように最初に接続することによってクリティカルフロップを実装する場合もあり、その一方でデバイスN33はpclk信号を受信する。このような実施形態では、入力回路32は、マスターラッチとして作用することができ、その一方で転送回路34および記憶回路36は組み合わさってスレーブラッチとして作用する。クリティカルフロップとしてのパルスフロップ30の個々の実例の評価が、それがマスタースレーブフリップフロップとして実装されることが望ましいと判定したならば、P32およびP34の各々のゲートコネクションが、その後のIC100の改訂に備えて変更されることで(金属層を変えることによって)、pclk信号の信号ラインにそれらを結合することができる。このような場合、この回路は、min−time問題に対抗するように強固になるが、これは入力回路32は、転送回路34のスレーブラッチ要素であることよりも、pclkの逆相においてトランスペアレントであるためである。パルスフロップ30の個々の実例の評価が、それがパルスフロップとして動作することが望ましいと判定したならば、P32およびP34のゲートターミナルは、L−clk信号が伝送される信号ラインに対するそれぞれの最初の接続を維持することができる。先に述べたように、通常の動作において、L−clkに関する信号ラインは、通常の動作においてlowに保持することができる。したがってP32およびP34の各々のゲートターミナルが、L−clk信号ラインに結合されるならば、入力回路32は、L−clk信号ラインがlowに保持される際トランスペアレントのままであり、これにより
図3の回路をパルスフロップとして動作させることが可能になる。
【0076】
図5および
図7に示される回路の変形形態は、IC100の初期バージョンにおいてクリティカルフロップを実装するのに同様に利用することができる。一部のケースでは、クロック入力に関してインバータを設ける必要がある、あるいは一部のデバイスを異極(例えば特定のNMOSデバイスをPMOSデバイスで置き換える)のデバイスで置き換える必要がある。このような回路をマスターラッチに対するクロック接続に基づいて、マスタースレーブフリップフロップ動作と、パルスフロップ動作を容易に切り替えるクリティカルフロップとして実装することを可能にするこういった修正形態は、当業者に明らかである。
【0077】
IC100の初期バージョンにおいてクリティカルフロップをマスタースレーブフリップフロップとして動作させ、その一方でmin−time問題が論点にならないようにするためには、マスターおよびスレーブラッチのトランスペアレンシー窓が重ならないことが重要である。この特定の例において、これはL−clkもまたhighである場合に限ってpclkがhighになることを保証することによって達成することができる。クロックユニット92は、この種のクロック調整を確実にするように構成することができる。
【0078】
クロックユニット92の1つの可能な実施形態が
図11に示される。示される実施形態において、クロックユニット92は、単独のクロック信号clkを受信し、2つのクロック信号pclkおよびL−clkを生成するように結合される。clk信号は、示される実施形態におけるNANDゲートG2によって受信することができ、これはまたパルス幅調整器93の出力を受信するように結合される。この実施形態におけるNANDゲートG2の結果として生じる出力は、パルス幅調整器93の出力に基づいたデューティサイクルを有するパルスであってよい。NANDゲートG2の出力は、インバータI2によって論理的に反転させることができる。インバータI2の出力は、インバータI1によって受信することができ、その一方でI1の出力は、NORゲートG1に対する入力として供給することができる。NORゲートG1の出力は、この例ではL−clk信号として供給され、その一方でインバータI1の出力はまた、インバータI3に供給され、これはpclk信号を供給する。このような信号は共にインバータI1の出力に基づいて生成され、その両方が、ほぼ同一のゲート遅延を受けるため、それぞれの立ち上がりエッジと、立ち下がりエッジをこれにより実質的に合わせることができる。本明細書で考察される実施形態におけるマスターおよびスレーブラッチは、逆のクロック相(スレーブラッチのhigh、マスターラッチのlow)においてトランスペアレントであるため、そのそれぞれのトランスペアレンシー窓は重ならない。
【0079】
第1および第2のモードのうちの選択されたモードでの動作は、クロックユニット92によって制御することができる。示される実施形態において、クロックユニット92は、低電力モード信号lpmを受信するように結合される。より詳細には、lpm信号は、この特定の実施形態においてNORゲートG1の一方の入力によって受信することができる。第1のモードでの動作は、lpm信号がlowの場合に行なうことができる。lmp信号がlowの場合、NORゲートG2の出力は、インバータI2の出力に依存する可能性があり、これによりL−clkはパルスであり得る。L−clk信号がパルスの場合、
図9に示されるマスターおよびスレーブラッチに対して別個のクロック接続を有するクリティカルフロップは、第1のモードにおいてマスタースレーブフリップフロップとして動作することができる。lpm信号がhighの場合、NORゲートG2の出力は、lowに保持することができ、これによりL−clkはDClowレベルである。L−clk信号がDClowレベルの場合、
図9に示されるクロック接続を有するクリティカルフロップは、第2のモードでパルスフロップとして動作することができる。
【0080】
図9に示されるように、クロックユニット92によって生成されるクロック信号のパルス幅は、変動する場合がある。この特定の実施形態では、その変動は、2つのパルス幅の一方を伴うことができる。より詳細には、パルス幅は、その「長信号」に従って変動する可能性があり、この信号はパルス幅調整器93によって受信することができる。長信号がアサートされる(例えばこの実施形態では論理1)際、結果として生じるpclkおよびL−clkのパルス幅は、長信号がアサートされない(例えば論理0)場合と比べて大きくなる可能性がある。本明細書に示されるものより多数の変動値(例えば4)を有するクロックユニット92の実施形態も実現可能であり、企図されており、これによりその長い入力は、2つ以上の別々の信号を含むことができる。
【0081】
示される実施形態におけるパルス幅調整器93は、出力クロックパルスのパルス幅を変動させるのに使用することができるいかなるタイプの回路であってもよい。この例では、パルス幅調整器は、pclk信号を受信するように結合され、pclkおよび長信号の状態に基づいて、対応する出力信号(NANDゲートG2として供給される)を生成することができる。パルス幅調整器93は、フェイズロックトループ(PLL)、ディレイロックドループ(DLL)あるいは、pclkのパルス幅を変えることができるステートマシーンを使用して実装することができる。一般に、クロックユニット92は、2つの別々のクロック信号を出力するのに使用することができるいずれのタイプのクロック回路を使用しても実装することができ、これらのクロック信号は、
図9に示されるクリティカルフロップのマスターおよびスレーブラッチが同時にトランスペアレントにならないようなやり方で互いに調整される。
【0082】
この実施形態では、生成されるクロック信号は共に、50%未満のデューティサイクルを有するパルスクロック信号であることに留意されたい。しかしながらクロックユニットの実施形態において、クロック信号の少なくとも1つ(例えばL−clk)は、50%のデューティサイクルを有するクロックである。このような場合もなお、2つのクロック信号の調整は、
図9に示されるクリティカルフロップのマスターおよびスレーブラッチが同時にトランスペアレントにならず、マスタースレーブフリップフロップ動作を可能にするように構成することができる。
【0083】
図12は、ICの開発中の評価および改訂段階においてフロップ単位ベースでフロップ選択を行なう一実施形態のフロー図である。本明細書で使用される方法は、どのクリティカルフロップをマスタースレーブフリップフロップとして実装すべきか、およびどのクリティカルをパルスフロップとして実装すべきかを判定するのに1つまたは複数の反復作業を行なうことができる。
【0084】
方法900は、IC設計の初期のレイアウトを実施することにより開始する(ブロック905)。この初期のレイアウトは、ICの種々の組み合わせおよび/または順序論理回路を構成するデバイスの位置および相互接続を決定するステップを含むことができる。このレイアウトは、種々の設計ツールを使用して実施することができ、例えばGDS(グラフィカルデータベースシステム)IIファイルなどの初期バージョンのファイルを生成することができる。
【0085】
上記で考察したレイアウト工程はまた、どのフロップをICレイアウト内に配置すべきかを判定することで、2つ以上の機能ブロックの間にクロックトデータパスを形成するステップを含むことができる。どのフロップを実装すべきかを判定した後、フロップは、ノンクリティカル、クリティカルまたは周波数制限器として分類することができ(ブロック910)、
図9に示されるように接続されることで、初期のレイアウト工程を完了させることができる。
【0086】
ノンクリティカルフロップは、論理遅延がほとんどまたは全くないデータパスに配置され、これにより場合によってはそれらをmin−time問題に対して脆弱にすることがある。したがってノンクリティカルフロップは、マスタースレーブフリップフロップとして実装することができる。マスタースレーブフリップフロップは、そのそれぞれのマスターおよびスレーブラッチが同時にトランスペアレントにならないように設計することができる。各々のマスターおよびスレーブラッチが同時にトランスペアレントにならないため、このようなマスタースレーブフリップフロップをmin−time問題に対して強化させることができる。
【0087】
周波数制限器は、有意な論理遅延を有するデータパスに配置されるフロップであってよく、事実上min−time問題に対する脆弱性はない。このようなパスにおいては、フロップを経由する遅延が主な問題であり、省電力化は付加的な問題である。このようなフロップの遅延および電力消費を最小限にすることにより、それ以外でこのような事例においてマスタースレーブフリップフロップが使用される場合に起こり得るものと比べて、より高い動作周波数を可能にすることができる。したがって周波数制限器は、単一のステージを有するパルスフロップを使用して実装することができる。
【0088】
特定のフロップのノンクリティカルまたは周波数制限器としての分類は、比較的単純明快な工程であり得る。このような分類は、選択したフロップタイプが特定のデータパスに適切であること、およびフロップタイプをさらに変更する必要がないことをかなりの度合いで確信することにより行なうことができる。対照的に、クリティカルフロップは、特定のフロップがマスタースレーブフリップフロップまたはパルスフロップであるべきかどうかを判定することが単純明快な工程ではないフロップである。クリティカルフロップは、若干の論理遅延を有する(但し周波数制限器として分類されるものより少ない)データパスに実装されるが、min−time問題が論点であるかどうかを判定するステップは、さらなるテスト作業を必要とする場合がある。したがって上記で述べたように、クリティカルフロップとして指定されたフロップは、
図9に示されるように最初に接続され、各々のマスターおよびスレーブラッチは、異なるクロック信号を受信するように結合することができる。
【0089】
各々のフロップタイプの分類およびそのレイアウト工程が完了した後、ICの初期バージョンをシリコンに実装することができる(ブロック915)。シリコンは、本明細書で一例として使用されるが、他の材料を使用することもでき、これにはNMOSおよびPMOSデバイスを形成するのにシリコンをドープするのに使用される材料も含まれることに留意されたい。使用され得る他の材料には、グラフェン、ヒ化ガリウムまたはICを実装するのに適した任意の他の材料が含まれる。
【0090】
ICの初期バージョンが実装されると、それは確実に正確に動作するようにテストすることができる。このようなテスト作業は、第1および第2の動作モードにおいてICの初期バージョンを動作させるステップを含むことができる(ブロック920)。第1のモードでの動作は、上記で考察したようにpclkとL−clk信号を共に循環させることによって、クリティカルフロップをマスタースレーブフリップフロップとして動作させるステップを含むことができる。第2のモードでの動作は、L−クロック信号をDCレベル(例えばDClowレベル)に保持し、その一方でpclk信号を循環させるステップを含むことができる。第2の動作モードにおいて、各々のクリティカルフロップのマスターラッチは、トランスペアレントのままであり、これによりこのようなフロップをパルスフロップとして動作させることができる。このようなモードでの動作は、種々の周波数および種々のパルス幅で実施することでICを十分に働かせることができる。
【0091】
初期バージョンのテスト作業が終了した後、第1および第2のモードでの動作の結果を分析することができる(ブロック925)。このような分析は、第1および第2のモードいずれかにおけるクリティカルフロップに関連するいかなる誤作動の発生も特定するステップを含むことができる。分析は、個々のフロップ単位のベースで行なうことができる。第1および第2のモードにおける動作の分析に基づいて、ICのこの先のバージョンに備えて少なくとも一部のクリティカルフロップをマスタースレーブフリップフロップまたはパルスフロップのいずれかとして指定することができる(ブロック930)。例えばクリティカルフロップは、第2のモードで動作する際、全ての周波数においてmin−time問題に起因して誤作動が生じた場合、ICの次の改訂に備えてマスタースレーブフリップフロップとして指定することができる。対照的に、第2のモードのいずれの周波数において動作する際も誤作動が全く生じないクリティカルフロップは、ICのその後の改訂に備えてパルスフロップとして指定することができる。ICが第1のモードで動作する際、周波数目標を満たさないようにし、但しそれ以外では第2のモードにおいて誤作動を全く生じさせないクリティカルフロップは、ICの次の改訂に備えてパルスフロップとして指定することができる。
【0092】
ICの初期バージョンをテストした後、全てのクリティカルフロップをマスタースレーブフリップフロップまたはパルスフロップとして指定することができる訳ではないことに留意されたい。一部のケースでは、各々のクリティカルフロップに関するこのような判定は、何度か反復する必要があり、これは、一部のクリティカルフロップの誤作動が、それ以外では両方のモードにおいて意図したように動作する可能性のある他のクリティカルフロップにも誤作動を生じさせる可能性があるためである。したがって反復工程は、このような判定を行なうことで、各々の個々のフロップをクリティカルとして指定するのを助けることができる。
【0093】
少なくとも一部のクリティカルフロップをマスタースレーブフリップフロップとして指定した後、金属層を変質させてICの次の改訂に備えることができる(ブロック935)。金属層を変質させるステップは、チップを作製する際の製造装備によってGDSIIファイルを変化させるステップを含むことができる。金属層の変質は、クリティカルフロップのマスターラッチを、L−clkが伝送される信号ラインから切り離し、その後それをpclkが伝送される信号ラインに接続することができる。このビアの変化により、変化したクリティカルフロップのマスターおよびスレーブラッチがpclk信号を受信するようにし、マスターラッチは、スレーブラッチとして逆相に応答する。
【0094】
金属層の変更が完了した後、ICのその後の改訂をシリコンに実装することができる(ブロック940)。次の改訂は、上記で考察したように第1および第2のモードにおいて動作することができる(ブロック940)。ICの次の改訂を第1および第2のモードで作動させることで、金属層を変化させることによってなされた特定のクリティカルフロップに対する変更を検証することができ、誤作動または故障が生じる他のクリティカルフロップを突き止めるのを助け、一方の動作モードにおける性能目標を達成することができる。
【0095】
ブロック945に準拠した動作が完了すると、その結果を再度分析することができる(ブロック950)。動作中に取得した結果の分析を実施することができる。現行の改訂のICが十分に履行され、全ての性能目標および動作仕様を達成していると判定した場合、このときフロップ選択工程は完了することができる(ブロック955、はい)。その性能が何らかの理由により不十分である場合(ブロック955、いいえ)、あるいは一部のクリティカルフロップがまだ指定されない場合、このとき方法はブロック930に戻りもう一度反復工程を実施することができる。反復工程は、クリティカルフロップとして先に指定された全てのフロップに対して指定が行なわれるまで行なうことができる。先に述べたように、クリティカルフロップのマスタースレーブフリップフロップまたはパルスフロップとしての指定は、個別ベースで行なうことができ、これによりIC設計に関するフロップ選択において最大限の細分性を可能にすることができる。これにより、IC設計の性能およびその電力消費を最適化するのを助けることができる。
【0096】
本発明を特定の実施形態を参照して記載してきたが、これらの実施形態は例示であり、発明の範囲は、そのように限定されないことを理解されたい。記載される実施形態に対するいかなる変形、修正、追加および改良も可能である。このような変形、修正、追加および改良は、以下の特許請求の範囲において詳細に記載される本発明の範囲内にあってよい。