(57)【要約】      （修正有）【課題】フリップフロップの面積及び集積回路の消費電力を低減しながら、ホールド時間違反を解消する。【解決手段】クロック信号を遅延した信号である遅延クロック信号を生成する遅延回路部と、クロック信号と遅延クロック信号とが供給されるマスタラッチと、スレーブラッチを有するフリップフロップとを備える。クロック信号が第１レベルの場合、マスタラッチは、それに入力される入力データをスレーブラッチに出力し、クロック信号が第２レベルの場合、マスタラッチは、マスタラッチに入力される入力データの値に関わらず、保持するデータをスレーブラッチに出力する。スレーブラッチは、クロック信号と遅延クロック信号の両方が第２レベルの場合、マスタラッチから受け取るデータを外部に出力する。また、クロック信号と遅延クロック信号の少なくとも一方が第１レベルの場合は、マスタラッチから受け取るデータに関わらず、保持するデータを外部に出力する。【選択図】図１
2015023502.tif 000002
【特許請求の範囲】
【請求項１】
クロック信号を遅延した信号である第１遅延クロック信号を生成する遅延回路部と、
前記クロック信号と前記第１遅延クロック信号とが供給される第１フリップフロップ
とを備え、
前記第１フリップフロップは、
第１マスタラッチと、
第１スレーブラッチ
とを備え、
前記クロック信号と前記第１遅延クロック信号のそれぞれは、その電圧レベルが、第１レベルと、前記第１レベルに対して相補の第２レベルとの間で切り換えられる信号であり、
前記クロック信号が前記第１レベルである場合、前記第１マスタラッチは、前記第１マスタラッチに入力される入力データを前記第１スレーブラッチに出力する動作を行い、
前記クロック信号が前記第２レベルである場合、前記第１マスタラッチは、前記第１マスタラッチに入力される入力データの値に関わらず、前記第１マスタラッチが保持するデータを前記第１スレーブラッチに出力する動作を行い、
前記クロック信号と前記第１遅延クロック信号の両方が前記第２レベルである場合、前記第１スレーブラッチは、前記第１マスタラッチから受け取るデータを外部に出力する動作を行い、
前記クロック信号と前記第１遅延クロック信号の少なくとも一方が前記第１レベルである場合、前記第１スレーブラッチは、前記第１マスタラッチから受け取るデータに関わらず、前記第１スレーブラッチが保持するデータを外部に出力する動作を行う
集積回路。
【請求項２】
請求項１に記載の集積回路であって、
更に、
第２マスタラッチと第２スレーブラッチとを備える第２フリップフロップを備え、
前記遅延回路部は、前記クロック信号を遅延した信号である第２遅延クロック信号を生成し、
前記第２遅延クロック信号は、その電圧レベルが、前記第１レベルと前記第２レベルとの間で切り換えられる信号であり、
前記クロック信号が前記第１レベルである場合、前記第２マスタラッチは、前記第２マスタラッチに入力される入力データを前記第２スレーブラッチに出力する動作を行い、
前記クロック信号が前記第２レベルである場合、前記第２マスタラッチは、前記第２マスタラッチに入力される入力データの値に関わらず、前記第２マスタラッチが保持するデータを前記第２スレーブラッチに出力する動作を行い、
前記クロック信号と前記第２遅延クロック信号の両方が前記第２レベルである場合、前記第２スレーブラッチは、前記第２マスタラッチから受け取るデータを外部に出力する動作を行い、
前記クロック信号と前記第２遅延クロック信号の少なくとも一方が前記第１レベルである場合、前記第２スレーブラッチは、前記第２マスタラッチから受け取るデータに関わらず、前記第２スレーブラッチが保持するデータを外部に出力する動作を行う
集積回路。
【請求項３】
請求項２に記載の集積回路であって、
更に、全体クロック信号が供給されるクロックゲーティングゲートを備え、
前記クロックゲーティングゲートは、クロックイネーブル信号に応答して、全体クロック信号を前記クロック信号として出力し、又は、前記クロック信号のクロックパルスの出力を停止する動作を行い、
前記遅延回路部は、前記クロックゲーティングゲートから前記クロック信号を受けとって前記第１遅延クロック信号及び前記第２遅延クロック信号を生成する
集積回路。
【請求項４】
請求項２に記載の集積回路であって、
更に、全体クロック信号が供給されるクロックゲーティングゲートを備え、
前記クロックゲーティングゲートは、クロックイネーブル信号に応答して、前記全体クロック信号を前記クロック信号として出力し、又は、前記クロック信号のクロックパルスの出力を停止する動作を行い、
前記遅延回路部は、前記全体クロック信号を受けとって前記第１遅延クロック信号及び前記第２遅延クロック信号を生成する
集積回路。
【請求項５】
請求項４に記載の集積回路であって、
前記第１フリップフロップは、更に、スキャンイネーブル信号に応答して前記第１フリップフロップのデータ入力とスキャン入力との一方を前記第１マスタラッチのデータ入力に接続する第１マルチプレクサを具備し、
前記第２フリップフロップは、更に、前記スキャンイネーブル信号に応答して前記第２フリップフロップのデータ入力とスキャン入力との一方を前記第１マスタラッチのデータ入力に接続する第２マルチプレクサを具備し、
前記クロックゲーティングゲートは、前記スキャンイネーブル信号及び前記クロックイネーブル信号に応答して、前記全体クロック信号を前記クロック信号として出力し、又は、前記クロック信号のクロックパルスの出力を停止する動作を行う
集積回路。
【請求項６】
請求項５に記載の集積回路であって、
前記遅延回路部は、前記第１遅延クロック信号及び前記第２遅延クロック信号の前記全体クロック信号からの遅延時間が可変であるように構成されている
集積回路。
【請求項７】
全体クロック信号が供給され、前記全体クロック信号を第１クロック信号として出力し、又は、前記第１クロック信号のクロックパルスの出力を停止する動作を第１クロックイネーブル信号に応答して行う第１クロックゲーティングゲートと、
前記全体クロック信号が供給され、前記全体クロック信号を第２クロック信号として出力し、又は、前記第２クロック信号のクロックパルスの出力を停止する動作を第２クロックイネーブル信号に応答して行う第２クロックゲーティングゲートと、
前記全体クロック信号を遅延して第１遅延クロック信号及び第２遅延クロック信号を生成する共有遅延回路と、
前記第１クロック信号と前記第１遅延クロック信号とが供給される第１フリップフロップと、
前記第２クロック信号と前記第２遅延クロック信号とが供給される第２フリップフロップ
とを具備し、
前記第１クロック信号と前記第２クロック信号と前記第１遅延クロック信号と前記第２遅延クロック信号のそれぞれは、その電圧レベルが、第１レベルと、前記第１レベルに対して相補の第２レベルとの間で切り換えられる信号であり、
前記第１フリップフロップは、
第１マスタラッチと、
第１スレーブラッチ
とを備え、
前記第１クロック信号が前記第１レベルである場合、前記第１マスタラッチは、前記第１マスタラッチに入力される入力データを前記第１スレーブラッチに出力する動作を行い、
前記第１クロック信号が前記第２レベルである場合、前記第１マスタラッチは、前記第１マスタラッチに入力される入力データの値に関わらず、前記第１マスタラッチが保持するデータを前記第１スレーブラッチに出力する動作を行い、
前記第１クロック信号と前記第１遅延クロック信号の両方が前記第２レベルである場合、前記第１スレーブラッチは、前記第１マスタラッチから受け取るデータを外部に出力する動作を行い、
前記第１クロック信号と前記第１遅延クロック信号の少なくとも一方が前記第１レベルである場合、前記第１スレーブラッチは、前記第１マスタラッチから受け取るデータに関わらず、前記第１スレーブラッチが保持するデータを外部に出力する動作を行い、
前記第２フリップフロップは、
第２マスタラッチと、
第２スレーブラッチ
とを備え、
前記第２クロック信号が前記第１レベルである場合、前記第２マスタラッチは、前記第２マスタラッチに入力される入力データを前記第２スレーブラッチに出力する動作を行い、
前記第２クロック信号が前記第２レベルである場合、前記第２マスタラッチは、前記第２マスタラッチに入力される入力データの値に関わらず、前記第２マスタラッチが保持するデータを前記第２スレーブラッチに出力する動作を行い、
前記第２クロック信号と前記第２遅延クロック信号の両方が前記第２レベルである場合、前記第２スレーブラッチは、前記第２マスタラッチから受け取るデータを外部に出力する動作を行い、
前記第２クロック信号と前記第２遅延クロック信号の少なくとも一方が前記第１レベルである場合、前記第２スレーブラッチは、前記第２マスタラッチから受け取るデータに関わらず、前記第２スレーブラッチが保持するデータを外部に出力する動作を行う
集積回路。
【請求項８】
請求項１乃至７のいずれかに記載の集積回路であって、
前記第１フリップフロップが、更に、前記クロック信号と前記第１遅延クロック信号とが供給されるＡＮＤゲートを備え、
前記第１スレーブラッチは、前記ＡＮＤゲートの出力信号に応答して動作する
集積回路。
【請求項９】
請求項１乃至７のいずれかに記載の集積回路であって、
前記第１フリップフロップが、更に、前記クロック信号と前記第１遅延クロック信号とが供給されるＮＡＮＤゲートを備え、
前記第１スレーブラッチは、前記ＮＡＮＤゲートの出力信号に応答して動作する
集積回路。
【請求項１０】
クロック信号と、前記クロック信号を遅延した信号である遅延クロック信号とに応答して動作するフリップフロップであって、
マスタラッチと、
スレーブラッチ
とを備え、
前記クロック信号と前記遅延クロック信号のそれぞれは、その電圧レベルが、第１レベルと、前記第１レベルに対して相補の第２レベルとの間で切り換えられる信号であり、
前記クロック信号が前記第１レベルである場合、前記マスタラッチは、前記マスタラッチに入力される入力データを前記スレーブラッチに出力する動作を行い、
前記クロック信号が前記第２レベルである場合、前記マスタラッチは、前記マスタラッチに入力される入力データの値に関わらず、前記マスタラッチが保持するデータを前記スレーブラッチに出力する動作を行い、
前記クロック信号と前記遅延クロック信号の両方が前記第２レベルである場合、前記スレーブラッチは、前記マスタラッチから受け取るデータを外部に出力する動作を行い、
前記クロック信号と前記遅延クロック信号の少なくとも一方が前記第１レベルである場合、前記スレーブラッチは、前記マスタラッチから受け取るデータに関わらず、前記スレーブラッチが保持するデータを外部に出力する動作を行う
フリップフロップ。
【請求項１１】
請求項１０に記載のフリップフロップであって、
更に、前記クロック信号と前記遅延クロック信号とが供給されるＡＮＤゲートを備え、
前記スレーブラッチは、前記ＡＮＤゲートの出力信号に応答して動作する
フリップフロップ。
【請求項１２】
請求項１０に記載のフリップフロップであって、
更に、前記クロック信号と前記遅延クロック信号とが供給されるＮＡＮＤゲートを備え、
前記スレーブラッチは、前記ＮＡＮＤゲートの出力信号に応答して動作する
フリップフロップ。
【請求項１３】
請求項１０乃至１２のいずれかに記載のフリップフロップを収容する
スタンダードセル。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路に関し、特に、フリップフロップを備えた集積回路に関する。
【背景技術】
【０００２】
情報通信技術（ＩＣＴ：information  and  communication  technology）の進歩と普及により、大規模集積回路（ＬＳＩ：large  scale  integrated  circuit）の応用分野が大きな広がりを見せている。さらに利便性の高い情報システムを実現するためには、ＬＳＩにセンサーや無線通信等の機能と、電波や熱等の環境エネルギーを回収して電力に変換するエネルギー・ハーベスティング機能を集積して、ありとあらゆる環境で情報収集する機能が重要である。しかしながら、エネルギー・ハーベスティングで回収できる電力がまだ非常に小さいため、ＬＳＩの低電力化が必要である。
【０００３】
ＬＳＩの低電力化のために方法で最も単純なものは低電圧化である。ＬＳＩを構成する論理回路は動作時に静電容量と電源電圧の二乗の積として計算される電力を消費するため、電源電圧の低減が非常に効果的である。
【０００４】
論理回路の低電圧化設計を行うときに最も重要な課題は論理セルの遅延のばらつきの増大である。論理セルの遅延は電源電圧としきい値電圧の差分の逆数に概ね比例し、これらの電圧のうちしきい値電圧は様々な要因により所定の範囲ではらつく。電源電圧を低くすると、個々の論理セルのしきい値電圧の期待値からの変動量が電源電圧に対して十分に大きくなるため、論理セルの遅延に大きなばらつきとして反映されてしまう。
【０００５】
論理セルの遅延のばらつきが大きくなると、論理回路のタイミング設計、特にホールド時間制約を充足させるためのホールド補償設計が困難になる。論理セルの遅延がばらつくと、同期式論理回路で内部のフリップフロップにクロック信号を分配するクロック分配回路の遅延がクロックパスによってばらついてしまう。言い換えれば、フリップフロップによってクロック信号の到達時間差であるクロックスキューが大きくなる。同期式論理設計では、フリップフロップ間のタイミングパス（即ち、フリップフロップ間の組み合わせ回路）の遅延時間の許容最小値は、当該フリップフロップ間のクロックスキューとフリップフロップのホールド時間の許容最小値の和である。即ち、タイミングパスの遅延時間の許容最小値は、ホールド時間制約によって決まり、且つ、クロックスキューが増大すると、許容最小値も増大することになる。
【０００６】
ホールド補償設計手法で最も単純なものは、ホールド時間制約を違反するパスに遅延バッファを挿入することである。しかしながら、低電圧設計では大量の遅延バッファが必要となり、低電力化効果を相殺してしまう場合や、むしろ低電圧化が逆効果になってしまう場合がある。
【０００７】
類似の技術として、特開２００１−１０１２４８号公報は、入力及び出力に遅延バッファが挿入されたフリップフロップの構成を開示している。この公報に開示された技術でも、パスに遅延バッファが挿入される点では共通であり、同様の問題が発生する。
【０００８】
特開２００７−１４２０９４号公報は、ホールド補償設計用フリップフロップの構成を開示している。この公報に開示されているフリップフロップは、マスタラッチとスレーブラッチに加えて、マスタラッチと同じタイミングで動作する第３のラッチを備える。スレーブラッチの出力をマスタスレーブ型のフリップフロップのデータ信号出力（Ｑ）として、第３のラッチの出力を遅延データ出力（ＱＤ）とする。この構成により、ラッチを１つ追加しただけで、クロック半周期分の大きな遅延を挿入することができる。そのため、大きな遅延の挿入でホールド補償設計を容易化することができ、尚且つ挿入できる遅延量に対してオーバーヘッドを小さく抑えることができる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００１−１０１２４８号公報
【特許文献２】特開２００７−１４２０９４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、発明者の検討によれば、特開２００１−１０１２４８号公報に開示されている技術には、フリップフロップの占める面積、及び、フリップフロップが消費する電力において改善の余地がある。この公報に開示された技術では、フリップフロップの面積と電力が１．５倍になってしまい、これは、ホールド時間違反を解決するためのオーバーヘッドとしては大きすぎる。
【００１１】
加えて、特開２００７−１４２０９４号公報に開示された技術では、追加できる遅延がクロック半周期に限定されてしまう点も問題である。ホールド時間違反制約を違反するタイミングパスとセットアップ時間制約に対するタイミング余裕がクロック半周期よりも小さいタイミングパスの双方が起点とするようなフリップフロップに当該従来技術を単純に適用した場合、セットアップ時間制約を違反してしまう。
【００１２】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１３】
一実施形態では、集積回路が、あるクロック信号を遅延した信号である遅延クロック信号を生成する遅延回路部と、該クロック信号と該遅延クロック信号とが供給されるフリップフロップとを備えている。該フリップフロップは、マスタラッチと、スレーブラッチとを備えている。クロック信号が第１レベルである場合、マスタラッチは、それに入力される入力データをスレーブラッチに出力する動作を行う。該クロック信号が第２レベルである場合、マスタラッチは、マスタラッチに入力される入力データの値に関わらず、保持するデータをスレーブラッチに出力する動作を行う。一方、スレーブラッチは、クロック信号と遅延クロック信号の両方が第２レベルである場合、マスタラッチから受け取るデータを外部に出力する動作を行う。また、クロック信号と遅延クロック信号の少なくとも一方が第１レベルである場合、スレーブラッチは、マスタラッチから受け取るデータに関わらず、それが保持するデータを外部に出力する動作を行う。
【発明の効果】
【００１４】
上記実施形態によれば、フリップフロップの面積及び集積回路の消費電力を低減しながら、ホールド時間違反を解消することができる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施形態の集積回路の構成を示す回路図である。
【図２】第１の実施形態の集積回路の動作、特に、出力遅延型フリップフロップの動作を示すタイミングチャートである。
【図３】図１に図示された出力遅延型フリップフロップに含まれるマスタラッチ及びスレーブラッチの構成の一例を示す回路図である。
【図４Ａ】図１に図示された出力遅延型フリップフロップに含まれるマスタラッチ及びスレーブラッチの構成の他の例を示す回路図である。
【図４Ｂ】インバータの構成の例を示す回路図である。
【図４Ｃ】ＮＡＮＤゲートの構成の例を示す回路図である。
【図５】第１の実施形態の出力遅延型フリップフロップの構成の変形例を示す回路図である。
【図６】図６に図示された出力遅延型フリップフロップに含まれるマスタラッチ及びスレーブラッチの構成の一例を示す回路図である。
【図７】図６に図示された出力遅延型フリップフロップに含まれるマスタラッチ及びスレーブラッチの構成の他の例を示す回路図である。
【図８】第１の実施形態の出力遅延型フリップフロップの構成の他の変形例を示す回路図である。
【図９】図８に図示された出力遅延型フリップフロップの動作を示すタイミングチャートである。
【図１０】第１の実施形態の出力遅延型フリップフロップの構成の更に他の変形例を示す回路図である。
【図１１】第２の実施形態の集積回路の構成を示す回路図である。
【図１２】第２の実施形態の集積回路に含まれるクロックゲーティングゲートの構成の一例を示す回路図である。
【図１３】図１２に図示されたクロックゲーティングゲートの動作を示すタイミングチャートである。
【図１４】集積回路設計装置の構成の一例を概念的に示すブロック図である。
【図１５】第２の実施形態の集積回路の設計手順を示すフローチャートである。
【図１６】第３の実施形態の集積回路の構成を示す回路図である。
【図１７】第３の実施形態の集積回路の設計手順を示すフローチャートである。
【図１８】第４の実施形態の集積回路の構成を示す回路図である。
【図１９】第４の実施形態の集積回路に含まれる可変遅延回路の構成を示す回路図である。
【図２０】第４の実施形態の集積回路の設計手順を示すフローチャートである。
【図２１】あるフリップフロップと、該フリップフロップの出力を起点とするタイミングパスと、該タイミングパスの出力に接続されたもう一つのフリップフロップを示す回路図である。
【図２２Ａ】クロックスキューが存在しない場合の図２１の回路の動作を示すタイミングチャートである。
【図２２Ｂ】クロックスキューが存在する場合の図２１の回路の動作を示すタイミングチャートである。
【図２３】出力遅延型フリップフロップと、該出力遅延型フリップフロップの出力を起点とするタイミングパスと、該タイミングパスの出力に接続されたもう一つのフリップフロップを示す回路図である。
【図２４】クロックスキューが存在する場合の図２３の回路の動作を示すタイミングチャートである。
【発明を実施するための形態】
【００１６】
以下、添付図面を参照しながら様々な実施形態を説明する。以下の実施形態の記述において、同一の構成部材が複数存在しており、且つ、それらを区別する必要がある場合には、参照符号に添字が付されることがある。ただし、区別の必要が無い場合には添字が省略されることがあることに留意されたい。
【００１７】
（第１の実施形態）
図１は、第１の実施形態の集積回路１０の構成の例を示す回路図である。本実施形態は、後述の実施形態（第２〜第４の実施形態）の基礎となる構成となっていることに留意されたい。
【００１８】
本実施形態では、集積回路１０が、共有遅延回路１と、少なくとも１つの出力遅延型フリップフロップ２とを備えている。後に詳細に説明されるように、出力遅延型フリップフロップ２は、データ出力の更新のタイミングを、データ取り込みのタイミングに対して遅延できるように構成されたフリップフロップのことである。出力遅延型フリップフロップ２の構成と動作については、後に詳細に説明する。図１には、集積回路１０が３つの出力遅延型フリップフロップ２１〜２３を備えている構成が図示されているが、出力遅延型フリップフロップ２の数は３に限定されない。以下では、集積回路１０の各構成要素について詳細に説明する。
【００１９】
共有遅延回路１は、クロック信号ＣＫを遅延して少なくとも１つの遅延クロック信号ＣＫＤを生成する遅延回路部である。図１の回路構成では、共有遅延回路１は、３つの遅延クロック信号ＣＫＤ１〜ＣＫＤ３を生成し、それぞれ、出力遅延型フリップフロップ２１〜２３に供給するように構成されている。後に詳細に議論されるように、遅延クロック信号ＣＫＤ１〜ＣＫＤ３のそれぞれのクロック信号ＣＫからの遅延時間ｔＤ１〜ｔＤ３は、それぞれ、出力遅延型フリップフロップ２１〜２３の出力を起点とするタイミングパスのホールド時間制約を充足するように決定される。例えば、図１に図示されているように、出力遅延型フリップフロップ２１の出力を起点とするタイミングパス３について考えると、出力遅延型フリップフロップ２１に供給される遅延クロック信号ＣＫＤ１のクロック信号ＣＫからの遅延時間ｔＤ１は、タイミングパス３のホールド時間制約を充足するように決定される。
【００２０】
より具体的には、共有遅延回路１は、直列に接続された遅延回路１１１〜１１３を備えている。各遅延回路１１は、例えば、１つの遅延バッファ又は、直列に接続された複数の遅延バッファで構成されてもよい。遅延回路１１３は、クロック信号ＣＫを遅延して遅延クロック信号ＣＫＤ３を生成する。遅延回路１１２は、遅延クロック信号ＣＫＤ３を遅延して遅延クロック信号ＣＫＤ２を生成する。遅延回路１１１は、遅延クロック信号ＣＫＤ２を遅延して遅延クロック信号ＣＫＤ１を生成する。
【００２１】
なお、図１では、異なる出力遅延型フリップフロップ２に異なる遅延クロック信号ＣＫＤが供給されているが、異なる出力遅延型フリップフロップ２に同一の遅延クロック信号ＣＫＤが供給されてもよい。また、共有遅延回路１の構成は、設けられる出力遅延型フリップフロップ２の数、及び、出力遅延型フリップフロップ２のそれぞれに供給される遅延クロック信号ＣＫＤのクロック信号ＣＫからの遅延時間に応じて適宜に変更され得ることに留意されたい。
【００２２】
出力遅延型フリップフロップ２のそれぞれは、ＡＮＤゲート１２と、マスタラッチ１３と、スレーブラッチ１４とを備えている。ＡＮＤゲート１２は、各出力遅延型フリップフロップ２に供給されたクロック信号ＣＫと遅延クロック信号ＣＫＤとの論理積の信号である論理積クロック信号ＣＫＡを出力する。
【００２３】
マスタラッチ１３は、クロック信号ＣＫに同期して動作するレベルセンシティブＤラッチ（ＤＬ）として構成されている。詳細には、マスタラッチ１３は、クロック信号ＣＫがＬｏｗレベル（第１レベル）である場合、「スルー状態」に設定される。即ち、クロック信号ＣＫがＬｏｗレベルである場合、マスタラッチ１３は、マスタラッチ１３に入力される入力データＤと同一のデータをデータＱとして出力する。一方、クロック信号ＣＫがＨｉｇｈレベル（第１レベルに対して相補である第２レベル）である場合、マスタラッチ１３は、「記憶状態」に設定される。即ち、クロック信号ＣＫがＨｉｇｈレベルである場合、マスタラッチ１３は、入力データＤに関わらず、マスタラッチ１３が保持しているデータをデータＱとして出力する。ここで、マスタラッチ１３が保持するデータは、クロック信号ＣＫがＬｏｗレベルからＨｉｇｈレベルに遷移する時点の入力データＤである。
【００２４】
スレーブラッチ１４は、論理積クロック信号ＣＫＡに同期して動作するレベルセンシティブＤラッチ（ＤＬ）として構成されている。ただし、スレーブラッチ１４は、それに供給されるクロック信号のレベルと、「スルー状態」「記憶状態」の間の対応関係が、マスタラッチ１３とは逆であるように構成されている。このような動作を示すために、図１では、スレーブラッチ１４のクロック入力端子に論理否定を示す符号が付加されていることに留意されたい。
【００２５】
詳細には、スレーブラッチ１４は、論理積クロック信号ＣＫＡがＨｉｇｈレベル（第１レベル）である場合、「スルー状態」に設定される。即ち、論理積クロック信号ＣＫＡがＨｉｇｈレベルである場合、スレーブラッチ１４は、マスタラッチ１３から受け取ったデータＱと同一のデータを出力データＱＤとして出力する。一方、クロック信号ＣＫＡがＬｏｗレベル（第２レベル）である場合、スレーブラッチ１４は、「記憶状態」に設定される。即ち、クロック信号ＣＫＡがＬｏｗレベルである場合、スレーブラッチ１４は、マスタラッチ１３から受け取るデータＱに関わらず、スレーブラッチ１４が保持しているデータを出力データＱＤとして出力する。ここで、スレーブラッチ１４が保持するデータは、クロック信号ＣＫＡがＨｉｇｈレベルからＬｏｗレベルに遷移する時点のデータＱである。
【００２６】
ここで、論理積クロック信号ＣＫＡがクロック信号ＣＫと遅延クロック信号ＣＫＤとの論理積の信号であることから、スレーブラッチ１４は、下記のような動作を行うことになる。クロック信号ＣＫと遅延クロック信号ＣＫＤの両方がＨｉｇｈレベルである場合、スレーブラッチ１４は、上記の「スルー状態」に設定される。一方、クロック信号ＣＫと遅延クロック信号ＣＫＤの少なくとも一方がＬｏｗレベルである場合、スレーブラッチ１４は、上記の「記憶状態」に設定される。
【００２７】
各出力遅延型フリップフロップ２のスレーブラッチ１４の出力は、組み合わせ回路で構成されるタイミングパスを介して他のフリップフロップのデータ入力に接続される。図１では、出力遅延型フリップフロップ２１のスレーブラッチ１４の出力が、タイミングパス３を介して出力遅延型フリップフロップ２３のデータ入力に接続されている構成が図示されている。
【００２８】
以上に説明した動作を行う、マスタラッチ１３及びスレーブラッチ１４の構成の具体例については、後に詳細に説明する。
【００２９】
図２は、本実施形態の集積回路１０の動作、特に、出力遅延型フリップフロップ２の動作を示すタイミングチャートである。図２には、クロック信号ＣＫと遅延クロック信号ＣＫＤ１が供給される出力遅延型フリップフロップ２１の動作が図示されている。ここで、遅延クロック信号ＣＫＤ１は、クロック信号ＣＫが共有遅延回路１において遅延時間ｔＤ１だけ遅延されることによって生成される信号であることに留意されたい。なお、他の出力遅延型フリップフロップ２の動作も、出力遅延型フリップフロップ２１と同様である。
【００３０】
まず、初期状態において、クロック信号ＣＫと遅延クロック信号ＣＫＤ１が、いずれも、Ｌｏｗレベルであるとする。この状態では、マスタラッチ１３がスルー状態に設定され、スレーブラッチ１４が記憶状態に設定されることになる。ここで、初期状態においてスレーブラッチ１４に記憶されているデータを、以下では、「データＤｉ−１」と記載する
【００３１】
時刻ｔｉにおいてクロック信号ＣＫがＨｉｇｈレベルに立ち上がると、マスタラッチ１３は記憶状態に遷移する。即ち、時刻ｔｉにおける入力データＤが、マスタラッチ１３に取り込まれて保持される。時刻ｔｉにおける入力データＤを、以下、「データＤｉ」と記載する。
【００３２】
ここで、時刻ｔｉにおいては、共有遅延回路１による信号遅延のために遅延クロック信号ＣＫＤ１がＬｏｗレベルのままである。よって、クロック信号ＣＫと遅延クロック信号ＣＫＤ１の論理積である論理積クロック信号ＣＫＡもＬｏｗレベルのままであり、スレーブラッチ１４は、記憶状態に維持される。よって、スレーブラッチ１４から出力される出力データＱＤは、データＤｉ−１のままである。
【００３３】
その後、共有遅延回路１による遅延時間ｔＤ１が経過して遅延クロック信号ＣＫＤ１がＨｉｇｈレベルに立ち上がると、論理積クロック信号ＣＫＡもＨｉｇｈレベルに立ち上がり、スレーブラッチ１４がスルー状態になる。この時点で、スレーブラッチ１４から出力される出力データＱＤは、データＤｉ（即ち、時刻ｔｉにおいてマスタラッチ１３に取り込まれた入力データＤ）に更新される。
【００３４】
その後、クロック信号ＣＫがＬｏｗレベルに立ち下がると、マスタラッチ１３はスルー状態になる。このとき、論理積クロック信号ＣＫＡもＬｏｗレベルに立ち下がるため、スレーブラッチ１４は、記憶状態に遷移する。ただし、スレーブラッチ１４から出力される出力データＱＤは、データＤｉのままである。その後は、上記と同様の動作が行われる。
【００３５】
上記の動作の重要な点は、スレーブラッチ１４から出力される出力データＱＤが更新されるタイミングが、マスタラッチ１３への入力データＤの取り込み（即ち、クロック信号ＣＫの立ち上がり）から遅延時間ｔＤ１だけ遅れることにある。これは、遅延クロック信号ＣＫＤ１のクロック信号ＣＫからの遅延時間ｔＤ１を適切に設定することで、出力遅延型フリップフロップ２１の出力を起点とするタイミングパス３の出力に接続された出力遅延型フリップフロップ２３のホールド時間制約を充足することができることを意味している。なお、遅延クロック信号ＣＫＤ１のクロック信号ＣＫからの遅延時間ｔＤ１の設定については、第２の実施形態で議論する。
【００３６】
このような動作を行う本実施形態の集積回路１０は、当該集積回路１０に含まれるフリップフロップを起点とするタイミングパスのホールド時間制約を、小さい面積と電力で充足することが可能となるという利点を有する。本実施形態の集積回路に集積化されたフリップフロップは、データ出力の信号遷移を遅延する一方で、データ入力の信号の取り込みを遅延させない。よって、データ出力の信号遷移の遅延時間を適切に設定することで、ホールド時間制約を充足することが可能となる。また、タイミングパスに遅延バッファを挿入することでホールド補償設計を実現する場合にはフリップフロップで記憶させるデータ信号は互いに異なるため遅延バッファの共有が困難であるが、本実施形態の集積回路の設計ではフリップフロップで共通に用いられるクロック信号を遅延するため遅延回路を共有することが可能となる。これは、本実施形態の集積回路が、面積と電力を節約するために有効であることを意味している。
【００３７】
また、本実施形態の集積回路の構成は、セットアップ時間に余裕の無いタイミングパスの起点となっているフリップフロップを含むような論理回路に対しても適用可能であるという利点を有する。これは本実施形態の集積回路において用いられる共有遅延回路はラッチやフリップフロップと異なり、任意の遅延時間を発生できるためである。
【００３８】
続いて、本実施形態（及び後述の第２乃至第４の実施形態）の集積回路で使用可能なマスタラッチ１３及びスレーブラッチ１４の構成の様々な具体例を説明する。
【００３９】
図３は、マスタラッチ１３及びスレーブラッチ１４の構成の一例を示す回路図である。図３のマスタラッチ１３及びスレーブラッチ１４は、インバータとトランスミッションゲートの組み合わせとして構成されている。
【００４０】
詳細には、図３のマスタラッチ１３は、インバータ２１と、トランスミッションゲート２２と、インバータ２３、２４と、トランスミッションゲート２５と、インバータ２６、２７とを備えている。
【００４１】
インバータ２１及びトランスミッションゲート２２は、データを記憶するクロスカップルドインバータ（後述のインバータ２３、２４及びトランスミッションゲート２５）に、入力データＤを供給する機能を有する回路群である。詳細には、インバータ２１は、入力データＤが入力される入力と、ノードＮ１１に接続された出力とを有しており、該出力と電源ＶＤＤの間に接続されたＰＭＯＳトランジスタＭＰ２１と、該出力と接地端子の間に接続されたＮＭＯＳトランジスタＭＮ２１とを備えている。トランスミッションゲート２２は、ノードＮ１１とノードＮ１２の間に接続されており、ＰＭＯＳトランジスタＭＰ２２とＮＭＯＳトランジスタＭＮ２２とを備えている。
【００４２】
インバータ２３、２４及びトランスミッションゲート２５は、データを記憶するクロスカップルドインバータを構成している。詳細には、インバータ２３は、ノードＮ１２に接続された入力とノードＮ１３に接続された出力とを有しており、該出力と電源ＶＤＤの間に接続されたＰＭＯＳトランジスタＭＰ２３と該出力と接地端子の間に接続されたＮＭＯＳトランジスタＭＮ２３とを備えている。インバータ２４は、ノードＮ１３に接続された入力とノードＮ１４に接続された出力とを有しており、該出力と電源ＶＤＤの間に接続されたＰＭＯＳトランジスタＭＰ２４と該出力と接地端子の間に接続されたＮＭＯＳトランジスタＭＮ２４とを備えている。トランスミッションゲート２５は、ノードＮ１４とノードＮ１２の間に接続されており、ＰＭＯＳトランジスタＭＰ２５とＮＭＯＳトランジスタＭＮ２５とを備えている。
【００４３】
インバータ２６、２７は、トランスミッションゲート２２、２５を制御する信号を生成する回路部を構成している。詳細には、インバータ２６は、クロック信号ＣＫが入力される入力を有しており、該出力と電源ＶＤＤの間に接続されたＰＭＯＳトランジスタＭＰ２６と該出力と接地端子の間に接続されたＮＭＯＳトランジスタＭＮ２６とを備えている。インバータ２６から出力される出力信号（即ち、クロック信号ＣＫと相補の信号）は、トランスミッションゲート２２のＮＭＯＳトランジスタＭＮ２２とトランスミッションゲート２５のＰＭＯＳトランジスタＭＰ２５に供給される。また、インバータ２７は、インバータ２６からの出力信号を受け取る入力を有しており、該出力と電源ＶＤＤの間に接続されたＰＭＯＳトランジスタＭＰ２７と該出力と接地端子の間に接続されたＮＭＯＳトランジスタＭＮ２７とを備えている。インバータ２７から出力される出力信号（即ち、クロック信号ＣＫと同一論理の信号）は、トランスミッションゲート２２のＰＭＯＳトランジスタＭＰ２２とトランスミッションゲート２５のＮＭＯＳトランジスタＭＮ２５に供給される。
【００４４】
このような構成のマスタラッチ１３は、クロック信号ＣＫがＨｉｇｈレベルのときに記憶状態になり、クロック信号ＣＫがＬｏｗレベルのときにスルー状態になる。また、ノードＮ１３から、データＱ（即ち、スレーブラッチ１４に出力されるデータ）が出力される。
【００４５】
一方、スレーブラッチ１４は、トランスミッションゲート３１と、インバータ３２、３３と、トランスミッションゲート３４と、インバータ３５、３６とを備えている。
【００４６】
トランスミッションゲート３１は、データを記憶するクロスカップルドインバータ（後述のインバータ３２、３３及びトランスミッションゲート３４）に、マスタラッチ１３から受け取ったデータＱを供給する機能を有している。詳細には、トランスミッションゲート３１は、データＱが供給される入力と、ノードＮ２１に接続される出力とを備えており、ＰＭＯＳトランジスタＭＰ３１とＮＭＯＳトランジスタＭＮ３２とを備えている。
【００４７】
インバータ３２、３３及びトランスミッションゲート３４は、データを記憶するクロスカップルドインバータを構成している。詳細には、インバータ３２は、ノードＮ２１に接続された入力とノードＮ２２に接続された出力とを有しており、該出力と電源ＶＤＤの間に接続されたＰＭＯＳトランジスタＭＰ３２と該出力と接地端子の間に接続されたＮＭＯＳトランジスタＭＮ３２とを備えている。インバータ３３は、ノードＮ２２に接続された入力とノードＮ２３に接続された出力とを有しており、該出力と電源ＶＤＤの間に接続されたＰＭＯＳトランジスタＭＰ３３と該出力と接地端子の間に接続されたＮＭＯＳトランジスタＭＮ３３とを備えている。トランスミッションゲート３４は、ノードＮ２３とノードＮ２１の間に接続されており、ＰＭＯＳトランジスタＭＰ３４とＮＭＯＳトランジスタＭＮ３５とを備えている。
【００４８】
インバータ３５は、クロスカップルドインバータに記憶されているデータから出力データＱＤを生成する機能を有している。インバータ３５は、ノードＮ２２に接続された入力と出力データＱＤを出力する出力とを有しており、該出力と電源ＶＤＤの間に接続されたＰＭＯＳトランジスタＭＰ３５と該出力と接地端子の間に接続されたＮＭＯＳトランジスタＭＮ３５とを備えている。
【００４９】
インバータ３６は、トランスミッションゲート３１、３４を制御する信号を生成する回路部を構成している。詳細には、インバータ３６は、論理積クロック信号ＣＫＡが入力される入力を有しており、該出力と電源ＶＤＤの間に接続されたＰＭＯＳトランジスタＭＰ３６と該出力と接地端子の間に接続されたＮＭＯＳトランジスタＭＮ３６とを備えている。インバータ３６から出力される出力信号（即ち、論理積クロック信号ＣＫＡと相補の信号）は、トランスミッションゲート３１のＮＭＯＳトランジスタＭＮ３１とトランスミッションゲート３４のＰＭＯＳトランジスタＭＰ３４に供給される。なお、トランスミッションゲート３１のＰＭＯＳトランジスタＭＰ３１、及び、トランスミッションゲート３４のＮＭＯＳトランジスタＭＮ３４のゲートには、論理積クロック信号ＣＫＡが供給される。
【００５０】
このような構成のスレーブラッチ１４は、論理積クロック信号ＣＫＡがＬｏｗレベルのときに記憶状態になり、論理積クロック信号ＣＫＡがＨｉｇｈレベルのときにスルー状態になる。また、インバータ３６の出力から、データＱＤが出力される。
【００５１】
図４Ａは、マスタラッチ１３及びスレーブラッチ１４の構成の他の例を示す回路図である。図４Ａの構成では、マスタラッチ１３は、ＮＡＮＤゲート４１〜４４と、インバータ４５とを備えている。インバータ４５は、クロック信号ＣＫを反転した信号を生成する。ＮＡＮＤゲート４１は、その一方の入力に入力データＤが入力され、他方の入力にインバータ４５の出力信号が供給される。ＮＡＮＤゲート４２は、その一方の入力にＮＡＮＤゲート４１の出力信号が入力され、他方の入力にインバータ４５の出力信号が供給される。ＮＡＮＤゲート４３は、その一方の入力にＮＡＮＤゲート４１の出力信号が入力され、他方の入力にＮＡＮＤゲート４４の出力信号が入力される。ＮＡＮＤゲート４４は、その一方の入力にＮＡＮＤゲート４３の出力信号が入力され、他方の入力にＮＡＮＤゲート４２の出力信号が入力される。
【００５２】
このような構成のマスタラッチ１３は、クロック信号ＣＫがＨｉｇｈレベルのときに記憶状態になり、クロック信号ＣＫがＬｏｗレベルのときにスルー状態になる。また、ＮＡＮＤゲート４３の出力から、データＱ（即ち、スレーブラッチ１４に出力されるデータ）が出力される。
【００５３】
一方、スレーブラッチ１４は、ＮＡＮＤゲート４６〜４９を備えている。ＮＡＮＤゲート４６は、その一方の入力にデータＱが入力され、他方の入力に論理積クロック信号ＣＫＡが供給される。ＮＡＮＤゲート４７は、その一方の入力にＮＡＮＤゲート４６の出力信号が入力され、他方の入力に論理積クロック信号ＣＫＡが供給される。ＮＡＮＤゲート４８は、その一方の入力にＮＡＮＤゲート４６の出力信号が入力され、他方の入力にＮＡＮＤゲート４９の出力信号が入力される。ＮＡＮＤゲート４９は、その一方の入力にＮＡＮＤゲート４８の出力信号が入力され、他方の入力にＮＡＮＤゲート４７の出力信号が入力される。
【００５４】
このような構成のスレーブラッチ１４は、論理積クロック信号ＣＫＡがＬｏｗレベルのときに記憶状態になり、論理積クロック信号ＣＫＡがＨｉｇｈレベルのときにスルー状態になる。また、ＮＡＮＤゲート４８の出力から、出力データＱＤが出力される。
【００５５】
なお、図４Ａのマスタラッチ１３及びスレーブラッチ１４において使用されるインバータ４５及びＮＡＮＤゲート４１〜４４、４６〜４９としては、一般的な構成のインバータ及びＮＡＮＤゲートが使用され得る。
【００５６】
図４Ｂは、インバータ４５の構成の一例を示している。図４Ｂの構成では、インバータ４５が、ＰＭＯＳトランジスタＭＰ１とＮＭＯＳトランジスタＭＮ１とで構成される。ＰＭＯＳトランジスタＭＰ１とＮＭＯＳトランジスタＭＮ１のゲートは入力ＩＮに共通に接続され、ドレインは出力ＯＵＴに共通に接続される。ＰＭＯＳトランジスタＭＰ１のソースは電源ＶＤＤに接続され、ＮＭＯＳトランジスタＭＮ１のソースは接地端子に接続される。
【００５７】
図４Ｃは、ＮＡＮＤゲート４１〜４４、４６〜４９の構成の一例を示している。
図４Ｃの構成では、ＮＡＮＤゲートが、ＰＭＯＳトランジスタＭＰ２、ＭＰ３と、ＮＭＯＳトランジスタＭＮ２、ＭＮ３とで構成される。ＰＭＯＳトランジスタＭＰ２、ＭＰ３は、ゲートにそれぞれ入力ＩＮ１、ＩＮ２が接続され、ソースが電源ＶＤＤに接続され、ドレインが出力ＯＵＴに接続される。ＮＭＯＳトランジスタＭＮ２、ＭＮ３は、ゲートにそれぞれ入力ＩＮ１、ＩＮ２が接続されており、且つ、出力ＯＵＴと接地端子の間に直列に接続される。
【００５８】
本実施形態で用いられる出力遅延型フリップフロップ２は、論理的に等価であるような様々な構成に構成され得る。図５は、図１の出力遅延型フリップフロップ２と等価であるような出力遅延型フリップフロップ２の構成の一例を示している。図５に図示されているように、ＡＮＤゲート１２の代わりに、ＮＡＮＤゲート１２Ａが用いられ、スレーブラッチ１４に、論理積クロック信号ＣＫＡの反転信号／ＣＫＡが供給されてもよい。この場合、スレーブラッチ１４としては、供給されるクロック信号（反転信号／ＣＫＡ）がＬｏｗレベルのときにスルー状態になり、Ｈｉｇｈレベルのときに記憶状態になるレベルセンシティブＤラッチが用いられる。
【００５９】
図６は、この場合のマスタラッチ１３とスレーブラッチ１４の構成の一例を示す回路図である。図６に図示されているマスタラッチ１３の構成は、図３に図示された構成と同一である。一方、図６に図示されているスレーブラッチ１４は、図３に図示されたスレーブラッチ１４にインバータ３７を追加した構成を有している。インバータ３７は、論理積クロック信号ＣＫＡの反転信号／ＣＫＡが入力される入力を有しており、出力と電源ＶＤＤの間に接続されたＰＭＯＳトランジスタＭＰ３７と、出力と接地端子の間に接続されたＮＭＯＳトランジスタＭＮ３７とを備えている。インバータ３７から出力された出力信号がトランスミッションゲート３１のＮＭＯＳトランジスタＭＮ３１、トランスミッションゲート３４のＰＭＯＳトランジスタＭＰ３４、及び、インバータ３６の入力に供給される。
【００６０】
図７は、図５の構成の出力遅延型フリップフロップ２に用いられるマスタラッチ１３とスレーブラッチ１４の構成の他の例を示す回路図である。図７に図示されているマスタラッチ１３の構成は、図４Ａに図示された構成と同一である。一方、図７に図示されているスレーブラッチ１４は、図４Ａに図示されたスレーブラッチ１４にインバータ５０を追加した構成を有している。インバータ５０の出力信号（即ち、論理積クロック信号ＣＫＡと同一論理の信号）が、ＮＡＮＤゲート４６、４７の入力に供給される。
【００６１】
上記の実施形態では、マスタラッチ１３に供給されるクロック信号（クロック信号ＣＫ）がＨｉｇｈレベルであるときにマスタラッチ１３が記憶状態になり、該クロック信号がＬｏｗレベルであるときにマスタラッチ１３がスルー状態になるが、マスタラッチ１３における、クロック信号ＣＫの２つのレベルと、記憶状態及びスルー状態との対応関係は逆であってもよい。即ち、マスタラッチ１３に供給されるクロック信号（クロック信号ＣＫ）がＬｏｗレベルであるときにマスタラッチ１３が記憶状態になり、該クロック信号がＨｉｇｈレベルであるときにマスタラッチ１３がスルー状態になってもよい。
【００６２】
図８は、このような場合の出力遅延型フリップフロップ２の構成を示す回路図である。図８では、マスタラッチ１３が、それに供給されるクロック信号（クロック信号ＣＫ）がＬｏｗレベルであるときに記憶状態になり、該クロック信号がＨｉｇｈレベルであるときにスルー状態になるレベルセンシティブＤラッチであることを示すために、クロック信号ＣＫが供給されるマスタラッチ１３の端子に信号が反転されることを示す丸が付されている。図８の出力遅延型フリップフロップ２の構成では、ＡＮＤゲート１２の代わりにＯＲゲート１２Ｂが用いられる。ＯＲゲート１２Ｂは、クロック信号ＣＫと遅延クロック信号ＣＫＤの論理和である論理和クロック信号ＣＫＯを生成する。また、スレーブラッチ１４としては、それに供給されるクロック信号（論理和クロック信号ＣＫＯ）がＨｉｇｈレベルであるときに記憶状態になり、該クロック信号がＬｏｗレベルであるときにスルー状態になるレベルセンシティブＤラッチが用いられる。
【００６３】
図９は、図８の構成の集積回路１０の動作、特に、出力遅延型フリップフロップ２１の動作を示すタイミングチャートである。なお、他の出力遅延型フリップフロップ２の動作も、出力遅延型フリップフロップ２１と同様である。
【００６４】
まず、初期状態において、クロック信号ＣＫと遅延クロック信号ＣＫＤ１が、いずれも、Ｈｉｇｈレベルであるとする。この状態では、マスタラッチ１３がスルー状態に設定され、スレーブラッチ１４が記憶状態に設定されることになる。図９において、データＤｉ−１は、初期状態においてスレーブラッチ１４に記憶されているデータである。
【００６５】
時刻ｔｉにおいてクロック信号ＣＫがＬｏｗレベルに立ち下がると、マスタラッチ１３は記憶状態に遷移する。即ち、時刻ｔｉにおける入力データＤが、マスタラッチ１３に取り込まれて保持される。時刻ｔｉにおける入力データＤを、以下、「データＤｉ」と記載する。
【００６６】
ここで、時刻ｔｉにおいては、共有遅延回路１による信号遅延のために遅延クロック信号ＣＫＤ１がＨｉｇｈレベルのままである。よって、クロック信号ＣＫと遅延クロック信号ＣＫＤ１の論理積である論理和クロック信号ＣＫＯもＨＩＧＨレベルのままであり、スレーブラッチ１４は、記憶状態に維持される。よって、スレーブラッチ１４から出力される出力データＱＤは、データＤｉ−１のままである。
【００６７】
その後、共有遅延回路１による遅延時間ｔＤ１が経過して遅延クロック信号ＣＫＤ１がＬｏｗレベルに立ち下がると、論理和クロック信号ＣＫＯもＬｏｗレベルに立ち下がり、スレーブラッチ１４がスルー状態になる。この時点で、スレーブラッチ１４から出力される出力データＱＤは、データＤｉ（即ち、時刻ｔｉにおいてマスタラッチ１３に取り込まれた入力データＤ）に更新される。
【００６８】
その後、クロック信号ＣＫがＨｉｇｈレベルに立ち上がると、マスタラッチ１３はスルー状態になる。このとき、論理和クロック信号ＣＫＯもＨｉｇｈレベルに立ち上がるため、スレーブラッチ１４は、記憶状態に遷移する。ただし、スレーブラッチ１４から出力される出力データＱＤは、データＤｉのままである。その後は、上記と同様の動作が行われる。
【００６９】
上記の動作においても、スレーブラッチ１４から出力される出力データＱＤが更新されるタイミングが、マスタラッチ１３への入力データＤの取り込み（即ち、クロック信号ＣＫの立ち上がり）から遅延時間ｔＤ１だけ遅れることに留意されたい。このような動作によれば、遅延時間ｔＤ１を適正に設定することで、ホールド時間制約を充足することが可能となる。
【００７０】
図８に図示された出力遅延型フリップフロップ２も、論理的に等価であるような様々な構成に構成され得る。図１０は、図８の出力遅延型フリップフロップ２と等価であるような出力遅延型フリップフロップ２の構成の一例を示している。図１０に図示されているように、ＯＲゲート１２Ｂの代わりに、ＮＯＲゲート１２Ｃが用いられ、スレーブラッチ１４に、論理和クロック信号ＣＫＯの反転信号／ＣＫＯが供給されてもよい。この場合、スレーブラッチ１４としては、供給されるクロック信号（反転信号／ＣＫＯ）がＬｏｗレベルのときにスルー状態になり、Ｈｉｇｈレベルのときに記憶状態になるレベルセンシティブＤラッチが用いられる。なお、供給されるクロック信号がＬｏｗレベルのときにスルー状態になり、Ｈｉｇｈレベルのときに記憶状態になるレベルセンシティブＤラッチの構成は、例えば、図３、図４Ａに図示されている。
【００７１】
（第２の実施形態）
図１１は、第２の実施形態の集積回路１０Ａの構成を示す回路図である。第２の実施形態では、クロック信号ＣＫに対してクロックゲーティングゲート４を用いたクロックゲーティングが行われる。クロックゲーティングゲート４は、クロックイネーブル信号Ｅに応答して、それに入力されたクロック信号ＣＫをそのまま通過させ、又は、クロック信号ＣＫを遮断する動作を行う。以下では、クロックゲーティングゲート４に入力されるクロック信号ＣＫを全体クロック信号ＣＫＧと記載し、クロックゲーティングゲート４から出力されるクロック信号ＣＫを局所クロック信号ＣＫＬと記載することがある。
【００７２】
図１２は、クロックゲーティングゲート４の構成の一例を示すブロック図である。本実施形態では、クロックゲーティングゲート４は、レベルセンシティブＤラッチ５１と、ＡＮＤゲート５２とを備えている。ＡＮＤゲート５２は、レベルセンシティブＤラッチ５１の出力信号と、全体クロック信号ＣＫＧの論理積の信号を出力する。
【００７３】
図１３は、クロックゲーティングゲート４の動作の一例を示すタイミングチャートである。クロックゲーティングゲート４は、以下のように動作する。全体クロック信号ＣＫＧがＨｉｇｈレベルに立ち上がると、レベルセンシティブＤラッチ５１は、クロックイネーブル信号Ｅをラッチする。ラッチされたクロックイネーブル信号ＥがＨｉｇｈレベルであれば、ＡＮＤゲート５２は、全体クロック信号ＣＫＧをそのまま局所クロック信号ＣＫＬとして出力する。ラッチされたクロックイネーブル信号ＥがＬｏｗレベルであれば、ＡＮＤゲート５２は、その出力をＬｏｗレベルに維持し続ける。即ち、局所クロック信号ＣＫＬのクロックパルスの出力が停止される。
【００７４】
図１１を再度に参照して、図１１には、本実施形態の集積回路１０Ａが、局所クロック信号ＣＫＬに同期して動作する通常型フリップフロップ５を含んでいる構成が図示されている。ここで、通常型フリップフロップ５とは、共有遅延回路１によって生成された遅延クロック信号ＣＫＤは供給されず、局所クロック信号ＣＫＬに同期して動作するフリップフロップのことである。これは、本実施形態の集積回路１０Ａの設計段階において、通常型フリップフロップ５の設計データを用いて論理合成を行った後、必要に応じて、一つ又は複数の通常型フリップフロップ５を、出力遅延型フリップフロップ２に置換する処理を行っているからである。本実施形態の集積回路１０Ａの設計方法は、後に詳細に説明する。
【００７５】
通常型フリップフロップ５としては、一般的な構成のフリップフロップを用いても良い。一例としては、通常型フリップフロップ５は、いずれもレベルセンシティグＤラッチとして構成されたマスタラッチ１５及びスレーブラッチ１６を備えていてもよい。マスタラッチ１５は、それに供給されたクロック信号（局所クロック信号ＣＫＬ）がＬｏｗレベルである場合、「スルー状態」に設定され、Ｈｉｇｈレベルである場合、「記憶状態」に設定される。一方、スレーブラッチ１６は、それに供給されたクロック信号（局所クロック信号ＣＫＬ）がＨｉｇｈレベルである場合、「スルー状態」に設定され、Ｌｏｗレベルである場合、「記憶状態」に設定される。このような構成の通常型フリップフロップ５は、局所クロック信号ＣＫＬの立ち上がりエッジに応じてデータ入力に入力されたデータをラッチする動作を行う。
【００７６】
図１１には、集積回路１０Ａのうち、一つのクロックゲーティングゲート４に対応する回路部分の構成しか詳細には図示されていないが、一般的な集積回路では、複数のクロックゲーティングゲート４が設けられ得ることに留意されたい。この場合、各クロックゲーティングゲート４に個別にクロックイネーブル信号Ｅが供給され、更に、各クロックゲーティングゲート４について、図１１に図示されているような回路が設けられることになる。ここで、本実施形態では、共有遅延回路１が局所クロック信号ＣＫＬを遅延して遅延クロック信号ＣＫＤを生成するように構成されているので、共有遅延回路１が、各クロックゲーティングゲート４に対して一つ設けられることに留意されたい。
【００７７】
クロックゲーティングゲート４が用いられる点、及び、通常型フリップフロップ５が明示的に図示されている点を除けば、第２の実施形態の集積回路１０Ａの構成は、第１の実施形態の集積回路１０と同様である。なお、上述の第１の実施形態の集積回路１０においても、出力遅延型フリップフロップ２に加え、図１１に図示されている通常型フリップフロップ５も集積化されても良いことに留意されたい。
【００７８】
本実施形態の集積回路１０Ａの動作は、クロックイネーブル信号Ｅに応じて局所クロック信号ＣＫＬのクロックパルスが出力され、又はクロックパルスの出力が停止される点を除けば、第１の実施形態の集積回路１０と同様である。クロックイネーブル信号Ｅがアサートされている（本実施形態では、Ｈｉｇｈレベルに設定される）ときの本実施形態の集積回路１０Ａの動作は、第１の実施形態の集積回路１０と同様である。このとき、通常型フリップフロップ５は、局所クロック信号ＣＬＫが立ち上がるときに入力されたデータを記憶してデータ出力から出力する。一方、クロックイネーブル信号Ｅがネゲートされているときには、本実施形態の集積回路１０Ａの出力遅延型フリップフロップ２、５は、データ取り込みを行わず、出力遅延型フリップフロップ２、５は、記憶しているデータを保持し続ける。
【００７９】
続いて、本実施形態の集積回路１０Ａの設計方法及び製造方法について説明する。本実施形態の集積回路１０Ａは、図１４に図示されている構成の集積回路設計装置６０によって設計されても良い。本実施形態では、集積回路設計装置６０が、一般的なコンピュータとして構成されており、外部記憶装置６１と、演算装置６２と、メモリ６３と、入力装置６４と、出力装置６５とを備えている。
【００８０】
外部記憶装置６１には、論理合成ツール６６と、配置・配線ツール６７と、回路シミュレーションツール６８とがインストールされている。論理合成ツール６６と、配置・配線ツール６７と、回路シミュレーションツール６８とは、いずれも、集積回路の設計を行うために使用されるソフトウェアプログラムである。論理合成ツール６６は、ＲＴＬ（register transfer level）記述を翻訳して論理合成を行い、ネットリストを生成する。
配置・配線ツール６７は、論理合成ツール６６によって生成されたネットリストに基づいて配置、配線を行い、設計対象の集積回路のレイアウトを示すレイアウトデータを生成するソフトウェアプログラムである。回路シミュレーションツール６８は、ネットリスト又はレイアウトデータに基づいて回路シミュレーションを行うソフトウェアプログラムである。回路シミュレーションツール６８は、タイミング解析に使用される。後述されるように、本実施形態では、各タイミングパスのホールド時間制約の違反の発生の有無、及び、ホールド時間制約の違反が発生した場合には、その違反量が、回路シミュレーションツール６８を実行することで算出される。ここで、ホールド時間制約の違反量は、仕様に決められたホールド時間の許容最小値と、回路シミュレーションツールで得られたホールド時間の値の差分として算出される。
【００８１】
外部記憶装置６１には、更に、セルライブラリ６９が用意されている。セルライブラリ６９は、論理合成ツール６６による論理合成及び配置・配線ツール６７による配置・配線に用いられる。このセルライブラリ６９には、上述の局所クロック信号ＣＫＬと遅延クロック信号ＣＫＤとの両方に同期して動作する出力遅延型フリップフロップ２と、局所クロック信号ＣＫＬのみに同期して動作する通常型フリップフロップ５とが、スタンダードセルとして登録されている。即ち、セルライブラリ６９には、出力遅延型フリップフロップ２を収容したスタンダードセルの設計情報（論理機能、電気的特性、及びレイアウト等）と、通常型フリップフロップ５を収容したスタンダードセルの設計情報が登録されている。
【００８２】
出力遅延型フリップフロップ２を収容したスタンダードセルがセルライブラリ６９に登録される理由は、下記のとおりである。図２のタイミングチャートに示されるように、この出力遅延型フリップフロップ２はクロック信号ＣＫ（本実施形態では、局所クロック信号ＣＬＫ）が立ち下がると、マスタラッチ１３とスレーブラッチ１４のクロック入力端子への信号がともに立ち下がることを前提として設計されている。このとき、スレーブラッチ１４のクロック入力端子の立ち下がりが、マスタラッチ１３のクロック入力端子の立ち下がりから大きく遅延していると、マスタラッチ１３とスレーブラッチ１４とが同時にスルー状態になり、誤動作してしまう。そのため、本実施形態では、ＡＮＤゲート１２とマスタラッチ１３とスレーブラッチ１４とが、１つのスタンダードセルとして設計される。
【００８３】
演算装置６２は、論理合成ツール６６と、配置・配線ツール６７と、回路シミュレーションツール６８とを実行し、集積回路の設計を行う。メモリ６３は、演算装置６２による演算のワークエリアとして用いられる。入力装置６４と出力装置６５は、集積回路設計装置６０のマン−マシンインターフェースを構成している。入力装置６４としては、例えば、キーボードやマウス等が用いられる。出力装置６５としては、例えば、表示装置やプリンタ等が用いられる。
【００８４】
図１５は、本実施形態における集積回路１０Ａの設計手順、特に、設計対象の集積回路１０ＡのＲＴＬ記述７０から、当該集積回路１０Ａのネットリストを生成する手順を示すフローチャートである。
【００８５】
ステップＳ０１：
ステップＳ０１では、設計対象の集積回路を記述したＲＴＬ記述７０に対して論理合成ツール６６を用いて論理合成が行われる。ステップＳ０１の論理合成により、設計対象の集積回路のネットリストが中間結果として得られる。ステップＳ０１の論理合成においては、集積回路に集積化されるフリップフロップとして、通常型フリップフロップ５のスタンダードセルが用いられる（出力遅延型フリップフロップ２は用いられない）。
【００８６】
ステップＳ０２：
ステップＳ０２では、ステップＳ０１で生成されたネットリストに基づいて回路シミュレーションツール６８を用いて設計対象の集積回路のタイミング解析が行われる。ステップＳ０２のタイミング解析では、各タイミングパスのホールド時間違反の発生の有無、及び、ホールド時間違反が発生した場合には、その違反量が計算される。
【００８７】
図２１、図２２Ａ、図２２Ｂは、ある通常型フリップフロップ５（以下、「通常型フリップフロップ５Ｌ」という。）の出力を起点とするタイミングパス３のホールド時間違反の発生の有無の検出について説明する図である。ここで、当該タイミングパス３の出力に接続された通常型フリップフロップ５を、以下では、「通常型フリップフロップ５Ｃ」と記載する。また、クロックゲーティングゲート４の出力から通常型フリップフロップ５Ｌのクロック端子までの経路で発生する局所クロック信号ＣＫＬの遅延時間を“ＤＬ”と表記し、クロックゲーティングゲート４の出力から通常型フリップフロップ５Ｃのクロック端子までの経路で発生する局所クロック信号ＣＫＬの遅延時間を“ＤＣ”と表記する。また、タイミングパス３において発生する遅延時間を“ＤＸ”と表記する。この場合、通常型フリップフロップ５Ｌを基準とした場合の、通常型フリップフロップ５Ｌ、５Ｃの間のクロックスキューΔＣＫは、ΔＣＫ＝ＤＣ−ＤＬである。
【００８８】
図２２Ａ、図２２Ｂを参照して、例えば、局所クロックＣＫＬの特定のエッジ（エッジ＃０）に同期して通常型フリップフロップ５Ｌに取り込まれたデータについて考える。エッジ＃０に同期して通常型フリップフロップ５Ｌに取り込まれたデータは、次のエッジ（エッジ＃１）に同期して通常型フリップフロップ５Ｃに取り込まれなければならない。
【００８９】
通常型フリップフロップ５Ｌ、５Ｃの間でクロックスキューが発生していない場合、即ち、遅延時間ＤＬと遅延時間ＤＣとが等しい場合、図２２Ａに図示されているように、通常型フリップフロップ５Ｃのホールド時間ｔＨＬＤは、タイミングパス３の遅延時間ＤＸに一致する。よって、タイミングパス３の遅延時間ＤＸが、設計仕様に規定されたホールド時間の許容最小値ｔＨＬＤ＿ＭＩＮよりも大きければ、タイミングパス３のホールド時間制約は充足されることになる。逆に、タイミングパス３の遅延時間ＤＸが設計仕様に規定されたホールド時間の許容最小値ｔＨＬＤ＿ＭＩＮよりも小さい場合には、ホールド時間違反が発生することになる。
【００９０】
図２２Ｂに図示されているようにクロックゲーティングゲート４の出力から通常型フリップフロップ５Ｃのクロック端子までの経路で発生する局所クロック信号ＣＫＬの遅延時間ＤＣがクロックゲーティングゲート４の出力から通常型フリップフロップ５Ｌのクロック端子までの経路で発生する局所クロック信号ＣＫＬの遅延時間ＤＬよりも大きくなるクロックスキューが発生すると、ホールド時間違反が発生しやすくなる。この場合、通常型フリップフロップ５Ｃのホールド時間ｔＨＬＤは、下記式（１）：
ｔＨＬＤ＝ＤＸ−（ＤＣ−ＤＬ）
＝ＤＸ−ΔＣＫ                        ・・・（１）
で表わされる。
【００９１】
あるタイミングパス３のタイミング解析により得られた通常型フリップフロップ５Ｃのホールド時間ｔＨＬＤが、設計仕様に規定されたホールド時間の許容最小値ｔＨＬＤ＿ＭＩＮよりも小さい場合、当該タイミングパス３においてホールド時間違反が発生することになる。この場合、当該タイミングパス３のホールド時間違反の違反量ＥＨＬＤは、下記式（２）で表わされる：
ＥＨＬＤ＝ｔＨＬＤ＿ＭＩＮ−ｔＨＬＤ
＝ｔＨＬＤ＿ＭＩＮ−ＤＸ＋ΔＣＫ        ・・・（２）
なお、式（２）は、通常型フリップフロップ５Ｌと通常型フリップフロップ５Ｃの間でクロックスキューが発生していない場合（即ち、ＤＬ＝ＤＣの場合）、及び、遅延時間ＤＣが遅延時間ＤＬよりも小さくなるクロックスキューが発生した場合（即ち、ＤＣ＜ＤＬの場合）にも成立することに留意されたい。
【００９２】
ステップＳ０３：
図１５を再度に参照して、ステップＳ０３では、処理対象のクロックゲーティングゲート４が指定される。以下に述べられるステップＳ０４、Ｓ０５の処理は、ステップＳ０３で指定されたクロックゲーティングゲート４から局所クロック信号ＣＫＬを受け取る通常型フリップフロップ５、及び、それらの通常型フリップフロップ５の出力を起点とするタイミングパス３に適用される。
【００９３】
ステップＳ０４：
ステップＳ０４においては、共有遅延回路１が生成される。一実施形態では、共有遅延回路１は、ホールド時間違反が発生する全てのタイミングパス３について、ホールド時間違反を解消できる遅延時間だけ局所クロック信号ＣＫＬから遅延された遅延クロック信号ＣＫＤを生成できるように生成される。一実施形態では、共有遅延回路１として、多数の遅延ゲートを直列接続した回路が用いられ得る。この場合、共有遅延回路１の最大の遅延時間は、ホールド時間違反が発生するタイミングパス３のホールド時間違反量のうち最大のホールド時間違反量以上であるように決定される。共有遅延回路１の各遅延ゲートの出力からは、遅延時間が異なる遅延クロック信号ＣＫＤが出力可能であることに留意されたい。
【００９４】
ステップＳ０５：
ステップＳ０５では、ホールド時間違反が発生しているタイミングパス３の起点となっている通常型フリップフロップ５が、局所クロック信号ＣＫＬと遅延クロック信号ＣＫＤとに同期して動作する出力遅延型フリップフロップ２に置換される。当該出力遅延型フリップフロップ２のクロック入力端子（局所クロック信号ＣＫＬが入力される端子）にはクロックゲーティングゲート４の出力が接続される。また、当該出力遅延型フリップフロップ２の遅延クロック入力端子（遅延クロック信号ＣＫＤが入力される端子）には、共有遅延回路１の遅延ゲートのうち、局所クロック信号ＣＫＬからの遅延時間ｔＤが適切な遅延クロック信号ＣＫＤを出力する遅延ゲートの出力が接続される。なお、ホールド時間違反が発生しているタイミングパス３のいずれの起点にもなっていない通常型フリップフロップ５については、そのまま残される。
【００９５】
図２３、図２４は、ある出力遅延型フリップフロップ２（以下では、「出力遅延型フリップフロップ２Ｌ」という）に供給される遅延クロック信号ＣＫＤの局所クロック信号ＣＫＬからの適切な遅延時間ｔＤＬの決定方法について説明する図である。出力遅延型フリップフロップ２Ｌの出力にタイミングパス３が接続され、タイミングパス３の出力に通常型フリップフロップ５Ｃが接続されているとする。図２４から理解されるように、出力遅延型フリップフロップ２Ｌに供給される遅延クロック信号ＣＫＤの局所クロック信号ＣＫＬからの遅延時間がｔＤＬである場合、通常型フリップフロップ５Ｃのホールド時間ｔＨＬＤは、下記式（３）によって決定される：
ｔＨＬＤ＝ＤＸ＋ｔＤＬ−ΔＣＫ      ・・・（３）
【００９６】
式（３）で決定されるホールド時間ｔＨＬＤが、ホールド時間の許容最小値ｔＨＬＤ＿ＭＩＮ以上であれば、即ち、
ｔＨＬＤ≧ｔＨＬＤ＿ＭＩＮ        ・・・（４）
であれば、ホールド時間違反が解消される。式（３）を式（４）に代入すると、出力遅延型フリップフロップ２Ｌに供給される遅延クロック信号ＣＫＤの局所クロック信号ＣＫＬからの遅延時間ｔＤＬが満たすべき条件が、下記式（５）によって得られる：
ｔＤＬ≧ｔＨＬＤ＿ＭＩＮ−ＤＸ＋ΔＣＫ      ・・・（５）
局所クロック信号ＣＫＬからの遅延時間ｔＤＬが式（５）を満たすような遅延クロック信号ＣＫＤを出力遅延型フリップフロップ２Ｌに供給することで、ホールド時間違反を解消することができる。
【００９７】
式（５）から理解されるように、ホールド時間違反を解消する遅延時間ｔＤＬの最小値は、ｔＨＬＤ＿ＭＩＮ−ＤＸ＋ΔＣＫである。マージンを考慮すると、出力遅延型フリップフロップ２Ｌに供給される遅延クロック信号ＣＫＤの局所クロック信号ＣＫＬからの遅延時間ｔＤＬは、
ｔＤＬ＝ｔＨＬＤ＿ＭＩＮ−ＤＸ＋ΔＣＫ＋ΔＭ        ・・・（６）
として決定されることが望ましい。ここで、ΔＭは、所定のマージンである。
【００９８】
なお、図２３では、タイミングパス３の出力に通常型フリップフロップ５Ｃが接続されている構成が図示されているが、タイミングパス３の出力には、局所クロック信号ＣＫＬと遅延クロック信号ＣＫＤとに同期して動作する出力遅延型フリップフロップ２が接続されていてもよい。
【００９９】
ステップＳ０４では、ステップＳ０２においてホールド時間違反が発生すると判断されたタイミングパス３の起点となる出力遅延型フリップフロップ２に、局所クロック信号ＣＫＬからの遅延時間ｔＤが適切に決められた遅延クロック信号ＣＫＤを供給可能なように、共有遅延回路１が生成される。また、ステップＳ０５では、局所クロック信号ＣＫＬからの遅延時間ｔＤが適切に決められた遅延クロック信号ＣＫＤが供給されるように、出力遅延型フリップフロップ２の遅延クロック入力端子に出力が接続されるべき共有遅延回路１の遅延ゲートが決定される。
【０１００】
ステップＳ０６：
ステップＳ０６では、全てのクロックゲーティングゲート４についてステップＳ０３〜Ｓ０５の処理が行われたか判断が行われる。ステップＳ０３〜Ｓ０５の処理が行われていないクロックゲーティングゲート４が存在する場合、ステップＳ０３においてクロックゲーティングゲート４が指定されてステップＳ０４、Ｓ０５の処理が行われる。
【０１０１】
ステップＳ０７：
全てのクロックゲーティングゲート４についてステップＳ０３〜Ｓ０５の処理が行われると、本実施形態の集積回路１０Ａのネットリストが出力される。詳細には、ステップＳ０１の論理合成で得られたネットリストが、ステップＳ０４において生成された共有遅延回路１が追加され、ステップＳ０５において新たに組み込まれた出力遅延型フリップフロップ２のクロック入力端子にクロックゲーティングゲート４の出力が接続され、且つ、該出力遅延型フリップフロップ２の遅延クロック入力端子に共有遅延回路１の適切な遅延ゲートの出力が接続されるように修正される。修正されたネットリストが、最終的に用いられるネットリストとして出力される。出力されたネットリストは、外部記憶装置６１に記憶される。以上の設計手順により、図１１に図示された本実施形態の集積回路１０Ａのネットリストを得ることができる。一実施形態では、上記のステップＳ０３〜Ｓ０７は、論理合成ツール６６によって行われる。
【０１０２】
上記の設計手順によって得られたネットリストは、図１１に図示された本実施形態の集積回路１０Ａの製造に使用される。詳細には、得られたネットリストに基づいて配置・配線ツール６２によって配置・配線が行われ、図１１に図示された本実施形態の集積回路１０Ａのレイアウトを示すレイアウトデータが生成される。さらに、そのレイアウトデータに基づいて集積回路１０Ａのウェハ処理（前工程、拡散工程とも呼ばれる）に用いられるマスク（レチクル）が作製される。作製されたマスクを用いてウェハ処理が行われて、本実施形態の集積回路１０Ａが製造される。
【０１０３】
上記の設計手順において、ステップＳ０５における通常型フリップフロップ５の出力遅延型フリップフロップ２への置換は、以下の条件判定に基づいて行ってもよい。該条件判定では、まず、ステップＳ０２においてホールド時間違反が発生していると判断されたタイミングパス３の起点となる通常型フリップフロップ５について、クロックイネーブル信号Ｅがアサートされた状態である場合の記憶データの信号遷移確率の計算が行われる。更に、最悪のホールド時間違反量であるホールド時間遅延が発生するタイミングパス３について、当該タイミングパス３に挿入されたときにホールド時間違反を補償可能な遅延バッファが仮に設計される。更に、当該タイミングパス３の信号遷移が起こった時に該遅延バッファで消費される電力が計算され、更に、その電力に信号遷移確率を乗じて、該遅延バッファのトータルの消費電力の推定値が算出される。該遅延バッファのトータルの消費電力の推定値が、出力遅延型フリップフロップ２のＡＮＤゲート１２の消費電力よりも大きければ、通常型フリップフロップ５から出力遅延型フリップフロップ２への置換が行われ、等しいか小さい場合は置換を行わず、通常型フリップフロップ５のまま残存される。
【０１０４】
本実施形態の集積回路１０Ａは、第１の実施形態の集積回路１０と同様に、当該集積回路１０Ａに含まれるフリップフロップを起点とするタイミングパスのホールド時間制約を、小さい面積と電力で充足することが可能となるという利点を有する。加えて、本実施形態の集積回路１０Ａは、ホールド時間違反が発生しない場合に通常型フリップフロップ５を用いることで、集積回路１０Ａに集積化される出力遅延型フリップフロップ２の数を抑制して、面積と電力の増加を抑制できる利点がある。更に、本実施形態の集積回路１０Ａは、クロックゲーティングゲート４を用いることで、共有遅延回路１の消費電力を抑えることができるという利点を有する。
【０１０５】
なお、本実施形態の集積回路１０Ａの構成を示す図１１では、ＡＮＤゲート１２を含む構成の出力遅延型フリップフロップ２（図１参照）が用いられている構成が図示されているが、第２の実施形態においても、図５、図８、図１０のいずれに図示されている構成の出力遅延型フリップフロップ２を使用しても良い。このとき、マスタラッチ１３及びスレーブラッチ１４は、図３、図４Ａ、図６、図７のいずれの構成を採用しても良い。
【０１０６】
（第３の実施形態）
図１６は、第３の実施形態の集積回路１０Ｂの構成を示す回路図である。第３の実施形態の集積回路１０Ｂの構成は、第２の実施形態の集積回路１０Ａの構成と類似している。ただし、第３の実施形態の集積回路１０Ｂは、次の点で第２の実施形態の集積回路１０Ａと相違している。第１に、共有遅延回路１が、異なるクロックゲーティングゲート４から出力される局所クロック信号ＣＫＬを受け取る出力遅延型フリップフロップ２の間で共有されている。加えて、クロックゲーティングゲート４から出力される局所クロック信号ＣＫＬの代わりに、クロックゲーティングゲート４に入力される全体クロック信号ＣＫＧが共有遅延回路１に供給される
【０１０７】
第３の実施形態の集積回路１０Ｂの基本的な動作は、クロックイネーブル信号Ｅがネゲートされていても出力遅延型フリップフロップ２に供給される遅延クロック信号ＣＫＤの遷移が継続される点を除けば、第２の実施形態の集積回路１０Ａと同様である。詳細には、クロックイネーブル信号Ｅがネゲートされると（本実施形態では、Ｌｏｗレベルに設定されると）、局所クロック信号ＣＫＬは、（Ｈｉｇｈレベルに遷移することなく）Ｌｏｗレベルに維持されることになる。一方で、本実施形態の集積回路１０Ｂでは、全体クロック信号ＣＫＧが共有遅延回路１に供給されるので、クロックイネーブル信号Ｅがネゲートされていても出力遅延型フリップフロップ２に供給される遅延クロック信号ＣＫＤのクロックパルスの出力が継続されることになる。しかしながら、クロックイネーブル信号Ｅがネゲートされている場合には出力遅延型フリップフロップ２のＡＮＤゲート１２に入力される局所クロック信号ＣＫＬがＬｏｗレベルのままに維持されるので、スレーブラッチ１４に遅延クロック信号ＣＫＤの遷移が伝播されることはない。
【０１０８】
図１７は、本実施形態の集積回路１０Ｂの設計手順を示すフローチャートである。本実施形態の集積回路１０Ｂの設計手順は、第２の実施形態の集積回路１０Ａの設計手順と類似している。ただし、本実施形態の集積回路１０Ｂの設計手順は、次の点で、第２の実施形態の集積回路１０Ａの設計手順と相違している。第１に、実施形態の集積回路１０Ｂの設計手順では、クロックゲーティングゲート４を指定するステップ（ステップＳ０３）が存在しない。加えて、ステップＳ０４、Ｓ０５の処理が、ステップＳ０１の論理合成で得られたネットリスト（集積回路１０Ｂ全体のＲＴＬ記述７０から論理合成で得られたネットリスト）に記述された全ての通常型フリップフロップ５及びタイミングパス３について行われる。
【０１０９】
詳細には、ステップＳ０１では、設計対象の集積回路１０Ｂを記述したＲＴＬ記述７０に対して論理合成ツール６６を用いて論理合成が行われ、集積回路１０Ｂのネットリストが中間結果として得られる。ステップＳ０１の論理合成においては、集積回路に集積化されるフリップフロップとして、通常型フリップフロップ５のスタンダードセルが用いられる（出力遅延型フリップフロップ２は用いられない）。
【０１１０】
ステップＳ０２では、ステップＳ０１で生成されたネットリストに基づいて回路シミュレーションツール６８を用いて設計対象の集積回路のタイミング解析が行われる。ステップＳ０２のタイミング解析では、各タイミングパスのホールド時間違反の発生の有無、及び、ホールド時間違反が発生した場合には、その違反量が計算される。
【０１１１】
ステップＳ０４においては、共有遅延回路１が生成される。本実施形態では、共有遅延回路１は、ホールド時間違反が発生する全てのタイミングパス３について、ホールド時間違反を解消できる遅延時間だけ局所クロック信号ＣＫＬから遅延された遅延クロック信号ＣＫＤを生成できるように生成される。
【０１１２】
ステップＳ０５では、ホールド時間違反が発生しているタイミングパス３の起点となっている通常型フリップフロップ５が、局所クロック信号ＣＫＬと遅延クロック信号ＣＫＤとに同期して動作する出力遅延型フリップフロップ２に置換される。当該出力遅延型フリップフロップ２のクロック入力端子（局所クロック信号ＣＫＬが入力される端子）にはクロックゲーティングゲート４の出力が接続される。また、当該出力遅延型フリップフロップ２の遅延クロック入力端子（遅延クロック信号ＣＫＤが入力される端子）には、共有遅延回路１の遅延ゲートのうち、局所クロック信号ＣＫＬからの遅延時間が適切な遅延クロック信号ＣＫＤを出力する遅延ゲートの出力が接続される。
【０１１３】
局所クロック信号ＣＫＬからの遅延クロック信号ＣＫＤの遅延時間ｔＤの適切な決定については、第２の実施形態において説明したとおりである。即ち、ある出力遅延型フリップフロップ２の出力がタイミングパス３の起点になっている場合、局所クロック信号ＣＫＬからの遅延時間ｔＤが下記式（７）：
ｔＤ≧ｔＨＬＤ＿ＭＩＮ−ＤＸ＋ΔＣＫ      ・・・（７）
を満たすような遅延クロック信号ＣＫＤを当該出力遅延型フリップフロップ２に供給することで、ホールド時間違反を解消することができる。ここで、ΔＣＫは、当該タイミングパス３の起点になっている出力遅延型フリップフロップ２と、当該タイミングパス３の出力に接続されたフリップフロップ（出力遅延型フリップフロップ２又は５）との間のクロックスキューである。
【０１１４】
また、マージンΔＭを考慮すると、遅延時間ｔＤは、下記式
ｔＤ＝ｔＨＬＤ＿ＭＩＮ−ＤＸ＋ΔＣＫ＋ΔＭ        ・・・（８）
で決定されることが好ましい。なお、ステップＳ０５においては、ホールド時間違反が発生しているタイミングパス３のいずれの起点にもなっていない通常型フリップフロップ５については、そのまま残される。
【０１１５】
ステップＳ０７においては、本実施形態の集積回路１０Ｂのネットリストが出力される。詳細には、ステップＳ０１の論理合成で得られたネットリストが、ステップＳ０４において生成された共有遅延回路１が追加され、且つ、ステップＳ０５において新たに組み込まれた出力遅延型フリップフロップ２のクロック入力端子にクロックゲーティングゲート４の出力が接続され、且つ、該出力遅延型フリップフロップ２の遅延クロック入力端子に共有遅延回路１の適切な遅延ゲートの出力が接続されるように修正される。修正されたネットリストが、最終的に用いられるネットリストとして出力される。出力されたネットリストは、外部記憶装置６１に記憶される。以上の設計手順により、図１１に図示された本実施形態の集積回路１０Ｂのネットリストを得ることができる。一実施形態では、上記のステップＳ０４、Ｓ０５、Ｓ０７は、論理合成ツール６６によって行われる。
【０１１６】
上記の設計手順によって得られたネットリストは、第２の実施形態と同様に、図１６に図示された本実施形態の集積回路１０Ｂの製造に使用される。得られたネットリストに基づいて配置・配線ツール６２によって配置・配線が行われ、図１６に図示された本実施形態の集積回路１０Ｂのレイアウトを示すレイアウトデータが生成される。さらに、そのレイアウトデータに基づいて集積回路１０Ｂのウェハ処理（前工程、拡散工程とも呼ばれる）に用いられるマスク（レチクル）が作製される。作製されたマスクを用いてウェハ処理が行われて、本実施形態の集積回路１０Ｂが製造される。
【０１１７】
本実施形態の集積回路１０Ｂは、第１及び第２の実施形態の集積回路１０、１０Ａと同様に、当該集積回路１０Ｂに含まれるフリップフロップを起点とするタイミングパスのホールド時間制約を、小さい面積と電力で充足することが可能となるという利点を有する。ここで、本実施形態の集積回路１０Ｂは、第１及び第２の実施形態の集積回路１０、１０Ａに比べて面積や電力を低減できる効果が大きい。詳細には、本実施形態の集積回路１０Ｂでは、共有遅延回路１が、同一のクロックゲーティングゲート４から局所クロック信号ＣＫＬが供給される出力遅延型フリップフロップ２の間で共有するのではなく、集積回路１０Ｂに含まれる出力遅延型フリップフロップ２の全てで共有される。このため、集積回路１０Ｂの面積が大幅に低減される。本実施形態では、共有遅延回路１の信号遷移を遮断しないため、当該共有遅延回路１の電力は増大する。しかしながら、第２の実施形態の集積回路１０Ａでは、クロックゲーティングゲート４と同数の共有遅延回路１が設けられるのに対し、第３の実施形態の集積回路１０Ｂでは、複数のクロックゲーティングゲート４について１つの共有遅延回路１が設けられ、共有遅延回路１の数を低減することができる。これにより、信号が遷移するノードの数が低減され、電力も低減することが可能となる。
【０１１８】
なお、本実施形態の集積回路１０Ｂの構成を示す図１６では、ＡＮＤゲート１２を含む構成の出力遅延型フリップフロップ２（図１参照）が用いられている構成が図示されているが、第３の実施形態においても、図５、図８、図１０のいずれに図示されている構成の出力遅延型フリップフロップ２を使用しても良い。このとき、マスタラッチ１３及びスレーブラッチ１４は、図３、図４、図６、図７のいずれの構成を採用しても良い。
【０１１９】
（第４の実施形態）
図１８は、第４の実施形態の集積回路１０Ｃの構成を示す回路図である。第４の実施形態の集積回路１０Ｃは、第３の実施形態の集積回路１０Ｃと類似した構成を有している。ただし、第４の実施形態の集積回路１０Ｃは、共有遅延回路１に可変遅延回路１９が含まれる点と、スキャンテストに対応したフリップフロップが用いられる点で、第３の実施形態の集積回路１０Ｃと相違している。当業者に周知のように、スキャンテストに対応するフリップフロップでは、マスタラッチのデータ入力に、データ入力とスキャン入力とを選択すするマルチプレクサが接続される。
【０１２０】
詳細には、本実施形態の集積回路１０Ｃは、共有遅延回路７１と、少なくとも一のフリップフロップ７２（図１８では、フリップフロップ７２１〜７２３）と、タイミングパス７３と、クロックゲーティングゲート７４と、通常型フリップフロップ７５と、ＯＲゲート７６とを備えている。図１８には、集積回路１０Ｃが３つのフリップフロップ７２１〜７２３を備えている構成が図示されているが、フリップフロップ７２の数は３に限定されない。
【０１２１】
共有遅延回路７１は、クロック信号ＣＫを遅延して少なくとも１つの遅延クロック信号ＣＫＤを生成する遅延回路部であり、可変遅延回路１９に加え、遅延回路１１１、１１２を備えている。可変遅延回路１９は、外部から供給される制御信号によって遅延時間が可変であるように構成されている。図１８の回路構成では、共有遅延回路７１は、３つの遅延クロック信号ＣＫＤ１〜ＣＫＤ３を生成し、それぞれ、フリップフロップ７２１〜７２３に供給する。詳細には、可変遅延回路１９は、クロック信号ＣＫを遅延して遅延クロック信号ＣＫＤ３を生成する。遅延回路１１２は、遅延クロック信号ＣＫＤ３を遅延して遅延クロック信号ＣＫＤ２を生成する。遅延回路１１１は、遅延クロック信号ＣＫＤ２を遅延して遅延クロック信号ＣＫＤ１を生成する。遅延クロック信号ＣＫＤ１〜ＣＫＤ３のクロック信号ＣＫからの遅延時間は、可変遅延回路１９の遅延時間を調節することによって調節可能である。
【０１２２】
図１９は、可変遅延回路１９の構成の例を示す回路図である。本実施形態の可変遅延回路１９は、直列接続されたｍ個の単位可変遅延回路８１１〜８１ｍを備えている。単位可変遅延回路８１１〜８１ｍには、それぞれ、１ビットの設定信号Ｃｏｎｆ１〜Ｃｏｎｆｍが供給される。後述されるように、設定信号Ｃｏｎｆｉは（ｉは、１以上、ｍ以下の整数）、単位可変遅延回路８１ｉにおいて遅延を発生させるか否かを指定するための信号である。
【０１２３】
各単位可変遅延回路８１ｉは、ＡＮＤゲート８２と、直列接続されたｎｉ個の遅延バッファ８３と、マルチプレクサ８４とを備えている。ＡＮＤゲート８２は、クロック信号ＣＫと設定信号Ｃｏｎｆｉの論理積の信号を出力する。遅延バッファ８３は、ＡＮＤゲート８２の出力信号を順次に遅延する。ＡＮＤゲート８２と遅延バッファ８３とは、クロック信号ＣＫを遅延するパスを構成している。マルチプレクサ８４は、設定信号Ｃｏｎｆｉに応答して、クロック信号ＣＫを遅延するパスと遅延させないパスの一方を選択する。即ち、マルチプレクサ８４は、設定信号Ｃｏｎｆｉに応答して、遅延バッファ８３の出力信号とクロック信号ＣＫの一方の信号を選択し、選択した信号を遅延クロック信号ＣＫＤとして出力する。ＡＮＤゲート８２は、クロック信号ＣＫを遅延するパスを選択しない場合に不要な信号遷移を伝播させないために設けられている。このような構成は、可変遅延回路１９において出力信号を遷移させる遅延バッファ８３の数を最小限に抑え、電力消費を抑える利点を有する。
【０１２４】
このように構成された可変遅延回路１９は、各単位可変遅延回路８１ｉの各々の遅延バッファ８３の数を２のべき乗に整数を乗じたものにすることで、２ｍ通りの遅延時間の設定が可能である。後述されるように、可変遅延回路１９は、スキャンテストによってホース時間違反が発生すると判断されたときに、遅延クロック信号ＣＫＤのクロック信号ＣＫからの遅延時間を調節するために用いられる。
【０１２５】
なお、図１８には、遅延回路１１１、１１２と可変遅延回路１９とを備える構成が図示されているが、遅延回路１１１、１１２のそれぞれの代わりに可変遅延回路１９が用いられてもよい。この場合、遅延クロック信号ＣＫＤ１〜ＣＫＤ３のクロック信号ＣＫからの遅延時間が個別に調節可能になる。
【０１２６】
各フリップフロップ７２は、第１乃至第３の実施形態で用いられる出力遅延型フリップフロップ２と同様に、ＡＮＤゲート１２と、マスタラッチ１３と、スレーブラッチ１４とを備えている。ＡＮＤゲート１２は、各出力遅延型フリップフロップ２に供給されたクロック信号ＣＫと遅延クロック信号ＣＫＤとの論理積の信号である論理積クロック信号ＣＫＡを出力する。マスタラッチ１３は、クロック信号ＣＫに同期して動作するレベルセンシティブＤラッチ（ＤＬ）として構成されている。スレーブラッチ１４は、論理積クロック信号ＣＫＡに同期して動作するレベルセンシティブＤラッチ（ＤＬ）として構成されている。ただし、スレーブラッチ１４は、それに供給されるクロック信号のレベルと、「スルー状態」「記憶状態」の間の対応関係が、マスタラッチ１３とは逆であるように構成されている。このような動作を示すために、図１８では、スレーブラッチ１４のクロック入力端子に論理否定を示す符号が付加されていることに留意されたい。
【０１２７】
加えて、各フリップフロップ７２は、マスタラッチ１３のデータ入力に接続されたマルチプレクサ１７を備えている。マルチプレクサ１７は、スキャンイネーブル信号ＳＥに応答して、データ入力（Ｄ）とスキャン入力（ＳＩ）の一方を、マスタラッチ１３のデータ入力に接続する。スキャンイネーブル信号ＳＥがネゲートされると（本実施形態では、Ｌｏｗレベルに設定されると）、マルチプレクサ１７は、フリップフロップ７２のデータ入力（Ｄ）をマスタラッチ１３のデータ入力に接続する。また、スキャンイネーブル信号ＳＥがアサートされると（本実施形態では、Ｈｉｇｈレベルに設定されると）、マルチプレクサ１７は、フリップフロップ７２のスキャン入力（ＳＩ）をマスタラッチ１３のデータ入力に接続する。
【０１２８】
通常型フリップフロップ７５も同様に、マスタラッチ１５及びスレーブラッチ１６に加え、マルチプレクサ１８を備えている。マスタラッチ１５及びスレーブラッチ１６は、いずれもレベルセンシティグＤラッチとして構成されている。マスタラッチ１５は、それに供給されたクロック信号（局所クロック信号ＣＫＬ）がＬｏｗレベルである場合、「スルー状態」に設定され、Ｈｉｇｈレベルである場合、「記憶状態」に設定される。一方、スレーブラッチ１６は、それに供給されたクロック信号（局所クロック信号ＣＫＬ）がＨｉｇｈレベルである場合、「スルー状態」に設定され、Ｌｏｗレベルである場合、「記憶状態」に設定される。マルチプレクサ１８は、スキャンイネーブル信号ＳＥに応答して、データ入力（Ｄ）とスキャン入力（ＳＩ）の一方を、マスタラッチ１５のデータ入力に接続する。スキャンイネーブル信号ＳＥがネゲートされると（本実施形態では、Ｌｏｗレベルに設定されると）、マルチプレクサ１８は、フリップフロップ７２のデータ入力（Ｄ）をマスタラッチ１５のデータ入力に接続する。また、スキャンイネーブル信号ＳＥがアサートされると（本実施形態では、Ｈｉｇｈレベルに設定されると）、マルチプレクサ１８は、フリップフロップ７２のスキャン入力（ＳＩ）をマスタラッチ１５のデータ入力に接続する。
【０１２９】
上述のフリップフロップ７２及び通常型フリップフロップ７５のデータ出力は、タイミングパスを介して他のフリップフロップ（７２又は７５）のデータ入力に接続されると共に、他のフリップフロップのスキャン入力にも接続されている。図１８には、フリップフロップ７２１のデータ出力が、タイミングパス７３を介してフリップフロップ７５のデータ入力が接続されると共にフリップフロップ７２２のスキャン入力に接続され、フリップフロップ７２２のデータ出力がフリップフロップ７２３のスキャン入力に接続され、フリップフロップ７２３のデータ出力がフリップフロップ７５のスキャン入力に接続される構成が図示されている。
【０１３０】
クロックゲーティングゲート７４とＯＲゲート７６は、全体クロック信号ＣＫＧに対してクロックゲーティングを行う回路部を構成している。ＯＲゲート７６は、スキャンイネーブル信号ＳＥとクロックイネーブル信号Ｅの論理和の信号を出力する。クロックゲーティングゲート７４は、ＯＲゲート７６の出力信号に応答して、それに入力された全体クロック信号ＣＫＧを通過させて局所クロック信号ＣＫＬとして出力し、又は、局所クロック信号ＣＫＬのクロックパルスの出力を停止する。
【０１３１】
本実施形態の集積回路１０Ｃの動作は、スキャンイネーブル信号ＳＥに応じて切り換えられる。スキャンイネーブル信号ＳＥがネゲートされている場合（本実施形態では、Ｌｏｗレベルに設定されている場合）、各フリップフロップ７２、７５のマルチプレクサ１７、１８においてデータ入力が選択される。これにより、本実施形態の集積回路１０Ｃは、第２の実施形態の集積回路１０Ｂと同様の動作を行う。
【０１３２】
一方、スキャンイネーブル信号ＳＥがアサートされると（本実施形態では、Ｈｉｇｈレベルに設定されると）、各フリップフロップ７２、７５のマルチプレクサ１７、１８においてスキャン入力（ＳＩ）が選択される。これにより、フリップフロップ７２、７５によって、スキャンチェーン（シフトレジスタ）を構成される。その後に行われるスキャンテストにおいては、スキャンチェーンにテストベクトルが入力され、更に、スキャンチェーンからテスト結果ベクトルが出力される。
【０１３３】
ここで、留意すべきことは、スキャンイネーブル信号ＳＥがアサートされた場合（即ち、スキャンテストが行われる場合）、クロックイネーブル信号Ｅの値に関わらず、クロックゲーティングゲート４は、局所クロック信号ＣＫＬのクロックパルスを出力し続けなければならないことである。そのため、本実施形態では、クロックゲーティングゲート４におけるクロック信号ＣＫの通過と遮断を制御する信号は、クロックイネーブル信号Ｅとスキャンイネーブル信号Ｅの論理和の信号として生成される。
【０１３４】
続いて、本実施形態の集積回路１０Ｃの設計方法及び製造方法について説明する。図２０は、本実施形態の集積回路１０Ｃの設計手順を示すフローチャートである。本実施形態の集積回路１０Ｃの設計手順は、第３の実施形態の集積回路１０Ｃの設計手順と類似しているが、下記の点で相違している。
【０１３５】
まず、本実施形態では、セルライブラリ６９に、スキャンテストに対応したフリップフロップ、即ち、図１８に図示されているフリップフロップ７２及び通常型フリップフロップ７５のスタンダードセルが登録される。また、共有遅延回路７１の作成（ステップＳ０４）においては、可変遅延回路１９を含むように共有遅延回路７１が作成される。更に、配置・配線（ステップＳ０８）の後、タイミング解析（ステップＳ０９）と可変遅延回路１９の遅延量の調整（ステップＳ１０）が行われる。以下、本実施形態の集積回路１０Ｃの設計手順について詳細に説明する。
【０１３６】
ステップＳ０１では、設計対象の集積回路１０Ｂを記述したＲＴＬ記述７０に対して論理合成ツール６６を用いて論理合成が行われ、集積回路１０Ｂのネットリストが中間結果として得られる。ステップＳ０１の論理合成においては、集積回路に集積化されるフリップフロップとして、通常型フリップフロップ７５のスタンダードセルが用いられる（フリップフロップ７２は用いられない）。ここで、通常型フリップフロップ７５がスキャンテストに対応した構成を有していることに留意されたい。
【０１３７】
ステップＳ０２では、ステップＳ０１で生成されたネットリストに基づいて回路シミュレーションツール６８を用いて設計対象の集積回路のタイミング解析が行われる。ステップＳ０２のタイミング解析では、各タイミングパスのホールド時間違反の発生の有無、及び、ホールド時間違反が発生した場合には、その違反量が計算される。
【０１３８】
ステップＳ０４においては、共有遅延回路７１が生成される。本実施形態では、共有遅延回路７１は、ホールド時間違反が発生する全てのタイミングパス７３について、ホールド時間違反を解消できる遅延時間だけ局所クロック信号ＣＫＬから遅延された遅延クロック信号ＣＫＤを生成できるように生成される。また、本実施形態では、共有遅延回路７１は、可変遅延回路１９を含むように作成される。
【０１３９】
ステップＳ０５では、ホールド時間違反が発生しているタイミングパス３の起点となっている通常型フリップフロップ７５が、局所クロック信号ＣＫＬと遅延クロック信号ＣＫＤとに同期して動作するフリップフロップ７２に置換される。当該フリップフロップ７２のクロック入力端子（局所クロック信号ＣＫＬが入力される端子）にはクロックゲーティングゲート７４の出力が接続される。また、当該フリップフロップ７２の遅延クロック入力端子（遅延クロック信号ＣＫＤが入力される端子）には、共有遅延回路７１の遅延ゲートのうち、局所クロック信号ＣＫＬからの遅延時間が適切な遅延クロック信号ＣＫＤを出力する遅延ゲートの出力が接続される。
【０１４０】
局所クロック信号ＣＫＬからの遅延クロック信号ＣＫＤの遅延時間ｔＤの適切な決定については、第２及び第３の実施形態において説明したとおりである。ステップＳ０５においては、ホールド時間違反が発生しているタイミングパス７３のいずれの起点にもなっていない通常型フリップフロップ７５については、そのまま残される。
【０１４１】
ステップＳ０５においては、ステップＳ０１の論理合成で得られたネットリストが修正され、最終的に用いられるネットリストが生成される。詳細には、ステップＳ０４において生成された共有遅延回路７１が追加され、且つ、ステップＳ０５において新たに組み込まれたフリップフロップ７２のクロック入力端子にクロックゲーティングゲート７４の出力が接続され、且つ、該フリップフロップ７２の遅延クロック入力端子に共有遅延回路７１の適切な遅延ゲートの出力が接続されるようにステップＳ０１の論理合成で得られたネットリストが修正される。これにより、図１８に図示された本実施形態の集積回路１０Ｃのネットリストを得ることができる。ステップＳ０５で得られたネットリストが、設計手順の以後の工程において用いられる。一実施形態では、上記のステップＳ０４、Ｓ０５は、論理合成ツール６６によって行われる。
【０１４２】
ステップＳ０８においては、ステップＳ０５で得られたネットリストに基づいて配置・配線ツール６２によって配置・配線が行われ、図１８に図示された本実施形態の集積回路１０Ｃのレイアウトを示すレイアウトデータが生成される。
【０１４３】
ステップＳ０９〜Ｓ１１では、可変遅延回路の遅延量調整とスキャンテストとを行うことにより、ホールド時間違反が解消される。まず、初期的には、可変遅延回路１９の遅延時間が最小値になるように、設定信号Ｃｏｎｆ１〜Ｃｏｎｆｍが設定される（ステップＳ０９）。続いて、非常に長い周期のクロック信号ＣＫを入力してスキャンチェーンを用いたスキャンテストが行われ、ホールド時間違反の発生の有無が調べられる（ステップＳ１０）。ホールド時間違反が検出されれば（ステップＳ１１）、設定信号Ｃｏｎｆ１〜Ｃｏｎｆｍの設定によって可変遅延回路１９の遅延時間が増加され（ステップＳ０９）、再度ホールド時間違反の有無がスキャンテストで調べられる（ステップＳ１０）。スキャンテストと可変遅延回路１９に設定される遅延時間の増加とがホールド時間違反が検出されなくなるまで繰り返して行われ、ホールド時間違反のない可変遅延回路１９の遅延時間の設定、及び、集積回路１０Ｃのレイアウトデータが得られる。一実施形態では、ステップＳ０９〜Ｓ１１は、外部記憶装置６１にインストールされたスキャンテスト用のソフトウェアプログラム（例えば、スキャンテストツール）で行われる。
【０１４４】
本実施形態の集積回路１０Ｃは、第１乃至第３の実施形態の集積回路１０、１０Ａ、１０Ｂと同様に、当該集積回路１０Ａに含まれるフリップフロップを起点とするタイミングパスのホールド時間制約を、小さい面積と電力で充足することが可能となるという利点を有する。
【０１４５】
加えて、本実施形態の集積回路１０Ｃは、可変遅延回路１９を用いることで共有遅延回路７１の遅延時間を、ホールド時間制約を満たす最小限の値にすることが可能となり、性能低減につながるタイミングパス遅延の増加を抑制する効果を有する。また、本実施形態の集積回路１０Ｃの設計手順によれば、スキャンテストと可変遅延回路１９の遅延時間の調整により、集積回路１０Ｃの製造歩留を向上させる利点がある。
【０１４６】
なお、本実施形態の集積回路１０Ｃの構成を示す図１６では、ＡＮＤゲート１２を含む構成の出力遅延型フリップフロップ７２が用いられている構成が図示されているが、第４の実施形態においても、図５、図８、図１０のいずれに図示されているように、ＡＮＤゲート１２の代わりに、ＮＡＮＤゲート１２Ａ、ＯＲゲート１２Ｂ、ＮＯＲゲート１２Ｃを用いても良い。この場合、マスタラッチ１３及びスレーブラッチ１４の動作と構成についても、図５、図８、図１０に図示されている構成と同様に、適宜に変更される。
【０１４７】
上記の実施形態の集積回路、その設計方法、そ製造方法、及び、プログラムは、下記の付記のようにも記述され得る。
（付記１）
クロック信号を遅延した信号である複数の遅延クロック信号を生成する共有遅延回路と、
前記複数の遅延クロック信号のいずれかと前記クロック信号とが供給される複数のフリップフロップ
とを備え、
前記複数のフリップフロップのそれぞれは、
マスタラッチと、
スレーブラッチ
とを備え、
前記クロック信号と前記複数の遅延クロック信号のそれぞれは、その電圧レベルが、第１レベルと、前記第１レベルに対して相補の第２レベルとの間で切り換えられる信号であり、
前記複数のフリップフロップの各フリップフロップの前記マスタラッチは、前記各フリップフロップに供給される前記クロック信号が前記第１レベルである場合、前記マスタラッチに入力される入力データを前記スレーブラッチに出力する動作を行い、前記各フリップフロップに供給される前記クロック信号が前記第２レベルである場合、前記マスタラッチに入力される入力データの値に関わらず、保持するデータを前記各フリップフロップの前記スレーブラッチに出力する動作を行い、
前記複数のフリップフロップの各フリップフロップの前記スレーブラッチは、前記各フリップフロップに供給される前記クロック信号と前記遅延クロック信号の両方が前記第２レベルである場合、前記各フリップフロップの前記マスタラッチから受け取るデータを外部に出力する動作を行い、前記各フリップフロップに供給される前記クロック信号と前記遅延クロック信号の少なくとも一方が前記第１レベルである場合、前記各フリップフロップの前記マスタラッチから受け取るデータに関わらず、保持するデータを外部に出力する動作を行う
集積回路。
【０１４８】
（付記２）
全体クロック信号が供給され、前記全体クロック信号を局所クロック信号として出力し、又は、前記局所クロック信号のクロックパルスの出力を停止する動作をクロックイネーブル信号に応答して行うクロックゲーティングゲートと、
前記局所クロック信号を遅延して複数の遅延クロック信号を生成する共有遅延回路と、
前記複数の遅延クロック信号のいずれかと前記局所クロック信号とが供給される複数のフリップフロップ
とを備え、
前記複数のフリップフロップのそれぞれは、
マスタラッチと、
スレーブラッチ
とを備え、
前記局所クロック信号と前記複数の遅延クロック信号のそれぞれは、その電圧レベルが、第１レベルと、前記第１レベルに対して相補の第２レベルとの間で切り換えられる信号であり、
前記複数のフリップフロップの各フリップフロップの前記マスタラッチは、前記各フリップフロップに供給される前記局所クロック信号が前記第１レベルである場合、前記マスタラッチに入力される入力データを前記スレーブラッチに出力する動作を行い、前記各フリップフロップに供給される前記局所クロック信号が前記第２レベルである場合、前記マスタラッチに入力される入力データの値に関わらず、保持するデータを前記各フリップフロップの前記スレーブラッチに出力する動作を行い、
前記複数のフリップフロップの各フリップフロップの前記スレーブラッチは、前記各フリップフロップに供給される前記局所クロック信号と前記遅延クロック信号の両方が前記第２レベルである場合、前記各フリップフロップの前記マスタラッチから受け取るデータを外部に出力する動作を行い、前記各フリップフロップに供給される前記局所クロック信号と前記遅延クロック信号の少なくとも一方が前記第１レベルである場合、前記各フリップフロップの前記マスタラッチから受け取るデータに関わらず、保持するデータを外部に出力する動作を行う
集積回路。
【０１４９】
（付記３）
全体クロック信号が供給され、前記全体クロック信号を局所クロック信号として出力し、又は、前記局所クロック信号のクロックパルスの出力を停止する動作をクロックイネーブル信号に応答して行うクロックゲーティングゲートと、
前記全体クロック信号を遅延して複数の遅延クロック信号を生成する共有遅延回路と、
前記複数の遅延クロック信号のいずれかと前記局所クロック信号とが供給される複数のフリップフロップ
とを備え、
前記複数のフリップフロップのそれぞれは、
マスタラッチと、
スレーブラッチ
とを備え、
前記局所クロック信号と前記複数の遅延クロック信号のそれぞれは、その電圧レベルが、第１レベルと、前記第１レベルに対して相補の第２レベルとの間で切り換えられる信号であり、
前記複数のフリップフロップの各フリップフロップの前記マスタラッチは、前記各フリップフロップに供給される前記局所クロック信号が前記第１レベルである場合、前記マスタラッチに入力される入力データを前記スレーブラッチに出力する動作を行い、前記各フリップフロップに供給される前記局所クロック信号が前記第２レベルである場合、前記マスタラッチに入力される入力データの値に関わらず、保持するデータを前記各フリップフロップの前記スレーブラッチに出力する動作を行い、
前記複数のフリップフロップの各フリップフロップの前記スレーブラッチは、前記各フリップフロップに供給される前記局所クロック信号と前記遅延クロック信号の両方が前記第２レベルである場合、前記各フリップフロップの前記マスタラッチから受け取るデータを外部に出力する動作を行い、前記各フリップフロップに供給される前記局所クロック信号と前記遅延クロック信号の少なくとも一方が前記第１レベルである場合、前記各フリップフロップの前記マスタラッチから受け取るデータに関わらず、保持するデータを外部に出力する動作を行う
集積回路。
【０１５０】
（付記４）
付記３に記載の集積回路であって、
前記複数のフリップフロップの前記各フリップフロップは、更に、スキャンイネーブル信号に応答して、前記各フリップフロップのデータ入力とスキャン入力との一方を前記マスタラッチのデータ入力に接続するマルチプレクサを具備し、
前記クロックゲーティングゲートは、前記スキャンイネーブル信号及び前記クロックイネーブル信号に応答して、前記全体クロック信号を前記局所クロック信号として出力し、又は、前記局所クロック信号のクロックパルスの出力を停止する動作を行う
集積回路。
【０１５１】
（付記５）
付記４に記載の集積回路であって、
前記共有遅延回路は、前記複数の遅延クロック信号の前記全体クロック信号からの遅延時間が可変であるように構成されている
集積回路。
【０１５２】
（付記６）
論理合成手段が、クロック信号に同期して動作する通常型フリップフロップとタイミングパスとを含む集積回路を記述した第１ネットリストを生成するステップと、
タイミング解析手段が、前記タイミングパスについてタイミング解析を行い、ホールド時間違反の発生を検出するステップと、
論理合成手段が、ホールド時間違反が発生したタイミングパスの起点に出力が接続された通常型フリップフロップが出力遅延型フリップフロップに置換され、且つ、前記出力遅延型フリップフロップに供給される遅延クロック信号を生成する共有遅延回路を追加するように第１ネットリストを修正することにより第２ネットリストを生成するステップ
とを具備し、
前記遅延クロック信号は、前記クロック信号を遅延した信号であり、
前記クロック信号と前記遅延クロック信号のそれぞれは、その電圧レベルが、第１レベルと、前記第１レベルに対して相補の第２レベルとの間で切り換えられる信号であり、
前記出力遅延型フリップフロップは、マスタラッチとスレーブラッチとを備えており、
前記クロック信号が前記第１レベルである場合、前記マスタラッチは、前記マスタラッチに入力される入力データを前記スレーブラッチに出力する動作を行い、
前記クロック信号が前記第２レベルである場合、前記マスタラッチは、前記マスタラッチに入力される入力データの値に関わらず、前記マスタラッチが保持するデータを前記スレーブラッチに出力する動作を行い、
前記クロック信号と前記遅延クロック信号の両方が前記第２レベルである場合、前記スレーブラッチは、前記マスタラッチから受け取るデータを外部に出力する動作を行い、
前記クロック信号と前記遅延クロック信号の少なくとも一方が前記第１レベルである場合、前記スレーブラッチは、前記マスタラッチから受け取るデータに関わらず、前記スレーブラッチが保持するデータを外部に出力する動作を行う
集積回路の設計方法。
【０１５３】
（付記７）
クロック信号に同期して動作する通常型フリップフロップとタイミングパスとを含む集積回路を記述した第１ネットリストを生成するステップと、
タイミング解析手段が、前記タイミングパスについてタイミング解析を行い、ホールド時間違反の発生を検出するステップと、
ホールド時間違反が発生したタイミングパスの起点に出力が接続された通常型フリップフロップが出力遅延型フリップフロップに置換され、且つ、前記出力遅延型フリップフロップに供給される遅延クロック信号を生成する共有遅延回路を追加するように第１ネットリストを修正することにより第２ネットリストを生成するステップと、
前記第２ネットリストに基づいて配置・配線を行ってレイアウトデータを生成するステップと、
前記レイアウトデータに基づいてマスクを作成するステップと、
前記マスクを用いてウェハ処理を行い、前記出力遅延型フリップフロップを含む集積回路を製造するステップ
とを具備し、
前記遅延クロック信号は、前記クロック信号を遅延した信号であり、
前記クロック信号と前記遅延クロック信号のそれぞれは、その電圧レベルが、第１レベルと、前記第１レベルに対して相補の第２レベルとの間で切り換えられる信号であり、
前記出力遅延型フリップフロップは、マスタラッチとスレーブラッチとを備えており、
前記クロック信号が前記第１レベルである場合、前記マスタラッチは、前記マスタラッチに入力される入力データを前記スレーブラッチに出力する動作を行い、
前記クロック信号が前記第２レベルである場合、前記マスタラッチは、前記マスタラッチに入力される入力データの値に関わらず、前記マスタラッチが保持するデータを前記スレーブラッチに出力する動作を行い、
前記クロック信号と前記遅延クロック信号の両方が前記第２レベルである場合、前記スレーブラッチは、前記マスタラッチから受け取るデータを外部に出力する動作を行い、
前記クロック信号と前記遅延クロック信号の少なくとも一方が前記第１レベルである場合、前記スレーブラッチは、前記マスタラッチから受け取るデータに関わらず、前記スレーブラッチが保持するデータを外部に出力する動作を行う
集積回路の製造方法。
【０１５４】
（付記８）
クロック信号に同期して動作する通常型フリップフロップとタイミングパスとを含む集積回路を記述した第１ネットリストを生成する論理合成手段と、
前記タイミングパスについてタイミング解析を行い、ホールド時間違反の発生を検出するタイミング解析手段
とを具備し、
前記論理合成手段は、ホールド時間違反が発生したタイミングパスの起点に出力が接続された通常型フリップフロップが出力遅延型フリップフロップに置換され、且つ、前記出力遅延型フリップフロップに供給される遅延クロック信号を生成する共有遅延回路を追加するように第１ネットリストを修正することにより第２ネットリストを生成するように構成され、
前記遅延クロック信号は、前記クロック信号を遅延した信号であり、
前記クロック信号と前記遅延クロック信号のそれぞれは、その電圧レベルが、第１レベルと、前記第１レベルに対して相補の第２レベルとの間で切り換えられる信号であり、
前記出力遅延型フリップフロップは、マスタラッチとスレーブラッチとを備えており、
前記クロック信号が前記第１レベルである場合、前記マスタラッチは、前記マスタラッチに入力される入力データを前記スレーブラッチに出力する動作を行い、
前記クロック信号が前記第２レベルである場合、前記マスタラッチは、前記マスタラッチに入力される入力データの値に関わらず、前記マスタラッチが保持するデータを前記スレーブラッチに出力する動作を行い、
前記クロック信号と前記遅延クロック信号の両方が前記第２レベルである場合、前記スレーブラッチは、前記マスタラッチから受け取るデータを外部に出力する動作を行い、
前記クロック信号と前記遅延クロック信号の少なくとも一方が前記第１レベルである場合、前記スレーブラッチは、前記マスタラッチから受け取るデータに関わらず、前記スレーブラッチが保持するデータを外部に出力する動作を行う
集積回路設計装置。
【０１５５】
（付記９）
コンピュータを、
クロック信号に同期して動作する通常型フリップフロップとタイミングパスとを含む集積回路を記述した第１ネットリストを生成する論理合成手段と、
前記タイミングパスについてタイミング解析を行い、ホールド時間違反の発生を検出するタイミング解析手段
として機能させるプログラムであって、
前記論理合成手段は、ホールド時間違反が発生したタイミングパスの起点に出力が接続された通常型フリップフロップが出力遅延型フリップフロップに置換され、且つ、前記出力遅延型フリップフロップに供給される遅延クロック信号を生成する共有遅延回路を追加するように第１ネットリストを修正することにより第２ネットリストを生成するように構成され、
前記遅延クロック信号は、前記クロック信号を遅延した信号であり、
前記クロック信号と前記遅延クロック信号のそれぞれは、その電圧レベルが、第１レベルと、前記第１レベルに対して相補の第２レベルとの間で切り換えられる信号であり、
前記出力遅延型フリップフロップは、マスタラッチとスレーブラッチとを備えており、
前記クロック信号が前記第１レベルである場合、前記マスタラッチは、前記マスタラッチに入力される入力データを前記スレーブラッチに出力する動作を行い、
前記クロック信号が前記第２レベルである場合、前記マスタラッチは、前記マスタラッチに入力される入力データの値に関わらず、前記マスタラッチが保持するデータを前記スレーブラッチに出力する動作を行い、
前記クロック信号と前記遅延クロック信号の両方が前記第２レベルである場合、前記スレーブラッチは、前記マスタラッチから受け取るデータを外部に出力する動作を行い、
前記クロック信号と前記遅延クロック信号の少なくとも一方が前記第１レベルである場合、前記スレーブラッチは、前記マスタラッチから受け取るデータに関わらず、前記スレーブラッチが保持するデータを外部に出力する動作を行う
プログラム。
【０１５６】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１５７】
１        ：共有遅延回路
２        ：出力遅延型フリップフロップ
３        ：タイミングパス
４        ：クロックゲーティングゲート
５        ：通常型フリップフロップ
１０、１０Ａ、１０Ｂ、１０Ｃ：集積回路
１１      ：遅延回路
１２      ：ＡＮＤゲート
１２Ａ    ：ＮＡＮＤゲート
１２Ｂ    ：ＯＲゲート
１２Ｃ    ：ＮＯＲゲート
１３      ：マスタラッチ
１４      ：スレーブラッチ
１５      ：マスタラッチ
１６      ：スレーブラッチ
１７      ：マルチプレクサ
１８      ：マルチプレクサ
１９      ：可変遅延回路
２１、２３、２４、２６、２７：インバータ
２２、２５：トランスミッションゲート
３１、３４：トランスミッションゲート
３２、３３、３５、３６、３７：インバータ
４１〜４４、４５〜４９：ＮＡＮＤゲート
４５、５０：インバータ
５１      ：レベルセンシティブＤラッチ
５２      ：ＡＮＤゲート
６０      ：集積回路設計装置
６１      ：外部記憶装置
６２      ：演算装置
６２      ：配線ツール
６３      ：メモリ
６４      ：入力装置
６５      ：出力装置
６６      ：論理合成ツール
６７      ：配線ツール
６８      ：回路シミュレーションツール
６９      ：セルライブラリ
７０      ：ＲＴＬ記述
７１      ：共有遅延回路
７２      ：フリップフロップ
７２      ：出力遅延型フリップフロップ
７３      ：タイミングパス
７４      ：クロックゲーティングゲート
７５      ：フリップフロップ
７５      ：通常型フリップフロップ
７６      ：ＯＲゲート
８１１〜８１ｍ：単位可変遅延回路
８２      ：ＡＮＤゲート
８３      ：遅延バッファ
８４      ：マルチプレクサ
ＭＮ１、ＭＮ２、ＭＮ２１〜ＭＮ２７、ＭＮ３１〜ＭＮ３７：ＮＭＯＳトランジスタ
ＭＰ１、ＭＰ２、ＭＰ２１〜ＭＰ２７、ＭＰ３１〜ＭＰ３７：ＰＭＯＳトランジスタ
Ｎ１１〜Ｎ１４、Ｎ２１〜Ｎ２３：ノード
【図１】
2015023502.tif 000003
【図２】
2015023502.tif 000004
【図３】
2015023502.tif 000005
【図４Ａ】
2015023502.tif 000006
【図４Ｂ】
2015023502.tif 000007
【図４Ｃ】
2015023502.tif 000008
【図５】
2015023502.tif 000009
【図６】
2015023502.tif 000010
【図７】
2015023502.tif 000011
【図８】
2015023502.tif 000012
【図９】
2015023502.tif 000013
【図１０】
2015023502.tif 000014
【図１１】
2015023502.tif 000015
【図１２】
2015023502.tif 000016
【図１３】
2015023502.tif 000017
【図１４】
2015023502.tif 000018
【図１５】
2015023502.tif 000019
【図１６】
2015023502.tif 000020
【図１７】
2015023502.tif 000021
【図１８】
2015023502.tif 000022
【図１９】
2015023502.tif 000023
【図２０】
2015023502.tif 000024
【図２１】
2015023502.tif 000025
【図２２Ａ】
2015023502.tif 000026
【図２２Ｂ】
2015023502.tif 000027
【図２３】
2015023502.tif 000028
【図２４】
2015023502.tif 000029