(57)【要約】  階層構造を含む論理回路の情報と、論理回路の階層を経てピン又はネットを含む接続対象に至るまでの接続対象情報を読み込み、階層をノードとし接続対象をリーフとするツリー構造を作成する。ツリー構造を根から参照し、ツリーが分岐しているノードを最上位ノードとする。ツリー構造から接続対象をネットとするリーフを検索し、ネットと階層ポートを介して接続する下位階層ノードに、階層ポート又は下位階層内のネットをリーフとして追加する。ツリー構造に対してボトムアップ的に接続処理を行なって論理回路の情報を書替え、接続処理が完了した論理回路情報を出力する。
2007083747.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
階層構造をもつ論理回路の情報を読込む論理回路読込ステップと、
前記論理回路の階層を経てピン又はネットを含む接続対象に至るまでの接続対象情報を読み込み、階層をノードとし接続対象をリーフとするツリー構造を作成する接続対象読込ステップと、
前記ツリー構造を根から参照し、ツリーが分岐しているノードを最上位ノードとする最上位階層調整ステップと、
前記ツリー構造から接続対象をネットとするリーフを検索し、前記ネットと階層ポートを介して接続する下位階層ノードに、前記階層ポート又は下位階層内のネットをリーフとして追加する接続対象補正ステップと、
前記ツリー構造に対してボトムアップ的に接続処理を行なって前記論理回路情報を書替える接続処理ステップと、
前記接続処理が完了した論理回路情報を出力する論理回路出力ステップと、
を実行することを特徴とする階層型論理回路の信号接続プログラム。
【請求項２】
請求項１記載の階層型論理回路の信号接続プログラムに於いて、前記最上位階層調整ステップは、
前記ツリー構造のノードを根から取出して処理対象とし、処理対象ノードのリーフが零で下位ノードが１つの場合に下位ノードを次の処理対象ノードとし、処理対象ノードのリーフが１つ以上又は下位ノードが２つ以上の場合に最上位ノードとすることを特徴とする階層型論理回路の信号接続プログラム。
【請求項３】
請求項１記載の階層型論理回路の信号接続プログラムに於いて、前記接続対象補正ステップは、
前記ツリー構造から接続対象をネットとするリーフを検索するリーフ検索ステップと、
前記ネットに接続するピンを検索するピン検索ステップと、
前記ピンが検索された場合、前記ピンのインスタンスを階層とする下位ノードを検索し、
前記下位ノードが検索された場合、
（１）前記下位階層ノードにおいて、前記ピンに対応する階層ポートに前記下位階層ノードのネットが接続されていない場合は、前記階層ポートを前記下位階層のノードのリーフとして追加し、
（２）前記ピンに対応する階層ポートに前記下位階層ノードのネットが接続されている場合は、前記ネットを前記下位階層のノードのリーフとして追加する、
リーフ追加ステップと、
を実行することを特徴とする階層型論理回路の信号接続プログラム。
【請求項４】
請求項１記載の階層型論理回路の信号接続プログラムに於いて、前記接続処理ステップは、
処理対象ノードが最上位ノードでない場合、
処理対象ノードのリーフが階層ポートか又はネットで階層ポートに接続しているかどうか判定し、階層ポートが存在する場合は、階層ポートを接続対象とし、階層ポートが存在しない場合は新たに階層ポートを作成する階層ポート生成ステップと、
前記対象ノードのリーフの少なくともいずれか１つにドライバがあれば入出力属性を出力属性に設定し、ドライバがなければ前記入出力属性を入力属性に設定する入出力属性設定ステップと、
前記対象ノードのリーフを前記階層ポートと接続する接続ステップと、
上位階層のノードに前記階層ポートをリーフとして追加する接続補正ステップと、
前記処理対象ノードを削除して次のノードを処理対象ノードとする更新ステップと、
を実行し、
処理対象ノードが最上位ノードの場合、
最初の処理対象リーフがネットならば前記ネットを基準ネットとし、最初の処理対象リーフが階層ポートまたはピンならば、前記階層ポート又はピンに接続するネットを基準ネットとし、ネットの接続が無い場合は、新たにネットを生成し接続して基準ネットとする基準ネット設定ステップと、
２つ目以降の処理対象リーフを前記基準ネットと接続する接続ステップと、
を実行すること特徴とする階層型論理回路の信号接続プログラム。
【請求項５】
階層構造をもつ論理回路の情報を読込む論理回路読込ステップと、
前記論理回路の階層を経てピン又はネットを含む接続対象に至るまでの接続対象情報を読み込み、階層をノードとし接続対象をリーフとするツリー構造を作成する接続対象読込ステップと、
前記ツリー構造を根から参照し、ツリーが分岐しているノードを最上位ノードとする最上位階層調整ステップと、
前記ツリー構造から接続対象をネットとするリーフを検索し、前記ネットと階層ポートを介して接続する下位階層ノードに、前記階層ポート又は下位階層内のネットをリーフとしてを追加する接続対象補正ステップと、
前記ツリー構造に対してボトムアップ的に接続処理を行なって前記論理回路情報を書替える接続処理ステップと、
前記接続処理が完了した論理回路情報を出力する論理回路出力ステップと、
を備えたことを特徴とする階層型論理回路の信号接続方法。
【請求項６】
請求項５記載の階層型論理回路の信号接続方法に於いて、前記最上位階層調整ステップは、
前記ツリー構造のノードを根から取出して処理対象とし、処理対象ノードのリーフが零で下位ノードが１つの場合に下位ノードを次の処理対象ノードとし、処理対象ノードのリーフが１つ以上又は下位ノードが２つ以上の場合に最上位ノードとすることを特徴とする階層型論理回路の信号接続方法。
【請求項７】
請求項５記載の階層型論理回路の信号接続方法に於いて、前記接続対象補正ステップは、
前記ツリー構造から接続対象をネットとするリーフを検索するリーフ検索ステップと、
前記ネットに接続するピンを検索するピン検索ステップと、
前記ピンが検索された場合、前記ピンのインスタンスを階層とする下位ノードを検索し、
前記下位ノードが検索された場合、
（１）前記下位階層ノードにおいて、前記ピンに対応する階層ポートに前記下位階層ノードのネットが接続されていない場合は、前記階層ポートを前記下位階層のノードのリーフとして追加し、
（２）前記ピンに対応する階層ポートに前記下位階層ノードのネットが接続されている場合は、前記ネットを前記下位階層のノードのリーフとして追加する、
リーフ追加ステップと、
を備えたことを特徴とする階層型論理回路の信号接続方法。
【請求項８】
請求項５記載の階層型論理回路の信号接続方法に於いて、前記接続処理ステップは、
処理対象ノードが最上位ノードでない場合、
処理対象ノードのリーフが階層ポートか又はネットで階層ポートに接続しているかどうか判定し、階層ポートが存在する場合は、階層ポートを接続対象とし、階層ポートが存在しない場合は新たに階層ポートを作成する階層ポート生成ステップと、
前記対象ノードのリーフの少なくともいずれか１つにドライバがあれば入出力属性を出力属性に設定し、ドライバがなければ前記入出力属性を入力属性に設定する入出力属性設定ステップと、
前記対象ノードのリーフを前記階層ポートと接続する接続ステップと、
上位階層のノードに前記階層ポートをリーフとして追加する接続補正ステップと、
前記処理対象ノードを削除して次のノードを処理対象ノードとする更新ステップと、
を実行し、
処理対象ノードが最上位ノードの場合、
最初の処理対象リーフがネットならば前記ネットを基準ネットとし、最初の処理対象リーフが階層ポートまたはピンならば、前記階層ポート又はピンに接続するネットを基準ネットとし、ネットの接続が無い場合は、新たにネットを生成し接続して基準ネットとする基準ネット設定ステップと、
２つ目以降の処理対象リーフを前記基準ネットと接続する接続ステップと、
を備えたこと特徴とする階層型論理回路の信号接続方法。
【請求項９】
階層構造をもつ論理回路の情報を読込む論理回路読込部と、
前記論理回路の接続対象情報を読み込み、階層をノードとし接続対象をリーフとするツリー構造を作成する接続対象読込部と、
前記ツリー構造を参照し、ツリーが分岐しているノードを最上位ノードとする最上位階層調整部と、
前記ツリー構造から接続対象をネットとするリーフを検索し、前記ネットと階層ポートを介して接続する下位階層ノードに、前記階層ポート又は下位階層内のネットをリーフとして追加する接続対象補正部と、
前記ツリー構造に対して接続処理を行なって前記論理回路情報を書替える接続処理部と、
前記接続処理が完了した論理回路情報を出力する論理回路出力部と、
を備えたことを特徴とする論理回路設計装置。
【請求項１０】
請求項９記載の論理回路設計装置に於いて、前記最上位階層調整部は、
前記ツリー構造のノードを根から取出して処理対象とし、処理対象ノードのリーフが零で下位ノードが１つの場合に下位ノードを次の処理対象ノードとし、処理対象ノードのリーフが１つ以上又は下位ノードが２つ以上の場合に最上位ノードとすることを特徴とする論理回路設計装置。
【請求項１１】
請求項９記載の論理回路設計装置に於いて、前記接続対象補正部は、
前記ツリー構造から接続対象をネットとするリーフを検索し、
前記ネットに接続するピンを検索し、
前記ピンが検索された場合、前記ピンのインスタンスを階層とする下位ノードを検索し、
前記下位ノードが検索された場合、
（１）前記下位階層ノードにおいて、前記ピンに対応する階層ポートに前記下位階層ノードのネットが接続されていない場合は、前記階層ポートを前記下位階層のノードのリーフとして追加し、
（２）前記ピンに対応する階層ポートに前記下位階層ノードのネットが接続されている場合は、前記ネットを前記下位階層のノードのリーフとして追加する、
ことを特徴とする論理回路設計装置。
【請求項１２】
請求項９記載の論理回路設計装置に於いて、前記接続処理部は、
処理対象ノードが最上位ノードでない場合、
処理対象ノードのリーフが階層ポートか又はネットで階層ポートに接続しているかどうか判定し、階層ポートが存在する場合は、階層ポートを接続対象とし、階層ポートが存在しない場合は新たに階層ポートを作成し、
前記対象ノードのリーフの少なくともいずれか１つにドライバがあれば入出力属性を出力属性に設定し、ドライバがなければ前記入出力属性を入力属性に設定する入出力属性設定部と、
前記対象ノードのリーフを前記階層ポートと接続し、
上位階層のノードに前記階層ポートをリーフとして追加し、
前記処理対象ノードを削除して次のノードを処理対象ノードとし、
処理対象ノードが最上位ノードの場合、
最初の処理対象リーフがネットならば前記ネットを基準ネットとし、最初の処理対象リーフが階層ポートまたはピンならば、前記階層ポート又はピンに接続するネットを基準ネットとし、ネットの接続が無い場合は、新たにネットを生成し接続して基準ネットとし、
２つ目以降の処理対象リーフを前記基準ネットと接続すること特徴とする論理回路設計装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、階層構造を含む論理回路中の接続を行う階層型論理回路の信号接続プログラム、方法及び装置、に関し、特に、階層を超えるネットやピンの信号接続を行う階層型論理回路の信号接続プログラム、方法及び装置に関する。
【背景技術】
【０００２】
従来、ＬＳＩ回路の設計は、機能設計、階層型論理回路の信号接続及びレイアウト設計の３段階に大きく分けられる。【０００３】
機能設計は実現したい機能からレジスタ転送レベル (ＲＴＬ：Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ)の回路を作成する。階層型論理回路の信号接続はＲＴＬの回路から論理ゲートのネットリストを作成する。レイアウト設計はネットリストからマスクパタンを作成する。【０００４】
通常、階層型論理回路の信号接続を効率的に行うためにハードウェア記述言語 (ＨＤＬ：Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ)を用いて論理合成や論理検証などを行っている。【０００５】
昨今、ＬＳＩ回路の大規模化がますます進んでいる。しかし、ハードウェア記述言語が大きくなると、論理合成や論理検証にかかる時間が増え、またハードウェア記述言語の可読性も低くなる。そこで、論理回路を機能分割し、階層化することが求められている。【０００６】
階層分割したハードウェア記述言語はその階層内における信号の接続しか記述できない。即ち、階層外の信号の接続を直接記述できない。そこで階層間をまたがる信号の接続には、階層ポートを生成し、その階層ポートを仲立ちとして接続を記述することになる。【０００７】
従来、階層間をまたがる信号の接続(ネットやピンの接続)を行う場合、図３１のように、
（１）階層ポート３００の生成
（２）階層内のネット３０２やピンと階層ポート３００との接続
（３）階層外のネット３０４やピンと階層ポート３００の接続
という手続きを行わなければならない。
【特許文献１】特開２００２−５６０４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、このような従来の階層間をまたがる信号の接続方法にあっては、階層間をまたがる信号の接続を行うために、前記（１）〜（３）の３つの手続きを明示的に指示しなければならない。また、階層ポートの生成の際は、階層ポートの入力ポートか出力ポートかの入出力属性も明示的に指示しなければならない。この手続きは人手に頼ることが多く、誤りが混入する可能性がある。【０００９】
更に、前記（１）〜（３）の３つの手続きを単純に自動化しようとした場合、接続対象が複数あると、階層ポートを複数生成してしまうことが考えられる。図３２（Ａ）は、階層内のネット３０２に対し階層外に２つのネット３０４，３０６が存在した場合であり、この場合には２つの階層ポート３００−１，３００−２を生成して接続してしまう。【００１０】
しかし、このような複数の階層ポートの生成はデザインルールによって許されないことがある。この場合は図３２（Ｂ）のように、階層ポート３００を一つだけ生成して、接続することが望ましい。【００１１】
本発明は、階層を越えるネットやピンの接続を行う場合、接続対象の情報を与えると、自動的に適切な階層ポートを生成し階層内外の接続処理を行う階層型論理回路の接続方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
（プログラム）
本発明は、階層型論理回路の信号接続プログラムを提供する。本発明の階層型論理回路の信号接続プログラムは、コンピュータに、
階層構造をもつ論理回路の情報を読込む論理回路読込ステップと、
論理回路の階層を経てピン又はネットを含む接続対象に至るまでの接続対象情報を読み込み、階層をノードとし接続対象をリーフとするツリー構造を作成する接続対象読込ステップと、
ツリー構造を根から参照し、ツリーが分岐しているノードを最上位ノードとする最上位階層調整ステップと、
ツリー構造から接続対象をネットとするリーフを検索し、ネットと階層ポートを介して接続する下位階層ノードに、階層ポート又は下位階層内のネットをリーフとして追加する接続対象補正ステップと、
ツリー構造に対してボトムアップ的に接続処理を行なって論理回路情報を書替える接続処理ステップと、
接続処理が完了した論理回路情報を出力する論理回路出力ステップと、
を実行することを特徴とする。【００１３】
最上位階層調整ステップは、ツリー構造のノードを根から取出して処理対象とし、処理対象ノードのリーフが零で下位ノードが１つの場合に下位ノードを次の処理対象ノードとし、処理対象ノードのリーフが１つ以上又は下位ノードが２つ以上の場合に最上位ノードとする。【００１４】
接続対象補正ステップは、
ツリー構造から接続対象をネットとするリーフを検索するリーフ検索ステップと、
ネットに接続するピンを検索するピン検索ステップと、
ピンが検索された場合、ピンのインスタンスを階層とする下位ノードを検索し、
下位ノードが検索された場合、
（１）前記下位階層ノードにおいて、前記ピンに対応する階層ポートに前記下位階層ノードのネットが接続されていない場合は、前記階層ポートを前記下位階層のノードのリーフとして追加し、
（２）前記ピンに対応する階層ポートに前記下位階層ノードのネットが接続されている場合は、前記ネットを前記下位階層のノードのリーフとして追加する、
リーフ追加ステップと、
を実行する。【００１５】
接続処理ステップは、
処理対象ノードが最上位ノードでない場合、
処理対象ノードのリーフが階層ポートか又はネットで階層ポートに接続しているかどうか判定し、階層ポートが存在する場合は、階層ポートを接続対象とし、階層ポートが存在しない場合は新たに階層ポートを作成する階層ポート生成ステップと、
対象ノードのリーフの少なくともいずれか１つにドライバがあれば入出力属性を出力属性に設定し、ドライバがなければ入出力属性を入力属性に設定する入出力属性設定ステップと、
対象ノードのリーフを階層ポートと接続する接続ステップと、
上位階層のノードに階層ポートをリーフとして追加する接続補正ステップと、
処理対象ノードを削除して次のノードを処理対象ノードとする更新ステップと、
を実行する。【００１６】
また処理対象ノードが最上位ノードの場合、
最初の処理対象リーフがネットならば前記ネットを基準ネットとし、最初の処理対象リーフが階層ポートまたはピンならば、階層ポート又はピンに接続するネットを基準ネットとし、ネットの接続が無い場合は、新たにネットを生成し接続して基準ネットとする基準ネット設定ステップと、
２つ目以降の処理対象リーフを前記基準ネットと接続する接続ステップと、
を実行する。【００１７】
（方法）
本発明は階層型論理回路の信号接続方法を提供する。本発明の階層型論理回路の信号接続方法は、
階層構造をもつ論理回路の情報を読込む論理回路読込ステップと、
論理回路の階層を経てピン又はネットを含む接続対象に至るまでの接続対象情報を読み込み、階層をノードとし接続対象をリーフとするツリー構造を作成する接続対象読込ステップと、
ツリー構造を根から参照し、ツリーが分岐しているノードを最上位ノードとする最上位階層調整ステップと、
ツリー構造から続対象をネットとするリーフを検索し、ネットと階層ポートを介して接続する下位階層ノードに、階層ポート又は下位階層内のネットをリーフとして追加する接続対象補正ステップと、
ツリー構造に対してボトムアップ的に接続処理を行なって論理回路情報を書替える接続処理ステップと、
接続処理が完了した論理回路情報を出力する論理回路出力ステップと、
を備えたことを特徴とする。【００１８】
（装置）
本発明は階層型論理回路の信号接続装置を提供する。本発明の階層型論理回路の信号接続装置は、
階層構造をもつ論理回路の情報を読込む論理回路読込部と、
論理回路の階層を経てピン又はネットを含む接続対象に至るまでの接続対象情報を読み込み、階層をノードとし接続対象をリーフとするツリー構造を作成する接続対象読込部と、
ツリー構造を根から参照し、ツリーが分岐しているノードを最上位ノードとする最上位階層調整部と、
ツリー構造から接続対象をネットとするリーフを検索し、ネットと階層ポートを介して接続する下位階層ノードに、階層ポート又は下位階層内のネットをリーフとして追加する接続対象補正部と、
ツリー構造に対してボトムアップ的に接続処理を行なって論理回路情報を書替える接続処理部と、
接続処理が完了した論理回路情報を出力する論理回路出力部と、
を備えたことを特徴とする。
【発明の効果】
【００１９】
本発明によれば、階層構造をもつ論理回路について階層を越えるネットやピンの接続を行う場合に、階層化されたハードウェア記述言語（ＨＤＬ）による論理回路を読み込んで、接続対象情報の読込みにより接続対象を指示するだけで、途中の階層ポート生成や接続は自動的に行うことにより書替えられて階層化された論理回路のハードウェア記述言語（ＨＤＬ）を出力することができる。【００２０】
また、自動生成する階層ポートを最小にすることができ、デザインルール的な問題も解消できる。更に階層ポートの入出力属性も自動で付与することができる。【００２１】
これらの自動化により、人手によるミスの防止、設計の利便性の向上、ターンアラウンド時間（ＴＡＴ）の短縮及び高品質の階層型論理回路の信号接続が可能となる。
【図面の簡単な説明】
【００２２】
【図１】本発明による論理回路設計装置の機能構成のブロック図
【図２】図１の機能構成を実現するコンピュータのハードウェア環境のブロック図
【図３】本実施形態のツリー構造に使用するリーフのデータ構造の説明図
【図４】本実施形態のツリー構造に使用するノードのデータ構造の説明図
【図５】本実施形態で読込む論理回路のブロック図
【図６】図５に対応した論理回路情報の説明図
【図７】本実施形態で読込むライブラリの説明図
【図８】本実施形態で読込む接続対象情報の説明図
【図９】本実施形態で作成するツリー構造の説明図
【図１０】本実施形態による接続対象補正処理が行われたツリー構造の説明図
【図１１】図１０のツリー構造における接続処理に対応した論理回路のブロック図
【図１２】図１１に続く接続処理に対応したツリー構造の説明図
【図１３】図１２のツリー構造における接続処理に対応した論理回路のブロック図
【図１４】図１３に続く接続処理に対応したツリー構造の説明図
【図１５】図１４に続く最上位ノードの接続処理に対応したツリー構造の説明図
【図１６】図１５のツリー構造における接続処理に対応した論理回路のブロック図
【図１７】本実施形態の接続処理により書替えられて出力される論理回路情報の説明図
【図１８】本実施形態における接続対象補正処理の他の処理形態となる論理回路のブロック図
【図１９】図１８の論理回路に対応した論理回路情報の説明図
【図２０】図１８の論理回路について作成されたツリー構造と接続対象補正処理の説明図
【図２１】図２０の接続対象補正に対応した論理回路のブロック図
【図２２】図２１に続く接続処理に対応したツリー構造の説明図
【図２３】図２２のツリー構造における接続処理に対応した論理回路のブロック図
【図２４】図２３までの接続処理により書替えられて出力される論理回路情報の説明図
【図２５】本発明による全体的な階層接続処理のフローチャート
【図２６】図２５のステップＳ３による最上位階層調整処理の詳細を示したフローチャート
【図２７】図２５のステップＳ４による接続対象補正処理の詳細を示したフローチャート
【図２８】図２５のステップＳ５による接続処理の詳細を示したフローチャート
【図２９】図２８に続く接続処理のフローチャート
【図３０】図２８に続く接続処理のフローチャート
【図３１】従来の階層間にまたがる信号接続の説明図
【図３２】従来の手法で階層ポートが複数生成される問題の説明図
【発明を実施するための最良の形態】
【００２３】
図１は本発明による階層型論理回路間の信号接続処理を実行する論理設計装置の機能構成のブロック図である。図１において、論理回路設計装置１０に対しては、ハードウェア記述言語（ＨＤＬ）により作成された論理回路情報１２、論理回路で使用するセルを格納したライブラリ１４及び階層間接続の接続対象を特定する接続対象情報１６が準備され、それぞれ読み込まれる。【００２４】
論理回路設計装置１０には、論理回路読込部１８、論理回路記憶部２０、接続対象読込部２２、接続対象記憶部２４、最上位階層調整部２６、接続対象補正部２８、接続処理部３０及び論理回路出力部３２の機能が設けられ、階層間接続処理が完了した論理回路情報３４を出力するようにしている。【００２５】
論理回路読込部１８は、ハードウェア記述言語（ＨＤＬ）を使用した論理設計で作成された論理回路情報を読み込んで論理回路記憶部２０に記憶する。論理回路読込部１８で読み込む論理回路情報１２は、階層間を跨るネットやピンに対する接続が未処理であり、この階層間に亘る信号接続を論理回路設計装置１０において実行することになる。また論理回路読込部１８は、ライブラリ１４から論理回路で使用しているセル情報を読み込んで論理回路記憶部２０に記憶する。【００２６】
接続対象読込部２２は、処理対象とする論理回路の階層を経てピンまたはネットを含む接続対象に至るまでの接続対象情報１６を読み込み、階層をノードとし、接続対象となるピンやネットをリーフとするツリー構造を作成して、接続対象記憶部２４に記憶する。【００２７】
最上位階層調整部２６は、接続対象記憶部２４に記憶されているツリー構造を対象に、ツリー構造を根（ｒｏｏｔ）から参照し、ツリーが分岐しているノードを最上位ノードと設定する。この最上位ノードの調整により、ツリー構造において根からツリーが分岐するところまでは接続処理を行う必要がないため、これによって接続処理を省略して簡略化することができる。【００２８】
接続対象補正部２８は、接続対象記憶部２４に記憶されたツリー構造を対象に、ツリー構造から接続対象をネットとするリーフを検索し、このネットと階層ポートを介して接続する下位階層ノードに
（１）階層ポート、又は
（２）下位階層のネット
をリーフとして追加する接続対象補正処理を行う。【００２９】
この接続対象補正処理は後の説明で更に詳細に説明されるが、この接続対象補正処理によって、ネットと下位ノードの中の接続対象であるピンまたはネットと接続する場合に、新たに階層ポートを生成することなく、既に存在する階層ポートを使用できるようにしている。【００３０】
接続処理部３０は、最上位階層調整及び接続対象補正が行われた接続対象記憶部２４のツリー構造を対象に、ツリー構造に対しボトムアップ的にネットや階層ポートを含むピンの接続処理を行って、論理回路記憶部２０に記憶している論理回路情報を書替える。この書替処理によって、階層構造を持つ論理回路の上位階層から接続対象となるネットまたはピンまでの階層間に亘る接続が作成される。【００３１】
論理回路出力部３２は、接続処理が完了した論理回路情報３４を論理回路記憶部２０から読み出して外部に出力する。【００３２】
図２は図１の論理回路設計装置１０の機能を実現するコンピュータのハードウェア環境のブロック図である。図２において、ＣＰＵ３６のバス４８には、ＲＡＭ５０、ＲＯＭ５２、ハードディスクドライブ５４、キーボード５８、マウス６０、ディスプレイ６２を接続するデバイスインタフェース５６、ＬＡＮなどの外部のネットワークを接続するネットワークアダプタ６４が設けられている。【００３３】
本実施形態の階層論理回路の信号接続プログラムは、ハードディスクドライブ５４にインストールされており、コンピュータを電源投入により起動した際のブート処理、及びＯＳインストールが完了した後のアプリケーションプログラムの実行に伴い、ハードディスクドライブ５４からＲＡＭ５０に展開され、ＣＰＵ３６により実行される。【００３４】
図３は本実施形態のツリー構造に使用するリーフのデータ構造の説明図である。図３（Ａ）はリーフ６６のデータ構造であり、図３（Ｂ）にリーフ６６の内容説明を行っている。【００３５】
図３（Ａ）はリーフ６６のデータ構造であり、リーフ名６８、ノードポインタ７０、リーフ種別７２、ネット情報７４及びポート情報７６で構成される。その内容は図３（Ｂ）に示すように、ノードポインタ７０はリーフ６６を持つノードのポインタである。リーフ種別７２はリーフ６６がネットかあるいはピンまたは階層ポートであることを示し、ネットならば真（ｔｒｕｅ）、ピンまたは階層ポートならば偽（ｆａｌｓｅ）を格納する。【００３６】
ネット情報７４はリーフ種別７２が真（ｔｒｕｅ）のとき、即ちネットの場合に、ネットの情報を格納する。ポート情報７６は、リーフ種別７２が偽（ｆａｌｓｅ）のとき、即ちピンまたは階層ポートとき、ピンまたは階層ポートの情報を格納する。【００３７】
図４は本実施形態のツリー構造に使用するノードのデータ構造の説明図である。図４（Ａ）はノード７８のデータ構造であり、ノード名８０、上位ノードポインタ８２、下位ノードポインタ８４、リーフポインタ８６、インスタンス名８８及びノード階層情報９０で構成されている。【００３８】
それぞれの内容は図４（Ｂ）に示すようになる。上位ノードポインタ８２はノード７８に対する上位ノードのポインタである。下位ノードポインタ８４はノード７８の下位のノードのポインタである。リーフポインタ８６はノード７８にあるリーフのポインタである。インスタンス名８８はノード７８のインスタンス名である。更にノード階層情報９０は、ノード７８、即ち階層の情報を格納する領域である。【００３９】
図５は階層間を跨ぐ信号接続処理のために本実施形態で読み込む論理回路の一例を示したブロック図である。図５において、論理回路９２は上位側から階層９４を持ち、階層９４の中には次の階層９５と階層９８が存在する。更に階層９５の中には次の階層９６が存在している。ここで階層９４を例にとると、実際の処理では
階層名（モジュール名）＝ａ（Ａ）
で表記されている。【００４０】
また論理回路９２において、階層９４にはインスタンス１００が存在し、階層９６にはインスタンス１０１，１０２が存在し、更に階層９８にはインスタンス１０４が存在する。インスタンス１００，１０１，１０２，１０４は図１のライブラリ１４のライブラリ情報から得られるもので、それぞれセル情報として提供される。例えば階層９４のインスタンス１００を例にとると
インスタンス名（セル名）＝ｌ（ｓ１）
として表記されている。【００４１】
論理回路９２における接続対象として、ピン１１０，１１２，１１４，１１５，１１６，１１８が存在する。また接続対象として、ネット１０６，１０８が存在する。接続対象としてのピン１１０，１１２，１１４，１１５，１１６，１１８には、それぞれピンを示す符号「ｐ，ｅ，ｇ，ｍ，ｐ，ｋ」が表記されている。更に、ネット１０６については「ｈ」が表記されている。【００４２】
図６は図５に示した論理回路９２に対応した論理回路情報の説明図である。図６において、論理回路情報１２は、階層９４がトップ階層であることを示すモジュール情報１２２、階層９４の内容を示すモジュール情報１２４、階層９５に対応したモジュール情報１２６、階層９８に対応したモジュール情報１２８、階層９６に対応したモジュール情報１３０で構成されている。【００４３】
図７は本実施形態で読み込む図５の論理回路９２に対応したライブラリ１４の説明図である。図７において、ライブラリ１４には、図５のインスタンス１００に対応したセル情報１３２、インスタンス１０４に対応したセル情報１３４、インスタンス１０１に対応したセル情報１３６、及びインスタンス１０２に対応したセル情報１３８が設けられている。【００４４】
図８は本実施形態で読み込む図５の論理回路９２を対象とした接続対象情報の説明図である。図８（Ａ）は接続対象情報１６であり、図５の論理回路における階層名「ａ，ｂ，ｃ，ｉ」と、接続対象となるインスタンスを示す「ｄ，ｆ，ｊ，ｌ」及びピン「ｅ，ｇ，ｋ，ｍ」、更にネット「ｈ」を用いて、ノードからリーフに至るツリー構造の接続を設定している。【００４５】
この接続対象情報は、例えば接続対象情報１４０を例にとると、「／」を区切り文字として、最後の要素「ｄ．ｅ」をリーフとし、それ以前の要素「ａ，ｂ，ｃ，ｄ」のそれぞれをノードとし、データ構造を構築している。最後の要素であるリーフに「．（ピリオド）」が含まれていればピンであることを示す。この場合、「ｄ．ｅ」のとき、ピリオドの前がインスタンス名「ｄ」であり、ピリオドの後がピン名「ｅ」である。【００４６】
図８（Ａ）の接続対象情報１４０の意味は、図８（Ｂ）に示すようになる。更にピリオドの前のインスタンス名が空であれば階層ポートである。これは図８（Ｃ）に接続対象情報１５０として例示しており、ピリオドの前が「空き」となっていればピリオドの後ろのピンは階層ポートであることを示す。【００４７】
更に最後の要素であるリーフにピリオドが含まれていなければネットである。これは図８（Ａ）（Ｂ）の接続対象情報１４４が該当し、最後の要素にはピリオドが含まれていないため、これはネット「ｈ」を表している。【００４８】
図９は、図８の接続対象情報に基づいて図５の論理回路９２を対象に本実施形態で作成したツリー構造の説明図である。図９において、ノード１５２はトップノードであり、トップノードの配下のノード１５４を起点に図８の接続対象情報１４０によりノード１５４，１５６，１６０を介してリーフ１６８に至るツリー構造が構築される。【００４９】
また図８の接続対象情報１４２により、ノード１５４，１５６，１６０を介してリーフ１７０に至るツリー構造が構築される。また図８の接続対象１４４により、ノード１５４，１５６を介してリーフ１６４に至るツリー構造が構築される。また図８の接続対象１４６により、ノード１５４，１５８を経てリーフ１６６に至るツリー構造が構築される。また図８の接続対象１４８により、ノード１５４からリーフ１６２に至るツリー構造が構築される。【００５０】
なお図９におけるノード１５４，１５６，１５８，１６０については、それぞれノードの名称として階層名「ａ，ｂ，ｉ，ｃ」を表記している。更にリーフ１６２，１６６，１６８，１７０については、ピン名「ｍ，ｋ，ｅ，ｇ」を表記している。更にリーフ１６４については、ネット名「ｈ」を表記している。このようなツリー構造につき、まず最上位階層調整処理が実行され、図１０に示すように、ツリーが分岐しているノード１５４が最上位ノード１７２となる。【００５１】
続いて接続対象補正処理が行われる。補正の対象となるのは接続対象がネットのリーフであり、このツリー構造にあってはリーフ１６４のみがネット「ｈ」を接続対象としていることから、これが補正の対象となる。【００５２】
この接続対象補正処理１７６は次の処理を行う。
（１）ツリー構造から接続対象をネット「ｈ」とするリーフ１６４を検索する。
（２）ネットｈに接続するピン「ｐ」を検索する。
（３）ピンｐが検索された場合、ピン「ｐ」をインスタンスとする階層「ｃ」の下位ノード１６０を検索する。
（４）下位ノードとしてノード１６０が検索された場合、ノード１６０においてピン「ｐ」に対応する階層ポートにノード１６０のネットが、この場合には接続されていないことから、階層ポートであるピン「ｐ」をノード１６０のリーフ１７４として追加する。【００５３】
このような接続対象補正処理１７６による接続対象を階層ポート「ｐ」としたリーフ１７４の追加により、新たに階層ポートを生成することなく、補正処理により追加した階層ポートを接続処理に使用することができる。【００５４】
ここで図１０のツリー構造において、接続補正対象となるネットを持つリーフの検索方法としては、深さ優先探索や幅優先探索、更には他の探索方法であってもよい。いずれのリーフ探索方法をとったとしても補正対象は１つだけであることから、結果は同じになる。【００５５】
このように最上位階層調整処理及び接続対象補正処理が済むと、続いて接続処理が行われる。接続処理はノードごとに行う。ノードの検索方法としては、深さ優先検索や幅優先検索、更には他の検索でも構わないが、階層の深いところから順に、即ちボトムアップ的に接続処理を行う必要がある。【００５６】
本実施形態にあっては、最深優先探索（ｄｅｅｐｅｓｔ−ｆｉｒｓｔ）を例にとって接続処理を説明する。図１０にあっては、各ノードに深さについて、最上位ノード１７２を設定したノード１５４の値ｎをｎ＝０、その下位をｎ＝１、次をｎ＝２、更にその下をｎ＝３としており、まずｎ＝２と最も深い階層のノード１６０が処理対象として検索される。【００５７】
処理対象として検索されたノード１６０を見ると、ノード１６０は最上位ではなく、リーフ１６８，１７０，１７４のうちリーフ１７４に階層ポート「ｐ」が存在するため、リーフ１６８のピン「ｅ」とリーフ１７０のピン「ｃ」をリーフ１７４の階層ポート「ｐ」に接続するように、記憶している論理回路情報を書き替える。【００５８】
そして、上位階層のノード１６０に階層ポート「ｐ」を持つリーフを追加し、ノード１６０を削除する。【００５９】
この接続処理における論理回路９２は図１１のようになり、またツリー構造は図１２のようになる。即ち図１１の論理回路９２にあっては、階層ポート「ｐ」にピン「ｅ」とピン「ｇ」がネット１７８により接続される。また図１２の階層構造にあっては、処理対象となっていたノード１６０の上位のノード１５６に接続対象を階層ポート「ｐ」とするリーフ１８２が接続され、ノード１６０が削除されたツリー構造となる。【００６０】
図１２のツリー構造については、次にｎ＝１のノード１５６が処理対象となり、ノード１５６は最上位ではなく、リーフ１８２，１６４に階層ポートが存在しないため、図１３の論理回路９２に示すように、新たに階層ポート１８４を生成し、階層ポート１８４の入出力属性を、この場合にはドライバが存在しないことから入力（ｉｎｐｕｔ）属性とし、図１２のリーフ１８２のピン「ｐ」とリーフ１６４のネット「ｈ」を、新たに作成した階層ポート１８４に、ネット１８６で接続するように、記憶している論理回路情報を書替える。【００６１】
更に上位階層のノード「ａ」に階層ポート「ｐ」をピンのリーフとして追加し、現在、処理対象となっているノード１５６を削除する。この処理に伴うツリー構造は、図１４のようになる。図１４にあっては、図１２で処理対象となっていたノード１５６は削除され、新たに作成した階層ポート１８４をピン「ｐ」とするリーフ１８８を上位のノード１５４に追加している。【００６２】
続いて図１４のツリー構造において、ノード１５８が処理対象となり、ノード１５８は最上位ではなく、ノード１５８のリーフ１６６のピン「ｋ」には図１３の論理回路９２から明らかなように、階層ポート１１６が予め接続されており、既に階層ポートが存在することから、階層ポートは新たに作成しない。続いて上位階層のノード１５４に階層ポートであるピン「ｐ」をリーフとして追加し、ノード１５８を削除する。この接続処理の結果、ツリー構造は図１５のようになる。【００６３】
即ち、図１４で処理対象となっていたノード１５８が削除され、新たに階層ポートであるピン「ｐ」のリーフ１９０を上位のノード１５４に追加している。【００６４】
続いて図１５のツリー構造について、ｎ＝０のノード１５４が接続処理の対象となる。ここでノード１５４は最上位ノード１７２であることから、複数のリーフ１８８，１９０，１６２のうちの１つであるリーフ１８８に着目し、リーフ１８８は接続対象をピン「ｐ」としており、ネットでないことから、新たに図１６の論理回路９２に示すように、ネット１９２を生成して、これを基準ネット「ｎ」とする。【００６５】
次に２つ目以降のリーフ１９０，１６２については、リーフ１９０のピン「ｐ」とリーフ１６２のピン「ｍ」を基準ネット「ｎ」に接続するように、記憶している論理回路情報を書替える。この結果、図１６の論理回路９２に示すように、図８の接続対象情報１６に従った階層間に亘る接続対象であるピン及びネットとの接続処理が終了する。【００６６】
ツリー構造に基づく接続処理が終了したならば、最後に書替えの済んだ論理回路情報を出力し、この書替えが済んだ論理回路情報３４は図１７のようになる。図１７の書替えの済んだ論理回路情報３４にあっては、図６に示した接続処理のための読込まれた論理回路情報１２のモジュール情報１２２とモジュール情報１２８についてはそのままであるが、残りのモジュール情報についてはモジュール情報１２４０，１２６０，１３００の破線で囲んだ部分の書替えが行われ、階層間を跨る信号のネットやピンに対する接続が完了した論理回路情報となっている。【００６７】
図１８は本実施形態における接続対象補正処理の他の処理形態となる論理回路のブロック図である。図１８の論理回路９２にあっては、図５の論理回路９２の階層９６の階層ポートであるピン１１０にネット１０６を接続していたが、図１８の論理回路９２にあっては、更に、階層ポートであるピン１１０の階層ノード内のネット１９４を階層ポート１１０に接続している。【００６８】
図１９は図１８の論理回路９２に対応した論理回路情報１２であり、階層９６に対応したモジュール情報１３０の破線１９４の部分に、ネット１９４を階層ポートとしてのピンｐに接続している情報が追加されている。【００６９】
図２０は図１８の論理回路９２の接続情報に基づくツリー構造であり、補正対象処理を行う前のツリー構造は図９と同じであるが、ネット「ｈ」を持つリーフ１６４を対象とした接続対象補正処理１９６により、ネット「ｎ」のリーフ１９８をノード１６０に追加している。この接続対象補正処理１６０の処理手順は次のようになる。
（１）ツリー構造から接続対象をネット「ｈ」とするリーフ１６４を検索する。
（２）ネット「ｈ」に接続するピン「ｐ」を検索する。
（３）ピン「ｐ」が検索された場合、ピン「ｐ」のインスタンスを階層とする下位のノード１６０を検索する。
（４）下位のノード１６０が検索された場合、ピン「ｐ」に対応する階層ポートに下位のノード１６０のネット「ｎ」が接続されている場合には、ネット「ｎ」を下位のノード１６０のリーフ１９８として追加する。【００７０】
この接続処理における論理回路９２は図２１のようになる。【００７１】
図２０の接続対象補正処理に続く接続処理は図５の論理回路９２の場合と同じであり、ノード１６０を対象とした最初の接続処理により、図２２に示すツリー構造を持つ論理回路情報の書替えが行われ、これは図１２のツリー構造と同じである。【００７２】
更に図１４及び図１５に示した書替処理のツリー構造を経て、最終的に図２３の論理回路９２に示す接続が最上位ノード１７２であるノード１５４を処理対象とした処理で終了し、接続処理が終了した論理回路９２から図２４の書替えが行われた論理回路情報３４を読み出して外部に出力する。【００７３】
図２４の接続処理により書替えが済んだ論理回路情報３４については、図１９の読み込まれた論理回路情報１２と対比して明らかなように、モジュール情報１２２，１２８は同じであるが、モジュール情報１２４，１２６，１３０がモジュール情報１２４０，１２６０，１３００の破線で囲む領域のように書替えられていることが分かる。【００７４】
図２５は図１の論理回路設計装置１０による全体的な階層型論理回路の接続処理のフローチャートである。図２５において、ステップＳ１で論理回路読込部１８が論理回路情報１２及びライブラリ１４の処理情報を読み込み、論理回路記憶部２０に記憶する。【００７５】
続いてステップＳ２で接続対象読込部２２が接続対象情報１６を読み込み、ツリー構造を作成して接続対象記憶部２４に記憶する。続いてステップＳ３で、ツリー構造についてトップから検索し、ツリーが分岐しているノードを最上位階層のノードとする調整を行う。【００７６】
続いてステップＳ４で、ネットが接続している階層ポートを探索して、階層ポートを接続に使用するためのリーフの追加を行う補正処理を実行する。続いてステップＳ５で、ツリー構造につきボトムアップ的にノード単位の接続処理を行って、記憶している論理回路情報を書き替え、最後に、ステップＳ６で論理回路情報を外部に出力する。【００７７】
図２６は図２５のステップＳ３による最上位階層調整処理の詳細を示したフローチャートであり、図１０のツリー構造を例にとって説明すると次のようになる。【００７８】
まずステップＳ１で最上位ノードにツリー構造のトップノード１５２を代入する。続いてステップＳ２で、最上位ノードに接続するリーフ数が０で且つ最上位ノードに接続する下位ノードが１つか否かチェックする。【００７９】
ノード１５２の場合には、この条件を満足することから最上位ノードではないと判定し、ステップＳ３に進み、下位ノード１５４を最上位ノードに入れ替える。続いてステップＳ２で、入れ替えた下位ノード１５４を最上位ノードとして、最上位ノードに接続するリーフ数が０で且つ最上位ノードに接続する下位ノードが１つか否か判定する。ノード１５４については、１つのリーフ１６２と２つのノード１５６，１５８が接続されていることから、ステップＳ４に進み、ノード１５４を最上位ノードと確定する。【００８０】
図２７は図２５のステップＳ４による接続対象補正処理の詳細を示したフローチャートであり、図１０のツリー構造を例にとって説明すると次のようになる。【００８１】
まずステップＳ１で最上位ノード１７２であるノード１５４の配下のリーフを取り出す。このリーフは、本実施形態にあっては最深探索（ｄｅｅｐｅｓｔ−ｆｉｒｓｔ）を採用していることから、深さを示すｎ＝３に位置する例えばリーフ１７０を取り出す。ステップＳ２でリーフ１７０の接続対象がネットか否か判定し、この場合にはピン「ｇ」であることから、ステップＳ９に進み、全てのリーフを処理済みか否かチェックし、未処理であることからステップＳ１に戻り、次のリーフ１６８を取り出す。【００８２】
このようなリーフの取出し処理を繰り返し、リーフ１６４を取り出した場合、ステップＳ２でリーフ１６４はネット「ｈ」であることが判別される。この場合にはステップＳ３に進み、論理回路情報即ち図５に示す論理回路９２の情報から、ネット「ｈ」に接続するピン「ｐ」を取り出す。次にステップＳ４でネット「ｈ」のインスタンス「ｃ」を階層とする下位ノードがあるか否かチェックする。【００８３】
この場合には下位ノード１６０が存在することから、ステップＳ５で、下位ノード１６０で対応する階層ポート「ｐ」に階層内のネットが接続されているか否か判定する。図５の論理回路９２の場合には階層９６の中のネットは階層ポート「ｐ」に接続されていないことから、ステップＳ７の処理に進み、下位ノード１６０に階層ポート「ｐ」のリーフ１７４を追加する。【００８４】
一方、図１８に示した論理回路９２にあっては、下位ノードで対応する階層ポート「ｐ」にノード内のネット「ｎ」が接続されていることから、ステップＳ６に進み、この場合には図２０のツリー構造に示すように、下位ノード１６０にネット「ｎ」のリーフ１９８を追加する。【００８５】
続いてステップＳ８に進み、全てのピンを処理済みか否かチェックし、処理済みであれば、ステップＳ９で全てのリーフの処理済みか否かチェックし、図１０の場合にはネットのリーフは１つしかないことから、一連の処理を終了し、図２５のメインルーチンにリターンする。【００８６】
図２８、図２９及び図３０は、図２５のステップＳ５による接続処理の詳細を示したフローチャートであり、図１０のツリー構造を例にとって説明すると次のようになる。【００８７】
まずステップＳ１で、最上位ノード１７２であるノード１５４配下のノードに階層数ｎをセットする。次にステップＳ２で最も深い階層の未処理のノードを処理対象として取り出す。この場合はｎ＝２のノード１６０を取り出す。【００８８】
続いてステップＳ３でノード１６０は最上位ノードか否か判定し、最上位ノードでないことから、図２９のステップＳ４に進む。図２９のステップＳ４〜Ｓ１３の処理はツリー構造から階層ポートを検索する処理である。【００８９】
まずステップＳ４で作業ポートを不在（ｆａｌｓｅ）に初期化した後、ステップＳ５で処理対象ノード１６０のリーフ１６８，１７０，１７４のいずれか１つ、例えばリーフ１６８を取り出す。次にステップＳ６でリーフ１６８はネットか否か判定する。この場合にはピン「ｅ」であることから、ステップＳ９に進む。【００９０】
ステップＳ９ではリーフ１６８のピンは階層ポートか否かチェックする。ピン「ｅ」は図５の論理回路９２から階層ポートではないことから、ステップＳ１１に進み、ピン「ｅ」が階層ポートに接続しているか否かチェックする。この場合には階層ポートに接続していないことから、ステップＳ１３に進み、全てのリーフ処理が済んでいないことから、ステップＳ５に戻り、次のリーフ１７０を取り出す。【００９１】
リーフ１７０もピン「ｇ」であることから、リーフ１６８と同じ処理になる。次にリーフ１７４を取り出すが、リーフ１７４は階層ポート「ｐ」であることから、ステップＳ９でリーフ１７４のピン「ｐ」が階層ポートであることが判別され、ステップＳ１０で作業ポートにピン「ｐ」を代入する。【００９２】
更に接続処理が進んで、図１２のツリー構造でノード１５６を処理対象とした場合の階層ポートの検索処理にあっては、ステップＳ５でリーフ１６４を取り出した場合、ステップＳ６でリーフ１６４はネット「ｈ」であることが判別され、この場合にはステップＳ７でネット「ｈ」が階層ポートに接続しているか否か判定し、図１１の論理回路９２のようにネットｈは階層ポート「ｐ」に接続していることから、ステップＳ８で作業ポートにピン「ｐ」を代入する。【００９３】
この図２９におけるステップＳ４〜Ｓ１３により、ツリー構造における階層ポートの存在が検索される。【００９４】
続いて図３０のステップＳ１４に進む。図３０のステップＳ１４〜Ｓ１８の処理は、階層ポートが存在しなかった場合に新たに階層ポートを生成する処理である。ステップＳ１４にあっては、作業ポートは不在（ｆａｌｓｅ）、即ち図２９のステップＳ４〜Ｓ１３の処理で階層ポートが検索されなかったか否か判定し、不在、即ち検索されなかった場合には、ステップＳ１５で作業ポートに新規に作成した階層ポートを代入する。【００９５】
続いてステップＳ１６で、リーフの中にドライバがあるか否か判定し、ドライバがあればステップＳ１７で新規に作成した階層ポートの属性を出力（ｏｕｔｐｕｔ）属性に設定し、ドライバがなければステップＳ１８で階層ポートの属性を入力（ｉｎｐｕｔ）属性に設定する。【００９６】
以上の階層ポートの検索あるいは存在しない場合の新規生成が済んだならば、ステップＳ１９で例えば図１０の処理対象ノード１６０におけるリーフ１６８を取り出し、ステップＳ２０でリーフはネットか否かチェックし、この場合にはピン「ｅ」であることから、ステップＳ２２に進み、ピン「ｅ」と作業ポートが未接続ならばピン「ｅ」と作業ポートを接続する。【００９７】
一方、ステップＳ２０でリーフがネットであった場合には、ステップＳ２１に進み、ネットと作業ポートが未接続であれば、ネットと作業ポートを接続する。このステップＳ１９〜Ｓ２２の処理を、ステップＳ２３で処理対象ノード１６０の全てのリーフ１６８，１７０，１７４について繰り返す。ステップＳ２３で処理対象ノード１６０の全てのリーフの処理が済むと、ステップＳ２４で上位ノード１５６に作業ポートのインスタンスのピン「ｐ」を持つリーフを図１２のツリー構造のリーフ１８２のように追加し、ステップＳ２５で現在処理対象となっている図１０のノード１６０を削除する。【００９８】
続いて図２８のステップＳ３６に戻り、全てのノード処理が済んだか否かチェックする。済んでいないことからステップＳ２に戻り、次の階層ｎ＝１のノードを取り出し、同様な処理を繰り返す。このようなボトムアップ的なノードごとの処理を通じて、ステップＳ３で図１５の階層構造まで接続処理が進み、ノード１５４が取り出されると、ステップＳ３で最上位ノードであることが判別され、ステップＳ２６に進む。【００９９】
ステップＳ２６にあっては、最上位ノード１５４に接続したリーフの１つ例えばリーフ１８８を取り出し、リーフ１８８はネットか否か判別する。この場合にはリーフ１８８はピンであることから、ステップＳ２８に進み、リーフ１８８のピンにネットの接続があるか否か判定する。【０１００】
この場合には図１３の論理回路９２からピン「ｐ」にネットの接続はないことから、ステップＳ３０に進み、基準ネットに新規作成ネットを代入し、リーフ１８８のピン「ｐ」を基準ネットに接続する。即ち図１６の論理回路９２のように、基準ネット１９２を新規作成し、これにピン「ｐ」を接続する。【０１０１】
一方、ステップＳ２６で最上位ノードに接続したリーフがネットであった場合には、ステップＳ２７でそのネットを基準ネットに設定する。またステップＳ２８でリーフのピンにネットの接続がある場合には、ステップＳ２９でピンの接続ネットを基準ネットに設定する。このステップＳ２６〜Ｓ３０の処理が、最上位ノードに接続されている複数のリーフのうちの最初に取り出したリーフの処理となる。【０１０２】
続いてステップＳ３１で次のリーフ、即ち２番目のリーフ１９０を取り出し、ステップＳ３２でリーフがネットか否か判定し、この場合にリーフ１９０はピン「ｐ」であることから、ステップＳ３４でピン「ｐ」と基準ネットを接続する。ステップＳ３２でリーフがもしネットであった場合には、ステップＳ３３でネットと基準ネットを接続する。【０１０３】
以下、残りのリーフにつき、ステップＳ３５で全てのリーフの処理が済むまで、ステップＳ３１からステップＳ３４の処理により基準ネットにピンまたはネットを接続する処理を繰り返す。ステップＳ３５で処理が済むと、ステップＳ３６で最上位ノードについての処理が終了したことから、全てのノード処理が済んだことが判別され、一連の接続処理を終了する。【０１０４】
このような図２５〜図３０のフローチャートに示した処理手順は、本発明による階層型論理回路の信号接続処理プログラムの内容を表すものである。【０１０５】
また本発明は、階層型論理回路の信号処理プログラムを格納したコンピュータ可読の記録媒体を提供する。この記録媒体は、ＣＤ−ＲＯＭ、フロッピーディスク（Ｒ）、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの可搬型記憶媒体や、コンピュータシステムの内外に備えられたハードディスクドライブなどの記憶装置の他、回線を介してプログラムを保持するデータベース、あるいは他のコンピュータシステム並びにそのデータベースや、更に回線上の伝送媒体を含むものである。【０１０６】
また本発明は、その目的と利点を損なうことのない適宜の変形を含み、更に上記の実施形態に示した数値による限定は受けない。
【図１】
2007083747.tif 000003
【図２】
2007083747.tif 000004
【図３】
2007083747.tif 000005
【図４】
2007083747.tif 000006
【図５】
2007083747.tif 000007
【図６】
2007083747.tif 000008
【図７】
2007083747.tif 000009
【図８】
2007083747.tif 000010
【図９】
2007083747.tif 000011
【図１０】
2007083747.tif 000012
【図１１】
2007083747.tif 000013
【図１２】
2007083747.tif 000014
【図１３】
2007083747.tif 000015
【図１４】
2007083747.tif 000016
【図１５】
2007083747.tif 000017
【図１６】
2007083747.tif 000018
【図１７】
2007083747.tif 000019
【図１８】
2007083747.tif 000020
【図１９】
2007083747.tif 000021
【図２０】
2007083747.tif 000022
【図２１】
2007083747.tif 000023
【図２２】
2007083747.tif 000024
【図２３】
2007083747.tif 000025
【図２４】
2007083747.tif 000026
【図２５】
2007083747.tif 000027
【図２６】
2007083747.tif 000028
【図２７】
2007083747.tif 000029
【図２８】
2007083747.tif 000030
【図２９】
2007083747.tif 000031
【図３０】
2007083747.tif 000032
【図３１】
2007083747.tif 000033
【図３２】
2007083747.tif 000034
【手続補正書】
【提出日】平成20年5月8日(2008.5.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータに、
階層構造をもつ論理回路の情報を読込む論理回路読込ステップと、
前記論理回路の階層を経てピン又はネットを含む接続対象に至るまでの接続対象情報を読み込み、階層をノードとし接続対象をリーフとするツリー構造を作成する接続対象読込ステップと、
前記ツリー構造を根から参照し、ツリーが分岐しているノードを最上位ノードとする最上位階層調整ステップと、
前記ツリー構造から接続対象をネットとするリーフを検索し、前記ネットと階層ポートを介して接続する下位階層ノードに、前記階層ポート又は下位階層内のネットをリーフとして追加する接続対象補正ステップと、
前記ツリー構造に対してボトムアップ的に接続処理を行なって前記論理回路情報を書替える接続処理ステップと、
前記接続処理が完了した論理回路情報を出力する論理回路出力ステップと、
を実行することを特徴とする階層型論理回路の信号接続プログラム。
【請求項２】
請求項１記載の階層型論理回路の信号接続プログラムに於いて、前記接続対象補正ステップは、
前記ツリー構造から接続対象をネットとするリーフを検索するリーフ検索ステップと、
前記ネットに接続するピンを検索するピン検索ステップと、
前記ピンが検索された場合、前記ピンのインスタンスを階層とする下位ノードを検索し、
前記下位ノードが検索された場合、
（１）前記下位階層ノードにおいて、前記ピンに対応する階層ポートに前記下位階層ノードのネットが接続されていない場合は、前記階層ポートを前記下位階層のノードのリーフとして追加し、
（２）前記ピンに対応する階層ポートに前記下位階層ノードのネットが接続されている場合は、前記ネットを前記下位階層のノードのリーフとして追加する、
リーフ追加ステップと、
を実行することを特徴とする階層型論理回路の信号接続プログラム。
【請求項３】
請求項１記載の階層型論理回路の信号接続プログラムに於いて、前記接続処理ステップは、
処理対象ノードが最上位ノードでない場合、
処理対象ノードのリーフが階層ポートか又はネットで階層ポートに接続しているかどうか判定し、階層ポートが存在する場合は、階層ポートを接続対象とし、階層ポートが存在しない場合は新たに階層ポートを作成する階層ポート生成ステップと、
前記対象ノードのリーフの少なくともいずれか１つにドライバがあれば入出力属性を出力属性に設定し、ドライバがなければ前記入出力属性を入力属性に設定する入出力属性設定ステップと、
前記対象ノードのリーフを前記階層ポートと接続する接続ステップと、
上位階層のノードに前記階層ポートをリーフとして追加する接続補正ステップと、
前記処理対象ノードを削除して次のノードを処理対象ノードとする更新ステップと、
を実行し、
処理対象ノードが最上位ノードの場合、
最初の処理対象リーフがネットならば前記ネットを基準ネットとし、最初の処理対象リーフが階層ポートまたはピンならば、前記階層ポート又はピンに接続するネットを基準ネットとし、ネットの接続が無い場合は、新たにネットを生成し接続して基準ネットとする基準ネット設定ステップと、
２つ目以降の処理対象リーフを前記基準ネットと接続する接続ステップと、
を実行すること特徴とする階層型論理回路の信号接続プログラム。
【請求項４】
階層構造をもつ論理回路の情報を読込む論理回路読込ステップと、
前記論理回路の階層を経てピン又はネットを含む接続対象に至るまでの接続対象情報を読み込み、階層をノードとし接続対象をリーフとするツリー構造を作成する接続対象読込ステップと、
前記ツリー構造を根から参照し、ツリーが分岐しているノードを最上位ノードとする最上位階層調整ステップと、
前記ツリー構造から接続対象をネットとするリーフを検索し、前記ネットと階層ポートを介して接続する下位階層ノードに、前記階層ポート又は下位階層内のネットをリーフとして追加する接続対象補正ステップと、
前記ツリー構造に対してボトムアップ的に接続処理を行なって前記論理回路情報を書替える接続処理ステップと、
前記接続処理が完了した論理回路情報を出力する論理回路出力ステップと、
を備えたことを特徴とする階層型論理回路の信号接続方法。
【請求項５】
階層構造をもつ論理回路の情報を読込む論理回路読込部と、
前記論理回路の接続対象情報を読み込み、階層をノードとし接続対象をリーフとするツリー構造を作成する接続対象読込部と、
前記ツリー構造を参照し、ツリーが分岐しているノードを最上位ノードとする最上位階層調整部と、
前記ツリー構造から接続対象をネットとするリーフを検索し、前記ネットと階層ポートを介して接続する下位階層ノードに、前記階層ポート又は下位階層内のネットをリーフとして追加する接続対象補正部と、
前記ツリー構造に対して接続処理を行なって前記論理回路情報を書替える接続処理部と、
前記接続処理が完了した論理回路情報を出力する論理回路出力部と、
を備えたことを特徴とする論理回路設計装置。
【手続補正書】
【提出日】平成21年3月9日(2009.3.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータに、
階層構造をもつ論理回路の情報を読込む論理回路読込ステップと、
前記論理回路の階層を経てピン又はネットを含む接続対象に至るまでの接続対象情報を読み込み、階層をノードとし接続対象をリーフとするツリー構造を作成する接続対象読込ステップと、
前記ツリー構造を根から参照し、ツリーが分岐しているノードを最上位ノードとする最上位階層調整ステップと、
前記ツリー構造から接続対象をネットとするリーフを検索し、前記ネットと階層ポートを介して接続する下位階層ノードに、前記階層ポート又は下位階層内のネットをリーフとして追加する接続対象補正ステップと、
前記ツリー構造に対してボトムアップ的に接続処理を行なって前記論理回路情報を書替える接続処理ステップと、
前記接続処理が完了した論理回路情報を出力する論理回路出力ステップと、
を実行させることを特徴とする階層型論理回路の信号接続プログラム。
【請求項２】
請求項１記載の階層型論理回路の信号接続プログラムに於いて、前記接続対象補正ステップは、
前記ツリー構造から接続対象をネットとするリーフを検索するリーフ検索ステップと、前記ネットに接続するピンを検索するピン検索ステップと、
前記ピンが検索された場合、前記ピンのインスタンスを階層とする下位ノードを検索し、前記下位ノードが検索された場合、
（１）前記下位階層ノードにおいて、前記ピンに対応する階層ポートに前記下位階層ノードのネットが接続されていない場合は、前記階層ポートを前記下位階層のノードのリーフとして追加し、
（２）前記ピンに対応する階層ポートに前記下位階層ノードのネットが接続されている場合は、前記ネットを前記下位階層のノードのリーフとして追加する、
リーフ追加ステップと、
をコンピュータに実行させることを特徴とする階層型論理回路の信号接続プログラム。
【請求項３】
請求項１記載の階層型論理回路の信号接続プログラムに於いて、前記接続処理ステップは、
処理対象ノードが最上位ノードでない場合、
処理対象ノードのリーフが階層ポートか又はネットで階層ポートに接続しているかどうか判定し、階層ポートが存在する場合は、階層ポートを接続対象とし、階層ポートが存在しない場合は新たに階層ポートを作成する階層ポート生成ステップと、
前記対象ノードのリーフの少なくともいずれか1つにドライバがあれば入出力属性を出力属性に設定し、ドライバがなければ前記入出力属性を入力属性に設定する入出力属性設定ステップと、
前記対象ノードのリーフを前記階層ポートと接続する接続ステップと、
上位階層のノードに前記階層ポートをリーフとして追加する接続補正ステップと、
前記処理対象ノードを削除して次のノードを処理対象ノードとする更新ステップと、
を実行し、
処理対象ノードが最上位ノードの場合、
最初の処理対象リーフがネットならば前記ネットを基準ネットとし、最初の処理対象リーフが階層ポートまたはピンならば、前記階層ポート又はピンに接続するネットを基準ネットとし、ネットの接続が無い場合は、新たにネットを生成し接続して基準ネットとする基準ネット設定ステップと、
２つ目以降の処理対象リーフを前記基準ネットと接続する接続ステップと、
をコンピュータに実行させることを特徴とする階層型論理回路の信号接続プログラム。
【請求項４】
階層構造をもつ論理回路の情報を読込む論理回路読込部と、
前記論理回路の接続対象情報を読み込み、階層をノードとし接続対象をリーフとするツリー構造を作成する接続対象読込部と、
前記ツリー構造を参照し、ツリーが分岐しているノードを最上位ノードとする最上位階層調整部と、
前記ツリー構造から接続対象をネットとするリーフを検索し、前記ネットと階層ポートを介して接続する下位階層ノードに、前記階層ポート又は下位階層内のネットをリーフとして追加する接続対象補正部と、
前記ツリー構造に対して接続処理を行なって前記論理回路情報を書替える接続処理部と、前記接続処理が完了した論理回路情報を出力する論理回路出力部と、
を備えたことを特徴とする論理回路設計装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】          明細書
【発明の名称】      画像データ処理装置及び方法
【技術分野】
【０００１】
本発明は、階層構造を含む論理回路中の接続を行う階層型論理回路の信号接続プログラム、方法及び装置、に関し、特に、階層を超えるネットやピンの信号接続を行う階層型論理回路の信号接続プログラム、方法及び装置に関する。
【背景技術】
【０００２】
従来、ＬＳＩ回路の設計は、機能設計、階層型論理回路の信号接続及びレイアウト設計の３段階に大きく分けられる。
【０００３】
機能設計は実現したい機能からレジスタ転送レベル(ＲＴＬ：Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ)の回路を作成する。階層型論理回路の信号接続はＲＴＬの回路から論理ゲートのネットリストを作成する。レイアウト設計はネットリストからマスクパタンを作成する。
【０００４】
通常、階層型論理回路の信号接続を効率的に行うためにハードウェア記述言語 (ＨＤＬ：Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ)を用いて論理合成や論理検証などを行っている。
【０００５】
昨今、ＬＳＩ回路の大規模化がますます進んでいる。しかし、ハードウェア記述言語が大きくなると、論理合成や論理検証にかかる時間が増え、またハードウェア記述言語の可読性も低くなる。そこで、論理回路を機能分割し、階層化することが求められている。
【０００６】
階層分割したハードウェア記述言語はその階層内における信号の接続しか記述できない。即ち、階層外の信号の接続を直接記述できない。そこで階層間をまたがる信号の接続には、階層ポートを生成し、その階層ポートを仲立ちとして接続を記述することになる。
【０００７】
従来、階層間をまたがる信号の接続(ネットやピンの接続)を行う場合、図３１のように、
（１）階層ポート３００の生成
（２）階層内のネット３０２やピンと階層ポート３００との接続
（３）階層外のネット３０４やピンと階層ポート３００の接続
という手続きを行わなければならない。
【先行技術文献】
【特許文献１】    特開２００２−５６０４１
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、このような従来の階層間をまたがる信号の接続方法にあっては、階層間をまたがる信号の接続を行うために、前記（１）〜（３）の３つの手続きを明示的に指示しなければならない。また、階層ポートの生成の際は、階層ポートの入力ポートか出力ポートかの入出力属性も明示的に指示しなければならない。この手続きは人手に頼ることが多く、誤りが混入する可能性がある。
【０００９】
更に、前記（１）〜（３）の３つの手続きを単純に自動化しようとした場合、接続対象が複数あると、階層ポートを複数生成してしまうことが考えられる。図３２（Ａ）は、階層内のネット３０２に対し階層外に２つのネット３０４，３０６が存在した場合であり、この場合には２つの階層ポート３００−１，３００−２を生成して接続してしまう。
【００１０】
しかし、このような複数の階層ポートの生成はデザインルールによって許されないことがある。この場合は図３２（Ｂ）のように、階層ポート３００を一つだけ生成して、接続することが望ましい。
【００１１】
本発明は、階層を越えるネットやピンの接続を行う場合、接続対象の情報を与えると、自動的に適切な階層ポートを生成し階層内外の接続処理を行う階層型論理回路の接続方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
（プログラム）
本発明は、階層型論理回路の信号接続プログラムを提供する。本発明の階層型論理回路の信号接続プログラムは、コンピュータに、
階層構造をもつ論理回路の情報を読込む論理回路読込ステップと、
論理回路の階層を経てピン又はネットを含む接続対象に至るまでの接続対象情報を読み込み、階層をノードとし接続対象をリーフとするツリー構造を作成する接続対象読込ステップと、
ツリー構造を根から参照し、ツリーが分岐しているノードを最上位ノードとする最上位階層調整ステップと、
ツリー構造から接続対象をネットとするリーフを検索し、ネットと階層ポートを介して接続する下位階層ノードに、階層ポート又は下位階層内のネットをリーフとして追加する接続対象補正ステップと、
ツリー構造に対してボトムアップ的に接続処理を行なって論理回路情報を書替える接続処理ステップと、
接続処理が完了した論理回路情報を出力する論理回路出力ステップと、
を実行することを特徴とする。
【００１３】
最上位階層調整ステップは、ツリー構造のノードを根から取出して処理対象とし、処理対象ノードのリーフが零で下位ノードが１つの場合に下位ノードを次の処理対象ノードとし、処理対象ノードのリーフが１つ以上又は下位ノードが２つ以上の場合に最上位ノードとする。
【００１４】
接続対象補正ステップは、
ツリー構造から接続対象をネットとするリーフを検索するリーフ検索ステップと、
ネットに接続するピンを検索するピン検索ステップと、
ピンが検索された場合、ピンのインスタンスを階層とする下位ノードを検索し、
下位ノードが検索された場合、
（１）前記下位階層ノードにおいて、前記ピンに対応する階層ポートに前記下位階層ノードのネットが接続されていない場合は、前記階層ポートを前記下位階層のノードのリーフとして追加し、
（２）前記ピンに対応する階層ポートに前記下位階層ノードのネットが接続されている場合は、前記ネットを前記下位階層のノードのリーフとして追加する、
リーフ追加ステップと、
を実行する。
【００１５】
接続処理ステップは、
処理対象ノードが最上位ノードでない場合、
処理対象ノードのリーフが階層ポートか又はネットで階層ポートに接続しているかどうか判定し、階層ポートが存在する場合は、階層ポートを接続対象とし、階層ポートが存在しない場合は新たに階層ポートを作成する階層ポート生成ステップと、
対象ノードのリーフの少なくともいずれか１つにドライバがあれば入出力属性を出力属性に設定し、ドライバがなければ入出力属性を入力属性に設定する入出力属性設定ステップと、
対象ノードのリーフを階層ポートと接続する接続ステップと、
上位階層のノードに階層ポートをリーフとして追加する接続補正ステップと、
処理対象ノードを削除して次のノードを処理対象ノードとする更新ステップと、
を実行する。
【００１６】
また処理対象ノードが最上位ノードの場合、
最初の処理対象リーフがネットならば前記ネットを基準ネットとし、最初の処理対象リーフが階層ポートまたはピンならば、階層ポート又はピンに接続するネットを基準ネットとし、ネットの接続が無い場合は、新たにネットを生成し接続して基準ネットとする基準ネット設定ステップと、
２つ目以降の処理対象リーフを前記基準ネットと接続する接続ステップと、
を実行する。
（方法）
本発明は階層型論理回路の信号接続方法を提供する。本発明の階層型論理回路の信号接続方法は、
階層構造をもつ論理回路の情報を読込む論理回路読込ステップと、
論理回路の階層を経てピン又はネットを含む接続対象に至るまでの接続対象情報を読み込み、階層をノードとし接続対象をリーフとするツリー構造を作成する接続対象読込ステップと、
ツリー構造を根から参照し、ツリーが分岐しているノードを最上位ノードとする最上位階層調整ステップと、
ツリー構造から続対象をネットとするリーフを検索し、ネットと階層ポートを介して接続する下位階層ノードに、階層ポート又は下位階層内のネットをリーフとして追加する接続対象補正ステップと、
ツリー構造に対してボトムアップ的に接続処理を行なって論理回路情報を書替える接続処理ステップと、
接続処理が完了した論理回路情報を出力する論理回路出力ステップと、
を備えたことを特徴とする。
（装置）
本発明は階層型論理回路の信号接続装置を提供する。本発明の階層型論理回路の信号接続装置は、
階層構造をもつ論理回路の情報を読込む論理回路読込部と、
論理回路の階層を経てピン又はネットを含む接続対象に至るまでの接続対象情報を読み込み、階層をノードとし接続対象をリーフとするツリー構造を作成する接続対象読込部と、
ツリー構造を根から参照し、ツリーが分岐しているノードを最上位ノードとする最上位階層調整部と、
ツリー構造から接続対象をネットとするリーフを検索し、ネットと階層ポートを介して接続する下位階層ノードに、階層ポート又は下位階層内のネットをリーフとして追加する接続対象補正部と、
ツリー構造に対してボトムアップ的に接続処理を行なって論理回路情報を書替える接続処理部と、
接続処理が完了した論理回路情報を出力する論理回路出力部と、
を備えたことを特徴とする。
【発明の効果】
【００１７】
本発明によれば、階層構造をもつ論理回路について階層を越えるネットやピンの接続を行う場合に、階層化されたハードウェア記述言語（ＨＤＬ）による論理回路を読み込んで、接続対象情報の読込みにより接続対象を指示するだけで、途中の階層ポート生成や接続は自動的に行うことにより書替えられて階層化された論理回路のハードウェア記述言語（ＨＤＬ）を出力することができる。
【００１８】
また、自動生成する階層ポートを最小にすることができ、デザインルール的な問題も解消できる。更に階層ポートの入出力属性も自動で付与することができる。
【００１９】
これらの自動化により、人手によるミスの防止、設計の利便性の向上、ターンアラウンド時間（ＴＡＴ）の短縮及び高品質の階層型論理回路の信号接続が可能となる。
【図面の簡単な説明】
【００２０】
【図１】
本発明による論理回路設計装置の機能構成のブロック図
【図２】
図１の機能構成を実現するコンピュータのハードウェア環境のブロック図
【図３】
本実施形態のツリー構造に使用するリーフのデータ構造の説明図
【図４】
本実施形態のツリー構造に使用するノードのデータ構造の説明図
【図５】
本実施形態で読込む論理回路のブロック図
【図６】
図５に対応した論理回路情報の説明図
【図７】
本実施形態で読込むライブラリの説明図
【図８】
本実施形態で読込む接続対象情報の説明図
【図９】
本実施形態で作成するツリー構造の説明図
【図１０】
本実施形態による接続対象補正処理が行われたツリー構造の説明図
【図１１】
図１０のツリー構造における接続処理に対応した論理回路のブロック図
【図１２】
図１１に続く接続処理に対応したツリー構造の説明図
【図１３】
図１２のツリー構造における接続処理に対応した論理回路のブロック図
【図１４】
図１３に続く接続処理に対応したツリー構造の説明図
【図１５】
図１４に続く最上位ノードの接続処理に対応したツリー構造の説明図
【図１６】
図１５のツリー構造における接続処理に対応した論理回路のブロック図
【図１７】
本実施形態の接続処理により書替えられて出力される論理回路情報の説明図
【図１８】
本実施形態における接続対象補正処理の他の処理形態となる論理回路のブロック図
【図１９】
図１８の論理回路に対応した論理回路情報の説明図
【図２０】
図１８の論理回路について作成されたツリー構造と接続対象補正処理の説明図
【図２１】
図２０の接続対象補正に対応した論理回路のブロック図
【図２２】
図２１に続く接続処理に対応したツリー構造の説明図
【図２３】
図２２のツリー構造における接続処理に対応した論理回路のブロック図
【図２４】
図２３までの接続処理により書替えられて出力される論理回路情報の説明図
【図２５】
本発明による全体的な階層接続処理のフローチャート
【図２６】
図２５のステップＳ３による最上位階層調整処理の詳細を示したフローチャート
【図２７】
図２５のステップＳ４による接続対象補正処理の詳細を示したフローチャート
【図２８】
図２５のステップＳ５による接続処理の詳細を示したフローチャート
【図２９】
図２８に続く接続処理のフローチャート
【図３０】
図２８に続く接続処理のフローチャート
【図３１】
従来の階層間にまたがる信号接続の説明図
【図３２】
従来の手法で階層ポートが複数生成される問題の説明図
【発明を実施するための形態】
【００２１】
図１は本発明による階層型論理回路間の信号接続処理を実行する論理設計装置の機能構成のブロック図である。図１において、論理回路設計装置１０に対しては、ハードウェア記述言語（ＨＤＬ）により作成された論理回路情報１２、論理回路で使用するセルを格納したライブラリ１４及び階層間接続の接続対象を特定する接続対象情報１６が準備され、それぞれ読み込まれる。
【００２２】
論理回路設計装置１０には、論理回路読込部１８、論理回路記憶部２０、接続対象読込部２２、接続対象記憶部２４、最上位階層調整部２６、接続対象補正部２８、接続処理部３０及び論理回路出力部３２の機能が設けられ、階層間接続処理が完了した論理回路情報３４を出力するようにしている。
【００２３】
論理回路読込部１８は、ハードウェア記述言語（ＨＤＬ）を使用した論理設計で作成された論理回路情報を読み込んで論理回路記憶部２０に記憶する。論理回路読込部１８で読み込む論理回路情報１２は、階層間を跨るネットやピンに対する接続が未処理であり、この階層間に亘る信号接続を論理回路設計装置１０において実行することになる。また論理回路読込部１８は、ライブラリ１４から論理回路で使用しているセル情報を読み込んで論理回路記憶部２０に記憶する。
【００２４】
接続対象読込部２２は、処理対象とする論理回路の階層を経てピンまたはネットを含む接続対象に至るまでの接続対象情報１６を読み込み、階層をノードとし、接続対象となるピンやネットをリーフとするツリー構造を作成して、接続対象記憶部２４に記憶する。
【００２５】
最上位階層調整部２６は、接続対象記憶部２４に記憶されているツリー構造を対象に、ツリー構造を根（ｒｏｏｔ）から参照し、ツリーが分岐しているノードを最上位ノードと設定する。この最上位ノードの調整により、ツリー構造において根からツリーが分岐するところまでは接続処理を行う必要がないため、これによって接続処理を省略して簡略化することができる。
【００２６】
接続対象補正部２８は、接続対象記憶部２４に記憶されたツリー構造を対象に、ツリー構造から接続対象をネットとするリーフを検索し、このネットと階層ポートを介して接続する下位階層ノードに
（１）階層ポート、又は
（２）下位階層のネット
をリーフとして追加する接続対象補正処理を行う。
【００２７】
この接続対象補正処理は後の説明で更に詳細に説明されるが、この接続対象補正処理によって、ネットと下位ノードの中の接続対象であるピンまたはネットと接続する場合に、新たに階層ポートを生成することなく、既に存在する階層ポートを使用できるようにしている。
【００２８】
接続処理部３０は、最上位階層調整及び接続対象補正が行われた接続対象記憶部２４のツリー構造を対象に、ツリー構造に対しボトムアップ的にネットや階層ポートを含むピンの接続処理を行って、論理回路記憶部２０に記憶している論理回路情報を書替える。この書替処理によって、階層構造を持つ論理回路の上位階層から接続対象となるネットまたはピンまでの階層間に亘る接続が作成される。
【００２９】
論理回路出力部３２は、接続処理が完了した論理回路情報３４を論理回路記憶部２０から読み出して外部に出力する。
【００３０】
図２は図１の論理回路設計装置１０の機能を実現するコンピュータのハードウェア環境のブロック図である。図２において、ＣＰＵ３６のバス４８には、ＲＡＭ５０、ＲＯＭ５２、ハードディスクドライブ５４、キーボード５８、マウス６０、ディスプレイ６２を接続するデバイスインタフェース５６、ＬＡＮなどの外部のネットワークを接続するネットワークアダプタ６４が設けられている。
【００３１】
本実施形態の階層論理回路の信号接続プログラムは、ハードディスクドライブ５４にインストールされており、コンピュータを電源投入により起動した際のブート処理、及びＯＳインストールが完了した後のアプリケーションプログラムの実行に伴い、ハードディスクドライブ５４からＲＡＭ５０に展開され、ＣＰＵ３６により実行される。
【００３２】
図３は本実施形態のツリー構造に使用するリーフのデータ構造の説明図である。図３（Ａ）はリーフ６６のデータ構造であり、図３（Ｂ）にリーフ６６の内容説明を行っている。
【００３３】
図３（Ａ）はリーフ６６のデータ構造であり、リーフ名６８、ノードポインタ７０、リーフ種別７２、ネット情報７４及びポート情報７６で構成される。その内容は図３（Ｂ）に示すように、ノードポインタ７０はリーフ６６を持つノードのポインタである。リーフ種別７２はリーフ６６がネットかあるいはピンまたは階層ポートであることを示し、ネットならば真（ｔｒｕｅ）、ピンまたは階層ポートならば偽（ｆａｌｓｅ）を格納する。
【００３４】
ネット情報７４はリーフ種別７２が真（ｔｒｕｅ）のとき、即ちネットの場合に、ネットの情報を格納する。ポート情報７６は、リーフ種別７２が偽（ｆａｌｓｅ）のとき、即ちピンまたは階層ポートとき、ピンまたは階層ポートの情報を格納する。
【００３５】
図４は本実施形態のツリー構造に使用するノードのデータ構造の説明図である。図４（Ａ）はノード７８のデータ構造であり、ノード名８０、上位ノードポインタ８２、下位ノードポインタ８４、リーフポインタ８６、インスタンス名８８及びノード階層情報９０で構成されている。
【００３６】
それぞれの内容は図４（Ｂ）に示すようになる。上位ノードポインタ８２はノード７８に対する上位ノードのポインタである。下位ノードポインタ８４はノード７８の下位のノードのポインタである。リーフポインタ８６はノード７８にあるリーフのポインタである。インスタンス名８８はノード７８のインスタンス名である。更にノード階層情報９０は、ノード７８、即ち階層の情報を格納する領域である。
【００３７】
図５は階層間を跨ぐ信号接続処理のために本実施形態で読み込む論理回路の一例を示したブロック図である。図５において、論理回路９２は上位側から階層９４を持ち、階層９４の中には次の階層９５と階層９８が存在する。更に階層９５の中には次の階層９６が存在している。ここで階層９４を例にとると、実際の処理では
階層名（モジュール名）＝ａ（Ａ）
で表記されている。
【００３８】
また論理回路９２において、階層９４にはインスタンス１００が存在し、階層９６にはインスタンス１０１，１０２が存在し、更に階層９８にはインスタンス１０４が存在する。インスタンス１００，１０１，１０２，１０４は図１のライブラリ１４のライブラリ情報から得られるもので、それぞれセル情報として提供される。例えば階層９４のインスタンス１００を例にとると
インスタンス名（セル名）＝ｌ（ｓ１）
として表記されている。
【００３９】
論理回路９２における接続対象として、ピン１１０，１１２，１１４，１１５，１１６，１１８が存在する。また接続対象として、ネット１０６，１０８が存在する。接続対象としてのピン１１０，１１２，１１４，１１５，１１６，１１８には、それぞれピンを示す符号「ｐ，ｅ，ｇ，ｍ，ｐ，ｋ」が表記されている。更に、ネット１０６については「ｈ」が表記されている。
【００４０】
図６は図５に示した論理回路９２に対応した論理回路情報の説明図である。図６において、論理回路情報１２は、階層９４がトップ階層であることを示すモジュール情報１２２、階層９４の内容を示すモジュール情報１２４、階層９５に対応したモジュール情報１２６、階層９８に対応したモジュール情報１２８、階層９６に対応したモジュール情報１３０で構成されている。
【００４１】
図７は本実施形態で読み込む図５の論理回路９２に対応したライブラリ１４の説明図である。図７において、ライブラリ１４には、図５のインスタンス１００に対応したセル情報１３２、インスタンス１０４に対応したセル情報１３４、インスタンス１０１に対応したセル情報１３６、及びインスタンス１０２に対応したセル情報１３８が設けられている。
【００４２】
図８は本実施形態で読み込む図５の論理回路９２を対象とした接続対象情報の説明図である。図８（Ａ）は接続対象情報１６であり、図５の論理回路における階層名「ａ，ｂ，ｃ，ｉ」と、接続対象となるインスタンスを示す「ｄ，ｆ，ｊ，ｌ」及びピン「ｅ，ｇ，ｋ，ｍ」、更にネット「ｈ」を用いて、ノードからリーフに至るツリー構造の接続を設定している。
【００４３】
この接続対象情報は、例えば接続対象情報１４０を例にとると、「／」を区切り文字として、最後の要素「ｄ．ｅ」をリーフとし、それ以前の要素「ａ，ｂ，ｃ，ｄ」のそれぞれをノードとし、データ構造を構築している。最後の要素であるリーフに「．（ピリオド）」が含まれていればピンであることを示す。この場合、「ｄ．ｅ」のとき、ピリオドの前がインスタンス名「ｄ」であり、ピリオドの後がピン名「ｅ」である。
【００４４】
図８（Ａ）の接続対象情報１４０の意味は、図８（Ｂ）に示すようになる。更にピリオドの前のインスタンス名が空であれば階層ポートである。これは図８（Ｃ）に接続対象情報１５０として例示しており、ピリオドの前が「空き」となっていればピリオドの後ろのピンは階層ポートであることを示す。
【００４５】
更に最後の要素であるリーフにピリオドが含まれていなければネットである。これは図８（Ａ）（Ｂ）の接続対象情報１４４が該当し、最後の要素にはピリオドが含まれていないため、これはネット「ｈ」を表している。
【００４６】
図９は、図８の接続対象情報に基づいて図５の論理回路９２を対象に本実施形態で作成したツリー構造１５１−１の説明図である。図９において、ノード１５２はトップノードであり、トップノードの配下のノード１５４を起点に図８の接続対象情報１４０によりノード１５４，１５６，１６０を介してリーフ１６８に至るツリー構造が構築される。
【００４７】
また図８の接続対象情報１４２により、ノード１５４，１５６，１６０を介してリーフ１７０に至るツリー構造が構築される。また図８の接続対象１４４により、ノード１５４，１５６を介してリーフ１６４に至るツリー構造が構築される。また図８の接続対象１４６により、ノード１５４，１５８を経てリーフ１６６に至るツリー構造が構築される。また図８の接続対象１４８により、ノード１５４からリーフ１６２に至るツリー構造が構築される。
【００４８】
なお図９におけるノード１５４，１５６，１５８，１６０については、それぞれノードの名称として階層名「ａ，ｂ，ｉ，ｃ」を表記している。更にリーフ１６２，１６６，１６８，１７０については、ピン名「ｍ，ｋ，ｅ，ｇ」を表記している。更にリーフ１６４については、ネット名「ｈ」を表記している。このようなツリー構造につき、まず最上位階層調整処理が実行され、図１０に示すように、ツリーが分岐しているノード１５４が最上位ノード１７２となる。
【００４９】
続いて接続対象補正処理が行われる。補正の対象となるのは接続対象がネットのリーフであり、このツリー構造にあってはリーフ１６４のみがネット「ｈ」を接続対象としていることから、これが補正の対象となる。
【００５０】
この接続対象補正処理１７６は次の処理を行う。
（１）ツリー構造から接続対象をネット「ｈ」とするリーフ１６４を検索する。
（２）ネットｈに接続するピン「ｐ」を検索する。
（３）ピンｐが検索された場合、ピン「ｐ」をインスタンスとする階層「ｃ」の下位ノード１６０を検索する。
（４）下位ノードとしてノード１６０が検索された場合、ノード１６０においてピン「ｐ」に対応する階層ポートにノード１６０のネットが、この場合には接続されていないことから、階層ポートであるピン「ｐ」をノード１６０のリーフ１７４として追加する。
【００５１】
このような接続対象補正処理１７６による接続対象を階層ポート「ｐ」としたリーフ１７４の追加により、新たに階層ポートを生成することなく、補正処理により追加した階層ポートを接続処理に使用することができる。
【００５２】
ここで図１０のツリー構造１５１−２において、接続補正対象となるネットを持つリーフの検索方法としては、深さ優先探索や幅優先探索、更には他の探索方法であってもよい。いずれのリーフ探索方法をとったとしても補正対象は１つだけであることから、結果は同じになる。
【００５３】
このように最上位階層調整処理及び接続対象補正処理が済むと、続いて接続処理が行われる。接続処理はノードごとに行う。ノードの検索方法としては、深さ優先検索や幅優先検索、更には他の検索でも構わないが、階層の深いところから順に、即ちボトムアップ的に接続処理を行う必要がある。
【００５４】
本実施形態にあっては、最深優先探索（ｄｅｅｐｅｓｔ−ｆｉｒｓｔ）を例にとって接続処理を説明する。図１０にあっては、各ノードに深さについて、最上位ノード１７２を設定したノード１５４の値ｎをｎ＝０、その下位をｎ＝１、次をｎ＝２、更にその下をｎ＝３としており、まずｎ＝２と最も深い階層のノード１６０が処理対象として検索される。
【００５５】
処理対象として検索されたノード１６０を見ると、ノード１６０は最上位ではなく、リーフ１６８，１７０，１７４のうちリーフ１７４に階層ポート「ｐ」が存在するため、リーフ１６８のピン「ｅ」とリーフ１７０のピン「ｃ」をリーフ１７４の階層ポート「ｐ」に接続するように、記憶している論理回路情報を書き替える。
【００５６】
そして、上位階層のノード１６０に階層ポート「ｐ」を持つリーフを追加し、ノード１６０を削除する。
【００５７】
この接続処理における論理回路９２は図１１のようになり、またツリー構造は図１２のようになる。即ち図１１の論理回路９２にあっては、階層ポート「ｐ」にピン「ｅ」とピン「ｇ」がネット１７８により接続される。また図１２の階層構造にあっては、処理対象となっていたノード１６０の上位のノード１５６に接続対象を階層ポート「ｐ」とするリーフ１８２が接続され、ノード１６０が削除されたツリー構造となる。
【００５８】
図１２のツリー構造１５１−３については、次にｎ＝１のノード１５６が処理対象となり、ノード１５６は最上位ではなく、リーフ１８２，１６４に階層ポートが存在しないため、図１３の論理回路９２に示すように、新たに階層ポート１８４を生成し、階層ポート１８４の入出力属性を、この場合にはドライバが存在しないことから入力（ｉｎｐｕｔ）属性とし、図１２のリーフ１８２のピン「ｐ」とリーフ１６４のネット「ｈ」を、新たに作成した階層ポート１８４に、ネット１８６で接続するように、記憶している論理回路情報を書替える。
【００５９】
更に上位階層のノード「ａ」に階層ポート「ｐ」をピンのリーフとして追加し、現在、処理対象となっているノード１５６を削除する。この処理に伴うツリー構造は、図１４のようになる。図１４にあっては、図１２で処理対象となっていたノード１５６は削除され、新たに作成した階層ポート１８４をピン「ｐ」とするリーフ１８８を上位のノード１５４に追加している。
【００６０】
続いて図１４のツリー構造１５１−４において、ノード１５８が処理対象となり、ノード１５８は最上位ではなく、ノード１５８のリーフ１６６のピン「ｋ」には図１３の論理回路９２から明らかなように、階層ポート１１６が予め接続されており、既に階層ポートが存在することから、階層ポートは新たに作成しない。続いて上位階層のノード１５４に階層ポートであるピン「ｐ」をリーフとして追加し、ノード１５８を削除する。この接続処理の結果、図１５のツリー構造１５１−５のようになる。
【００６１】
即ち、図１４で処理対象となっていたノード１５８が削除され、新たに階層ポートであるピン「ｐ」のリーフ１９０を上位のノード１５４に追加している。
【００６２】
続いて図１５のツリー構造１５１−５について、ｎ＝０のノード１５４が接続処理の対象となる。ここでノード１５４は最上位ノード１７２であることから、複数のリーフ１８８，１９０，１６２のうちの１つであるリーフ１８８に着目し、リーフ１８８は接続対象をピン「ｐ」としており、ネットでないことから、新たに図１６の論理回路９２に示すように、ネット１９２を生成して、これを基準ネット「ｎ」とする。
【００６３】
次に２つ目以降のリーフ１９０，１６２については、リーフ１９０のピン「ｐ」とリーフ１６２のピン「ｍ」を基準ネット「ｎ」に接続するように、記憶している論理回路情報を書替える。この結果、図１６の論理回路９２に示すように、図８の接続対象情報１６に従った階層間に亘る接続対象であるピン及びネットとの接続処理が終了する。
【００６４】
ツリー構造に基づく接続処理が終了したならば、最後に書替えの済んだ論理回路情報を出力し、この書替えが済んだ論理回路情報３４は図１７のようになる。図１７の書替えの済んだ論理回路情報３４にあっては、図６に示した接続処理のための読込まれた論理回路情報１２のモジュール情報１２２とモジュール情報１２８についてはそのままであるが、残りのモジュール情報についてはモジュール情報１２４０，１２６０，１３００の破線で囲んだ部分の書替えが行われ、階層間を跨る信号のネットやピンに対する接続が完了した論理回路情報となっている。
【００６５】
図１８は本実施形態における接続対象補正処理の他の処理形態となる論理回路のブロック図である。図１８の論理回路９２にあっては、図５の論理回路９２の階層９６の階層ポートであるピン１１０にネット１０６を接続していたが、図１８の論理回路９２にあっては、更に、階層ポートであるピン１１０の階層ノード内のネット１９４を階層ポート１１０に接続している。
【００６６】
図１９は図１８の論理回路９２に対応した論理回路情報１２であり、階層９６に対応したモジュール情報１３０の破線１９４の部分に、ネット１９４を階層ポートとしてのピンｐに接続している情報が追加されている。
【００６７】
図２０は図１８の論理回路９２の接続情報に基づくツリー構造１５１−６であり、補正対象処理を行う前のツリー構造は図９と同じであるが、ネット「ｈ」を持つリーフ１６４を対象とした接続対象補正処理１９６により、ネット「ｎ」のリーフ１９８をノード１６０に追加している。この接続対象補正処理１６０の処理手順は次のようになる。
（１）ツリー構造から接続対象をネット「ｈ」とするリーフ１６４を検索する。
（２）ネット「ｈ」に接続するピン「ｐ」を検索する。
（３）ピン「ｐ」が検索された場合、ピン「ｐ」のインスタンスを階層とする下位のノード１６０を検索する。
（４）下位のノード１６０が検索された場合、ピン「ｐ」に対応する階層ポートに下位のノード１６０のネット「ｎ」が接続されている場合には、ネット「ｎ」を下位のノード１６０のリーフ１９８として追加する。
【００６８】
この接続処理における論理回路９２は図２１のようになる。
【００６９】
図２０の接続対象補正処理に続く接続処理は図５の論理回路９２の場合と同じであり、ノード１６０を対象とした最初の接続処理により、図２２に示すツリー構造１５１−７を持つ論理回路情報の書替えが行われ、これは図１２のツリー構造１５１−３と同じである。
【００７０】
更に図１４及び図１５に示した書替処理のツリー構造を経て、最終的に図２３の論理回路９２に示す接続が最上位ノード１７２であるノード１５４を処理対象とした処理で終了し、接続処理が終了した論理回路９２から図２４の書替えが行われた論理回路情報３４を読み出して外部に出力する。
【００７１】
図２４の接続処理により書替えが済んだ論理回路情報３４については、図１９の読み込まれた論理回路情報１２と対比して明らかなように、モジュール情報１２２，１２８は同じであるが、モジュール情報１２４，１２６，１３０がモジュール情報１２４０，１２６０，１３００の破線で囲む領域のように書替えられていることが分かる。
【００７２】
図２５は図１の論理回路設計装置１０による全体的な階層型論理回路の接続処理のフローチャートである。図２５において、ステップＳ１で論理回路読込部１８が論理回路情報１２及びライブラリ１４の処理情報を読み込み、論理回路記憶部２０に記憶する。
【００７３】
続いてステップＳ２で接続対象読込部２２が接続対象情報１６を読み込み、ツリー構造を作成して接続対象記憶部２４に記憶する。続いてステップＳ３で、ツリー構造についてトップから検索し、ツリーが分岐しているノードを最上位階層のノードとする調整を行う。
【００７４】
続いてステップＳ４で、ネットが接続している階層ポートを探索して、階層ポートを接続に使用するためのリーフの追加を行う補正処理を実行する。続いてステップＳ５で、ツリー構造につきボトムアップ的にノード単位の接続処理を行って、記憶している論理回路情報を書き替え、最後に、ステップＳ６で論理回路情報を外部に出力する。
【００７５】
図２６は図２５のステップＳ３による最上位階層調整処理の詳細を示したフローチャートであり、図１０のツリー構造を例にとって説明すると次のようになる。
【００７６】
まずステップＳ１で最上位ノードにツリー構造のトップノード１５２を代入する。続いてステップＳ２で、最上位ノードに接続するリーフ数が０で且つ最上位ノードに接続する下位ノードが１つか否かチェックする。
【００７７】
ノード１５２の場合には、この条件を満足することから最上位ノードではないと判定し、ステップＳ３に進み、下位ノード１５４を最上位ノードに入れ替える。続いてステップＳ２で、入れ替えた下位ノード１５４を最上位ノードとして、最上位ノードに接続するリーフ数が０で且つ最上位ノードに接続する下位ノードが１つか否か判定する。ノード１５４については、１つのリーフ１６２と２つのノード１５６，１５８が接続されていることから、ステップＳ４に進み、ノード１５４を最上位ノードと確定する。
【００７８】
図２７は図２５のステップＳ４による接続対象補正処理の詳細を示したフローチャートであり、図１０のツリー構造を例にとって説明すると次のようになる。
【００７９】
まずステップＳ１で最上位ノード１７２であるノード１５４の配下のリーフを取り出す。このリーフは、本実施形態にあっては最深探索（ｄｅｅｐｅｓｔ−ｆｉｒｓｔ）を採用していることから、深さを示すｎ＝３に位置する例えばリーフ１７０を取り出す。ステップＳ２でリーフ１７０の接続対象がネットか否か判定し、この場合にはピン「ｇ」であることから、ステップＳ９に進み、全てのリーフを処理済みか否かチェックし、未処理であることからステップＳ１に戻り、次のリーフ１６８を取り出す。
【００８０】
このようなリーフの取出し処理を繰り返し、リーフ１６４を取り出した場合、ステップＳ２でリーフ１６４はネット「ｈ」であることが判別される。この場合にはステップＳ３に進み、論理回路情報即ち図５に示す論理回路９２の情報から、ネット「ｈ」に接続するピン「ｐ」を取り出す。次にステップＳ４でネット「ｈ」のインスタンス「ｃ」を階層とする下位ノードがあるか否かチェックする。
【００８１】
この場合には下位ノード１６０が存在することから、ステップＳ５で、下位ノード１６０で対応する階層ポート「ｐ」に階層内のネットが接続されているか否か判定する。図５の論理回路９２の場合には階層９６の中のネットは階層ポート「ｐ」に接続されていないことから、ステップＳ７の処理に進み、下位ノード１６０に階層ポート「ｐ」のリーフ１７４を追加する。
【００８２】
一方、図１８に示した論理回路９２にあっては、下位ノードで対応する階層ポート「ｐ」にノード内のネット「ｎ」が接続されていることから、ステップＳ６に進み、この場合には図２０のツリー構造に示すように、下位ノード１６０にネット「ｎ」のリーフ１９８を追加する。
【００８３】
続いてステップＳ８に進み、全てのピンを処理済みか否かチェックし、処理済みであれば、ステップＳ９で全てのリーフの処理済みか否かチェックし、図１０の場合にはネットのリーフは１つしかないことから、一連の処理を終了し、図２５のメインルーチンにリターンする。
【００８４】
図２８、図２９及び図３０は、図２５のステップＳ５による接続処理の詳細を示したフローチャートであり、図１０のツリー構造を例にとって説明すると次のようになる。
【００８５】
まずステップＳ１で、最上位ノード１７２であるノード１５４配下のノードに階層数ｎをセットする。次にステップＳ２で最も深い階層の未処理のノードを処理対象として取り出す。この場合はｎ＝２のノード１６０を取り出す。
【００８６】
続いてステップＳ３でノード１６０は最上位ノードか否か判定し、最上位ノードでないことから、図２９のステップＳ４に進む。図２９のステップＳ４〜Ｓ１３の処理はツリー構造から階層ポートを検索する処理である。
【００８７】
まずステップＳ４で作業ポートを不在（ｆａｌｓｅ）に初期化した後、ステップＳ５で処理対象ノード１６０のリーフ１６８，１７０，１７４のいずれか１つ、例えばリーフ１６８を取り出す。次にステップＳ６でリーフ１６８はネットか否か判定する。この場合にはピン「ｅ」であることから、ステップＳ９に進む。
【００８８】
ステップＳ９ではリーフ１６８のピンは階層ポートか否かチェックする。ピン「ｅ」は図５の論理回路９２から階層ポートではないことから、ステップＳ１１に進み、ピン「ｅ」が階層ポートに接続しているか否かチェックする。この場合には階層ポートに接続していないことから、ステップＳ１３に進み、全てのリーフ処理が済んでいないことから、ステップＳ５に戻り、次のリーフ１７０を取り出す。
【００８９】
リーフ１７０もピン「ｇ」であることから、リーフ１６８と同じ処理になる。次にリーフ１７４を取り出すが、リーフ１７４は階層ポート「ｐ」であることから、ステップＳ９でリーフ１７４のピン「ｐ」が階層ポートであることが判別され、ステップＳ１０で作業ポートにピン「ｐ」を代入する。
【００９０】
更に接続処理が進んで、図１２のツリー構造でノード１５６を処理対象とした場合の階層ポートの検索処理にあっては、ステップＳ５でリーフ１６４を取り出した場合、ステップＳ６でリーフ１６４はネット「ｈ」であることが判別され、この場合にはステップＳ７でネット「ｈ」が階層ポートに接続しているか否か判定し、図１１の論理回路９２のようにネットｈは階層ポート「ｐ」に接続していることから、ステップＳ８で作業ポートにピン「ｐ」を代入する。
【００９１】
この図２９におけるステップＳ４〜Ｓ１３により、ツリー構造における階層ポートの存在が検索される。
【００９２】
続いて図３０のステップＳ１４に進む。図３０のステップＳ１４〜Ｓ１８の処理は、階層ポートが存在しなかった場合に新たに階層ポートを生成する処理である。ステップＳ１４にあっては、作業ポートは不在（ｆａｌｓｅ）、即ち図２９のステップＳ４〜Ｓ１３の処理で階層ポートが検索されなかったか否か判定し、不在、即ち検索されなかった場合には、ステップＳ１５で作業ポートに新規に作成した階層ポートを代入する。
【００９３】
続いてステップＳ１６で、リーフの中にドライバがあるか否か判定し、ドライバがあればステップＳ１７で新規に作成した階層ポートの属性を出力（ｏｕｔｐｕｔ）属性に設定し、ドライバがなければステップＳ１８で階層ポートの属性を入力（ｉｎｐｕｔ）属性に設定する。
【００９４】
以上の階層ポートの検索あるいは存在しない場合の新規生成が済んだならば、ステップＳ１９で例えば図１０の処理対象ノード１６０におけるリーフ１６８を取り出し、ステップＳ２０でリーフはネットか否かチェックし、この場合にはピン「ｅ」であることから、ステップＳ２２に進み、ピン「ｅ」と作業ポートが未接続ならばピン「ｅ」と作業ポートを接続する。
【００９５】
一方、ステップＳ２０でリーフがネットであった場合には、ステップＳ２１に進み、ネットと作業ポートが未接続であれば、ネットと作業ポートを接続する。このステップＳ１９〜Ｓ２２の処理を、ステップＳ２３で処理対象ノード１６０の全てのリーフ１６８，１７０，１７４について繰り返す。ステップＳ２３で処理対象ノード１６０の全てのリーフの処理が済むと、ステップＳ２４で上位ノード１５６に作業ポートのインスタンスのピン「ｐ」を持つリーフを図１２のツリー構造のリーフ１８２のように追加し、ステップＳ２５で現在処理対象となっている図１０のノード１６０を削除する。
【００９６】
続いて図２８のステップＳ３６に戻り、全てのノード処理が済んだか否かチェックする。済んでいないことからステップＳ２に戻り、次の階層ｎ＝１のノードを取り出し、同様な処理を繰り返す。このようなボトムアップ的なノードごとの処理を通じて、ステップＳ３で図１５の階層構造まで接続処理が進み、ノード１５４が取り出されると、ステップＳ３で最上位ノードであることが判別され、ステップＳ２６に進む。
【００９７】
ステップＳ２６にあっては、最上位ノード１５４に接続したリーフの１つ例えばリーフ１８８を取り出し、リーフ１８８はネットか否か判別する。この場合にはリーフ１８８はピンであることから、ステップＳ２８に進み、リーフ１８８のピンにネットの接続があるか否か判定する。
【００９８】
この場合には図１３の論理回路９２からピン「ｐ」にネットの接続はないことから、ステップＳ３０に進み、基準ネットに新規作成ネットを代入し、リーフ１８８のピン「ｐ」を基準ネットに接続する。即ち図１６の論理回路９２のように、基準ネット１９２を新規作成し、これにピン「ｐ」を接続する。
【００９９】
一方、ステップＳ２６で最上位ノードに接続したリーフがネットであった場合には、ステップＳ２７でそのネットを基準ネットに設定する。またステップＳ２８でリーフのピンにネットの接続がある場合には、ステップＳ２９でピンの接続ネットを基準ネットに設定する。このステップＳ２６〜Ｓ３０の処理が、最上位ノードに接続されている複数のリーフのうちの最初に取り出したリーフの処理となる。
【０１００】
続いてステップＳ３１で次のリーフ、即ち２番目のリーフ１９０を取り出し、ステップＳ３２でリーフがネットか否か判定し、この場合にリーフ１９０はピン「ｐ」であることから、ステップＳ３４でピン「ｐ」と基準ネットを接続する。ステップＳ３２でリーフがもしネットであった場合には、ステップＳ３３でネットと基準ネットを接続する。
【０１０１】
以下、残りのリーフにつき、ステップＳ３５で全てのリーフの処理が済むまで、ステップＳ３１からステップＳ３４の処理により基準ネットにピンまたはネットを接続する処理を繰り返す。ステップＳ３５で処理が済むと、ステップＳ３６で最上位ノードについての処理が終了したことから、全てのノード処理が済んだことが判別され、一連の接続処理を終了する。
【０１０２】
このような図２５〜図３０のフローチャートに示した処理手順は、本発明による階層型論理回路の信号接続処理プログラムの内容を表すものである。
【０１０３】
また本発明は、階層型論理回路の信号処理プログラムを格納したコンピュータ可読の記録媒体を提供する。この記録媒体は、ＣＤ−ＲＯＭ、フロッピーディスク（Ｒ）、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの可搬型記憶媒体や、コンピュータシステムの内外に備えられたハードディスクドライブなどの記憶装置の他、回線を介してプログラムを保持するデータベース、あるいは他のコンピュータシステム並びにそのデータベースや、更に回線上の伝送媒体を含むものである。
【０１０４】
また本発明は、その目的と利点を損なうことのない適宜の変形を含み、更に上記の実施形態に示した数値による限定は受けない。
【符号の説明】
【０１０５】
１０：論理回路設計装置
１２：論理回路情報
１４：ライブラリ
１６：接続対象情報
１８：論理回路読込部
２０：論理回路記憶部
２２：接続対象読込部
２４接続対象記憶部
２６：最上位階層調整部
２８：接続対象補正部
３０：接続処理部
３２：論理回路出力部
３６：ＣＰＵ
４８：バス４８
５０：ＲＡＭ５０
５２：ＲＯＭ
５４：ハードディスクドライブ
５８：キーボード
６０：マウス
６２：ディスプレイ
５６：デバイスインタフェース
６４：ネットワークアダプタ
６６：リーフ
９２：論理回路
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図３
【補正方法】変更
【補正の内容】
【図３】
2007083747.tif 000035
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図４
【補正方法】変更
【補正の内容】
【図４】
2007083747.tif 000036
【国際調査報告】
2007083747.tif 000037
2007083747.tif 000038