(57)【要約】【課題】リテンション機能を備えるフリップフロップにデータを保持する際に意図しないデータのラッチが発生することを抑制することである。【解決手段】本発明にかかる半導体装置は、フリップフロップＲＦＦ２と、フリップフロップＲＦＦ２に供給されるクロック信号を制御するクロック制御回路３と、フリップフロップＲＦＦ２にデータ保持信号を供給すると共に、クロック制御回路３を制御するコントローラ２とを備える。フリップフロップＲＦＦ２がクロック信号のネガティブエッジで駆動し、かつクロック信号がハイレベルの時にデータを保持する場合、コントローラ２は入力クロック信号を固定した後、フリップフロップＲＦＦ２がデータを保持する前に、フリップフロップＲＦＦ２にハイレベルのクロック信号が供給されるようにクロック制御回路３を制御する。【選択図】図１
2011205355.tif 000002
【特許請求の範囲】
【請求項１】
クロック信号と同期して駆動すると共に、データ保持信号に応じてデータを保持するフリップフロップと、
前記フリップフロップに供給される前記クロック信号を制御するクロック制御回路と、
前記クロック制御回路に入力クロック信号を供給し、前記フリップフロップに前記データ保持信号を供給すると共に、前記クロック制御回路を制御するコントローラと、を備え、
前記フリップフロップが前記クロック信号のポジティブエッジで駆動し、かつ前記クロック信号がローレベルの時にデータを保持する場合、前記コントローラは前記入力クロック信号を固定した後、前記フリップフロップがデータを保持する前に、前記フリップフロップにローレベルのクロック信号が供給されるように前記クロック制御回路を制御し、
前記フリップフロップが前記クロック信号のネガティブエッジで駆動し、かつ前記クロック信号がハイレベルの時にデータを保持する場合、前記コントローラは前記入力クロック信号を固定した後、前記フリップフロップがデータを保持する前に、前記フリップフロップにハイレベルのクロック信号が供給されるように前記クロック制御回路を制御する、
半導体装置。
【請求項２】
前記フリップフロップは、前記クロック信号のポジティブエッジで駆動すると共に、前記クロック信号がローレベルの時にデータを保持可能な第１のフリップフロップを備え、
前記クロック制御回路は、前記第１のフリップフロップに供給される前記クロック信号を制御する第１のクロック制御回路を備え、
前記コントローラは、前記第１のクロック制御回路に前記入力クロック信号を供給し、前記第１のフリップフロップに前記データ保持信号を供給すると共に、前記入力クロック信号を固定した後、前記第１のフリップフロップがデータを保持する前に、前記第１のフリップフロップにローレベルのクロック信号が供給されるように前記第１のクロック制御回路を制御する、請求項１に記載の半導体装置。
【請求項３】
前記フリップフロップは、前記クロック信号のネガティブエッジで駆動すると共に、前記クロック信号がハイレベルの時にデータを保持可能な第２のフリップフロップを備え、
前記クロック制御回路は、前記第２のフリップフロップに供給される前記クロック信号を制御する第２のクロック制御回路を備え、
前記コントローラは、前記第２のクロック制御回路に前記入力クロック信号を供給し、前記第２のフリップフロップに前記データ保持信号を供給すると共に、前記入力クロック信号を固定した後、前記第２のフリップフロップがデータを保持する前に、前記第２のフリップフロップにハイレベルのクロック信号が供給されるように前記第２のクロック制御回路を制御する、請求項１または２に記載の半導体装置。
【請求項４】
前記第１のクロック制御回路は、前記コントローラからのクロックストップ信号に応じてローレベルの信号を出力する第３のフリップフロップと、
一方の入力に前記第３のフリップフロップの出力を、他方の入力に前記入力クロック信号を入力し、これらの論理積を出力する第１の論理積回路と、を備える請求項２に記載の半導体装置。
【請求項５】
前記第２のクロック制御回路は、前記コントローラからのクロックストップ信号に応じてハイレベルの信号を出力する第４のフリップフロップと、
一方の入力に前記第４のフリップフロップの出力を、他方の入力に前記入力クロック信号の論理和を入力し、これらの論理和を出力する第１の論理和回路と、を備える請求項３に記載の半導体装置。
【請求項６】
前記第１のフリップフロップに供給されるクロック信号の供給または停止を制御する第１のクロックゲーティング回路、および前記第２のフリップフロップに供給されるクロック信号の供給または停止を制御する第２のクロックゲーティング回路を更に備える、請求項３乃至５のいずれか一項に記載の半導体装置。
【請求項７】
前記第１のクロックゲーティング回路は、前記クロック信号のネガティブエッジに応じて前記コントローラから供給される第１のイネーブル信号の値を出力する第５のフリップフロップと、
一方の入力に前記第５のフリップフロップの出力を、他方の入力に前記クロック信号を入力し、これらの論理積を出力する第２の論理積回路と、を備える請求項６に記載の半導体装置。
【請求項８】
前記第２のクロックゲーティング回路は、前記クロック信号のポジティブエッジに応じて前記コントローラから供給される第２のイネーブル信号の値を出力する第６のフリップフロップと、
一方の入力に前記第６のフリップフロップの出力を、他方の入力に前記クロック信号を入力し、これらの論理和を出力する第２の論理和回路と、を備える請求項６または７に記載の半導体装置。
【請求項９】
一方の入力に前記コントローラから出力された前記入力クロック信号を入力し、他方の入力にセレクト信号を入力し、当該セレクト信号に応じて前記入力クロック信号の正転・反転を切り替える排他的論理和回路を更に備える、請求項２乃至５のいずれか一項に記載の半導体装置。
【請求項１０】
前記第１のクロック制御回路は、一方の入力にクロックストップ信号を、他方の入力に前記入力クロック信号が反転された信号を入力し、これらの論理和を出力する第３の論理和回路と、
前記クロックストップ信号および前記第３の論理和回路の出力を入力し、当該第３の論理和回路の出力に応じて前記クロックストップ信号が反転された値を出力する第１のラッチ回路と、
一方の入力に前記第１のラッチ回路の出力を、他方の入力に前記入力クロック信号を入力し、これらの論理積を出力する第３の論理積回路と、を備える請求項２に記載の半導体装置。
【請求項１１】
前記第２のクロック制御回路は、一方の入力にクロックストップ信号を、他方の入力に前記入力クロック信号を入力し、これらの論理和を出力する第４の論理和回路と、
前記クロックストップ信号および前記第４の論理和回路の出力を入力し、当該第４の論理和回路の出力に応じて前記クロックストップ信号の値を出力する第２のラッチ回路と、
一方の入力に前記第２のラッチ回路の出力を、他方の入力に前記入力クロック信号を入力し、これらの論理和を出力する第５の論理和回路と、を備える請求項３に記載の半導体装置。
【請求項１２】
前記第１のクロック制御回路および前記第１のクロックゲーティング回路は、
一方の入力に第１のイネーブル信号を、他方の入力に前記クロックストップ信号が反転された信号を入力し、これらの論理積を出力する第４の論理積回路と、
一方の入力に前記クロックストップ信号を、他方の入力に前記入力クロック信号が反転された信号を入力し、これらの論理和を出力する第６の論理和回路と、
前記第４の論理積回路の出力と前記第６の論理和回路の出力を入力し、当該第６の論理和回路の出力に応じて前記前記第４の論理積回路の出力の値を出力する第３のラッチ回路と、
一方に前記第３のラッチ回路の出力を、他方に前記入力クロック信号を入力し、これらの論理積を出力する第５の論理積回路と、を備える請求項６に記載の半導体装置。
【請求項１３】
前記第２のクロック制御回路および前記第２のクロックゲーティング回路は、
一方の入力に第２のイネーブル信号が反転された信号を、他方の入力に前記クロックストップ信号を入力し、これらの論理和を出力する第７の論理和回路と、
一方の入力に前記クロックストップ信号を、他方の入力に前記入力クロック信号を入力し、これらの論理和を出力する第８の論理和回路と、
前記第７の論理和回路の出力と前記第８の論理和回路の出力を入力し、当該第８の論理和回路の出力に応じて前記前記第７の論理和回路の出力の値を出力する第４のラッチ回路と、
一方に前記第４のラッチ回路の出力を、他方に前記入力クロック信号を入力し、これらの論理和を出力する第９の論理和回路と、を備える請求項６に記載の半導体装置。
【請求項１４】
前記第１のフリップフロップは、一方の入力に前記クロック信号を、他方の入力に前記データ保持信号を入力し、これらの論理積を出力する第５の論理積回路を備え、前記第１のフリップフロップは当該第５の論理積回路の出力に応じて駆動する、請求項２乃至１３のいずれか一項に記載の半導体装置。
【請求項１５】
前記第２のフリップフロップは、一方の入力に前記クロック信号を、他方の入力に前記データ保持信号が反転された信号を入力し、これらの論理和を出力する第１０の論理和回路を備え、前記第２のフリップフロップは当該第１０の論理和回路の出力に応じて駆動する、請求項３乃至１３のいずれか一項に記載の半導体装置。
【請求項１６】
クロック信号と同期して駆動すると共に、データ保持信号に応じてデータを保持するフリップフロップの制御方法であって、
前記フリップフロップが前記クロック信号のポジティブエッジで駆動し、かつ前記クロック信号がローレベルの時にデータを保持する場合、前記クロック信号が固定された後、前記フリップフロップがデータを保持する前に、前記フリップフロップにローレベルのクロック信号を供給し、
前記フリップフロップがネガティブエッジで駆動し、かつ前記クロック信号がハイレベルの時にデータを保持する場合、前記クロック信号が固定された後、前記フリップフロップがデータを保持する前に、前記フリップフロップにハイレベルのクロック信号を供給する、
フリップフロップの制御方法。
【請求項１７】
回路にクロック制御回路を挿入する処理をコンピュータに実行させるためのプログラムであって、
クロック信号と同期して駆動すると共に、データ保持信号に応じてデータを保持するフリップフロップのうち、前記クロック信号のポジティブエッジで駆動し、かつ前記クロック信号がローレベルの時にデータを保持するフリップフロップの前段に、前記クロック信号が固定された後、前記フリップフロップがデータを保持する前に、前記フリップフロップにローレベルのクロック信号を供給するクロック制御回路を挿入し、
前記フリップフロップのうち、前記クロック信号のネガティブエッジで駆動し、かつ前記クロック信号がハイレベルの時にデータを保持するフリップフロップの前段に、前記クロック信号が固定された後、前記フリップフロップがデータを保持する前に、前記フリップフロップにハイレベルのクロック信号を供給するクロック制御回路を挿入する処理を、コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置およびフリップフロップの制御方法に関し、特にリテンション機能を備えるフリップフロップを有する半導体装置およびフリップフロップの制御方法に関する。
【背景技術】
【０００２】
半導体装置の消費電力を低減する技術の一つに、動作していない演算回路セルへの電源供給を遮断する技術がある。このような技術は、電源を再度供給した際に電源遮断前と同様に動作するように、電源遮断時にもデータを記憶するリテンション機能を備えるフリップフロップを用いることで実現することができる。
【０００３】
図１５は背景技術にかかる半導体装置を説明するための回路図である。図１５に示す半導体装置は、クロックゲーティング回路１０１、１０２と、リテンション機能を備えるマスタースレーブ型のフリップフロップＲＦＦ１０１、ＲＦＦ１０２とを備える。クロックゲーティング回路１０１はフリップフロップＦＦ１０１と論理積回路ＡＮＤ１０１とを備える。フリップフロップＦＦ１０１は、クロック信号ＣＬＫＩＮのネガティブエッジで駆動し、このネガティブエッジのタイミングでイネーブル信号ＥＮ１を出力する。ＡＮＤ１０１は、フリップフロップＦＦ１０１の出力（ＦＦ１０１_ＯＵＴ）とクロック信号ＣＬＫＩＮとを入力し、これらの論理積演算結果を出力する。
【０００４】
フリップフロップＲＦＦ１０１は、ＡＮＤ１０１の出力（ＲＦＦ１０１_ＣＬＫ_ＩＮ）がローレベルの時にデータを保持可能なマスタースレーブ型のフリップフロップである。図１６（ａ）は、フリップフロップＲＦＦ１０１を説明するための図である（特許文献１参照）。図１６（ａ）に示すように、フリップフロップＲＦＦ１０１は論理積回路ＡＮＤ１０２を備える。このＡＮＤ１０２の一方にはＡＮＤ１０１の出力（ＲＦＦ１０１_ＣＬＫ_ＩＮ）が入力され、他方にはデータ保持信号（ＲＥＴ信号）が入力され、ＡＮＤ１０２はこれらの論理積演算結果を出力する。ＡＮＤ１０２の出力（ＲＦＦ１０１_ＣＬＫ）は、フリップフロップＲＦＦ１０１を駆動するためのクロック信号となる。
【０００５】
また、クロックゲーティング回路１０２はフリップフロップＦＦ１０２と論理和回路ＯＲ１０１とを備える。フリップフロップＦＦ１０２は、クロック信号ＣＬＫＩＮのポジティブエッジで駆動し、このポジティブエッジのタイミングでイネーブル信号ＥＮ２を反転した信号（ＦＦ１０２_ＯＵＴ）を出力する。ＯＲ１０１は、フリップフロップＦＦ１０２の出力とクロック信号ＣＬＫＩＮとを入力し、これらの論理和演算結果を出力する。
【０００６】
フリップフロップＲＦＦ１０２は、ＯＲ１０１の出力（ＲＦＦ１０２_ＣＬＫ_ＩＮ）がハイレベルの時にデータを保持可能なマスタースレーブ型のフリップフロップである。図１６（ｂ）は、フリップフロップＲＦＦ１０２を説明するための図である（特許文献１参照）。図１６（ｂ）に示すように、フリップフロップＲＦＦ１０２は論理和回路ＯＲ１０２を備える。このＯＲ１０２の一方にはＯＲ１０１の出力（ＲＦＦ１０２_ＣＬＫ_ＩＮ）が入力され、他方にはデータ保持信号（ＲＥＴ信号）が反転された信号が入力され、ＯＲ１０２これらの論理積演算結果を出力する。ＯＲ１０２の出力（ＲＦＦ１０２_ＣＬＫ）は、フリップフロップＲＦＦ１０２を駆動するためのクロック信号となる。
【０００７】
図１７、図１８は、図１５に示す半導体装置の動作を説明するためのタイミングチャートである。なお、フリップフロップＲＦＦ１０１、ＲＦＦ１０２には、図１６（ａ）、（ｂ）に示すフリップフロップを用いている。図１７に示すタイミングチャートでは、クロックゲーティング回路１０１とフリップフロップＲＦＦ１０１の動作を示している。図１７に示すように、図１５に示す半導体装置では、タイミングＴ１０２からタイミングＴ１０５までの間においてクロック信号ＣＬＫＩＮがローレベルに固定される。また、タイミングＴ１０３からタイミングＴ１０４までの間においてＲＥＴ信号がローレベルとなり、ＡＮＤ１０２の出力（ＲＦＦ１０１_ＣＬＫ）がローレベルに固定される。
【０００８】
まず、イネーブル信号ＥＮ１が、タイミングＴ１０２からタイミングＴ１０５までの間においてローレベル"０"である場合の動作について説明する。タイミングＴ１０２までは、ＡＮＤ１０１の出力（ＲＦＦ１０１_ＣＬＫ_ＩＮ）とＡＮＤ１０２の出力（ＲＦＦ１０１_ＣＬＫ）はクロック信号ＣＬＫＩＮと同期している。一方、タイミングＴ１０１以降、イネーブル信号ＥＮ１がローレベルとなる。これにより、フリップフロップＦＦ１０１はタイミングＴ１０２、つまりクロック信号ＣＬＫＩＮのネガティブエッジにおいてローレベルの信号（ＦＦ１０１_ＯＵＴ）をＡＮＤ１０１に出力する。よって、ＡＮＤ１０１の出力（ＲＦＦ１０１_ＣＬＫ_ＩＮ）はローレベルに固定され、これに伴いＡＮＤ１０２の出力（ＲＦＦ１０１_ＣＬＫ）もローレベルに固定される。タイミングＴ１０３からタイミングＴ１０４においてＲＥＴ信号がローレベルとなるが、ＡＮＤ１０１の出力（ＲＦＦ１０１_ＣＬＫ_ＩＮ）はローレベルに固定されているため、ＡＮＤ１０２の出力（ＲＦＦ１０１_ＣＬＫ）は変化しない。
【０００９】
そして、タイミングＴ１０５において再びクロック信号ＣＬＫＩＮが動作すると共に、イネーブル信号ＥＮ１がハイレベルとなる。これにより、フリップフロップＦＦ１０１はタイミングＴ１０６、つまりクロック信号ＣＬＫＩＮのネガティブエッジにおいてハイレベルの信号（ＦＦ１０１_ＯＵＴ）をＡＮＤ１０１に出力する。よって、ＡＮＤ１０１の出力（ＲＦＦ１０１_ＣＬＫ_ＩＮ）はクロック信号ＣＬＫＩＮと同期するようになる。また、ＲＥＴ信号がハイレベルであるので、ＡＮＤ１０２の出力（ＲＦＦ１０１_ＣＬＫ）もクロック信号ＣＬＫＩＮと同期するようになる。
【００１０】
次に、イネーブル信号ＥＮ１が ハイレベル"１"である場合の動作について説明する。この場合は、イネーブル信号ＥＮ１が常にハイレベルであるため、フリップフロップＦＦ１０１は常にハイレベルの信号をＡＮＤ１０１に出力する。よって、ＡＮＤ１０１の出力（ＲＦＦ１０１_ＣＬＫ_ＩＮ）はクロック信号ＣＬＫＩＮと同期して出力される。また、タイミングＴ１０３からタイミングＴ１０４の間以外は、ＲＥＴ信号がハイレベルであるので、ＡＮＤ１０２の出力（ＲＦＦ１０１_ＣＬＫ）もクロック信号ＣＬＫＩＮと同期する。なお、タイミングＴ１０３からタイミングＴ１０４の間は、ＲＥＴ信号がローレベルとなるが、タイミングＴ１０２からタイミングＴ１０５までの間、クロック信号ＣＬＫＩＮがローレベルに固定されるため、ＡＮＤ１０２の出力（ＲＦＦ１０１_ＣＬＫ）は変化しない。
【００１１】
次に、図１８を用いてクロックゲーティング回路１０２とフリップフロップＲＦＦ１０２の動作について説明する。図１８に示すように、図１５に示す半導体装置では、タイミングＴ１１２からタイミングＴ１１５までの間においてクロック信号ＣＬＫＩＮがローレベルに固定される。また、タイミングＴ１１３からタイミングＴ１１４までの間においてＲＥＴ信号がローレベルとなり、ＲＦＦ１０２のＯＲ１０２の出力（ＲＦＦ１０２_ＣＬＫ）がハイレベルに固定される。
【００１２】
まず、イネーブル信号ＥＮ２が、クロック信号ＣＬＫＩＮが固定されるタイミング（タイミングＴ１１２からタイミングＴ１１５）においてローレベル"０"である場合の動作について説明する。タイミングＴ１１１までは、ＯＲ１０１の出力（ＲＦＦ１０２_ＣＬＫ_ＩＮ）とＯＲ１０２の出力（ＲＦＦ１０２_ＣＬＫ）はクロック信号ＣＬＫＩＮと同期している。
【００１３】
一方、タイミングＴ１１１以降、イネーブル信号ＥＮ２がローレベルとなる。これにより、フリップフロップＦＦ１０２はタイミングＴ１１２、つまりクロック信号ＣＬＫＩＮのポジティブエッジにおいてハイレベルの信号（ＦＦ１０２_ＯＵＴ）をＯＲ１０１に出力する。よって、ＯＲ１０１の出力（ＲＦＦ１０２_ＣＬＫ_ＩＮ）はハイレベルに固定され、これに伴いフリップフロップＲＦＦ１０２のＯＲ１０２の出力（ＲＦＦ１０２_ＣＬＫ）もハイレベルに固定される。タイミングＴ１１３からタイミングＴ１１４においてＲＥＴ信号がローレベルとなるが、ＯＲ１０１の出力（ＲＦＦ１０２_ＣＬＫ_ＩＮ）はハイレベルに固定されているため、フリップフロップＲＦＦ１０２のＯＲ１０２の出力（ＲＦＦ１０２_ＣＬＫ）は変化しない。
【００１４】
そして、タイミングＴ１１５以降において再びクロック信号ＣＬＫＩＮが動作し、またイネーブル信号ＥＮ２がハイレベルとなる。これにより、フリップフロップＦＦ１０２はタイミングＴ１１６、つまりクロック信号ＣＬＫＩＮのポジティブエッジにおいてローレベルの信号（ＦＦ１０２_ＯＵＴ）をＯＲ１０１に出力する。よって、タイミングＴ１１６以降では、ＯＲ１０１の出力（ＲＦＦ１０２_ＣＬＫ_ＩＮ）はクロック信号ＣＬＫＩＮと同期するようになる。また、ＲＥＴ信号がハイレベルであるので、フリップフロップＲＦＦ１０２のＯＲ１０２の出力（ＲＦＦ１０２_ＣＬＫ）もクロック信号ＣＬＫＩＮと同期するようになる。
【００１５】
次に、イネーブル信号ＥＮ２がハイレベル"１"である場合の動作について説明する。この場合は、イネーブル信号ＥＮ２が常にハイレベルであるため、フリップフロップＦＦ１０２は常にローレベルの信号をＯＲ１０１に出力する。よって、ＯＲ１０１の出力（ＲＦＦ１０２_ＣＬＫ_ＩＮ）はクロック信号ＣＬＫＩＮと同期して出力される。また、タイミングＴ１１３からタイミングＴ１１４の間以外は、ＲＥＴ信号がハイレベルであるので、ＲＦＦ１０２のＯＲ１０２の出力（ＲＦＦ１０２_ＣＬＫ）もクロック信号ＣＬＫＩＮと同期する。
【００１６】
一方、タイミングＴ１１３からタイミングＴ１１４の間は、ＲＥＴ信号がローレベルとなる。このとき、クロック信号ＣＬＫＩＮはローレベルに固定されているため、ＯＲ１０１の出力（ＲＦＦ１０２_ＣＬＫ_ＩＮ）もローレベルに固定されている。このためタイミングＴ１１３においてＲＦＦ１０２のＯＲ１０２に入力されるＲＥＴ信号がローレベルになると、ＯＲ１０２の出力（ＲＦＦ１０２_ＣＬＫ）がハイレベルとなる。そして、タイミングＴ１１４においてＲＥＴ信号が再びハイレベルになると、ＯＲ１０２の出力（ＲＦＦ１０２_ＣＬＫ）はローレベルとなる。
【００１７】
また、特許文献２にはパワーセーブ前における制御信号（ＲＥＴ信号）の状態とパワーセーブ後における制御信号（ＲＥＴ信号）の状態とを制限することなく、必ず元の出力データを発生させることができるＤフリップフロップ回路に関する技術が開示されている。特許文献２にかかるＤフリップフロップ回路では、正極性端子と負極性端子とを具備しマスターとスレーブとは別系統の電源が供給される記憶回路を設けている。そして、Ｄフリップフロップ回路がパワーセーブ中であるときに、記憶回路の負極性端子とマスターの入力端子との経路を遮断するとともに、記憶回路の正極性端子とスレーブの入力端子との経路を遮断し、マスターとスレーブとが遮断されているときに、記憶回路の負極性端子とマスターの入力端子との経路を遮断している。すなわち、特許文献２にかかるＤフリップフロップ回路を用いることで、ＲＥＴ信号がローレベル・ハイレベルのいずれの場合においても、データを保持することができる。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】特開２００８−２１９４９１号公報
【特許文献２】特開平８−１９１２３４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１９】
図１５に示した半導体装置では、図１８に示したタイミングチャートで説明したように、イネーブル信号ＥＮ２がハイレベルの場合、タイミングＴ１１３でデータ保持信号（ＲＥＴ信号）がローレベルになるとフリップフロップＲＦＦ１０２の動作クロック（ＲＦＦ１０２_ＣＬＫ）が立ち上がる。また、タイミングＴ１１４でデータ保持信号（ＲＥＴ信号）がハイレベルになるとフリップフロップＲＦＦ１０２のクロック（ＲＦＦ１０２_ＣＬＫ）が立ち下がる。このため、フリップフロップＲＦＦ１０２はタイミングＴ１１４において、新たにデータ（Ｄ）を取り込むことになり、クロック信号ＣＬＫＩＮの固定後にフリップフロップＲＦＦ１０２のデータが変化する。
【００２０】
一方、イネーブル信号ＥＮ２が、クロック信号ＣＬＫＩＮが固定されるタイミング（タイミングＴ１１２からタイミングＴ１１５）においてローレベルである場合、タイミングＴ１１３からタイミングＴ１１４においてＲＥＴ信号がローレベルとなるが、フリップフロップＲＦＦ１０２のクロック（ＲＦＦ１０２_ＣＬＫ）は変化しない。
【００２１】
このように、図１５に示した半導体装置では、クロック信号ＣＬＫＩＮを固定した後にフリップフロップＲＦＦ１０２に保持されるデータがイネーブル信号ＥＮ２の値によって異なる。つまり、リテンション機能を備えるフリップフロップにデータを保持する際に意図しないデータのラッチが発生するという問題がある。
【課題を解決するための手段】
【００２２】
本発明にかかる半導体装置は、クロック信号と同期して駆動すると共に、データ保持信号に応じてデータを保持するフリップフロップと、前記フリップフロップに供給される前記クロック信号を制御するクロック制御回路と、前記クロック制御回路に入力クロック信号を供給し、前記フリップフロップに前記データ保持信号を供給すると共に、前記クロック制御回路を制御するコントローラと、を備え、前記フリップフロップが前記クロック信号のポジティブエッジで駆動し、かつ前記クロック信号がローレベルの時にデータを保持する場合、前記コントローラは前記入力クロック信号を固定した後、前記フリップフロップがデータを保持する前に、前記フリップフロップにローレベルのクロック信号が供給されるように前記クロック制御回路を制御し、前記フリップフロップが前記クロック信号のネガティブエッジで駆動し、かつ前記クロック信号がハイレベルの時にデータを保持する場合、前記コントローラは前記入力クロック信号を固定した後、前記フリップフロップがデータを保持する前に、前記フリップフロップにハイレベルのクロック信号が供給されるように前記クロック制御回路を制御する。
【００２３】
本発明にかかる半導体装置では、クロック信号がローレベルの時にデータを保持するフリップフロップに対して、データ保持信号が供給される前にクロック制御回路を用いて強制的にローレベルのクロック信号を供給している。また、クロック信号がハイレベルの時にデータを保持するフリップフロップに対して、データ保持信号が供給される前にクロック制御回路を用いて強制的にハイレベルのクロック信号を供給している。これにより、フリップフロップにデータを保持する際に意図しないデータのラッチが発生することを抑制することができる。
【００２４】
本発明にかかるフリップフロップの制御方法は、クロック信号と同期して駆動すると共に、データ保持信号に応じてデータを保持するフリップフロップの制御方法であって、前記フリップフロップが前記クロック信号のポジティブエッジで駆動し、かつ前記クロック信号がローレベルの時にデータを保持する場合、前記クロック信号が固定された後、前記フリップフロップがデータを保持する前に、前記フリップフロップにローレベルのクロック信号を供給し、前記フリップフロップがネガティブエッジで駆動し、かつ前記クロック信号がハイレベルの時にデータを保持する場合、前記クロック信号が固定された後、前記フリップフロップがデータを保持する前に、前記フリップフロップにハイレベルのクロック信号を供給する。
【００２５】
本発明にかかるフリップフロップの制御方法では、クロック信号がローレベルの時にデータを保持するフリップフロップに対して、データ保持信号が供給される前に強制的にローレベルのクロック信号を供給している。また、クロック信号がハイレベルの時にデータを保持するフリップフロップに対して、データ保持信号が供給される前に強制的にハイレベルのクロック信号を供給している。これにより、フリップフロップにデータを保持する際に意図しないデータのラッチが発生することを抑制することができる。
【００２６】
本発明にかかるプログラムは、回路にクロック制御回路を挿入する処理をコンピュータに実行させるためのプログラムであって、クロック信号と同期して駆動すると共に、データ保持信号に応じてデータを保持するフリップフロップのうち、前記クロック信号のポジティブエッジで駆動し、かつ前記クロック信号がローレベルの時にデータを保持するフリップフロップの前段に、前記クロック信号が固定された後、前記フリップフロップがデータを保持する前に、前記フリップフロップにローレベルのクロック信号を供給するクロック制御回路を挿入し、前記フリップフロップのうち、前記クロック信号のネガティブエッジで駆動し、かつ前記クロック信号がハイレベルの時にデータを保持するフリップフロップの前段に、前記クロック信号が固定された後、前記フリップフロップがデータを保持する前に、前記フリップフロップにハイレベルのクロック信号を供給するクロック制御回路を挿入する処理を、コンピュータに実行させるためのプログラムである。
【００２７】
本発明にかかるプログラムでは、クロック信号がローレベルの時にデータを保持するフリップフロップの前段に、データ保持信号が供給される前に強制的にローレベルのクロック信号を供給するクロック制御回路を挿入している。また、クロック信号がハイレベルの時にデータを保持するフリップフロップに対して、データ保持信号が供給される前に強制的にハイレベルのクロック信号を供給するクロック制御回路を挿入している。これにより、フリップフロップにデータを保持する際に意図しないデータのラッチが発生することを抑制することができる。
【発明の効果】
【００２８】
本発明により、リテンション機能を備えるフリップフロップにデータを保持する際に意図しないデータのラッチが発生することを抑制することができる半導体装置およびフリップフロップの制御方法を提供することができる。
【図面の簡単な説明】
【００２９】
【図１】実施の形態１にかかる半導体装置を説明するための回路図である。
【図２】実施の形態１にかかる半導体装置の動作を説明するためのタイミングチャートである。
【図３】実施の形態１にかかる半導体装置の動作を説明するためのタイミングチャートである。
【図４】実施の形態２にかかる半導体装置を説明するための回路図である。
【図５】実施の形態２にかかる半導体装置の動作を説明するためのタイミングチャートである。
【図６】実施の形態２にかかる半導体装置の動作を説明するためのタイミングチャートである。
【図７】実施の形態３にかかる半導体装置を説明するための回路図である。
【図８】実施の形態３にかかる半導体装置の動作を説明するためのタイミングチャートである。
【図９】実施の形態４にかかる半導体装置を説明するための回路図である。
【図１０】実施の形態５にかかる半導体装置を説明するための回路図である。
【図１１】実施の形態５にかかる半導体装置の動作を説明するための真理値表である。
【図１２】実施の形態５にかかる半導体装置を説明するための回路図である。
【図１３】実施の形態５にかかる半導体装置の動作を説明するための真理値表である。
【図１４】実施の形態６にかかる半導体装置を説明するための回路図である。
【図１５】背景技術にかかる半導体装置を説明するための回路図である。
【図１６】背景技術にかかる半導体装置に用いられるリテンション機能を備えるフリップフロップを示す図である。（ａ）は入力クロックがローレベルの時にデータを保持するフリップフロップであり、（ｂ）は入力クロックがハイレベルの時にデータを保持するフリップフロップである。
【図１７】背景技術にかかる半導体装置の動作を説明するためのタイミングチャートである。
【図１８】背景技術にかかる半導体装置の動作を説明するためのタイミングチャートである。
【発明を実施するための形態】
【００３０】
実施の形態１
以下、図面を参照して本発明の実施の形態１について説明する。図１は本実施の形態にかかる半導体装置を説明するための回路図である。本実施の形態にかかる半導体装置は、コントローラ２と、クロック制御回路３と、クロックゲーティング回路５、６と、リテンション機能を備えるフリップフロップＲＦＦ１、ＲＦＦ２とを備える。クロックゲーティング回路５、６およびフリップフロップＲＦＦ１、ＲＦＦ２は論理回路７を構成する。また、コントローラ２は、ＰＬＬ等の発振回路１からクロック信号を入力し、このクロック信号に基づきクロック信号ＣＬＫＩＮを生成しクロック制御回路３およびクロックゲーティング回路５、６に供給する。また、コントローラ２は、クロック制御回路３にクロックストップ信号ＣＬＫ_ＳＴＯＰを、クロックゲーティング回路５にイネーブル信号ＥＮ１を、クロックゲーティング回路６にイネーブル信号ＥＮ２を、フリップフロップＲＦＦ１、ＲＦＦ２にデータ保持信号（ＲＥＴ信号）を供給する。
【００３１】
クロックゲーティング回路５はフリップフロップＦＦ１と論理積回路ＡＮＤ１とを備える。フリップフロップＦＦ１は、コントローラ２から供給されるクロック信号ＣＬＫＩＮのネガティブエッジで駆動し、このネガティブエッジのタイミングでイネーブル信号ＥＮ１の論理レベル（ハイレベル、またはローレベル）を出力する。ＡＮＤ１は、フリップフロップＦＦ１の出力（ＦＦ１_ＯＵＴ）とクロック信号ＣＬＫＩＮとを入力し、これらの論理積演算結果を出力する。
【００３２】
フリップフロップＲＦＦ１は、クロックゲーティング回路５のＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）を入力し、この信号のポジティブエッジで駆動する。ここで、フリップフロップＲＦＦ１は、クロックゲーティング回路５のＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）がローレベルの時にデータを保持可能なフリップフロップである。フリップフロップＲＦＦ１には、例えば図１６（ａ）に示したマスタースレーブ型のフリップフロップを用いることができる。図１６（ａ）に示すフリップフロップは、一方にクロック信号が入力され、他方にデータ保持信号（ＲＥＴ信号）が入力され、これらの論理積演算結果を出力する論理積回路（ＡＮＤ回路）を備える。ＡＮＤ回路の論理積演算結果として出力される信号はフリップフロップを駆動するクロック信号となる。また、フリップフロップＲＦＦ１に供給されるＲＥＴ信号はコントローラ２から出力される。
【００３３】
クロック制御回路３は、セット付フリップフロップＦＦ３と論理和回路ＯＲ２とを備える。セット付フリップフロップＦＦ３はクロック信号ＣＬＫＩＮを入力し、クロック信号ＣＬＫＩＮのポジティブエッジで論理レベル"０"（ローレベル）を出力する。また、セット付フリップフロップＦＦ３は、コントローラ２からクロックストップ信号ＣＬＫ_ＳＴＯＰが入力された場合は、ＯＲ２に対してハイレベルの信号を出力する。また、ＯＲ２はセット付フリップフロップＦＦ３の出力とクロック信号ＣＬＫＩＮを入力し、これらの論理和演算結果を出力する。すなわち、クロック制御回路３は、クロックストップ信号ＣＬＫ_ＳＴＯＰが入力されていない場合はクロック信号ＣＬＫＩＮと同期した信号を出力し、クロックストップ信号ＣＬＫ_ＳＴＯＰが入力された場合はハイレベルの信号を出力する。
【００３４】
クロックゲーティング回路６はフリップフロップＦＦ２と論理和回路ＯＲ１とを備える。フリップフロップＦＦ２は、クロック制御回路３のＯＲ２から出力される信号のポジティブエッジで駆動し、このポジティブエッジのタイミングでイネーブル信号ＥＮ２の論理レベル（ハイレベル、またはローレベル）が反転された信号を出力する。ＯＲ１は、フリップフロップＦＦ２の出力（ＦＦ２_ＯＵＴ）とクロック制御回路３のＯＲ２から出力される信号とを入力し、これらの論理和演算結果を出力する。
【００３５】
フリップフロップＲＦＦ２は、クロックゲーティング回路６のＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）を入力し、この信号のネガティブエッジで駆動する。ここで、フリップフロップＲＦＦ２は、クロックゲーティング回路６のＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）がハイレベルの時にデータを保持可能なフリップフロップである。フリップフロップＲＦＦ２には、例えば図１６（ｂ）に示したマスタースレーブ型のフリップフロップを用いることができる。図１６（ｂ）に示すフリップフロップは、一方にクロック信号が入力され、他方にデータ保持信号（ＲＥＴ信号）が入力され、これらの論理和演算結果を出力する論理和回路（ＯＲ回路）を備える。このＯＲ回路の論理和演算結果として出力される信号はフリップフロップを駆動するクロック信号となる。また、フリップフロップＲＦＦ２に供給されるＲＥＴ信号はコントローラ２から出力される。
【００３６】
次に、本実施の形態にかかる半導体装置の動作について説明する。図２は、本実施の形態にかかる半導体装置の動作を説明するためのタイミングチャートである。図２に示すタイミングチャートは、クロックゲーティング回路５とフリップフロップＲＦＦ１の動作を示している。図２に示すように、本実施の形態にかかる半導体装置では、タイミングＴ２からタイミングＴ５までの間においてクロック信号ＣＬＫＩＮがローレベルに固定される。また、タイミングＴ３からタイミングＴ４までの間においてＲＥＴ信号がローレベルとなる。
【００３７】
まず、フリップフロップＦＦ１に供給されるイネーブル信号ＥＮ１が、タイミングＴ２からタイミングＴ５までの間においてローレベルである場合の動作について説明する。タイミングＴ１まではイネーブル信号ＥＮ１がハイレベルであるため、フリップフロップＦＦ１はハイレベルの信号（ＦＦ１_ＯＵＴ）をＡＮＤ１の一方の入力に出力する。また、ＡＮＤ１の他方の入力にはクロック信号ＣＬＫＩＮが供給される。したがって、ＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）はクロック信号ＣＬＫＩＮと同期する。
【００３８】
タイミングＴ１の後においてイネーブル信号ＥＮ１がローレベルになると、フリップフロップＦＦ１はタイミングＴ２、つまりクロック信号ＣＬＫＩＮのネガティブエッジにおいてローレベルの信号（ＦＦ１_ＯＵＴ）をＡＮＤ１の一方の入力に出力する。よって、ＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）は、クロック信号ＣＬＫＩＮのレベルにかかわらず、ローレベルに固定される。このとき、タイミングＴ３からタイミングＴ４においてＲＥＴ信号がローレベルとなり、フリップフロップＲＦＦ１がデータを保持する。ここで、フリップフロップＲＦＦ１は、クロックゲーティング回路５のＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）がローレベルの時にデータを保持可能なフリップフロップであるため、正確な値が保持される。
【００３９】
そして、タイミングＴ５において再びクロック信号ＣＬＫＩＮが動作すると共に、イネーブル信号ＥＮ１がハイレベルとなる。これにより、フリップフロップＦＦ１はタイミングＴ６、つまりクロック信号ＣＬＫＩＮのネガティブエッジにおいてハイレベルの信号（ＦＦ１_ＯＵＴ）をＡＮＤ１に出力する。よって、ＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）はクロック信号ＣＬＫＩＮと同期するようになる。
【００４０】
次に、イネーブル信号ＥＮ１が ハイレベルである場合の動作について説明する。この場合は、イネーブル信号ＥＮ１が常にハイレベルであるため、フリップフロップＦＦ１は常にハイレベルの信号をＡＮＤ１の一方の入力に出力する。また、ＡＮＤ１の他方の入力にはクロック信号ＣＬＫＩＮが供給される。したがって、ＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）はクロック信号ＣＬＫＩＮと同期する。また、タイミングＴ２からタイミングＴ５においてクロック信号ＣＬＫＩＮがローレベルに固定されるため、ＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）もローレベルに固定される。このとき、タイミングＴ３からタイミングＴ４においてＲＥＴ信号がローレベルとなり、フリップフロップＲＦＦ１がデータを保持する。ここで、フリップフロップＲＦＦ１は、クロックゲーティング回路５のＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）がローレベルの時にデータを保持可能なフリップフロップであるため、正確な値が保持される。
【００４１】
次に、図３を用いてクロック制御回路３、クロックゲーティング回路６、およびフリップフロップＲＦＦ２の動作について説明する。図３に示すように、本実施の形態にかかる半導体装置では、タイミングＴ１３からタイミングＴ１７までの間においてクロック信号ＣＬＫＩＮがローレベルに固定される。また、タイミングＴ１５からタイミングＴ１６までの間においてＲＥＴ信号がローレベルとなる。また、タイミングＴ１４においてクロックストップ信号ＣＬＫ_ＳＴＯＰが、クロック制御回路３のセット付フリップフロップＦＦ３にパルス状に供給される。
【００４２】
まず、フリップフロップＦＦ２に供給されるイネーブル信号ＥＮ２が、タイミングＴ１２からタイミングＴ１８までの間においてローレベルである場合の動作について説明する。タイミングＴ１１まではイネーブル信号ＥＮ２がハイレベルであるため、フリップフロップＦＦ２はハイレベルの信号（ＦＦ２_ＯＵＴ）をＯＲ１の一方の入力に出力する。また、ＯＲ１の他方の入力にはクロック制御回路３の出力が供給される。ここで、クロック制御回路３は、クロックストップ信号ＣＬＫ_ＳＴＯＰが入力されていない場合はクロック信号ＣＬＫＩＮと同期した信号をクロックゲーティング回路６へ出力する。したがって、ＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）はクロック信号ＣＬＫＩＮと同期する。
【００４３】
タイミングＴ１１の後においてイネーブル信号ＥＮ２がローレベルになると、フリップフロップＦＦ２はタイミングＴ１２、つまりクロック信号ＣＬＫＩＮのポジティブエッジにおいてハイレベルの信号（ＦＦ２_ＯＵＴ）をＯＲ１の一方の入力に出力する。よって、ＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）は、クロック信号ＣＬＫＩＮのレベルにかかわらず、ハイレベルに固定される。このとき、タイミングＴ１４においてクロックストップ信号ＣＬＫ_ＳＴＯＰが、クロック制御回路３のセット付フリップフロップＦＦ３にパルス状に供給される。しかし、ＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）は、既にハイレベルに固定されているため変化しない。また、このとき、タイミングＴ１５からタイミングＴ１６においてＲＥＴ信号がローレベルとなり、フリップフロップＲＦＦ２がデータを保持する。ここで、フリップフロップＲＦＦ２は、クロックゲーティング回路６のＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）がハイレベルの時にデータを保持可能なフリップフロップであるため、正確な値が保持される。
【００４４】
そして、タイミングＴ１７において再びクロック信号ＣＬＫＩＮが動作すると共に、イネーブル信号ＥＮ２がハイレベルとなる。これにより、フリップフロップＦＦ２はタイミングＴ１９、つまりクロック信号ＣＬＫＩＮのポジティブエッジにおいてローレベルの信号（ＦＦ２_ＯＵＴ）をＯＲ１に出力する。よって、ＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）はクロック信号ＣＬＫＩＮと同期するようになる。
【００４５】
次に、イネーブル信号ＥＮ２がハイレベルである場合の動作について説明する。この場合は、イネーブル信号ＥＮ２が常にハイレベルであるため、フリップフロップＦＦ２は常にローレベルの信号をＯＲ１の一方の入力に出力する。また、ＯＲ１の他方の入力にはクロック信号ＣＬＫＩＮが供給される。したがって、ＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）はクロック信号ＣＬＫＩＮと同期する。
【００４６】
一方、タイミングＴ１３においてクロック信号ＣＬＫＩＮがローレベルに固定されると、ＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）もローレベルに固定される。そして、クロック信号ＣＬＫＩＮがローレベルに固定された後（タイミングＴ１３の後）、ＲＥＴ信号がローレベルとなる前（タイミングＴ１４の前）であるタイミングＴ１４に、コントローラ２はクロック制御回路３のセット付フリップフロップＦＦ３にクロックストップ信号ＣＬＫ_ＳＴＯＰを供給する。これにより、セット付フリップフロップＦＦ３はＯＲ２に対してハイレベルの信号を供給するため、ＯＲ２はＯＲ１の入力にハイレベルの信号を出力する。このため、ＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）はハイレベルに固定される。
【００４７】
このとき、タイミングＴ１５からタイミングＴ１６においてＲＥＴ信号がローレベルとなり、フリップフロップＲＦＦ２がデータを保持する。ここで、フリップフロップＲＦＦ２は、クロックゲーティング回路６のＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）がハイレベルの時にデータを保持可能なフリップフロップであるため、正確な値が保持される。
【００４８】
ここで、セット付フリップフロップＦＦ３に供給されるクロック信号ＣＬＫＩＮの値がローレベルに固定されている間は、セット付フリップフロップＦＦ３はＯＲ２に対してハイレベルの信号を供給し続ける。そして、タイミングＴ１７においてクロック信号ＣＬＫＩＮがハイレベルになると、セット付フリップフロップＦＦ３はＯＲ２に対してローレベルの信号を供給するため、ＯＲ２はクロック信号ＣＬＫＩＮと同期した信号をＯＲ１の入力に出力する。以降、ＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）はクロック信号ＣＬＫＩＮと同期する。
【００４９】
なお、クロックストップ信号ＣＬＫ_ＳＴＯＰは例えば図３に示すようにパルス状に供給してもよいし、一定期間ハイレベルとなるように供給してもよい。すなわち、クロックストップ信号ＣＬＫ_ＳＴＯＰは、クロック信号ＣＬＫＩＮが固定された後（タイミングＴ１３の後）、ＲＥＴ信号がローレベルとなる前（タイミングＴ１５の前）にハイレベルとなり、クロック信号ＣＬＫＩＮが再度動作するタイミングの前（タイミングＴ１７の前）にローレベルとなるように供給される信号であればどのようなものであってもよい。
【００５０】
本実施の形態にかかる半導体装置では、ハイレベルの時にデータを保持可能なフリップフロップＲＦＦ２に入力される信号（ＲＦＦ２_ＣＬＫ_ＩＮ）が、クロック信号ＣＬＫＩＮを固定した際にローレベルに固定された場合であっても、クロック制御回路３を用いて強制的にハイレベルとすることができるので、フリップフロップＲＦＦ２に正確なデータを保持することができる。
【００５１】
すなわち、図１５に示した背景技術にかかる半導体装置では、図１８に示すようにイネーブル信号ＥＮ２の値によって、クロック信号ＣＬＫＩＮを固定した後にフリップフロップＲＦＦ１０２に保持されるデータが異なるため、リテンション機能を用いてフリップフロップにデータを保持する際に意図しないデータのラッチが発生するという問題があった。
【００５２】
本実施の形態にかかる半導体装置では、クロック制御回路３を用いてフリップフロップＲＦＦ２に入力される信号（ＲＦＦ２_ＣＬＫ_ＩＮ）を強制的にハイレベルとすることで、イネーブル信号ＥＮ２の値によらずフリップフロップＲＦＦ２に入力される信号（ＲＦＦ２_ＣＬＫ_ＩＮ）をハイレベルとすることができる。したがって、本実施の形態にかかる半導体装置により、リテンション機能を備えるフリップフロップにデータを保持する際に意図しないデータのラッチが発生することを抑制することができる。
【００５３】
実施の形態２
図４は本実施の形態にかかる半導体装置を説明するための回路図である。本実施の形態にかかる半導体装置は、コントローラ２と、クロック制御回路４と、クロックゲーティング回路５、６と、リテンション機能を備えるフリップフロップＲＦＦ１、ＲＦＦ２とを備える。クロックゲーティング回路５、６およびフリップフロップＲＦＦ１、ＲＦＦ２は論理回路７を構成する。また、コントローラ２は、ＰＬＬ等の発振回路１からクロック信号を入力し、このクロック信号に基づきクロック信号ＣＬＫＩＮを生成しクロック制御回路４およびクロックゲーティング回路５、６に供給する。また、コントローラ２は、クロック制御回路４にクロックストップ信号ＣＬＫ_ＳＴＯＰを、クロックゲーティング回路５にイネーブル信号ＥＮ１を、クロックゲーティング回路６にイネーブル信号ＥＮ２を、フリップフロップＲＦＦ１、ＲＦＦ２にデータ保持信号（ＲＥＴ信号）を供給する。
【００５４】
クロック制御回路４は、リセット付フリップフロップＦＦ４と論理積回路ＡＮＤ２とを備える。リセット付フリップフロップＦＦ４はクロック信号ＣＬＫＩＮを入力し、クロック信号ＣＬＫＩＮのポジティブエッジで論理レベル"１"（ハイレベル）を出力する。また、リセット付フリップフロップＦＦ４は、コントローラ２からクロックストップ信号ＣＬＫ_ＳＴＯＰが入力された場合は、ＡＮＤ２に対してローレベルの信号を出力する。また、ＡＮＤ２はリセット付フリップフロップＦＦ４の出力とクロック信号ＣＬＫＩＮを入力し、これらの論理積演算結果を出力する。すなわち、クロック制御回路４は、クロックストップ信号ＣＬＫ_ＳＴＯＰが入力されていない場合はクロック信号ＣＬＫＩＮと同期した信号を出力し、クロックストップ信号ＣＬＫ_ＳＴＯＰが入力された場合はローレベルの信号を出力する。
【００５５】
クロックゲーティング回路５はフリップフロップＦＦ１と論理積回路ＡＮＤ１とを備える。フリップフロップＦＦ１は、クロック制御回路４のＡＮＤ２から出力される信号のネガティブエッジで駆動し、このネガティブエッジのタイミングでイネーブル信号ＥＮ１の論理レベル（ハイレベル、またはローレベル）を出力する。ＡＮＤ１は、フリップフロップＦＦ１の出力（ＦＦ１_ＯＵＴ）とクロック制御回路４のＡＮＤ２の出力とを入力し、これらの論理積演算結果を出力する。
【００５６】
フリップフロップＲＦＦ１は、クロックゲーティング回路５のＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）を入力し、この信号のポジティブエッジで駆動する。ここで、フリップフロップＲＦＦ１は、クロックゲーティング回路５のＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）がローレベルの時にデータを保持可能なフリップフロップである。フリップフロップＲＦＦ１には、例えば図１６（ａ）に示したマスタースレーブ型のフリップフロップを用いることができる。図１６（ａ）に示すフリップフロップは、一方にクロック信号が入力され、他方にデータ保持信号（ＲＥＴ信号）が入力され、これらの論理積演算結果を出力する論理積回路（ＡＮＤ回路）を備える。ＡＮＤ回路の論理積演算結果として出力される信号はフリップフロップを駆動するクロック信号となる。また、フリップフロップＲＦＦ１に供給されるＲＥＴ信号はコントローラ２から出力される。
【００５７】
クロックゲーティング回路６はフリップフロップＦＦ２と論理和回路ＯＲ１とを備える。フリップフロップＦＦ２は、コントローラ２から供給されるクロック信号ＣＬＫＩＮのポジティブエッジで駆動し、このポジティブエッジのタイミングでイネーブル信号ＥＮ２の論理レベル（ハイレベル、またはローレベル）が反転された信号を出力する。ＯＲ１は、フリップフロップＦＦ２の出力（ＦＦ２_ＯＵＴ）とクロック信号ＣＬＫＩＮとを入力し、これらの論理和演算結果を出力する。
【００５８】
フリップフロップＲＦＦ２は、クロックゲーティング回路６のＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）を入力し、この信号のネガティブエッジで駆動する。ここで、フリップフロップＲＦＦ２は、クロックゲーティング回路６のＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）がハイレベルの時にデータを保持可能なフリップフロップである。フリップフロップＲＦＦ２には、例えば図１６（ｂ）に示したマスタースレーブ型のフリップフロップを用いることができる。図１６（ｂ）に示すフリップフロップは、一方にクロック信号が入力され、他方にデータ保持信号（ＲＥＴ信号）が入力され、これらの論理和演算結果を出力する論理和回路（ＯＲ回路）を備える。ＯＲ回路の論理和演算結果として出力される信号はフリップフロップを駆動するクロック信号となる。また、フリップフロップＲＦＦ２に供給されるＲＥＴ信号はコントローラ２から出力される。
【００５９】
次に、本実施の形態にかかる半導体装置の動作について説明する。図５は、本実施の形態にかかる半導体装置の動作を説明するためのタイミングチャートである。図５に示すタイミングチャートは、クロック制御回路４、クロックゲーティング回路５、およびフリップフロップＲＦＦ１の動作を示している。
【００６０】
図５に示すように、本実施の形態にかかる半導体装置では、タイミングＴ２３からタイミングＴ２７までの間においてクロック信号ＣＬＫＩＮがハイレベルに固定される。また、タイミングＴ２５からタイミングＴ２６までの間においてＲＥＴ信号がローレベルとなる。また、タイミングＴ２４においてクロックストップ信号ＣＬＫ_ＳＴＯＰが、クロック制御回路４のリセット付フリップフロップＦＦ４に供給される。
【００６１】
まず、フリップフロップＦＦ１に供給されるイネーブル信号ＥＮ１が、タイミングＴ２２からタイミングＴ２７までの間においてローレベルである場合の動作について説明する。タイミングＴ２１まではイネーブル信号ＥＮ１がハイレベルであるため、フリップフロップＦＦ１はハイレベルの信号（ＦＦ１_ＯＵＴ）をＡＮＤ１の一方の入力に出力する。また、ＡＮＤ１の他方の入力にはクロック制御回路４の出力が供給される。ここで、クロック制御回路４は、クロックストップ信号ＣＬＫ_ＳＴＯＰが入力されていない場合はクロック信号ＣＬＫＩＮと同期した信号をクロックゲーティング回路５へ出力する。したがって、ＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）はクロック信号ＣＬＫＩＮと同期する。
【００６２】
タイミングＴ２１の後においてイネーブル信号ＥＮ１がローレベルになると、フリップフロップＦＦ１はタイミングＴ２２、つまりクロック信号ＣＬＫＩＮのネガティブエッジにおいてローレベルの信号（ＦＦ１_ＯＵＴ）をＡＮＤ１の一方の入力に出力する。よって、ＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）は、クロック信号ＣＬＫＩＮのレベルにかかわらず、ローレベルに固定される。このとき、タイミングＴ２４においてクロックストップ信号ＣＬＫ_ＳＴＯＰが、クロック制御回路４のリセット付フリップフロップＦＦ４にパルス状に供給される。しかし、ＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）は、ローレベルに固定されているため変化しない。また、このとき、タイミングＴ２５からタイミングＴ２６においてＲＥＴ信号がローレベルとなり、フリップフロップＲＦＦ１がデータを保持する。ここで、フリップフロップＲＦＦ１は、クロックゲーティング回路５のＡＮＤ
１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）がローレベルの時にデータを保持可能なフリップフロップであるため、正確な値が保持される。
【００６３】
そして、タイミングＴ２７において再びクロック信号ＣＬＫＩＮが動作すると共に、イネーブル信号ＥＮ１がハイレベルとなる。これにより、フリップフロップＦＦ１はタイミングＴ２９、つまりクロック信号ＣＬＫＩＮのネガティブエッジにおいてハイレベルの信号（ＦＦ１_ＯＵＴ）をＡＮＤ１に出力する。よって、ＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）はクロック信号ＣＬＫＩＮと同期するようになる。
【００６４】
次に、イネーブル信号ＥＮ１がハイレベルである場合の動作について説明する。この場合は、イネーブル信号ＥＮ１が常にハイレベルであるため、フリップフロップＦＦ１は常にハイレベルの信号をＡＮＤ１の一方の入力に出力する。また、ＡＮＤ１の他方の入力には、クロック信号ＣＬＫＩＮと同期したクロック制御回路４の出力が供給される。したがって、ＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）はクロック信号ＣＬＫＩＮと同期する。
【００６５】
一方、タイミングＴ２３においてクロック信号ＣＬＫＩＮがハイレベルに固定されると、ＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）もハイレベルに固定される。そして、クロック信号ＣＬＫＩＮがハイレベルに固定された後（タイミングＴ２３の後）、ＲＥＴ信号がローレベルとなる前（タイミングＴ２４の前）であるタイミングＴ２４に、コントローラ２はクロック制御回路４のリセット付フリップフロップＦＦ４にパルス状のクロックストップ信号ＣＬＫ_ＳＴＯＰを供給する。これにより、リセット付フリップフロップＦＦ４はＡＮＤ２に対してローレベルの信号を供給するため、ＡＮＤ２はＡＮＤ１の入力にローレベルの信号を出力する。このため、ＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）はローレベルに固定される。
【００６６】
このとき、タイミングＴ２５からタイミングＴ２６においてＲＥＴ信号がローレベルとなり、フリップフロップＲＦＦ１がデータを保持する。ここで、フリップフロップＲＦＦ１は、クロックゲーティング回路５のＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）がローレベルの時にデータを保持可能なフリップフロップであるため、正確な値が保持される。
【００６７】
ここで、リセット付フリップフロップＦＦ４に供給されるクロック信号ＣＬＫＩＮの値がハイレベルに固定されている間は、リセット付フリップフロップＦＦ４はＡＮＤ２に対してローレベルの信号を供給し続ける。そして、タイミングＴ２７においてクロック信号ＣＬＫＩＮがローレベルになると、リセット付フリップフロップＦＦ４はＡＮＤ２に対してハイレベルの信号を供給するため、ＡＮＤ２はクロック信号ＣＬＫＩＮと同期した信号をＡＮＤ１の入力に出力する。以降、ＡＮＤ１の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）はクロック信号ＣＬＫＩＮと同期する。
【００６８】
なお、クロックストップ信号ＣＬＫ_ＳＴＯＰは例えば図５に示すようにパルス状に供給してもよいし、一定期間ハイレベルとなるように供給してもよい。すなわち、クロックストップ信号ＣＬＫ_ＳＴＯＰは、クロック信号ＣＬＫＩＮが固定された後（タイミングＴ２３の後）、ＲＥＴ信号がローレベルとなる前（タイミングＴ２５の前）にハイレベルとなり、クロック信号ＣＬＫＩＮが再度動作するタイミングの前（タイミングＴ２７の前）にローレベルとなるように供給される信号であればどのようなものであってもよい。
【００６９】
次に、クロックゲーティング回路６とフリップフロップＲＦＦ２の動作について図６のタイミングチャートを用いて説明する。図６に示すように、タイミングＴ３２からタイミングＴ３５までの間においてクロック信号ＣＬＫＩＮがハイレベルに固定される。また、タイミングＴ３３からタイミングＴ３４までの間においてＲＥＴ信号がローレベルとなる。
【００７０】
まず、フリップフロップＦＦ２に供給されるイネーブル信号ＥＮ２が、タイミングＴ３２からタイミングＴ３５までの間においてローレベルである場合の動作について説明する。タイミングＴ３１まではイネーブル信号ＥＮ２がハイレベルであるため、フリップフロップＦＦ２はローレベルの信号（ＦＦ２_ＯＵＴ）をＯＲ１の一方の入力に出力する。また、ＯＲ１の他方の入力にはクロック信号ＣＬＫＩＮが供給される。したがって、ＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）はクロック信号ＣＬＫＩＮと同期する。
【００７１】
タイミングＴ３１の後においてイネーブル信号ＥＮ２がローレベルになると、フリップフロップＦＦ２はタイミングＴ３２、つまりクロック信号ＣＬＫＩＮのポジティブエッジにおいてハイレベルの信号（ＦＦ２_ＯＵＴ）をＯＲ１の一方の入力に出力する。よって、ＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）は、クロック信号ＣＬＫＩＮのレベルにかかわらず、ハイレベルに固定される。このとき、タイミングＴ３３からタイミングＴ３４においてＲＥＴ信号がローレベルとなり、フリップフロップＲＦＦ２がデータを保持する。ここで、フリップフロップＲＦＦ２は、クロックゲーティング回路６のＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）がハイレベルの時にデータを保持可能なフリップフロップであるため、正確な値が保持される。
【００７２】
そして、タイミングＴ３５において再びクロック信号ＣＬＫＩＮが動作すると共に、イネーブル信号ＥＮ２がハイレベルとなる。これにより、フリップフロップＦＦ２はタイミングＴ３６、つまりクロック信号ＣＬＫＩＮのポジティブエッジにおいてローレベルの信号（ＦＦ２_ＯＵＴ）をＯＲ１に出力する。よって、ＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）はクロック信号ＣＬＫＩＮと同期するようになる。
【００７３】
次に、イネーブル信号ＥＮ２が ハイレベルである場合の動作について説明する。この場合は、イネーブル信号ＥＮ２が常にハイレベルであるため、フリップフロップＦＦ２は常にローレベルの信号をＯＲ１の一方の入力に出力する。また、ＯＲ１の他方の入力にはクロック信号ＣＬＫＩＮが供給される。したがって、ＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）はクロック信号ＣＬＫＩＮと同期する。また、タイミングＴ３２からタイミングＴ３５においてクロック信号ＣＬＫＩＮがハイレベルに固定されるため、ＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）もハイレベルに固定される。このとき、タイミングＴ３３からタイミングＴ３４においてＲＥＴ信号がローレベルとなり、フリップフロップＲＦＦ２がデータを保持する。ここで、フリップフロップＲＦＦ２は、クロックゲーティング回路６のＯＲ１の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）がハイレベルの時にデータを保持可能なフリップフロップであるため、正確な値が保持される。
【００７４】
本実施の形態にかかる半導体装置では、ローレベルの時にデータを保持可能なフリップフロップＲＦＦ１に入力される信号（ＲＦＦ１_ＣＬＫ_ＩＮ）が、クロック信号ＣＬＫＩＮを固定した際にハイレベルに固定された場合であっても、クロック制御回路４を用いて強制的にローレベルとすることができるので、フリップフロップＲＦＦ１に正確なデータを保持することができる。
【００７５】
すなわち、本実施の形態にかかる半導体装置では、クロック制御回路４を用いてフリップフロップＲＦＦ１に入力される信号（ＲＦＦ１_ＣＬＫ_ＩＮ）を強制的にローレベルにすることで、イネーブル信号ＥＮ１の値によらずフリップフロップＲＦＦ１に入力される信号（ＲＦＦ１_ＣＬＫ_ＩＮ）のレベルをローレベルとすることができる。したがって、本実施の形態にかかる半導体装置により、リテンション機能を備えるフリップフロップにデータを保持する際に意図しないデータのラッチが発生することを抑制することができる。
【００７６】
なお、実施の形態１ではクロック制御回路３を備える場合、実施の形態２ではクロック制御回路４を備える場合について説明した。しかし、本発明ではクロック制御回路３とクロック制御回路４を同時に備えていてもよい。このように、クロック制御回路３、４を備えることで、クロック信号ＣＬＫＩＮがローレベルで固定された場合（実施の形態１）とハイレベルで固定された場合（実施の形態２）の両方に対応することができる。
【００７７】
実施の形態３
次に、本発明の実施の形態３について説明する。図７は本実施の形態にかかる半導体装置を説明するための回路図である。本実施の形態にかかる半導体装置は、コントローラ２と、排他的論理和回路ＸＯＲ１と、クロック制御回路３、４と、リテンション機能を備えるフリップフロップＲＦＦ１、ＲＦＦ２とを備える。コントローラ２は、ＰＬＬ等の発振回路１からクロック信号を入力し、このクロック信号に基づきクロック信号ＣＬＫＩＮを生成し排他的論理和回路ＸＯＲ１に出力する。また、コントローラ２は、クロック制御回路３、４にクロックストップ信号ＣＬＫ_ＳＴＯＰを、フリップフロップＲＦＦ１、ＲＦＦ２にデータ保持信号（ＲＥＴ信号）を供給する。
【００７８】
ＸＯＲ１はクロック信号ＣＬＫＩＮとＳＥＬ信号を入力し、これらの排他的論理和を出力する。ＸＯＲ１は、ＳＥＬ信号がローレベルである場合、入力されたクロック信号ＣＬＫＩＮをそのまま出力する。一方、ＳＥＬ信号がハイレベルである場合、入力されたクロック信号ＣＬＫＩＮを反転した信号を出力する。このように、本実施の形態にかかる半導体装置では、ＳＥＬ信号を切り替えることでクロック信号ＣＬＫＩＮの正転・反転を切り替えることができる。
【００７９】
クロック制御回路４は、リセット付フリップフロップＦＦ４と論理積回路ＡＮＤ２とを備える。リセット付フリップフロップＦＦ４はＸＯＲ１から出力されたクロック信号ＣＬＫを入力し、クロック信号ＣＬＫのポジティブエッジで論理レベル"１"（ハイレベル）を出力する。また、リセット付フリップフロップＦＦ４は、コントローラ２からクロックストップ信号ＣＬＫ_ＳＴＯＰが入力された場合は、ＡＮＤ２に対してローレベルの信号を出力する。また、ＡＮＤ２はリセット付フリップフロップＦＦ４の出力とＸＯＲ１から出力されたクロック信号ＣＬＫを入力し、これらの論理積演算結果を出力する。すなわち、クロック制御回路４は、クロックストップ信号ＣＬＫ_ＳＴＯＰが入力されていない場合はクロック信号ＣＬＫと同期した信号を出力し、クロックストップ信号ＣＬＫ_ＳＴＯＰが入力された場合はローレベルの信号を出力する。
【００８０】
クロック制御回路３は、セット付フリップフロップＦＦ３と論理和回路ＯＲ２とを備える。セット付フリップフロップＦＦ３はＸＯＲ１から出力されたクロック信号ＣＬＫを入力し、クロック信号ＣＬＫのポジティブエッジで論理レベル"０"（ローレベル）を出力する。また、セット付フリップフロップＦＦ３は、コントローラ２からクロックストップ信号ＣＬＫ_ＳＴＯＰが入力された場合は、ＯＲ２に対してハイレベルの信号を出力する。また、ＯＲ２はセット付フリップフロップＦＦ３の出力とＸＯＲ１から出力されたクロック信号ＣＬＫを入力し、これらの論理和演算結果を出力する。すなわち、クロック制御回路３は、クロックストップ信号ＣＬＫ_ＳＴＯＰが入力されていない場合はクロック信号ＣＬＫと同期した信号を出力し、クロックストップ信号ＣＬＫ_ＳＴＯＰが入力された場合はハイレベルの信号を出力する。
【００８１】
フリップフロップＲＦＦ１は、クロック制御回路４のＡＮＤ２の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）を入力し、この信号のポジティブエッジで駆動する。ここで、フリップフロップＲＦＦ１は、クロック制御回路４のＡＮＤ２の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）がローレベルの時にデータを保持可能なフリップフロップである。フリップフロップＲＦＦ１には、例えば図１６（ａ）に示したマスタースレーブ型のフリップフロップを用いることができる。図１６（ａ）に示すフリップフロップは、一方にクロック信号が入力され、他方にデータ保持信号（ＲＥＴ信号）が入力され、これらの論理積演算結果を出力する論理積回路（ＡＮＤ回路）を備える。ＡＮＤ回路の論理積演算結果として出力される信号はフリップフロップを駆動するクロック信号となる。また、フリップフロップＲＦＦ１に供給されるＲＥＴ信号はコントローラ２から出力される。
【００８２】
フリップフロップＲＦＦ２は、クロック制御回路３のＯＲ２の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）を入力し、この信号のネガティブエッジで駆動する。ここで、フリップフロップＲＦＦ２は、クロック制御回路３のＯＲ２の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）がハイレベルの時にデータを保持可能なフリップフロップである。フリップフロップＲＦＦ２には、例えば図１６（ｂ）に示したマスタースレーブ型のフリップフロップを用いることができる。図１６（ｂ）に示すフリップフロップは、一方にクロック信号が入力され、他方にデータ保持信号（ＲＥＴ信号）が入力され、これらの論理和演算結果を出力する論理和回路（ＯＲ回路）を備える。ＯＲ回路の論理和演算結果として出力される信号はフリップフロップを駆動するクロック信号となる。また、フリップフロップＲＦＦ２に供給されるＲＥＴ信号はコントローラ２から出力される。
【００８３】
次に、本実施の形態にかかる半導体装置の動作について説明する。図８は、本実施の形態にかかる半導体装置の動作を説明するためのタイミングチャートである。図８に示すように、本実施の形態にかかる半導体装置では、タイミングＴ４２からタイミングＴ４６までの間においてクロック信号ＣＬＫＩＮがローレベルに固定される。また、タイミングＴ４４からタイミングＴ４５までの間においてＲＥＴ信号がローレベルとなる。また、タイミングＴ４３においてクロックストップ信号ＣＬＫ_ＳＴＯＰが、クロック制御回路４のリセット付フリップフロップＦＦ４およびクロック制御回路３のセット付フリップフロップＦＦ３にパルス状に供給される。
【００８４】
まず、ＳＥＬ信号がローレベルの場合について説明する。ＳＥＬ信号がローレベルの場合は、ＸＯＲ１の出力（ＣＬＫ）はクロック信号ＣＬＫＩＮと同期する（つまり、正転となる）。
【００８５】
クロック制御回路４のリセット付フリップフロップＦＦ４は、クロックストップ信号ＣＬＫ_ＳＴＯＰがローレベルの場合、ＸＯＲ１の出力（ＣＬＫ）のポジティブエッジで駆動し、ハイレベル信号（"１"）をＡＮＤ２の一方の入力に出力する。また、ＡＮＤ２は一方の入力にリセット付フリップフロップＦＦ４の出力を、他方の入力にＸＯＲ１の出力（ＣＬＫ）を入力し、これらの論理積演算結果をフリップフロップＲＦＦ１に出力する（ＲＦＦ１_ＣＬＫ_ＩＮ）。よって、ＡＮＤ２の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）はＸＯＲ１の出力（ＣＬＫ）と同期する。
【００８６】
タイミングＴ４２でクロック信号ＣＬＫＩＮがローレベルに固定されると、ＸＯＲ１の出力（ＣＬＫ）もローレベルに固定され、ＡＮＤ２の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）もローレベルに固定される。そして、タイミングＴ４４からタイミングＴ４５においてＲＥＴ信号がローレベルとなり、フリップフロップＲＦＦ１がデータを保持する。ここで、フリップフロップＲＦＦ１は、クロック制御回路４のＡＮＤ２の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）がローレベルの時にデータを保持可能なフリップフロップであるため、正確な値が保持される。なお、タイミングＴ４３においてクロックストップ信号ＣＬＫ_ＳＴＯＰが、クロック制御回路４のリセット付フリップフロップＦＦ４にパルス状に供給されると、リセット付フリップフロップＦＦ４はローレベル信号をＡＮＤ２の一方の入力に出力する。しかし、ＡＮＤ２の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）は既にローレベルに固定されているため、ＡＮＤ２の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）は変化しない。
【００８７】
そして、タイミングＴ４６において再びクロック信号ＣＬＫＩＮが動作すると、リセット付フリップフロップＦＦ４はタイミングＴ４６、つまりＸＯＲ１の出力（ＣＬＫ）のポジティブエッジにおいてハイレベルの信号をＡＮＤ２に出力する。よって、ＡＮＤ２の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）はＸＯＲ１の出力（ＣＬＫ）と同期するようになる。
【００８８】
次に、クロック制御回路３とフリップフロップＲＦＦ２の動作について説明する。クロック制御回路３のセット付フリップフロップＦＦ３は、クロックストップ信号ＣＬＫ_ＳＴＯＰがローレベルの場合、ＸＯＲ１の出力（ＣＬＫ）のポジティブエッジで駆動し、ローレベル信号（"０"）をＯＲ２の一方の入力に出力する。また、ＯＲ２は一方の入力にセット付フリップフロップＦＦ３の出力を、他方の入力にＸＯＲ１の出力（ＣＬＫ）を入力し、これらの論理和演算結果をフリップフロップＲＦＦ２に出力する（ＲＦＦ２_ＣＬＫ_ＩＮ）。よって、ＯＲ２の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）はＸＯＲ１の出力（ＣＬＫ）と同期する。
【００８９】
タイミングＴ４２でクロック信号ＣＬＫＩＮがローレベルに固定されると、ＸＯＲ１の出力（ＣＬＫ）もローレベルに固定され、ＯＲ２の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）もローレベルに固定される。そして、タイミングＴ４３においてクロックストップ信号ＣＬＫ_ＳＴＯＰが、クロック制御回路３のセット付フリップフロップＦＦ３にパルス状に供給されると、セット付フリップフロップＦＦ３はハイレベル信号をＯＲ２の一方の入力に出力する。これにより、ＯＲ２の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）はハイレベルとなる。そして、タイミングＴ４４からタイミングＴ４５においてＲＥＴ信号がローレベルとなり、フリップフロップＲＦＦ２がデータを保持する。ここで、フリップフロップＲＦＦ２は、クロック制御回路３のＯＲ２の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）がハイレベルの時にデータを保持可能なフリップフロップであるため、正確な値が保持される。
【００９０】
そして、タイミングＴ４６において再びクロック信号ＣＬＫＩＮが動作すると、セット付フリップフロップＦＦ３はタイミングＴ４６、つまりＸＯＲ１の出力（ＣＬＫ）のポジティブエッジにおいてローレベルの信号をＯＲ２に出力する。よって、ＯＲ２の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）はＸＯＲ１の出力（ＣＬＫ）と同期するようになる。
【００９１】
次に、ＳＥＬ信号がハイレベルの場合について説明する。ＳＥＬ信号がハイレベルの場合は、ＸＯＲ１の出力（ＣＬＫ）はクロック信号ＣＬＫＩＮが反転した信号となる。
【００９２】
クロック制御回路４のリセット付フリップフロップＦＦ４は、クロックストップ信号ＣＬＫ_ＳＴＯＰがローレベルの場合、ＸＯＲ１の出力（ＣＬＫ）のポジティブエッジで駆動し、ハイレベル信号（"１"）をＡＮＤ２の一方の入力に出力する。また、ＡＮＤ２は一方の入力にリセット付フリップフロップＦＦ４の出力を、他方の入力にＸＯＲ１の出力（ＣＬＫ）を入力し、これらの論理積演算結果をフリップフロップＲＦＦ１に出力する（ＲＦＦ１_ＣＬＫ_ＩＮ）。よって、ＡＮＤ２の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）はＸＯＲ１の出力（ＣＬＫ）と同期する。
【００９３】
タイミングＴ４２でクロック信号ＣＬＫＩＮがローレベルで固定されると、ＸＯＲ１の出力（ＣＬＫ）はハイレベルに固定され、ＡＮＤ２の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）もハイレベルに固定される。そして、タイミングＴ４３においてクロックストップ信号ＣＬＫ_ＳＴＯＰが、クロック制御回路４のリセット付フリップフロップＦＦ４にパルス状に供給されると、リセット付フリップフロップＦＦ４はローレベル信号をＡＮＤ２の一方の入力に出力する。これにより、ＡＮＤ２の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）は、ローレベルとなる。そして、タイミングＴ４４からタイミングＴ４５においてＲＥＴ信号がローレベルとなり、フリップフロップＲＦＦ１がデータを保持する。ここで、フリップフロップＲＦＦ１は、クロック制御回路４のＡＮＤ２の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）がローレベルの時にデータを保持可能なフリップフロップであるため、正確な値が保持される。
【００９４】
そして、タイミングＴ４６において再びクロック信号ＣＬＫＩＮが動作すると、リセット付フリップフロップＦＦ４はタイミングＴ４７、つまりＸＯＲ１の出力（ＣＬＫ）のポジティブエッジにおいてハイレベルの信号をＡＮＤ２に出力する。よって、ＡＮＤ２の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）はＸＯＲ１の出力（ＣＬＫ）と同期するようになる。
【００９５】
次に、クロック制御回路３とフリップフロップＲＦＦ２の動作について説明する。クロック制御回路３のセット付フリップフロップＦＦ３は、クロックストップ信号ＣＬＫ_ＳＴＯＰがローレベルの場合、ＸＯＲ１の出力（ＣＬＫ）のポジティブエッジで駆動し、ローレベル信号（"０"）をＯＲ２の一方の入力に出力する。また、ＯＲ２は一方の入力にセット付フリップフロップＦＦ３の出力を、他方の入力にＸＯＲ１の出力（ＣＬＫ）を入力し、これらの論理和演算結果をフリップフロップＲＦＦ２に出力する（ＲＦＦ２_ＣＬＫ_ＩＮ）。よって、ＯＲ２の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）はＸＯＲ１の出力（ＣＬＫ）と同期する。
【００９６】
タイミングＴ４２でクロック信号ＣＬＫＩＮがローレベルで固定されると、ＸＯＲ１の出力（ＣＬＫ）はハイレベルに固定され、ＯＲ２の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）もハイレベルに固定される。そして、タイミングＴ４４からタイミングＴ４５においてＲＥＴ信号がローレベルとなり、フリップフロップＲＦＦ２がデータを保持する。ここで、フリップフロップＲＦＦ２は、クロック制御回路３のＯＲ２の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）がハイレベルの時にデータを保持可能なフリップフロップであるため、正確な値が保持される。なお、タイミングＴ４３においてクロックストップ信号ＣＬＫ_ＳＴＯＰが、クロック制御回路３のセット付フリップフロップＦＦ３にパルス状に供給されると、セット付フリップフロップＦＦ３はハイレベル信号をＯＲ２の一方の入力に出力する。しかし、ＯＲ２の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）は、既にハイレベルに固定されているため、ＯＲ２の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）は変化しない。
【００９７】
そして、タイミングＴ４６において再びクロック信号ＣＬＫＩＮが動作すると、セット付フリップフロップＦＦ３はタイミングＴ４６、つまりＸＯＲ１の出力（ＣＬＫ）のポジティブエッジにおいてローレベルの信号をＯＲ２に出力する。よって、ＯＲ２の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）はＸＯＲ１の出力（ＣＬＫ）と同期するようになる。
【００９８】
本実施の形態にかかる半導体装置では、ローレベルの時にデータを保持可能なフリップフロップＲＦＦ１に入力される信号（ＲＦＦ１_ＣＬＫ_ＩＮ）が、クロック信号ＣＬＫＩＮを固定した際にハイレベルに固定された場合であっても、クロック制御回路４を用いて強制的にローレベルとすることができるので、フリップフロップＲＦＦ１に正確なデータを保持することができる。
【００９９】
また、本実施の形態にかかる半導体装置では、ハイレベルの時にデータを保持可能なフリップフロップＲＦＦ２に入力される信号（ＲＦＦ２_ＣＬＫ_ＩＮ）が、クロック信号ＣＬＫＩＮを固定した際にローレベルに固定された場合であっても、クロック制御回路３を用いて強制的にハイレベルとすることができるので、フリップフロップＲＦＦ２に正確なデータを保持することができる。
【０１００】
したがって、本実施の形態にかかる半導体装置により、リテンション機能を備えるフリップフロップにデータを保持する際に意図しないデータのラッチが発生することを抑制することができる。
【０１０１】
なお、実施の形態１乃至３で説明した半導体装置は次のように表現することもできる。すなわち、実施の形態１乃至３で説明した半導体装置はクロック信号（ＲＦＦ１_ＣＬＫ_ＩＮ、ＲＦＦ２_ＣＬＫ_ＩＮ）と同期して駆動すると共に、データ保持信号（ＲＥＴ信号）に応じてデータを保持するフリップフロップＲＦＦ１、ＲＦＦ２と、フリップフロップＲＦＦ１、ＲＦＦ２に供給されるクロック信号を制御するクロック制御回路３、４と、クロック制御回路３、４に入力クロック信号ＣＬＫＩＮ（実施の形態３の場合は、ＣＬＫ）を供給し、フリップフロップＲＦＦ１、ＲＦＦ２にデータ保持信号（ＲＥＴ信号）を供給すると共に、クロック制御回路３、４を制御するコントローラ２と、を備える。
【０１０２】
そして、フリップフロップＲＦＦ１がクロック信号（ＲＦＦ１_ＣＬＫ_ＩＮ）のポジティブエッジで駆動し、かつクロック信号（ＲＦＦ１_ＣＬＫ_ＩＮ）がローレベルの時にデータを保持する場合、コントローラ２は入力クロック信号（ＣＬＫＩＮ、ＣＬＫ）を固定した後、フリップフロップＲＦＦ１がデータを保持する前に、フリップフロップＲＦＦ１にローレベルのクロック信号（ＲＦＦ１_ＣＬＫ_ＩＮ）が供給されるようにクロック制御回路を制御する（実施の形態２、実施の形態３）。
【０１０３】
また、フリップフロップＲＦＦ２がクロック信号（ＲＦＦ２_ＣＬＫ_ＩＮ）のネガティブエッジで駆動し、かつクロック信号（ＲＦＦ２_ＣＬＫ_ＩＮ）がハイレベルの時にデータを保持する場合、コントローラ２は入力クロック信号（ＣＬＫＩＮ、ＣＬＫ）を固定した後、フリップフロップＲＦＦ２がデータを保持する前に、フリップフロップＲＦＦ２にハイレベルのクロック信号（ＲＦＦ２_ＣＬＫ_ＩＮ）が供給されるようにクロック制御回路４を制御する（実施の形態１、実施の形態３）。
【０１０４】
また、本発明は回路にクロック制御回路を挿入する処理をコンピュータに実行させるためのプログラムにも適用することができる。この場合、本発明にかかるプログラムは、回路にクロック制御回路を挿入する処理をコンピュータに実行させるためのプログラムであって、クロック信号（ＲＦＦ１_ＣＬＫ_ＩＮ、ＲＦＦ２_ＣＬＫ_ＩＮ）と同期して駆動すると共に、データ保持信号（ＲＥＴ信号）に応じてデータを保持するフリップフロップＲＦＦ１、ＲＦＦ２のうち、クロック信号のポジティブエッジで駆動し、かつクロック信号がローレベルの時にデータを保持するフリップフロップＲＦＦ１の前段に、クロック信号が固定された後、フリップフロップがデータを保持する前に、フリップフロップＲＦＦ１にローレベルのクロック信号を供給するクロック制御回路４を挿入する。
【０１０５】
また、フリップフロップＲＦＦ１、ＲＦＦ２のうち、クロック信号のネガティブエッジで駆動し、かつクロック信号がハイレベルの時にデータを保持するフリップフロップＲＦＦ２の前段に、クロック信号が固定された後、フリップフロップがデータを保持する前に、フリップフロップＲＦＦ２にハイレベルのクロック信号を供給するクロック制御回路３を挿入する。
【０１０６】
実施の形態４
次に、本発明の実施の形態４について説明する。実施の形態４では、実施の形態１乃至３で説明した半導体装置のクロック制御回路３、４を、セット付フリップフロップＦＦ３、リセット付フリップフロップＦＦ４を用いずに構成している。これ以外は、実施の形態１乃至３にかかる半導体装置と同様であるので重複した説明は省略する。
【０１０７】
図９（ａ）に示すように、本実施の形態にかかる半導体装置のクロック制御回路４では、クロック制御回路４を、論理和回路ＯＲ３、ラッチＬＡ１、論理積回路ＡＮＤ３を含む回路で構成している。図９（ａ）に示すように、クロック制御回路４を構成するＯＲ３は、一方の入力にクロックストップ信号ＣＬＫ_ＳＴＯＰを、他方の入力にクロック信号ＣＬＫＩＮを反転した信号を入力し、これらの論理和演算結果をラッチＬＡ１のイネーブル入力（ＥＮ）に出力する。ラッチＬＡ１はクロックストップ信号ＣＬＫ_ＳＴＯＰを入力し、この信号を反転した信号をＯＲ３の出力に応じて出力する。ラッチＬＡ１は例えばゲーテッドＤラッチ回路である。ＡＮＤ３は、一方にラッチＬＡ１の出力を、他方にクロック信号ＣＬＫＩＮを入力し、これらの論理積演算結果を出力する。
【０１０８】
図９（ａ）に示す回路では、クロックストップ信号ＣＬＫ_ＳＴＯＰがローレベルの場合は、ラッチＬＡ１は常にハイレベルの信号をＡＮＤ３の一方の入力に出力するので、ＡＮＤ３はクロック信号ＣＬＫＩＮと同期した信号を出力する。一方、クロックストップ信号ＣＬＫ_ＳＴＯＰがハイレベルになると、ラッチＬＡ１は常にローレベルの信号をＡＮＤ３の一方の入力に出力するので、ＡＮＤ３は常にローレベルの信号を出力する。
【０１０９】
また、図９（ｂ）に示すように、本実施の形態にかかる半導体装置のクロック制御回路３では、クロック制御回路３を、論理和回路ＯＲ４、ラッチＬＡ２、論理和回路ＯＲ５を含む回路で構成している。図９（ｂ）に示すように、クロック制御回路３を構成するＯＲ４は、一方の入力にクロックストップ信号ＣＬＫ_ＳＴＯＰを、他方の入力にクロック信号ＣＬＫＩＮを入力し、これらの論理和演算結果をラッチＬＡ２のイネーブル入力（ＥＮ）に出力する。ラッチＬＡ２はクロックストップ信号ＣＬＫ_ＳＴＯＰを入力し、この信号をＯＲ３の出力に応じて出力する。ラッチＬＡ２は例えばゲーテッドＤラッチ回路である。ＯＲ５は、一方にラッチＬＡ２の出力を、他方にクロック信号ＣＬＫＩＮを入力し、これらの論理和演算結果を出力する。
【０１１０】
図９（ｂ）に示す回路では、クロックストップ信号ＣＬＫ_ＳＴＯＰがローレベルの場合は、ラッチＬＡ２は常にローレベルの信号をＯＲ５の一方の入力に出力するので、ＯＲ５はクロック信号ＣＬＫＩＮと同期した信号を出力する。一方、クロックストップ信号ＣＬＫ_ＳＴＯＰがハイレベルになると、ラッチＬＡ２は常にハイレベルの信号をＯＲ５の一方の入力に出力するので、ＯＲ５は常にハイレベルの信号を出力する。
【０１１１】
本実施の形態にかかる半導体装置では、クロック制御回路３、４の回路構成を図９に示したようなラッチ回路を用いた回路構成としているので、実施の形態１乃至３の場合と比べて回路面積を小さくすることができる。なお、本実施の形態にかかる半導体装置を用いた場合であっても、実施の形態１乃至３と同様の効果を得ることができる。
【０１１２】
実施の形態５
次に、本発明の実施の形態５について説明する。実施の形態５では、実施の形態１乃至３で説明した半導体装置のクロック制御回路４とクロックゲーティング回路５、およびクロック制御回路３とクロックゲーティング回路６をそれぞれ一つにまとめている。これ以外は、実施の形態１乃至３にかかる半導体装置と同様であるので重複した説明は省略する。
【０１１３】
図１０は、実施の形態１乃至３で説明した半導体装置のクロック制御回路４とクロックゲーティング回路５を一つの回路（以下、第１のクロック処理回路という）にまとめた場合を示す回路図である。図１０に示す本実施の形態にかかる第１のクロック処理回路は、論理積回路ＡＮＤ４、ＡＮＤ５、論理和回路ＯＲ６、ラッチＬＡ３を有する。ＡＮＤ４は、一方の入力にイネーブル信号ＥＮ１を、他方の入力にクロックストップ信号ＣＬＫ_ＳＴＯＰが反転された信号を入力し、これらの論理積演算結果をラッチＬＡ３の入力に出力する。ＯＲ６は、一方の入力にクロックストップ信号ＣＬＫ_ＳＴＯＰを、他方の入力にクロック信号ＣＬＫＩＮを反転した信号を入力し、これらの論理和演算結果をラッチＬＡ３のイネーブル入力（ＥＮ）に出力する。ラッチＬＡ３はＡＮＤ４の出力を入力し、この信号をＯＲ６の出力に応じて出力する。ラッチＬＡ３は例えばゲーテッドＤラッチ回路である。ＡＮＤ５は、一方にラッチＬＡ３の出力を、他方にクロック信号ＣＬＫＩＮを入力し、これらの論理積演算結果を出力する。
【０１１４】
図１１は、図１０に示した第１のクロック処理回路の真理値表である。図１１に示すように、クロックストップ信号ＣＬＫ_ＳＴＯＰが"０"で、かつイネーブル信号ＥＮ１が"０"の場合は、ＡＮＤ５の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）は常に"０"となる。また、クロックストップ信号ＣＬＫ_ＳＴＯＰが"０"で、かつイネーブル信号ＥＮ１が"１"の場合は、ＡＮＤ５の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）は、クロック信号ＣＬＫＩＮに同期する。一方、クロックストップ信号ＣＬＫ_ＳＴＯＰが"１"の場合は、クロック信号ＣＬＫＩＮおよびイネーブル信号ＥＮ１の値にかかわらず、ＡＮＤ５の出力（ＲＦＦ１_ＣＬＫ_ＩＮ）は"０"となる。
【０１１５】
また、図１２は、実施の形態１乃至３で説明した半導体装置のクロック制御回路３とクロックゲーティング回路６を一つの回路（以下、第２のクロック処理回路という）にまとめた場合を示す回路図である。図１２に示す本実施の形態にかかる第２のクロック処理回路は、論理和回路ＯＲ７、ＯＲ８、ＯＲ９、ラッチＬＡ４を有する。ＯＲ７は、一方の入力にイネーブル信号ＥＮ２が反転された信号を、他方の入力にクロックストップ信号ＣＬＫ_ＳＴＯＰを入力し、これらの論理和演算結果をラッチＬＡ４の入力に出力する。ＯＲ８は、一方の入力にクロックストップ信号ＣＬＫ_ＳＴＯＰを、他方の入力にクロック信号ＣＬＫＩＮを入力し、これらの論理和演算結果をラッチＬＡ４のイネーブル入力（ＥＮ）に出力する。ラッチＬＡ４はＯＲ７の出力を入力し、この信号をＯＲ８の出力に応じて出力する。ラッチＬＡ４は例えばゲーテッドＤラッチ回路である。ＯＲ９は、一方にラッチＬＡ４の出力を、他方にクロック信号ＣＬＫＩＮを入力し、これらの論理和演算結果を出力する。
【０１１６】
図１３は、図１２に示した第２のクロック処理回路の真理値表である。図１３に示すように、クロックストップ信号ＣＬＫ_ＳＴＯＰが"０"で、かつイネーブル信号ＥＮ２が"０"の場合は、ＯＲ９の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）は常に"１"となる。また、クロックストップ信号ＣＬＫ_ＳＴＯＰが"０"で、かつイネーブル信号ＥＮ２が"１"の場合は、ＯＲ９の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）は、クロック信号ＣＬＫＩＮに同期する。一方、クロックストップ信号ＣＬＫ_ＳＴＯＰが"１"の場合は、クロック信号ＣＬＫＩＮおよびイネーブル信号ＥＮ２の値にかかわらず、ＯＲ９の出力（ＲＦＦ２_ＣＬＫ_ＩＮ）は"０"となる。
【０１１７】
本実施の形態にかかる半導体装置では、実施の形態１乃至３で説明した半導体装置のクロック制御回路４とクロックゲーティング回路５、およびクロック制御回路３とクロックゲーティング回路６をそれぞれ一つにまとめているので、実施の形態１乃至３の場合と比べて回路面積を小さくすることができる。なお、本実施の形態にかかる半導体装置を用いた場合であっても、実施の形態１乃至３と同様の効果を得ることができる。
【０１１８】
実施の形態６
次に、本発明の実施の形態６について説明する。実施の形態６にかかる発明では半導体装置を構成するリテンション機能を備えるフリップフロップの一部を、動作クロックがローレベル・ハイレベルのいずれの場合でもデータを保持することができるフリップフロップを用いている。これ以外は、実施の形態１乃至５の場合と同様であるので、重複した説明は省略する。
【０１１９】
図１４は、本実施の形態にかかる半導体装置を説明するための回路図である。図１４に示す本発明にかかる半導体装置は、コントローラ２と、排他的論理和回路ＸＯＲ２と、クロックゲーティング回路５、６と、リテンション機能を備えるフリップフロップＲＦＦ１、ＲＦＦ３〜ＲＦＦ５を備える。コントローラ２は、ＰＬＬ等の発振回路１からクロック信号を入力し、このクロック信号に基づきクロック信号ＣＬＫＩＮを生成し、クロックゲーティング回路５、クロックゲーティング回路６、排他的論理和回路ＸＯＲ２に出力する。また、コントローラ２は、クロックゲーティング回路５、６にイネーブル信号ＥＮ１、ＥＮ２をそれぞれ供給する。また、コントローラ２はフリップフロップＲＦＦ１、ＲＦＦ３〜ＲＦＦ５にデータ保持信号（ＲＥＴ信号）を供給する。クロックゲーティング回路５、６は実施の形態１で説明したクロックゲーティング回路と同様である。
【０１２０】
本実施の形態にかかる半導体装置では、フリップフロップＲＦＦ１は正転クロック信号のポジティブエッジで駆動し、フリップフロップＲＦＦ３は正転クロック信号のネガティブエッジで駆動する。また、ＸＯＲ２回路はフリップフロップＲＦＦ４、５に対して、クロック信号ＣＬＫＩＮが反転した反転クロック信号を供給している（つまり、ＳＥＬ信号をハイレベルとしている）。よって、フリップフロップＲＦＦ４は反転クロック信号のポジティブエッジで駆動し、フリップフロップＲＦＦ３は正転クロック信号のネガティブエッジで駆動する。
【０１２１】
そして、本実施の形態にかかる半導体装置では、リテンション機能を備えるフリップフロップＲＦＦ１に、駆動クロックがローレベルの時にデータを保持することができるフリップフロップを用いている。また、リテンション機能を備えるフリップフロップＲＦＦ３〜ＲＦＦ５に、駆動クロックがローレベル・ハイレベルのいずれの場合であってもデータを保持することができるフリップフロップ（バルーン方式のフリップフロップ）を用いている。ここで、駆動クロックがローレベル・ハイレベルのいずれの場合であってもデータを保持することができるフリップフロップとしては、例えば特許文献２に開示されているＤフリップフロップ回路を用いることができる。
【０１２２】
本実施の形態にかかる半導体装置では、ローレベルまたはハイレベルのいずれの場合のときにのみデータを保持することができるフリップフロップを用いた際に、意図しないデータのラッチが発生する可能性のある箇所（フリップフロップ回路群８）に、駆動クロックがローレベル・ハイレベルのいずれの場合であってもデータを保持することができるフリップフロップを用いている。これにより、リテンション機能を備えるフリップフロップにデータを保持する際に意図しないデータのラッチが発生することを抑制することができる。
【０１２３】
一般的に、駆動クロックがローレベル・ハイレベルのいずれの場合であってもデータを保持することができるフリップフロップはセル面積が大きいが、本実施の形態にかかる半導体装置のように、意図しないデータのラッチが発生する可能性のある箇所（フリップフロップ回路群８）にのみこのようなフリップフロップ回路を設けることで、回路面積を小さくし、消費電力を低減することができる。
【０１２４】
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
【符号の説明】
【０１２５】
１  発振回路
２  コントローラ
３  クロック制御回路
４  クロック制御回路
５  クロックゲーティング回路（ポジティブエッジ用）
６  クロックゲーティング回路（ネガティブエッジ用）
７  論理回路
８  フリップフロップ回路群
【図１】
2011205355.tif 000003
【図２】
2011205355.tif 000004
【図３】
2011205355.tif 000005
【図４】
2011205355.tif 000006
【図５】
2011205355.tif 000007
【図６】
2011205355.tif 000008
【図７】
2011205355.tif 000009
【図８】
2011205355.tif 000010
【図９】
2011205355.tif 000011
【図１０】
2011205355.tif 000012
【図１１】
2011205355.tif 000013
【図１２】
2011205355.tif 000014
【図１３】
2011205355.tif 000015
【図１４】
2011205355.tif 000016
【図１５】
2011205355.tif 000017
【図１６】
2011205355.tif 000018
【図１７】
2011205355.tif 000019
【図１８】
2011205355.tif 000020