(57)【特許請求の範囲】
【請求項１】
タイミング違反が検出されない場合は、ある周期で、第一レベルと、該第一レベルとは異なる第二レベルとを交互に繰り返すクロック信号を提供するように構成されたクロックと、
前記クロック信号が前記第一レベルであるときは、第一信号を通過させ、前記クロック信号が前記第二レベルであるときは、該第一信号に対して閉じているように前記クロックに同期されるように構成された第一ラッチと、
前記第一ラッチを通過した前記第一信号に基づく第二信号を出力するように構成された第二組み合わせ論理と、
前記クロック信号が前記第二レベルであるときは、前記第二信号を通過させ、前記クロック信号が前記第一レベルであるときは、前記第二信号に対して閉じているように前記クロックに同期されるように構成された第二ラッチと、
前記クロック信号が前記第一レベルであるときの前記第一ラッチでの前記第一信号と、前記クロック信号が前記第二レベルであるときの前記第二ラッチでの前記第二信号との少なくとも一つのタイミング違反を検出するように構成された検出手段と、
前記タイミング違反が検出された場合は、前記周期に基づいて前記第一レベルと前記第二レベルとを交互に繰り返す時間と比較して遅延して前記クロック信号が前記第一レベルと前記第二レベルとを交互に繰り返すように、前記クロックを伸長するように構成された時間伸長手段と、を備える装置。
【請求項２】
前記第一信号を出力するように構成された第一組み合わせ論理をさらに備える、請求項1に記載の装置。
【請求項３】
前記第二組み合わせ論理は、第二出力で前記第二信号を出力するように構成され、前記第二ラッチは、該第二出力に直接的に接続された、請求項1に記載の装置。
【請求項４】
前記第一組み合わせ論理は、第一出力で前記第一信号を出力するように構成され、前記第一ラッチは前記第一出力に直接的に接続された、請求項2に記載の装置。
【請求項５】
前記クロックは、前記クロック信号と反転クロック信号を提供するように構成され、前記クロック信号が前記第一レベルであるときに、該反転クロック信号は、第一反転レベルであり、前記クロック信号が前記第二レベルであるときに、該反転クロック信号は、該第一反転レベルとは異なる第二反転レベルであり、
前記第一ラッチは、前記クロック信号が前記第一レベルであるか否かを検査し、前記クロック信号が前記第一レベルである場合は、前記第一信号を通過させるように構成され、前記第二ラッチは、前記反転クロック信号が前記第二反転レベルであるか否かを検査し、前記反転クロック信号が前記第二反転レベルである場合は、前記第二信号を通過させる、請求項1から請求項3のいずれか一項に記載の装置。
【請求項６】
前記第一レベルは、前記第二反転レベルと同じである、請求項5に記載の装置。
【請求項７】
前記第二レベルは、前記第一反転レベルと同じである、請求項5又は請求項6に記載の装置。
【請求項８】
前記クロックは、クロック出力から前記クロック信号を出力するように構成されており、
前記第一ラッチは、前記クロック出力に直接的に接続され、前記クロック信号が前記第一レベルであるか否かを検査し、前記クロック信号が前記第一レベルである場合は、前記第一信号を通過させるように構成されることと、
請求項5から請求項7のいずれか一項に従属する場合は、前記クロックが反転クロック出力から前記反転クロック信号を出力するように構成され、前記第二ラッチは該反転クロック出力に直接的に接続され、前記第二ラッチは、前記反転クロック信号が前記第二反転レベルであるか否かを検査し、前記反転クロック信号が前記第二反転レベルである場合は、前記第二信号を通過させるように構成され、
請求項1から請求項4のいずれか一項に従属し、請求項5から請求項7には従属しない場合は、前記第二ラッチは、前記クロック出力に直接的に接続され、前記第二ラッチは、前記クロック信号が前記第二レベルであるか否かを検査し、前記クロック信号が前記第二レベルである場合は、前記第二信号を通過させるように構成されること、との少なくとも一方を満たす、請求項1から請求項7のいずれか一項に記載の装置。
【請求項９】
少なくとも一つの奇数番号の組み合わせ論理と、前記第二組み合わせ論理を含む少なくとも一つの偶数番号の組み合わせ論理とからなり、該奇数番号は、第三以降の奇数を示し、該偶数番号は第二以降の偶数を示す、複数の組み合わせ論理と、
前記第一ラッチを含む奇数番号の複数のラッチと、前記第二ラッチを含む偶数番号の複数のラッチとからなる、複数のラッチとを、備え、
前記第一ラッチを除く前記奇数番号のラッチの各々は、前記少なくとも一つの奇数番号の組み合わせ論理の対応する一つから出力される信号を通過させるように構成され、前記第一ラッチは前記第一信号を通過させるように構成され、
前記偶数番号のラッチの各々は、前記少なくとも一つの偶数番号の組み合わせ論理の対応する一つから出力される信号を通過させるように構成され、
前記少なくとも一つの奇数番号の組み合わせ論理の各々は、直接的に先行する偶数番号のラッチを通過した信号に基づいた信号を出力するように構成され、
前記少なくとも一つの偶数番号の組み合わせ論理の各々は、直接的に先行する奇数番号のラッチを通過した信号に基づいた信号を出力するように構成され、
前記奇数番号のラッチの各々は、前記クロック信号が前記第一レベルであるときに、対応する奇数番号の組み合わせ論理から出力された信号を通過させるように構成され、
前記偶数番号のラッチの各々は、前記クロック信号が前記第二レベルであるときに、対応する偶数番号の組み合わせ論理から出力された信号を通過させるように構成された、
請求項1から請求項4のいずれか一項に記載の装置。
【請求項１０】
前記クロック信号が前記第一レベルであるときに、fA信号を通過させるように構成されたラッチＡと、
前記ラッチＡを通過した前記fA信号に基づくfB信号を出力するように構成された組み合わせ論理Ｂと、
前記クロック信号が前記第一レベルであるときに、前記fB信号を通過させるように構成されたラッチＢと、をさらに備え、
前記fA信号は、前記第二ラッチを通過した前記第二信号を含む、請求項1から請求項9のいずれか一項に記載の装置。
【請求項１１】
前記第一信号は、前記ラッチＢを通過した前記fB信号を含む、請求項10に記載の装置。
【請求項１２】
前記クロック信号が前記第二レベルであるときに、入力信号を通過させるように前記クロックに同期されるように構成された入力ラッチと、をさらに備え、
前記第一組み合わせ論理は、前記入力ラッチを通過した前記入力信号に基づいた前記第一信号を出力するように構成され、
前記検出手段は、前記クロック信号が前記第二レベルであるときに、前記第二ラッチでの前記第二信号のタイミング違反を検出するように構成され、
前記第一ラッチは、前記クロック信号が前記第一レベルであるときに、前記第一ラッチでの前記第一信号のタイミング違反を検出する手段に動作可能なように接続されておらず、
前記クロック信号が前記第二レベルから前記第一レベルになる場合で、第一サンプリング信号が前記第一組み合わせ論理に入力される場合に、前記第一ラッチで該第一サンプリング信号に基づく前記第一信号のタイミング違反が起きる確率が50%より大きく、
前記クロックが前記第一レベルから前記第二レベルになる場合で、第二サンプリング信号が前記第二組み合わせ論理に入力される場合に、前記第二組み合わせ論理が、前記クロックが前記第一レベルに変化する前に前記第二信号を提供する確率が50%より大きい、請求項2と、請求項2に従属する場合の請求項4から請求項11のいずれか一項に記載の装置。
【請求項１３】
前記第一ラッチは、前記クロックが前記第一レベルから前記第二レベルになるときに前記第一信号を記憶し、前記クロックが再び前記第一レベルになるまで前記第一信号を保持する、請求項1から請求項12のいずれか一項に記載の装置。
【請求項１４】
前記第二ラッチは、前記クロックが前記第二レベルから前記第一レベルになるときに前記第二信号を記憶し、前記クロックが再び前記第二レベルになるまで前記第二信号を保持する、請求項1から請求項13のいずれか一項に記載の装置。
【請求項１５】
クロック信号が第一レベルであるときに第一ラッチを通じて第一信号を通過させるステップと、
前記クロック信号が第二レベルであるときに前記第一信号に対して前記第一ラッチを閉じるステップと、
前記第一ラッチを通過した前記第一信号に基づく第二信号を出力するステップと、
前記クロック信号が前記第二レベルであるときに第二ラッチを通じて前記第二信号を通過させるステップと、
前記クロック信号が第一レベルであるときに前記第二信号に対して前記第二ラッチを閉じるステップと、
前記クロック信号が前記第一レベルであるときの前記第一ラッチでの前記第一信号と、前記クロック信号が前記第二レベルであるときの前記第二ラッチでの前記第二信号との少なくとも一つのタイミング違反を検出するステップと、
前記タイミング違反が検出された場合は、ある周期に基づいて前記第一レベルと前記第二レベルとを交互に繰り返す時間と比較して遅延して、前記クロック信号が前記第一レベルと前記第二レベルとを交互に繰り返すように、前記クロックを伸長するステップと、を備え、
前記タイミング違反が検出されない場合は、前記クロック信号が前記周期で前記第一レベルと、前記第一レベルとは異なる前記第二レベルとを交互に繰り返す、方法。
【請求項１６】
装置で実行されるときに、該装置が請求項15による方法を実行するように構成された命令セットを備える、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パイプライン化されたデジタル論理のタイミングに関する装置、方法及びコンピュータプログラムに関する。特に、本発明は、フォルスタイミング違反（false  timing  violation）を回避するとともに、タイミング違反を低減する機構を提供する。
【背景技術】
【０００２】
現代のデジタル論理システムにおいては、消費電力を軽減しつつ動作周波数を上げることが試みられている。そのようなシステムにおいては、例えば、(局所的な)電圧降下、温度変化、ゲート長のばらつき、トランジスタ、その他の半導体要素のドープ濃度のばらつき、クロスカップリングノイズ等に起因するタイミング違反(タイミングエラーを含む)が起こり得る。デジタル論理回路の異なる部品についての世界やローカルな工場での異なる製造プロセスがタイミング違反につながることもある。遅すぎる組み合わせ論理に起因するタイミング違反を回避するために、典型的にはタイミングマージンが適用される。
【０００３】
本願においては、タイミング違反としては、次の挙動が理解される(図1を参照)。
【０００４】
デジタル論理(論理回路とも呼ばれる)は、図1におけるfA、fB等の一つ以上の組み合わせ論理を備える。組み合わせ論理の演算結果は、レジスタA、レジスタB等の(1ビット)レジスタに記憶される。レジスタは、ラッチ、フリップフロップ又はこれらの混合であってもよい。それらは、クロックCLKにより動作する(クロックに同期される、又はゲート制御される)。図において、破線矢印はクロッキングを示す。フリップフロップは、クロックの立ち上がり又は立ち下がりにおいて、データ入力に対して透過である。ラッチは、クロックが所定の状態(ハイ又はロー)である場合に、データ入力に対して透過である。クロックがこの状態から他の状態に遷移したときは、クロックが再びその所定の状態に遷移するまでは、実際に入力されたデータがラッチに記憶、保持される(maintained)。以下、ラッチについて考える。
【０００５】
デジタル論理が正しく動作する場合は、組み合わせ論理fAは入力信号Xを扱って、fA(X)を得る。ラッチAがクロックの第一周期で（ハイなどのクロックが、あるレベルにあるとき）入力データに対して透過である場合は、ラッチAは、クロックがそのレベルである間は、fA(X)を通過させ、クロックが反対のレベル（例えば、ロー）に遷移したときは、fA(X)を記憶する。後続の、例えば、図1に示されるfB、ラッチB等の組み合わせ論理やラッチがある場合は、組み合わせ論理fBがfA(X)を扱って、fB(fA(X))を得る。この結果は、ラッチBがデータ入力に対して透過である場合（クロックが再びそのレベルにある場合）、クロックの第二周期でラッチBに記憶される。
【０００６】
しかし、ラッチAが入力データに対して透過となる前に、組み合わせ論理Aが演算(operation)を完了しなかった場合、ラッチAは、クロックが逆のレベルに遷移したときに、fA(X)とは異なる可能性がある値を記憶するだろう。これはタイミング違反と呼ばれる。レジスタAの出力がfA(X)とは異なる場合、タイミング違反はタイミングエラーとなるだろう。従って、後続の組み合わせ論理も「間違った」入力を扱うことになるので、fB(fA(X))を得ない。
【０００７】
タイミング違反はTEDにより検出することができる。例えば、次のタイミング違反検出方法が知られている。
【０００８】
上記実施例のラッチA、ラッチB等のメインラッチに並列で、メインラッチA（又はB）に対して固定時間分遅延してクロックに同期される遅いラッチA’(又はB’)が実行される。組み合わせ論理fA(又はfB)の出力がラッチA’(又はB’)にも供給される。これら二つのラッチAとA’(又はBとB’)の出力が、ラッチA’(又はB’)へのデータ入力時間の後に比較される。それらの出力が同じである場合は、タイミング違反はない。しかし、（組み合わせ回路fA又はfBがラッチA又はラッチBに対して遅すぎたため）固定時間分の遅延の間に入力が変化する場合、二つのラッチAとA’（又はBとB’）の出力は互いに異なる。つまり、出力の比較により、タイミング違反が起きたことがわかる。この場合、固定時間を超えたタイミング違反が起きてはならない。
【０００９】
タイミングエラーを検出するのに用いることのできる他に知られているエラー検出方法としては、例えば次のようである。
―  N+M冗長化(TEDがラッチレベルN+Mであるという点には議論があるかもしれない)
―  情報冗長化技術(HammingコードやHisaoコード)
―  アルゴリズム技術（パリティ検査、巡回冗長検査）
【００１０】
タイミング違反が起きた場合、タイミング違反によりレジスタによっては破損データを有している可能性があるため、例えば、再実行する機構により訂正してもよい。
【００１１】
遅い組み合わせ論理についてのタイミング違反を解消する他の方法としては、タイムボローイング（TB）がある。タイムボローイングでは、例えば、K.  Chae,  C.H.  Lee,  and  S.  Mukhopadhyay,  “Timing  Error  prevention  using  elastic  clocking”,  IEEE,  978-1-4244-9021-9  (2011)にあるように、ある組み合わせ論理（例えば、fA）で検出されたタイミング違反の周期は、後続の組み合わせ論理(例えば、fB)用の後続の周期から時間を借りてもよい。組み合わせ論理fBが十分に速い場合、入力の遅延が補償され、タイミング違反が解消される。
【００１２】
しかし、組み合わせ論理fBが十分に速いとはいえない場合、タイミング違反(信号の遅延時間)が伝搬して、他のタイミング違反が次の状態で起きる。タイミング違反は、後続の周期で累積していき、ついには、破壊的なエラーにつながる。そのような蓄積を低減するべく、Chaeらは、クロック伸長についても記載している。クロック伸長によれば、タイミング違反が検出された場合、それをタイムボローイングによって軽減する。タイムボローイングに加えて、クロックを遅延させる。例えば、時間が借りられたクロック周期が、π/2、偶数π（even  π）等の正の位相分(by  a  positive  phase  shift)、伸長される。つまり、時間が借りられたクロック周期は、伸長されたクロックによって時間を取り戻す。借りることと伸長することが互いに実質的に釣り合っている場合、累積は回避される。時間伸長は、実行時間に影響する遅い論理として考えられる。
【００１３】
この状況において各周期でタイミング違反が検出される場合、例えば、各周期がπ/2位相分(25%の遅延)伸長されると、システム全体の動作周波数が、Tをクロック周期とすると、1/Tから1/(T+T/4)、つまり、20%減少する。各周期がπ位相分(50%の遅延)伸長される場合、システム全体の動作周波数は、1/Tから1/(T+T/2)、つまり、33%減少する。
【００１４】
P.N.  Whatmough,  S.  Das,  and  D.M.  Bullは、”A  low  power  1GHz  Razor  FIR  Accelerator  with  time-borrow  tracking  pipeline  and  approximate  error  correction  in  65nm  CMOS”,  IEEE  International  Solid-State  Circuits  Conference,  pages  428-430  (2013)において、TB追跡について記載している。TB追跡では、タイミング違反が後続のクロック周期において後続の組み合わせ論理で上手く解消されるか否かが追跡される。タイミング違反が後続のステップで解消されない場合には、電圧供給がこれに応じてなされる。Whatmough  らによる回路は、近似エラー訂正に基づく補間を行う。つまり、継続信号が必要とされる。
【００１５】
いずれにしても、タイミング違反の訂正がシステムを遅くし、追加的な論理(電力消費や、半導体領域)が必要である。したがって、タイミング違反そのものが防止されるのが好ましい。
【００１６】
一方、組み合わせ論理fBが速すぎる場合、他のタイミング違反がラッチBのところで起こり得る。これは、しばしば「フォルスタイミング違反」とも呼ばれる。これを図1の論理回路ついて図2に示す。
【００１７】
一行目は、ハイとローとを交互に繰り返すクロック信号CLKを示す。CLKがハイの時に、ラッチが開いていると想定する。組み合わせ論理fAは適切に演算し、つまり、クロックCLKがローのとき、言い換えれば、ラッチAが閉じているときに、新たな状態が適用される（図2の二行目）。従って、CLKがハイになったときにラッチAはfA(X)を通過させ、CLKが再びローになるとラッチAはfA(X)を記憶する（T21,図2の三行目）。
【００１８】
図2の四行目においては、適切に演算する組み合わせ論理fBが示されている。つまり、上記fAついて説明したように、CLKがローのときに組み合わせ論理fBは自らの演算を完了する。fAの出力が変化していれば、この時間はT23とは同じでも異なっていてもよい。従って、CLKが再びハイになるとラッチBはfB(fA(X))を記憶する（T24,図2の五行目）。
【００１９】
組み合わせ論理fBが速すぎる場合、つまり、ラッチBがデータ入力に対して開いている、クロックがまだハイの状態の間に組み合わせ論理fBがfA(X)についての自らの演算を完了した場合を想定する（T22,図2の六行目）。つまり、ラッチBは開いており、組み合わせ論理fBが自らの演算を完了するとすぐにラッチBはfB(fA(X))を通過させてしまう(T22,  クロックの第一半周期の間(during  the  first  half-cycle  of  the  clock))(図2の七行目)。従って、CLKが第一周期の最後でローに遷移する場合に、X-1をその前の周期の入力信号として、ラッチBは第一信号でfB(fA(X-1))を記憶（そして出力）しなければならないにも関わらず、ラッチBはfB(fA(X))を記憶する。
【００２０】
図2から分かるように、ラッチBの中身は、速すぎる組み合わせ論理fBが完了する時間（T22）と、CLKが第二周期で高くなる時間（T24）との間において、適切な演算を行った場合（図2の五行目）と速すぎる演算を行った場合（図2の七行目）との二つの場合で異なる。これは、タイミングエラーとなる。
【００２１】
フォルスタイミング違反は、上述したようにタイミング違反用の遅延ラッチでは検出できない。従って、フォルスタイミング違反が起きないように論理回路は設計すべきである。しかし、遷移検出が透過段階の間のラッチの入力の変化を検出するのに用いられてもよい。フォルスタイミング違反は、バッファを用いることで回避することもできる。図3に例示するように、バッファ31が組み合わせ論理fBとラッチBとの間に設けられる。図3の下方部分に、対応する信号が示される。
【００２２】
組み合わせ論理fAが適切に演算する、つまり、ラッチAへの入力（図3のD1）は、ラッチAが閉じている（T31）状態で、クロックCLKのロー位相のときに変化する。一方、組み合わせ論理fBは速すぎる。従って、出力D2において、ラッチAとBまだ開いている間にfB(fA(X))が登場する(CLK:ハイ,  T32)。バッファ31は組み合わせ論理fBの出力D2と、ラッチBの入力D2’との間に挿入される。バッファ31が適切に設けられていれば(dimensioned)、時間ラッチBが閉じている間にD2’がfB(fA(X))になる（CLK:ロー,  T33,  図3の下方部分の三行目を参照）。Q1とQ2はラッチAとBの出力をそれぞれ示す。
【００２３】
図4は、フォルスタイミング違反を回避する他の例である。図3のように、組み合わせ論理fBとラッチBとの間に挿入されるバッファの代わりに、クロックバッファ41が、ラッチBのCLK信号を遅らせるのに挿入される。このため、図4の下部に示されるように、組み合わせ論理fBがT41において自らの演算を完了したときに、ラッチBは閉じている。従って、ラッチBは、CLKが再びハイの時にのみfBを記憶する。
【００２４】
実施例によっては、図3のバッファ31と図4のクロックバッファ41の両方がある。
【発明の概要】
【００２５】
本願の目的は、従来技術を改善することである。特に、フォルスタイミング違反（false  timing  violations）を回避するとともに、タイミング違反を軽減することを目的とする。
【００２６】
本発明の第一観点によると、タイミング違反が検出されない場合は、ある周期で第一レベルと第二レベルとを交互に繰り返すクロック信号を提供するように構成されたクロックと、前記クロック信号が前記第一レベルであるときは、第一信号を通過させるようにクロックされるように構成された第一ラッチと、前記第一ラッチを通過した前記第一信号に基づく第二信号を出力するように構成された第二組み合わせ論理と、前記クロック信号が前記第二レべルであるときは、前記第二信号を通過させるように前記クロックに同期されるように構成された第二ラッチと、前記クロック信号が前記第一レベルであるときの前記第一ラッチでの前記第一信号と、前記クロック信号が前記第二レベルであるときの前記第二ラッチでの前記第二信号との少なくとも一つのタイミング違反を検出するように構成された検出手段と、前記タイミング違反が検出された場合は、前記周期に基づいて前記第一レベルと前記第二レベルとを交互に繰り返す時間と比較して遅延して前記クロック信号が前記第一レベルと前記第二レベルとを交互に繰り返すように、前記クロックを伸長するように構成された時間伸長手段と、を備える装置である。
【００２７】
前記検出手段は、検出回路でもよい。前記時間伸長手段は、時間伸長回路でもよい。
【００２８】
前記第一観点の詳細は、添付の装置に関する請求項に規定されている。
【００２９】
本発明の第二観点によると、クロック信号が第一レベルであるときに第一ラッチを通じて第一信号を通過させるステップと、前記第一ラッチを通過した前記第一信号に基づく第二信号を出力するステップと、前記クロック信号が第二レベルであるときに第二ラッチを通じて前記第二信号を通過させるステップと、前記クロック信号が前記第一レベルであるときの前記第一ラッチでの前記第一信号と、前記クロック信号が前記第二レベルであるときの前記第二ラッチでの前記第二信号との少なくとも一つのタイミング違反を検出するステップと、前記タイミング違反が検出された場合は、ある周期に基づいて前記第一レベルと前記第二レベルとを交互に繰り返す時間と比較して遅延した時間で前記クロック信号が前記第一レべルと前記第二レベルとを交互に繰り返すように、前記クロックを伸長するステップと、を備え、前記タイミング違反が検出されない場合は、前記クロック信号が前記周期で前記第一レべルと該第一レベルとは異なる前記第二レベルとを交互に繰り返す、方法である。
【００３０】
前記第二観点の方法は、タイミング違反を防止する方法でもよい。
【００３１】
本発明の第三観点によると、装置で実行されるときに、該装置が前記第二観点による方法を実行するように構成された命令セットを備える、コンピュータプログラムである。当該コンピュータプログラムは、コンピュータ読み取り可能な媒体として具現化されてもよい。
【００３２】
本願のいくつかの実施形態によれば、次の利点の少なくとも一つが得られる。
―  フォルスタイミング違反の回避
―  システムパフォーマンスの改善
―  バッファの縮小又は除去
―  半導体領域の節約
―  エネルギー効率の向上
―  タイミング違反の効率的な低減
【００３３】
代替性を排除するように明確に述べられていない限り、参照される各観点のいずれか又はこれらの組み合わせに対して修正が可能であると理解される。
【図面の簡単な説明】
【００３４】
さらなる詳細、特徴、目的及び利点は、添付の図面と共に本願の好ましい次の実施形態から、明らかとなる。
【００３５】
【図１】論理回路例の概略を示す。
【図２】図1の論理回路のタイミング図を示す。
【図３】タイミング違反を低減する従来の論理回路(上図)と、その論理回路のタイミング図(下図)を示す。
【図４】フォルスタイミング違反を低減する従来の論理回路(上図)と、その論理回路のタイミング図(下図)を示す。
【図５】本発明のいくつかの実施形態で用いられるクロックのタイミング図を示す。
【図６Ａ】本発明の一実施形態による装置を示す。
【図６Ｂ】本発明の一実施形態による装置を示す。
【図７Ａ】本発明の一実施形態による装置を示す。
【図７Ｂ】本発明の一実施形態による装置を示す。
【図８】本発明の一実施形態による方法を示す。
【図９】本発明の一実施形態によるシステムを示す。
【図１０】本発明の一実施形態によるシステムを示す。
【発明を実施するための形態】
【００３６】
以下、本願の実施形態を添付の図面を参照しつつ詳細に説明する。実施形態の特徴は、組み合わせられないと記載されない限り互いに自由に組み合わせることができる。なお、実施形態の記載は、例示的に与えられるだけであり、本発明を開示された詳細に限定するものとして理解されるようには全くもって意図していないことが、明示的に理解される。
【００３７】
さらに、本装置は、対応する本方法を実行するように構成されると理解されるが、いくつかの実施形態によっては、装置のみか方法のみが記載される。
【００３８】
図6Aは、本発明の一実施形態を示す。本実施形態によれば、複数の組み合わせ論理F1,  F2,  …が直列的に配される。ここで、二つの連続する組み合わせ論理の間には、ラッチLL1,  LL2,  …が配される。各組み合わせ論理Fn(n=1,  2,  …)は自らの演算結果（the  results  of  its  operation）を対応するラッチLLn(n=1,  2,  …)に記憶する。後続の組み合わせ論理は、先行する組み合わせ論理の出力と自らの入力との間に配されたラッチに記憶された結果について演算する。
【００３９】
いくつかの実施形態においては、いずれの組み合わせ論理Fnと、その組み合わせ論理Fnの出力を記憶し、対応するラッチLLnとの間にも、バッファは配されない。つまり、各組み合わせ論理は、対応するラッチに直接的に接続されている。しかし、他の実施形態においては、少なくとも一つの組み合わせ論理と対応するラッチとの間にバッファが配されてもよい。
【００４０】
ラッチは、クロックに同期される（ゲート制御される）。各ラッチは、対応するクロックが所定の状態のとき（例えば、ハイ）は、開いている。奇数番号のラッチは、CLK0によってクロック同期される。偶数番号のラッチは、CLK1によってクロック同期される。このため、ゲーティングが反転したタイミングのラッチが交互に配される。
【００４１】
ラッチLL1からLL4の少なくとも一つは、タイミングエラー検出手段TEDに接続されている。タイミングエラー検出手段TEDが接続されたラッチでタイミングエラーを検出する場合は、少なくとも後続の半周期についてクロックCLK0とCLK1を遅くする（クロック伸長）。それ以外の場合は、クロックは伸長されなくてよい。
【００４２】
本発明の一実施形態で用いられるCLK0とCLK1の信号は、図5に示される。CLK0は、CLK1に対して反転している。つまり、CLK0がハイのときはいつでも、CLK1がローであるし、CLK0がローのときはいつでも、CLK1がハイである。ハイ及び/又はローの持続時間は、タイミングエラーが検出されたか否かに応じてよい。
【００４３】
典型的には、クロックは、クロック信号と反転クロック信号を提供する。これにより、CLK0とCLK1の両方が同じクロックから提供されてもよい。あるいは、一方のクロック信号（例えば、CLK1）を他方のクロック信号（例えば、CLK0）を反転して生成してもよい。適切に同期化されるのであれば、クロック信号CLK0とCLK1は異なる複数のクロックによって提供されてもよい。
【００４４】
図6Bは、別の実施形態を示す。ここで、すべてのラッチは、同じクロック信号（例えば、CLK0）によりクロック同期される。ただし、CLK0が一方の状態（例えば、ハイ）のときに、奇数番号のラッチは開いており、CLK0が他方の状態（例えば、ロー）のときに、偶数番号のラッチは開いている。つまり、クロックによるゲーティングのタイミングも、交互に反転している。それ以外の点ついては、図6Bの論理回路は図6Aのものと対応する。特に、タイミングエラーが検出される場合にクロックが伸長されるように、少なくとも一つのラッチがタイミング検出手段に接続される。このような実施形態においては、反転クロック信号用の配線は必要とされない。しかし、奇数番号のラッチは、偶数番号のラッチとは異なるように構成される。
【００４５】
図6Aと6Bのいずれの実施形態によっても、偶数番号のラッチが閉じているときは、奇数番号のラッチが透過(transparent)であり、偶数番号のラッチが透過であるときは、奇数番号のラッチが閉じている。つまり、以下から分かるように、フォルスタイミング違反が起こらないようにすることができる。
【００４６】
組み合わせ論理F2が速すぎる、つまり、LL1が開いている間にF2が自らの結果を提供してしまう場合を想定する。その際、LL2は閉じている。このため、組み合わせ論理F3は、前の周期でのF2の結果を扱う。その後、LL1が閉じられて、組み合わせ論理F1の結果を記憶し、LL2が開き、F2の結果をF3の入力として送信することになる。
【００４７】
図6Aと6Bの実施形態においては、遅い従来の組み合わせ論理に起因したラッチでのタイミング違反がTEDにより検出され、時間伸長によってこれが低減される。また、タイミング違反の検出するとき、又はタイミング違反の平均的な頻度がある範囲外にあるときは、局所的温度、供給電圧、バイアス電圧、クロック周波数、電流等の他のパラメータが適合されてもよい。例えば、TBと、TEDと、時間伸長（タイミングエラー防止とも言われる）との組み合わせが本願の実施形態に適用されてもよい。
【００４８】
本発明の実施形態の文脈では、対応する（後続の）ラッチが開かれる（透過になる）前に自らの結果を提供しない場合は、その組み合わせ論理は遅いという。（上記記載されたように）遅延ラッチによるTEDが適用される場合は、πよりも小さい位相遅延で、メインラッチに対応するようにラッチはクロックに同期される必要がある。
【００４９】
本発明の実施形態は、好ましくは、タイムボローイングに関連して用いられるとよい。組み合わせ論理F1がわずかに遅すぎる場合、つまり、LL1が閉じている間に自らの結果を提供せず、LL1が透過になってから、これを提供する場合を想定しよう。一方、組み合わせ論理F2は、前の段落で述べたように速すぎるので、F1とF2に必要な合計時間が、正しいF3の入力（つまり、LL2の出力）用には十分短い可能性がある。
【００５０】
本発明の一実施形態による装置を図7Aに示す。図8は、本発明の実施形態による方法を示す。図7Aによる装置は、図8の方法を実行してもよいが、この方法に限られない。図8の方法は、図7Aの装置によって実行されてもよいが、この装置によって実行されることに限られない。
【００５１】
本装置は、クロック71と、ラッチ72と、組み合わせ論理73と、反転クロック74と、ラッチ75と、TED手段76と、を備える。ラッチ72と75は同じ種類である（つまり、対応するクロックが一方の状態（例えば、ハイ）の場合はいずれも透過であり、対応するクロックが他方の状態（例えば、ロー）である場合は閉じている）。
【００５２】
ラッチ72は、クロック71によってクロック同期され、ラッチ75は、クロック74によってクロック同期される。各クロックは、2つの状態（ハイの状態とローの状態）を交互に繰り返す。ラッチ72に関するクロック71のタイミングは、ラッチ75に関する反転クロック74のタイミングに反転している。つまり、ラッチ72が開いてデータを通過させる場合、ラッチ75は閉じており、ラッチ72が閉じている場合は、ラッチ75は開いてデータを通過させる。例えば、クロック71とクロック74は、ラッチ72と75が同じ種類の場合、同じクロックのクロック信号出力と反転クロック信号出力に対応してよい。
【００５３】
ラッチ72では、タイミング違反がおきた場合にクロックTED手段76によってタイミング違反が検出される。例えば、TED手段76は、背景技術の項目で述べたように、ラッチ72に並行な遅いラッチ（つまり、ラッチ72に対して固定時間分遅延してクロックに同期される）と、スローラッチとラッチ72との中身を比較する比較手段を有してよい。その場合、TED手段76は、π、π/2等の位相分、クロック71と74を伸長する。つまり、ラッチ72に結果を入力する最初の組み合わせ論理のタイミング違反は、次の組み合わせ論理73でレべルオフ（leveled  off）される。
【００５４】
図7Bは、本発明の一実施形態による他の装置を示す。図7Bによる装置は、図8の方法を実行してもよいが、この方法に限られない。図8の方法は、図7Bにより実行されてもよいが、この装置によって実行されることに限られない。
【００５５】
本装置は、クロック71と、ラッチ72と、組み合わせ論理73と、ラッチ78と、TED手段76と、を備える。
【００５６】
図7Bの装置は、図7Aの装置と対応するが、ラッチ72と78のいずれもが同じクロック71によりクロック同期される点で異なる。このため、TED手段76は、ラッチ72でタイミング違反を検出した場合には、一方のクロックのみを伸長する。ラッチ72と78とは互いに反転した種類である。つまり、クロック71が一方の状態（例えば、ハイ）の場合は、ラッチ72は透過で、ラッチ78は閉じており、クロック71が他方の状態（例えば、ロー）の場合は、ラッチ72は閉じており、ラッチ78は透過である。
【００５７】
図7Aと図7Bの二つの実施形態の動作は、互いに対応している。このため、図8に関してもまとめて記載する。
【００５８】
ラッチ72は、クロック71が所定のレベル（例えば、ハイ）である場合は、入力信号(第一信号、例えば、fA(X))を通過させ、クロックが他方のレベル（例えば、ロー）に遷移した場合、入力信号を記憶する(S80)。その際、ラッチ75（78）は、信号入力に対して閉じている。
【００５９】
タイミング違反がラッチ72で検出された場合は（S81:YES）、少なくとも次の半周期について、例えば、正位相(positive  phase  shift)によってクロックは伸長される(S82)。そうでない場合は(S81:NO)、クロックは伸長されなくてもよい。
【００６０】
組み合わせ論理73はラッチ72から提供された信号を扱い(ラッチ72を通過した或いは、ラッチ72に記憶された)、出力信号（第二信号、例えば、fB(fA(X)）を提供する(S83)。好ましくは、組み合わせ論理73はラッチ75(78)が開かれる前に演算を完了するとよい。そうでない場合は、いくつかの実施形態によっては、タイミング違反が検出される。
【００６１】
組み合わせ論理73は、ANDゲート、NANDゲート、ORゲート、NORゲート、論理インバータ、加算器、半加算器等の任意の種類の論理ユニットを有してよい。組み合わせ論理は一つ以上の入力端子と、一つ以上の出力端子とを有してよい。それら出力端子の一つは、ラッチ75(78)に接続される。
【００６２】
クロック74が対応する状態にあることにより、ラッチ75(78)が信号入力に対して開かれているときは、ラッチ75(78)は、組み合わせ論理の出力信号を通過させ（S84）、クロック74が他方の状態に遷移したときは、その出力信号を記憶する。この際、ラッチ72は信号入力に対して閉じている。
【００６３】
いくつかの実施形態によっては、TED手段76に代えて、或いは追加して、タイミング違反を検出し、タイミング違反が検出された場合にクロックを伸長するTED手段がラッチ75(78)に適用されてもよい。
【００６４】
実施例と実施形態では、各ゲート信号がハイかローであるときにラッチ開いているという想定で記載されたが、いくつかの実施形態によっては、ハイとローの信号は置き換えてもよい。
【００６５】
本発明の一実施形態によれば、組み合わせ論理が、十分に速い組み合わせ論理とパイプラインで組み合わせるには遅すぎる場合は、第一案として、遅い組み合わせ論理が十分に速くなるようにクロックを遅くすることが考えられる。しかし、これは論理パイプライン全体を遅くしてしまう。
【００６６】
第二案として、遅い組み合わせ論理を細分化して、細分化したものの間にゲーテッドラッチを配してもよい。これは、”再タイミング”として知られる。例えば、組み合わせ論理を半分に分けた場合は、理論的には、各半分になった組み合わせ論理に必要な時間は、遅い組み合わせ論理全体に必要な時間の半分になる。
【００６７】
第三案として、何らかの理由で、再タイミングが利用できない或いは、望まれない場合は、次のことを考えてもよい。
【００６８】
つまり、本発明の実施形態による論理回路を、論理パイプラインを構築するより大きな論理回路に組み込んでもよい。ここでは、論理パイプラインの少なくとも一部が、その部分のすべてのラッチが同時に開いているように従来方式で動作し、本発明の実施形態を構成する部分では、ゲーティングのタイミングが、後続のラッチに対して交互に起こるようになっている。
【００６９】
図9に示された一実施形態は、同じ種類のラッチと、互いに反転したクロックCLK0とCLK1とを、備える（上述したように、対応する実施形態は、互いに反転した種類のラッチと、単一のクロックを備えてよい）。
【００７０】
組み合わせ論理F92は、ゲーティングが同じタイミングのラッチLL91(F92の入力)とラッチLL92(F92の出力)との間に組み込まれている。つまり、LL91と、F92と、LL92とは、論理パイプラインの従来部分である。
【００７１】
一方、組み合わせ論理F93の結果が記憶されるラッチLL93は、ラッチLL92（F93の入力）に対して反転したクロックに同期される。つまり、LL92と、F93と、LL93とは、本発明の実施形態に対応する部分である。従って、タイミングエラー検出（と、必要であれば、クロック伸長）が少なくともLL92で行われるが、他のいくつかの又はすべてのラッチで行われてもよい。
【００７２】
好ましくは、背景技術の項目で述べたように、従来部分について適切な処理時間を有するF92などの組み合わせ論理を従来部分は有しているとよい。なお、そのような組み合わせ論理は、クロックの半周期よりも多く、かつ、一周期よりはすくない時間を必要とするとよい。つまり、そのような組み合わせ論理は、本発明の実施形態によるタイミングとしては遅すぎるのである。一方、F93などの、本発明の実施形態による組み合わせ論理は、クロックの半周期より少ない時間しか必要としないことが好ましい。そのような組み合わせ論理は、ラッチの従来方式のタイミングとしては速すぎて、従来部分に組み込まれた場合には、フォルスタイミング違反を生じさせてしまうかもしれない。
【００７３】
より大きい論理回路は、一つ以上の従来部分と、本発明の一以上の実施形態を備えてよい。複数の従来部分がある場合には、それぞれの部分のゲーティングのタイミングは同じでもよいし（つまり、例えば、全てのラッチがCLK=ハイの時に開いている）、タイミングが部分ごとに異なってもよい（例えば、一方の従来部分の全てのラッチはCLK=ハイのときに開いているが、他方の従来部分の全てのラッチはCLK=ローのときに開いていてもよい）。本発明の一実施形態を構成する部分は、異なるゲーティングのタイミングで従来部分の間にある。つまり、本発明の一実施形態を構成する部分のラッチの数は、奇数でも偶数でもよいので、設計の柔軟性が向上している。
【００７４】
各従来部分と、本発明の実施形態を構成する各部分とは、それぞれ少なくとも二つのラッチを有する。しかし、ある部分の最初と最後のラッチは、先行又は後続の部分に属していてもよい（例えば、図9のラッチLL92）。
【００７５】
したがって、相対的に遅い組み合わせ論理を、クロックを低下させずに速い組み合わせ論理にパイプラインで組み合わせることができる。
【００７６】
図10に示すように、本発明のいくつかの実施形態によっては、次のように遅い組み合わせ論理を速い組み合わせ論理に組み合わせることができる。
【００７７】
F102は、入力ラッチLL101からの入力信号が入力される遅い組み合わせ論理である。F102は、自らの演算結果をラッチLL102に出力する。F102は遅いため、タイミングエラーがラッチLL102で頻繁に起こる可能性がある。しかし、タイミングエラーはラッチLL102では検出されない。
【００７８】
F103は、速い組み合わせ論理である。そこでは、（速い組み合わせ論理による演算はクロックCLK0の半周期もかからないため）フォルスタイミング違反が、組み合わせ論理F103が演算結果を出力するラッチLL103でよく起きるだろう。しかし、ラッチLL103はラッチLL102に対して反転したクロックに同期される(ラッチLL102とLL103が同じクロッキングの種類である場合（same  clocking  type）には互いに反転したクロックCLK0とCL1に基づく。あるいは、ラッチLL102とLL103が同じクロックに接続されている場合には、これらが反転したクロックキングの種類であることに基づく)。従って、上記のようにフォルスタイミング違反はラッチLL103で起きることがない。
【００７９】
この組み合わせにおいて、遅い組み合わせ論理F102は、タイミング違反がラッチLL103で（ほとんど）起きないように、速い組み合わせ論理F103から時間を借りてもよい（borrow  time）。上記のように、依然として残るタイミングエラーは、ラッチLL103での信号をTEDによって検出され、クロック伸長が行われる。なお、タイミング違反は主にラッチLL102で起きるであろうが、ラッチLL103で検出されることに留意されたい。
【００８０】
この組み合わせにおいて、タイミングエラーの検出は速い組み合わせ論理の出力ラッチでのみ行えばよいことから半導体領域とエネルギ―が節約できる。
【００８１】
遅い組み合わせ論理F102で起きるタイミング違反が「頻繁(frequently)」であるとは、ある名目的クロック周波数において、特定の動作条件(電圧、温度等)下で、入力ラッチLL101が透過になったときの遅い組み合わせ論理に入力される第一サンプリング信号に関するタイミング違反の起きる可能性が、50%より大きく、好ましくは、80%より大きく、より好ましくは、90%より大きく、さらに好ましくは、98%より大きいことを言う。
【００８２】
速い組み合わせ論理F103で起きるフォルスタイミング違反が「よくある(often)」であるとは、上記名目的クロック周波数において、上記特定の動作条件下で、入力ラッチLL102が透過になったときの速い組み合わせ論理に入力される第二サンプリング信号に関するフォルスタイミング違反の起きる可能性が、50%より大きく、好ましくは、80%より大きく、より好ましくは、90%より大きく、さらに好ましくは、98%より大きいことを言う。
【００８３】
実施形態では、反転クロック信号はクロック信号に反転していると記載した。本願の文脈においては、反転とはクロックのタイミングに関する。反転クロック信号の振幅が、クロック信号のものとは反対（つまり、高低のレベルは同じ）であってもよいが、クロック信号のものとは反対である必要はない。例えば、反転クロック信号の高低レベルの一方又は両方が、クロック信号の対応するレベルに対して、いくらかのバイアス電圧によってシフトされてもよい。また、反転クロック信号の高低レベルの一方又は両方が、クロック信号の対応するレベルに対して、1より大きい或いは1より小さい係数で増幅（減衰）されてもよい。いくつかの実施形態によっては、バイアス電圧と増幅(減衰)は組み合されてもよい。
【００８４】
上記説明した各TED手段は、タイミングエラーを検出する遅いラッチと比較手段とに限られない。本発明の実施形態においては、タイミング違反とタイミングエラーを検出する任意の既知の方法を採用することができる。
【００８５】
上記説明した各TED手段は、二つの反転した関係にあるクロックがある場合は、いずれのクロックにも接続されて、それらを伸長してもよいし、反転クロックが恒久的に同期化される場合は、クロックの一つにのみ接続されてもよい。
【００８６】
ラッチと組み合わせ論理の配置の記載は、それらの信号の流れに関する。コンポーネントの幾何学的な配置は信号の流れに対応するが、信号の流れとは異なっていてもよい。
【００８７】
特段述べられていないか、文脈から特段明らかにされていない場合は、二つの異なるエンティティは、それが異なる機能を提供することを意味する。これは、それらが異なるハードウェアに基づくことを必ずしも意味しない。つまり、本願で記載されている各エンティティが異なるハードウェアに基づいてもよいし、いくつかの又は全てのエンティティが同じハードウェアに基づいてもよい。
【００８８】
クロック、ラッチ及び組み合わせ論理の各々は、別々の基板に配されてもよいし、いくつかの又は全てのコンポートが同じ基板に配されてもよい。
【００８９】
クロック、ラッチ及び組み合わせ論理の各々は、ハードウェア、ソフトウェア、ファームウエア又はこれらの組み合わせで実現されてもよい。ソフトウェアは、コンピュータ読み取り可能媒体として具現化されてもよい。
【００９０】
上記に説明されたものは、現状、本発明の好ましい実施形態とされるものであると理解される。しかし、好ましい実施形態の記載は、実施例としてのみ与えられるのであって、添付の請求項によって規定された発明の範囲を逸脱することなく様々な修正が可能であることに留意すべきである。
【符号の説明】
【００９１】
CKL  クロック
FW  ファームウェア
HW  ハードウェア
LL  論理ラッチ
SW  ソフトウェア
TB  タイムボローイング
TED  タイミングエラー検出
TEP  タイミングエラー防止
【図１】
0006578287.tif 000002
【図２】
0006578287.tif 000003
【図３】
0006578287.tif 000004
【図４】
0006578287.tif 000005
【図５】
0006578287.tif 000006
【図６ａ】
0006578287.tif 000007
【図６ｂ】
0006578287.tif 000008
【図７ａ】
0006578287.tif 000009
【図７ｂ】
0006578287.tif 000010
【図８】
0006578287.tif 000011
【図９】
0006578287.tif 000012
【図１０】
0006578287.tif 000013