(57)【要約】    【課題】  階層構造を有する集積回路を最適化する際に、階層間を伝播するフリップフロップ間経路の伝播遅延の分配を不要とする、階層切り口を移動する集積回路階層設計システムを提供する。    【解決手段】  集積回路を構成する階層のうち、上位の階層を介して、下位の階層に含まれるフリップフロップ間に位置する回路を最適化するための、集積回路階層設計システムであって、回路上に位置する、上位の階層と下位の階層の境界である階層切り口をフリップフロップと回路との接続部近傍に移動して、回路を上位の階層又は下位の階層の一方に含めることにより、回路の伝播遅延分配を不要にする。【選択図】      図１
2006024053.tif 000002
【特許請求の範囲】
【請求項１】
集積回路を構成する階層のうち、上位の階層を介して、下位の階層に含まれるフリップフロップ間に位置する回路を最適化するための、集積回路階層設計システムであって、
前記回路上に位置する、前記上位の階層と前記下位の階層の境界である階層切り口を前記フリップフロップと前記回路との接続部近傍に移動し、
前記回路を前記上位の階層又は下位の階層の一方に含めることにより、前記回路の伝播遅延分配を不要にすることを特徴とする集積回路階層設計システム。
【請求項２】
前記階層切り口の前記移動後に、前記回路が前記上位の階層又は下位の階層の一方に含まれる割合を最小とするために、回路論理を等価に保ったまま回路の複製である多重化回路を挿入する回路多重化手段を備えることを特徴とする請求項１に記載の集積回路階層設計システム。
【請求項３】
前記回路がフリップフロップである場合、前記回路の入力に前記回路の名称又は前記回路の階層内での位置を記憶させるバッファ回路を挿入するバッファ挿入手段を備えることを特徴とする請求項２に記載の集積回路階層設計システム。
【請求項４】
前記フリップフロップ間に位置する回路上の信号伝播方向と逆方向側に位置する階層切り口を、前記逆方向側に配置されたフリップフロップの出力近傍に移動することを特徴とする請求項１に記載の集積回路階層設計システム。
【請求項５】
前記回路上の信号伝播方向側に位置する階層切り口を、前記信号伝播方向側に配置されたフリップフロップの入力近傍に移動することを特徴とする請求項４に記載の集積回路階層設計システム。
【請求項６】
前記下位の階層に含まれる信号伝播方向と逆方向側のフリップフロップが、前記フリップフロップ間に位置する回路と異なる他の複数の回路を介して他のフリップフロップに接続され、前記複数の回路及び前記フリップフロップが共に前記下位の階層に含まれ、前記複数の回路のうち何れか１つの回路の出力より分岐して接続された回路が前記上位の階層に含まれる場合、前記１つの回路の複製である多重化回路を、前記１つの回路と前記分岐して接続された回路の間に挿入すると共に、前記階層切り口の位置を前記多重化回路の入力に移動し、また前記分岐の位置を前記１つの回路の入力に変更することを特徴とする請求項１に記載の集積回路階層設計システム。
【請求項７】
前記フリップフロップの出力より分岐して接続された回路が前記上位の階層に含まれる場合、前記フリップフロップの複製である多重化回路を、前記フリップフロップと前記分岐して接続された回路の間に挿入すると共に、前記階層切り口の位置を前記多重化回路の出力に移動し、また前記分岐の位置を前記フリップフロップの入力に変更することを特徴とする請求項６に記載の集積回路階層設計システム。
【請求項８】
コンピュータ上で実行され、集積回路を構成する階層のうち、上位の階層を介して、下位の階層に含まれるフリップフロップ間に位置する回路を最適化するための、集積回路階層設計プログラムであって、
前記回路上に位置する、前記上位の階層と前記下位の階層の境界である階層切り口を前記フリップフロップと前記回路との接続部近傍に移動して、前記回路を前記上位の階層又は下位の階層の一方に含める機能を実行することを特徴とする集積回路階層設計プログラム。
【請求項９】
前記階層切り口の前記移動後に、前記回路が前記上位の階層又は下位の階層の一方に含まれる割合を最小とするために、回路論理を等価に保ったまま回路の複製である多重化回路を挿入する機能を有することを特徴とする請求項８に記載の集積回路階層設計プログラム。
【請求項１０】
前記回路がフリップフロップである場合、前記回路の入力に前記回路の名称又は前記回路の階層内での位置を記憶させるバッファ回路を挿入する機能を有することを特徴とする請求項９に記載の集積回路階層設計プログラム。
【請求項１１】
前記フリップフロップ間に位置する回路上の信号伝播方向と逆方向側に位置する階層切り口を、前記逆方向側に配置されたフリップフロップの出力近傍に移動する機能を有することを特徴とする請求項８に記載の集積回路階層設計プログラム。
【請求項１２】
前記回路上の信号伝播方向側に位置する階層切り口を、前記信号伝播方向側に配置されたフリップフロップの入力近傍に移動する機能を有することを特徴とする請求項１１に記載の集積回路階層設計プログラム。
【請求項１３】
前記下位の階層に含まれる信号伝播方向と逆方向側のフリップフロップが、前記フリップフロップ間に位置する回路と異なる他の複数の回路を介して他のフリップフロップに接続され、前記複数の回路及び前記フリップフロップが共に前記下位の階層に含まれ、前記複数の回路のうち何れか１つの回路の出力より分岐して接続された回路が前記上位の階層に含まれる場合、前記１つの回路の複製である多重化回路を、前記１つの回路と前記分岐して接続された回路の間に挿入すると共に、前記階層切り口の位置を前記多重化回路の入力に移動し、また前記分岐の位置を前記１つの回路の入力に変更する機能を有することを特徴とする請求項８に記載の集積回路階層設計プログラム。
【請求項１４】
前記フリップフロップの出力より分岐して接続された回路が前記上位の階層に含まれる場合、前記フリップフロップの複製である多重化回路を、前記フリップフロップと前記分岐して接続された回路の間に挿入すると共に、前記階層切り口の位置を前記多重化回路の出力に移動し、また前記分岐の位置を前記フリップフロップの入力に変更する機能を有することを特徴とする請求項１３に記載の集積回路階層設計プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は集積回路階層設計の最適化に関し、特に、階層間を接続するフリップフロップ間経路における、伝播遅延の分配を不要とする集積回路階層設計システム及び集積回路階層設計プログラムに関する。
【背景技術】
【０００２】
階層ブロックを含む大規模な集積回路を合成する際、階層構造を維持しつつ最適化が行われる。最適化においては、集積回路の動作周波数を決定するフリップフロップ間を伝播する信号の遅延解析が行われる。
【０００３】
この場合、階層毎に設計を行うために、複数の階層にまたがって伝播する信号では、信号伝播遅延を階層毎に分割する必要があり、精度を得ることの難しい、予測に頼る伝播遅延の計算が必要であった。
【０００４】
このような問題の解決に類する方法の一例が、例えば特開平０５−２５８００６号公報（特許文献１）、特開平０６−７６０１２号公報（特許文献２）、特開２００２−８３００２号公報（特許文献３）及び”ＨＤＬによるデジタル設計の基礎”、桜井至著、テクノプレス発行、１２８から１２９頁、図５−１８（非特許文献１）に記載されている。
【０００５】
特許文献１に開示される方法では、時刻格納手段によって、階層間のタイミングを定義し、階層間を伝播する信号の遅延分配を行うというものである。特許文献１の方法によれば、各階層間を信号が通過する時刻を設定した後に、設計を行う。すなわち、下位階層の設計を行う時点で、上位階層のタイミングを確定するようにすることにより、設計の後側で行う上位階層の設計を行った時点で、設計の前側で行った下位階層の設計とのタイミングの不一致に起因する問題は解決される。
【０００６】
また、特許文献２の方法では、階層展開参照データを用いて、階層間を伝播する信号の遅延分配を行うというものである。
【０００７】
また、特許文献３に開示される方法では、フリップフロップを抽出し、階層変更部で、階層間の伝播信号に関して、フリップフロップを経由しないような経路が存在しないように、フリップフロップの入力を階層切り口付近になるように、切り口を入れ、階層構造の変更を行うというものである。
【０００８】
特許文献３の方法によれば、入力端子からフリップフロップを経由せずに出力端子に至る経路の場合には、階層破壊や制約値再作成など特別な処理をすることなく、最適化処理を行うことができる。
【０００９】
図９に特許文献３の方法による最適化例を示す。
【００１０】
また、非特許文献１では、集積回路の動作周波数を決定するフリップフロップ間を伝播する信号のうち、特に信号伝播遅延値の最小化が難しい、階層にまたがって伝播する信号に関して、フリップフロップ間の信号伝播は、階層設計されているため、出力フリップフロップから階層出口、階層出口から階層入り口、階層入り口から入力フリップフロップまでに対して分配して扱う必要があることを指摘している。
【００１１】
さらに、非特許文献１では、外部の見積もり精度を向上させる目的で、ブロックの入出力に必ずフリップフロップによるレジスタを置く設計規則を推奨している。
【特許文献１】特開平０５−２５８００６号公報
【特許文献２】特開平０６−７６０１２号公報
【特許文献３】特開２００２−８３００２号公報
【非特許文献１】”ＨＤＬによるデジタル設計の基礎”、桜井至著、テクノプレス発行、１２８から１２９頁、図５−１８。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上述した従来の技術は、いずれも以下に述べるような問題点があった。
【００１３】
特許文献１に開示される方法では、時刻格納手段によって、階層間のタイミングを定義し、階層間を伝播する信号の遅延分配を行うというものである。特許文献１の方法は、分割された階層間を伝播する信号において、信号伝播遅延を複数に分割する必要があるという問題を解決するものではない。
【００１４】
また、特許文献１の方法の場合、下位階層の設計を完了して、上位階層設計を行った時点で、下位階層の設計に起因する問題をなくすることを課題としており、信号伝播遅延を複数に分割する必要があるという問題解決を狙ったものではない。
【００１５】
また、特許文献２の方法も同様であって、信号伝播遅延を複数に分割する必要があるという問題を解決するものではない。
【００１６】
また、特許文献３に開示される方法では、切り口を入れ階層構造を変化させることにより、入力端子からフリップフロップを経由せずに出力端子に至る経路があった場合に、階層構造を変化させる階層破壊や制約値再作成など特別な処理をすることなく、最適化処理を行うことができるというものである。
【００１７】
特許文献３の方法は階層構造を変化させるが、これは階層を通過するようなフリップフロップ間伝播信号の回避が目的であり、階層構造を変更した後においても、図９に示したように、少なくとも、フリップフロップから階層出口に至る経路及び階層出口から階層入り口に至る経路が残り、これら２つの経路に対する遅延の分配は避けられず、信号伝播遅延を複数に分割する必要があるという問題を解決するものではない。
【００１８】
また、非特許文献１では、外部の見積もり精度を向上させる目的で、ブロックの入出力に必ずフリップフロップによるレジスタを置く設計規則を推奨しているが、具体的な方法は明示されておらず、やはり、信号伝播遅延を複数に分割する必要があるという問題を解決するものではない。
【００１９】
本発明の第１の目的は、上記従来技術の欠点を解決し、階層構造を有する集積回路を最適化する際に、階層間を伝播するフリップフロップ間経路の伝播遅延の分配を不要とする、階層切り口を移動する集積回路階層設計システム及び集積回路階層設計プログラムを提供することにある。
【００２０】
本発明の第２の目的は、階層切り口の移動に伴う回路の階層外への移動を最小とする集積回路階層設計システム及び集積回路階層設計プログラムを提供することにある。
【００２１】
本発明の第３の目的は、上記階層構造の切り口を変更した際に、遅延検証、論理検証などを容易とする、回路構造の変換履歴を記憶する集積回路階層設計システム及び集積回路階層設計プログラムを提供することにある。
【課題を解決するための手段】
【００２２】
上記目的を達成するための本発明は、集積回路を構成する階層のうち、上位の階層を介して、下位の階層に含まれるフリップフロップ間に位置する回路を最適化するための、集積回路階層設計システムであって、前記回路上に位置する、前記上位の階層と前記下位の階層の境界である階層切り口を前記フリップフロップと前記回路との接続部近傍に移動して、前記回路を前記上位の階層又は下位の階層の一方に含めることにより、前記回路の伝播遅延分配を不要にする。
【００２３】
本発明によれば、最初に、下位の階層に含まれるフリップフロップ間に位置する回路を抽出する。次に、抽出された回路について、前記回路上に位置する、下位の階層と上位の階層との境界である階層切り口を特定する。下位の階層に含まれるフリップフロップ間に位置する回路が１つの下位の階層から、上位の階層に入り、他の下位の階層に入る場合には、回路上に位置する階層切り口は、２ヶ所ある。これら２ヶ所の階層切り口の各々について、回路上の位置を特定し、階層切り口の回路上の位置が、前記フリップフロップと回路との接続部近傍の場合には、階層切り口の移動は不要である。
【００２４】
階層切り口の回路上の位置が、前記フリップフロップと回路との接続部近傍でない場合には、階層切り口を前記回路と前記フリップフロップとの接続部に移動する。このようにすることにより、階層切り口移動前は、１つの下位の階層と、上位の階層と、他の下位の階層の３つの階層に含まれていた前記回路は、階層切り口移動後は１つの上位の階層だけに含まれる。このため、回路部の伝播遅延解析は、階層切り口移動前は、前記１つの下位の階層と、上位の階層と、他の下位の階層の３つに分割して行う必要のあったものが、階層切り口移動後は、前記上位の階層の１つにまとめて行うことができるようになり、前記回路の伝播遅延の分配は不要となる。
【発明の効果】
【００２５】
本発明の集積回路階層設計システム及び集積回路階層設計プログラムによれば、以下の効果が達成される。
【００２６】
第１に、集積回路を構成する階層のうち、上位の階層を介して、下位の階層に含まれるフリップフロップ間に位置する回路を最適化する場合、回路上に位置する、上位の階層と下位の階層の境界である階層切り口をフリップフロップと回路との接続部近傍に移動して、回路を上位の階層又は他の下位の階層の一方に含めることにより、フリップフロップ間を接続する回路の伝播遅延の分配が不要となり、最適化処理を容易に精度良く行うことができる。
【００２７】
第２に、回路論理を等価に保ったままで、回路を多重化することにより、階層切り口の移動に伴う回路の階層外への移動を最小とすることができる。
【００２８】
第３に、上記階層切り口の位置を移動した際にも、フリップフロップの位置を記憶するためのバッファを挿入することにより、フリップフロップを移動する前の状態で回路を検証することが可能となり、遅延検証、論理検証などを精度良く行うことができる。
【実施例】
【００２９】
以下、本発明の好適な実施例について図面を参照して詳細に説明する。
【００３０】
図１は、本実施例による集積回路階層設計システムの構成を示すブロック図である。
【００３１】
図１を参照すると、本実施例による集積回路階層設計システムは、階層化回路入力手段１と、階層間フリップフロップ（ＦＦ）伝播経路検索手段２と、検証用アンカーバッファ挿入手段３と、仮階層切り口移動手段４と、階層化回路判定手段５と、回路多重化手段６と、階層切り口移動手段７と、階層切り口回路出力手段８による構成となっている。
【００３２】
階層化回路入力手段１は、複数の下位階層ブロック回路と、これらの階層ブロック回路を接続する回路から構成される、遅延解析の対象とする回路を入力することができる。
【００３３】
階層間フリップフロップ伝播経路検索手段２は、階層の異なるフリップフロップ間の伝播信号経路を検索することができる。
【００３４】
検証用アンカーバッファ挿入手段３は、タイミング検証及び論理検証をする際のキーパラメータとなるフリップフロップの位置を記憶するためのバッファを、フリップフロップの入力の近傍に挿入することができる。
【００３５】
仮階層切り口移動手段４は、各階層間フリップフロップ間伝播信号経路に対して、階層の切り口がフリップフロップの入力、または出力の近傍になるように仮に移動することができる。
【００３６】
階層化回路判定手段５は、階層内の回路規模が予め設定した回路規模を上回るかどうかを判定し、上回ると判定した場合には階層切り口回路出力手段８に処理を移行し、そうでない場合は回路多重化手段６に処理を移行する。
【００３７】
回路多重化手段６は、階層切り口の移動によって、階層外に出る回路の割合を最小化するために、回路論理を等価に保ったまま回路の複製を行い、多重化回路を挿入することができる。
【００３８】
階層切り口移動手段７は、多重化された回路を対象に、階層の切り口を、各階層間フリップフロップ伝播信号経路に対して、フリップフロップの入力、あるいは出力の近傍になるように階層の切り口を移動することができる。
【００３９】
階層切り口回路出力手段８は、全ての階層間フリップフロップ伝播経路に対して、階層の切り口が、フリップフロップの入力、あるいは出力の近傍となるように階層の切り口を移動した回路を出力することができる。
【００４０】
次に、本実施例による集積回路階層設計システムの処理の流れを簡略に説明する。
【００４１】
図２は、本実施例による集積回路階層設計システムの処理の流れを示すフローチャートである。
【００４２】
図２を参照すると、最初に、階層化回路入力手段１が、回路を下位階層に属する回路と下位階層に属さない回路に分割した、階層化した回路を入力する（ステップ５０１）。
【００４３】
次に、入力された階層化回路に対して、階層間フリップフロップ伝播経路検索手段２は全ての下位階層間をまたがるフリップフロップ間経路を検出する（ステップ５０２）。
【００４４】
この際、検証用のバッファを検証用アンカーバッファ挿入手段３により予め挿入する（ステップ５０３）。
【００４５】
次に、仮階層切り口移動手段４で、階層切り口をフリップフロップ出力の近傍に仮に移動する（ステップ５０４）。
【００４６】
ここで階層化回路判定手段５により、階層内の回路規模が予め設定した回路規模を上回るかどうかを判定し、階層切り口を再度移動するための多重化などの回路操作が必要かどうかを判定する（ステップ５０５）。
【００４７】
判定の結果、階層切り口を移動するための回路操作が必要な場合には（ステップ５０６）、回路多重化手段６に処理を移行する。
【００４８】
回路多重化手段６では、仮階層切り口移動手段４で移動した切り口を階層内部に残る回路を増やす目的で階層切り口を移動するため、回路論理を等価に保ったまま回路の多重化を行う（ステップ５０７）。
【００４９】
回路の多重化後、ステップ５０５に戻る。
【００５０】
次に、判定の結果、階層切り口を移動するような操作が不要な場合は（ステップ５０６）、仮移動した階層切り口を新階層切り口とする（ステップ５０８）。
【００５１】
階層切り口移動手段７による対象ＦＦの入力側にバッファを挿入する（ステップ５０９）。
【００５２】
すべての下位階層間伝播経路に関して、遅延分配不要化が処理されているかどうかを、階層化回路判定手段５により判定する（ステップ５１０）。
【００５３】
判定の結果、処理されていない場合には、ステップ５０４に戻る。
【００５４】
判定の結果、全ての遅延分配不要化が処理されている場合には、階層切り口回路出力手段８により、結果を出力する（ステップ５１１）。
【００５５】
次に、図１を参照して、本実施例による集積回路階層設計システムの動作について詳細に説明する。
【００５６】
まず、階層化回路入力手段１が、複数の階層ブロック回路と、これらの階層ブロック回路間を接続する全ての回路を入力する。ここで階層ブロックは下位階層を言い換えた記述である。
【００５７】
次に、入力された回路の階層間を伝播する各信号伝播経路に沿って、その起点となるフリップフロップと、信号伝播経路、終点のフリップフロップを、階層間フリップフロップ伝播経路検索手段２で検索する。
【００５８】
なお、後から行うタイミング検証及び論理検証を容易にするために、フリップフロップの入力の近傍に、移動前のフリップフロップの位置を記憶するためのアンカーバッファを挿入する検証用アンカーバッファ挿入手段３が、ダミーの印を付けたバッファ（目印のための素子）を挿入する。検証用アンカーバッファ挿入手段３は、当該バッファに、近傍のフリップフロップの名称と所属階層名を確定できる識別情報を付与する。
【００５９】
このようにすることにより、フリップフロップが移動した後でも、移動前のフリップフロップの位置を容易に確定することができる。
【００６０】
次に、入力された回路に対して、仮階層切り口移動手段４が、全ての階層間フリップフロップ伝播経路に対して、階層の切り口がフリップフロップの入力の近傍、あるいは出力の近傍となるように、階層切り口を移動する。仮階層切り口移動手段４による階層切り口の移動は回路多重化前の仮の移動であって、最終の階層切り口の位置とならない場合がある。
【００６１】
階層化回路判定手段５は、階層内に残る回路規模が予め設定した回路規模を上回るかどうかを判定し、上回る場合には階層切り口回路出力手段８に処理が移り、そうでない場合は回路多重化手段６に処理を移行する。
【００６２】
また、回路多重化手段６を予め指定された回数の適用をしたものの、予め与えられた回路規模に満たない場合にも、階層切り口出力手段８に処理を移行する。
【００６３】
仮階層切り口移動手段４により、移動された切り口では、階層内に残る回路が非常に小さくなってしまうため、階層化回路判定手段５による判定の後、階層内に残る回路を増やす目的で、回路多重化手段６が回路を多重化する。
【００６４】
このように一部を多重化した回路に対して、改めてフリップフロップの入力の近傍、あるいは出力の近傍が階層の切り口になるように、階層の切り口を階層切り口移動手段７で移動させる。移動後、階層化回路判定手段５に処理を移し、多重化などが再度必要かどうかを判定する。
【００６５】
次に、以上に述べた集積回路階層設計システムの特長を説明する。
【００６６】
本発明の集積回路階層設計システムによれば、階層間をまたがるフリップフロップ間に位置する回路に対して、仮階層切り口移動手段４又は階層切り口移動手段７を用いて、階層切り口をフリップフロップと回路との接続部近傍に移動し、回路を上位の階層又は下位の階層の一方に含める。
【００６７】
このため、階層間をまたがるフリップフロップ間伝播経路に対して、フリップフロップから階層出口と、階層出口から階層入り口と、階層入り口からフリップフロップまでの３つの経路部での伝播遅延の調整を行う必要がなくなり、階層出口から階層入口迄の１つの伝播遅延の調整さえ行えばよい。
【００６８】
また、階層切り口の移動に伴って階層内に残る回路が極端に小さくなってしまう場合があるが、それを回路多重化手段６が、多重化によって防止する。一例であるが、ある回路では、仮階層切り口移動手段４を使うと、階層内に残る回路は全体の５％程度になってしまう。しかし、回路多重化手段７を使えば、多重化によって回路規模は全体で２４％増大するが、階層内に残る回路は８０％まで増加する。
【００６９】
さらに、このような階層切り口の移動によって、フリップフロップが多重化されたり、移動してしまうことによって、論理検証や遅延検証が困難、複雑になることが予想されるが、検証用アンカーバッファ挿入手段３が挿入するバッファによって、移動前のフリップフロップの位置を記憶するため、フリップフロップを移動する前の状態で回路を検証することが可能となり、検証が容易となる。
【００７０】
次に、本実施例による具体的な動作例について説明する。
【００７１】
図３は、本実施例を説明するための階層構造に構成された集積回路を示すブロック図である。
【００７２】
図３を参照すると、階層化回路入力手段１において入力された、階層構造を持つ回路において、階層間フリップフロップ伝播経路検索手段２により、階層Ｘ１００内のフリップフロップＡ（ＦＦＡ）１０１の出力から、階層Ｙ１５０内のフリップフロップＢ１０５の入力に至る経路が検索される。
【００７３】
この経路では、信号は階層Ｘ１００のフリップフロップＡ１０１から出力され、回路Ｐ１０２を経由して、階層切り口１１で階層Ｘ１００の外に出た後、上位階層Ｚ１０に属する回路Ｑ１０３を経由して、階層切り口１２で階層Ｙ１５０に入り、回路Ｒ１０４を経由して、フリップフロップＢ１０５の入力に伝播する。
【００７４】
このような経路の場合、階層を個別に設計するため、フリップフロップ間の遅延制約を、回路Ｐ１０２の伝播遅延Ｐと、回路Ｑ１０３の伝播遅延Ｑと、回路Ｒ１０４の伝播遅延Ｒに分配する必要がある。
【００７５】
ところが、この分配した遅延制約は、予測に基づいた分配か、実測に基づく制約しか与えられないため、分配を正確に決定することは非常に困難である。そのため、例えば、余裕のある（目標値よりも遅延の短い）伝播遅延Ｐに大きな値を制約として割り当てたり、余裕のない伝播遅延Ｑに厳しい制約を割り当てるなどの場合が発生する。
【００７６】
図４は、本実施例を説明するための階層切り口の移動を示す図である。
【００７７】
図４を参照すると、図３に示した階層Ｘ１００の階層切り口１１をフリップフロップＡ１０１の出力の近傍に移動し階層切り口１３に変更すると、切り口移動前の階層Ｘ１００は新しい階層Ｘ１１０に変更され、回路Ｐ１０２は階層Ｚ１０に含まれるようになる。
【００７８】
同様に、図３に示した階層Ｙ１５０の階層切り口１２をフリップフロップＢ１０５の入力の近傍に移動し、階層切り口１４に変更すると、切り口移動前の階層Ｙ１５０は新しい階層Ｙ１６０に変更され、回路Ｒ１０４は階層Ｚ１０に含まれるようになる。
【００７９】
このようにすることによって、回路Ｐ１０２、回路Ｑ１０３、回路Ｒ１０４が１つの階層に含まれるようになり、従来方法のような遅延制約の分配は不要となる。このような階層切り口の移動は、回路の多重化の操作前は、仮階層切り口移動手段４により、また、回路の多重化の操作以降は階層切り口移動手段７により行う。
【００８０】
しかし、このような階層切り口の移動は、常によい結果をもたらすとは限らない。
【００８１】
図５は、本実施例を説明するための階層切り口の移動を示す図である。
【００８２】
図５を参照すると、階層Ｗ２０に含まれる回路は、フリップフロップＣ２０１、回路Ｅ２０２、回路Ｆ２０３、フリップフロップＤ２０４、回路Ｈ２０５及び回路Ｇ２０６で構成される。回路Ｇ２０６は回路Ｅ２０２の出力より分岐している。
【００８３】
なお、階層Ｗ２０は、図３に示した階層Ｘ１００に相当する。このため、図の右端は図３の階層切り口１１に相当する。
【００８４】
図４に示した方法を、図５の階層Ｗ２０の回路に適用することを検討する。
この場合、回路Ｈ２０５を上位階層に出して、フリップフロップＤ２０４の出力の近傍に階層切り口Ｕ２２を入れる方法が考えられる。なお、この段階では階層切り口Ｖ２１は挿入されていない。
【００８５】
しかし、フリップフロップＣ２０１に対しては、階層切り口Ｕ２２の位置では、回路Ｅ２０２と回路Ｇ２０６の間に階層切り口Ｕ２２が存在し、フリップフロップの出力の近傍に階層の切り口がある状態とはならない。
【００８６】
そこで、回路Ｅ２０２、回路Ｆ２０３、フリップフロップＤ２０４、回路Ｈ２０５、回路Ｇ２０６を階層Ｗ２０の外に出し、階層切り口Ｕ２２の位置から階層切り口Ｖ２１の位置に新しい階層切り口を移動させる必要がある。しかし、新しい階層切り口を階層切り口Ｖ２１の位置に挿入すると、階層Ｗ２０に最初に存在した回路はフリップフロップＣ２０１を除いて、全て階層Ｗ２０の外に出てしまう。
【００８７】
このような階層内回路のほとんどが階層外に出てしまう状況を防止するため、回路多重化を用いる。
【００８８】
なお、回路Ｅ２０２から分岐する回路Ｇ２０６がない場合には、階層切り口Ｕ２２の位置で回路Ｈ２０５に接続する回路が図３に示した階層Ｚ１０に含まれることになり、フリップフロップＤ２０４の出力に接続する回路が１つの階層に含まれることにより、この状態で伝播遅延分配は不要となる。
【００８９】
図６は、本実施例を説明するための回路の多重化を示す図である。
【００９０】
図６を参照すると、回路Ｅ２０２の多重化コピーである回路Ｅ’２５２を生成する。回路の多重化は回路多重化手段６が行う。回路の多重化は回路論理を等価に保ったまま、回路を挿入することにより行われる。
【００９１】
回路Ｅ２０２のコピーである回路Ｅ’２５２を挿入することにより、フリップフロップＣ２０１の出力も回路を介さずに階層切り口に接続するようになるが、フリップフロップＣ２０１の出力と階層切り口Ｕ２２の近傍とはなっていない。そこで、次の多重化を行う。
【００９２】
図７は、本実施例を説明するための回路の多重化を示す図である。
【００９３】
図７を参照すると、フリップフロップＣ２０１の多重化コピーであるフリップフロップＣ’２５１を生成することによって、階層切り口Ｕ２２の位置でもフリップフロップＤ２０４の出力とフリップフロップＣ２０１の出力が共に階層の近傍に位置するように階層構造を生成することができる。
【００９４】
階層切り口移動手段７による階層切り口の移動は、フリップフロップの多重化や、フリップフロップの階層間移動を伴うので、階層切り口移動前のフリップフロップの位置が消滅してしまい、論理検証やタイミング検証の際に困難が生じる。そこで、このような問題を起こさないために、フリップフロップの入力に切り口移動前のフリップフロップの位置を示すバッファを、検証用アンカーバッファ挿入手段３が挿入し、それにフリップフロップの名前や階層位置を記憶させておく。
【００９５】
図８は、本実施例を説明するためのバッファの挿入を示す図である。
【００９６】
図８を参照すると、検証用アンカーバッファ挿入手段３は、フリップフロップＥ３０１の入力にバッファ４０１を挿入し、フリップフロップの多重化が発生して、フリップフロップＥ３０１のコピーであるフリップフロップＥ’３５１が生成した場合においても、バッファ４０１を使って元のフリップフロップの位置が保存されることを示している。
【００９７】
以上説明した実施例によれば、下位階層Ｘ１００、下位階層Ｙ１５０に配置されたフリップフロップＡ１０１、フリップフロップＢ１０５間に位置する回路を最適化する場合、階層切り口１１、１２をそれぞれフリップフロップＡ１０１、フリップフロップＢ１０５と回路との接続部近傍に移動し、回路を上位の階層Ｚ１０に含めることにより、フリップフロップ間を接続する回路の伝播遅延の分配が不要となり、最適化処理を容易に精度良く行うことができる。
【００９８】
上記実施例では、下位階層のフリップフロップ間に位置する回路を上位階層に含めて伝播遅延の分配を不要とする例について説明したが、上位階層の代わりに当該下位階層とは別の下位階層に当該回路を含めることによっても、上記実施例と同様に伝播遅延の分配を不要とすることができる。
【００９９】
本発明の集積回路階層設計システムは、その動作をハードウェア的に実現することは勿論として、上述した各手段を実行する集積回路階層設計プログラム（アプリケーション）５０をコンピュータ処理装置である集積回路階層設計システムで実行することにより、ソフトウェア的に実現することができる。この集積回路階層設計プログラム５０は、磁気ディスク、半導体メモリその他の記録媒体に格納され、その記録媒体から集積回路階層設計システムにロードされ、その動作を制御することにより、上述した各機能を実現する。
【０１００】
以上好ましい実施例をあげて本発明を説明したが、本発明は必ずしも、上記実施例に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
【図面の簡単な説明】
【０１０１】
【図１】本発明の実施例による集積回路階層設計システムの構成を示すブロック図である。
【図２】本発明の実施例による集積回路階層設計システムの処理の流れを示すフローチャートである。
【図３】本発明の実施例を説明するための階層構造に構成された集積回路を示す図である。
【図４】本発明の実施例を説明するための階層切り口の移動を示す図である。
【図５】本発明の実施例を説明するための階層切り口の移動を示す図である。
【図６】本発明の実施例を説明するための回路の多重化を示す図である。
【図７】本発明の実施例を説明するための回路の多重化を示す図である。
【図８】本発明の実施例を説明するためのバッファの挿入を示す図である。
【図９】従来技術を説明するための図である。
【符号の説明】
【０１０２】
１：階層化回路入力手段
２：階層間フリップフロップ伝播経路検索手段
３：検証用アンカーバッファ挿入手段
４：仮階層切り口移動手段
５：階層化回路判定手段
６：回路多重化手段
７：階層切り口移動手段
８：階層切り口回路出力手段
１０：階層Ｚ
１１、１２、１３、１４：階層切り口
２０：階層Ｗ
２１：階層切り口Ｖ
２２：階層切り口Ｕ
５０：集積回路階層設計プログラム
１００、１１０：階層Ｘ
１０１：ＦＦＡ（フリップフロップＡ）
１０２：回路Ｐ
１０３：回路Ｑ
１０４：回路Ｒ
１０５：ＦＦＢ（フリップフロップＢ）
１０６：回路ブロックＰＱＲ
１５０、１６０：階層Ｙ
２０１：ＦＦＣ（フリップフロップＣ）
２０２：回路Ｅ
２０３：回路Ｆ
２０４：ＦＦＤ（フリップフロップＤ）
２０５：回路Ｈ
２０６：回路Ｇ
２５１：ＦＦＣ’（フリップフロップＣ’）
２５２：回路Ｅ’
３０１：ＦＦＥ（フリップフロップＥ）
３５１：ＦＦＥ’（フリップフロップＥ’）
４０１：アンカーバッファ
ＦＦ１、ＦＦ２、ＦＦ３、ＦＦ４：フリップフロップ
Ｇ１、Ｇ２、Ｇ３、Ｇ４、Ｇ５：論理素子
ＳＵＢ２’、ＳＵＢ３’、ＳＵＢ４’：階層回路
【図１】
2006024053.tif 000003
【図２】
2006024053.tif 000004
【図３】
2006024053.tif 000005
【図４】
2006024053.tif 000006
【図５】
2006024053.tif 000007
【図６】
2006024053.tif 000008
【図７】
2006024053.tif 000009
【図８】
2006024053.tif 000010
【図９】
2006024053.tif 000011