(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
LSI(Large Scale Integration)等の半導体集積回路は、クロックに同期した回路を実装されることが主流である。クロックに同期した回路を有する半導体集積回路の構成例を
図7に示す。半導体集積回路700は、例えば複数の機能を1つのチップ上に実装したSoC(System on a Chip)であり、複数の回路ブロック(回路モジュールA〜D)701A〜701Dを有する。回路ブロック(回路モジュールA〜D)701A〜701Dは、例えば位相ロックループ(PLL:Phase Locked Loop)回路702から供給されるクロック信号CLKで動作するフリップフロップ回路を有する。
【0003】
図7に示したような半導体集積回路におけるフリップフロップ回路には、例えば
図8(A)に示すD型フリップフロップ回路が用いられる。D型フリップフロップ回路は、入力データを保持する回路であり、
図8(A)に示すように接続された8個の否定論理積演算回路(NAND回路)801〜808及び2つのインバータ809、810を有する。
図8(A)に示すD型フリップフロップ回路は、
図8(B)に示すように、入力されるクロック信号CKの立ち上がりエッジにおいて、D入力の値がQ出力として保持される。このように、D型フリップフロップでは、データ保持にクロック信号CKを用い、クロック駆動の度に電力が消費される。
【0004】
入力データを保持する他の回路として、
図9(A)に示すようなゲーテッドDラッチ回路がある。ゲーテッドDラッチ回路は、
図9(A)に示すように接続された4個のNAND回路821〜824を有する。
図9(A)に示すゲーテッドDラッチ回路は、
図9(B)に示すように、入力されるゲート信号GがハイレベルであるときにD入力の値がQ出力に伝わり、ゲート信号GがローレベルであるときにQ出力を保持する。このように、ゲーテッドDラッチ回路では、データ保持にゲート信号Gを用い、ゲート信号Gが変化したときに電力が消費される。
【0005】
また、半導体集積回路は、タイミングを考慮して設計が行われる。半導体集積回路においてタイミング解析の対象となるパス(伝送経路)は、フリップフロップ回路からフリップフロップ回路へのパス、入力ポート(入力端子)からフリップフロップ回路へのパス、フリップフロップ回路から出力ポート(出力端子)へのパス、及び入力ポート(入力端子)から出力ポート(出力端子)へのパスの4つに大きく分けられる。
【0006】
ここで、フリップフロップ回路は、入力されるクロック信号に同期して入力データを保持するため、クロック信号と入力データの入力タイミングについては、フリップフロップ回路が必要とするセットアップタイムやホールドタイムを満たすように実装する必要がある。例えば、フリップフロップ回路にて入力データが保持されるクロック信号のエッジに対して、フリップフロップ回路が必要とするホールドタイム以上の期間において入力データの値が切り替わらないように実装する。
【0007】
そこで、半導体集積回路の設計では、例えばSDC(Synopsys Design Constraints)ファイルのようなタイミング解析用の制約ファイルにクロック定義や回路内の各パスのタイミング制約を記載し、タイミング解析ツールによりセットアップタイム違反やホールドタイム違反が起きないかを解析するタイミング解析を行う。そして、解析結果に応じてタイミング制約を満たすように回路の変更等を行う。
【0008】
例えば、半導体集積回路において、一部のフリップフロップ回路を、入力データを出力側にスルーする状態を持つラッチ回路に置き換えることで、そのフリップフロップ回路の入力側にあった遅延の余裕分を後段に渡して最悪遅延を改善し遅延最適化を行う設計技術が提案されている(例えば、特許文献1〜3参照)。
【発明を実施するための形態】
【0014】
以下、本発明の実施形態を図面に基づいて説明する。
【0015】
本発明の一実施形態による回路設計方法は、例えば
図6に示すようなコンピュータ(設計装置)により実現でき、そのCPU(Central Processing Unit)により本実施形態による回路設計方法の動作が実施される。
図6は、本実施形態による回路設計方法を実現可能なコンピュータ(設計装置)の構成例を示す図である。バス601には、CPU602、ROM(Read Only Memory)603、RAM(Random Access Memory)604、ネットワークインターフェース605、入力装置606、出力装置607、及び外部記憶装置608が接続されている。
【0016】
CPU602は、データの処理や演算を行うとともに、バス601を介して接続された各構成要素を制御する。ROM603には、予めブートプログラムが記憶されており、このブートプログラムをCPU602が実行することにより、コンピュータが起動する。外部記憶装置608にコンピュータプログラムが記憶されており、そのコンピュータプログラムがRAM604にコピーされてCPU602により実行することで、例えば本実施形態による回路設計方法の各処理等が行われる。RAM604は、データの入出力、送受信のためのワークメモリ、各構成要素の制御のための一時記憶として用いられる。
【0017】
外部記憶装置608は、例えばハードディスク記憶装置やCD−ROM等であり、電源を切っても記憶内容が消えない。ネットワークインターフェース605は、ネットワークに接続するためのインターフェースである。入力装置606は、例えばキーボードやポインティングデバイス(マウス)等であり、各種指定や入力等を行うことができる。出力装置607は、ディスプレイやプリンタ等であり、表示や印刷等を行うことができる。
【0018】
以下、本実施形態による回路設計方法について説明する。本実施形態による回路設計方法において最適化対象となる半導体集積回路は、例えば
図7に示したような複数の機能を1つのチップ上に実装したSoC(System on a Chip)に実装され、クロックに同期して動作するフリップフロップ回路を含む内部回路である。なお、以下では、本実施形態による回路設計方法が適用可能な半導体集積回路が有する回路構成のうち、最適化の説明に必要な一部の回路構成だけを示して説明するが、半導体集積回路は例えば組み合わせ回路等のその他の回路構成を有していても良い。
【0019】
図1は、本実施形態による回路設計方法の例を示すフローチャートであり、図示した各処理は、例えば
図6に示したコンピュータが有するCPU100により実行される。
図1に示す本実施形態による回路設計方法は、例えば半導体集積回路の開発におけるRTL(Register Transfer Language)設計又はレイアウト設計のタイミングで適用可能である。
図2(A)に構成を示す回路を一例に、
図1に示す本実施形態による回路設計方法について説明する。
【0020】
図2(A)は、本実施形態における最適化対象の半導体集積回路の構成例を示す図である。
図2(A)には、データ出力側(転送元)のフリップフロップ回路SFF−i及びセレクタSSEL−iと、データ入力側(転送先)のフリップフロップ回路DFF−i及びセレクタDSEL−iと、フリップフロップ回路201、202とを有する回路を一例として示している。フリップフロップ回路SFF−i、DFF−i、201、202の各々は、
図8(A)に示したようなD型フリップフロップ回路である。なお、iは添え字であり、i=1〜N(Nは、例えば8、16、32、64等)である(以下においても同様)。
【0021】
データ出力側のフリップフロップ回路SFF−iの各々は、クロック信号CLKに同期して、セレクタSSEL−iの出力を保持し、転送データ信号SDATAiとして出力する。セレクタSSEL−iの各々は、入力されるイネーブル信号EN1に応じて、入力データ信号IDATAi又は転送データ信号SDATAiを出力する。
図2(A)に示した例では、セレクタSSEL−iは、イネーブル信号EN1が“1”(ハイレベル)である場合に入力データ信号IDATAiを出力し、イネーブル信号EN1が“0”(ローレベル)である場合に転送データ信号SDATAiを出力する。すなわち、データ出力側のフリップフロップ回路SFF−i及びセレクタSSEL−iは、信号EN1をイネーブル信号とするイネーブル信号付きのフリップフロップ回路に相当する。
【0022】
データ入力側のフリップフロップ回路DFF−iの各々は、クロック信号CLKに同期して、セレクタDSEL−iの出力を保持し、出力データ信号ODATAiとして出力する。セレクタDSEL−iの各々は、イネーブル信号EN2に応じて、転送データ信号SDATAi又は出力データ信号ODATAiを出力する。
図2(A)に示した例では、セレクタDSEL−iは、イネーブル信号EN2が“1”(ハイレベル)である場合に転送データ信号SDATAiを出力し、イネーブル信号EN2が“0”(ローレベル)である場合に出力データ信号ODATAiを出力する。すなわち、データ入力側のフリップフロップ回路DFF−i及びセレクタDSEL−iは、信号EN2をイネーブル信号とするイネーブル信号付きのフリップフロップ回路に相当する。
【0023】
フリップフロップ回路201は、クロック信号CLKに同期して、入力されるイネーブル信号EN1を保持して出力し、フリップフロップ回路202は、クロック信号CLKに同期して、フリップフロップ回路201の出力を保持してイネーブル信号EN2として出力する。すなわち、フリップフロップ回路201、202により、入力されるイネーブル信号EN1が、クロック信号CLKの2サイクル後にイネーブル信号EN2として出力される。イネーブル信号EN1、EN2は、新たにデータ信号を保持する場合にハイレベルにアサートされる。なお、
図2(A)に示す回路において、イネーブル信号EN1のアサートは、必ず2サイクル以上のディアサート期間が挿入されるものとする。
【0024】
図2(B)は、
図2(A)に示した回路の動作例を示すタイミングチャートである。時刻T11において、入力されるイネーブル信号EN1がアサートされハイレベルになり、セレクタSSELは、入力データ信号IDATAをフリップフロップ回路SFFに出力する。イネーブル信号EN1がハイレベルになった後のクロック信号CLKの立ち上がりである時刻T12において、フリップフロップ回路SFFは、クロック信号CLKに同期して、入力データ信号IDATAを保持し、転送データ信号SDATAとして出力する。また、イネーブル信号EN1は、時刻T12においてディアサートされローレベルになる。
【0025】
時刻T12から1サイクル後のクロック信号CLKの立ち上がりである時刻T13において、イネーブル信号EN2がアサートされハイレベルになり、セレクタDSELは、転送データ信号SDATAをフリップフロップ回路DFFに出力する。イネーブル信号EN2がハイレベルになった後のクロック信号CLKの立ち上がりである時刻T14において、フリップフロップ回路DFFは、クロック信号CLKに同期して、転送データ信号SDATAを保持し、出力データ信号ODATAとして出力する。
【0026】
また、時刻T14において、イネーブル信号EN1が再びアサートされると、その後のクロック信号CLKの立ち上がりである時刻T15において、フリップフロップ回路SFFは、クロック信号CLKに同期して、入力データ信号IDATAを保持し、転送データ信号SDATAとして出力する。つまり、時刻T15において、転送データ信号SDATAが切り替わる。
【0027】
すなわち、
図2(B)に示した例では、時刻T12におけるクロック信号CLKの立ち上がりでイネーブル信号EN1のアサートを認識したデータ出力側のフリップフロップ回路SFFがデータを出力する。また、時刻T14におけるクロック信号CLKの立ち上がりでイネーブル信号EN2のアサートを認識したデータ入力側のフリップフロップ回路DFFがデータ出力側のフリップフロップ回路SFFの出力を保持する。また、時刻T15におけるクロック信号CLKの立ち上がりでイネーブル信号EN1のアサートを認識するまでデータ出力側のフリップフロップ回路SFFはデータを保持する。すなわち、
図2(A)に示した回路において、フリップフロップ回路DFFは、クロック信号CLKの1サイクル分のホールドマージンがあることとなる。
【0028】
本実施形態における回路設計方法では、ホールドマージンに注目し、対象のパスがクロック信号の1サイクル以上のホールドマージンを有し、かつ特定の条件を満たす場合に、データ出力側のフリップフロップ回路をラッチ回路に置き換え最適化する。
図1に示すように、まずステップS101において、外部記憶装置等から読み出した設計対象の半導体集積回路のタイミング情報11に基づいて、対象のパスにおいてデータ出力側のフリップフロップ回路(
図2(A)に示した例ではフリップフロップ回路SFF)によるホールドマージンがあるか否かを判断する。すなわち、データ入力側のフリップフロップ回路について、ホールドタイムに関し、クロック信号の1サイクル以上の余裕があるか否かを判断する。タイミング情報11としては、半導体集積回路に係るタイミング情報のうち、少なくともホールドマージンに関する情報が含まれていれば良い。
【0029】
また、タイミング情報11としてタイミング制約が記載されたSDC(Synopsys Design Constraints)ファイルのようなタイミング解析用の制約ファイルを参照し、ホールドマージンがあるか否かを判断するようにしても良い。例えば、SDCファイルでは、2サイクル以上でセットアップを受け渡す場合など、ホールドタイミングを含めタイミング解析の制約を緩和できる場合に使用する制約として、set_multicycle_path制約がある。set_multicycle_path制約では、「setup/hold」オプションによりセットアップタイム又はホールドタイムに関する緩和を指定でき、「start/end」オプションにより制約値がデータ出力側(start)又はデータ入力側(end)を指定できる。
【0030】
例えば、
図2(A)に示した回路に対しては、SDCのタイミング制約として、以下のようなset_multicycle_path制約を指定することができる。イネーブル信号EN1のアサートの2サイクル後にイネーブル信号EN2がアサートすることから、
set_multicycle_path -from SFF -to DFF -setup 2
を指定することができる。また、イネーブル信号EN1のアサートは必ず2サイクル以上のディアサート期間が挿入されることから、
set_multicycle_path -from SFF -to DFF -hold 2
を指定することができる。
【0031】
前述の例のようにset_multicycle_path制約でホールドタイムを緩和指定する場合には、指定されたパスにホールドマージンがあると解釈することができ、その指定されたパスではデータ出力側のフリップフロップ回路によるホールドマージンがあると判断することができる。このように、SDCファイルのようなタイミング解析用の制約ファイルに、例えば論理設計担当者等がホールドマージンを有するパスの情報を作成し記録しておくことで、対象のパスにデータ出力側のフリップフロップ回路による1サイクル以上のホールドマージンがあるか否かを判断する処理が容易となる。
【0032】
ステップS101での判断の結果、ホールドマージンがある場合には(S101のYes)、ステップS102において、外部記憶装置等から読み出したネットリストやRTL設計情報等の回路構成情報12に基づいて回路構成の解析を行う。回路構成の解析では、データ出力側のフリップフロップ回路におけるデータ出力条件の探索、及びデータ出力側のフリップフロップ回路からの出力データの接続先の探索を行う。データ出力側のフリップフロップ回路においてデータ出力条件(データの出力を許可する)となるイネーブル信号(
図2(A)に示した例ではイネーブル信号EN1)が存在するか否か、及びデータ出力側のフリップフロップ回路が出力するデータの出力先が1つであるか複数であるかをそれぞれ確認する。
【0033】
続いて、ステップS103において、ステップS102での回路構成の解析結果を基に、データ出力側のフリップフロップ回路をラッチ回路に置き換え可能であるか否かを判断する。ステップS102での回路構成の解析の結果、データ出力側のフリップフロップ回路においてデータ出力条件となるイネーブル信号が存在し、かつデータ出力側のフリップフロップ回路が出力するデータの出力先が1つである場合には、データ出力側のフリップフロップ回路をラッチ回路に置き換え可能であると判断する。また、データ出力側のフリップフロップ回路においてデータ出力条件となるイネーブル信号が存在し、かつデータ出力側のフリップフロップ回路が出力するデータの出力先が複数であるがすべての出力先についてホールドマージンが存在する場合には、データ出力側のフリップフロップ回路をラッチ回路に置き換え可能であると判断する。これら2つのケース以外の場合には、データ出力側のフリップフロップ回路のラッチ回路への置き換えはしないと判断する。
【0034】
ステップS103での判断の結果、データ出力側のフリップフロップ回路をラッチ回路に置き換え可能であると判断した場合には(S103のYes)、データ出力側のフリップフロップ回路(及びそれに対応するセレクタ)を、イネーブル信号をゲート信号として用いてラッチ回路に置き換える。そして、最適化した後のタイミング情報(例えばSDCファイル等)13を必要に応じて作成するともに、回路構成情報(ネットリストやRTL設計情報等)14を作成する。なお、作成した最適化後のタイミング情報13や回路構成情報14は、外部記憶装置等に記憶される。
【0035】
例えば、
図2(A)に示した回路は、本実施形態による回路設計方法を適用し最適化することで、データ出力側のフリップフロップ回路SFF及びセレクタSSELをラッチ回路に置き換え、
図3(A)に示すような回路が得られる。
図3(A)は、本実施形態における回路置き換え後の半導体集積回路の構成例を示す図である。
図3(A)において、
図2(A)に示した構成要素と同じ構成要素には同一の符号を付し、重複する説明は省略する。
【0036】
図3(A)に示すように、
図2(A)に示したデータ出力側のフリップフロップ回路SFF−i及びセレクタSSEL−iが、ラッチ回路SL−iに置き換えられている。ラッチ回路SL−iの各々は、
図9(A)に示したようなゲーテッドDラッチ回路である。ラッチ回路SL−iの各々は、入力されるイネーブル信号EN1がゲート信号として入力されるとともに、D入力として入力データ信号IDATAiが入力される。また、ラッチ回路SL−iの各々は、Q出力として転送データ信号SDATAiを出力する。
【0037】
図3(B)は、入力データIDATA及びイネーブル信号EN1が
図2(B)と同様に変化した場合の、
図3(A)に示した回路の動作例を示すタイミングチャートである。時刻T21において、入力されるイネーブル信号EN1がアサートされハイレベルになる。ゲート信号として入力されるイネーブル信号EN1がハイレベルになったことにより、ラッチ回路SLは、入力データ信号IDATAを転送データ信号SDATAとして出力する。続く、時刻T22において、ゲート信号として入力されるイネーブル信号EN1がディアサートされローレベルになったことにより、ラッチ回路SLは、イネーブル信号EN1がローレベルになったときの入力データ信号IDATAを保持し、転送データ信号SDATAとして出力する。
【0038】
時刻T22から1サイクル後のクロック信号CLKの立ち上がりである時刻T23において、イネーブル信号EN2がアサートされハイレベルになり、セレクタDSELは、転送データ信号SDATAをフリップフロップ回路DFFに出力する。イネーブル信号EN2がハイレベルになった後のクロック信号CLKの立ち上がりである時刻T24において、フリップフロップ回路DFFは、クロック信号CLKに同期して、転送データ信号SDATAを保持し、出力データ信号ODATAとして出力する。また、時刻T24において、ゲート信号として入力されるイネーブル信号EN1が再びアサートされハイレベルになると、ラッチ回路SLは、入力データ信号IDATAを転送データ信号SDATAとして出力する。
【0039】
すなわち、
図3(B)に示した例では、時刻T21におけるクロック信号CLKの立ち上がりでゲート信号として入力されるイネーブル信号EN1がアサートされると、ラッチ回路SLはデータを出力する。そして、時刻T22におけるクロック信号CLKの立ち上がりでイネーブル信号EN1がディアサートされると、ラッチ回路SLはその時のデータを保持する。また、時刻T24におけるクロック信号CLKの立ち上がりでイネーブル信号EN2のアサートを認識したフリップフロップ回路DFFがラッチ回路SLの出力を保持する。ラッチ回路SLは、ゲート信号として入力されるイネーブル信号EN1が再びアサートされるまでデータを保持する。
【0040】
データ入力側のフリップフロップ回路SFF(及びセレクタSSEL)をラッチ回路SLに置き換えても、
図3(B)に示したように、
図2(B)と同様のタイミングで出力データODATAを出力することができる。なお、
図3(A)に示すように、データ入力側のフリップフロップ回路SFF(及びセレクタSSEL)をラッチ回路SLに置き換えることで生じる信号の切り替わりタイミングによる影響を確認するには、変更した回路構成に沿ってタイミング制約を修正してタイミング解析を行えばよい。
【0041】
例えば、
図2(A)に示した回路を
図3(A)に示した回路に変更した場合には、
図2(A)に示した回路に対して指定することができる
set_multicycle_path -from SFF -to DFF -setup 2
set_multicycle_path -from SFF -to DFF -hold 2
との制約を、
set_multicycle_path -from SL -to DFF -setup 2
set_multicycle_path -from SL -to DFF -hold 1
と変更し、
図3(A)に示した回路に対して指定すれば良い。
【0042】
本実施形態によれば、半導体集積回路のタイミング情報及び回路構成情報を基に、ホールドマージンを有するパスを抽出し、抽出したパスの回路構成が特定の条件を満たす場合には、そのパスにおけるデータ出力側のフリップフロップ回路(及びセレクタ)をラッチ回路に置き換える。このようにしてホールドマージンを考慮した回路の最適化を行い、フリップフロップ回路を、追加回路を必要とせずにタイミング特性が異なるラッチ回路に置き換えることができ、回路面積を縮小することができるとともに、消費電力を低減することが可能となる。
【0043】
また、本実施形態による回路設計方法での最適化が適用可能な回路構成は、
図2(A)に示した回路構成に限定されるものではない。例えば、
図4に示すように、データ入力側のフリップフロップ回路SFF−i及びセレクタSSEL−iに代えて、イネーブル制御付きのフリップフロップ回路SFFA−iを用いた回路においても本実施形態による回路設計方法が適用可能である。前述した実施形態と同様に置き換えの条件を満たせば、イネーブル制御付きのフリップフロップ回路SFFA−iをラッチ回路SL−iに置き換え、
図4に示した回路を
図3(A)に示した回路のように最適化することができ、回路面積を縮小することができるとともに、消費電力を低減することが可能となる。
【0044】
また、例えば、
図5に示すように、データ入力側のセレクタSSEL−iに代えて、対応するフリップフロップ回路SFF−iへの入力を、論理積演算回路(AND回路)211−i、212−i、インバータ213−i、及び論理和演算回路(OR回路)214−iにより制御する回路においても本実施形態による回路設計方法が適用可能である。前述した実施形態と同様に置き換えの条件を満たせば、フリップフロップ回路SFF−i、AND回路211−i、212−i、インバータ213−i、及びOR回路214−iの組をラッチ回路SL−iに置き換え、
図5に示した回路を
図3(A)に示した回路のように最適化することができ、回路面積を縮小することができるとともに、消費電力を低減することが可能となる。
【0045】
なお、前述した例では、データ出力側のフリップフロップ回路とデータ入力側のフリップフロップ回路とを同一クロックドメインとしているが、次の条件を満たす場合には、データ出力側のフリップフロップ回路とデータ入力側のフリップフロップ回路とが異なるクロックドメインのものであっても、本実施形態を適用可能である。データ出力側のフリップフロップ回路のクロック信号で1サイクル以上のホールドマージンが存在し、かつ周波数が異なるクロック信号であっても一方のクロック信号の立ち上がりが他方のクロック信号の立ち上がりに揃う場合には、データ出力側のフリップフロップ回路からの出力データの接続先の探索に係る条件を満たせば、データ出力側のフリップフロップ回路をラッチ回路に置き換え可能である。
【0046】
前述した実施形態による回路設計方法は、
図6に示したようなコンピュータが、記憶部に記憶されたプログラムを実行することで実現でき、前記プログラムは本発明の実施形態に含まれる。また、コンピュータに前述した回路設計方法の各処理を実行させるプログラムを、例えばCD−ROMのような記録媒体に記録し、コンピュータに読み込ませることによって実現できるものであり、前記プログラムを記録した記録媒体は本発明の実施形態に含まれる。前記プログラムを記録する記録媒体としては、CD−ROM以外に、フレキシブルディスク、ハードディスク、磁気テープ、光磁気ディスク、不揮発性メモリカード等を用いることができる。
【0047】
また、コンピュータがプログラムを実行し処理を行うことにより、前述した回路設計方法の各処理が実現されるプログラムプロダクトは、本発明の実施形態に含まれる。前記プログラムプロダクトとしては、前述した回路設計方法の処理を実現するプログラム自体、前記プログラムが読み込まれたコンピュータがある。また、前記プログラムプロダクトとして、ネットワークを介して通信可能に接続されたコンピュータに前記プログラムを提供可能な送信装置、当該送信装置を備えるネットワークシステム等がある。
【0048】
また、供給されたプログラムがコンピュータにおいて稼動しているOS(オペレーティングシステム)又は他のアプリケーションソフト等と共同して前述した回路設計方法の処理が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。また、供給されたプログラムの処理のすべて又は一部がコンピュータの機能拡張ボードや機能拡張ユニットにより行われて前述した回路設計方法の処理が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。また、本発明をネットワーク環境で利用するべく、全部又は一部のプログラムが他のコンピュータで実行されるようになっていても良い。
【0049】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の諸態様を付記として以下に示す。
【0050】
(付記1)
半導体集積回路のタイミング情報に基づいて、第1のクロック信号で動作する第1のフリップフロップ回路の出力を受ける1つ以上のフリップフロップ回路について、ホールドタイムに関し前記第1のクロック信号の1サイクル以上の余裕があるか否かを判断する工程と、
前記半導体集積回路の回路構成情報に基づいて、前記第1のフリップフロップ回路におけるデータ出力条件及びデータ出力先を解析する工程と、
前記判断結果、前記1つ以上のフリップフロップ回路のホールドタイムに関して前記第1のクロック信号の1サイクル以上の余裕があり、かつ前記解析結果、前記第1のフリップフロップ回路におけるデータ出力条件及びデータ出力先が所定の条件を満たす場合に、前記第1のフリップフロップ回路をラッチ回路に置き換える工程とを有することを特徴とする回路設計方法。
(付記2)
前記タイミング情報は、前記半導体集積回路におけるタイミング制約が記載されたファイルから取得することを特徴とする付記1記載の回路設計方法。
(付記3)
前記第1のフリップフロップ回路を前記ラッチ回路に置き換えた際に、置き換え後の前記半導体集積回路のタイミング情報及び回路構成情報を作成することを特徴とする付記1又は2記載の回路設計方法。
(付記4)
前記第1のフリップフロップ回路におけるデータの出力条件の解析では、前記第1のフリップフロップ回路におけるデータ出力を許可する信号を有するか否かを判断し、
前記第1のフリップフロップのデータ出力先の解析では、前記第1のフリップフロップ回路のデータの出力先が前記1つ以上のフリップフロップ回路だけであるか否かを判断することを特徴とする付記1〜3の何れか1項に記載の回路設計方法。
(付記5)
前記1つ以上のフリップフロップ回路は第2のクロック信号で動作し、
前記第1のクロック信号と前記第2のクロック信号とは同じクロック信号であることを特徴とする付記1〜4の何れか1項に記載の回路設計方法。
(付記6)
前記1つ以上のフリップフロップ回路は第2のクロック信号で動作し、
前記第1のクロック信号と前記第2のクロック信号とは周波数が異なり、一方のクロック信号が他方のクロック信号の立ち上がりと同じタイミングで立ち上がることを特徴とする付記1〜4の何れか1項に記載の回路設計方法。
(付記7)
第1のクロック信号に同期した2サイクル以上のディアサート期間が挿入されてアサートされるイネーブル信号が供給され、前記イネーブル信号がアサートされているとき、前記第1のクロック信号に同期した入力データを出力し、前記イネーブル信号がディアサートされているとき、出力を保持するラッチ回路と、
第2のクロック信号に同期された前記イネーブル信号及び前記第2のクロック信号に応答して、前記ラッチ回路の出力を保持するフリップフロップ回路とを有することを特徴とする半導体集積回路。
(付記8)
半導体集積回路のタイミング情報に基づいて、第1のクロック信号で動作する第1のフリップフロップ回路の出力を受ける1つ以上のフリップフロップ回路について、ホールドタイムに関し前記第1のクロック信号の1サイクル以上の余裕があるか否かを判断するステップと、
前記半導体集積回路の回路構成情報に基づいて、前記第1のフリップフロップ回路におけるデータ出力条件及びデータ出力先を解析するステップと、
前記判断結果、前記1つ以上のフリップフロップ回路のホールドタイムに関して前記第1のクロック信号の1サイクル以上の余裕があり、かつ前記解析結果、前記第1のフリップフロップ回路におけるデータ出力条件及びデータ出力先が所定の条件を満たす場合に、前記第1のフリップフロップ回路をラッチ回路に置き換えるステップとをコンピュータに実行させることを特徴とするプログラム。