設計装置
【課題】消費電力を低減し、誤動作を防止することができるフリップフロップ回路を設計するための設計装置を提供することを課題とする。
【解決手段】第1の入力信号、第1のイネーブル信号及び第1のクロック信号を入力する第1のフリップフロップ回路の第1の設計データに対して、第1のクロック信号の周波数の2倍以上の周波数のクロック信号で第1の静的タイミング解析を行う第1の静的タイミング解析部(S11)と、第1の静的タイミング解析の結果が合格の場合には、第1の設計データを入力し、第1のフリップフロップ回路を第2のフリップフロップ回路に変換した第2の設計データを生成する第1の変換部(S13)とを有し、第1のフリップフロップ回路はクロックゲーティング回路を有さず、第2のフリップフロップ回路はクロックゲーティング回路を有する設計装置が提供される。
【解決手段】第1の入力信号、第1のイネーブル信号及び第1のクロック信号を入力する第1のフリップフロップ回路の第1の設計データに対して、第1のクロック信号の周波数の2倍以上の周波数のクロック信号で第1の静的タイミング解析を行う第1の静的タイミング解析部(S11)と、第1の静的タイミング解析の結果が合格の場合には、第1の設計データを入力し、第1のフリップフロップ回路を第2のフリップフロップ回路に変換した第2の設計データを生成する第1の変換部(S13)とを有し、第1のフリップフロップ回路はクロックゲーティング回路を有さず、第2のフリップフロップ回路はクロックゲーティング回路を有する設計装置が提供される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、設計装置に関する。
【背景技術】
【0002】
図1(A)〜(D)は、イネーブル信号入力ありのフリップフロップ回路を示す図である。図1(A)は、複数のフリップフロップ回路101を示す。各フリップフロップ回路101は、入力信号D、イネーブル信号EN及びクロック信号CLKを入力する。ここで、イネーブル信号EN及びクロック信号CLKは、複数のフリップフロップ回路101間で共通である。図1(A)の回路は、消費電力を低減するために図1(B)の回路に変換可能である。
【0003】
図1(B)は消費電力を低減するためのフリップフロップ回路の構成を示す図であり、図1(C)及び(D)は図1(B)の回路の動作例を示すタイミングチャートである。クロックゲーティング回路112は、ラッチ回路113及び論理積回路114を有する。ラッチ回路113は、クロック信号CLKの立ち下がりエッジに同期してイネーブル信号ENをラッチし、ラッチした信号を出力する。論理積回路114は、ラッチ回路113の出力信号及びクロック信号CLKの論理積信号をクロック信号CLK1として出力する。複数のフリップフロップ回路111は、共通の同じクロック信号CLK1をクロック端子に入力し、それぞれの入力信号Dを入力端子に入力する。クロックゲーティング回路112により、イネーブル信号ENがローレベルのときには、クロック信号CLK1を停止させることができるので、図1(B)の回路は図1(A)の回路に比べて消費電力を低減することができる。
【0004】
図1(C)はクロック信号CLKがハイレベルのときにイネーブル信号ENが変化する場合のタイミングチャートであり、図1(D)はクロック信号CLKがローレベルのときにイネーブル信号ENが変化する場合のタイミングチャートである。いずれの場合も、クロック信号CLK1の立ち上がりエッジは、クロック信号CLKの立ち上がりエッジと同じタイミングであるため、クロック信号CLK1に誤動作の原因となるグリッチが発生しない。そのため、図1(B)の回路は、正常な動作を行うことができる。
【0005】
しかし、ラッチ回路113のクロック信号CLKは停止しないため、ラッチ回路113はイネーブル信号ENがローレベルの期間でも電力を消費してしまう。また、ラッチ回路113は大面積を占有する課題がある。特に、図1(A)の回路において、フリップフロップ回路101が1個の場合には、図1(A)の回路を図1(B)の回路に変換するメリットがほとんどなく、低消費電力の効果を得ることができない。
【0006】
また、タイミングクロックによってオン、オフするフリップフロップ、及び、フィードバックループとを有し、イネーブル信号にしたがって動作する論理回路部分を自動的に抽出する段階と、タイミングクロックをイネーブル信号によってゲートし、ゲーテッドクロック化する段階とを含み、これによって、タイミングクロックによるフリップフロップの変化の回数を削減する回路設計方法が知られている(例えば、特開平10−294375号公報参照)。
【0007】
また、RTLデータの動作シミュレーションにより、ゲートレベルでの消費電力解析を精度よく行うことが可能な消費電力解析装置が知られている(例えば、特開2009−3618号公報参照)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開平10−294375号公報
【特許文献2】特開2009−3618号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明の目的は、消費電力を低減し、誤動作を防止することができるフリップフロップ回路を設計するための設計装置を提供することである。
【課題を解決するための手段】
【0010】
設計装置は、第1の入力信号、第1のイネーブル信号及び第1のクロック信号を入力する第1のフリップフロップ回路の第1の設計データに対して、前記第1のクロック信号の周波数の2倍以上の周波数のクロック信号で第1の静的タイミング解析を行う第1の静的タイミング解析部と、前記第1の静的タイミング解析の結果が合格の場合には、前記第1の設計データを入力し、前記第1のフリップフロップ回路を第2のフリップフロップ回路に変換した第2の設計データを生成する第1の変換部とを有し、前記第1のフリップフロップ回路は、クロックゲーティング回路を有さず、前記第2のフリップフロップ回路は、前記第1のイネーブル信号を前記第1のクロック信号でクロックゲーティングして出力するクロックゲーティング回路と、前記クロックゲーティング回路の出力信号をクロック端子に入力して前記第1の入力信号を入力端子に入力する第3のフリップフロップ回路とを有する。
【発明の効果】
【0011】
クロックゲーティング回路を設けることによりフリップフロップ回路の電力を低減することができる。また、2倍以上の周波数のクロック信号で静的タイミング解析を行うことにより、フリップフロップ回路の誤動作を防止することができる。
【図面の簡単な説明】
【0012】
【図1】図1(A)〜(D)はイネーブル信号入力ありのフリップフロップ回路を示す図である。
【図2】図2(A)〜(D)は本発明の第1の実施形態によるイネーブル信号入力ありのフリップフロップ回路の例を示す図である。
【図3】図2(B)のフリップフロップ回路の構成例を示す概念図である。
【図4】図3のフリップフロップ回路の構成例を示す回路図である
【図5】図2(A)のイネーブル信号入力ありのフリップフロップ回路の構成例を示す回路図である。
【図6】図3のフリップフロップ回路の構成例を示す回路図である。
【図7】スキャンテスト機能ありのフリップフロップ回路の一部の構成例を示す回路図である。
【図8】図8(A)〜(D)は本発明の第2の実施形態によるイネーブル信号入力なしのフリップフロップ回路の例を示す図である。
【図9】図8(B)のフリップフロップ回路の構成例を示す概念図である。
【図10】図9のフリップフロップ回路の構成例を示す回路図である。
【図11】本発明の第3の実施形態による設計装置を構成するコンピュータのハードウェア構成例を示すブロック図である。
【図12】図11の設計装置の設計方法の処理例を示すフローチャートである。
【発明を実施するための形態】
【0013】
(第1の実施形態)
図2(A)〜(D)は、本発明の第1の実施形態によるイネーブル信号入力ありのフリップフロップ回路の例を示す図である。図2(A)は、イネーブル信号入力ありのフリップフロップ回路200を示す。フリップフロップ回路200は、入力信号D、イネーブル信号EN及びクロック信号CLKを入力し、出力信号Qを出力する。イネーブル信号ENは、ハイレベルのときに入力信号Dの有効状態を示し、ローレベルのときに入力信号Dの無効情報を示す。本実施形態では、図2(A)の回路を図2(B)の回路に変換する。
【0014】
図2(B)の回路は、図2(A)の回路と同じ論理動作を行う。図2(B)のイネーブル信号入力ありのフリップフロップ回路は、論理和回路201及びイネーブル信号入力なしのフリップフロップ回路202を有する。論理和回路201は、イネーブル信号ENの論理反転信号及びクロック信号CLKの論理和信号をクロック信号CLK1として出力する。論理和回路201は、イネーブル信号ENをクロック信号CLKでクロックゲーティングし、クロック信号CLK1を出力するクロックゲーティング回路である。フリップフロップ回路202は、クロック信号CLK1をクロック端子に入力し、入力信号Dを入力端子に入力し、出力端子から出力信号Qを出力する。フリップフロップ回路202は、クロック信号CLK1の立ち上がりエッジに同期して入力信号Dを保持し、保持した信号を出力信号Qとして出力する。論理和回路201をクロックゲーティング回路として設けることにより、図2(C)及び(D)に示すように、イネーブル信号ENがローレベルのときには、クロック信号CLK1を停止させることができるので、図2(B)の回路は図2(A)の回路に比べて消費電力を低減することができる。
【0015】
図2(C)は、クロック信号CLKがハイレベルのときにイネーブル信号ENが変化する場合のタイミングチャートである。この場合、クロック信号CLK1の立ち上がりエッジは、クロック信号CLKの立ち上がりエッジと同じタイミングであるため、クロック信号CLK1に誤動作の原因となるグリッチが発生しない。そのため、図2(B)の回路は、正常な動作を行うことができる。
【0016】
図2(D)は、クロック信号CLKがローレベルのときにイネーブル信号ENが変化する場合のタイミングチャートである。この場合、クロック信号CLK1に誤動作の原因となるグリッチ211が発生する。クロック信号CLK1のグリッチ211の立ち上がりエッジは、クロック信号CLKの立ち上がりエッジと異なるタイミングであるため、図2(B)の回路は誤動作する可能性がある。すなわち、フリップフロップ回路202は、クロック信号CLKの立ち上がりエッジのタイミングで正常な入力信号Dが保証されている。したがって、クロック信号CLK1の立ち上がりエッジがクロック信号CLKの立ち上がりエッジと同じタイミングであれば、フリップフロップ回路202の動作は保証される。しかし、クロック信号CLK1内のグリッチ211の立ち上がりエッジは、クロック信号CLKの立ち上がりエッジと異なるタイミングであるため、フリップフロップ回路202の動作は保証されず、誤動作の可能性がある。
【0017】
そこで、本実施形態では、図2(B)のフリップフロップ回路に対して、クロック信号CLKの周波数の2倍以上の周波数のクロック信号で静的タイミング解析を行い、その静的タイミング解析の結果が合格であれば、イネーブル信号ENはクロック信号CLKがハイレベルの時に変化し、クロック信号CLKがローレベルの時には変化しないことが保証される。したがって、クロック信号CLKの周波数の2倍以上の周波数のクロック信号で静的タイミング解析の結果が合格であれば、図2(B)の回路の正常動作が保証される。
【0018】
例えば、クロック信号CLKの要求周波数が50MHz、1周期が20nsの場合、論理和回路201の前段のフリップフロップ回路から論理和回路201までのイネーブル信号ENのタイミングが、1周期の半分の10ns以下であれば、イネーブル信号ENはクロック信号CLKのハイレベルの時に変化することが保証される。そのため、図2(B)のフリップフロップ回路は、静的タイミング解析で、クロック信号CLKの2倍の周波数の100MHzのクロック信号でタイミングを満たせば、図2(B)の正常動作が保証される。
【0019】
図3は、図2(B)のフリップフロップ回路の構成例を示す概念図である。フリップフロップ回路301のセルは、論理和回路201のクロックゲーティング回路を内蔵する。イネーブル信号入力ありのフリップフロップ回路301は、図2(B)と同様に、論理和回路201及びイネーブル信号入力なしのフリップフロップ回路202を有する。
【0020】
フリップフロップ回路202は、インバータ311〜314及びトライステートバッファ321〜324を有する。インバータ311〜314は、入力信号を論理反転した信号を出力する。トライステートバッファ311〜314は、クロック信号に同期し、出力がローレベル状態、ハイレベル状態又はハイインピーダンス状態になる。インバータ311は、クロック信号CLK1の論理反転信号を出力する。インバータ312は、インバータ312の出力信号の論理反転信号を出力する。トライステートバッファ321は、インバータ311及び312の出力クロック信号に同期し、クロック信号CLK1がローレベルになると、入力信号Dの論理反転信号を出力し、クロック信号CLK1がハイレベルになると出力がハイインピーダンス状態になる。インバータ313は、トライステートバッファ321の出力信号の論理反転信号を出力する。トライステートバッファ322は、インバータ311及び312の出力クロック信号に同期し、クロック信号CLK1がハイレベルになると、インバータ313の出力信号の論理反転信号をインバータ313の入力端子に出力し、クロック信号CLK1がローレベルになると出力がハイインピーダンス状態になる。トライステートバッファ323は、インバータ311及び312の出力クロック信号に同期し、クロック信号CLK1がハイレベルになると、インバータ313の出力信号の論理反転信号をインバータ314の入力端子に出力し、クロック信号CLK1がローレベルになると出力がハイインピーダンス状態になる。インバータ314は、トライステートバッファ323の出力信号の論理反転信号を出力信号Qとして出力する。トライステートバッファ324は、インバータ311及び312の出力クロック信号に同期し、クロック信号CLK1がローレベルになると、インバータ314の出力信号Qの論理反転信号をインバータ314の入力端子に出力し、クロック信号CLK1がハイレベルになると出力がハイインピーダンス状態になる。なお、論理和回路201及びインバータ311を含む回路302は、否定論理和回路303として構成することもできる。否定論理和回路303は、イネーブル信号ENの論理反転信号及びクロック信号CLKの否定論理和信号を出力する。
【0021】
以上のように、論理和回路201は、フリップフロップ回路301のセル内部に追加される。フリップフロップ回路301のセルは、上記のように、内部でグリッチが発生し、誤動作を引き起こす可能性がある。そのため、フリップフロップ回路301のセルに対して、静的タイミング解析で、クロック信号CLKの要求周波数の2倍以上の周波数のクロック信号でタイミングを満たす場合には、図2(A)のフリップフロップ回路200を図3のフリップフロップ回路に変換することができる。図2(A)のフリップフロップ回路200はクロックゲーティング回路を有さず、図3のフリップフロップ回路はクロックゲーティング回路を有する。変換は、セル名を変更するのみでよい。変換方法の詳細は、後に図12を参照しながら説明する。
【0022】
図3のフリップフロップ回路301のセル外部端子は、図2(A)のフリップフロップ回路200のものと同じであり、フリップフロップ回路301のセル内部には論理和回路201が追加される。そのため、図3のフリップフロップ回路301は、図2(A)のフリップフロップ回路200と同様に、静的タイミング解析及びクロックツリー合成を容易に行うことが可能である。したがって、図2(A)のフリップフロップ回路200を図3のフリップフロップ回路301に変換し、変換したフリップフロップ回路301のネットリスト設計データに対して、クロック信号CLKの周波数の2倍以上の周波数のクロック信号で静的タイミング解析を行い、その結果が合格となれば、図2(C)のように、クロック信号CLKがハイレベルの時にクロック信号ENが変化することが保証され、グリッチによる問題は起きない。図3のフリップフロップ回路301は、図2(A)のフリップフロップ回路200に比べ、消費電力を低減し、かつグリッチによる誤動作を防止することができる。
【0023】
図4は、図3のフリップフロップ回路301の構成例を示す回路図であり、図3の論理和回路201及びインバータ311を否定論理和回路303として構成した例を示す。以下、電界効果トランジスタを単にトランジスタという。pチャネルトランジスタ401は、ソースが電源電位ノードに接続され、ゲートがイネーブル信号ENのノードに接続される。nチャネルトランジスタ402は、ドレインがpチャネルトランジスタ401のドレインに接続され、ゲートがイネーブル信号ENのノードに接続され、ソースが基準電位ノード(グランド電位ノード)に接続される。pチャネルトランジスタ403は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ401のドレインに接続される。pチャネルトランジスタ405は、ソースがpチャネルトランジスタ403のドレインに接続され、ゲートがクロック信号CLKのノードに接続される。nチャネルトランジスタ406は、ドレインがpチャネルトランジスタ405のドレインに接続され、ゲートがクロック信号CLKのノードに接続され、ソースが基準電位ノードに接続される。nチャネルトランジスタ404は、ドレインがpチャネルトランジスタ405のドレインに接続され、ゲートがpチャネルトランジスタ401のドレインに接続され、ソースが基準電位ノードに接続される。pチャネルトランジスタ407は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ405のドレインに接続される。nチャネルトランジスタ408は、ドレインがpチャネルトランジスタ407のドレインに接続され、ゲートがpチャネルトランジスタ405のドレインに接続され、ソースが基準電位ノードに接続される。
【0024】
pチャネルトランジスタ409は、ソースが電源電位ノードに接続され、ゲートが入力信号Dのノードに接続される。pチャネルトランジスタ410は、ソースがpチャネルトランジスタ409のドレインに接続され、ゲートがpチャネルトランジスタ407のドレインに接続される。nチャネルトランジスタ411は、ドレインがpチャネルトランジスタ410のドレインに接続され、ゲートがpチャネルトランジスタ405のドレインに接続される。nチャネルトランジスタ412は、ドレインがnチャネルトランジスタ411のソースに接続され、ゲートが入力信号Dのノードに接続され、ソースが基準電位ノードに接続される。
【0025】
pチャネルトランジスタ413は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ417のドレインに接続される。pチャネルトランジスタ414は、ソースがpチャネルトランジスタ413のドレインに接続され、ゲートがpチャネルトランジスタ405のドレインに接続され、ドレインがpチャネルトランジスタ410のドレインに接続される。nチャネルトランジスタ415は、ドレインがpチャネルトランジスタ414のドレインに接続され、ゲートがpチャネルトランジスタ407のドレインに接続される。nチャネルトランジスタ416は、ドレインがnチャネルトランジスタ415のソースに接続され、ゲートがpチャネルトランジスタ417のドレインに接続され、ソースが基準電位ノードに接続される。
【0026】
pチャネルトランジスタ417は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ414のドレインに接続される。nチャネルトランジスタ418は、ドレインがpチャネルトランジスタ417のドレインに接続され、ゲートがpチャネルトランジスタ414のドレインに接続され、ソースが基準電位ノードに接続される。
【0027】
pチャネルトランジスタ419は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ425のドレインに接続される。pチャネルトランジスタ420は、ソースがpチャネルトランジスタ419のドレインに接続され、ゲートがpチャネルトランジスタ407のドレインに接続され、ドレインがpチャネルトランジスタ422のドレインに接続される。nチャネルトランジスタ421は、ドレインがpチャネルトランジスタ420のドレインに接続され、ゲートがpチャネルトランジスタ407のドレインに接続され、ソースがpチャネルトランジスタ417のドレインに接続される。pチャネルトランジスタ422は、ソースがnチャネルトランジスタ421のソースに接続され、ゲートがpチャネルトランジスタ405のドレインに接続される。nチャネルトランジスタ423は、ドレインがpチャネルトランジスタ422のドレインに接続され、ゲートがpチャネルトランジスタ405のドレインに接続される。nチャネルトランジスタ424は、ドレインがnチャネルトランジスタ423のソースに接続され、ゲートがpチャネルトランジスタ425のドレインに接続され、ソースが基準電位ノードに接続される。
【0028】
pチャネルトランジスタ425は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ420のドレインに接続される。nチャネルトランジスタ426は、ドレインがpチャネルトランジスタ425のドレインに接続され、ゲートがpチャネルトランジスタ420のドレインに接続され、ソースが基準電位ノードに接続される。
【0029】
pチャネルトランジスタ427は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ425のドレインに接続され、ドレインが出力信号Qのノードに接続される。nチャネルトランジスタ428は、ドレインがpチャネルトランジスタ427のドレインに接続され、ゲートがpチャネルトランジスタ425のドレインに接続され、ソースが基準電位ノードに接続される。
【0030】
ここで、トランジスタ401〜406は、図3の否定論理和回路303に対応する。トランジスタ407及び408は、図3のインバータ312に対応する。トランジスタ401及び402は、インバータとして機能する。pチャネルトランジスタ403は、イネーブル信号ENがハイレベルのときにオンする。nチャネルトランジスタ404は、イネーブル信号ENがローレベルのときにオンする。
【0031】
トランジスタ405〜428は図3のフリップフロップ回路202と同じ回路であり、トランジスタ405及び406が図3のインバータ311に対応し、トランジスタ407及び408が図3のインバータ312に対応する。したがって、図3のフリップフロップ回路301は、フリップフロップ回路202に対して、4個のトランジスタ401〜404を追加しただけである。このフリップフロップ回路301により、イネーブル信号ENがローレベルのときにはクロック信号CLKを停止させることができるので、消費電力を低減することができる。
【0032】
図5は、図2(A)のイネーブル信号入力ありのフリップフロップ回路200の構成例を示す回路図である。図5のフリップフロップ回路は、図4のフリップフロップ回路に対して、4個のトランジスタ401〜404を削除し、8個のトランジスタ501〜508を追加したものである。すなわち、図4のフリップフロップ回路は、図5のフリップフロップ回路に対して、トランジスタ数を4個削減することができる。本実施形態は、図5のフリップフロップ回路(図2(A)のフリップフロップ回路200)に対して、クロック信号CLKの周波数の2倍以上の周波数のクロック信号で静的タイミング解析を行い、その結果が合格であるときには、図5のフリップフロップ回路(図2(A)のフリップフロップ回路200)を図4のフリップフロップ回路に変換する。この変換によりトランジスタ数を4個削減することができる。変換後の図4のフリップフロップ回路は、変換前の図5のフリップフロップ回路に対して、小型化かつ低消費電力の効果を得ることができる。
【0033】
図5において、pチャネルトランジスタ501は、ソースが電源電位ノードに接続され、ゲートがイネーブル信号ENのノードに接続される。nチャネルトランジスタ502は、ドレインがpチャネルトランジスタ501のドレインに接続され、ゲートがイネーブル信号ENのノードに接続され、ソースが基準電位ノードに接続される。pチャネルトランジスタ503は、ソースが基準電位ノードに接続され、ゲートがpチャネルトランジスタ501のドレインに接続され、ドレインがpチャネルトランジスタ409のソースに接続される。nチャネルトランジスタ504は、ドレインがnチャネルトランジスタ412のソースに接続され、ゲートがイネーブル信号ENのノードに接続され、ソースが基準電位ノードに接続される。pチャネルトランジスタ505は、ソースが電源電位ノードに接続され、ゲートがイネーブル信号ENのノードに接続される。pチャネルトランジスタ506は、ソースがpチャネルトランジスタ505のドレインに接続され、ゲートがpチャネルトランジスタ420のドレインに接続され、ドレインがpチャネルトランジスタ410のソースに接続される。nチャネルトランジスタ507は、ドレインがnチャネルトランジスタ411のソースに接続され、ゲートがpチャネルトランジスタ420のドレインに接続される。nチャネルトランジスタ508は、ドレインがnチャネルトランジスタ507のソースに接続され、ゲートがpチャネルトランジスタ501のドレインに接続され、ソースが基準電位ノードに接続される。
【0034】
図6は、図3のフリップフロップ回路301の構成例を示す回路図であり、図3の論理和回路201及びインバータ311を用いて構成した例を示す。論理和回路201は図3の論理和回路201に対応し、フリップフロップ回路202は図3のフリップフロップ回路202に対応する。
【0035】
論理和回路201は、8個のトランジスタ601〜608を有する。pチャネルトランジスタ601は、ソースが電源電位ノードに接続され、ゲートがイネーブル信号ENのノードに接続される。nチャネルトランジスタ602は、ドレインがpチャネルトランジスタ601のドレインに接続され、ゲートがイネーブル信号ENのノードに接続され、ソースが基準電位ノードに接続される。pチャネルトランジスタ603は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ601のドレインに接続される。pチャネルトランジスタ604は、ソースがpチャネルトランジスタ603のドレインに接続され、ゲートがクロック信号CLKのノードに接続される。nチャネルトランジスタ605は、ドレインがpチャネルトランジスタ604のドレインに接続され、ゲートがクロック信号CLKのノードに接続され、ソースが基準電位ノードに接続される。nチャネルトランジスタ606は、ドレインがpチャネルトランジスタ604のドレインに接続され、ゲートがpチャネルトランジスタ601のドレインに接続され、ソースが基準電位ノードに接続される。pチャネルトランジスタ607は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ604のドレインに接続され、ドレインがトランジスタ405及び406のゲートに接続される。nチャネルトランジスタ608は、ドレインがpチャネルトランジスタ607のドレインに接続され、ゲートがpチャネルトランジスタ604のドレインに接続され、ソースが基準電位ノードに接続される。
【0036】
フリップフロップ回路202は、図4と同様に、トランジスタ405〜428を有する。トランジスタ405及び406は図3のインバータ311に対応し、トランジスタ407及び408は図3のインバータ312に対応する。
【0037】
図3のフリップフロップ回路301は、図4のフリップフロップ回路301の構成又は図6のフリップフロップ回路301の構成で実現することができる。ただし、図4のフリップフロップ回路301は、図6のフリップフロップ回路301に対して、トランジスタ数を4個削減することができるので、より好ましい。
【0038】
図7は、スキャンテスト機能ありのフリップフロップ回路の一部の構成例を示す回路図であり、図4のフリップフロップ回路301にスキャンテスト機能を付加したものである。スキャンテストモードではスキャンテストモード信号SCANがハイレベルになり、それ以外のモードではスキャンテストモード信号SCANがローレベルになる。スキャンテストモード信号SCANがハイレベルになると、クロック信号CLKが有効状態になり、フリップフロップ回路301のスキャンテストを行うことができる。
【0039】
図7のフリップフロップ回路301は、図4のフリップフロップ回路301に対して、2個のトランジスタ701及び702を追加したものである。以下、図7の回路が図4の回路と異なる点を説明する。pチャネルトランジスタ701は、ソースが電源電位ノードに接続され、ゲートがスキャンテストモード信号SCANのノードに接続され、ドレインがpチャネルトランジスタ401のソースに接続される。nチャネルトランジスタ702は、ドレインがpチャネルトランジスタ401のドレインに接続され、ゲートがスキャンテストモード信号SCANのノードに接続され、ソースが基準電位ノードに接続される。
【0040】
pチャネルトランジスタ403は、スキャンテストモード信号SCANがハイレベル又はイネーブル信号ENがハイレベルのときにオンになる。nチャネルトランジスタ404は、スキャンテストモード信号SCANがローレベルかつイネーブル信号ENがローレベルのときにオンになる。すなわち、スキャンテストモード信号SCAN又はイネーブル信号ENがハイレベルになると、クロック信号CLKが有効状態になり、スキャンテストモード信号SCAN及びイネーブル信号ENがローレベルになるとクロック信号CLKが停止状態になる。図7のフリップフロップ回路301は、図4のフリップフロップ回路301よりトランジスタ数が2個増加し、図5のフリップフロップ回路よりトランジスタが2個減少する。
【0041】
(第2の実施形態)
図8(A)〜(D)は、本発明の第2の実施形態によるイネーブル信号入力なしのフリップフロップ回路の例を示す図である。図8(A)は、イネーブル信号入力なしのフリップフロップ回路801を示す。フリップフロップ回路801は、入力信号D及びクロック信号CLKを入力し、出力信号Qを出力する。本実施形態では、図8(A)の回路を図8(B)の回路に変換する。
【0042】
図8(B)の回路は、図8(A)の回路と同じ論理動作を行う。図8(B)のイネーブル信号入力なしのフリップフロップ回路は、排他的論理和回路811、論理和回路812及びイネーブル信号入力なしのフリップフロップ回路202を有する。排他的論理和回路811は、入力信号D及び出力信号Qの排他的論理和信号DTを出力する。論理和回路812は、クロック信号CLK及び信号DTの論理和をクロック信号CLK1として出力する。図8(C)及び(D)に示すように、排他的論理和回路811及び論理和回路812は、クロックゲーティング回路として機能する。フリップフロップ回路202は、図8(A)のフリップフロップ回路801と同じ構成を有し、クロック信号CLK1をクロック端子に入力し、入力信号Dを入力端子に入力し、出力端子から出力信号Qを出力する。フリップフロップ回路202は、クロック信号CLK1の立ち上がりエッジに同期して入力信号Dを保持し、保持した信号を出力信号Qとして排他的論理和回路811に出力する。クロックゲーティング回路を設けることにより、入力信号Dの変化時のみクロック信号CLK1を有効にし、入力信号Dが変化しない時にはクロック信号CLKを停止させることができる。これにより、図8(B)の回路は図8(A)の回路に比べて消費電力を低減することができる。
【0043】
図8(C)はクロック信号CLKがハイレベルのときに入力信号Dが変化する場合のタイミングチャートであり、図8(D)はクロック信号CLKがローレベルのときに入力信号Dが変化する場合のタイミングチャートである。いずれの場合も、クロック信号CLK1の立ち上がりエッジは、クロック信号CLKの立ち上がりエッジと同じタイミングであるため、クロック信号CLK1に誤動作の原因となるグリッチが発生しない。具体的には、図8(D)では、クロック信号CLK1のパルス幅が狭くなるが、出力信号Qが直接、排他的論理和回路811に入力されるため、出力信号Qは入力信号Dに対して遅延量が小さく、クロック信号CLKがローレベルの時に出力信号Qが変化することはない。これにより、排他的論理和回路811の出力信号DTは、クロック信号CLKがローレベルのときに立ち下がることはない。そのため、クロック信号CLK1の立ち上がりエッジは、クロック信号CLKの立ち上がりエッジと同じタイミングになり、図8(B)のフリップフロップ回路の正常動作が保証される。
【0044】
図9は、図8(B)のフリップフロップ回路の構成例を示す概念図である。フリップフロップ回路901のセルは、排他的論理和回路811及び論理和回路812のクロックゲーティング回路を内蔵する。イネーブル信号入力なしのフリップフロップ回路901は、図8(B)と同様に、排他的論理和回路811、論理和回路812及びイネーブル信号入力なしのフリップフロップ回路202を有する。フリップフロップ回路202は、図3のフリップフロップ回路202と同じ構成を有する。排他的論理和回路811及び論理和回路812のクロックゲーティング回路は、フリップフロップ回路901のセル内部に追加される。図9のフリップフロップ回路901は、上記のようにグリッチの問題が生じないため、図8(A)のフリップフロップ回路801を図9のフリップフロップ回路901に変換することができる。図8(A)のフリップフロップ回路801はクロックゲーティング回路を有さず、図9のフリップフロップ回路901はクロックゲーティング回路を有する。変換は、セル名を変更するのみでよい。変換方法の詳細は、後に図12を参照しながら説明する。なお、論理和回路812及びインバータ311を含む回路902は、否定論理和回路903として構成することもできる。
【0045】
図9のフリップフロップ回路901のセル外部端子は、図8(A)のフリップフロップ回路801のものと同じであり、フリップフロップ回路901のセル内部には排他的論理和回路811及び論理和回路812が追加される。そのため、図9のフリップフロップ回路901は、図8(A)のフリップフロップ回路801と同様に、静的タイミング解析及びクロックツリー合成を容易に行うことが可能である。したがって、図8(A)のフリップフロップ回路801を図9のフリップフロップ回路901に変換し、変換したフリップフロップ回路901のネットリスト設計データに対して、クロック信号CLKの周波数と同じ周波数のクロック信号で静的タイミング解析を行い、その結果が合格であれば、図9のフリップフロップ回路901の正常動作が保証される。図9のフリップフロップ回路901は、図8(A)のフリップフロップ回路801に比べ、消費電力を低減することができる。
【0046】
図10は、図9のフリップフロップ回路901の構成例を示す回路図であり、図9の論理和回路812及びインバータ311を否定論理和回路903として構成した例を示す。トランジスタ1001〜1008は図9の排他的論理和回路811に対応し、トランジスタ1009,405,406,1010は図9の否定論理和回路903に対応する。図10の回路は、図6のフリップフロップ回路202に対して、10個のトランジスタ1001〜1010を追加したものである。以下、図10の回路が図6のフリップフロップ回路202と異なる点を説明する。
【0047】
pチャネルトランジスタ1001は、ソースが電源電位ノードに接続され、ゲートが出力信号Qのノードに接続される。pチャネルトランジスタ1002は、ソースがpチャネルトランジスタ1001のドレインに接続され、ゲートが入力信号Dのノードに接続される。pチャネルトランジスタ1003は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ425のドレインに接続される。pチャネルトランジスタ1004は、ソースがpチャネルトランジスタ1003のドレインに接続され、ゲートがpチャネルトランジスタ409のドレインに接続され、ドレインがpチャネルトランジスタ1002のドレインに接続される。nチャネルトランジスタ1005は、ドレインがpチャネルトランジスタ1002のドレインに接続され、ゲートがpチャネルトランジスタ409のドレインに接続される。nチャネルトランジスタ1006は、ドレインがnチャネルトランジスタ1005のソースに接続され、ゲートが出力信号Qのノードに接続され、ソースが基準電位ノードに接続される。nチャネルトランジスタ1007は、ドレインがpチャネルトランジスタ1002のドレインに接続され、ゲートが入力信号Dのノードに接続される。nチャネルトランジスタ1008は、ドレインがnチャネルトランジスタ1007のソースに接続され、ゲートがpチャネルトランジスタ425のドレインに接続され、ソースが基準電位ノードに接続される。pチャネルトランジスタ1009は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ1002のドレインに接続され、ドレインがpチャネルトランジスタ405のソースに接続される。nチャネルトランジスタ1010は、ドレインがpチャネルトランジスタ405のドレインに接続され、ゲートがpチャネルトランジスタ1002のドレインに接続され、ソースが基準電位ノードに接続される。
【0048】
本実施形態では、図8(A)のフリップフロップ回路801を図10のフリップフロップ回路に変換する。図8(A)のフリップフロップ回路801は、図6のフリップフロップ回路202と同じ構成を有し、クロックゲーティング回路を有しない。図10のフリップフロップ回路は、上記のようにクロックゲーティング回路を有する。図10のフリップフロップ回路は、図8(A)のフリップフロップ回路801(図6のフリップフロップ回路202)に対して、10個のトランジスタ1001〜1010が増加し、面積が増加する。したがって、レイアウトの空き領域の面積が閾値以上であれば、図8(A)のフリップフロップ回路801を図10のフリップフロップ回路に変換することができる。図10のフリップフロップ回路は、入力信号Dが変化した時のみクロック信号CLKが有効に動作し、入力信号Dが変化しない時にはクロック信号CLKが停止するため、図8(A)のフリップフロップ回路801よりもかなりの低消費電力化が望める。
【0049】
また、本実施形態も、図7の回路と同様に、図10のフリップフロップ回路に2個のトランジスタを追加することにより、スキャンテスト機能ありのフリップフロップ回路を構成することができる。スキャンテスト機能ありのフリップフロップ回路は、図8(A)のフリップフロップ回路801に対して、トランジスタ数が12個増加する。
【0050】
(第3の実施形態)
図11は、本発明の第3の実施形態による設計装置を構成するコンピュータのハードウェア構成例を示すブロック図である。この設計装置は、CAD(computer-aided design)により、フリップフロップ回路等の設計データを生成することができ、第1及び第2の実施形態のフリップフロップ回路を設計することができる。
【0051】
バス1101には、中央処理装置(CPU)1102、ROM1103、RAM1104、ネットワークインタフェース1105、入力装置1106、出力装置1107及び外部記憶装置1108が接続されている。
【0052】
CPU1102は、データの処理及び演算を行うと共に、バス1101を介して接続された上記の構成ユニットを制御するものである。ROM1103には、予めブートプログラムが記憶されており、このブートプログラムをCPU1102が実行することにより、コンピュータが起動する。外部記憶装置1108にコンピュータプログラムが記憶されており、そのコンピュータプログラムがRAM1104にコピーされ、CPU1102により実行される。このコンピュータは、コンピュータプログラムを実行することにより、後述する図12の設計処理等を行うことができる。
【0053】
外部記憶装置1108は、例えばハードディスク記憶装置等であり、電源を切っても記憶内容が消えない。外部記憶装置1108は、コンピュータプログラム、設計データ等を記録媒体に記録したり、記録媒体からコンピュータプログラム等を読み出すことができる。
【0054】
ネットワークインタフェース1105は、ネットワークに対してコンピュータプログラム及び設計データ等を入出力することができる。入力装置1106は、例えばキーボード及びポインティングデバイス(マウス)等であり、各種指定又は入力等を行うことができる。出力装置1107は、ディスプレイ及びプリンタ等であり、表示又は印刷することができる。
【0055】
本実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したCD−ROM等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びコンピュータプログラムプロダクトは、本発明の範疇に含まれる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
【0056】
図12は、図11の設計装置の設計方法の処理例を示すフローチャートである。設計装置は、図2(A)及び図8(A)のフリップフロップ回路を含む半導体回路の設計処理を行い、RTL(レジスタトランスファレベル)設計データD1を生成して外部記憶装置1108に記憶する。次に、ステップS1では、設計装置(論理合成部)は、RTL設計データD1を論理合成し、ネットリスト設計データD2及びログファイルD4を生成し、外部記憶装置1108に記憶する。次に、ステップS2では、設計装置は、ネットリスト設計データD2に対してレイアウト処理を行い、ネットリスト設計データD3を生成し、外部記憶装置1108に記憶する。次に、ステップS3では、設計装置(静的タイミング解析部)は、ネットリスト設計データD3に対して、クロック信号CLKの要求周波数(例えば50MHz)と同じ周波数のクロック信号で静的タイミング解析(STA)を行う。静的タイミング解析の結果が合格であればステップS6へ進み、不合格であればステップS2に戻る。通常であれば、静的タイミング解析の結果が合格であれば、ステップS17へ進み、LSI実装を行う。これに対し、本実施形態では、フリップフロップ回路の消費電力を低減するため、低消費電力フリップフロップ回路への変換処理1201を行う。ステップS6〜S10は、図8(A)のフリップフロップ回路801のセルを図9のフリップフロップ回路901のセルに変換する処理である。ステップS11〜S16は、図2(A)のフリップフロップ回路200のセルを図3のフリップフロップ回路301のセルに変換する処理である。
【0057】
ステップS5では、設計装置(リスト作成部)は、ログファイルD4を基に、図2(A)のイネーブル信号入力ありのフリップフロップ回路200のリストD5を作成し、図8(A)のイネーブル信号入力なしのフリップフロップ回路801のリストD6を作成し、リストD5及びD6を外部記憶装置1108に記憶する。
【0058】
その後、ステップS6では、設計装置は、レイアウトの空き領域の面積が閾値以上であればステップS7へ進み、閾値未満であればステップS11へ進む。ステップS7では、設計装置(変換部)は、リストD6を参照し、図8(A)のフリップフロップ回路801のセルを図9のフリップフロップ回路901のセルに変換することによりネットリスト設計データD7を生成し、外部記憶媒体1108に記憶する。すなわち、設計装置(変換部)は、入力信号D及びクロック信号CLKを入力するフリップフロップ回路801のネットリスト設計データD3を入力し、フリップフロップ回路801をフリップフロップ回路901に変換したネットリスト設計データD7を生成する。次に、ステップS8では、設計装置(静的タイミング解析部)は、ネットリスト設計データD7に対して、クロック信号CLKの要求周波数(例えば50MHz)と同じ周波数のクロック信号で静的タイミング解析を行う。次に、ステップS9では、設計装置は、変換後のフリップフロップ回路901の静的タイミング解析の結果が合格の場合はステップS11へ進み、不合格の場合はステップS10へ進む。ステップS10では、設計装置(復元部)は、リストD6内のフリップフロップ回路の中で、合格のものは変換後のフリップフロップ回路901を採用し、不合格のものは変換前のフリップフロップ回路801に戻してリストD6から削除し、ネットリスト設計データD7を変更する。その後、ステップS8の処理に戻る。すなわち、設計装置(復元部)は、ネットリスト設計データD7を入力し、フリップフロップ回路901をフリップフロップ回路801に戻したネットリスト設計データを生成する。
【0059】
ステップS11では、設計装置(静的タイミング解析部)は、ネットリスト設計データD7に対して、クロック信号CLKの要求周波数(例えば50MHz)の2倍以上の周波数(例えば100MHz以上の周波数)のクロック信号で静的タイミング解析を行い、ログファイルD8を生成して外部記憶装置1108に記憶する。なお、静的タイミング解析でのクロック信号の周波数は、高いほどタイミング条件が厳しくなり、静的タイミング解析の結果が不合格になる確率が高くなる。歩留まりを上げるには、静的タイミング解析でのクロック信号の周波数が低いことが好ましい。したがって、設計部(静的タイミング解析部)は、ネットリスト設計データD7に対して、クロック信号CLKの要求周波数の2倍の周波数(例えば100MHz)のクロック信号で静的タイミング解析を行うことが好ましい。
【0060】
次に、ステップS12では、設計装置(リスト作成部)は、ログファイルD8を基に、静的タイミング解析の結果が合格であるフリップフロップ回路のリストD9を作成し、外部記憶装置1108に記憶する。次に、ステップS13では、設計装置(変換部)は、リストD5及びD9を参照し、リストD5内のフリップフロップ回路200の中で、静的タイミング解析の結果が合格であるフリップフロップ回路200のセルを図3のフリップフロップ回路301のセルに変換し、ネットリスト設計データD10を生成して外部記憶装置1108に記憶する。すなわち、設計装置(変換部)は、ステップS11の静的タイミング解析の結果が合格の場合には、ネットリスト設計データD7を入力し、フリップフロップ回路200をフリップフロップ回路301に変換したネットリスト設計データD10を生成する。
【0061】
次に、ステップS14では、設計装置(静的タイミング解析部)は、ネットリスト設計データD10に対して、クロック信号CLKの要求周波数(例えば50MHz)の2倍以上の周波数(100MHz以上の周波数)のクロック信号で静的タイミング解析を行う。なお、この静的タイミング解析の周波数は、ステップS11と同様に、クロック信号CLKの要求周波数(例えば50MHz)の2倍の周波数(100MHz)が好ましい。次に、ステップS15では、設計装置は、変換後のフリップフロップ回路301の静的タイミング解析の結果が合格の場合はステップS17へ進み、不合格の場合はステップS16へ進む。ステップS16では、設計装置(復元部)は、リストD5内のフリップフロップ回路の中で、合格のものは変換後のフリップフロップ回路301を採用し、不合格のものは変換前のフリップフロップ回路200に戻してリストD5から削除し、ネットリスト設計データD10を変更する。その後、ステップS14の処理に戻る。すなわち、設計装置(復元部)は、ネットリスト設計データD10を入力し、フリップフロップ回路301をフリップフロップ回路200に戻したネットリスト設計データを生成する。ステップS17では、ステップS14の静的タイミング解析で合格したネットリスト設計データD10を基にLSI実装処理が行われる。
【0062】
図12の処理は一例であり、例えばレイアウト処理前のネットリスト設計データD2からフリップフロップ回路301又は901のセルへ変換してもよい。また、ステップS6〜S10の処理とステップS11〜S16の処理の順番を入れ替えてもよいし、どちらか一方の処理しか行わなくてもよいし、対象のフリップフロップ回路すべてではなく一部のフリップフロップ回路のみ変換してもよい。
【0063】
第1〜第3の実施形態によれば、低消費電力化できていないフリップフロップ回路200及び/又は801のセルに対し、低消費電力化したフリップフロップ回路301及び/又は901のセルに変換することにより、低消費電力化が可能になる。さらに、図4の変換後のフリップフロップ回路301は、図5の変換前のフリップフロップ回路200に対して面積を削減することができる。
【0064】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【0065】
1101 バス
1102 CPU
1103 ROM
1104 RAM
1105 ネットワークインタフェース
1106 入力装置
1107 出力装置
1108 外部記憶装置
【技術分野】
【0001】
本発明は、設計装置に関する。
【背景技術】
【0002】
図1(A)〜(D)は、イネーブル信号入力ありのフリップフロップ回路を示す図である。図1(A)は、複数のフリップフロップ回路101を示す。各フリップフロップ回路101は、入力信号D、イネーブル信号EN及びクロック信号CLKを入力する。ここで、イネーブル信号EN及びクロック信号CLKは、複数のフリップフロップ回路101間で共通である。図1(A)の回路は、消費電力を低減するために図1(B)の回路に変換可能である。
【0003】
図1(B)は消費電力を低減するためのフリップフロップ回路の構成を示す図であり、図1(C)及び(D)は図1(B)の回路の動作例を示すタイミングチャートである。クロックゲーティング回路112は、ラッチ回路113及び論理積回路114を有する。ラッチ回路113は、クロック信号CLKの立ち下がりエッジに同期してイネーブル信号ENをラッチし、ラッチした信号を出力する。論理積回路114は、ラッチ回路113の出力信号及びクロック信号CLKの論理積信号をクロック信号CLK1として出力する。複数のフリップフロップ回路111は、共通の同じクロック信号CLK1をクロック端子に入力し、それぞれの入力信号Dを入力端子に入力する。クロックゲーティング回路112により、イネーブル信号ENがローレベルのときには、クロック信号CLK1を停止させることができるので、図1(B)の回路は図1(A)の回路に比べて消費電力を低減することができる。
【0004】
図1(C)はクロック信号CLKがハイレベルのときにイネーブル信号ENが変化する場合のタイミングチャートであり、図1(D)はクロック信号CLKがローレベルのときにイネーブル信号ENが変化する場合のタイミングチャートである。いずれの場合も、クロック信号CLK1の立ち上がりエッジは、クロック信号CLKの立ち上がりエッジと同じタイミングであるため、クロック信号CLK1に誤動作の原因となるグリッチが発生しない。そのため、図1(B)の回路は、正常な動作を行うことができる。
【0005】
しかし、ラッチ回路113のクロック信号CLKは停止しないため、ラッチ回路113はイネーブル信号ENがローレベルの期間でも電力を消費してしまう。また、ラッチ回路113は大面積を占有する課題がある。特に、図1(A)の回路において、フリップフロップ回路101が1個の場合には、図1(A)の回路を図1(B)の回路に変換するメリットがほとんどなく、低消費電力の効果を得ることができない。
【0006】
また、タイミングクロックによってオン、オフするフリップフロップ、及び、フィードバックループとを有し、イネーブル信号にしたがって動作する論理回路部分を自動的に抽出する段階と、タイミングクロックをイネーブル信号によってゲートし、ゲーテッドクロック化する段階とを含み、これによって、タイミングクロックによるフリップフロップの変化の回数を削減する回路設計方法が知られている(例えば、特開平10−294375号公報参照)。
【0007】
また、RTLデータの動作シミュレーションにより、ゲートレベルでの消費電力解析を精度よく行うことが可能な消費電力解析装置が知られている(例えば、特開2009−3618号公報参照)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開平10−294375号公報
【特許文献2】特開2009−3618号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明の目的は、消費電力を低減し、誤動作を防止することができるフリップフロップ回路を設計するための設計装置を提供することである。
【課題を解決するための手段】
【0010】
設計装置は、第1の入力信号、第1のイネーブル信号及び第1のクロック信号を入力する第1のフリップフロップ回路の第1の設計データに対して、前記第1のクロック信号の周波数の2倍以上の周波数のクロック信号で第1の静的タイミング解析を行う第1の静的タイミング解析部と、前記第1の静的タイミング解析の結果が合格の場合には、前記第1の設計データを入力し、前記第1のフリップフロップ回路を第2のフリップフロップ回路に変換した第2の設計データを生成する第1の変換部とを有し、前記第1のフリップフロップ回路は、クロックゲーティング回路を有さず、前記第2のフリップフロップ回路は、前記第1のイネーブル信号を前記第1のクロック信号でクロックゲーティングして出力するクロックゲーティング回路と、前記クロックゲーティング回路の出力信号をクロック端子に入力して前記第1の入力信号を入力端子に入力する第3のフリップフロップ回路とを有する。
【発明の効果】
【0011】
クロックゲーティング回路を設けることによりフリップフロップ回路の電力を低減することができる。また、2倍以上の周波数のクロック信号で静的タイミング解析を行うことにより、フリップフロップ回路の誤動作を防止することができる。
【図面の簡単な説明】
【0012】
【図1】図1(A)〜(D)はイネーブル信号入力ありのフリップフロップ回路を示す図である。
【図2】図2(A)〜(D)は本発明の第1の実施形態によるイネーブル信号入力ありのフリップフロップ回路の例を示す図である。
【図3】図2(B)のフリップフロップ回路の構成例を示す概念図である。
【図4】図3のフリップフロップ回路の構成例を示す回路図である
【図5】図2(A)のイネーブル信号入力ありのフリップフロップ回路の構成例を示す回路図である。
【図6】図3のフリップフロップ回路の構成例を示す回路図である。
【図7】スキャンテスト機能ありのフリップフロップ回路の一部の構成例を示す回路図である。
【図8】図8(A)〜(D)は本発明の第2の実施形態によるイネーブル信号入力なしのフリップフロップ回路の例を示す図である。
【図9】図8(B)のフリップフロップ回路の構成例を示す概念図である。
【図10】図9のフリップフロップ回路の構成例を示す回路図である。
【図11】本発明の第3の実施形態による設計装置を構成するコンピュータのハードウェア構成例を示すブロック図である。
【図12】図11の設計装置の設計方法の処理例を示すフローチャートである。
【発明を実施するための形態】
【0013】
(第1の実施形態)
図2(A)〜(D)は、本発明の第1の実施形態によるイネーブル信号入力ありのフリップフロップ回路の例を示す図である。図2(A)は、イネーブル信号入力ありのフリップフロップ回路200を示す。フリップフロップ回路200は、入力信号D、イネーブル信号EN及びクロック信号CLKを入力し、出力信号Qを出力する。イネーブル信号ENは、ハイレベルのときに入力信号Dの有効状態を示し、ローレベルのときに入力信号Dの無効情報を示す。本実施形態では、図2(A)の回路を図2(B)の回路に変換する。
【0014】
図2(B)の回路は、図2(A)の回路と同じ論理動作を行う。図2(B)のイネーブル信号入力ありのフリップフロップ回路は、論理和回路201及びイネーブル信号入力なしのフリップフロップ回路202を有する。論理和回路201は、イネーブル信号ENの論理反転信号及びクロック信号CLKの論理和信号をクロック信号CLK1として出力する。論理和回路201は、イネーブル信号ENをクロック信号CLKでクロックゲーティングし、クロック信号CLK1を出力するクロックゲーティング回路である。フリップフロップ回路202は、クロック信号CLK1をクロック端子に入力し、入力信号Dを入力端子に入力し、出力端子から出力信号Qを出力する。フリップフロップ回路202は、クロック信号CLK1の立ち上がりエッジに同期して入力信号Dを保持し、保持した信号を出力信号Qとして出力する。論理和回路201をクロックゲーティング回路として設けることにより、図2(C)及び(D)に示すように、イネーブル信号ENがローレベルのときには、クロック信号CLK1を停止させることができるので、図2(B)の回路は図2(A)の回路に比べて消費電力を低減することができる。
【0015】
図2(C)は、クロック信号CLKがハイレベルのときにイネーブル信号ENが変化する場合のタイミングチャートである。この場合、クロック信号CLK1の立ち上がりエッジは、クロック信号CLKの立ち上がりエッジと同じタイミングであるため、クロック信号CLK1に誤動作の原因となるグリッチが発生しない。そのため、図2(B)の回路は、正常な動作を行うことができる。
【0016】
図2(D)は、クロック信号CLKがローレベルのときにイネーブル信号ENが変化する場合のタイミングチャートである。この場合、クロック信号CLK1に誤動作の原因となるグリッチ211が発生する。クロック信号CLK1のグリッチ211の立ち上がりエッジは、クロック信号CLKの立ち上がりエッジと異なるタイミングであるため、図2(B)の回路は誤動作する可能性がある。すなわち、フリップフロップ回路202は、クロック信号CLKの立ち上がりエッジのタイミングで正常な入力信号Dが保証されている。したがって、クロック信号CLK1の立ち上がりエッジがクロック信号CLKの立ち上がりエッジと同じタイミングであれば、フリップフロップ回路202の動作は保証される。しかし、クロック信号CLK1内のグリッチ211の立ち上がりエッジは、クロック信号CLKの立ち上がりエッジと異なるタイミングであるため、フリップフロップ回路202の動作は保証されず、誤動作の可能性がある。
【0017】
そこで、本実施形態では、図2(B)のフリップフロップ回路に対して、クロック信号CLKの周波数の2倍以上の周波数のクロック信号で静的タイミング解析を行い、その静的タイミング解析の結果が合格であれば、イネーブル信号ENはクロック信号CLKがハイレベルの時に変化し、クロック信号CLKがローレベルの時には変化しないことが保証される。したがって、クロック信号CLKの周波数の2倍以上の周波数のクロック信号で静的タイミング解析の結果が合格であれば、図2(B)の回路の正常動作が保証される。
【0018】
例えば、クロック信号CLKの要求周波数が50MHz、1周期が20nsの場合、論理和回路201の前段のフリップフロップ回路から論理和回路201までのイネーブル信号ENのタイミングが、1周期の半分の10ns以下であれば、イネーブル信号ENはクロック信号CLKのハイレベルの時に変化することが保証される。そのため、図2(B)のフリップフロップ回路は、静的タイミング解析で、クロック信号CLKの2倍の周波数の100MHzのクロック信号でタイミングを満たせば、図2(B)の正常動作が保証される。
【0019】
図3は、図2(B)のフリップフロップ回路の構成例を示す概念図である。フリップフロップ回路301のセルは、論理和回路201のクロックゲーティング回路を内蔵する。イネーブル信号入力ありのフリップフロップ回路301は、図2(B)と同様に、論理和回路201及びイネーブル信号入力なしのフリップフロップ回路202を有する。
【0020】
フリップフロップ回路202は、インバータ311〜314及びトライステートバッファ321〜324を有する。インバータ311〜314は、入力信号を論理反転した信号を出力する。トライステートバッファ311〜314は、クロック信号に同期し、出力がローレベル状態、ハイレベル状態又はハイインピーダンス状態になる。インバータ311は、クロック信号CLK1の論理反転信号を出力する。インバータ312は、インバータ312の出力信号の論理反転信号を出力する。トライステートバッファ321は、インバータ311及び312の出力クロック信号に同期し、クロック信号CLK1がローレベルになると、入力信号Dの論理反転信号を出力し、クロック信号CLK1がハイレベルになると出力がハイインピーダンス状態になる。インバータ313は、トライステートバッファ321の出力信号の論理反転信号を出力する。トライステートバッファ322は、インバータ311及び312の出力クロック信号に同期し、クロック信号CLK1がハイレベルになると、インバータ313の出力信号の論理反転信号をインバータ313の入力端子に出力し、クロック信号CLK1がローレベルになると出力がハイインピーダンス状態になる。トライステートバッファ323は、インバータ311及び312の出力クロック信号に同期し、クロック信号CLK1がハイレベルになると、インバータ313の出力信号の論理反転信号をインバータ314の入力端子に出力し、クロック信号CLK1がローレベルになると出力がハイインピーダンス状態になる。インバータ314は、トライステートバッファ323の出力信号の論理反転信号を出力信号Qとして出力する。トライステートバッファ324は、インバータ311及び312の出力クロック信号に同期し、クロック信号CLK1がローレベルになると、インバータ314の出力信号Qの論理反転信号をインバータ314の入力端子に出力し、クロック信号CLK1がハイレベルになると出力がハイインピーダンス状態になる。なお、論理和回路201及びインバータ311を含む回路302は、否定論理和回路303として構成することもできる。否定論理和回路303は、イネーブル信号ENの論理反転信号及びクロック信号CLKの否定論理和信号を出力する。
【0021】
以上のように、論理和回路201は、フリップフロップ回路301のセル内部に追加される。フリップフロップ回路301のセルは、上記のように、内部でグリッチが発生し、誤動作を引き起こす可能性がある。そのため、フリップフロップ回路301のセルに対して、静的タイミング解析で、クロック信号CLKの要求周波数の2倍以上の周波数のクロック信号でタイミングを満たす場合には、図2(A)のフリップフロップ回路200を図3のフリップフロップ回路に変換することができる。図2(A)のフリップフロップ回路200はクロックゲーティング回路を有さず、図3のフリップフロップ回路はクロックゲーティング回路を有する。変換は、セル名を変更するのみでよい。変換方法の詳細は、後に図12を参照しながら説明する。
【0022】
図3のフリップフロップ回路301のセル外部端子は、図2(A)のフリップフロップ回路200のものと同じであり、フリップフロップ回路301のセル内部には論理和回路201が追加される。そのため、図3のフリップフロップ回路301は、図2(A)のフリップフロップ回路200と同様に、静的タイミング解析及びクロックツリー合成を容易に行うことが可能である。したがって、図2(A)のフリップフロップ回路200を図3のフリップフロップ回路301に変換し、変換したフリップフロップ回路301のネットリスト設計データに対して、クロック信号CLKの周波数の2倍以上の周波数のクロック信号で静的タイミング解析を行い、その結果が合格となれば、図2(C)のように、クロック信号CLKがハイレベルの時にクロック信号ENが変化することが保証され、グリッチによる問題は起きない。図3のフリップフロップ回路301は、図2(A)のフリップフロップ回路200に比べ、消費電力を低減し、かつグリッチによる誤動作を防止することができる。
【0023】
図4は、図3のフリップフロップ回路301の構成例を示す回路図であり、図3の論理和回路201及びインバータ311を否定論理和回路303として構成した例を示す。以下、電界効果トランジスタを単にトランジスタという。pチャネルトランジスタ401は、ソースが電源電位ノードに接続され、ゲートがイネーブル信号ENのノードに接続される。nチャネルトランジスタ402は、ドレインがpチャネルトランジスタ401のドレインに接続され、ゲートがイネーブル信号ENのノードに接続され、ソースが基準電位ノード(グランド電位ノード)に接続される。pチャネルトランジスタ403は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ401のドレインに接続される。pチャネルトランジスタ405は、ソースがpチャネルトランジスタ403のドレインに接続され、ゲートがクロック信号CLKのノードに接続される。nチャネルトランジスタ406は、ドレインがpチャネルトランジスタ405のドレインに接続され、ゲートがクロック信号CLKのノードに接続され、ソースが基準電位ノードに接続される。nチャネルトランジスタ404は、ドレインがpチャネルトランジスタ405のドレインに接続され、ゲートがpチャネルトランジスタ401のドレインに接続され、ソースが基準電位ノードに接続される。pチャネルトランジスタ407は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ405のドレインに接続される。nチャネルトランジスタ408は、ドレインがpチャネルトランジスタ407のドレインに接続され、ゲートがpチャネルトランジスタ405のドレインに接続され、ソースが基準電位ノードに接続される。
【0024】
pチャネルトランジスタ409は、ソースが電源電位ノードに接続され、ゲートが入力信号Dのノードに接続される。pチャネルトランジスタ410は、ソースがpチャネルトランジスタ409のドレインに接続され、ゲートがpチャネルトランジスタ407のドレインに接続される。nチャネルトランジスタ411は、ドレインがpチャネルトランジスタ410のドレインに接続され、ゲートがpチャネルトランジスタ405のドレインに接続される。nチャネルトランジスタ412は、ドレインがnチャネルトランジスタ411のソースに接続され、ゲートが入力信号Dのノードに接続され、ソースが基準電位ノードに接続される。
【0025】
pチャネルトランジスタ413は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ417のドレインに接続される。pチャネルトランジスタ414は、ソースがpチャネルトランジスタ413のドレインに接続され、ゲートがpチャネルトランジスタ405のドレインに接続され、ドレインがpチャネルトランジスタ410のドレインに接続される。nチャネルトランジスタ415は、ドレインがpチャネルトランジスタ414のドレインに接続され、ゲートがpチャネルトランジスタ407のドレインに接続される。nチャネルトランジスタ416は、ドレインがnチャネルトランジスタ415のソースに接続され、ゲートがpチャネルトランジスタ417のドレインに接続され、ソースが基準電位ノードに接続される。
【0026】
pチャネルトランジスタ417は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ414のドレインに接続される。nチャネルトランジスタ418は、ドレインがpチャネルトランジスタ417のドレインに接続され、ゲートがpチャネルトランジスタ414のドレインに接続され、ソースが基準電位ノードに接続される。
【0027】
pチャネルトランジスタ419は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ425のドレインに接続される。pチャネルトランジスタ420は、ソースがpチャネルトランジスタ419のドレインに接続され、ゲートがpチャネルトランジスタ407のドレインに接続され、ドレインがpチャネルトランジスタ422のドレインに接続される。nチャネルトランジスタ421は、ドレインがpチャネルトランジスタ420のドレインに接続され、ゲートがpチャネルトランジスタ407のドレインに接続され、ソースがpチャネルトランジスタ417のドレインに接続される。pチャネルトランジスタ422は、ソースがnチャネルトランジスタ421のソースに接続され、ゲートがpチャネルトランジスタ405のドレインに接続される。nチャネルトランジスタ423は、ドレインがpチャネルトランジスタ422のドレインに接続され、ゲートがpチャネルトランジスタ405のドレインに接続される。nチャネルトランジスタ424は、ドレインがnチャネルトランジスタ423のソースに接続され、ゲートがpチャネルトランジスタ425のドレインに接続され、ソースが基準電位ノードに接続される。
【0028】
pチャネルトランジスタ425は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ420のドレインに接続される。nチャネルトランジスタ426は、ドレインがpチャネルトランジスタ425のドレインに接続され、ゲートがpチャネルトランジスタ420のドレインに接続され、ソースが基準電位ノードに接続される。
【0029】
pチャネルトランジスタ427は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ425のドレインに接続され、ドレインが出力信号Qのノードに接続される。nチャネルトランジスタ428は、ドレインがpチャネルトランジスタ427のドレインに接続され、ゲートがpチャネルトランジスタ425のドレインに接続され、ソースが基準電位ノードに接続される。
【0030】
ここで、トランジスタ401〜406は、図3の否定論理和回路303に対応する。トランジスタ407及び408は、図3のインバータ312に対応する。トランジスタ401及び402は、インバータとして機能する。pチャネルトランジスタ403は、イネーブル信号ENがハイレベルのときにオンする。nチャネルトランジスタ404は、イネーブル信号ENがローレベルのときにオンする。
【0031】
トランジスタ405〜428は図3のフリップフロップ回路202と同じ回路であり、トランジスタ405及び406が図3のインバータ311に対応し、トランジスタ407及び408が図3のインバータ312に対応する。したがって、図3のフリップフロップ回路301は、フリップフロップ回路202に対して、4個のトランジスタ401〜404を追加しただけである。このフリップフロップ回路301により、イネーブル信号ENがローレベルのときにはクロック信号CLKを停止させることができるので、消費電力を低減することができる。
【0032】
図5は、図2(A)のイネーブル信号入力ありのフリップフロップ回路200の構成例を示す回路図である。図5のフリップフロップ回路は、図4のフリップフロップ回路に対して、4個のトランジスタ401〜404を削除し、8個のトランジスタ501〜508を追加したものである。すなわち、図4のフリップフロップ回路は、図5のフリップフロップ回路に対して、トランジスタ数を4個削減することができる。本実施形態は、図5のフリップフロップ回路(図2(A)のフリップフロップ回路200)に対して、クロック信号CLKの周波数の2倍以上の周波数のクロック信号で静的タイミング解析を行い、その結果が合格であるときには、図5のフリップフロップ回路(図2(A)のフリップフロップ回路200)を図4のフリップフロップ回路に変換する。この変換によりトランジスタ数を4個削減することができる。変換後の図4のフリップフロップ回路は、変換前の図5のフリップフロップ回路に対して、小型化かつ低消費電力の効果を得ることができる。
【0033】
図5において、pチャネルトランジスタ501は、ソースが電源電位ノードに接続され、ゲートがイネーブル信号ENのノードに接続される。nチャネルトランジスタ502は、ドレインがpチャネルトランジスタ501のドレインに接続され、ゲートがイネーブル信号ENのノードに接続され、ソースが基準電位ノードに接続される。pチャネルトランジスタ503は、ソースが基準電位ノードに接続され、ゲートがpチャネルトランジスタ501のドレインに接続され、ドレインがpチャネルトランジスタ409のソースに接続される。nチャネルトランジスタ504は、ドレインがnチャネルトランジスタ412のソースに接続され、ゲートがイネーブル信号ENのノードに接続され、ソースが基準電位ノードに接続される。pチャネルトランジスタ505は、ソースが電源電位ノードに接続され、ゲートがイネーブル信号ENのノードに接続される。pチャネルトランジスタ506は、ソースがpチャネルトランジスタ505のドレインに接続され、ゲートがpチャネルトランジスタ420のドレインに接続され、ドレインがpチャネルトランジスタ410のソースに接続される。nチャネルトランジスタ507は、ドレインがnチャネルトランジスタ411のソースに接続され、ゲートがpチャネルトランジスタ420のドレインに接続される。nチャネルトランジスタ508は、ドレインがnチャネルトランジスタ507のソースに接続され、ゲートがpチャネルトランジスタ501のドレインに接続され、ソースが基準電位ノードに接続される。
【0034】
図6は、図3のフリップフロップ回路301の構成例を示す回路図であり、図3の論理和回路201及びインバータ311を用いて構成した例を示す。論理和回路201は図3の論理和回路201に対応し、フリップフロップ回路202は図3のフリップフロップ回路202に対応する。
【0035】
論理和回路201は、8個のトランジスタ601〜608を有する。pチャネルトランジスタ601は、ソースが電源電位ノードに接続され、ゲートがイネーブル信号ENのノードに接続される。nチャネルトランジスタ602は、ドレインがpチャネルトランジスタ601のドレインに接続され、ゲートがイネーブル信号ENのノードに接続され、ソースが基準電位ノードに接続される。pチャネルトランジスタ603は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ601のドレインに接続される。pチャネルトランジスタ604は、ソースがpチャネルトランジスタ603のドレインに接続され、ゲートがクロック信号CLKのノードに接続される。nチャネルトランジスタ605は、ドレインがpチャネルトランジスタ604のドレインに接続され、ゲートがクロック信号CLKのノードに接続され、ソースが基準電位ノードに接続される。nチャネルトランジスタ606は、ドレインがpチャネルトランジスタ604のドレインに接続され、ゲートがpチャネルトランジスタ601のドレインに接続され、ソースが基準電位ノードに接続される。pチャネルトランジスタ607は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ604のドレインに接続され、ドレインがトランジスタ405及び406のゲートに接続される。nチャネルトランジスタ608は、ドレインがpチャネルトランジスタ607のドレインに接続され、ゲートがpチャネルトランジスタ604のドレインに接続され、ソースが基準電位ノードに接続される。
【0036】
フリップフロップ回路202は、図4と同様に、トランジスタ405〜428を有する。トランジスタ405及び406は図3のインバータ311に対応し、トランジスタ407及び408は図3のインバータ312に対応する。
【0037】
図3のフリップフロップ回路301は、図4のフリップフロップ回路301の構成又は図6のフリップフロップ回路301の構成で実現することができる。ただし、図4のフリップフロップ回路301は、図6のフリップフロップ回路301に対して、トランジスタ数を4個削減することができるので、より好ましい。
【0038】
図7は、スキャンテスト機能ありのフリップフロップ回路の一部の構成例を示す回路図であり、図4のフリップフロップ回路301にスキャンテスト機能を付加したものである。スキャンテストモードではスキャンテストモード信号SCANがハイレベルになり、それ以外のモードではスキャンテストモード信号SCANがローレベルになる。スキャンテストモード信号SCANがハイレベルになると、クロック信号CLKが有効状態になり、フリップフロップ回路301のスキャンテストを行うことができる。
【0039】
図7のフリップフロップ回路301は、図4のフリップフロップ回路301に対して、2個のトランジスタ701及び702を追加したものである。以下、図7の回路が図4の回路と異なる点を説明する。pチャネルトランジスタ701は、ソースが電源電位ノードに接続され、ゲートがスキャンテストモード信号SCANのノードに接続され、ドレインがpチャネルトランジスタ401のソースに接続される。nチャネルトランジスタ702は、ドレインがpチャネルトランジスタ401のドレインに接続され、ゲートがスキャンテストモード信号SCANのノードに接続され、ソースが基準電位ノードに接続される。
【0040】
pチャネルトランジスタ403は、スキャンテストモード信号SCANがハイレベル又はイネーブル信号ENがハイレベルのときにオンになる。nチャネルトランジスタ404は、スキャンテストモード信号SCANがローレベルかつイネーブル信号ENがローレベルのときにオンになる。すなわち、スキャンテストモード信号SCAN又はイネーブル信号ENがハイレベルになると、クロック信号CLKが有効状態になり、スキャンテストモード信号SCAN及びイネーブル信号ENがローレベルになるとクロック信号CLKが停止状態になる。図7のフリップフロップ回路301は、図4のフリップフロップ回路301よりトランジスタ数が2個増加し、図5のフリップフロップ回路よりトランジスタが2個減少する。
【0041】
(第2の実施形態)
図8(A)〜(D)は、本発明の第2の実施形態によるイネーブル信号入力なしのフリップフロップ回路の例を示す図である。図8(A)は、イネーブル信号入力なしのフリップフロップ回路801を示す。フリップフロップ回路801は、入力信号D及びクロック信号CLKを入力し、出力信号Qを出力する。本実施形態では、図8(A)の回路を図8(B)の回路に変換する。
【0042】
図8(B)の回路は、図8(A)の回路と同じ論理動作を行う。図8(B)のイネーブル信号入力なしのフリップフロップ回路は、排他的論理和回路811、論理和回路812及びイネーブル信号入力なしのフリップフロップ回路202を有する。排他的論理和回路811は、入力信号D及び出力信号Qの排他的論理和信号DTを出力する。論理和回路812は、クロック信号CLK及び信号DTの論理和をクロック信号CLK1として出力する。図8(C)及び(D)に示すように、排他的論理和回路811及び論理和回路812は、クロックゲーティング回路として機能する。フリップフロップ回路202は、図8(A)のフリップフロップ回路801と同じ構成を有し、クロック信号CLK1をクロック端子に入力し、入力信号Dを入力端子に入力し、出力端子から出力信号Qを出力する。フリップフロップ回路202は、クロック信号CLK1の立ち上がりエッジに同期して入力信号Dを保持し、保持した信号を出力信号Qとして排他的論理和回路811に出力する。クロックゲーティング回路を設けることにより、入力信号Dの変化時のみクロック信号CLK1を有効にし、入力信号Dが変化しない時にはクロック信号CLKを停止させることができる。これにより、図8(B)の回路は図8(A)の回路に比べて消費電力を低減することができる。
【0043】
図8(C)はクロック信号CLKがハイレベルのときに入力信号Dが変化する場合のタイミングチャートであり、図8(D)はクロック信号CLKがローレベルのときに入力信号Dが変化する場合のタイミングチャートである。いずれの場合も、クロック信号CLK1の立ち上がりエッジは、クロック信号CLKの立ち上がりエッジと同じタイミングであるため、クロック信号CLK1に誤動作の原因となるグリッチが発生しない。具体的には、図8(D)では、クロック信号CLK1のパルス幅が狭くなるが、出力信号Qが直接、排他的論理和回路811に入力されるため、出力信号Qは入力信号Dに対して遅延量が小さく、クロック信号CLKがローレベルの時に出力信号Qが変化することはない。これにより、排他的論理和回路811の出力信号DTは、クロック信号CLKがローレベルのときに立ち下がることはない。そのため、クロック信号CLK1の立ち上がりエッジは、クロック信号CLKの立ち上がりエッジと同じタイミングになり、図8(B)のフリップフロップ回路の正常動作が保証される。
【0044】
図9は、図8(B)のフリップフロップ回路の構成例を示す概念図である。フリップフロップ回路901のセルは、排他的論理和回路811及び論理和回路812のクロックゲーティング回路を内蔵する。イネーブル信号入力なしのフリップフロップ回路901は、図8(B)と同様に、排他的論理和回路811、論理和回路812及びイネーブル信号入力なしのフリップフロップ回路202を有する。フリップフロップ回路202は、図3のフリップフロップ回路202と同じ構成を有する。排他的論理和回路811及び論理和回路812のクロックゲーティング回路は、フリップフロップ回路901のセル内部に追加される。図9のフリップフロップ回路901は、上記のようにグリッチの問題が生じないため、図8(A)のフリップフロップ回路801を図9のフリップフロップ回路901に変換することができる。図8(A)のフリップフロップ回路801はクロックゲーティング回路を有さず、図9のフリップフロップ回路901はクロックゲーティング回路を有する。変換は、セル名を変更するのみでよい。変換方法の詳細は、後に図12を参照しながら説明する。なお、論理和回路812及びインバータ311を含む回路902は、否定論理和回路903として構成することもできる。
【0045】
図9のフリップフロップ回路901のセル外部端子は、図8(A)のフリップフロップ回路801のものと同じであり、フリップフロップ回路901のセル内部には排他的論理和回路811及び論理和回路812が追加される。そのため、図9のフリップフロップ回路901は、図8(A)のフリップフロップ回路801と同様に、静的タイミング解析及びクロックツリー合成を容易に行うことが可能である。したがって、図8(A)のフリップフロップ回路801を図9のフリップフロップ回路901に変換し、変換したフリップフロップ回路901のネットリスト設計データに対して、クロック信号CLKの周波数と同じ周波数のクロック信号で静的タイミング解析を行い、その結果が合格であれば、図9のフリップフロップ回路901の正常動作が保証される。図9のフリップフロップ回路901は、図8(A)のフリップフロップ回路801に比べ、消費電力を低減することができる。
【0046】
図10は、図9のフリップフロップ回路901の構成例を示す回路図であり、図9の論理和回路812及びインバータ311を否定論理和回路903として構成した例を示す。トランジスタ1001〜1008は図9の排他的論理和回路811に対応し、トランジスタ1009,405,406,1010は図9の否定論理和回路903に対応する。図10の回路は、図6のフリップフロップ回路202に対して、10個のトランジスタ1001〜1010を追加したものである。以下、図10の回路が図6のフリップフロップ回路202と異なる点を説明する。
【0047】
pチャネルトランジスタ1001は、ソースが電源電位ノードに接続され、ゲートが出力信号Qのノードに接続される。pチャネルトランジスタ1002は、ソースがpチャネルトランジスタ1001のドレインに接続され、ゲートが入力信号Dのノードに接続される。pチャネルトランジスタ1003は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ425のドレインに接続される。pチャネルトランジスタ1004は、ソースがpチャネルトランジスタ1003のドレインに接続され、ゲートがpチャネルトランジスタ409のドレインに接続され、ドレインがpチャネルトランジスタ1002のドレインに接続される。nチャネルトランジスタ1005は、ドレインがpチャネルトランジスタ1002のドレインに接続され、ゲートがpチャネルトランジスタ409のドレインに接続される。nチャネルトランジスタ1006は、ドレインがnチャネルトランジスタ1005のソースに接続され、ゲートが出力信号Qのノードに接続され、ソースが基準電位ノードに接続される。nチャネルトランジスタ1007は、ドレインがpチャネルトランジスタ1002のドレインに接続され、ゲートが入力信号Dのノードに接続される。nチャネルトランジスタ1008は、ドレインがnチャネルトランジスタ1007のソースに接続され、ゲートがpチャネルトランジスタ425のドレインに接続され、ソースが基準電位ノードに接続される。pチャネルトランジスタ1009は、ソースが電源電位ノードに接続され、ゲートがpチャネルトランジスタ1002のドレインに接続され、ドレインがpチャネルトランジスタ405のソースに接続される。nチャネルトランジスタ1010は、ドレインがpチャネルトランジスタ405のドレインに接続され、ゲートがpチャネルトランジスタ1002のドレインに接続され、ソースが基準電位ノードに接続される。
【0048】
本実施形態では、図8(A)のフリップフロップ回路801を図10のフリップフロップ回路に変換する。図8(A)のフリップフロップ回路801は、図6のフリップフロップ回路202と同じ構成を有し、クロックゲーティング回路を有しない。図10のフリップフロップ回路は、上記のようにクロックゲーティング回路を有する。図10のフリップフロップ回路は、図8(A)のフリップフロップ回路801(図6のフリップフロップ回路202)に対して、10個のトランジスタ1001〜1010が増加し、面積が増加する。したがって、レイアウトの空き領域の面積が閾値以上であれば、図8(A)のフリップフロップ回路801を図10のフリップフロップ回路に変換することができる。図10のフリップフロップ回路は、入力信号Dが変化した時のみクロック信号CLKが有効に動作し、入力信号Dが変化しない時にはクロック信号CLKが停止するため、図8(A)のフリップフロップ回路801よりもかなりの低消費電力化が望める。
【0049】
また、本実施形態も、図7の回路と同様に、図10のフリップフロップ回路に2個のトランジスタを追加することにより、スキャンテスト機能ありのフリップフロップ回路を構成することができる。スキャンテスト機能ありのフリップフロップ回路は、図8(A)のフリップフロップ回路801に対して、トランジスタ数が12個増加する。
【0050】
(第3の実施形態)
図11は、本発明の第3の実施形態による設計装置を構成するコンピュータのハードウェア構成例を示すブロック図である。この設計装置は、CAD(computer-aided design)により、フリップフロップ回路等の設計データを生成することができ、第1及び第2の実施形態のフリップフロップ回路を設計することができる。
【0051】
バス1101には、中央処理装置(CPU)1102、ROM1103、RAM1104、ネットワークインタフェース1105、入力装置1106、出力装置1107及び外部記憶装置1108が接続されている。
【0052】
CPU1102は、データの処理及び演算を行うと共に、バス1101を介して接続された上記の構成ユニットを制御するものである。ROM1103には、予めブートプログラムが記憶されており、このブートプログラムをCPU1102が実行することにより、コンピュータが起動する。外部記憶装置1108にコンピュータプログラムが記憶されており、そのコンピュータプログラムがRAM1104にコピーされ、CPU1102により実行される。このコンピュータは、コンピュータプログラムを実行することにより、後述する図12の設計処理等を行うことができる。
【0053】
外部記憶装置1108は、例えばハードディスク記憶装置等であり、電源を切っても記憶内容が消えない。外部記憶装置1108は、コンピュータプログラム、設計データ等を記録媒体に記録したり、記録媒体からコンピュータプログラム等を読み出すことができる。
【0054】
ネットワークインタフェース1105は、ネットワークに対してコンピュータプログラム及び設計データ等を入出力することができる。入力装置1106は、例えばキーボード及びポインティングデバイス(マウス)等であり、各種指定又は入力等を行うことができる。出力装置1107は、ディスプレイ及びプリンタ等であり、表示又は印刷することができる。
【0055】
本実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したCD−ROM等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びコンピュータプログラムプロダクトは、本発明の範疇に含まれる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
【0056】
図12は、図11の設計装置の設計方法の処理例を示すフローチャートである。設計装置は、図2(A)及び図8(A)のフリップフロップ回路を含む半導体回路の設計処理を行い、RTL(レジスタトランスファレベル)設計データD1を生成して外部記憶装置1108に記憶する。次に、ステップS1では、設計装置(論理合成部)は、RTL設計データD1を論理合成し、ネットリスト設計データD2及びログファイルD4を生成し、外部記憶装置1108に記憶する。次に、ステップS2では、設計装置は、ネットリスト設計データD2に対してレイアウト処理を行い、ネットリスト設計データD3を生成し、外部記憶装置1108に記憶する。次に、ステップS3では、設計装置(静的タイミング解析部)は、ネットリスト設計データD3に対して、クロック信号CLKの要求周波数(例えば50MHz)と同じ周波数のクロック信号で静的タイミング解析(STA)を行う。静的タイミング解析の結果が合格であればステップS6へ進み、不合格であればステップS2に戻る。通常であれば、静的タイミング解析の結果が合格であれば、ステップS17へ進み、LSI実装を行う。これに対し、本実施形態では、フリップフロップ回路の消費電力を低減するため、低消費電力フリップフロップ回路への変換処理1201を行う。ステップS6〜S10は、図8(A)のフリップフロップ回路801のセルを図9のフリップフロップ回路901のセルに変換する処理である。ステップS11〜S16は、図2(A)のフリップフロップ回路200のセルを図3のフリップフロップ回路301のセルに変換する処理である。
【0057】
ステップS5では、設計装置(リスト作成部)は、ログファイルD4を基に、図2(A)のイネーブル信号入力ありのフリップフロップ回路200のリストD5を作成し、図8(A)のイネーブル信号入力なしのフリップフロップ回路801のリストD6を作成し、リストD5及びD6を外部記憶装置1108に記憶する。
【0058】
その後、ステップS6では、設計装置は、レイアウトの空き領域の面積が閾値以上であればステップS7へ進み、閾値未満であればステップS11へ進む。ステップS7では、設計装置(変換部)は、リストD6を参照し、図8(A)のフリップフロップ回路801のセルを図9のフリップフロップ回路901のセルに変換することによりネットリスト設計データD7を生成し、外部記憶媒体1108に記憶する。すなわち、設計装置(変換部)は、入力信号D及びクロック信号CLKを入力するフリップフロップ回路801のネットリスト設計データD3を入力し、フリップフロップ回路801をフリップフロップ回路901に変換したネットリスト設計データD7を生成する。次に、ステップS8では、設計装置(静的タイミング解析部)は、ネットリスト設計データD7に対して、クロック信号CLKの要求周波数(例えば50MHz)と同じ周波数のクロック信号で静的タイミング解析を行う。次に、ステップS9では、設計装置は、変換後のフリップフロップ回路901の静的タイミング解析の結果が合格の場合はステップS11へ進み、不合格の場合はステップS10へ進む。ステップS10では、設計装置(復元部)は、リストD6内のフリップフロップ回路の中で、合格のものは変換後のフリップフロップ回路901を採用し、不合格のものは変換前のフリップフロップ回路801に戻してリストD6から削除し、ネットリスト設計データD7を変更する。その後、ステップS8の処理に戻る。すなわち、設計装置(復元部)は、ネットリスト設計データD7を入力し、フリップフロップ回路901をフリップフロップ回路801に戻したネットリスト設計データを生成する。
【0059】
ステップS11では、設計装置(静的タイミング解析部)は、ネットリスト設計データD7に対して、クロック信号CLKの要求周波数(例えば50MHz)の2倍以上の周波数(例えば100MHz以上の周波数)のクロック信号で静的タイミング解析を行い、ログファイルD8を生成して外部記憶装置1108に記憶する。なお、静的タイミング解析でのクロック信号の周波数は、高いほどタイミング条件が厳しくなり、静的タイミング解析の結果が不合格になる確率が高くなる。歩留まりを上げるには、静的タイミング解析でのクロック信号の周波数が低いことが好ましい。したがって、設計部(静的タイミング解析部)は、ネットリスト設計データD7に対して、クロック信号CLKの要求周波数の2倍の周波数(例えば100MHz)のクロック信号で静的タイミング解析を行うことが好ましい。
【0060】
次に、ステップS12では、設計装置(リスト作成部)は、ログファイルD8を基に、静的タイミング解析の結果が合格であるフリップフロップ回路のリストD9を作成し、外部記憶装置1108に記憶する。次に、ステップS13では、設計装置(変換部)は、リストD5及びD9を参照し、リストD5内のフリップフロップ回路200の中で、静的タイミング解析の結果が合格であるフリップフロップ回路200のセルを図3のフリップフロップ回路301のセルに変換し、ネットリスト設計データD10を生成して外部記憶装置1108に記憶する。すなわち、設計装置(変換部)は、ステップS11の静的タイミング解析の結果が合格の場合には、ネットリスト設計データD7を入力し、フリップフロップ回路200をフリップフロップ回路301に変換したネットリスト設計データD10を生成する。
【0061】
次に、ステップS14では、設計装置(静的タイミング解析部)は、ネットリスト設計データD10に対して、クロック信号CLKの要求周波数(例えば50MHz)の2倍以上の周波数(100MHz以上の周波数)のクロック信号で静的タイミング解析を行う。なお、この静的タイミング解析の周波数は、ステップS11と同様に、クロック信号CLKの要求周波数(例えば50MHz)の2倍の周波数(100MHz)が好ましい。次に、ステップS15では、設計装置は、変換後のフリップフロップ回路301の静的タイミング解析の結果が合格の場合はステップS17へ進み、不合格の場合はステップS16へ進む。ステップS16では、設計装置(復元部)は、リストD5内のフリップフロップ回路の中で、合格のものは変換後のフリップフロップ回路301を採用し、不合格のものは変換前のフリップフロップ回路200に戻してリストD5から削除し、ネットリスト設計データD10を変更する。その後、ステップS14の処理に戻る。すなわち、設計装置(復元部)は、ネットリスト設計データD10を入力し、フリップフロップ回路301をフリップフロップ回路200に戻したネットリスト設計データを生成する。ステップS17では、ステップS14の静的タイミング解析で合格したネットリスト設計データD10を基にLSI実装処理が行われる。
【0062】
図12の処理は一例であり、例えばレイアウト処理前のネットリスト設計データD2からフリップフロップ回路301又は901のセルへ変換してもよい。また、ステップS6〜S10の処理とステップS11〜S16の処理の順番を入れ替えてもよいし、どちらか一方の処理しか行わなくてもよいし、対象のフリップフロップ回路すべてではなく一部のフリップフロップ回路のみ変換してもよい。
【0063】
第1〜第3の実施形態によれば、低消費電力化できていないフリップフロップ回路200及び/又は801のセルに対し、低消費電力化したフリップフロップ回路301及び/又は901のセルに変換することにより、低消費電力化が可能になる。さらに、図4の変換後のフリップフロップ回路301は、図5の変換前のフリップフロップ回路200に対して面積を削減することができる。
【0064】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【0065】
1101 バス
1102 CPU
1103 ROM
1104 RAM
1105 ネットワークインタフェース
1106 入力装置
1107 出力装置
1108 外部記憶装置
【特許請求の範囲】
【請求項1】
第1の入力信号、第1のイネーブル信号及び第1のクロック信号を入力する第1のフリップフロップ回路の第1の設計データに対して、前記第1のクロック信号の周波数の2倍以上の周波数のクロック信号で第1の静的タイミング解析を行う第1の静的タイミング解析部と、
前記第1の静的タイミング解析の結果が合格の場合には、前記第1の設計データを入力し、前記第1のフリップフロップ回路を第2のフリップフロップ回路に変換した第2の設計データを生成する第1の変換部とを有し、
前記第1のフリップフロップ回路は、クロックゲーティング回路を有さず、
前記第2のフリップフロップ回路は、前記第1のイネーブル信号を前記第1のクロック信号でクロックゲーティングして出力するクロックゲーティング回路と、前記クロックゲーティング回路の出力信号をクロック端子に入力して前記第1の入力信号を入力端子に入力する第3のフリップフロップ回路とを有することを特徴とする設計装置。
【請求項2】
前記クロックゲーティング回路は、前記第1のイネーブル信号及び前記第1のクロック信号を入力して前記第3のフリップフロップ回路のクロック端子に出力する論理和回路又は否定論理和回路を有することを特徴とする請求項1記載の設計装置。
【請求項3】
さらに、第3の設計データを論理合成してログファイル及び前記第1の設計データを生成する論理合成部と、
前記ログファイルを基に前記第1のフリップフロップ回路のリストを作成する第1のリスト作成部とを有し、
前記第1の変換部は、前記第1のフリップフロップの回路のリストを基に前記変換を行い、
さらに、前記第2の設計データに対して、前記第1のクロック信号の周波数の2倍以上の周波数のクロック信号で第2の静的タイミング解析を行う第2の静的タイミング解析部と、
前記第2の静的タイミング解析の結果が不合格の場合には、前記第2の設計データを入力し、前記第2のフリップフロップ回路を前記第1のフリップフロップ回路に戻した設計データを生成する第1の復元部とを有することを特徴とする請求項1又は2記載の設計装置。
【請求項4】
さらに、第2の入力信号及び第2のクロック信号を入力する第4のフリップフロップ回路の第4の設計データを入力し、前記第4のフリップフロップ回路を第5のフリップフロップ回路に変換した第5の設計データを生成する第2の変換部を有し、
前記第4のフリップフロップ回路は、クロックゲーティング回路を有さず、
前記第5のフリップフロップ回路は、前記第2の入力信号を入力端子に入力して出力端子から第2の出力信号を出力する第6のフリップフロップ回路と、前記第2の入力信号及び前記第2の出力信号を入力する排他的論理和回路と、前記排他的論理和回路の出力信号及び前記第2のクロック信号を入力して出力信号を前記第6のフリップフロップ回路のクロック端子に出力する論理和回路又は否定論理和回路とを有することを特徴とする請求項1〜3のいずれか1項に記載の設計装置。
【請求項5】
前記第2の変換部は、レイアウトの空き領域の面積が閾値以上であれば前記変換を行い、
さらに、前記第5のフリップフロップ回路の第5の設計データに対して、前記第2のクロック信号の周波数と同じ周波数のクロック信号で第3の静的タイミング解析を行う第3の静的タイミング解析部と、
前記第3の静的タイミング解析の結果が不合格の場合には、前記第5の設計データを入力し、前記第5のフリップフロップ回路を前記第4のフリップフロップ回路に戻した設計データを生成する第2の復元部とを有することを特徴とする請求項4記載の設計装置。
【請求項1】
第1の入力信号、第1のイネーブル信号及び第1のクロック信号を入力する第1のフリップフロップ回路の第1の設計データに対して、前記第1のクロック信号の周波数の2倍以上の周波数のクロック信号で第1の静的タイミング解析を行う第1の静的タイミング解析部と、
前記第1の静的タイミング解析の結果が合格の場合には、前記第1の設計データを入力し、前記第1のフリップフロップ回路を第2のフリップフロップ回路に変換した第2の設計データを生成する第1の変換部とを有し、
前記第1のフリップフロップ回路は、クロックゲーティング回路を有さず、
前記第2のフリップフロップ回路は、前記第1のイネーブル信号を前記第1のクロック信号でクロックゲーティングして出力するクロックゲーティング回路と、前記クロックゲーティング回路の出力信号をクロック端子に入力して前記第1の入力信号を入力端子に入力する第3のフリップフロップ回路とを有することを特徴とする設計装置。
【請求項2】
前記クロックゲーティング回路は、前記第1のイネーブル信号及び前記第1のクロック信号を入力して前記第3のフリップフロップ回路のクロック端子に出力する論理和回路又は否定論理和回路を有することを特徴とする請求項1記載の設計装置。
【請求項3】
さらに、第3の設計データを論理合成してログファイル及び前記第1の設計データを生成する論理合成部と、
前記ログファイルを基に前記第1のフリップフロップ回路のリストを作成する第1のリスト作成部とを有し、
前記第1の変換部は、前記第1のフリップフロップの回路のリストを基に前記変換を行い、
さらに、前記第2の設計データに対して、前記第1のクロック信号の周波数の2倍以上の周波数のクロック信号で第2の静的タイミング解析を行う第2の静的タイミング解析部と、
前記第2の静的タイミング解析の結果が不合格の場合には、前記第2の設計データを入力し、前記第2のフリップフロップ回路を前記第1のフリップフロップ回路に戻した設計データを生成する第1の復元部とを有することを特徴とする請求項1又は2記載の設計装置。
【請求項4】
さらに、第2の入力信号及び第2のクロック信号を入力する第4のフリップフロップ回路の第4の設計データを入力し、前記第4のフリップフロップ回路を第5のフリップフロップ回路に変換した第5の設計データを生成する第2の変換部を有し、
前記第4のフリップフロップ回路は、クロックゲーティング回路を有さず、
前記第5のフリップフロップ回路は、前記第2の入力信号を入力端子に入力して出力端子から第2の出力信号を出力する第6のフリップフロップ回路と、前記第2の入力信号及び前記第2の出力信号を入力する排他的論理和回路と、前記排他的論理和回路の出力信号及び前記第2のクロック信号を入力して出力信号を前記第6のフリップフロップ回路のクロック端子に出力する論理和回路又は否定論理和回路とを有することを特徴とする請求項1〜3のいずれか1項に記載の設計装置。
【請求項5】
前記第2の変換部は、レイアウトの空き領域の面積が閾値以上であれば前記変換を行い、
さらに、前記第5のフリップフロップ回路の第5の設計データに対して、前記第2のクロック信号の周波数と同じ周波数のクロック信号で第3の静的タイミング解析を行う第3の静的タイミング解析部と、
前記第3の静的タイミング解析の結果が不合格の場合には、前記第5の設計データを入力し、前記第5のフリップフロップ回路を前記第4のフリップフロップ回路に戻した設計データを生成する第2の復元部とを有することを特徴とする請求項4記載の設計装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2011−164988(P2011−164988A)
【公開日】平成23年8月25日(2011.8.25)
【国際特許分類】
【出願番号】特願2010−27897(P2010−27897)
【出願日】平成22年2月10日(2010.2.10)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
【公開日】平成23年8月25日(2011.8.25)
【国際特許分類】
【出願日】平成22年2月10日(2010.2.10)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
[ Back to top ]