(57)【要約】      （修正有）【課題】簡易にクロックツリーを再分配する。【解決手段】第１の特定部は、第１のセルのそれぞれについて、第１のセルに接続された第２のセルの入力端子に接続されたセルと、自身の入力端子に接続されたセルとが同一である他の第２のセルを特定する。当該第２のセル及び他の第２のセルに接続された他の第１のセルを特定する。第２の特定部は、第１のセルの配置の変更内容を示し、同一の第２のセルに接続される第１のセルを同一グループとする情報に基づいて、他の第１のセルを特定する。第１の特定部により特定された他の第１のセルの中に、第２の特定部により特定された他の第１のセルが含まれる場合には、他の第１のセルに接続された第２のセルを選択し、第１のセル及び選択された第２のセルが、所定の設計ルールを満たすか否かに従って、第１のセルと選択された第２のセル、あるいはコピーした第２のセルとが配線を介して接続された情報を登録する。【選択図】図１
2015026346.tif 000002
【特許請求の範囲】
【請求項１】
入力されたクロック信号に基づいて動作する複数の第１のセルと、前記複数の第１のセルのうち何れかの第１のセルに配線を介してクロック信号を入力する複数の第２のセルと、前記複数の第１のセルのそれぞれと前記複数の第２のセルのそれぞれとを接続する前記配線とを有する所定の回路を示す第１の情報、及び、前記所定の回路における前記第１のセルの配置の変更内容を示し、同一の前記第２のセルに接続される前記第１のセルが同一のグループに属するように定義された第２の情報を記憶する記憶部と、
前記複数の第１のセルのそれぞれについて、前記第１の情報に基づいて、前記所定の回路において、前記第１のセルに前記配線を介して接続された前記第２のセルを特定するとともに、該第２のセルの入力端子に接続されたセルと、自身の入力端子に接続されたセルとが同一である他の第２のセルを特定するとともに、特定した前記第２のセル及び前記他の第２のセルに前記配線を介して接続された他の第１のセルを特定する第１の特定部と、
前記複数の第１のセルのそれぞれについて、前記第２の情報に基づいて、同一の前記グループに属する他の第１のセルを特定する第２の特定部と、
前記複数の第１のセルのそれぞれについて、前記第１の特定部により特定された他の第１のセルの中に、前記第２の特定部により特定された他の第１のセルが含まれる場合には、前記第１の特定部により特定された他の第１のセルの中に含まれる前記第２の特定部により特定された他の第１のセルに配線を介して接続された第２のセルを選択する選択部と、
前記複数の第１のセルのそれぞれについて、前記第１のセル及び前記選択部により選択された第２のセルが、所定の設計ルールを満たす場合には、前記第１のセルと前記選択部により選択された第２のセルとが配線を介して接続された情報を前記第１の情報に登録し、前記所定の設計ルールを満たさない場合には、前記選択部により選択された第２のセルをコピーし、コピーした第２のセルと前記第１のセルとが配線を介して接続された情報を前記第１の情報に登録する接続処理部と、
を有することを特徴とする設計支援装置。
【請求項２】
前記選択部は、前記複数の第１のセルのそれぞれについて、前記第１の特定部により特定された他の第１のセルの中に、前記第２の特定部により特定された他の第１のセルが含まれない場合に、前記第１の情報が示す所定の回路において、前記第１の特定部により特定された前記第２のセルに配線を介して他の第１のセルが接続されていないときには、前記第１の特定部により特定された前記第２のセルを選択する
ことを特徴とする請求項１に記載の設計支援装置。
【請求項３】
前記選択部は、前記複数の第１のセルのそれぞれについて、前記第１の特定部により特定された他の第１のセルの中に、前記第２の特定部により特定された他の第１のセルが含まれない場合に、前記第１の情報が示す所定の回路において、前記第１の特定部により特定された前記第２のセルに配線を介して他の第１のセルが接続されているときには、前記第１の特定部により特定された前記第２のセルをコピーし、コピーした第２のセルを選択する
ことを特徴とする請求項１または請求項２に記載の設計支援装置。
【請求項４】
コンピュータに、
入力されたクロック信号に基づいて動作する複数の第１のセルと、前記複数の第１のセルのうち何れかの第１のセルに配線を介してクロック信号を入力する複数の第２のセルと、前記複数の第１のセルのそれぞれと前記複数の第２のセルのそれぞれとを接続する前記配線とを有する所定の回路を示す第１の情報、及び、前記所定の回路における前記第１のセルの配置の変更内容を示し、同一の前記第２のセルに接続される前記第１のセルが同一のグループに属するように定義された第２の情報を記憶する記憶部を参照し、
前記複数の第１のセルのそれぞれについて、前記所定の回路において、前記第１のセルに前記配線を介して接続された前記第２のセルを特定するとともに、該第２のセルの入力端子に接続されたセルと、自身の入力端子に接続されたセルとが同一である他の第２のセルを特定するとともに、特定した前記第２のセル及び前記他の第２のセルに前記配線を介して接続された他の第１のセルを特定し、
前記複数の第１のセルのそれぞれについて、同一の前記グループに属する他の第１のセルを特定し、
前記複数の第１のセルのそれぞれについて、特定した前記第２のセル及び前記他の第２のセルに前記配線を介して接続された他の第１のセルの中に、同一の前記グループに属する他の第１のセルが含まれる場合には特定した前記第２のセル及び前記他の第２のセルに前記配線を介して接続された他の第１のセルの中に含まれる前記同一のグループに属する他の第１のセルに配線を介して接続された第２のセルを選択し、
前記複数の第１のセルのそれぞれについて、前記第１のセル及び前記選択された第２のセルが、所定の設計ルールを満たす場合には、前記第１のセルと前記選択された第２のセルとが配線を介して接続された情報を前記第１の情報に登録し、前記所定の設計ルールを満たさない場合には、前記選択された第２のセルをコピーし、コピーした第２のセルと前記第１のセルとが配線を介して接続された情報を前記第１の情報に登録する
処理を実行させることを特徴とする設計支援プログラム。
【請求項５】
コンピュータが、
入力されたクロック信号に基づいて動作する複数の第１のセルと、前記複数の第１のセルのうち何れかの第１のセルに配線を介してクロック信号を入力する複数の第２のセルと、前記複数の第１のセルのそれぞれと前記複数の第２のセルのそれぞれとを接続する前記配線とを有する所定の回路を示す第１の情報、及び、前記所定の回路における前記第１のセルの配置の変更内容を示し、同一の前記第２のセルに接続される前記第１のセルが同一のグループに属するように定義された第２の情報を記憶する記憶部を参照し、
前記複数の第１のセルのそれぞれについて、前記所定の回路において、前記第１のセルに前記配線を介して接続された前記第２のセルを特定するとともに、該第２のセルの入力端子に接続されたセルと、自身の入力端子に接続されたセルとが同一である他の第２のセルを特定するとともに、特定した前記第２のセル及び前記他の第２のセルに前記配線を介して接続された他の第１のセルを特定し、
前記複数の第１のセルのそれぞれについて、同一の前記グループに属する他の第１のセルを特定し、
前記複数の第１のセルのそれぞれについて、特定した前記第２のセル及び前記他の第２のセルに前記配線を介して接続された他の第１のセルの中に、同一の前記グループに属する他の第１のセルが含まれる場合には特定した前記第２のセル及び前記他の第２のセルに前記配線を介して接続された他の第１のセルの中に含まれる前記同一のグループに属する他の第１のセルに配線を介して接続された第２のセルを選択し、
前記複数の第１のセルのそれぞれについて、前記第１のセル及び前記選択された第２のセルが、所定の設計ルールを満たす場合には、前記第１のセルと前記選択された第２のセルとが配線を介して接続された情報を前記第１の情報に登録し、前記所定の設計ルールを満たさない場合には、前記選択された第２のセルをコピーし、コピーした第２のセルと前記第１のセルとが配線を介して接続された情報を前記第１の情報に登録する
処理を実行することを特徴とする設計支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、設計支援装置、設計支援プログラム及び設計支援方法に関する。
【背景技術】
【０００２】
従来、回路設計において、各種の設計ルールを満たすように、クロックツリーを生成する様々な方法が知られている。例えば、フロアプランの実行により変更のあったブロックのレジスタ情報を取得し、取得した情報に基づいて各ブロックに最適なクロックツリーを生成する技術がある。
【０００３】
また、クロックツリー生成後に、フリップフロップ（Flip  Flop；ＦＦ）やラッチ（latch）などのセルの配置を修正した場合には、セルの配置の修正に伴って、クロックツリーが修正される。ここで、以下の説明では、クロックツリーを修正することを、「クロックツリーを再分配する」と表記し、同様に、クロックツリーの修正を「クロックツリーの再分配」と表記する場合がある。
【０００４】
上述したようなクロックツリーを再分配する技術の一例としては、例えば、回路の設計者が手動でクロックツリーを再分配するような従来技術が挙げられる。
【０００５】
また、クロックツリーを再分配する技術の他の例としては、例えば、既に生成されたクロックツリーを保存しつつ、追加で配置されたセルがある場合に、既存のクロックツリーを次のように変更する従来技術がある。すなわち、かかる従来技術は、追加したセルへのクロック配線を、同クロックネットの既配線のうちなるべく近くに接続して、既存のクロックツリーを変更する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−５７１９７号公報
【特許文献２】特開平９−６９１１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述したクロックツリーを再分配する従来技術では、各種の設計ルールを満たすように、クロックツリーが再分配される。ここで、各種の設計ルールは、満たすことが容易でない。そのため、従来技術では、クロックツリーを再分配することが困難であるという問題がある。
【０００８】
１つの側面では、本発明は、簡易にクロックツリーを再分配することを目的とする。
【課題を解決するための手段】
【０００９】
１態様では、設計支援装置は、記憶部と、第１の特定部と、第２の特定部と、選択部と、接続処理部とを有する。記憶部は、所定の回路を示す第１の情報を記憶する。所定の回路は、入力されたクロック信号に基づいて動作する複数の第１のセルと、複数の第１のセルのうち何れかの第１のセルに配線を介してクロック信号を入力する複数の第２のセルとを有する。さらに、所定の回路は、複数の第１のセルのそれぞれと複数の第２のセルのそれぞれとを接続する配線とを有する。また、記憶部は、所定の回路における第１のセルの配置の変更内容を示し、同一の第２のセルに接続される第１のセルが同一のグループに属するように定義された第２の情報を記憶する。第１の特定部は、複数の第１のセルのそれぞれについて、第１の情報に基づいて、所定の回路において、第１のセルに配線を介して接続された第２のセルを特定する。第１の特定部は、第２のセルの入力端子に接続されたセルと、自身の入力端子に接続されたセルとが同一である他の第２のセルを特定する。第１の特定部は、特定した第２のセル及び他の第２のセルに配線を介して接続された他の第１のセルを特定する。第２の特定部は、複数の第１のセルのそれぞれについて、第２の情報に基づいて、同一のグループに属する他の第１のセルを特定する。選択部は、複数の第１のセルのそれぞれについて、第１の特定部により特定された他の第１のセルの中に、第２の特定部により特定された他の第１のセルが含まれる場合には、次の処理を行う。すなわち、選択部は、第１の特定部により特定された他の第１のセルの中に含まれる第２の特定部により特定された他の第１のセルに配線を介して接続された第２のセルを選択する。接続処理部は、複数の第１のセルのそれぞれについて、第１のセル及び選択部により選択された第２のセルが、所定の設計ルールを満たす場合には、第１のセルと選択部により選択された第２のセルとが配線を介して接続された情報を第１の情報に登録する。接続処理部は、所定の設計ルールを満たさない場合には、選択部により選択された第２のセルをコピーし、コピーした第２のセルと第１のセルとが配線を介して接続された情報を第１の情報に登録する。
【発明の効果】
【００１０】
簡易にクロックツリーを再分配することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例に係る設計支援装置の機能構成の一例を示す図である。
【図２】図２は、回路情報が示す半導体集積回路の一例を示す図である。
【図３】図３は、再分配情報の一例を示す図である。
【図４】図４は、デザインルールの一例を示す。
【図５】図５は、解析部が実行する処理の一例を説明するための図である。
【図６】図６は、解析部が実行する処理の一例を説明するための図である。
【図７】図７は、各処理において用いられる第１の解析テーブルの一例を示す図である。
【図８】図８は、各処理において用いられる第２の解析テーブルの一例を示す図である。
【図９】図９は、各処理において用いられる第１の解析テーブルの一例を示す図である。
【図１０】図１０は、各処理において用いられる第２の解析テーブルの一例を示す図である。
【図１１】図１１は、各処理において用いられる第１の解析テーブルの一例を示す図である。
【図１２】図１２は、各処理において用いられる第２の解析テーブルの一例を示す図である。
【図１３】図１３は、各処理において用いられる第１の解析テーブルの一例を示す図である。
【図１４】図１４は、各処理において用いられる第２の解析テーブルの一例を示す図である。
【図１５】図１５は、各処理において用いられる第１の解析テーブルの一例を示す図である。
【図１６】図１６は、各処理において用いられる第２の解析テーブルの一例を示す図である。
【図１７】図１７は、各処理において用いられる第１の解析テーブルの一例を示す図である。
【図１８】図１８は、各処理において用いられる第２の解析テーブルの一例を示す図である。
【図１９】図１９は、図３の再分配情報が示すグループ２に属するセル１８＿４，１８＿９，１８＿１０，１８＿１２についても同様に処理を行った結果の第１の解析テーブルの一例を示す図である。
【図２０】図２０は、図３の再分配情報が示すグループ２に属するセル１８＿４，１８＿９，１８＿１０，１８＿１２についても同様に処理を行った結果の第２の解析テーブルの一例を示す図である。
【図２１】図２１は、図３の再分配情報が示すグループ３に属するセル１８＿５，１８＿１４、グループ４に属するセル１８＿１３、グループ５に属すセル１８＿７，１８＿１１についても同様に処理を行った結果の第１の解析テーブルの一例を示す図である。
【図２２】図２２は、図３の再分配情報が示すグループ３に属するセル１８＿５，１８＿１４、グループ４に属するセル１８＿１３、グループ５に属すセル１８＿７，１８＿１１についても同様に処理を行った結果の第２の解析テーブルの一例を示す図である。
【図２３】図２３は、クロックツリーが再分配された後の回路情報が示す半導体集積回路の一例を示す図である。
【図２４】図２４は、実施例に係る設計支援処理の手順を示すフローチャートである。
【図２５】図２５は、実施例に係る再分配処理の手順を示すフローチャートである。
【図２６】図２６は、実施例に係るデザインルールチェック処理の手順を示すフローチャートである。
【図２７】図２７は、実施例に係る再分配処理部の機能構成の一例を示す図である。
【図２８】図２８は、設計支援プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示する設計支援装置、設計支援プログラム及び設計支援方法の実施例を図面に基づいて詳細に説明する。なお、実施例は開示の技術を限定するものではない。
【実施例】
【００１３】
［設計支援装置の機能構成の一例］
図１は、実施例に係る設計支援装置の機能構成の一例を示す図である。図１の例に示すように、設計支援装置１は、入力部１１、出力部１２、記憶部２及び制御部３を有する。設計支援装置１は、既に生成されたクロックツリーを再分配する。
【００１４】
入力部１１は、各種情報を制御部３に入力する。例えば、入力部１１は、設計支援装置１のユーザから後述の設計支援処理を実行するための指示を受け付けて、受け付けた指示を制御部３に入力する。ここで、設計支援装置１のユーザの一例としては、半導体集積回路の設計者などが挙げられる。入力部１１のデバイスの一例としては、マウスやキーボードなどが挙げられる。
【００１５】
出力部１２は、各種の情報を出力する。例えば、出力部１２は、後述の出力制御部３ｆの制御により、クロックツリーが再分配された半導体集積回路を表示する。出力部１２のデバイスの一例としては、液晶ディスプレイなどが挙げられる。
【００１６】
記憶部２は、各種情報を記憶する。例えば、記憶部２は、回路情報２ａ、再分配情報２ｂ、デザインルール２ｃ、第１の解析テーブル２ｄ、第２の解析テーブル２ｅ、接続候補ファイル２ｆ、判定フラグ２ｇを記憶する。
【００１７】
回路情報２ａは、クロックツリーが既に生成された半導体集積回路を示すデータである。半導体集積回路は、フリップフロップやラッチなどの複数のセルを有する。セルは、入力されたクロック信号に基づいて動作する。また、半導体集積回路は、フリップフロップやラッチなどのセルに配線を介してクロック信号を入力するチョッパなどの複数の駆動セルを有する。また、半導体集積回路は、セルと駆動セルとを接続する配線を有する。
【００１８】
図２は、回路情報２ａが示す半導体集積回路の一例を示す図である。図２の例に示す半導体集積回路では、外部クロックピンＣＬＫから供給されるクロック信号がセル１３＿１の入力ピンＡに入力される。同様に、図２の例に示す半導体集積回路では、外部クロックピンＣＬＫから供給されるクロック信号が、セル１３＿２〜１３＿４の各入力ピンＡに入力される。
【００１９】
また、図２の例に示す半導体集積回路では、セル１３＿１のクロック出力ピンＸから出力されるクロック信号が、配線１４＿１を介して、下位階層ｈｉｅｒ１５＿１内のセル１６＿１のクロック入力ピンＡ１に入力される。また、図２の例に示す半導体集積回路では、セル１３＿１のクロック出力ピンＸから出力されるクロック信号が、配線１４＿１を介して、下位階層ｈｉｅｒ１５＿２内のセル１６＿２のクロック入力ピンＡ１に入力される。また、図２の例に示す半導体集積回路では、セル１３＿１のクロック出力ピンＸから出力されるクロック信号が、配線１４＿１を介して、下位階層ｈｉｅｒ１５＿３内のセル１６＿３のクロック入力ピンＡ１に入力される。ここで、セル１６＿１〜１６＿３は、クロック出力ピンＸに接続されたセルにクロック信号を入力して、かかるセルを駆動させる駆動セルであり、例えば、チョッパである。
【００２０】
また、図２の例に示す半導体集積回路では、セル１７＿１の出力ピンＸから出力されるチョップ幅選択信号が、配線１４＿２を介して、セル１６＿１の入力ピンＣＷＳに入力される。また、図２の例に示す半導体集積回路では、セル１７＿１の出力ピンＸから出力されるチョップ幅選択信号が、配線１４＿２を介して、セル１６＿２の入力ピンＣＷＳに入力される。また、図２の例に示す半導体集積回路では、セル１７＿１の出力ピンＸから出力されるチョップ幅選択信号が、配線１４＿２を介して、セル１６＿３の入力ピンＣＷＳに入力される。
【００２１】
また、図２の例に示す半導体集積回路では、セル１７＿２の出力ピンＸから出力されるクロックｉｎｈｉｂｉｔ信号が、配線１４＿３を介して、セル１６＿１の入力ピンＩＨに入力される。また、図２の例に示す半導体集積回路では、セル１７＿２の出力ピンＸから出力されるクロックｉｎｈｉｂｉｔ信号が、配線１４＿３を介して、セル１６＿３の入力ピンＩＨに入力される。
【００２２】
また、図２の例に示す半導体集積回路では、セル１７＿３の出力ピンＸから出力されるクロックｉｎｈｉｂｉｔ信号が、配線１４＿４を介して、セル１６＿２の入力ピンＩＨに入力される。
【００２３】
また、図２の例に示す半導体集積回路では、セル１６＿１のクロック出力ピンＸから出力されるクロック信号が、配線１９＿１を介して、５つのフリップフロップ１８＿１〜１８＿５の各クロック入力ピンに接続される。また、図２の例に示す半導体集積回路では、セル１６＿２のクロック出力ピンＸから出力されるクロック信号が、配線１９＿２を介して、４つのフリップフロップ１８＿６〜１８＿９の各クロック入力ピンに接続される。また、図２の例に示す半導体集積回路では、セル１６＿３のクロック出力ピンＸから出力されるクロック信号が、配線１９＿３を介して、７つのフリップフロップ１８＿１０〜１８＿１６の各クロック入力ピンに接続される。なお、以下の説明では、フリップフロップを「セル」と表記する場合がある。
【００２４】
また、図２の例に示すセル１８＿１〜１８＿１６は、クロック入力ピンに入力されたクロック信号に基づいて動作する。ここで、本実施例では、同一の駆動セルから出力されたクロック信号に基づいて動作するＦＦは、同一のグループ（Ｇｒｏｕｐ）に属する。例えば、セル１６＿１から出力されたクロック信号に基づいて動作するセル１８＿１〜１８＿５は、グループ１に属する。また、セル１６＿２から出力されたクロック信号に基づいて動作するセル１８＿６〜１８＿９は、グループ２に属する。また、セル１６＿３から出力されたクロック信号に基づいて動作するセル１８＿１０〜１８＿１６は、グループ３に属する。なお、グループ１の識別子は、「１」であり、グループ２の識別子は、「２」であり、グループ３の識別子は、「３」である。
【００２５】
また、各セルを識別する識別子について説明する。例えば、図２の例が示すセル１３＿１の識別子は、「ｃｌｋ１３＿１」である。同様に、セル１３＿２の識別子は、「ｃｌｋ１３＿２」であり、セル１３＿３の識別子は、「ｃｌｋ１３＿３」であり、セル１３＿４の識別子は、「ｃｌｋ１３＿４」である。
【００２６】
また、セル１６＿１の識別子は、「ｃｈｐ１」であり、セル１６＿２の識別子は、「ｃｈｐ２」であり、セル１６＿３の識別子は、「ｃｈｐ３」である。セル１７＿１の識別子は、「ｉｎｓｔＡ」であり、セル１７＿２の識別子は、「ｉｎｓｔＢ」であり、セル１７＿３の識別子は、「ｉｎｓｔＣ」である。
【００２７】
また、セル１８＿１の識別子は、「ＦＦ１」であり、セル１８＿２の識別子は、「ＦＦ２」であり、セル１８＿３の識別子は、「ＦＦ３」であり、セル１８＿４の識別子は、「ＦＦ４」である。また、セル１８＿５の識別子は、「ＦＦ５」であり、セル１８＿６の識別子は、「ＦＦ６」であり、セル１８＿７の識別子は、「ＦＦ７」であり、セル１８＿８の識別子は、「ＦＦ８」である。また、セル１８＿９の識別子は、「ＦＦ９」であり、セル１８＿１０の識別子は、「ＦＦ１０」であり、セル１８＿１１の識別子は、「ＦＦ１１」であり、セル１８＿１２の識別子は、「ＦＦ１２」である。また、セル１８＿１３の識別子は、「ＦＦ１３」であり、セル１８＿１４の識別子は、「ＦＦ１４」であり、セル１８＿１５の識別子は、「ＦＦＡ」であり、セル１８＿１６の識別子は、「ＦＦＢ」である。
【００２８】
再分配情報２ｂは、セル１８＿１〜１８＿１６のうち、クロックツリーを再分配する際に配置を変更する対象であるＦＦと、配置を変更する対象であるＦＦが配置変更後に属するグループとの関係を示す情報である。再分配情報２ｂは、回路を設計する設計者によって作成される。
【００２９】
図３は、再分配情報の一例を示す図である。図３に示す再分配情報２ｂは、下位階層ｈｉｅｒ１内のセル１８＿１，セル１８＿２、下位階層ｈｉｅｒ２内のセル１８＿６、下位階層ｈｉｅｒ３内のセル１８＿８が、グループ１（group1）に属することを示す。また、再分配情報２ｂは、下位階層ｈｉｅｒ１内のセル１８＿３、下位階層ｈｉｅｒ２内のセル１８＿４、下位階層ｈｉｅｒ３内のセル１８＿９，セル１８＿１０、下位階層ｈｉｅｒ４内のセル１８＿１２が、グループ２（group2）に属することを示す。また、再分配情報２ｂは、下位階層ｈｉｅｒ２内のセル１８＿５、下位階層ｈｉｅｒ４内のセル１８＿１４が、グループ３（group3）に属することを示す。また、再分配情報２ｂは、下位階層ｈｉｅｒ４内のセル１８＿１３が、グループ４（group4）に属することを示す。また、再分配情報２ｂは、下位階層ｈｉｅｒ２内のセル１８＿７、下位階層ｈｉｅｒ３内のセル１８＿１１が、グループ５（group5）に属することを示す。ここで、図３に示す再分配情報２ｂでは、セル１８＿１〜１８＿１６のうち、セル１８＿１５，１８＿１６が属するグループについて定義されていない。セル１８＿１５，１８＿１６が属するグループについて再分配情報２ｂに定義されていないことは、クロックツリー再分配後であっても、セル１８＿１５，１８＿１６に接続される前段のセルは、先の図２に示すように、セル１６＿３であることを意味する。すなわち、クロックツリー再分配後であっても、セル１８＿１５，１８＿１６に接続される前段のセルは、クロックツリー再分配前の前段のセルと同じである。
【００３０】
デザインルール２ｃには、デザインルール（設計ルール）チェック処理において用いられる、最大ファンアウト数（ＭａｘＦａｎｏｕｔ）が登録される。また、デザインルール２ｃには、デザインルールチェック処理において用いられる、駆動セルの出力ピンのドライバビリティや、セルの入力ピンの容量などが登録されたライブラリのライブラリ名や場所が登録される。図４は、デザインルールの一例を示す図である。図４に示すデザインルール２ｃは、デザインルールチェック処理において用いられる最大ファンアウト数が、「８」であることを示す。また、図４のデザインルール２ｃは、駆動セルの出力ピンのドライバビリティや、セルの入力ピンの容量などが登録されたライブラリが、フォルダ「ｘｘ」配下に存在する「ｙｙ」というライブラリであることを示す。
【００３１】
第１の解析テーブル２ｄ、第２の解析テーブル２ｅ、接続候補ファイル２ｆ、判定フラグ２ｇについては後述する。
【００３２】
記憶部２は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。
【００３３】
制御部３は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図１に示すように、制御部３は、解析部３ａと、選択部３ｂと、再分配処理部３ｃと、チェック処理部３ｄと、接続処理部３ｅと、出力制御部３ｆとを有する。
【００３４】
解析部３ａは、各種の情報を解析する。解析部３ａの一態様について説明する。例えば、解析部３ａは、入力部１１から設計支援処理を実行する指示が入力されると、まず、記憶部２から回路情報２ａを取得する。そして、解析部３ａは、記憶部２からデザインルール２ｃを取得する。そして、解析部３ａは、記憶部２から再分配情報２ｂを取得する。
【００３５】
そして、解析部３ａは、取得した回路情報２ａが示す半導体集積回路と、取得した再分配情報２ｂとを解析し、各種の解析結果を第１の解析テーブル２ｄ及び第２の解析テーブル２ｅに登録する。
【００３６】
解析部３ａが、回路情報２ａが示す半導体集積回路、及び、再分配情報２ｂを解析し、各種の解析結果を第１の解析テーブル２ｄ及び第２の解析テーブル２ｅに登録する処理の一例について説明する。図５及び図６は、解析部が実行する処理の一例を説明するための図である。
【００３７】
図５は、解析部３ａが、各種の解析を行い、各種の解析結果を第１の解析テーブル２ｄに登録した場合の一例を示す。解析部３ａは、まず、回路情報２ａが示す半導体集積回路を解析し、フリップフロップやラッチなどのセルを特定し、特定したセルの識別子を第１の解析テーブル２ｄの「ｆｆ，ｌａｔｃｈ」の項目に登録する。例えば、図２の半導体集積回路を示す回路情報２ａを取得した場合には、解析部３ａは、次のような処理を行う。すなわち、解析部３ａは、回路情報２ａが示す図２の半導体集積回路を解析し、１６個のフリップフロップ１８＿１〜１８＿１６を特定する。そして、解析部３ａは、特定したフリップフロップ１８＿１〜１８＿１６のそれぞれの識別子「ＦＦ１」〜「ＦＦ１４」，「ＦＦＡ」，「ＦＦＢ」を、図５に示すように、第１の解析テーブル２ｄの「ｆｆ，ｌａｔｃｈ」の項目に登録する。
【００３８】
また、解析部３ａは、再分配情報２ｂを解析し、グループが再設定される対象のセルを特定し、特定したセルがグループが再設定される対象のセルであることを示す「Ｙ」を第１の解析テーブル２ｄの「処理対象」の項目に登録する。例えば、図３に示すような再分配情報２ｂを取得した場合には、解析部３ａは、次のような処理を行う。すなわち、解析部３ａは、図３に示す再分配情報２ｂを解析し、グループが再設定される対象のセル１８＿１〜１８＿１４を特定する。そして、図５に示すように、解析部３ａは、特定したセル１８＿１〜１８＿１４の識別子「ＦＦ１」〜「ＦＦ１４」のそれぞれに対応付けて、上述した「Ｙ」を第１の解析テーブル２ｄの「処理対象」の項目に登録する。そして、解析部３ａは、セル１８＿１〜１８＿１６のうち、グループが再設定される対象ではないセル１８＿１５，１８＿１６を特定する。そして、図５に示すように、解析部３ａは、特定したセル１８＿１５，１８＿１６の識別子「ＦＦＡ」，「ＦＦＢ」のそれぞれに対応付けて、グループが再設定される対象のセルでないことを示す「Ｎ」を「処理対象」の項目に登録する。
【００３９】
また、解析部３ａは、回路情報２ａが示す半導体集積回路を解析し、クロックツリーを再分配する処理である後述する再分配処理を行う前の半導体集積回路において、セルが属するグループを特定する。なお、回路情報２ａが示す半導体集積回路は、再分配処理を行う対象の回路であり、再分配処理が行われる前の回路である。そして、解析部３ａは、特定したグループの識別子を、第１の解析テーブル２ｄの「再分配前Ｇｒｏｕｐ」の項目に登録する。例えば、図２の半導体集積回路を示す回路情報２ａを取得した場合には、解析部３ａは、次のような処理を行う。すなわち、解析部３ａは、回路情報２ａが示す図２の半導体集積回路を解析し、後述する再分配処理を行う前の半導体集積回路において、セル１８＿１〜１８＿５が属するグループ１を特定する。また、解析部３ａは、セル１８＿６〜１８＿９が属するグループ２を特定する。また、解析部３ａは、セル１８＿１０〜１８＿１６が属するグループ３を特定する。そして、図５に示すように、解析部３ａは、セル１８＿１〜１８＿５の識別子「ＦＦ１」〜「ＦＦ５」のそれぞれに対応付けて、グループ１の識別子「１」を、「再分配前Ｇｒｏｕｐ」の項目に登録する。また、図５に示すように、解析部３ａは、セル１８＿６〜１８＿９の識別子「ＦＦ６」〜「ＦＦ９」のそれぞれに対応付けて、グループ２の識別子「２」を、「再分配前Ｇｒｏｕｐ」の項目に登録する。また、図５に示すように、解析部３ａは、セル１８＿１０〜１８＿１６の識別子「ＦＦ１０」〜「ＦＦ１４」，「ＦＦＡ」，「ＦＦＢ」のそれぞれに対応付けて、グループ３の識別子「３」を、「再分配前Ｇｒｏｕｐ」の項目に登録する。
【００４０】
また、解析部３ａは、再分配情報２ｂを解析し、再分配処理を行った後の半導体集積回路において、セルが属するグループを特定する。そして、解析部３ａは、特定したグループの識別子を、第１の解析テーブル２ｄの「再分配後Ｇｒｏｕｐ」の項目に登録する。例えば、図３に示すような再分配情報２ｂを取得した場合には、解析部３ａは、次のような処理を行う。すなわち、解析部３ａは、再分配情報２ｂを解析し、セル１８＿１，１８＿２，１８＿６，１８＿８が属するグループ１を特定する。また、解析部３ａは、セル１８＿３，１８＿４，１８＿９，１８＿１０，１８＿１２が属するグループ２を特定する。また、解析部３ａは、セル１８＿５，１８＿１４が属するグループ３を特定する。また、解析部３ａは、セル１８＿１３が属するグループ４を特定する。また、解析部３ａは、セル１８＿７，１８＿１１が属するグループ５を特定する。そして、図５に示すように、解析部３ａは、セル１８＿１，１８＿２，１８＿６，１８＿８の識別子「ＦＦ１」，「ＦＦ２」，「ＦＦ６」，「ＦＦ８」のそれぞれに対応付けて、グループ１の識別子「１」を、「再分配後Ｇｒｏｕｐ」の項目に登録する。また、図５に示すように、解析部３ａは、セル１８＿３，１８＿４，１８＿９，１８＿１０，１８＿１２の識別子「ＦＦ３」，「ＦＦ４」，「ＦＦ９」，「ＦＦ１０」，「ＦＦ１２」のそれぞれに対応付けて、次のような処理を行う。すなわち、解析部３ａは、グループ２の識別子「２」を、「再分配後Ｇｒｏｕｐ」の項目に登録する。また、図５に示すように、解析部３ａは、セル１８＿５，１８＿１４の識別子「ＦＦ５」，「ＦＦ１４」のそれぞれに対応付けて、グループ３の識別子「３」を、「再分配後Ｇｒｏｕｐ」の項目に登録する。また、図５に示すように、解析部３ａは、セル１８＿１３の識別子「ＦＦ１３」に対応付けて、グループ４の識別子「４」を、「再分配後Ｇｒｏｕｐ」の項目に登録する。また、図５に示すように、解析部３ａは、セル１８＿７，１８＿１１の識別子「ＦＦ７」，「ＦＦ１１」のそれぞれに対応付けて、グループ５の識別子「５」を、「再分配後Ｇｒｏｕｐ」の項目に登録する。なお、図３に示す再分配情報２ｂには、セル１８＿１５，１８＿１６については、属するグループが定義されていないため、図５に示すように、解析部３ａは、セル１８＿１５，１８＿１６に対応する「再分配後Ｇｒｏｕｐ」の項目には、何も登録しない。
【００４１】
また、解析部３ａは、回路情報２ａが示す半導体集積回路を解析し、後述する再分配処理を行う前の半導体集積回路において、セルの前段の駆動セルを特定する。そして、解析部３ａは、特定した駆動セルの識別子を第１の解析テーブル２ｄの「再分配前前段ｃｅｌｌ」の項目に登録する。例えば、図２の半導体集積回路を示す回路情報２ａを取得した場合には、解析部３ａは、次のような処理を行う。すなわち、解析部３ａは、回路情報２ａが示す図２の半導体集積回路を解析し、セル１８＿１〜１８＿５の前段のセル１６＿１を特定する。また、解析部３ａは、セル１８＿６〜１８＿９の前段のセル１６＿２を特定する。また、解析部３ａは、セル１８＿１０〜１８＿１６の前段のセル１６＿３を特定する。そして、図５に示すように、解析部３ａは、特定したセル１６＿１の識別子「ｃｈｐ１」を、セル１８＿１〜１８＿５の識別子「ＦＦ１」〜「ＦＦ５」のそれぞれと対応付けて、「再分配前前段ｃｅｌｌ」の項目に登録する。また、図５に示すように、解析部３ａは、特定したセル１６＿２の識別子「ｃｈｐ２」を、セル１８＿６〜１８＿９の識別子「ＦＦ６」〜「ＦＦ９」のそれぞれと対応付けて、「再分配前前段ｃｅｌｌ」の項目に登録する。また、図５に示すように、解析部３ａは、特定したセル１６＿３の識別子「ｃｈｐ３」を、セル１８＿１０〜１８＿１６の識別子「ＦＦ１０」〜「ＦＦ１４」，「ＦＦＡ」，「ＦＦＢ」のそれぞれと対応付けて、「再分配前前段ｃｅｌｌ」の項目に登録する。
【００４２】
また、解析部３ａは、再分配情報２ｂを解析し、グループが再設定される対象ではないセルを特定する。そして、解析部３ａは、回路情報２ａが示す半導体集積回路を解析し、再分配処理を行った後の半導体集積回路における特定したセルの前段の駆動セルを特定する。ここで、グループが再設定される対象ではないセルは、再分配処理の前後において配置が変更されない。すなわち、再分配処理を行った後の半導体集積回路における特定したセルの前段の駆動セルは、再分配処理を行う前の半導体集積回路における特定したセルの前段の駆動セルと同一である。そのため、解析部３ａは、再分配処理を行う前の半導体集積回路を示す回路情報２ａから、再分配処理を行った後の半導体集積回路における特定したセルの前段の駆動セルを特定することができる。すなわち、解析部３ａは、回路情報２ａが示す再分配処理を行う前の半導体集積回路における特定したセルの前段の駆動セルを特定することで、再分配処理を行った後の半導体集積回路における特定したセルの前段の駆動セルを特定することができる。そして、解析部３ａは、特定した駆動セルの識別子を第１の解析テーブル２ｄの「再分配後前段ｃｅｌｌ」の項目に登録する。
【００４３】
例えば、図２の半導体集積回路を示す回路情報２ａを取得し、図３に示すような再分配情報２ｂを取得した場合には、解析部３ａは、次のような処理を行う。すなわち、解析部３ａは、図３に示す再分配情報２ｂを解析し、グループが再設定される対象ではないセル１８＿１５，１８＿１６を特定する。そして、解析部３ａは、回路情報２ａが示す図２の半導体集積回路を解析し、再分配処理を行った後の半導体集積回路におけるセル１８＿１５の前段のセル１６＿３を特定する。また、解析部３ａは、再分配処理を行った後の半導体集積回路におけるセル１８＿１６の前段のセル１６＿３を特定する。そして、図５に示すように、解析部３ａは、特定したセル１６＿３の識別子「ｃｈｐ３」を、セル１８＿１５，１８＿１６の識別子「ＦＦＡ」，「ＦＦＢ」のそれぞれに対応付けて、「再分配後前段ｃｅｌｌ」の項目に登録する。
【００４４】
また、解析部３ａは、取得したデザインルール２ｃの内容から、ライブラリの場所やライブラリ名を特定する。例えば、図４のデザインルール２ｃを取得した場合には、解析部３ａは、駆動セルの出力ピンのドライバビリティや、セルの入力ピンの容量などが登録されたライブラリが、フォルダ「ｘｘ」配下に存在する「ｙｙ」という名称のライブラリであることを特定する。そして、解析部３ａは、特定した場所に存在する特定したライブラリ名のライブラリを取得する。例えば、解析部３ａは、フォルダ「ｘｘ」配下に存在する「ｙｙ」という名称のライブラリを取得する。そして、解析部３ａは、取得したライブラリから、ライブラリに登録されたセルの入力ピンの容量を取得する。そして、解析部３ａは、セルの識別子に対応付けて、第１の解析テーブル２ｄの「入力ピン容量」の項目に、取得した入力ピンの容量をセル毎に登録する。例えば、図５に示すように、解析部３ａは、セル１８＿１の識別子「ＦＦ１」に対応付けて、「入力ピン容量」の項目に、入力ピンの容量「０．３３６」を登録する。他のセル１８＿２〜１８＿１６についても同様に、解析部３ａは、図５に示すように、セルの識別子に対応付けて、「入力ピン容量」の項目に、入力ピンの容量を登録する。
【００４５】
図６は、解析部３ａが、各種の解析を行い、各種の解析結果を第２の解析テーブル２ｅに登録した場合の一例を示す。解析部３ａは、回路情報２ａが示す半導体集積回路における駆動セルの識別子を第２の解析テーブル２ｅの「識別子」の項目に登録する。例えば、図２の半導体集積回路を示す回路情報２ａを取得した場合には、解析部３ａは、次のような処理を行う。すなわち、図６に示すように、解析部３ａは、回路情報２ａが示す図２の半導体集積回路における駆動セルであるセル１６＿１〜１６＿３の識別子「ｃｈｐ１」〜「ｃｈｐ３」のそれぞれを、第２の解析テーブル２ｅの「識別子」の項目に登録する。
【００４６】
また、解析部３ａは、回路情報２ａが示す半導体集積回路を解析し、駆動セルの入力ピンを特定し、特定した入力ピンの名称を、第２の解析テーブル２ｅの「入力ピン」の項目に登録する。例えば、図２の半導体集積回路を示す回路情報を取得した場合には、解析部３ａは、回路情報２ａが示す図２の半導体集積回路を解析し、駆動セルであるセル１６＿１の入力ピンＡ１，ＣＷＳ，ＩＨを特定する。また、解析部３ａは、駆動セルであるセル１６＿２の入力ピンＡ１，ＣＷＳ，ＩＨを特定する。また、解析部３ａは、駆動セルであるセル１６＿３の入力ピンＡ１，ＣＷＳ，ＩＨを特定する。そして、図６に示すように、解析部３ａは、特定したセル１６＿１の入力ピンＡ１，ＣＷＳ，ＩＨの名称「Ａ１」，「ＣＷＳ」，「ＩＨ」のそれぞれを、セル１６＿１の識別子「ｃｈｐ１」と対応付けて、「入力ピン」の項目に登録する。また、解析部３ａは、特定したセル１６＿２の入力ピンＡ１，ＣＷＳ，ＩＨの名称「Ａ１」，「ＣＷＳ」，「ＩＨ」のそれぞれを、セル１６＿２の識別子「ｃｈｐ２」と対応付けて、「入力ピン」の項目に登録する。また、解析部３ａは、特定したセル１６＿３の入力ピンＡ１，ＣＷＳ，ＩＨの名称「Ａ１」，「ＣＷＳ」，「ＩＨ」のそれぞれを、セル１６＿３の識別子「ｃｈｐ３」と対応付けて、「入力ピン」の項目に登録する。
【００４７】
また、解析部３ａは、回路情報２ａが示す半導体集積回路を解析し、既に特定した入力ピンが配線を介して接続されたセルの駆動ピンを特定する。そして、解析部３ａは、特定した駆動ピンを示す駆動ピン情報を生成し、生成した駆動ピン情報を、第２の解析テーブル２ｅの「駆動ピン」の項目に登録する。例えば、図２の半導体集積回路を示す回路情報を取得した場合には、解析部３ａは、次の処理を行う。すなわち、解析部３ａは、回路情報２ａが示す図２の半導体集積回路を解析し、既に特定したセル１６＿１の入力ピンＡ１が配線１４＿１を介して接続されたセル１３＿１の駆動ピンである出力ピンＸを特定する。そして、解析部３ａは、特定した出力ピンＸを有するセル１３＿１の識別子「ｃｌｋ１３＿１」と、特定した出力ピンＸの名称「Ｘ」とを「．」で結合した駆動ピン情報「ｃｌｋ１３＿１．Ｘ」を生成する。そして、図６に示すように、解析部３ａは、既に特定したセル１６＿１の入力ピンＡ１の名称「Ａ１」に対応付けて、生成した駆動ピン情報「ｃｌｋ１３＿１．Ｘ」を、「駆動ピン」の項目に登録する。
【００４８】
また、解析部３ａは、回路情報２ａが示す図２の半導体集積回路を解析し、既に特定したセル１６＿１の入力ピンＣＷＳが配線１４＿２を介して接続されたセル１７＿１の駆動ピンである出力ピンＸを特定する。そして、解析部３ａは、特定した出力ピンＸを有するセル１７＿１の識別子「ｉｎｓｔＡ」と、特定した出力ピンＸの名称「Ｘ」とを「．」で結合した駆動ピン情報「ｉｎｓｔＡ．Ｘ」を生成する。そして、図６に示すように、解析部３ａは、既に特定したセル１６＿１の入力ピンＣＷＳの名称「ＣＷＳ」に対応付けて、生成した駆動ピン情報「ｉｎｓｔＡ．Ｘ」を、「駆動ピン」の項目に登録する。
【００４９】
また、解析部３ａは、回路情報２ａが示す図２の半導体集積回路を解析し、既に特定したセル１６＿１の入力ピンＩＨが配線１４＿３を介して接続されたセル１７＿２の駆動ピンである出力ピンＸを特定する。そして、解析部３ａは、特定した出力ピンＸを有するセル１７＿２の識別子「ｉｎｓｔＢ」と、特定した出力ピンＸの名称「Ｘ」とを「．」で結合した駆動ピン情報「ｉｎｓｔＢ．Ｘ」を生成する。そして、図６に示すように、解析部３ａは、既に特定したセル１６＿１の入力ピンＩＨの名称「ＩＨ」に対応付けて、生成した駆動ピン情報「ｉｎｓｔＢ．Ｘ」を、「駆動ピン」の項目に登録する。
【００５０】
また、解析部３ａは、回路情報２ａが示す図２の半導体集積回路を解析し、既に特定したセル１６＿２の入力ピンＡ１が配線１４＿１を介して接続されたセル１３＿１の駆動ピンである出力ピンＸを特定する。そして、解析部３ａは、特定した出力ピンＸを有するセル１３＿１の識別子「ｃｌｋ１３＿１」と、特定した出力ピンＸの名称「Ｘ」とを「．」で結合した駆動ピン情報「ｃｌｋ１３＿１．Ｘ」を生成する。そして、図６に示すように、解析部３ａは、既に特定したセル１６＿２の入力ピンＡ１の名称「Ａ１」に対応付けて、生成した駆動ピン情報「ｃｌｋ１３＿１．Ｘ」を、「駆動ピン」の項目に登録する。
【００５１】
また、解析部３ａは、回路情報２ａが示す図２の半導体集積回路を解析し、既に特定したセル１６＿２の入力ピンＣＷＳが配線１４＿２を介して接続されたセル１７＿１の駆動ピンである出力ピンＸを特定する。そして、解析部３ａは、特定した出力ピンＸを有するセル１７＿１の識別子「ｉｎｓｔＡ」と、特定した出力ピンＸの名称「Ｘ」とを「．」で結合した駆動ピン情報「ｉｎｓｔＡ．Ｘ」を生成する。そして、図６に示すように、解析部３ａは、既に特定したセル１６＿２の入力ピンＣＷＳの名称「ＣＷＳ」に対応付けて、生成した駆動ピン情報「ｉｎｓｔＡ．Ｘ」を、「駆動ピン」の項目に登録する。
【００５２】
また、解析部３ａは、回路情報２ａが示す図２の半導体集積回路を解析し、既に特定したセル１６＿２の入力ピンＩＨが配線１４＿４を介して接続されたセル１７＿３の駆動ピンである出力ピンＸを特定する。そして、解析部３ａは、特定した出力ピンＸを有するセル１７＿３の識別子「ｉｎｓｔＣ」と、特定した出力ピンＸの名称「Ｘ」とを「．」で結合した駆動ピン情報「ｉｎｓｔＣ．Ｘ」を生成する。そして、図６に示すように、解析部３ａは、既に特定したセル１６＿２の入力ピンＩＨの名称「ＩＨ」に対応付けて、生成した駆動ピン情報「ｉｎｓｔＣ．Ｘ」を、「駆動ピン」の項目に登録する。
【００５３】
また、解析部３ａは、回路情報２ａが示す図２の半導体集積回路を解析し、既に特定したセル１６＿３の入力ピンＡ１が配線１４＿１を介して接続されたセル１３＿１の駆動ピンである出力ピンＸを特定する。そして、解析部３ａは、特定した出力ピンＸを有するセル１３＿１の識別子「ｃｌｋ１３＿１」と、特定した出力ピンＸの名称「Ｘ」とを「．」で結合した駆動ピン情報「ｃｌｋ１３＿１．Ｘ」を生成する。そして、図６に示すように、解析部３ａは、既に特定したセル１６＿３の入力ピンＡ１の名称「Ａ１」に対応付けて、生成した駆動ピン情報「ｃｌｋ１３＿１．Ｘ」を、「駆動ピン」の項目に登録する。
【００５４】
また、解析部３ａは、回路情報２ａが示す図２の半導体集積回路を解析し、既に特定したセル１６＿３の入力ピンＣＷＳが配線１４＿２を介して接続されたセル１７＿１の駆動ピンである出力ピンＸを特定する。そして、解析部３ａは、特定した出力ピンＸを有するセル１７＿１の識別子「ｉｎｓｔＡ」と、特定した出力ピンＸの名称「Ｘ」とを「．」で結合した駆動ピン情報「ｉｎｓｔＡ．Ｘ」を生成する。そして、図６に示すように、解析部３ａは、既に特定したセル１６＿３の入力ピンＣＷＳの名称「ＣＷＳ」に対応付けて、生成した駆動ピン情報「ｉｎｓｔＡ．Ｘ」を、「駆動ピン」の項目に登録する。
【００５５】
また、解析部３ａは、回路情報２ａが示す図２の半導体集積回路を解析し、既に特定したセル１６＿３の入力ピンＩＨが配線１４＿３を介して接続されたセル１７＿２の駆動ピンである出力ピンＸを特定する。そして、解析部３ａは、特定した出力ピンＸを有するセル１７＿２の識別子「ｉｎｓｔＢ」と、特定した出力ピンＸの名称「Ｘ」とを「．」で結合した駆動ピン情報「ｉｎｓｔＢ．Ｘ」を生成する。そして、図６に示すように、解析部３ａは、既に特定したセル１６＿３の入力ピンＩＨの名称「ＩＨ」に対応付けて、生成した駆動ピン情報「ｉｎｓｔＢ．Ｘ」を、「駆動ピン」の項目に登録する。
【００５６】
そして、解析部３ａは、第２の解析テーブル２ｅの「識別子」の項目に登録された識別子が示す駆動セルについて、「駆動ピン」の項目に登録された全ての駆動ピン情報が一致する他の駆動セルを特定する。そして、解析部３ａは、特定した他の駆動セルの識別子を第２の解析テーブル２ｅの「全入力ピン同接続」の項目に登録する。例えば、図６の例に示すように、「駆動ピン」の項目に駆動ピン情報が登録された場合には、解析部３ａは、「識別子」の項目に登録された識別子「ｃｈｐ１」が示すセル１６＿１について、次の処理を行う。すなわち、解析部３ａは、「駆動ピン」の項目に登録された駆動ピン情報（「ｃｌｋ１３＿１．Ｘ」，「ｉｎｓｔＡ．Ｘ」，「ｉｎｓｔＢ．Ｘ」）が一致する他のセル１６＿３（識別子「ｃｈｐ３」が示すセル）を特定する。そして、図６に示すように、解析部３ａは、特定した他のセル１６＿３の識別子「ｃｈｐ３」を、セル１６＿１の識別子「ｃｈｐ１」に対応付けて、「全入力ピン同接続」の項目に登録する。
【００５７】
また、解析部３ａは、「識別子」の項目に登録された識別子「ｃｈｐ３」が示すセル１６＿３について、次の処理を行う。すなわち、解析部３ａは、「駆動ピン」の項目に登録された駆動ピン情報（「ｃｌｋ１３＿１．Ｘ」，「ｉｎｓｔＡ．Ｘ」，「ｉｎｓｔＢ．Ｘ」）が一致する他のセル１６＿１（識別子「ｃｈｐ１」が示すセル）を特定する。そして、図６に示すように、解析部３ａは、特定した他のセル１６＿１の識別子「ｃｈｐ１」を、セル１６＿３の識別子「ｃｈｐ３」に対応付けて、「全入力ピン同接続」の項目に登録する。
【００５８】
ここで、入力ピンに入力される信号が同一のセルは、クロックツリーを再分配する際に、交換することができる。そのため、解析部３ａは、上述したような方法で、「全入力ピン同接続」の項目に、交換可能な駆動セルの識別子を登録する。
【００５９】
また、解析部３ａは、回路情報２ａが示す半導体集積回路を解析し、後述する再分配処理を行う前の半導体集積回路において、駆動セルに接続されたセルを特定する。そして、解析部３ａは、特定したセルの識別子を第２の解析テーブル２ｅの「再分配前接続ｌａｔｃｈ，ｆｆ」の項目に登録する。例えば、図２の半導体集積回路を示す回路情報２ａを取得した場合には、解析部３ａは、次のような処理を行う。すなわち、解析部３ａは、回路情報２ａが示す図２の半導体集積回路を解析し、セル１６＿１に接続されたセル１８＿１〜１８＿５を特定する。また、解析部３ａは、セル１６＿２に接続されたセル１８＿６〜１８＿９を特定する。また、解析部３ａは、セル１６＿３に接続されたセル１８＿１０〜１８＿１６を特定する。そして、図６に示すように、解析部３ａは、特定したセル１８＿１〜１８＿５の識別子「ＦＦ１」〜「ＦＦ５」を、セル１６＿１の識別子「ｃｈｐ１」に対応付けて、「再分配前接続ｌａｔｃｈ，ｆｆ」の項目に登録する。また、図６に示すように、解析部３ａは、特定したセル１８＿６〜１８＿９の識別子「ＦＦ６」〜「ＦＦ９」を、セル１６＿２の識別子「ｃｈｐ２」に対応付けて、「再分配前接続ｌａｔｃｈ，ｆｆ」の項目に登録する。また、図６に示すように、解析部３ａは、特定したセル１８＿１０〜１８＿１６の識別子「ＦＦ１０」〜「ＦＦ１４」，「ＦＦＡ」，「ＦＦＢ」を、セル１６＿３の識別子「ｃｈｐ３」に対応付けて、「再分配前接続ｌａｔｃｈ，ｆｆ」の項目に登録する。
【００６０】
また、解析部３ａは、再分配処理を行う前の半導体集積回路において、グループが再設定される対象ではないセルの前段の駆動セルを特定する。そして、解析部３ａは、特定した駆動セルの識別子が登録された、第２の解析テーブル２ｅのレコードを特定する。そして、解析部３ａは、特定したレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、グループが再設定される対象ではないセルの識別子を登録する。これにより、「再分配後接続ｌａｔｃｈ，ｆｆ」の項目には、再分配処理を行う前の半導体集積回路において、駆動セルに接続されたセルのうち、再分配処理が行われた後の半導体集積回路においても、かかる駆動セルに接続されるセルの識別子が登録される。
【００６１】
また、解析部３ａは、「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子が登録された場合には、次の処理を行う。すなわち、解析部３ａは、「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に識別子が登録されたセルの個数を、「識別子」の項目に登録された識別子が示す駆動セルのファンアウト数として、「出力ピンｆａｎｏｕｔ数」の項目に登録する。一方、解析部３ａは、「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子が登録されておらず、「再分配前接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子が登録されている場合には、次の処理を行う。すなわち、解析部３ａは、「再分配前接続ｌａｔｃｈ，ｆｆ」の項目に識別子が登録されたセルの個数を、「識別子」の項目に登録された識別子が示す駆動セルのファンアウト数として、「出力ピンｆａｎｏｕｔ数」の項目に登録する。
【００６２】
例えば、図６の例に示すように、「再分配前接続ｌａｔｃｈ，ｆｆ」及び「再分配後接続ｌａｔｃｈ，ｆｆ」の両項目、または、「再分配前接続ｌａｔｃｈ，ｆｆ」の項目に識別子が登録されている場合には、解析部３ａは、次の処理を行う。すなわち、解析部３ａは、「識別子」の項目に登録された識別子「ｃｈｐ１」が示すセル１６＿１のファンアウト数として、「再分配前接続ｌａｔｃｈ，ｆｆ」の項目に識別子が登録されたセルの個数「５」を、「出力ピンｆａｎｏｕｔ数」の項目に登録する。また、解析部３ａは、「識別子」の項目に登録された識別子「ｃｈｐ２」が示すセル１６＿２のファンアウト数として、「再分配前接続ｌａｔｃｈ，ｆｆ」の項目に識別子が登録されたセルの個数「４」を、「出力ピンｆａｎｏｕｔ数」の項目に登録する。また、解析部３ａは、「識別子」の項目に登録された識別子「ｃｈｐ３」が示すセル１６＿３のファンアウト数として、「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に識別子が登録されたセルの個数「２」を、「出力ピンｆａｎｏｕｔ数」の項目に登録する。
【００６３】
また、解析部３ａは、取得したライブラリから、ライブラリに登録された駆動セルの出力ピンのドライバビリティを取得する。そして、解析部３ａは、駆動セルの識別子に対応付けて、第２の解析テーブル２ｅの「出力ピンドライバビリティ」の項目に、取得したドライバビリティを駆動セル毎に登録する。例えば、図６に示すように、解析部３ａは、セル１６＿１の識別子「ｃｈｐ１」に対応付けて、「出力ピンドライバビリティ」の項目に、出力ピンのドライバビリティ「３．８８３」を登録する。他のセル１６＿２，１６＿３についても同様に、解析部３ａは、図６に示すように、駆動セルの識別子に対応付けて、「出力ピンドライバビリティ」の項目に、出力ピンのドライバビリティを登録する。
【００６４】
選択部３ｂは、処理対象のセルを選択する。選択部３ｂの一態様について説明する。例えば、選択部３ｂは、解析部３ａにより、第１の解析テーブル２ｄ及び第２の解析テーブル２ｅに各種の解析結果が登録されると、以下で説明する再分配処理を実行する。
【００６５】
すなわち、再分配処理では、選択部３ｂは、まず、再分配情報２ｂが示す各グループを１つずつ選択する。例えば、再分配情報２ｂの内容が図３に示すような内容である場合には、選択部３ｂは、グループ１〜グループ５のうち、未選択のグループを１つずつ選択する。
【００６６】
そして、選択部３ｂは、グループを１つ選択するたびに、選択したグループに属するセルを処理対象のセルとして１つずつ選択する。例えば、図３の例において、グループ１を選択した場合には、グループ１に属するセル１８＿１，１８＿２，１８＿６，１８＿８を１つずつ処理対象のセルとして選択する。
【００６７】
上述したような方法で、選択部３ｂは、再分配情報２ｂが示す全てのセルを処理対象のセルとして１つずつ選択する。
【００６８】
再分配処理部３ｃは、クロックツリーを再分配する各種の処理を実行する。再分配処理部３ｃの一態様について説明する。例えば、再分配処理部３ｃは、選択部３ｂによりセルが選択されるたびに、第１の解析テーブル２ｄを参照し、次の処理を行う。すなわち、再分配処理部３ｃは、選択されたセルの識別子が「ｆｆ，ｌａｔｃｈ」の項目に登録されたレコードの「再分配前前段ｃｅｌｌ」に登録された駆動セルの識別子（第１の駆動セルの識別子）を取得する。そして、再分配処理部３ｃは、第２の解析テーブル２ｅを参照し、取得した第１の駆動セルの識別子が「識別子」の項目に登録されたレコードの「全入力ピン同接続」の項目に、他の駆動セルの識別子（第２の駆動セルの識別子）が登録されているか否かを判定する。
【００６９】
「全入力ピン同接続」の項目に、他の駆動セルの識別子（第２の駆動セルの識別子）が登録されている場合には、再分配処理部３ｃは、他の駆動セルの識別子（第２の駆動セルの識別子）を取得する。
【００７０】
「全入力ピン同接続」の項目に、他の駆動セルの識別子（第２の駆動セルの識別子）が登録されていないと判定した場合、または、第２の駆動セルの識別子を取得した場合には、再分配処理部３ｃは、次の処理を行う。すなわち、再分配処理部３ｃは、第２の解析テーブル２ｅを参照し、第１の駆動セルの識別子が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されているか否かを判定する。
【００７１】
「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されている場合には、再分配処理部３ｃは、「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に登録されたセルの識別子（第１のセルの識別子）を取得する。
【００７２】
また、第２の駆動セルの識別子を取得した場合には、再分配処理部３ｃは、第２の解析テーブル２ｅを参照し、次の処理を行う。すなわち、再分配処理部３ｃは、第２の駆動セルの識別子が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第２のセルの識別子）が登録されているか否かを判定する。
【００７３】
「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第２のセルの識別子）が登録されている場合には、再分配処理部３ｃは、「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に登録されたセルの識別子（第２のセルの識別子）を取得する。
【００７４】
そして、再分配処理部３ｃは、再分配情報２ｂを参照し、選択部３ｂにより選択されたセルが属するグループと同一のグループに属する他のセルがあるか否かを判定する。他のセルがある場合には、再分配処理部３ｃは、他のセルを特定する。
【００７５】
そして、第１のセルの識別子及び第２のセルの識別子を取得した場合には、再分配処理部３ｃは、特定した他のセルの識別子が、第１のセルの識別子及び第２のセルの識別子の中に含まれるか否かを判定する。このようにして、再分配処理部３ｃは、選択されたセルのクロックツリーの再分配前の前段の駆動セルと、入力される信号が同一の駆動セルに後述の接続処理部３ｅにより接続されたセルが、選択されたセルと同一のグループに属するか否かを判定する。なお、特定した他のセルの識別子が、取得した第１のセルの識別子及び第２のセルの識別子の中に含まれると判定した場合には、再分配処理部３ｃは、次のように判定する。すなわち、再分配処理部３ｃは、選択部３ｂにより選択されたセルのクロックツリーの再分配前の前段の駆動セルと、入力される信号が同一の駆動セルに接続されたセルが、選択されたセルと同一のグループに属すると判定する。一方、特定した他のセルの識別子が、取得した第１のセルの識別子及び第２のセルの識別子の中に含まれないと判定した場合には、再分配処理部３ｃは、次のように判定する。すなわち、再分配処理部３ｃは、選択部３ｂにより選択されたセルのクロックツリーの再分配前の前段の駆動セルと、入力される信号が同一の駆動セルに接続されたセルが、選択されたセルと同一のグループに属さないと判定する。
【００７６】
また、第１のセルの識別子及び第２のセルの識別子のうち、第１のセルの識別子を取得した場合には、再分配処理部３ｃは、特定した他のセルの識別子が、第１のセルの識別子に含まれるか否かを判定する。このようにして、再分配処理部３ｃは、選択されたセルのクロックツリーの再分配前の前段の駆動セルと、入力される信号が同一の駆動セルに後述の接続処理部３ｅにより接続されたセルが、選択されたセルと同一のグループに属するか否かを判定する。なお、特定した他のセルの識別子が、取得した第１のセルの識別子に含まれると判定した場合には、再分配処理部３ｃは、次のように判定する。すなわち、再分配処理部３ｃは、選択部３ｂにより選択されたセルのクロックツリーの再分配前の前段の駆動セルと、入力される信号が同一の駆動セルに接続されたセルが、選択されたセルと同一のグループに属すると判定する。一方、特定した他のセルの識別子が、取得した第１のセルの識別子に含まれないと判定した場合には、再分配処理部３ｃは、次のように判定する。すなわち、再分配処理部３ｃは、選択部３ｂにより選択されたセルのクロックツリーの再分配前の前段の駆動セルと、入力される信号が同一の駆動セルに接続されたセルが、選択されたセルと同一のグループに属さないと判定する。
【００７７】
また、第１のセルの識別子及び第２のセルの識別子のうち、第２のセルの識別子を取得した場合には、再分配処理部３ｃは、特定した他のセルの識別子が、第２のセルの識別子に含まれるか否かを判定する。このようにして、再分配処理部３ｃは、選択されたセルのクロックツリーの再分配前の前段の駆動セルと、入力される信号が同一の駆動セルに後述の接続処理部３ｅにより接続されたセルが、選択されたセルと同一のグループに属するか否かを判定する。なお、特定した他のセルの識別子が、取得した第２のセルの識別子に含まれると判定した場合には、再分配処理部３ｃは、次のように判定する。すなわち、再分配処理部３ｃは、選択部３ｂにより選択されたセルのクロックツリーの再分配前の前段の駆動セルと、入力される信号が同一の駆動セルに接続されたセルが、選択されたセルと同一のグループに属すると判定する。一方、特定した他のセルの識別子が、取得した第２のセルの識別子に含まれないと判定した場合には、再分配処理部３ｃは、次のように判定する。すなわち、再分配処理部３ｃは、選択部３ｂにより選択されたセルのクロックツリーの再分配前の前段の駆動セルと、入力される信号が同一の駆動セルに接続されたセルが、選択されたセルと同一のグループに属さないと判定する。
【００７８】
特定した他のセルの識別子が、第１のセルの識別子または第２のセルの識別子に含まれると判定した場合には、再分配処理部３ｃは、次のような処理を行う。すなわち、再分配処理部３ｃは、特定した他のセルの前段の駆動セルの識別子を接続候補ファイル２ｆに登録する。
【００７９】
一方、所定の場合には、再分配処理部３ｃは、第２の解析テーブル２ｅを参照し、次の判定を行う。すなわち、再分配処理部３ｃは、第１の駆動セルの識別子が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されているか否かを判定する。ここでいう所定の場合には、３つの場合がある。１つ目の場合は、再分配処理部３ｃが、第１のセルの識別子を取得しておらず、かつ、第２のセルの識別子を取得していない場合である。２つ目の場合は、再分配処理部３ｃが、選択部３ｂにより選択されたセルが属するグループと同一のグループに属する他のセルがないと判定した場合である。３つ目の場合は、再分配処理部３ｃが、特定した他のセルの識別子が、取得した第１のセルの識別子及び第２のセルの識別子の少なくとも一方に含まれないと判定した場合である。
【００８０】
これにより、再分配処理部３ｃは、選択されたセルのクロックツリー再分配前の前段のセルが、他のセルに接続されているか否かを判定することができる。なお、第１の駆動セルの識別子が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されていると判定した場合には、再分配処理部３ｃは、次のように判定する。すなわち、再分配処理部３ｃは、選択されたセルのクロックツリー再分配前の前段のセルが、他のセルに接続されていると判定する。一方、第１の駆動セルの識別子が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されていないと判定した場合には、再分配処理部３ｃは、次のように判定する。すなわち、再分配処理部３ｃは、選択されたセルのクロックツリー再分配前の前段のセルが、他のセルに接続されていないと判定する。
【００８１】
第１の駆動セルの識別子が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されていないと判定した場合には、再分配処理部３ｃは、次の処理を行う。すなわち、再分配処理部３ｃは、選択されたセルのクロックツリーの再分配前の前段のセルの識別子（第１の駆動セルの識別子）を接続候補ファイル２ｆに登録する。そして、再分配処理部３ｃは、チェック処理部３ｄにデザインルールチェック処理を実行する指示を送信する。これにより、チェック処理部３ｄによってデザインルールチェック処理が実行される。
【００８２】
チェック処理部３ｄによりデザインルールチェック処理が実行された後、再分配処理部３ｃは、後述する判定フラグ２ｇの値が「１」であるか否かを判定することにより、各種のデザインルールを満たすか否かを判定する。後述する判定フラグ２ｇの値が「１」でない場合、すなわち、「０」である場合には、デザインルールを満たさないので、再分配処理部３ｃは、接続候補ファイル２ｆに登録された駆動セルの識別子を削除する。そして、再分配処理部３ｃは、選択されたセルのクロックツリーの再分配前の前段のセル（第１の駆動セル）をコピーする。そして、再分配処理部３ｃは、コピーしたセルの識別子を接続候補ファイル２ｆに登録する。
【００８３】
一方、第１の駆動セルの識別子が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されていると判定した場合には、再分配処理部３ｃは、次の処理を行う。すなわち、再分配処理部３ｃは、選択されたセルのクロックツリーの再分配前の前段のセル（第１の駆動セル）をコピーする。そして、再分配処理部３ｃは、コピーしたセルの識別子を接続候補ファイル２ｆに登録する。
【００８４】
チェック処理部３ｄは、各種のデザインルールのチェックを行う。チェック処理部３ｄの一態様について説明する。例えば、チェック処理部３ｄは、再分配処理部３ｃから送信されたデザインルールチェック処理を実行する指示を受け付けると、まず、判定フラグ２ｇに「ｎｕｌｌ」を登録して、判定フラグ２ｇを初期化する。そして、チェック処理部３ｄは、接続候補ファイル２ｆに登録された駆動セルの識別子を取得する。
【００８５】
そして、チェック処理部３ｄは、取得した識別子が示す駆動セルの出力ピンのドライバビリティを第２の解析テーブル２ｅの「出力ピンドライバビリティ」の項目から取得する。また、チェック処理部３ｄは、取得した識別子が示す駆動セルに、選択されたセルを接続したと仮定した場合に、次の処理を行う。すなわち、チェック処理部３ｄは、取得した識別子が示す駆動セルの出力ピンに接続された全てのセルの入力ピンの容量を第１の解析テーブル２ｄの「入力ピン容量」の項目から取得し、取得した入力ピンの容量の総和を算出する。そして、チェック処理部３ｄは、取得した駆動セルの出力ピンのドライバビリティが、算出した入力ピンの容量の総和以上であるか否かを判定する。取得した駆動セルの出力ピンのドライバビリティが、算出した入力ピンの容量の総和以上でない場合には、チェック処理部３ｄは、デザインルールに違反することを示す「０」を判定フラグ２ｇに登録する。
【００８６】
一方、取得した駆動セルの出力ピンのドライバビリティが、算出した入力ピンの容量の総和以上である場合には、チェック処理部３ｄは、次の処理を行う。すなわち、チェック処理部３ｄは、デザインルール２ｃに登録された最大ファンアウト数を取得する。そして、チェック処理部３ｄは、取得した識別子が示す駆動セルのファンアウト数を第２の解析テーブル２ｅの「出力ピンｆａｎｏｕｔ数」の項目から取得する。そして、チェック処理部３ｄは、取得した識別子が示す駆動セルのファンアウト数が、取得した最大ファンアウト数から１を引いた数（最大ファンアウト数−１）以下であるか否かを判定する。取得した識別子が示す駆動セルのファンアウト数が、（最大ファンアウト数−１）以下でない場合には、チェック処理部３ｄは、デザインルールに違反することを示す「０」を判定フラグ２ｇに登録する。
【００８７】
一方、取得した識別子が示す駆動セルのファンアウト数が、（最大ファンアウト数−１）以下である場合には、チェック処理部３ｄは、次の処理を行う。すなわち、チェック処理部３ｄは、取得した識別子が示す駆動セルに、選択されたセルを接続したと仮定した場合に、取得した識別子が示す駆動セルに接続された全てのセルのスキューが所定の基準を満たすか否かを判定する。所定の基準を満たさないと判定した場合には、チェック処理部３ｄは、デザインルールに違反することを示す「０」を判定フラグ２ｇに登録し、デザインルールチェック処理を終了する。
【００８８】
一方、所定の基準を満たすと判定した場合には、チェック処理部３ｄは、デザインルールに違反しないことを示す「１」を判定フラグ２ｇに登録し、デザインルールチェック処理を終了する。
【００８９】
接続処理部３ｅは、駆動セルとセルとを接続する。接続処理部３ｅの一態様について説明する。接続処理部３ｅは、接続候補ファイル２ｆに登録された識別子が示す駆動セルと、選択部３ｂにより選択されたセルとが接続された情報を生成し、生成した情報を回路情報２ａに追加する。これにより、回路情報２ａが示す半導体集積回路は、追加された情報が示す駆動セルとセルとが接続された状態を表すこととなる。そして、接続処理部３ｅは、選択部３ｂにより選択されたセルの識別子が「ｆｆ，ｌａｔｃｈ」の項目に登録された第１の解析テーブル２ｄのレコードの「再分配後前段ｃｅｌｌ」の項目に、接続候補ファイル２ｆに登録された識別子を登録する。そして、接続処理部３ｅは、接続候補ファイル２ｆに登録された識別子が「識別子」の項目に登録された第２の解析テーブル２ｅのレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、選択部３ｂにより選択されたセルの識別子を登録する。また、接続処理部３ｅは、かかるレコードの「再分配後接続Ｇｒｏｕｐ」の項目に、選択部３ｂにより選択されたセルが属するグループ（再分配情報２ｂが示すグループ）の識別子を登録する。また、接続処理部３ｅは、かかるレコードの「出力ピンｆａｎｏｕｔ数」の項目に登録された数値を１つだけインクリメントする。そして、接続処理部３ｅは、接続候補ファイル２ｆに登録された駆動セルの識別子を削除する。
【００９０】
出力制御部３ｆは、各種の情報を出力するように制御する。例えば、出力制御部３ｆは、選択部３ｂにより未選択のグループがないと判定された場合に、クロックツリーが再分配された、回路情報２ａが示す半導体集積回路を表示するように、出力部１２を制御する。
【００９１】
制御部３は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）などの回路である。
【００９２】
ここで、上述した選択部３ｂ、チェック処理部３ｄ、接続処理部３ｅが実行する各処理の一例について説明する。図７は、各処理において用いられる第１の解析テーブルの一例を示す図である。図８は、各処理において用いられる第２の解析テーブルの一例を示す図である。
【００９３】
図７の例に示すように、選択部３ｂにより処理対象のセルとして、グループ１に属するセル１８＿１が選択されると、再分配処理部３ｃは、次の処理を行う。すなわち、再分配処理部３ｃは、図７に示す第１の解析テーブル２ｄを参照し、選択されたセル１８＿１の識別子「ＦＦ１」が「ｆｆ，ｌａｔｃｈ」の項目に登録されたレコードの「再分配前前段ｃｅｌｌ」に登録された駆動セルの識別子「ｃｈｐ１」を取得する。そして、再分配処理部３ｃは、図８に示す第２の解析テーブル２ｅを参照し、駆動セルの識別子「ｃｈｐ１」が「識別子」の項目に登録されたレコードの「全入力ピン同接続」の項目に登録された他の駆動セルの識別子「ｃｈｐ３」を取得する。そして、再分配処理部３ｃは、第２の解析テーブル２ｅを参照し、駆動セルの識別子「ｃｈｐ１」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されているか否かを判定する。駆動セルの識別子「ｃｈｐ１」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されていないので、再分配処理部３ｃは、第１のセルの識別子を取得しない。
【００９４】
また、駆動セルの識別子「ｃｈｐ３」を取得したので、再分配処理部３ｃは、第２の解析テーブル２ｅを参照し、次の処理を行う。すなわち、再分配処理部３ｃは、駆動セルの識別子「ｃｈｐ３」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第２のセルの識別子）が登録されているか否かを判定する。図８の場合、再分配処理部３ｃは、駆動セルの識別子「ｃｈｐ３」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第２のセルの識別子）「ＦＦＡ」，「ＦＦＢ」が登録されていると判定する。そのため、再分配処理部３ｃは、第２のセルの識別子「ＦＦＡ」，「ＦＦＢ」を取得する。
【００９５】
そして、再分配処理部３ｃは、図３に示す再分配情報２ｂを参照し、選択部３ｂにより選択されたセル１８＿１が属するグループと同一のグループに属する他のセルがあるか否かを判定する。図３の場合では、他のセル１８＿２，１８＿６，１８＿８があるので、再分配処理部３ｃは、他のセル１８＿２，１８＿６，１８＿８を特定する。
【００９６】
そして、第１のセルの識別子及び第２のセルの識別子のうち、第２のセルの識別子「ＦＦＡ」，「ＦＦＢ」を取得したので、再分配処理部３ｃは、次の処理を行う。すなわち、再分配処理部３ｃは、特定した他のセル１８＿２，１８＿６，１８＿８の識別子「ＦＦ２」，「ＦＦ６」，「ＦＦ８」が、第２のセルの識別子「ＦＦＡ」，「ＦＦＢ」に含まれるか否かを判定する。この場合、再分配処理部３ｃは、他のセル１８＿２，１８＿６，１８＿８の識別子「ＦＦ２」，「ＦＦ６」，「ＦＦ８」が、第２のセルの識別子「ＦＦＡ」，「ＦＦＢ」に含まれないと判定する。すなわち、再分配処理部３ｃは、選択部３ｂにより選択されたセルのクロックツリーの再分配前の前段の駆動セルと、入力される信号が同一の駆動セルに接続されたセルが、選択されたセルと同一のグループに属さないと判定する。
【００９７】
そのため、再分配処理部３ｃは、第２の解析テーブル２ｅを参照し、駆動セルの識別子「ｃｈｐ１」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子が登録されているか否かを判定する。駆動セルの識別子「ｃｈｐ１」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されていないので、再分配処理部３ｃは、次の処理を行う。すなわち、再分配処理部３ｃは、選択されたセル１８＿１のクロックツリーの再分配前の前段のセルの識別子「ｃｈｐ１」を接続候補ファイル２ｆに登録する。そして、再分配処理部３ｃは、チェック処理部３ｄにデザインルールチェック処理を実行する指示を送信する。
【００９８】
チェック処理部３ｄは、再分配処理部３ｃから送信されたデザインルールチェック処理を実行する指示を受け付けると、まず、判定フラグ２ｇに「ｎｕｌｌ」を登録して、判定フラグ２ｇを初期化する。そして、チェック処理部３ｄは、接続候補ファイル２ｆに登録された駆動セルの識別子「ｃｈｐ１」を取得する。
【００９９】
そして、チェック処理部３ｄは、取得した識別子「ｃｈｐ１」が示すセル１６＿１の出力ピンＸのドライバビリティ「３．８８３」を第２の解析テーブル２ｅの「出力ピンドライバビリティ」の項目から取得する。また、チェック処理部３ｄは、取得した識別子「ｃｈｐ１」が示すセル１６＿１に、選択されたセル１８＿１を接続したと仮定した場合に、次の処理を行う。すなわち、チェック処理部３ｄは、取得した識別子「ｃｈｐ１」が示すセル１６＿１の出力ピンＸに接続された全てのセル１８＿１の入力ピンの容量を第１の解析テーブル２ｄの「入力ピン容量」の項目から取得し、取得した入力ピンの容量の総和を算出する。すなわち、チェック処理部３ｄは、取得した入力ピンの総和「０．３３６」を算出する。そして、チェック処理部３ｄは、取得した駆動セルの出力ピンのドライバビリティ「３．８８３」が、算出した入力ピンの容量の総和「０．３３６」以上であると判定する。
【０１００】
取得した駆動セルの出力ピンのドライバビリティ「３．８８３」が、算出した入力ピンの容量の総和「０．３３６」以上であると判定したので、チェック処理部３ｄは、次の処理を行う。すなわち、チェック処理部３ｄは、図４に示すデザインルール２ｃに登録された最大ファンアウト数「８」を取得する。そして、チェック処理部３ｄは、取得した識別子「ｃｈｐ１」が示すセル１６＿１のファンアウト数「０」を第２の解析テーブル２ｅの「出力ピンｆａｎｏｕｔ数」の項目から取得する。なお、本実施例では、「出力ピンｆａｎｏｕｔ数」の項目に何も登録されていない場合には、「出力ピンｆａｎｏｕｔ数」の項目に「０」が登録されているものとする。そして、チェック処理部３ｄは、取得した識別子「ｃｈｐ１」が示すセル１６＿１のファンアウト数「０」が、「７」（最大ファンアウト数「８」−「１」）以下であると判定する。取得した識別子「ｃｈｐ１」が示すセル１６＿１のファンアウト数「０」が、「７」以下であると判定したので、チェック処理部３ｄは、次の処理を行う。すなわち、チェック処理部３ｄは、識別子「ｃｈｐ１」が示すセル１６＿１に、選択されたセル１８＿１を接続したと仮定した場合に、識別子「ｃｈｐ１」が示すセル１６＿１に接続された全てのセル１８＿１のスキューが所定の基準を満たすか否かを判定する。ここで、チェック処理部３ｄは、所定の基準を満たすと判定したものとする。そのため、チェック処理部３ｄは、デザインルールに違反しないことを示す「１」を判定フラグ２ｇに登録する。
【０１０１】
そして、再分配処理部３ｃは、判定フラグ２ｇの値が「１」であるか否かを判定することにより、各種のデザインルールを満たすか否かを判定する。再分配処理部３ｃが、判定フラグ２ｇの値が「１」であると判定すると、接続処理部３ｅは、次の処理を行う。すなわち、接続処理部３ｅは、接続候補ファイル２ｆに登録された識別子「ｃｈｐ１」が示す駆動セル１６＿１と、選択部３ｂにより選択されたセル１８＿１とが接続された情報を生成し、生成した情報を回路情報２ａに追加する。これにより、回路情報２ａが示す半導体集積回路は、追加された情報が示すセル１６＿１とセル１８＿１とが接続された状態を表すこととなる。そして、接続処理部３ｅは、図９に示すように、選択部３ｂにより選択されたセル１８＿１の識別子「ＦＦ１」が「ｆｆ，ｌａｔｃｈ」の項目に登録された第１の解析テーブル２ｄのレコードの「再分配後前段ｃｅｌｌ」の項目に、次の識別子を登録する。すなわち、接続処理部３ｅは、「再分配後前段ｃｅｌｌ」の項目に、接続候補ファイル２ｆに登録された識別子「ｃｈｐ１」を登録する。そして、接続処理部３ｅは、図１０に示すように、接続候補ファイル２ｆに登録された識別子「ｃｈｐ１」が「識別子」の項目に登録された第２の解析テーブル２ｅのレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、次の識別子を登録する。すなわち、接続処理部３ｅは、「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、選択されたセル１８＿１の識別子「ＦＦ１」を登録する。また、接続処理部３ｅは、図１０に示すように、かかるレコードの「再分配後接続Ｇｒｏｕｐ」の項目に、選択されたセル１８＿１が属するグループ１（再分配情報２ｂが示すグループ）の識別子「１」を登録する。また、接続処理部３ｅは、図１０に示すように、かかるレコードの「出力ピンｆａｎｏｕｔ数」の項目に登録された数値を１つだけインクリメントする。そして、接続処理部３ｅは、接続候補ファイル２ｆに登録された駆動セルの識別子を削除する。なお、図９は、各処理において用いられる第１の解析テーブルの一例を示す図である。図１０は、各処理において用いられる第２の解析テーブルの一例を示す図である。
【０１０２】
次に、図９の例に示すように、選択部３ｂにより処理対象のセルとして、グループ１に属するセル１８＿２が選択されると、再分配処理部３ｃは、次の処理を行う。すなわち、再分配処理部３ｃは、図９に示す第１の解析テーブル２ｄを参照し、選択されたセル１８＿２の識別子「ＦＦ２」が「ｆｆ，ｌａｔｃｈ」の項目に登録されたレコードの「再分配前前段ｃｅｌｌ」に登録された駆動セルの識別子「ｃｈｐ１」を取得する。そして、再分配処理部３ｃは、図１０に示す第２の解析テーブル２ｅを参照し、駆動セルの識別子「ｃｈｐ１」が「識別子」の項目に登録されたレコードの「全入力ピン同接続」の項目に登録された他の駆動セルの識別子「ｃｈｐ３」を取得する。そして、再分配処理部３ｃは、第２の解析テーブル２ｅを参照し、駆動セルの識別子「ｃｈｐ１」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されているか否かを判定する。図１０の場合では、再分配処理部３ｃは、識別子「ｃｈｐ１」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）「ＦＦ１」が登録されていると判定する。そのため、再分配処理部３ｃは、第１のセルの識別子「ＦＦ１」を取得する。
【０１０３】
また、駆動セルの識別子「ｃｈｐ３」を取得したので、再分配処理部３ｃは、第２の解析テーブル２ｅを参照し、次の処理を行う。すなわち、再分配処理部３ｃは、駆動セルの識別子「ｃｈｐ３」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第２のセルの識別子）が登録されているか否かを判定する。図１０の場合、再分配処理部３ｃは、駆動セルの識別子「ｃｈｐ３」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第２のセルの識別子）「ＦＦＡ」，「ＦＦＢ」が登録されていると判定する。そのため、再分配処理部３ｃは、第２のセルの識別子「ＦＦＡ」，「ＦＦＢ」を取得する。
【０１０４】
そして、再分配処理部３ｃは、図３に示す再分配情報２ｂを参照し、選択部３ｂにより選択されたセル１８＿２が属するグループ１と同一のグループ１に属する他のセルがあるか否かを判定する。図３の場合では、他のセル１８＿１，１８＿６，１８＿８があるので、再分配処理部３ｃは、他のセル１８＿１，１８＿６，１８＿８を特定する。
【０１０５】
そして、第１のセルの識別子「ＦＦ１」及び第２のセルの識別子「ＦＦＡ」，「ＦＦＢ」を取得したので、再分配処理部３ｃは、次の処理を行う。すなわち、再分配処理部３ｃは、特定した他のセル１８＿１，１８＿６，１８＿８の識別子「ＦＦ１」，「ＦＦ６」，「ＦＦ８」が、第１のセルの識別子「ＦＦ１」及び第２のセルの識別子「ＦＦＡ」，「ＦＦＢ」に含まれるか否かを判定する。この場合、再分配処理部３ｃは、他のセル１８＿１の識別子「ＦＦ１」が、第１のセルの識別子「ＦＦ１」に含まれると判定する。すなわち、再分配処理部３ｃは、選択部３ｂにより選択されたセル１８＿２のクロックツリーの再分配前の前段のセル１６＿１に接続されたセル１８＿１が、選択されたセル１８＿２と同一のグループに属すると判定する。
【０１０６】
そのため、再分配処理部３ｃは、特定した他のセル１８＿１の前段のセル１６＿１の識別子「ｃｈｐ１」を接続候補ファイル２ｆに登録する。そして、再分配処理部３ｃは、チェック処理部３ｄにデザインルールチェック処理を実行する指示を送信する。
【０１０７】
チェック処理部３ｄは、再分配処理部３ｃから送信されたデザインルールチェック処理を実行する指示を受け付けると、まず、判定フラグ２ｇに「ｎｕｌｌ」を登録して、判定フラグ２ｇを初期化する。そして、チェック処理部３ｄは、接続候補ファイル２ｆに登録された駆動セルの識別子「ｃｈｐ１」を取得する。
【０１０８】
そして、チェック処理部３ｄは、取得した識別子「ｃｈｐ１」が示すセル１６＿１の出力ピンＸのドライバビリティ「３．８８３」を第２の解析テーブル２ｅの「出力ピンドライバビリティ」の項目から取得する。また、チェック処理部３ｄは、取得した識別子「ｃｈｐ１」が示すセル１６＿１に、選択されたセル１８＿２を接続したと仮定した場合に、次の処理を行う。すなわち、チェック処理部３ｄは、識別子「ｃｈｐ１」が示すセル１６＿１の出力ピンＸに接続された全てのセル１８＿１，１８＿２の入力ピンの容量を第１の解析テーブル２ｄの「入力ピン容量」の項目から取得し、取得した入力ピンの容量の総和を算出する。すなわち、チェック処理部３ｄは、取得した入力ピンの総和「０．９５８」（「０．３３６」＋「０．６２２」）を算出する。そして、チェック処理部３ｄは、取得した駆動セルの出力ピンのドライバビリティ「３．８８３」が、算出した入力ピンの容量の総和「０．９５８」以上であると判定する。
【０１０９】
取得した駆動セルの出力ピンのドライバビリティ「３．８８３」が、算出した入力ピンの容量の総和「０．９５８」以上であると判定したので、チェック処理部３ｄは、次の処理を行う。すなわち、チェック処理部３ｄは、図４に示すデザインルール２ｃに登録された最大ファンアウト数「８」を取得する。そして、チェック処理部３ｄは、取得した識別子「ｃｈｐ１」が示すセル１６＿１のファンアウト数「１」を図１０に示す第２の解析テーブル２ｅの「出力ピンｆａｎｏｕｔ数」の項目から取得する。そして、チェック処理部３ｄは、取得した識別子「ｃｈｐ１」が示すセル１６＿１のファンアウト数「１」が、「７」（最大ファンアウト数「８」−「１」）以下であると判定する。取得した識別子「ｃｈｐ１」が示すセル１６＿１のファンアウト数「１」が、「７」以下であると判定したので、チェック処理部３ｄは、次の処理を行う。すなわち、チェック処理部３ｄは、識別子「ｃｈｐ１」が示すセル１６＿１に、セル１８＿２を接続したと仮定した場合に、識別子「ｃｈｐ１」が示すセル１６＿１に接続された全てのセル１８＿１，１８＿２のスキューが所定の基準を満たすか否かを判定する。ここで、チェック処理部３ｄは、所定の基準を満たすと判定したものとする。そのため、チェック処理部３ｄは、デザインルールに違反しないことを示す「１」を判定フラグ２ｇに登録する。
【０１１０】
そして、再分配処理部３ｃは、判定フラグ２ｇの値が「１」であるか否かを判定することにより、各種のデザインルールを満たすか否かを判定する。再分配処理部３ｃが、判定フラグ２ｇの値が「１」であると判定すると、接続処理部３ｅは、次の処理を行う。すなわち、接続処理部３ｅは、接続候補ファイル２ｆに登録された識別子「ｃｈｐ１」が示す駆動セル１６＿１と、選択部３ｂにより選択されたセル１８＿２とが接続された情報を生成し、生成した情報を回路情報２ａに追加する。これにより、回路情報２ａが示す半導体集積回路は、追加された情報が示すセル１６＿１とセル１８＿２とが接続された状態を表すこととなる。そして、接続処理部３ｅは、図１１に示すように、選択部３ｂにより選択されたセル１８＿２の識別子「ＦＦ２」が「ｆｆ，ｌａｔｃｈ」の項目に登録された第１の解析テーブル２ｄのレコードの「再分配後前段ｃｅｌｌ」の項目に、次の識別子を登録する。すなわち、接続処理部３ｅは、「再分配後前段ｃｅｌｌ」の項目に、接続候補ファイル２ｆに登録された識別子「ｃｈｐ１」を登録する。そして、接続処理部３ｅは、図１２に示すように、接続候補ファイル２ｆに登録された識別子「ｃｈｐ１」が「識別子」の項目に登録された第２の解析テーブル２ｅのレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、次の識別子を登録する。すなわち、接続処理部３ｅは、「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、選択されたセル１８＿２の識別子「ＦＦ２」を登録する。また、接続処理部３ｅは、図１２に示すように、かかるレコードの「再分配後接続Ｇｒｏｕｐ」の項目に、選択されたセル１８＿２が属するグループ１（再分配情報２ｂが示すグループ）の識別子「１」を登録する。また、接続処理部３ｅは、図１２に示すように、かかるレコードの「出力ピンｆａｎｏｕｔ数」の項目に登録された数値を１つだけインクリメントする。そして、接続処理部３ｅは、接続候補ファイル２ｆに登録された駆動セルの識別子を削除する。なお、図１１は、各処理において用いられる第１の解析テーブルの一例を示す図である。図１２は、各処理において用いられる第２の解析テーブルの一例を示す図である。
【０１１１】
次に、図１１の例に示すように、選択部３ｂにより処理対象のセルとして、グループ１に属するセル１８＿６が選択されると、再分配処理部３ｃは、次の処理を行う。すなわち、再分配処理部３ｃは、図１１に示す第１の解析テーブル２ｄを参照し、選択されたセル１８＿６の識別子「ＦＦ６」が「ｆｆ，ｌａｔｃｈ」の項目に登録されたレコードの「再分配前前段ｃｅｌｌ」に登録された駆動セルの識別子「ｃｈｐ２」を取得する。そして、再分配処理部３ｃは、図１２に示す第２の解析テーブル２ｅを参照し、駆動セルの識別子「ｃｈｐ２」が「識別子」の項目に登録されたレコードの「全入力ピン同接続」の項目に他の駆動セルの識別子が登録されているか否かを判定する。図１２の場合では、再分配処理部３ｃは、駆動セルの識別子「ｃｈｐ２」が「識別子」の項目に登録されたレコードの「全入力ピン同接続」の項目に他の駆動セルの識別子が登録されていないと判定する。そして、再分配処理部３ｃは、第２の解析テーブル２ｅを参照し、駆動セルの識別子「ｃｈｐ２」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されているか否かを判定する。図１２の場合では、再分配処理部３ｃは、識別子「ｃｈｐ２」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されていないと判定する。
【０１１２】
そのため、再分配処理部３ｃは、選択されたセル１８＿６のクロックツリーの再分配前の前段のセルの識別子（第１の駆動セルの識別子）「ｃｈｐ２」を接続候補ファイル２ｆに登録する。そして、再分配処理部３ｃは、チェック処理部３ｄにデザインルールチェック処理を実行する指示を送信する。
【０１１３】
チェック処理部３ｄは、再分配処理部３ｃから送信されたデザインルールチェック処理を実行する指示を受け付けると、まず、判定フラグ２ｇに「ｎｕｌｌ」を登録して、判定フラグ２ｇを初期化する。そして、チェック処理部３ｄは、接続候補ファイル２ｆに登録された駆動セルの識別子「ｃｈｐ２」を取得する。
【０１１４】
そして、チェック処理部３ｄは、取得した識別子「ｃｈｐ２」が示すセル１６＿２の出力ピンＸのドライバビリティ「５．２９１」を第２の解析テーブル２ｅの「出力ピンドライバビリティ」の項目から取得する。また、チェック処理部３ｄは、取得した識別子「ｃｈｐ２」が示すセル１６＿２に、選択されたセル１８＿６を接続したと仮定した場合に、次の処理を行う。すなわち、チェック処理部３ｄは、取得した識別子「ｃｈｐ２」が示すセル１６＿２の出力ピンＸに接続された全てのセル１８＿６の入力ピンの容量を第１の解析テーブル２ｄの「入力ピン容量」の項目から取得し、取得した入力ピンの容量の総和を算出する。すなわち、チェック処理部３ｄは、取得した入力ピンの総和「０．５３７」を算出する。そして、チェック処理部３ｄは、取得した駆動セルの出力ピンのドライバビリティ「５．２９１」が、算出した入力ピンの容量の総和「０．５３７」以上であると判定する。
【０１１５】
取得した駆動セルの出力ピンのドライバビリティ「５．２９１」が、算出した入力ピンの容量の総和「０．５３７」以上であると判定したので、チェック処理部３ｄは、次の処理を行う。すなわち、チェック処理部３ｄは、図４に示すデザインルール２ｃに登録された最大ファンアウト数「８」を取得する。そして、チェック処理部３ｄは、取得した識別子「ｃｈｐ２」が示すセル１６＿２のファンアウト数「０」を図１２に示す第２の解析テーブル２ｅの「出力ピンｆａｎｏｕｔ数」の項目から取得する。そして、チェック処理部３ｄは、取得した識別子「ｃｈｐ２」が示すセル１６＿２のファンアウト数「０」が、「７」（最大ファンアウト数「８」−「１」）以下であると判定する。取得した識別子「ｃｈｐ２」が示すセル１６＿２のファンアウト数「０」が、「７」以下であると判定したので、チェック処理部３ｄは、次の判定を行う。すなわち、チェック処理部３ｄは、識別子「ｃｈｐ２」が示すセル１６＿２に、選択されたセル１８＿６を接続したと仮定した場合に、識別子「ｃｈｐ２」が示すセル１６＿２に接続された全てのセル１８＿６のスキューが所定の基準を満たすか否かを判定する。ここで、チェック処理部３ｄは、所定の基準を満たすと判定したものとする。そのため、チェック処理部３ｄは、デザインルールに違反しないことを示す「１」を判定フラグ２ｇに登録する。
【０１１６】
そして、再分配処理部３ｃは、判定フラグ２ｇの値が「１」であるか否かを判定することにより、各種のデザインルールを満たすか否かを判定する。再分配処理部３ｃが、判定フラグ２ｇの値が「１」であると判定すると、接続処理部３ｅは、次の処理を行う。すなわち、接続処理部３ｅは、接続候補ファイル２ｆに登録された識別子「ｃｈｐ２」が示す駆動セル１６＿２と、選択部３ｂにより選択されたセル１８＿６とが接続された情報を生成し、生成した情報を回路情報２ａに追加する。これにより、回路情報２ａが示す半導体集積回路は、追加された情報が示すセル１６＿２とセル１８＿６とが接続された状態を表すこととなる。そして、接続処理部３ｅは、図１３に示すように、選択部３ｂにより選択されたセル１８＿６の識別子「ＦＦ６」が「ｆｆ，ｌａｔｃｈ」の項目に登録された第１の解析テーブル２ｄのレコードの「再分配後前段ｃｅｌｌ」の項目に、次の識別子を登録する。すなわち、接続処理部３ｅは、「再分配後前段ｃｅｌｌ」の項目に、接続候補ファイル２ｆに登録された識別子「ｃｈｐ２」を登録する。そして、接続処理部３ｅは、図１４に示すように、接続候補ファイル２ｆに登録された識別子「ｃｈｐ２」が「識別子」の項目に登録された第２の解析テーブル２ｅのレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、次の識別子を登録する。すなわち、接続処理部３ｅは、「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、選択されたセル１８＿６の識別子「ＦＦ６」を登録する。また、接続処理部３ｅは、図１４に示すように、かかるレコードの「再分配後接続Ｇｒｏｕｐ」の項目に、選択されたセル１８＿６が属するグループ１（再分配情報２ｂが示すグループ）の識別子「１」を登録する。また、接続処理部３ｅは、図１４に示すように、かかるレコードの「出力ピンｆａｎｏｕｔ数」の項目に登録された数値を１つだけインクリメントする。そして、接続処理部３ｅは、接続候補ファイル２ｆに登録された駆動セルの識別子を削除する。なお、図１３は、各処理において用いられる第１の解析テーブルの一例を示す図である。図１４は、各処理において用いられる第２の解析テーブルの一例を示す図である。
【０１１７】
次に、図１３の例に示すように、選択部３ｂにより処理対象のセルとして、グループ１に属するセル１８＿８が選択されると、再分配処理部３ｃは、図１３に示す第１の解析テーブル２ｄを参照し、次の処理を行う。すなわち、再分配処理部３ｃは、選択されたセル１８＿８の識別子「ＦＦ８」が「ｆｆ，ｌａｔｃｈ」の項目に登録されたレコードの「再分配前前段ｃｅｌｌ」に登録された駆動セルの識別子「ｃｈｐ２」を取得する。そして、再分配処理部３ｃは、図１４に示す第２の解析テーブル２ｅを参照し、駆動セルの識別子「ｃｈｐ２」が「識別子」の項目に登録されたレコードの「全入力ピン同接続」の項目に他の駆動セルの識別子が登録されているか否かを判定する。図１４の場合では、再分配処理部３ｃは、駆動セルの識別子「ｃｈｐ２」が「識別子」の項目に登録されたレコードの「全入力ピン同接続」の項目に他の駆動セルの識別子が登録されていないと判定する。そして、再分配処理部３ｃは、第２の解析テーブル２ｅを参照し、駆動セルの識別子「ｃｈｐ２」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されているか否かを判定する。図１４の場合では、再分配処理部３ｃは、識別子「ｃｈｐ２」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）「ＦＦ６」が登録されていると判定する。
【０１１８】
そして、再分配処理部３ｃは、図３に示す再分配情報２ｂを参照し、選択部３ｂにより選択されたセル１８＿８が属するグループ１と同一のグループ１に属する他のセルがあるか否かを判定する。図３の場合では、他のセル１８＿１，１８＿２，１８＿６があるので、再分配処理部３ｃは、他のセル１８＿１，１８＿２，１８＿６を特定する。
【０１１９】
そして、第１のセルの識別子「ＦＦ６」を取得したので、再分配処理部３ｃは、次の処理を行う。すなわち、再分配処理部３ｃは、特定した他のセル１８＿１，１８＿２，１８＿６の識別子「ＦＦ１」，「ＦＦ２」，「ＦＦ６」が、第１のセルの識別子「ＦＦ６」に含まれるか否かを判定する。この場合、再分配処理部３ｃは、他のセル１８＿６の識別子「ＦＦ６」が、第１のセルの識別子「ＦＦ６」に含まれると判定する。すなわち、再分配処理部３ｃは、選択部３ｂにより選択されたセル１８＿８のクロックツリーの再分配前の前段のセル１６＿２に接続されたセル１８＿６が、選択されたセル１８＿８と同一のグループに属すると判定する。
【０１２０】
そのため、再分配処理部３ｃは、特定した他のセル１８＿６の前段のセル１６＿２の識別子「ｃｈｐ２」を接続候補ファイル２ｆに登録する。そして、再分配処理部３ｃは、チェック処理部３ｄにデザインルールチェック処理を実行する指示を送信する。
【０１２１】
チェック処理部３ｄは、再分配処理部３ｃから送信されたデザインルールチェック処理を実行する指示を受け付けると、まず、判定フラグ２ｇに「ｎｕｌｌ」を登録して、判定フラグ２ｇを初期化する。そして、チェック処理部３ｄは、接続候補ファイル２ｆに登録された駆動セルの識別子「ｃｈｐ２」を取得する。
【０１２２】
そして、チェック処理部３ｄは、取得した識別子「ｃｈｐ２」が示すセル１６＿２の出力ピンＸのドライバビリティ「５．２９１」を第２の解析テーブル２ｅの「出力ピンドライバビリティ」の項目から取得する。また、チェック処理部３ｄは、取得した識別子「ｃｈｐ２」が示すセル１６＿２に、選択されたセル１８＿８を接続したと仮定した場合に、次の処理を行う。すなわち、チェック処理部３ｄは、識別子「ｃｈｐ２」が示すセル１６＿２の出力ピンＸに接続された全てのセル１８＿６，１８＿８の入力ピンの容量を第１の解析テーブル２ｄの「入力ピン容量」の項目から取得し、取得した入力ピンの容量の総和を算出する。すなわち、チェック処理部３ｄは、取得した入力ピンの総和「０．９８３」（「０．５３７」＋「０．４４６」）を算出する。そして、チェック処理部３ｄは、取得した駆動セルの出力ピンのドライバビリティ「５．２９１」が、算出した入力ピンの容量の総和「０．９８３」以上であると判定する。
【０１２３】
取得した駆動セルの出力ピンのドライバビリティ「５．２９１」が、算出した入力ピンの容量の総和「０．９８３」以上であると判定したので、チェック処理部３ｄは、次の処理を行う。すなわち、チェック処理部３ｄは、図４に示すデザインルール２ｃに登録された最大ファンアウト数「８」を取得する。そして、チェック処理部３ｄは、取得した識別子「ｃｈｐ２」が示すセル１６＿２のファンアウト数「１」を図１４に示す第２の解析テーブル２ｅの「出力ピンｆａｎｏｕｔ数」の項目から取得する。そして、チェック処理部３ｄは、取得した識別子「ｃｈｐ２」が示すセル１６＿２のファンアウト数「１」が、「７」（最大ファンアウト数「８」−「１」）以下であると判定する。取得した識別子「ｃｈｐ２」が示すセル１６＿２のファンアウト数「１」が、「７」以下であると判定したので、チェック処理部３ｄは、次の処理を行う。すなわち、チェック処理部３ｄは、識別子「ｃｈｐ２」が示すセル１６＿２に、セル１８＿８を接続したと仮定した場合に、識別子「ｃｈｐ２」が示すセル１６＿２に接続された全てのセル１８＿６，１８＿８のスキューが所定の基準を満たすか否かを判定する。ここで、チェック処理部３ｄは、所定の基準を満たすと判定したものとする。そのため、チェック処理部３ｄは、デザインルールに違反しないことを示す「１」を判定フラグ２ｇに登録する。
【０１２４】
そして、再分配処理部３ｃは、判定フラグ２ｇの値が「１」であるか否かを判定することにより、各種のデザインルールを満たすか否かを判定する。再分配処理部３ｃが、判定フラグ２ｇの値が「１」であると判定すると、接続処理部３ｅは、次の処理を行う。すなわち、接続処理部３ｅは、接続候補ファイル２ｆに登録された識別子「ｃｈｐ２」が示す駆動セル１６＿２と、選択部３ｂにより選択されたセル１８＿８とが接続された情報を生成し、生成した情報を回路情報２ａに追加する。これにより、回路情報２ａが示す半導体集積回路は、追加された情報が示すセル１６＿２とセル１８＿８とが接続された状態を表すこととなる。そして、接続処理部３ｅは、図１５に示すように、選択されたセル１８＿８の識別子「ＦＦ８」が「ｆｆ，ｌａｔｃｈ」の項目に登録された第１の解析テーブル２ｄのレコードの「再分配後前段ｃｅｌｌ」の項目に、次の識別子を登録する。すなわち、接続処理部３ｅは、「再分配後前段ｃｅｌｌ」の項目に、接続候補ファイル２ｆに登録された識別子「ｃｈｐ２」を登録する。そして、接続処理部３ｅは、図１６に示すように、接続候補ファイル２ｆに登録された識別子「ｃｈｐ２」が「識別子」の項目に登録された第２の解析テーブル２ｅのレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、次の識別子を登録する。すなわち、接続処理部３ｅは、「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、選択されたセル１８＿８の識別子「ＦＦ８」を登録する。また、接続処理部３ｅは、図１６に示すように、かかるレコードの「再分配後接続Ｇｒｏｕｐ」の項目に、選択されたセル１８＿８が属するグループ１（再分配情報２ｂが示すグループ）の識別子「１」を登録する。また、接続処理部３ｅは、図１６に示すように、かかるレコードの「出力ピンｆａｎｏｕｔ数」の項目に登録された数値を１つだけインクリメントする。そして、接続処理部３ｅは、接続候補ファイル２ｆに登録された駆動セルの識別子を削除する。なお、図１５は、各処理において用いられる第１の解析テーブルの一例を示す図である。図１６は、各処理において用いられる第２の解析テーブルの一例を示す図である。
【０１２５】
次に、図１５の例に示すように、選択部３ｂにより処理対象のセルとして、グループ２に属するセル１８＿３が選択されると、再分配処理部３ｃは、次の処理を行う。すなわち、再分配処理部３ｃは、図１５に示す第１の解析テーブル２ｄを参照し、選択されたセル１８＿３の識別子「ＦＦ３」が「ｆｆ，ｌａｔｃｈ」の項目に登録されたレコードの「再分配前前段ｃｅｌｌ」に登録された駆動セルの識別子「ｃｈｐ１」を取得する。そして、再分配処理部３ｃは、図１６に示す第２の解析テーブル２ｅを参照し、駆動セルの識別子「ｃｈｐ１」が「識別子」の項目に登録されたレコードの「全入力ピン同接続」の項目に登録された他の駆動セルの識別子「ｃｈｐ３」を取得する。そして、再分配処理部３ｃは、第２の解析テーブル２ｅを参照し、駆動セルの識別子「ｃｈｐ１」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されているか否かを判定する。図１６の場合では、再分配処理部３ｃは、識別子「ｃｈｐ１」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）「ＦＦ１」，「ＦＦ２」が登録されていると判定する。そのため、再分配処理部３ｃは、第１のセルの識別子「ＦＦ１」，「ＦＦ２」を取得する。
【０１２６】
また、駆動セルの識別子「ｃｈｐ３」を取得したので、再分配処理部３ｃは、第２の解析テーブル２ｅを参照し、次の処理を行う。すなわち、再分配処理部３ｃは、駆動セルの識別子「ｃｈｐ３」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第２のセルの識別子）が登録されているか否かを判定する。図１６の場合、再分配処理部３ｃは、駆動セルの識別子「ｃｈｐ３」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第２のセルの識別子）「ＦＦＡ」，「ＦＦＢ」が登録されていると判定する。そのため、再分配処理部３ｃは、第２のセルの識別子「ＦＦＡ」，「ＦＦＢ」を取得する。
【０１２７】
そして、再分配処理部３ｃは、図３に示す再分配情報２ｂを参照し、選択部３ｂにより選択されたセル１８＿３が属するグループ２と同一のグループに属する他のセルがあるか否かを判定する。図３の場合では、他のセル１８＿４，１８＿９，１８＿１０，１８＿１２があるので、再分配処理部３ｃは、他のセル１８＿４，１８＿９，１８＿１０，１８＿１２を特定する。
【０１２８】
そして、第１のセルの識別子「ＦＦ１」，「ＦＦ２」及び第２のセルの識別子「ＦＦＡ」，「ＦＦＢ」を取得したので、再分配処理部３ｃは、次の処理を行う。すなわち、再分配処理部３ｃは、他のセル１８＿４，１８＿９，１８＿１０，１８＿１２の識別子「ＦＦ４」，「ＦＦ９」，「ＦＦ１０」，「ＦＦ１２」が、識別子「ＦＦ１」，「ＦＦ２」，「ＦＦＡ」，「ＦＦＢ」に含まれるか否かを判定する。この場合、再分配処理部３ｃは、識別子「ＦＦ４」，「ＦＦ９」，「ＦＦ１０」，「ＦＦ１２」が、第１のセルの識別子「ＦＦ１」，「ＦＦ２」及び第２のセルの識別子「ＦＦＡ」，「ＦＦＢ」に含まれないと判定する。すなわち、再分配処理部３ｃは、選択部３ｂにより選択されたセルのクロックツリーの再分配前の前段の駆動セルと、入力される信号が同一の駆動セルに接続されたセルが、選択されたセルと同一のグループに属さないと判定する。
【０１２９】
そして、再分配処理部３ｃは、第１の駆動セルの識別子「ｃｈｐ１」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されているか否かを判定する。図１６の場合では、再分配処理部３ｃは、第１の駆動セルの識別子「ｃｈｐ１」が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されていないと判定する。それゆえ、再分配処理部３ｃは、選択されたセル１８＿３のクロックツリーの再分配前の前段のセル（第１の駆動セル）１６＿１をコピーしたセル１６＿１＿２を生成する。そして、再分配処理部３ｃは、コピーしたセル１６＿１＿２の識別子「ｃｈｐ１＿２」を接続候補ファイル２ｆに登録する。
【０１３０】
そして、再分配処理部３ｃは、チェック処理部３ｄにデザインルールチェック処理を実行する指示を送信する。
【０１３１】
チェック処理部３ｄは、再分配処理部３ｃから送信されたデザインルールチェック処理を実行する指示を受け付けると、まず、判定フラグ２ｇに「ｎｕｌｌ」を登録して、判定フラグ２ｇを初期化する。そして、チェック処理部３ｄは、接続候補ファイル２ｆに登録された駆動セルの識別子「ｃｈｐ１＿２」を取得する。
【０１３２】
そして、チェック処理部３ｄは、取得した識別子「ｃｈｐ１＿２」が示すセル１６＿１＿２の出力ピンＸのドライバビリティを次のようにして取得する。すなわち、セル１６＿１＿２は、セル１６＿１のコピーである。それゆえ、セル１６＿１＿２のドライバビリティと、セル１６＿１のドライバビリティとは、同一である。そのため、チェック処理部３ｄは、セル１６＿１の出力ピンＸのドライバビリティ「３．８８３」を第２の解析テーブル２ｅの「出力ピンドライバビリティ」の項目から取得することで、セル１６＿１＿２の出力ピンＸのドライバビリティ「３．８８３」を取得する。また、チェック処理部３ｄは、取得した識別子「ｃｈｐ１＿２」が示すセル１６＿１＿２に、選択されたセル１８＿３を接続したと仮定した場合に、次の処理を行う。すなわち、チェック処理部３ｄは、識別子「ｃｈｐ１＿２」が示すセル１６＿１＿２の出力ピンＸに接続された全てのセル１８＿３の入力ピンの容量を第１の解析テーブル２ｄの「入力ピン容量」の項目から取得し、取得した入力ピンの容量の総和を算出する。すなわち、チェック処理部３ｄは、取得した入力ピンの総和「０．４１３」を算出する。そして、チェック処理部３ｄは、取得した駆動セルの出力ピンのドライバビリティ「３．８８３」が、算出した入力ピンの容量の総和「０．４１３」以上であると判定する。
【０１３３】
取得した駆動セルの出力ピンのドライバビリティ「３．８８３」が、算出した入力ピンの容量の総和「０．４１３」以上であると判定したので、チェック処理部３ｄは、次の処理を行う。すなわち、チェック処理部３ｄは、図４に示すデザインルール２ｃに登録された最大ファンアウト数「８」を取得する。そして、チェック処理部３ｄは、取得した識別子「ｃｈｐ１＿２」が示すセル１６＿１＿２のファンアウト数「１」を、セル１６＿１＿２の出力ピンＸに接続されたセルの個数から算出する。そして、チェック処理部３ｄは、取得した識別子「ｃｈｐ１＿２」が示すセル１６＿１＿２のファンアウト数「１」が、「７」（最大ファンアウト数「８」−「１」）以下であると判定する。取得した識別子「ｃｈｐ１＿２」が示すセル１６＿１＿２のファンアウト数「１」が、「７」以下であると判定したので、チェック処理部３ｄは、次の処理を行う。チェック処理部３ｄは、識別子「ｃｈｐ１＿２」が示すセル１６＿１＿２に、セル１８＿３を接続したと仮定した場合に、識別子「ｃｈｐ１＿２」が示すセル１６＿１＿２に接続された全てのセル１８＿３のスキューが所定の基準を満たすか否かを判定する。ここで、チェック処理部３ｄは、所定の基準を満たすと判定したものとする。そのため、チェック処理部３ｄは、デザインルールに違反しないことを示す「１」を判定フラグ２ｇに登録する。
【０１３４】
そして、再分配処理部３ｃは、判定フラグ２ｇの値が「１」であるか否かを判定することにより、各種のデザインルールを満たすか否かを判定する。再分配処理部３ｃが、判定フラグ２ｇの値が「１」であると判定すると、接続処理部３ｅは、次の処理を行う。すなわち、接続処理部３ｅは、接続候補ファイル２ｆに登録された識別子「ｃｈｐ１＿２」が示す駆動セル１６＿１＿２と、選択部３ｂにより選択されたセル１８＿３とが接続された情報を生成し、生成した情報を回路情報２ａに追加する。これにより、回路情報２ａが示す半導体集積回路は、追加された情報が示すセル１６＿１＿２とセル１８＿３とが接続された状態を表すこととなる。そして、接続処理部３ｅは、図１７に示すように、選択部３ｂにより選択されたセル１８＿３の識別子「ＦＦ３」が「ｆｆ，ｌａｔｃｈ」の項目に登録された第１の解析テーブル２ｄのレコードの「再分配後前段ｃｅｌｌ」の項目に、次の識別子を登録する。すなわち、接続処理部３ｅは、「再分配後前段ｃｅｌｌ」の項目に、接続候補ファイル２ｆに登録された識別子「ｃｈｐ１＿２」を登録する。そして、接続処理部３ｅは、図１８に示すように、第２の解析テーブル２ｅに新たなレコードを追加し、追加したレコードの「識別子」の項目に、接続候補ファイル２ｆに登録された識別子「ｃｈｐ１＿２」を登録する。また、図１８に示すように、接続処理部３ｅは、追加したレコードの「入力ピン」の項目に、セル１６＿１＿２のコピー元であるセル１６＿１を示す識別子「ｃｈｐ１」が「識別子」の項目に登録されたレコードの「入力ピン」の項目の登録内容をコピーする。また、図１８に示すように、接続処理部３ｅは、追加したレコードの「駆動ピン」の項目に、識別子「ｃｈｐ１」が「識別子」の項目に登録されたレコードの「駆動ピン」の項目の登録内容をコピーする。また、図１８に示すように、接続処理部３ｅは、追加したレコードの「出力ピンドライバビリティ」の項目に、識別子「ｃｈｐ１」が「識別子」の項目に登録されたレコードの「出力ピンドライバビリティ」の項目の登録内容をコピーする。また、図１８に示すように、接続処理部３ｅは、追加したレコードの「全入力ピン同接続」の項目に、識別子「ｃｈｐ１」，「ｃｈｐ３」を登録する。また、図１８に示すように、接続処理部３ｅは、追加したレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、識別子「ｃｈｐ１＿２」が示すセル１６＿１＿２に接続されたセル１８＿３の識別子「ＦＦ３」を登録する。また、図１８に示すように、接続処理部３ｅは、追加したレコードの「再分配後接続Ｇｒｏｕｐ」の項目に、選択されたセル１８＿３が属するグループ２（再分配情報２ｂが示すグループ）の識別子「２」を登録する。また、図１８に示すように、接続処理部３ｅは、追加したレコードの「出力ピンｆａｎｏｕｔ数」の項目に登録された数値を１つだけインクリメントする。
【０１３５】
また、図１８に示すように、接続処理部３ｅは、識別子「ｃｈｐ１」が「識別子」の項目に登録されたレコードの「全入力ピン同接続」の項目に、「ｃｈｐ１＿２」を登録する。また、図１８に示すように、接続処理部３ｅは、識別子「ｃｈｐ３」が「識別子」の項目に登録されたレコードの「全入力ピン同接続」の項目に、「ｃｈｐ１＿２」を登録する。
【０１３６】
そして、接続処理部３ｅは、接続候補ファイル２ｆに登録された駆動セルの識別子を削除する。なお、図１７は、各処理において用いられる第１の解析テーブルの一例を示す図である。図１８は、各処理において用いられる第２の解析テーブルの一例を示す図である。
【０１３７】
図１９は、図３の再分配情報が示すグループ２に属するセル１８＿４，１８＿９，１８＿１０，１８＿１２についても同様に処理を行った結果の第１の解析テーブルの一例を示す図である。図２０は、図３の再分配情報が示すグループ２に属するセル１８＿４，１８＿９，１８＿１０，１８＿１２についても同様に処理を行った結果の第２の解析テーブルの一例を示す図である。
【０１３８】
図１９及び図２０に示すように、識別子「ＦＦ４」が示すセル１８＿４は、識別子「ｃｈｐ１＿２」が示すセル１６＿１＿２に接続される。また、図１９及び図２０に示すように、識別子「ＦＦ１０」が示すセル１８＿１０も、識別子「ｃｈｐ１＿２」が示すセル１６＿１＿２に接続される。また、図１９及び図２０に示すように、識別子「ＦＦ１２」が示すセル１８＿１２も、識別子「ｃｈｐ１＿２」が示すセル１６＿１＿２に接続される。また、図１９及び図２０に示すように、識別子「ＦＦ９」が示すセル１８＿９は、識別子「ｃｈｐ２」が示すセル１６＿２をコピーした、識別子「ｃｈｐ２＿２」が示すセル１６＿２＿２に接続される。
【０１３９】
図２１は、図３の再分配情報が示すグループ３に属するセル１８＿５，１８＿１４、グループ４に属するセル１８＿１３、グループ５に属すセル１８＿７，１８＿１１についても同様に処理を行った結果の第１の解析テーブルの一例を示す図である。図２２は、図３の再分配情報が示すグループ３に属するセル１８＿５，１８＿１４、グループ４に属するセル１８＿１３、グループ５に属すセル１８＿７，１８＿１１についても同様に処理を行った結果の第２の解析テーブルの一例を示す図である。
【０１４０】
図２１及び図２２に示すように、識別子「ＦＦ５」が示すセル１８＿５は、識別子「ｃｈｐ１」が示すセル１６＿１をコピーした、識別子「ｃｈｐ１＿３」が示すセル１６＿１＿３に接続される。また、図２１及び図２２に示すように、識別子「ＦＦ１４」が示すセル１８＿１４も、識別子「ｃｈｐ１＿３」が示すセル１６＿１＿３に接続される。また、図２１及び図２２に示すように、識別子「ＦＦ１３」が示すセル１８＿１３は、識別子「ｃｈｐ３」をコピーした、識別子「ｃｈｐ３＿２」が示すセル１６＿３＿２に接続される。また、図２１及び図２２に示すように、識別子「ＦＦ７」が示すセル１８＿７は、識別子「ｃｈｐ２」が示すセル１６＿２をコピーした、識別子「ｃｈｐ２＿３」が示すセル１６＿２＿３に接続される。また、図２１及び図２２に示すように、識別子「ＦＦ１１」が示すセル１８＿１１は、識別子「ｃｈｐ３」が示すセル１６＿３をコピーした、識別子「ｃｈｐ３＿３」が示すセル１６＿３＿３に接続される。
【０１４１】
そして、出力制御部３ｆは、クロックツリーが再分配された後の半導体集積回路を表示するように出力部１２を制御する。図２３は、クロックツリーが再分配された後の回路情報が示す半導体集積回路の一例を示す図である。例えば、全てのセル１８＿１〜１８＿１６に対して各種の処理が行われた結果、図２１，図２２に示すように第１の解析テーブル２ｄ、第２の解析テーブル２ｅに各種の内容が登録された場合には、出力制御部３ｆは、次の処理を行う。すなわち、出力制御部３ｆは、図２３に示すように、回路情報２ａが示す半導体集積回路を表示するように出力部１２を制御する。ここで、全てのセル１８＿１〜１８＿１６に対して各種の処理が行われた結果、回路情報には、クロックツリーが再分配された後の半導体集積回路を示す情報が登録される。
【０１４２】
［処理の流れ］
次に、本実施例に係る設計支援装置１が実行する処理の流れについて説明する。図２４は、実施例に係る設計支援処理の手順を示すフローチャートである。実施例に係る設計支援処理は、例えば、入力部１１から、設計支援処理を実行するための指示が制御部３に入力された場合に、制御部３により実行される。
【０１４３】
図２４に示すように、解析部３ａは、記憶部２から回路情報２ａを取得する（Ｓ１０１）。そして、解析部３ａは、記憶部２からデザインルール２ｃを取得する（Ｓ１０２）。そして、解析部３ａは、記憶部２から再分配情報２ｂを取得する（Ｓ１０３）。
【０１４４】
そして、解析部３ａは、取得した回路情報２ａが示す半導体集積回路と、取得した再分配情報２ｂとを解析し、各種の解析結果を上述したように第１の解析テーブル２ｄ及び第２の解析テーブル２ｅに登録する（Ｓ１０４）。そして、選択部３ｂ、再分配処理部３ｃ、チェック処理部３ｄ、接続処理部３ｅ及び出力制御部３ｆの各部が、再分配処理の各処理を実行して（Ｓ１０５）、設計支援処理を終了する。
【０１４５】
図２５は、実施例に係る再分配処理の手順を示すフローチャートである。図２５に示すように、選択部３ｂは、再分配情報２ｂが示すグループの中に、未選択のグループがあるか否かを判定する（Ｓ２０１）。未選択のグループがある場合（Ｓ２０１；Ｙｅｓ）には、選択部３ｂは、未選択のグループを１つ選択する（Ｓ２０２）。
【０１４６】
選択部３ｂは、選択したグループに属するセルの中に、未選択のセルがあるか否かを判定する（Ｓ２０３）。未選択のセルがない場合（Ｓ２０３；Ｎｏ）には、選択部３ｂは、Ｓ２０１に戻る。一方、未選択のセルがある場合（Ｓ２０３；Ｙｅｓ）には、選択部３ｂは、未選択のセルを処理対象のセルとして１つ選択する（Ｓ２０４）。
【０１４７】
再分配処理部３ｃは、第１の解析テーブル２ｄを参照し、選択されたセルの識別子が「ｆｆ，ｌａｔｃｈ」の項目に登録されたレコードの「再分配前前段ｃｅｌｌ」に登録された駆動セルの識別子（第１の駆動セルの識別子）を取得する（Ｓ２０５）。再分配処理部３ｃは、第２の解析テーブル２ｅを参照し、第１の駆動セルの識別子が「識別子」の項目に登録されたレコードの「全入力ピン同接続」の項目に、他の駆動セルの識別子（第２の駆動セルの識別子）が登録されているか否かを判定する（Ｓ２０６）。「全入力ピン同接続」の項目に、他の駆動セルの識別子（第２の駆動セルの識別子）が登録されていない場合（Ｓ２０６；Ｎｏ）には、再分配処理部３ｃは、Ｓ２０８へ進む。
【０１４８】
「全入力ピン同接続」の項目に、他の駆動セルの識別子（第２の駆動セルの識別子）が登録されている場合（Ｓ２０６；Ｙｅｓ）には、再分配処理部３ｃは、他の駆動セルの識別子（第２の駆動セルの識別子）を取得する（Ｓ２０７）。
【０１４９】
再分配処理部３ｃは、第１の駆動セルの識別子が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されているか否かを判定する（Ｓ２０８）。「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されていない場合（Ｓ２０８；Ｎｏ）には、再分配処理部３ｃは、Ｓ２１０へ進む。
【０１５０】
「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されている場合（Ｓ２０８；Ｙｅｓ）には、再分配処理部３ｃは、次の処理を行う。すなわち、再分配処理部３ｃは、「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に登録されたセルの識別子（第１のセルの識別子）を取得する（Ｓ２０９）。
【０１５１】
再分配処理部３ｃは、第２の駆動セルの識別子を取得したか否かを判定する（Ｓ２１０）。第２の駆動セルの識別子を取得していない場合（Ｓ２１０；Ｎｏ）には、再分配処理部３ｃは、Ｓ２１３へ進む。
【０１５２】
第２の駆動セルの識別子を取得した場合（Ｓ２１０；Ｙｅｓ）には、再分配処理部３ｃは、第２の解析テーブル２ｅを参照し、次の処理を行う。すなわち、再分配処理部３ｃは、第２の駆動セルの識別子が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第２のセルの識別子）が登録されているか否かを判定する（Ｓ２１１）。「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、第２のセルの識別子が登録されていない場合（Ｓ２１１；Ｎｏ）には、再分配処理部３ｃは、Ｓ２１３へ進む。
【０１５３】
「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、第２のセルの識別子が登録されている場合（Ｓ２１１；Ｙｅｓ）には、再分配処理部３ｃは、「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に登録された第２のセルの識別子を取得する（Ｓ２１２）。
【０１５４】
そして、再分配処理部３ｃは、第１のセルの識別子及び第２のセルの識別子の少なくとも一方の識別子を取得したか否かを判定する（Ｓ２１３）。第１のセルの識別子を取得しておらず、かつ、第２のセルの識別子を取得していない場合（Ｓ２１３；Ｎｏ）には、再分配処理部３ｃは、Ｓ２１８へ進む。
【０１５５】
第１のセルの識別子及び第２のセルの識別子の少なくとも一方の識別子を取得した場合（Ｓ２１３；Ｙｅｓ）には、再分配処理部３ｃは、再分配情報２ｂを参照し、次の処理を行う。すなわち、再分配処理部３ｃは、選択部３ｂにより選択されたセルが属するグループと同一のグループに属する他のセルがあるか否かを判定する（Ｓ２１４）。他のセルがない場合（Ｓ２１４；Ｎｏ）には、再分配処理部３ｃは、Ｓ２１８へ進む。
【０１５６】
他のセルがある場合（Ｓ２１４；Ｙｅｓ）には、再分配処理部３ｃは、他のセルを特定する（Ｓ２１５）。
【０１５７】
再分配処理部３ｃは、特定した他のセルの識別子が、取得した第１のセルの識別子及び第２のセルの識別子の少なくとも一方の識別子に含まれるか否かを判定する（Ｓ２１６）。  
【０１５８】
特定した他のセルの識別子が、第１のセルの識別子または第２のセルの識別子に含まれる場合（Ｓ２１６；Ｙｅｓ）には、再分配処理部３ｃは、次のような処理を行う。すなわち、再分配処理部３ｃは、特定した他のセルの前段の駆動セルの識別子を接続候補ファイル２ｆに登録する（Ｓ２１７）。
【０１５９】
特定した他のセルの識別子が、取得した識別子に含まれない場合（Ｓ２１６；Ｎｏ）には、再分配処理部３ｃは、第２の解析テーブル２ｅを参照し、次の処理を行う。すなわち、再分配処理部３ｃは、第１の駆動セルの識別子が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されているか否かを判定する（Ｓ２１８）。第１の駆動セルの識別子が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されている場合（Ｓ２１８；Ｙｅｓ）には、再分配処理部３ｃは、Ｓ２２３へ進む。
【０１６０】
第１の駆動セルの識別子が「識別子」の項目に登録されたレコードの「再分配後接続ｌａｔｃｈ，ｆｆ」の項目に、セルの識別子（第１のセルの識別子）が登録されていない場合（Ｓ２１８；Ｎｏ）には、再分配処理部３ｃは、次の処理を行う。すなわち、再分配処理部３ｃは、選択されたセルのクロックツリーの再分配前の前段のセルの識別子（第１の駆動セルの識別子）を接続候補ファイル２ｆに登録する（Ｓ２１９）。
【０１６１】
チェック処理部３ｄは、デザインルールチェック処理を実行する（Ｓ２２０）。再分配処理部３ｃは、判定フラグ２ｇの値が「１」であるか否かを判定することにより、各種のデザインルールを満たすか否かを判定する（Ｓ２２１）。判定フラグ２ｇの値が「１」である場合（Ｓ２２１；Ｙｅｓ）には、再分配処理部３ｃは、Ｓ２２５に進む。
【０１６２】
判定フラグ２ｇの値が「１」でない場合、すなわち、「０」である場合（Ｓ２２１；Ｎｏ）には、再分配処理部３ｃは、接続候補ファイル２ｆに登録された駆動セルの識別子を削除する（Ｓ２２２）。再分配処理部３ｃは、選択されたセルのクロックツリーの再分配前の前段のセル（第１の駆動セル）をコピーする（Ｓ２２３）。再分配処理部３ｃは、コピーしたセルの識別子を接続候補ファイル２ｆに登録する（Ｓ２２４）。
【０１６３】
接続処理部３ｅは、接続候補ファイル２ｆに登録された識別子が示す駆動セルと、選択部３ｂにより選択されたセルとが接続された情報を生成し、生成した情報を回路情報２ａに追加する（Ｓ２２５）。接続処理部３ｅは、上述したように、各種の情報を、第１の解析テーブル２ｄ及び第２の解析テーブル２ｅに登録する（Ｓ２２６）。接続処理部３ｅは、接続候補ファイル２ｆに登録された駆動セルの識別子を削除し（Ｓ２２７）、Ｓ２０１に戻る。
【０１６４】
ここで、未選択のグループがないと判定された場合（Ｓ２０１；Ｎｏ）には、出力制御部３ｆは、クロックツリーが再分配された、回路情報２ａが示す半導体集積回路を表示するように、出力部１２を制御する（Ｓ２２８）。そして、出力制御部３ｆは、処理結果を制御部３の内部メモリに格納し、リターンする。
【０１６５】
図２６は、実施例に係るデザインルールチェック処理の手順を示すフローチャートである。図２６に示すように、チェック処理部３ｄは、判定フラグ２ｇに「ｎｕｌｌ」を登録して、判定フラグ２ｇを初期化する（Ｓ３０１）。チェック処理部３ｄは、接続候補ファイル２ｆに登録された駆動セルの識別子を取得する（Ｓ３０２）。
【０１６６】
チェック処理部３ｄは、取得した識別子が示す駆動セルの出力ピンのドライバビリティを第２の解析テーブル２ｅの「出力ピンドライバビリティ」の項目から取得する（Ｓ３０３）。チェック処理部３ｄは、取得した識別子が示す駆動セルに、選択されたセルを接続したと仮定した場合に、次の処理を行う。すなわち、チェック処理部３ｄは、取得した識別子が示す駆動セルの出力ピンに接続された全てのセルの入力ピンの容量を第１の解析テーブル２ｄの「入力ピン容量」の項目から取得する（Ｓ３０４）。チェック処理部３ｄは、取得した入力ピンの容量の総和を算出する（Ｓ３０５）。
【０１６７】
チェック処理部３ｄは、取得した駆動セルの出力ピンのドライバビリティが、算出した入力ピンの容量の総和以上であるか否かを判定する（Ｓ３０６）。取得した駆動セルの出力ピンのドライバビリティが、算出した入力ピンの容量の総和以上でない場合（Ｓ３０６；Ｎｏ）には、チェック処理部３ｄは、次の処理を行う。すなわち、チェック処理部３ｄは、デザインルールに違反することを示す「０」を判定フラグ２ｇに登録し（Ｓ３１２）、処理結果を内部メモリに格納し、リターンする。
【０１６８】
取得した駆動セルの出力ピンのドライバビリティが、算出した入力ピンの容量の総和以上である場合（Ｓ３０６；Ｙｅｓ）には、チェック処理部３ｄは、次の処理を行う。すなわち、チェック処理部３ｄは、デザインルール２ｃに登録された最大ファンアウト数を取得する（Ｓ３０７）。チェック処理部３ｄは、取得した識別子が示す駆動セルのファンアウト数を第２の解析テーブル２ｅの「出力ピンｆａｎｏｕｔ数」の項目から取得する（Ｓ３０８）。
【０１６９】
チェック処理部３ｄは、取得した識別子が示す駆動セルのファンアウト数が、取得した最大ファンアウト数から１を引いた数（最大ファンアウト数−１）以下であるか否かを判定する（Ｓ３０９）。取得した識別子が示す駆動セルのファンアウト数が、（最大ファンアウト数−１）以下でない場合（Ｓ３０９；Ｎｏ）には、チェック処理部３ｄは、Ｓ３１２へ進む。
【０１７０】
取得した識別子が示す駆動セルのファンアウト数が、（最大ファンアウト数−１）以下である場合（Ｓ３０９；Ｙｅｓ）には、チェック処理部３ｄは、次の処理を行う。すなわち、チェック処理部３ｄは、取得した識別子が示す駆動セルに、選択されたセルを接続したと仮定した場合に、取得した識別子が示す駆動セルに接続された全てのセルのスキューが所定の基準を満たすか否かを判定する（Ｓ３１０）。所定の基準を満たさない場合（Ｓ３１０；Ｎｏ）には、チェック処理部３ｄは、Ｓ３１２へ進む。
【０１７１】
所定の基準を満たす場合（Ｓ３１０；Ｙｅｓ）には、チェック処理部３ｄは、デザインルールに違反しないことを示す「１」を判定フラグ２ｇに登録し（Ｓ３１１）、処理結果を内部メモリに格納し、リターンする。
【０１７２】
上述してきたように、実施例に係る設計支援装置１は、複数のセル１８＿１〜１８＿１６（以下、単に、セル１８と表記する）のそれぞれについて、次の処理を行う。すなわち、設計支援装置１は、回路情報２ａに基づいて、半導体集積回路において、セル１８に配線を介して接続された駆動セル１６を特定する。設計支援装置１は、駆動セル１６の入力端子に接続されたセルと、自身の入力端子に接続されたセルとが同一である他の駆動セル１６を特定する。設計支援装置１は、特定した駆動セル１６及び他の駆動セル１６に配線を介して接続された他のセル１８を特定する。設計支援装置１は、複数のセル１８のそれぞれについて、再分配情報２ｂに基づいて、同一のグループに属する他のセル１８を特定する。設計支援装置１は、複数のセル１８のそれぞれについて、駆動セル１６及び他の駆動セル１６に配線を介して接続された他のセル１８の中に、同一のグループに属する他のセル１８が含まれる場合には、次の処理を行う。すなわち、設計支援装置１は、駆動セル１６及び他の駆動セル１６に配線を介して接続された他のセル１８の中に含まれる同一のグループに属する他のセル１８に配線を介して接続された駆動セル１６を選択する。設計支援装置１は、複数のセル１８のそれぞれについて、セル１８及び選択された駆動セル１６が、所定の設計ルールを満たす場合には、セル１８と選択された駆動セル１６とが配線を介して接続された情報を回路情報２ａに登録する。設計支援装置１は、所定の設計ルールを満たさない場合には、選択された駆動セル１６をコピーし、コピーした駆動セル１６とセル１８とが配線を介して接続された情報を回路情報２ａに登録する。したがって、設計支援装置１は、困難であるクロックツリーの再分配を自動で行うので、簡易にクロックツリーを再分配することができる。
【０１７３】
また、設計支援装置１によれば、困難であるクロックツリーの再分配を自動で行うので、人的ミスによる論理の不一致などの発生を抑制することができる。
【０１７４】
また、設計支援装置１によれば、ｆａｎｏｕｔオーバーや容量オーバーなどのデザインルールを自動で考慮するので、クロックツリーの再分配後に設計者がチェックする時間を短縮することができる。
【０１７５】
また、設計支援装置１によれば、駆動セルのコピーを最小限に抑制することができる。
【０１７６】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
【０１７７】
例えば、上述した再分配処理部３ｃは、第１の特定部、第２の特定部及び選択部を有することができる。図２７は、実施例に係る再分配処理部の機能構成の一例を示す図である。図２７に示すように、再分配処理部３ｃは、第１の特定部９０ａ、第２の特定部９０ｂ及び選択部９０ｃを有する。第１の特定部９０ａは、例えば、上述した、ステップＳ２０５〜Ｓ２１３の各処理を実行する。第２の特定部９０ｂは、例えば、上述したステップＳ２１４，Ｓ２１５の各処理を実行する。選択部９０ｃは、ステップＳ２１６〜Ｓ２１９，Ｓ２２１〜Ｓ２２４の各処理を実行する。
【０１７８】
また、各実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、各実施例において説明した各処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
【０１７９】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。
【０１８０】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更できる。
【０１８１】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０１８２】
［設計支援プログラム］
また、上記の実施例で説明した設計支援装置１の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図２８を用いて、上記の実施例で説明した設計支援装置１と同様の機能を有する設計支援プログラムを実行するコンピュータの一例を説明する。図２８は、設計支援プログラムを実行するコンピュータを示す図である。
【０１８３】
図２８に示すように、コンピュータ３００は、ＣＰＵ３１０、ＲＯＭ３２０、ＨＤＤ（Hard  Disk  Drive）３３０、ＲＡＭ３４０を有する。これら各機器３１０〜３４０は、バス３５０を介して接続されている。
【０１８４】
ＲＯＭ３２０には、ＯＳ（Operating  System）などの基本プログラムが記憶されている。また、ＨＤＤ３３０には、上記の実施例で示す各部３ａ〜３ｆ，９０ａ〜９０ｃと同様の機能を発揮する設計支援プログラム３３０ａが予め記憶される。また、ＨＤＤ３３０には、記憶部２に記憶された各種のデータが設けられる。
【０１８５】
そして、ＣＰＵ３１０が、設計支援プログラム３３０ａをＨＤＤ３３０から読み出して実行する。
【０１８６】
そして、ＣＰＵ３１０は、各種のデータを読み出してＲＡＭ３４０に格納する。さらに、ＣＰＵ３１０は、ＲＡＭ３４０に格納された各種のデータを用いて、設計支援プログラム３３０ａを実行する。なお、ＲＡＭ３４０に格納されるデータは、常に全てのデータがＲＡＭ３４０に格納されなくともよい。処理に用いられるデータがＲＡＭ３４０に格納されれば良い。
【０１８７】
なお、上記した設計支援プログラム３３０ａについては、必ずしも最初からＨＤＤ３３０に記憶させなくともよい。
【０１８８】
例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【０１８９】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【符号の説明】
【０１９０】
１      設計支援装置
２      記憶部
２ａ    回路情報
２ｂ    再分配情報
２ｃ    デザインルール
２ｄ    第１の解析テーブル
２ｅ    第２の解析テーブル
２ｆ    接続候補ファイル
２ｇ    判定フラグ
３      制御部
３ａ    解析部
３ｂ    選択部
３ｃ    再分配処理部
３ｄ    チェック処理部
３ｅ    接続処理部
３ｆ    出力制御部
【図１】
2015026346.tif 000003
【図２】
2015026346.tif 000004
【図３】
2015026346.tif 000005
【図４】
2015026346.tif 000006
【図５】
2015026346.tif 000007
【図６】
2015026346.tif 000008
【図７】
2015026346.tif 000009
【図８】
2015026346.tif 000010
【図９】
2015026346.tif 000011
【図１０】
2015026346.tif 000012
【図１１】
2015026346.tif 000013
【図１２】
2015026346.tif 000014
【図１３】
2015026346.tif 000015
【図１４】
2015026346.tif 000016
【図１５】
2015026346.tif 000017
【図１６】
2015026346.tif 000018
【図１７】
2015026346.tif 000019
【図１８】
2015026346.tif 000020
【図１９】
2015026346.tif 000021
【図２０】
2015026346.tif 000022
【図２１】
2015026346.tif 000023
【図２２】
2015026346.tif 000024
【図２３】
2015026346.tif 000025
【図２４】
2015026346.tif 000026
【図２５】
2015026346.tif 000027
【図２６】
2015026346.tif 000028
【図２７】
2015026346.tif 000029
【図２８】
2015026346.tif 000030