(57)【要約】【課題】ホールドマージンを考慮してフリップフロップ回路をラッチ回路に置き換え半導体集積回路を最適化する回路設計方法を提供する。【解決手段】半導体集積回路のタイミング情報に基づいて、データ入力側のフリップフロップ回路について、データ出力側のフリップフロップ回路によるホールマージンがあるか否かを判断し、回路構成情報に基づいて、データ出力側のフリップフロップ回路のデータ出力条件及び出力データの接続先を探索し、ホールマージンを有しかつ回路構成が所定の条件を満たす場合には、データ出力側のフリップフロップ回路をラッチ回路に置き換える。【選択図】図１
2015215851.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路のタイミング情報に基づいて、第１のクロック信号で動作する第１のフリップフロップ回路の出力を受ける１つ以上のフリップフロップ回路について、ホールドタイムに関し前記第１のクロック信号の１サイクル以上の余裕があるか否かを判断する工程と、
前記半導体集積回路の回路構成情報に基づいて、前記第１のフリップフロップ回路におけるデータ出力条件及びデータ出力先を解析する工程と、
前記判断結果、前記１つ以上のフリップフロップ回路のホールドタイムに関して前記第１のクロック信号の１サイクル以上の余裕があり、かつ前記解析結果、前記第１のフリップフロップ回路におけるデータ出力条件及びデータ出力先が所定の条件を満たす場合に、前記第１のフリップフロップ回路をラッチ回路に置き換える工程とを有することを特徴とする回路設計方法。
【請求項２】
前記タイミング情報は、前記半導体集積回路におけるタイミング制約が記載されたファイルから取得することを特徴とする請求項１記載の回路設計方法。
【請求項３】
前記第１のフリップフロップ回路を前記ラッチ回路に置き換えた際に、置き換え後の前記半導体集積回路のタイミング情報及び回路構成情報を作成することを特徴とする請求項１又は２記載の回路設計方法。
【請求項４】
前記第１のフリップフロップ回路におけるデータの出力条件の解析では、前記第１のフリップフロップ回路におけるデータ出力を許可する信号を有するか否かを判断し、
前記第１のフリップフロップのデータ出力先の解析では、前記第１のフリップフロップ回路のデータの出力先が前記１つ以上のフリップフロップ回路だけであるか否かを判断することを特徴とする請求項１〜３の何れか１項に記載の回路設計方法。
【請求項５】
第１のクロック信号に同期した２サイクル以上のディアサート期間が挿入されてアサートされるイネーブル信号が供給され、前記イネーブル信号がアサートされているとき、前記第１のクロック信号に同期した入力データを出力し、前記イネーブル信号がディアサートされているとき、出力を保持するラッチ回路と、
第２のクロック信号に同期された前記イネーブル信号及び前記第２のクロック信号に応答して、前記ラッチ回路の出力を保持するフリップフロップ回路とを有することを特徴とする半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路設計方法及び半導体集積回路に関する。
【背景技術】
【０００２】
ＬＳＩ（Large Scale Integration）等の半導体集積回路は、クロックに同期した回路を実装されることが主流である。クロックに同期した回路を有する半導体集積回路の構成例を図７に示す。半導体集積回路７００は、例えば複数の機能を１つのチップ上に実装したＳｏＣ（System on a Chip）であり、複数の回路ブロック（回路モジュールＡ〜Ｄ）７０１Ａ〜７０１Ｄを有する。回路ブロック（回路モジュールＡ〜Ｄ）７０１Ａ〜７０１Ｄは、例えば位相ロックループ（ＰＬＬ：Phase Locked Loop）回路７０２から供給されるクロック信号ＣＬＫで動作するフリップフロップ回路を有する。
【０００３】
図７に示したような半導体集積回路におけるフリップフロップ回路には、例えば図８（Ａ）に示すＤ型フリップフロップ回路が用いられる。Ｄ型フリップフロップ回路は、入力データを保持する回路であり、図８（Ａ）に示すように接続された８個の否定論理積演算回路（ＮＡＮＤ回路）８０１〜８０８及び２つのインバータ８０９、８１０を有する。図８（Ａ）に示すＤ型フリップフロップ回路は、図８（Ｂ）に示すように、入力されるクロック信号ＣＫの立ち上がりエッジにおいて、Ｄ入力の値がＱ出力として保持される。このように、Ｄ型フリップフロップでは、データ保持にクロック信号ＣＫを用い、クロック駆動の度に電力が消費される。
【０００４】
入力データを保持する他の回路として、図９（Ａ）に示すようなゲーテッドＤラッチ回路がある。ゲーテッドＤラッチ回路は、図９（Ａ）に示すように接続された４個のＮＡＮＤ回路８２１〜８２４を有する。図９（Ａ）に示すゲーテッドＤラッチ回路は、図９（Ｂ）に示すように、入力されるゲート信号ＧがハイレベルであるときにＤ入力の値がＱ出力に伝わり、ゲート信号ＧがローレベルであるときにＱ出力を保持する。このように、ゲーテッドＤラッチ回路では、データ保持にゲート信号Ｇを用い、ゲート信号Ｇが変化したときに電力が消費される。
【０００５】
また、半導体集積回路は、タイミングを考慮して設計が行われる。半導体集積回路においてタイミング解析の対象となるパス（伝送経路）は、フリップフロップ回路からフリップフロップ回路へのパス、入力ポート（入力端子）からフリップフロップ回路へのパス、フリップフロップ回路から出力ポート（出力端子）へのパス、及び入力ポート（入力端子）から出力ポート（出力端子）へのパスの４つに大きく分けられる。
【０００６】
ここで、フリップフロップ回路は、入力されるクロック信号に同期して入力データを保持するため、クロック信号と入力データの入力タイミングについては、フリップフロップ回路が必要とするセットアップタイムやホールドタイムを満たすように実装する必要がある。例えば、フリップフロップ回路にて入力データが保持されるクロック信号のエッジに対して、フリップフロップ回路が必要とするホールドタイム以上の期間において入力データの値が切り替わらないように実装する。
【０００７】
そこで、半導体集積回路の設計では、例えばＳＤＣ（Synopsys Design Constraints）ファイルのようなタイミング解析用の制約ファイルにクロック定義や回路内の各パスのタイミング制約を記載し、タイミング解析ツールによりセットアップタイム違反やホールドタイム違反が起きないかを解析するタイミング解析を行う。そして、解析結果に応じてタイミング制約を満たすように回路の変更等を行う。
【０００８】
例えば、半導体集積回路において、一部のフリップフロップ回路を、入力データを出力側にスルーする状態を持つラッチ回路に置き換えることで、そのフリップフロップ回路の入力側にあった遅延の余裕分を後段に渡して最悪遅延を改善し遅延最適化を行う設計技術が提案されている（例えば、特許文献１〜３参照）。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００４−５６２３８号公報
【特許文献２】特開２０００−３０５９６２号公報
【特許文献３】特開平６−６８１９５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
フリップフロップ回路においてホールドタイム以上の入力データが切り替わらない期間はマージン（ホールドマージン）となる。例えば、半導体集積回路の論理設計の際に、フリップフロップ回路の入力データをフリップフロップ回路が保持するタイミング以降まで変化しないように設計することで、クロック周期以上のホールドマージンを設けることが可能である。前述の半導体集積回路の最適化技術では、フリップフロップ回路からラッチ回路への置き換えは、回路間のパスのタイミング制約を緩和するために行われており、ホールドマージンについては考慮されていない。本発明の目的は、ホールドマージンを考慮してフリップフロップ回路をラッチ回路に置き換え半導体集積回路を最適化する回路設計方法を提供することにある。
【課題を解決するための手段】
【００１１】
回路設計方法の一態様は、半導体集積回路のタイミング情報に基づいて、第１のクロック信号で動作する第１のフリップフロップ回路の出力を受ける１つ以上のフリップフロップ回路について、ホールドタイムに関し第１のクロック信号の１サイクル以上の余裕があるか否かを判断し、半導体集積回路の回路構成情報に基づいて、第１のフリップフロップ回路におけるデータ出力条件及びデータ出力先を解析する。判断結果、前記１つ以上のフリップフロップ回路のホールドタイムに関して余裕があり、かつ解析結果、第１のフリップフロップ回路におけるデータ出力条件及びデータ出力先が所定の条件を満たす場合に、第１のフリップフロップ回路をラッチ回路に置き換える。
【発明の効果】
【００１２】
開示の回路設計方法は、ホールドマージンを有し、かつ回路構成が所定の条件を満たす場合に、フリップフロップ回路をラッチ回路に置き換えることができ、ホールドマージンを考慮した回路の最適化を行うことが可能になる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態による回路設計方法の例を示すフローチャートである。
【図２】本実施形態における最適化対象の半導体集積回路の例を示す図である。
【図３】本実施形態における回路置き換え後の半導体集積回路の例を示す図である。
【図４】本実施形態における最適化対象の半導体集積回路の他の例を示す図である。
【図５】本実施形態における最適化対象の半導体集積回路の他の例を示す図である。
【図６】本実施形態による回路設計方法を実現可能なコンピュータの構成例を示す図である。
【図７】半導体集積回路の構成例を示す図である。
【図８】Ｄ型フリップフロップ回路の構成及び動作を説明するための図である。
【図９】ゲーテッドＤラッチ回路の構成及び動作を説明するための図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態を図面に基づいて説明する。
【００１５】
本発明の一実施形態による回路設計方法は、例えば図６に示すようなコンピュータ（設計装置）により実現でき、そのＣＰＵ（Central Processing Unit）により本実施形態による回路設計方法の動作が実施される。図６は、本実施形態による回路設計方法を実現可能なコンピュータ（設計装置）の構成例を示す図である。バス６０１には、ＣＰＵ６０２、ＲＯＭ（Read Only Memory）６０３、ＲＡＭ（Random Access Memory）６０４、ネットワークインターフェース６０５、入力装置６０６、出力装置６０７、及び外部記憶装置６０８が接続されている。
【００１６】
ＣＰＵ６０２は、データの処理や演算を行うとともに、バス６０１を介して接続された各構成要素を制御する。ＲＯＭ６０３には、予めブートプログラムが記憶されており、このブートプログラムをＣＰＵ６０２が実行することにより、コンピュータが起動する。外部記憶装置６０８にコンピュータプログラムが記憶されており、そのコンピュータプログラムがＲＡＭ６０４にコピーされてＣＰＵ６０２により実行することで、例えば本実施形態による回路設計方法の各処理等が行われる。ＲＡＭ６０４は、データの入出力、送受信のためのワークメモリ、各構成要素の制御のための一時記憶として用いられる。
【００１７】
外部記憶装置６０８は、例えばハードディスク記憶装置やＣＤ−ＲＯＭ等であり、電源を切っても記憶内容が消えない。ネットワークインターフェース６０５は、ネットワークに接続するためのインターフェースである。入力装置６０６は、例えばキーボードやポインティングデバイス（マウス）等であり、各種指定や入力等を行うことができる。出力装置６０７は、ディスプレイやプリンタ等であり、表示や印刷等を行うことができる。
【００１８】
以下、本実施形態による回路設計方法について説明する。本実施形態による回路設計方法において最適化対象となる半導体集積回路は、例えば図７に示したような複数の機能を１つのチップ上に実装したＳｏＣ（System on a Chip）に実装され、クロックに同期して動作するフリップフロップ回路を含む内部回路である。なお、以下では、本実施形態による回路設計方法が適用可能な半導体集積回路が有する回路構成のうち、最適化の説明に必要な一部の回路構成だけを示して説明するが、半導体集積回路は例えば組み合わせ回路等のその他の回路構成を有していても良い。
【００１９】
図１は、本実施形態による回路設計方法の例を示すフローチャートであり、図示した各処理は、例えば図６に示したコンピュータが有するＣＰＵ１００により実行される。図１に示す本実施形態による回路設計方法は、例えば半導体集積回路の開発におけるＲＴＬ（Register Transfer Language）設計又はレイアウト設計のタイミングで適用可能である。図２（Ａ）に構成を示す回路を一例に、図１に示す本実施形態による回路設計方法について説明する。
【００２０】
図２（Ａ）は、本実施形態における最適化対象の半導体集積回路の構成例を示す図である。図２（Ａ）には、データ出力側（転送元）のフリップフロップ回路ＳＦＦ−ｉ及びセレクタＳＳＥＬ−ｉと、データ入力側（転送先）のフリップフロップ回路ＤＦＦ−ｉ及びセレクタＤＳＥＬ−ｉと、フリップフロップ回路２０１、２０２とを有する回路を一例として示している。フリップフロップ回路ＳＦＦ−ｉ、ＤＦＦ−ｉ、２０１、２０２の各々は、図８（Ａ）に示したようなＤ型フリップフロップ回路である。なお、ｉは添え字であり、ｉ＝１〜Ｎ（Ｎは、例えば８、１６、３２、６４等）である（以下においても同様）。
【００２１】
データ出力側のフリップフロップ回路ＳＦＦ−ｉの各々は、クロック信号ＣＬＫに同期して、セレクタＳＳＥＬ−ｉの出力を保持し、転送データ信号ＳＤＡＴＡｉとして出力する。セレクタＳＳＥＬ−ｉの各々は、入力されるイネーブル信号ＥＮ１に応じて、入力データ信号ＩＤＡＴＡｉ又は転送データ信号ＳＤＡＴＡｉを出力する。図２（Ａ）に示した例では、セレクタＳＳＥＬ−ｉは、イネーブル信号ＥＮ１が“１”（ハイレベル）である場合に入力データ信号ＩＤＡＴＡｉを出力し、イネーブル信号ＥＮ１が“０”（ローレベル）である場合に転送データ信号ＳＤＡＴＡｉを出力する。すなわち、データ出力側のフリップフロップ回路ＳＦＦ−ｉ及びセレクタＳＳＥＬ−ｉは、信号ＥＮ１をイネーブル信号とするイネーブル信号付きのフリップフロップ回路に相当する。
【００２２】
データ入力側のフリップフロップ回路ＤＦＦ−ｉの各々は、クロック信号ＣＬＫに同期して、セレクタＤＳＥＬ−ｉの出力を保持し、出力データ信号ＯＤＡＴＡｉとして出力する。セレクタＤＳＥＬ−ｉの各々は、イネーブル信号ＥＮ２に応じて、転送データ信号ＳＤＡＴＡｉ又は出力データ信号ＯＤＡＴＡｉを出力する。図２（Ａ）に示した例では、セレクタＤＳＥＬ−ｉは、イネーブル信号ＥＮ２が“１”（ハイレベル）である場合に転送データ信号ＳＤＡＴＡｉを出力し、イネーブル信号ＥＮ２が“０”（ローレベル）である場合に出力データ信号ＯＤＡＴＡｉを出力する。すなわち、データ入力側のフリップフロップ回路ＤＦＦ−ｉ及びセレクタＤＳＥＬ−ｉは、信号ＥＮ２をイネーブル信号とするイネーブル信号付きのフリップフロップ回路に相当する。
【００２３】
フリップフロップ回路２０１は、クロック信号ＣＬＫに同期して、入力されるイネーブル信号ＥＮ１を保持して出力し、フリップフロップ回路２０２は、クロック信号ＣＬＫに同期して、フリップフロップ回路２０１の出力を保持してイネーブル信号ＥＮ２として出力する。すなわち、フリップフロップ回路２０１、２０２により、入力されるイネーブル信号ＥＮ１が、クロック信号ＣＬＫの２サイクル後にイネーブル信号ＥＮ２として出力される。イネーブル信号ＥＮ１、ＥＮ２は、新たにデータ信号を保持する場合にハイレベルにアサートされる。なお、図２（Ａ）に示す回路において、イネーブル信号ＥＮ１のアサートは、必ず２サイクル以上のディアサート期間が挿入されるものとする。
【００２４】
図２（Ｂ）は、図２（Ａ）に示した回路の動作例を示すタイミングチャートである。時刻Ｔ１１において、入力されるイネーブル信号ＥＮ１がアサートされハイレベルになり、セレクタＳＳＥＬは、入力データ信号ＩＤＡＴＡをフリップフロップ回路ＳＦＦに出力する。イネーブル信号ＥＮ１がハイレベルになった後のクロック信号ＣＬＫの立ち上がりである時刻Ｔ１２において、フリップフロップ回路ＳＦＦは、クロック信号ＣＬＫに同期して、入力データ信号ＩＤＡＴＡを保持し、転送データ信号ＳＤＡＴＡとして出力する。また、イネーブル信号ＥＮ１は、時刻Ｔ１２においてディアサートされローレベルになる。
【００２５】
時刻Ｔ１２から１サイクル後のクロック信号ＣＬＫの立ち上がりである時刻Ｔ１３において、イネーブル信号ＥＮ２がアサートされハイレベルになり、セレクタＤＳＥＬは、転送データ信号ＳＤＡＴＡをフリップフロップ回路ＤＦＦに出力する。イネーブル信号ＥＮ２がハイレベルになった後のクロック信号ＣＬＫの立ち上がりである時刻Ｔ１４において、フリップフロップ回路ＤＦＦは、クロック信号ＣＬＫに同期して、転送データ信号ＳＤＡＴＡを保持し、出力データ信号ＯＤＡＴＡとして出力する。
【００２６】
また、時刻Ｔ１４において、イネーブル信号ＥＮ１が再びアサートされると、その後のクロック信号ＣＬＫの立ち上がりである時刻Ｔ１５において、フリップフロップ回路ＳＦＦは、クロック信号ＣＬＫに同期して、入力データ信号ＩＤＡＴＡを保持し、転送データ信号ＳＤＡＴＡとして出力する。つまり、時刻Ｔ１５において、転送データ信号ＳＤＡＴＡが切り替わる。
【００２７】
すなわち、図２（Ｂ）に示した例では、時刻Ｔ１２におけるクロック信号ＣＬＫの立ち上がりでイネーブル信号ＥＮ１のアサートを認識したデータ出力側のフリップフロップ回路ＳＦＦがデータを出力する。また、時刻Ｔ１４におけるクロック信号ＣＬＫの立ち上がりでイネーブル信号ＥＮ２のアサートを認識したデータ入力側のフリップフロップ回路ＤＦＦがデータ出力側のフリップフロップ回路ＳＦＦの出力を保持する。また、時刻Ｔ１５におけるクロック信号ＣＬＫの立ち上がりでイネーブル信号ＥＮ１のアサートを認識するまでデータ出力側のフリップフロップ回路ＳＦＦはデータを保持する。すなわち、図２（Ａ）に示した回路において、フリップフロップ回路ＤＦＦは、クロック信号ＣＬＫの１サイクル分のホールドマージンがあることとなる。
【００２８】
本実施形態における回路設計方法では、ホールドマージンに注目し、対象のパスがクロック信号の１サイクル以上のホールドマージンを有し、かつ特定の条件を満たす場合に、データ出力側のフリップフロップ回路をラッチ回路に置き換え最適化する。図１に示すように、まずステップＳ１０１において、外部記憶装置等から読み出した設計対象の半導体集積回路のタイミング情報１１に基づいて、対象のパスにおいてデータ出力側のフリップフロップ回路（図２（Ａ）に示した例ではフリップフロップ回路ＳＦＦ）によるホールドマージンがあるか否かを判断する。すなわち、データ入力側のフリップフロップ回路について、ホールドタイムに関し、クロック信号の１サイクル以上の余裕があるか否かを判断する。タイミング情報１１としては、半導体集積回路に係るタイミング情報のうち、少なくともホールドマージンに関する情報が含まれていれば良い。
【００２９】
また、タイミング情報１１としてタイミング制約が記載されたＳＤＣ（Synopsys Design Constraints）ファイルのようなタイミング解析用の制約ファイルを参照し、ホールドマージンがあるか否かを判断するようにしても良い。例えば、ＳＤＣファイルでは、２サイクル以上でセットアップを受け渡す場合など、ホールドタイミングを含めタイミング解析の制約を緩和できる場合に使用する制約として、set_multicycle_path制約がある。set_multicycle_path制約では、「setup/hold」オプションによりセットアップタイム又はホールドタイムに関する緩和を指定でき、「start/end」オプションにより制約値がデータ出力側（start）又はデータ入力側（end）を指定できる。
【００３０】
例えば、図２（Ａ）に示した回路に対しては、ＳＤＣのタイミング制約として、以下のようなset_multicycle_path制約を指定することができる。イネーブル信号ＥＮ１のアサートの２サイクル後にイネーブル信号ＥＮ２がアサートすることから、
set_multicycle_path -from SFF -to DFF -setup 2
を指定することができる。また、イネーブル信号ＥＮ１のアサートは必ず２サイクル以上のディアサート期間が挿入されることから、
set_multicycle_path -from SFF -to DFF -hold 2
を指定することができる。
【００３１】
前述の例のようにset_multicycle_path制約でホールドタイムを緩和指定する場合には、指定されたパスにホールドマージンがあると解釈することができ、その指定されたパスではデータ出力側のフリップフロップ回路によるホールドマージンがあると判断することができる。このように、ＳＤＣファイルのようなタイミング解析用の制約ファイルに、例えば論理設計担当者等がホールドマージンを有するパスの情報を作成し記録しておくことで、対象のパスにデータ出力側のフリップフロップ回路による１サイクル以上のホールドマージンがあるか否かを判断する処理が容易となる。
【００３２】
ステップＳ１０１での判断の結果、ホールドマージンがある場合には（Ｓ１０１のＹｅｓ）、ステップＳ１０２において、外部記憶装置等から読み出したネットリストやＲＴＬ設計情報等の回路構成情報１２に基づいて回路構成の解析を行う。回路構成の解析では、データ出力側のフリップフロップ回路におけるデータ出力条件の探索、及びデータ出力側のフリップフロップ回路からの出力データの接続先の探索を行う。データ出力側のフリップフロップ回路においてデータ出力条件（データの出力を許可する）となるイネーブル信号（図２（Ａ）に示した例ではイネーブル信号ＥＮ１）が存在するか否か、及びデータ出力側のフリップフロップ回路が出力するデータの出力先が１つであるか複数であるかをそれぞれ確認する。
【００３３】
続いて、ステップＳ１０３において、ステップＳ１０２での回路構成の解析結果を基に、データ出力側のフリップフロップ回路をラッチ回路に置き換え可能であるか否かを判断する。ステップＳ１０２での回路構成の解析の結果、データ出力側のフリップフロップ回路においてデータ出力条件となるイネーブル信号が存在し、かつデータ出力側のフリップフロップ回路が出力するデータの出力先が１つである場合には、データ出力側のフリップフロップ回路をラッチ回路に置き換え可能であると判断する。また、データ出力側のフリップフロップ回路においてデータ出力条件となるイネーブル信号が存在し、かつデータ出力側のフリップフロップ回路が出力するデータの出力先が複数であるがすべての出力先についてホールドマージンが存在する場合には、データ出力側のフリップフロップ回路をラッチ回路に置き換え可能であると判断する。これら２つのケース以外の場合には、データ出力側のフリップフロップ回路のラッチ回路への置き換えはしないと判断する。
【００３４】
ステップＳ１０３での判断の結果、データ出力側のフリップフロップ回路をラッチ回路に置き換え可能であると判断した場合には（Ｓ１０３のＹｅｓ）、データ出力側のフリップフロップ回路（及びそれに対応するセレクタ）を、イネーブル信号をゲート信号として用いてラッチ回路に置き換える。そして、最適化した後のタイミング情報（例えばＳＤＣファイル等）１３を必要に応じて作成するともに、回路構成情報（ネットリストやＲＴＬ設計情報等）１４を作成する。なお、作成した最適化後のタイミング情報１３や回路構成情報１４は、外部記憶装置等に記憶される。
【００３５】
例えば、図２（Ａ）に示した回路は、本実施形態による回路設計方法を適用し最適化することで、データ出力側のフリップフロップ回路ＳＦＦ及びセレクタＳＳＥＬをラッチ回路に置き換え、図３（Ａ）に示すような回路が得られる。図３（Ａ）は、本実施形態における回路置き換え後の半導体集積回路の構成例を示す図である。図３（Ａ）において、図２（Ａ）に示した構成要素と同じ構成要素には同一の符号を付し、重複する説明は省略する。
【００３６】
図３（Ａ）に示すように、図２（Ａ）に示したデータ出力側のフリップフロップ回路ＳＦＦ−ｉ及びセレクタＳＳＥＬ−ｉが、ラッチ回路ＳＬ−ｉに置き換えられている。ラッチ回路ＳＬ−ｉの各々は、図９（Ａ）に示したようなゲーテッドＤラッチ回路である。ラッチ回路ＳＬ−ｉの各々は、入力されるイネーブル信号ＥＮ１がゲート信号として入力されるとともに、Ｄ入力として入力データ信号ＩＤＡＴＡｉが入力される。また、ラッチ回路ＳＬ−ｉの各々は、Ｑ出力として転送データ信号ＳＤＡＴＡｉを出力する。
【００３７】
図３（Ｂ）は、入力データＩＤＡＴＡ及びイネーブル信号ＥＮ１が図２（Ｂ）と同様に変化した場合の、図３（Ａ）に示した回路の動作例を示すタイミングチャートである。時刻Ｔ２１において、入力されるイネーブル信号ＥＮ１がアサートされハイレベルになる。ゲート信号として入力されるイネーブル信号ＥＮ１がハイレベルになったことにより、ラッチ回路ＳＬは、入力データ信号ＩＤＡＴＡを転送データ信号ＳＤＡＴＡとして出力する。続く、時刻Ｔ２２において、ゲート信号として入力されるイネーブル信号ＥＮ１がディアサートされローレベルになったことにより、ラッチ回路ＳＬは、イネーブル信号ＥＮ１がローレベルになったときの入力データ信号ＩＤＡＴＡを保持し、転送データ信号ＳＤＡＴＡとして出力する。
【００３８】
時刻Ｔ２２から１サイクル後のクロック信号ＣＬＫの立ち上がりである時刻Ｔ２３において、イネーブル信号ＥＮ２がアサートされハイレベルになり、セレクタＤＳＥＬは、転送データ信号ＳＤＡＴＡをフリップフロップ回路ＤＦＦに出力する。イネーブル信号ＥＮ２がハイレベルになった後のクロック信号ＣＬＫの立ち上がりである時刻Ｔ２４において、フリップフロップ回路ＤＦＦは、クロック信号ＣＬＫに同期して、転送データ信号ＳＤＡＴＡを保持し、出力データ信号ＯＤＡＴＡとして出力する。また、時刻Ｔ２４において、ゲート信号として入力されるイネーブル信号ＥＮ１が再びアサートされハイレベルになると、ラッチ回路ＳＬは、入力データ信号ＩＤＡＴＡを転送データ信号ＳＤＡＴＡとして出力する。
【００３９】
すなわち、図３（Ｂ）に示した例では、時刻Ｔ２１におけるクロック信号ＣＬＫの立ち上がりでゲート信号として入力されるイネーブル信号ＥＮ１がアサートされると、ラッチ回路ＳＬはデータを出力する。そして、時刻Ｔ２２におけるクロック信号ＣＬＫの立ち上がりでイネーブル信号ＥＮ１がディアサートされると、ラッチ回路ＳＬはその時のデータを保持する。また、時刻Ｔ２４におけるクロック信号ＣＬＫの立ち上がりでイネーブル信号ＥＮ２のアサートを認識したフリップフロップ回路ＤＦＦがラッチ回路ＳＬの出力を保持する。ラッチ回路ＳＬは、ゲート信号として入力されるイネーブル信号ＥＮ１が再びアサートされるまでデータを保持する。
【００４０】
データ入力側のフリップフロップ回路ＳＦＦ（及びセレクタＳＳＥＬ）をラッチ回路ＳＬに置き換えても、図３（Ｂ）に示したように、図２（Ｂ）と同様のタイミングで出力データＯＤＡＴＡを出力することができる。なお、図３（Ａ）に示すように、データ入力側のフリップフロップ回路ＳＦＦ（及びセレクタＳＳＥＬ）をラッチ回路ＳＬに置き換えることで生じる信号の切り替わりタイミングによる影響を確認するには、変更した回路構成に沿ってタイミング制約を修正してタイミング解析を行えばよい。
【００４１】
例えば、図２（Ａ）に示した回路を図３（Ａ）に示した回路に変更した場合には、図２（Ａ）に示した回路に対して指定することができる
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
と変更し、図３（Ａ）に示した回路に対して指定すれば良い。
【００４２】
本実施形態によれば、半導体集積回路のタイミング情報及び回路構成情報を基に、ホールドマージンを有するパスを抽出し、抽出したパスの回路構成が特定の条件を満たす場合には、そのパスにおけるデータ出力側のフリップフロップ回路（及びセレクタ）をラッチ回路に置き換える。このようにしてホールドマージンを考慮した回路の最適化を行い、フリップフロップ回路を、追加回路を必要とせずにタイミング特性が異なるラッチ回路に置き換えることができ、回路面積を縮小することができるとともに、消費電力を低減することが可能となる。
【００４３】
また、本実施形態による回路設計方法での最適化が適用可能な回路構成は、図２（Ａ）に示した回路構成に限定されるものではない。例えば、図４に示すように、データ入力側のフリップフロップ回路ＳＦＦ−ｉ及びセレクタＳＳＥＬ−ｉに代えて、イネーブル制御付きのフリップフロップ回路ＳＦＦＡ−ｉを用いた回路においても本実施形態による回路設計方法が適用可能である。前述した実施形態と同様に置き換えの条件を満たせば、イネーブル制御付きのフリップフロップ回路ＳＦＦＡ−ｉをラッチ回路ＳＬ−ｉに置き換え、図４に示した回路を図３（Ａ）に示した回路のように最適化することができ、回路面積を縮小することができるとともに、消費電力を低減することが可能となる。
【００４４】
また、例えば、図５に示すように、データ入力側のセレクタＳＳＥＬ−ｉに代えて、対応するフリップフロップ回路ＳＦＦ−ｉへの入力を、論理積演算回路（ＡＮＤ回路）２１１−ｉ、２１２−ｉ、インバータ２１３−ｉ、及び論理和演算回路（ＯＲ回路）２１４−ｉにより制御する回路においても本実施形態による回路設計方法が適用可能である。前述した実施形態と同様に置き換えの条件を満たせば、フリップフロップ回路ＳＦＦ−ｉ、ＡＮＤ回路２１１−ｉ、２１２−ｉ、インバータ２１３−ｉ、及びＯＲ回路２１４−ｉの組をラッチ回路ＳＬ−ｉに置き換え、図５に示した回路を図３（Ａ）に示した回路のように最適化することができ、回路面積を縮小することができるとともに、消費電力を低減することが可能となる。
【００４５】
なお、前述した例では、データ出力側のフリップフロップ回路とデータ入力側のフリップフロップ回路とを同一クロックドメインとしているが、次の条件を満たす場合には、データ出力側のフリップフロップ回路とデータ入力側のフリップフロップ回路とが異なるクロックドメインのものであっても、本実施形態を適用可能である。データ出力側のフリップフロップ回路のクロック信号で１サイクル以上のホールドマージンが存在し、かつ周波数が異なるクロック信号であっても一方のクロック信号の立ち上がりが他方のクロック信号の立ち上がりに揃う場合には、データ出力側のフリップフロップ回路からの出力データの接続先の探索に係る条件を満たせば、データ出力側のフリップフロップ回路をラッチ回路に置き換え可能である。
【００４６】
前述した実施形態による回路設計方法は、図６に示したようなコンピュータが、記憶部に記憶されたプログラムを実行することで実現でき、前記プログラムは本発明の実施形態に含まれる。また、コンピュータに前述した回路設計方法の各処理を実行させるプログラムを、例えばＣＤ−ＲＯＭのような記録媒体に記録し、コンピュータに読み込ませることによって実現できるものであり、前記プログラムを記録した記録媒体は本発明の実施形態に含まれる。前記プログラムを記録する記録媒体としては、ＣＤ−ＲＯＭ以外に、フレキシブルディスク、ハードディスク、磁気テープ、光磁気ディスク、不揮発性メモリカード等を用いることができる。
【００４７】
また、コンピュータがプログラムを実行し処理を行うことにより、前述した回路設計方法の各処理が実現されるプログラムプロダクトは、本発明の実施形態に含まれる。前記プログラムプロダクトとしては、前述した回路設計方法の処理を実現するプログラム自体、前記プログラムが読み込まれたコンピュータがある。また、前記プログラムプロダクトとして、ネットワークを介して通信可能に接続されたコンピュータに前記プログラムを提供可能な送信装置、当該送信装置を備えるネットワークシステム等がある。
【００４８】
また、供給されたプログラムがコンピュータにおいて稼動しているＯＳ（オペレーティングシステム）又は他のアプリケーションソフト等と共同して前述した回路設計方法の処理が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。また、供給されたプログラムの処理のすべて又は一部がコンピュータの機能拡張ボードや機能拡張ユニットにより行われて前述した回路設計方法の処理が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。また、本発明をネットワーク環境で利用するべく、全部又は一部のプログラムが他のコンピュータで実行されるようになっていても良い。
【００４９】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の諸態様を付記として以下に示す。
【００５０】
（付記１）
半導体集積回路のタイミング情報に基づいて、第１のクロック信号で動作する第１のフリップフロップ回路の出力を受ける１つ以上のフリップフロップ回路について、ホールドタイムに関し前記第１のクロック信号の１サイクル以上の余裕があるか否かを判断する工程と、
前記半導体集積回路の回路構成情報に基づいて、前記第１のフリップフロップ回路におけるデータ出力条件及びデータ出力先を解析する工程と、
前記判断結果、前記１つ以上のフリップフロップ回路のホールドタイムに関して前記第１のクロック信号の１サイクル以上の余裕があり、かつ前記解析結果、前記第１のフリップフロップ回路におけるデータ出力条件及びデータ出力先が所定の条件を満たす場合に、前記第１のフリップフロップ回路をラッチ回路に置き換える工程とを有することを特徴とする回路設計方法。
（付記２）
前記タイミング情報は、前記半導体集積回路におけるタイミング制約が記載されたファイルから取得することを特徴とする付記１記載の回路設計方法。
（付記３）
前記第１のフリップフロップ回路を前記ラッチ回路に置き換えた際に、置き換え後の前記半導体集積回路のタイミング情報及び回路構成情報を作成することを特徴とする付記１又は２記載の回路設計方法。
（付記４）
前記第１のフリップフロップ回路におけるデータの出力条件の解析では、前記第１のフリップフロップ回路におけるデータ出力を許可する信号を有するか否かを判断し、
前記第１のフリップフロップのデータ出力先の解析では、前記第１のフリップフロップ回路のデータの出力先が前記１つ以上のフリップフロップ回路だけであるか否かを判断することを特徴とする付記１〜３の何れか１項に記載の回路設計方法。
（付記５）
前記１つ以上のフリップフロップ回路は第２のクロック信号で動作し、
前記第１のクロック信号と前記第２のクロック信号とは同じクロック信号であることを特徴とする付記１〜４の何れか１項に記載の回路設計方法。
（付記６）
前記１つ以上のフリップフロップ回路は第２のクロック信号で動作し、
前記第１のクロック信号と前記第２のクロック信号とは周波数が異なり、一方のクロック信号が他方のクロック信号の立ち上がりと同じタイミングで立ち上がることを特徴とする付記１〜４の何れか１項に記載の回路設計方法。
（付記７）
第１のクロック信号に同期した２サイクル以上のディアサート期間が挿入されてアサートされるイネーブル信号が供給され、前記イネーブル信号がアサートされているとき、前記第１のクロック信号に同期した入力データを出力し、前記イネーブル信号がディアサートされているとき、出力を保持するラッチ回路と、
第２のクロック信号に同期された前記イネーブル信号及び前記第２のクロック信号に応答して、前記ラッチ回路の出力を保持するフリップフロップ回路とを有することを特徴とする半導体集積回路。
（付記８）
半導体集積回路のタイミング情報に基づいて、第１のクロック信号で動作する第１のフリップフロップ回路の出力を受ける１つ以上のフリップフロップ回路について、ホールドタイムに関し前記第１のクロック信号の１サイクル以上の余裕があるか否かを判断するステップと、
前記半導体集積回路の回路構成情報に基づいて、前記第１のフリップフロップ回路におけるデータ出力条件及びデータ出力先を解析するステップと、
前記判断結果、前記１つ以上のフリップフロップ回路のホールドタイムに関して前記第１のクロック信号の１サイクル以上の余裕があり、かつ前記解析結果、前記第１のフリップフロップ回路におけるデータ出力条件及びデータ出力先が所定の条件を満たす場合に、前記第１のフリップフロップ回路をラッチ回路に置き換えるステップとをコンピュータに実行させることを特徴とするプログラム。
【符号の説明】
【００５１】
１１  タイミング情報
１２  回路構成情報
１３  タイミング情報（最適化後）
１４  回路構成情報（最適化後）
ＳＦＦ、ＳＦＦＡ、ＤＦＦ、２０１、２０２  フリップフロップ回路
ＳＬ  ラッチ回路
ＳＳＥＬ、ＤＳＥＬ  セレクタ
６０１  バス
６０２  ＣＰＵ
６０３  ＲＯＭ
６０４  ＲＡＭ
６０５  ネットワークインターフェース
６０６  入力装置
６０７  出力装置
６０８  外部記憶装置
【図１】
2015215851.tif 000003
【図２】
2015215851.tif 000004
【図３】
2015215851.tif 000005
【図４】
2015215851.tif 000006
【図５】
2015215851.tif 000007
【図６】
2015215851.tif 000008
【図７】
2015215851.tif 000009
【図８】
2015215851.tif 000010
【図９】
2015215851.tif 000011