(57)【特許請求の範囲】
【請求項１】
フリップフロップと、組み合わせ回路とを含む論理回路の遅延最適化システムであって、
ラッチに変換しない前記フリップフロップを選定するラッチ化フリップフロップ選定手段と、
前記ラッチ化フリップフロップ選定手段にて選定されなかった前記フリップフロップを、入力側の遅延余裕を出力側に貸し出すことが可能なスルー状態を有するラッチに変換するラッチ変換手段とを含むことを特徴とする論理回路の遅延最適化システム。
【請求項２】
前記フリップフロップはクロックにおける第１レベルから第２レベルへの変化時のエッジに応じて入力されるデータを保持するものであり、前記ラッチ変換手段におけるラッチは前記クロックが前記第１のレベルを示している際の入力データを出力側にスルーするものであることを特徴とする請求項１記載の論理回路の遅延最適化システム。
【請求項３】
前記ラッチ変換手段におけるラッチとは異なる時間にスルー状態となる第２のラッチを論理回路の所定部分に挿入するラッチ挿入手段を含むことを特徴とする請求項１または２記載の論理回路の遅延最適化システム。
【請求項４】
前記ラッチ挿入手段における第２のラッチは前記クロックが前記第２のレベルを示している際の入力データを出力側にスルーするものであることを特徴とする請求項３記載の論理回路の遅延最適化システム。
【請求項５】
前記ラッチ挿入手段における第２のラッチは、前記ラッチ変換手段における
ラッチの出力側に設けられることを特徴とする請求項３または４記載の論理回路の遅延最適化システム。
【請求項６】
フリップフロップと、組み合わせ回路とを含む論理回路の遅延最適化方法であって、
ラッチに変換しない前記フリップフロップを選定するラッチ化フリップフロップ選定ステップと、
前記ラッチ化フリップフロップ選定ステップにて選定されなかった前記フリップフロップを、入力側の遅延余裕を出力側に貸し出すことが可能なスルー状態を有するラッチに変換するラッチ変換ステップとを含むことを特徴とする論理回路の遅延最適化方法。
【請求項７】
前記フリップフロップはクロックにおける第１レベルから第２レベルへの変化時のエッジに応じて入力されるデータを保持するものであり、前記ラッチ変換ステップにおけるラッチは前記クロックが前記第１のレベルを示している際の入力データを出力側にスルーするものであることを特徴とする請求項６記載の論理回路の遅延最適化方法。
【請求項８】
前記ラッチ変換ステップにおけるラッチとは異なる時間にスルー状態となる第２のラッチを論理回路の所定部分に挿入するラッチ挿入ステップを含むことを特徴とする請求項６または７記載の論理回路の遅延最適化方法。
【請求項９】
前記ラッチ挿入ステップにおける第２のラッチは前記クロックが前記第２のレベルを示している際の入力データを出力側にスルーするものであることを特徴とする請求項８記載の論理回路の遅延最適化方法。
【請求項１０】
前記ラッチ挿入ステップにおける第２のラッチは、前記ラッチ変換ステップにおけるラッチの出力側に設けられることを特徴とする請求項８または９記載の論理回路の遅延最適化方法。
【請求項１１】
フリップフロップと、組み合わせ回路とを含む論理回路の遅延最適化方法をコンピュータに実行させるためのプログラムであって、
ラッチに変換しない前記フリップフロップを選定するラッチ化フリップフロップ選定ステップと、
前記ラッチ化フリップフロップ選定ステップにて選定されなかった前記フリップフロップを、入力側の遅延余裕を出力側に貸し出すことが可能なスルー状態を有するラッチに変換するラッチ変換ステップとを含むことを特徴とするプログラム。
【請求項１２】
前記フリップフロップはクロックにおける第１レベルから第２レベルへの変化時のエッジに応じて入力されるデータを保持するものであり、前記ラッチ変換ステップにおけるラッチは前記クロックが前記第１のレベルを示している際の入力データを出力側にスルーするものであることを特徴とする請求項１１記載のプログラム。
【請求項１３】
前記ラッチ変換ステップにおけるラッチとは異なる時間にスルー状態となる第２のラッチを論理回路の所定部分に挿入するラッチ挿入ステップを含むことを特徴とする請求項１１または１２記載のプログラム。
【請求項１４】
前記ラッチ挿入ステップにおける第２のラッチは前記クロックが前記第２のレベルを示している際の入力データを出力側にスルーするものであることを特徴とする請求項１３記載のプログラム。
【請求項１５】
前記ラッチ挿入ステップにおける第２のラッチは、前記ラッチ変換ステップにおけるラッチの出力側に設けられることを特徴とする請求項１３または１４記載のプログラム
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、論理回路の遅延最適化システムおよびその最適化方法ならびに制御プログラムに関し、特に順序回路の遅延最適化システムおよびその最適化方法ならびに制御プログラムに関する。
【０００２】
【従来の技術】
論理回路の遅延最適化においては、フリップフロップやラッチに関する最適化を行う順序回路の遅延最適化手法と、フリップフロップやラッチの間に存在する組み合わせ回路部分の遅延最適化手法という２つの手法が存在する。本発明は順序回路の遅延最適化の方法に関する。
【０００３】
順序回路の遅延最適化としては、その一例が、特開平６−２９０２３２号公報( 以下、文献１という) に記載されているリタイミングという方法が存在する。
【０００４】
リタイミングに関しては、フリップフロップの位置を変更する事により、最悪遅延を改善しようとするものである。
【０００５】
【発明が解決しようとする課題】
しかし、この文献１記載の技術には、次のような欠点があった。第１の問題点は、文献１記載の技術ではフリップフロップの位置を変更してしまうので、当初の論理回路と最適化後の論理回路では、論理解析の中心となるフリップフロップの動作が変更されてしまう。したがって、当初の論理回路を設計した人が論理解析を行おうとした場合、対応が取り難いという欠点があった。
【０００６】
第２の問題点は、文献１記載の技術では、フリップフロップの位置を変更するだけで、遅延計算上は特に過不足が発生しないということである。
【０００７】
また、本発明と同様な方式として、特開２０００−３０５９６２号公報( 以下、文献２という) 記載の技術が挙げられる。本発明と文献２記載の技術の違いは、文献２記載の技術では、入力側に遅延余裕のあるフリップフロップしかラッチ変換の対象にしないということである。
【０００８】
そこで、本発明の目的は上記の問題点を解消し、フリップフロップの出力遅延、セットアップ時間およびクロックスキューの低減が可能で、しかも利用者から指定されなかった全フリップフロップ( 入力に遅延余裕のないフリップフロップを含む) をラッチに変換することが可能な論理回路の遅延最適化システムおよびその最適化方法ならびに制御プログラムを提供することにある。
【０００９】
【課題を解決するための手段】
本発明による論理回路の遅延最適化システムは、フリップフロップと、組み合わせ回路とを含む論理回路の遅延最適化システムであって、そのシステムはラッチに変換しない前記フリップフロップを選定するラッチ化フリップフロップ選定手段と、前記ラッチ化フリップフロップ選定手段にて選定されなかった前記フリップフロップを、入力側の遅延余裕を出力側に貸し出すことが可能なスルー状態を有するラッチに変換するラッチ変換手段とを含むことを特徴とする。
【００１０】
また本発明による論理回路の遅延最適化方法は、フリップフロップと、組み合わせ回路とを含む論理回路の遅延最適化方法であって、その方法はラッチに変換しない前記フリップフロップを選定するラッチ化フリップフロップ選定ステップと、前記ラッチ化フリップフロップ選定ステップにて選定されなかった前記フリップフロップを、入力側の遅延余裕を出力側に貸し出すことが可能なスルー状態を有するラッチに変換するラッチ変換ステップとを含むことを特徴とする。
【００１１】
また本発明によるプログラムは、フリップフロップと、組み合わせ回路とを含む論理回路の遅延最適化方法をコンピュータに実行させるためのプログラムであって、そのプログラムはラッチに変換しない前記フリップフロップを選定するラッチ化フリップフロップ選定ステップと、前記ラッチ化フリップフロップ選定ステップにて選定されなかった前記フリップフロップを、入力側の遅延余裕を出力側に貸し出すことが可能なスルー状態を有するラッチに変換するラッチ変換ステップとを含むことを特徴とする。
【００１２】
すなわち、本発明によれば、フリップフロップの出力遅延、セットアップ時間およびクロックスキューの低減が可能で、しかも利用者から指定されなかった全フリップフロップ( 入力に遅延余裕のないフリップフロップを含む) をラッチに変換することが可能となる。
【００１３】
本発明は、論理回路内を検索し、フリップフロップを選択し、それをラッチに置き換えて、クロックスキューの遅延時間をキャンセルし、かつ入力側の遅延に関する余裕を出力側に貸し出す事で、最悪遅延の向上を達成する方法を提供するものである。
【００１４】
図１において、入力論理回路３１には、本発明で遅延時間を最適化しようとする論理回路が記憶されている。回路入力部２２は、入力論理回路３１を読み込み、内部ＤＢ３２に設定する。遅延解析部２３は、内部ＤＢ３２中の各回路素子に関する遅延計算を行う。ラッチ化ＦＦ選定部２４は、内部ＤＢ３２中のフリップフロップにおいて、入力装置１でラッチ変換をしないように非ラッチ化指定されているものを探す。ラッチ変換部２５は、非ラッチ化指定以外のフリップフロップをスルー状態を持つラッチに変換する。
【００１５】
ラッチはスルー状態を持つため、フリップフロップをラッチに変換すると最悪遅延は向上するものの、ＭＩＮ遅延補償（最小遅延補償）を満足出来なくなる。
【００１６】
これを満足するために、ラッチ挿入部２６は、先にラッチ変換部で使用したラッチとは反対の時間でスルーを行うラッチを、回路中の適当な部分に挿入する。回路出力部２７は遅延最適化後の論理回路を出力論理回路３３として出力する。記録媒体２８には論理回路の遅延最適化方法をコンピュータに実行させるためのプログラムが格納されている。
【００１７】
このようにラッチに変換した事により、クロックスキューのキャンセルと、元のフリップフロップの入力側にあった遅延の余裕分を後段に貸し出して最悪遅延の向上を行い、また反対の時間でスルーを行うラッチを必要な部分に挿入する事でＭＩＮ遅延も満足した回路に自動変換することが出来る。
【００１８】
【発明の実施の形態】
以下、本発明の実施の形態について添付図面を参照しながら説明する。図１は本発明に係る論理回路の遅延最適化システムの一実施例の構成図、図２は最適化対象の論理回路の一例の構成図、図３は、図４はラッチ変換後の論理回路の一例の構成図、図５はハイアクティブ・ ラッチ（ＨＬ）挿入後の論理回路の一例の構成図である。
【００１９】
まず、図２から図５について簡単に説明しておく。図２は最適化対象の論理回路の一例を示しており、フリップフロップ（ＦＦ）５ａ〜５ｆと、組み合わせ回路６ａ，６ｂとを含む順序回路で構成されている。図３はこの回路に対し非ラッチ化指定を行った後の回路の状態を示しており、一例としてフリップフロップ（ＦＦ）５ｇが非ラッチ化指定されたことを示している。図４はラッチ変換後の回路の状態を示しており、一例としてフリップフロップ（ＦＦ）５ｂ〜５ｆがラッチ（ＬＬ）７ａ〜７ｅにそれぞれ変換されたことを示している。図５はさらに一例としてハイアクティブ・ラッチ（ＨＬ）が挿入されたことを示している。
【００２０】
図１を参照すると、論理回路の遅延最適化システムはキーボード等の入力装置１と、プログラム制御により動作するデータ処理装置２と、情報を記憶する記憶装置３と、ディスプレイ装置等の出力装置４とを含んで構成されている。
【００２１】
記憶装置３は、入力論理回路３１と、内部ＤＢ( データベース) ３２と、出力論理回路３３と、ライブラリ３４と、遅延制約３５とを含んでいる。
【００２２】
入力論理回路３１は、図２に示すように、フリップフロップ（ＦＦ）５と組み合わせ回路６とから構成されているが、その他に論理回路の外部とのインターフェイスも存在する。しかし、本実施例ではそのインターフェイスは参照されないので、記述を省略する。なお、組み合わせ回路６ａ，６ｂは、ＡＮＤ，ＯＲ，インバータ、バッファと、それらを複合した論理回路素子との集合として構成されている。
【００２３】
内部ＤＢ３２は、論理回路の情報を、データ処理装置が扱いやすいように加工したものであり、論理回路中の各論理回路素子情報とそれらの接続情報、そして後述する遅延計算値を格納出来るようになっている。
【００２４】
出力論理回路３３は、最終的に変換された論理回路を保存したものである。ライブラリ３４は、後述する図７以降で表記している各論理回路素子９、フリップフロップ（ＦＦ）５、ラッチ（ＬＬ，ＨＬ）７，８に関する遅延情報を格納している。
【００２５】
遅延制約３５には、設計用の遅延制約が格納されている。具体的には、設計対象のクロックの情報（図８）と、論理回路の外部との入力インターフェイスにあたる部分の遅延値を到着時間として表示したものである。
【００２６】
データ処理装置２は、制御部２１と、回路入力部２２と、遅延解析部２３と、ラッチ化ＦＦ選定部２４と、ラッチ変換部２５と、ラッチ挿入部２６と、回路出力部２７と、記録媒体２８とを含んでいる。
【００２７】
制御部２１は、記録媒体２８に格納された遅延最適化処理のプログラムにしたがって回路入力部２２と、遅延解析部２３と、ラッチ化ＦＦ選定部２４と、ラッチ変換部２５と、ラッチ挿入部２６と、回路出力部２７とを呼び出す順番の制御を行う。
【００２８】
回路入力部２２は、入力論理回路３１を読み、内部ＤＢ３２に設定する。遅延解析部２３は、内部ＤＢ３２内の各論理回路素子についての遅延計算を行う。ラッチ化ＦＦ選定部２４は、論理回路中の全てのフリップフロップ（ＦＦ）５に対して、入力装置１から指定されたラッチ化しないフリップフロップ（ＦＦ）を探索し、その情報を非ラッチ化指定として内部ＤＢ３２に設定する。ここで、図３のフリップフロップ（ＦＦ）５ｇが非ラッチ化指定されたとする。
【００２９】
ラッチ変換部２５は、ラッチ化ＦＦ選定部２４で非ラッチ化指定されなかったフリップフロップ（ＦＦ）５ｂ〜５ｆを、入力側の遅延余裕を出力側に貸し出す事が出来るようなスルー状態を持つラッチ７に変換する。図４のローアクティブ・ ラッチ（ＬＬ）７ａ〜７ｅがこれに当たる。
【００３０】
ラッチ挿入部２６は、ラッチ変換部２５で変換されたラッチ（ＬＬ）７の出力側の適当な位置に、先にラッチ変換部２５で使用したラッチ（ＬＬ）７とは反対の時間でスルーを行うラッチ( ハイアクティブ・ ラッチ：ＨＬ) ８を、図５のように
挿入する。
【００３１】
回路出力部２７は、最終的に変換された内部ＤＢ３２を、出力論理回路３３として記憶装置中に出力する。
【００３２】
ここで、フリップフロップ（ＦＦ）およびラッチ（ＬＬ，ＨＬ）について簡単に説明しておく。フリップフロップ（ＦＦ）は、クロックがローレベルからハイレベルへの変化時のエッジに応じて入力されるデータを保持するもの、あるいはハイレベルからローレベルへの変化時のエッジに応じて入力されるデータを保持するものである。
【００３３】
一方、ラッチにはローアクティブ・ラッチ（ＬＬ）とハイアクティブ・ ラッチ（ＨＬ）とがある。ローアクティブ・ラッチ（ＬＬ）は、クロックがローレベルを示すときに入力されるデータを出力側にスルーする。そして、クロックがハイレベルに変化した際にはデータをロックし、その後ハイレベル中に入力データの変動があっても出力データは変動しない。ハイアクティブ・ラッチ（ＨＬ）は、クロックがハイレベルを示すときに入力されるデータを出力側にスルーする。そして、クロックがローレベルに変化した際にはデータをロックし、その後ローレベル中に入力データの変動があっても出力データは変動しない。
【００３４】
図６は論理回路の遅延最適化処理の一例を示すフローチャート、図７は論理回路の具体例の一例を示す回路図、図８はクロックサイクルと各時刻との対応を示す説明図、図９は到着時間の計算例を示す図、図１０はラッチ変換後の論理回路の具体例の一例を示す回路図、図１１はハイアクティブ・ラッチ（ＨＬ）挿入後の論理回路の具体例の一例を示す回路図である。
【００３５】
図７を参照すると、論理回路はフリップフロップ（ＦＦ）５ｍ〜５ｗ，５ｙと、ＡＮＤゲート９ａ，９ｃ，９ｅ，９ｈ，９ｊ，９ｍ，９ｎと、ＯＲゲート９ｂ，９ｄ，９ｆ，９ｇ，９ｉ，９ｋとを含んでいる。
【００３６】
図９を参照すると、図７の各構成部分に各々の到着時間が表示されている。図１０を参照すると、図７のフリップフロップ（ＦＦ）５ｏ〜５ｑおよびフリップフロップ（ＦＦ）７ｋがローアクティブ・ラッチ（ＬＬ）７ｆ〜７ｉおよびローアクティブ・ラッチ（ＬＬ）７ｋに変換されている。図１１を参照すると、図１０の論理回路にハイアクティブ・ラッチ（ＨＬ）８ｅ〜８ｉが挿入されている。
【００３７】
次に、図１及び図６を参照して本実施例の動作について詳細に説明する。入力装置１により指定された入力論理回路３１は、回路入力部２２により、内部ＤＢ３２に変換される（図６のステップＡ１）。入力論理回路３１として、図７の論理回路を例に取り、以下の説明を行う。また、遅延制約３５には、設計用の遅延制約が格納されている。  具体的には、設計対象のクロックの情報（図８）と、論理回路の入力部に対し、外部のフリップフロップからその部分までに要する遅延値を到着時間として記述している。
【００３８】
遅延解析部２３は、内部ＤＢ３２に対して遅延計算用の遅延制約の設定を行う（ステップＡ２）。具体的には、遅延制約は、到着時間と呼ばれ、論理回路の外部とのインターフェイスにあたる入力には遅延制約３５より対応する値を探し設定し、フリップフロップ（ＦＦ）５の出力には、フリップフロップの出力遅延値をライブラリ３４から検索し設定する。また、クロックの目標周期をＴｎｓとして記憶する。
【００３９】
本実施例では一例として、フリップフロップ（ＦＦ）の出力遅延値は１ｎｓ、セットアップ時間も１ｎｓ、クロックサイクルは８ｎｓ、クロックスキューは１ｎｓ、ラッチのスルー遅延は１ｎｓとして説明を行う。従って、フリップフロップ（ＦＦ）の出力には到着時間として１ｎｓが設定される。
【００４０】
次に遅延解析部２３は、全ての論理回路素子９の到着時間の計算を行う（ステップＡ３）。到着時間に関しては、論理回路の外部入力とフリップフロップ（ＦＦ）５の出力から、出力方向に向かって、各論理回路素子９に対して、式１を用いて計算される。
【００４１】
論理回路素子の到着時間  ＝ｍａｘ (各入力側の論理回路素子の到着時間  ＋入力ＰＩＮから出力ＰＩＮの遅延時間)     （１）
ここで、組み合わせ回路素子の入力ＰＩＮから出力ＰＩＮの遅延時間は、ライブラリ３４を用いて、各論理回路素子毎に計算されるが、本実施例の説明では、一律２ｎｓとする。
【００４２】
図９に、この計算の結果を示す。各論理回路素子９内に記入されている数値は、到着時間を示している。フリップフロップ（ＦＦ）５に関しては、上側にフリップフロップ（ＦＦ）５の出力ピンの到着時間を、下側に入力からの到着時間を示す。例えば、フリップフロップ（ＦＦ）５ｏに関しては、出力側の到着時間は、前記ライブラリに格納された値１ｎｓが設定されている。
【００４３】
論理回路素子９ｆの到着時間は、９ｆの遅延時間が２ｎｓなので、式（１）より、
到着時間＝ｍａｘ（  １+ ２, １+ ２） =  ３ｎｓ    （２）
と計算される。  このような処理を出力に向かって計算する事で全ての論理回路素子９とフリップフロップ（ＦＦ）５の到着時間が求められる。
【００４４】
ラッチ化ＦＦ選定部２４は、入力装置から設定される非ラッチ化の指定を設定する。このフリップフロップ（ＦＦ）はラッチ化しない（ステップＡ４）。ここで、フリップフロップ（ＦＦ）５ｍ，５ｎ，５ｓ，５ｖ、５ｗ，５ｙが非ラッチ化指定されたと仮定する。
【００４５】
ラッチ変換部２５は、非ラッチ化指定されていないフリップフロップ（５ｏ，５ｐ，５ｑ，５ｒ，５ｔ，５ｕ）を、入力側の遅延余裕を出力側に貸し出す事が出来るようなスルー状態を持つラッチ（図１０のフリップフロップ７ｆ，７ｇ，７ｈ，７ｉ，７ｊ，７ｋ）に変換する（ステップＡ５）。
【００４６】
ここで、  入力側の遅延余裕を、出力側に貸し出す事とは、具体的には次のようなことを表す。フリップフロップ（ＦＦ）５ｍ、５ｎから出る信号が、時刻Ａ（図８）にフリップフロップ（ＦＦ）５ｍ、５ｎを出発するとする。論理回路素子９ａの到着時間が３ｎｓなので、フリップフロップ（ＦＦ）５ｏには、時刻Ｂより先に到着している事になる。  しかし、フリップフロップ（ＦＦ）５ｏは、次のクロックの立ち上がりである時刻Ｃから、入力側の信号の変化を出力側へ伝播させる。
【００４７】
ここで、フリップフロップ（ＦＦ）５ｏを、クロックがローレベルの時にスルーし、クロックの立ち上がりでホールドするようなローアクティブ・ラッチ（ＬＬ）７ｆに変換すると、時刻Ａでフリップフロップ（ＦＦ）５ｍ、５ｎを出発した信号は、時刻Ｂになるとラッチ（ＬＬ）７f の出力側に信号伝播を開始する。
【００４８】
つまり、時刻ＢとＣの時間差だけ早く伝播する事が可能となる。
【００４９】
ラッチ挿入部２６は、先にラッチ変換部２５で使用したラッチ（ＬＬ）７とは反対の時間でスルーを行うラッチ（ＨＬ）８を、回路中のクロックの目標周期Ｔ近くの個所に挿入する（ステップＡ６）（図１１参照）。
【００５０】
図１１を参照すると、ＡＮＤゲート９ｅとフリップフロップ（ＦＦ）５ｓとの間にハイアクティブ・ ラッチ８ｅが、ＡＮＤゲート９ｈとローアクティブ・ ラッチ（ＬＬ）７ｊとの間にハイアクティブ・ ラッチ８ｇが、ＯＲゲート９ｉとＡＮＤゲート９ｊとの間にハイアクティブ・ ラッチ８ｆが、ＯＲゲート９ｉとＡＮＤゲート９ｊとの間にハイアクティブ・ ラッチ８ｆが、ローアクティブ・ ラッチ（ＬＬ）７ｊとＡＮＤゲート９ｊとの間にハイアクティブ・ ラッチ８ｈが、インバータ９ｌとＡＮＤゲート９ｍとの間にハイアクティブ・ ラッチ８ｉがそれぞれ挿入されている。
【００５１】
このハイアクティブ・ ラッチ（ＨＬ）８を挿入する理由は次の通りである。図１０を参照すると、ローアクティブ・ ラッチ（ＬＬ）７f をスルーした信号は、ＡＮＤゲート９ｅを経由し、フリップフロップ（ＦＦ）５ｓに到着する。ここで、本来、図８の時刻Ｃでフリップフロップ（ＦＦ）５ｏを出る信号を、時刻Ｅでフリップフロップ（ＦＦ）５ｓは受け取るはずであったが、ローアクティブ・ ラッチ（ＬＬ）７ｆがスルーしているため、時刻Ｃで受け取ってしまう事がある。
【００５２】
これを防ぐために、反対の時間でスルーを行うハイアクティブ・ ラッチ（ＨＬ）８を適当な位置に挿入する必要がある（ＭＩＮ遅延補償）。そこで、ハイアクティブ・ ラッチ（ＨＬ）８ｅをＡＮＤゲート９ｅとフリップフロップ（ＦＦ）５ｓとの間に挿入することにより、その信号は時刻Ｃから時刻Ｄまではハイアクティブ・ ラッチ（ＨＬ）８ｅをスルーすることになるため、フリップフロップ（ＦＦ）５ｓはその信号を時刻Ｅに受け取ることが可能となる。
【００５３】
そして、回路出力部２７が、出力論理回路３３として出力する（ステップＡ７）。
【００５４】
例えば、図９( 従来の論理回路) の場合のフリップフロップの利用時は、
クロック周期＝フリップフロップ（ＦＦ）への到着時間の最大値＋フリップフロップ  （ＦＦ）のセットアップ時間＋クロックスキュー＝  ９＋１＋１  ＝  １１ｎｓ
となる。なお、フリップフロップ（ＦＦ）への到着時間の最大値は、図９を参照するとフリップフロップ（ＦＦ）５ｕの９ｎｓであることが分かる。
【００５５】
それに比べて、図１１の本発明の論理回路では、図１２のようにクロック周期が８ｎｓで動作する。図１２は本発明の信号伝送のタイミングチャートである。
【００５６】
すなわち、図１１および図１２を参照すると、クロックの立ち上がり時刻Ａに本論理回路に入力された信号はフリップフロップ（ＦＦ）５ｍ（遅延値１ｎｓ）、ＡＮＤゲート９ａ（遅延値２ｎｓ）を通過し、クロックの立ち下がり時刻Ｂにローアクティブ・ ラッチ（ＬＬ）７ｆ（遅延値１ｎｓ）、ＯＲゲート９ｆ（遅延値２ｎｓ）、ＯＲゲート９ｉ（遅延値２ｎｓ）、ハイアクティブ・ ラッチ（ＨＬ）８ｆ（遅延値１ｎｓ）、ＡＮＤゲート９ｊ（遅延値２ｎｓ）を通過し、クロックの立ち下がり時刻ＤにＯＲゲート９ｋ（遅延値２ｎｓ）、ローアクティブ・ ラッチ（ＬＬ）７ｋ（遅延値１ｎｓ）、インバータ９ｌ（遅延値２ｎｓ）、ハイアクティブ・ ラッチ（ＨＬ）８ｉ（遅延値１ｎｓ）、ＡＮＤゲート９ｍ（遅延値２ｎｓ）を通過し、クロックの立ち下がり時刻ＦにＡＮＤゲート９ｎ（遅延値２ｎｓ）を通過する。そして、セットアップ時間（１ｎｓ）とクロックスキュー（１ｎｓ）の時間を加算すると正確にクロックの立ち上がり時刻Ｇとなる。
【００５７】
また、本発明と同様な方式として、前述の文献２記載の技術があるが、これは入力に余裕のあるフリップフロップしかラッチに変換しないので、図７の回路は図１３のようになる。図１３は従来のラッチ変換を採用した論理回路の一例の回路図である。
【００５８】
図１３を参照すると、入力側に遅延余裕のないフリップフロップ（ＦＦ）５ｕはラッチ変換されず、その結果フリップフロップ（ＦＦ）５ｕの出力側のパスがクリティカルパスになってしまう。その時のクロック周期は、
クロック周期＝フリップフロップ（ＦＦ）の遅延＋組み合わせ回路の遅延＋フリップフロップのセットアップ時間＋クロックスキュー  ＝ 1 + 6 + 1 + 1  ＝９ns
となり、本方式の８ｎｓより大きい値になってしまう。
【００５９】
次に、本発明に係る論理回路の遅延最適化方法をコンピュータに実行させるためのプログラムについて説明する。図１を参照すると、データ処理装置２は記録媒体２８を含んでいる。この記録媒体２８には図６にフローチャートで示す論理回路の遅延最適化処理のプログラムが格納されている。制御部２１は記録媒体２８からこのプログラムを読み出し、そのプログラムにしたがって回路入力部２２から回路出力部２７までを制御する。その制御の内容については既に述べたので説明を省略する。
【００６０】
【発明の効果】
以上説明したように本発明による論理回路の遅延最適化システムによれば、ラッチに変換しない前記フリップフロップを選定するラッチ化フリップフロップ選定手段と、前記ラッチ化フリップフロップ選定手段にて選定されなかった前記フリップフロップを、入力側の遅延余裕を出力側に貸し出すことが可能なスルー状態を有するラッチに変換するラッチ変換手段とを含むため、フリップフロップの出力遅延、セットアップ時間およびクロックスキューの低減が可能で、しかも利用者から指定されなかった全フリップフロップ( 入力に遅延余裕のないフリップフロップを含む) をラッチに変換することが可能となる。
【００６１】
また本発明による論理回路の遅延最適化方法およびプログラムも上記論理回路の遅延最適化システムと同様の効果を奏する。
【００６２】
すなわち、本発明によれば一部のフリップフロップをラッチに変更することにより、最悪遅延を改善する事が出来る。その理由は、フリップフロップをラッチに変更する事で、ラッチのスルーを利用し、クロックスキューのキャンセルと、フリップフロップの入力側にあった遅延の余裕を、フリップフロップの出力側に貸し出す事が出来るためである。
【図面の簡単な説明】
【図１】本発明に係る論理回路の遅延最適化システムの一実施例の構成図である。
【図２】最適化対象の論理回路の一例の構成図である。
【図３】非ラッチ化指定後の論理回路の一例の構成図である。
【図４】ラッチ変換後の論理回路の一例の構成図である。
【図５】ハイアクティブ・ ラッチ（ＨＬ）挿入後の論理回路の一例の構成図である。
【図６】論理回路の遅延最適化処理の一例を示すフローチャートである。
【図７】論理回路の具体例の一例を示す回路図である。
【図８】クロックサイクルと各時刻との対応を示す説明図である。
【図９】到着時間の計算例を示す図である。
【図１０】ラッチ変換後の論理回路の具体例の一例を示す回路図である。
【図１１】ハイアクティブ・ラッチ（ＨＬ）挿入後の論理回路の具体例の一例を示す回路図である。
【図１２】本発明の信号伝送のタイミングチャートである。
【図１３】従来のラッチ変換を採用した論理回路の一例の回路図である。
【符号の説明】
１  入力装置
２  データ処理装置
３  記憶装置
４  出力装置
２１  遅延制約
２２  回路入力部
２３  遅延解析部
２４  ラッチ化ＦＦ選定部
２５  ラッチ変換部
２６  ラッチ挿入部
２７  回路出力部
２８  記録媒体
３１  入力論理回路
３２  入力論理回路
３３  出力論理回路
３４  ライブラリ
３５  遅延制約
【図１】
0003695428.tif 000002
【図２】
0003695428.tif 000003
【図３】
0003695428.tif 000004
【図４】
0003695428.tif 000005
【図５】
0003695428.tif 000006
【図６】
0003695428.tif 000007
【図７】
0003695428.tif 000008
【図８】
0003695428.tif 000009
【図９】
0003695428.tif 000010
【図１０】
0003695428.tif 000011
【図１１】
0003695428.tif 000012
【図１２】
0003695428.tif 000013
【図１３】
0003695428.tif 000014