(57)【要約】【課題】  ハードウェア記述言語（ＨＤＬ）を使用した回路設計に関して、設計物の解析の効率化を図る。【解決手段】  ＨＤＬデータの回路構造の構造解析を行う処理を、コンピュータに実行させる構造解析プログラムであって、前記ＨＤＬデータを取得する取得処理と、前記ＨＤＬデータに基づいて、構造解析用データベースを構築するデータベース構築処理と、前記構造解析用データベースを複製する複製処理と、前記複製された前記構造解析用データベースである複製データベースから、該複製データベースが表している前記ＨＤＬデータを構成する前記要素のうち所定の要素を削除する要素削除処理と、前記要素削除処理により前記要素が削除された前記複製データベースについて前記構造解析を行う構造解析処理により、上記課題の解決を図る。【選択図】図１
2006277154.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェア記述言語で記述された回路であって複数の要素から構成される該回路に関するデータである回路設計データの回路構造の構造解析を行う処理を、コンピュータに実行させる構造解析プログラムであって、
前記回路設計データを取得する取得処理と、
前記回路設計データに基づいて、構造解析用データベースを構築するデータベース構築処理と、
前記構造解析用データベースを複製するデータベース複製処理と、
前記複製された前記構造解析用データベースである複製データベースから、該複製データベースが表している前記回路を構成する前記要素のうち所定の要素を削除する要素削除処理と、
前記要素削除処理により前記要素が削除された前記複製データベースについて前記構造解析を行う構造解析処理と、
をコンピュータに実行させる構造解析プログラム。
【請求項２】
前記要素削除処理は、前記構造解析処理により実行される構造解析処理の種別に応じて、前記要素を削除する処理
を行うことを特徴とする請求項１に記載の構造解析プログラム。
【請求項３】
前記構造解析プログラムは、さらに、
前記回路設計データのうち未設計部分をダミーモジュールとして構築された前記構造解析用データベースにおいて、前記ダミーモジュールを正規のモジュールに置換する要素置換処理
をコンピュータに実行させる請求項１に記載の構造解析プログラム。
【請求項４】
ハードウェア記述言語で記述された回路であって複数の要素から構成される該回路に関するデータである回路設計データの回路構造の構造解析を行う処理を、コンピュータに実行させる構造解析プログラムであって、
未設計部分を含む前記回路設計データを取得する取得処理と、
前記未設計部分をダミーモジュールとするダミーモジュール作成処理と、
前記ダミーモジュール作成処理による前記回路設計データに基づいて、構造解析用データベースを構築する第１のデータベース構築処理と、
前記ダミーモジュールを、設計が完了した正規のモジュールと置換する要素置換処理と、
前記置換された正規のモジュールに基づいて構造解析用データベースを構築する第２のデータベース構築処理と、
前記解析用データベースについて前記構造解析を行う構造解析処理と、
をコンピュータに実行させる構造解析プログラム。
【請求項５】
ハードウェア記述言語で記述された回路であって、複数の要素から構成される該回路に関するデータである回路設計データの回路構造の構造解析を行う処理を、コンピュータに実行させる構造解析プログラムであって、
前記回路設計データと論理合成のためのルールが記述された論理合成ルールとを取得する論理合成ルール取得処理と、
前記回路設計データに基づいて、構造解析用データベースを構築するデータベース構築処理と、
前記論理合成ルールに基づいて前記要素を生成し、前記回路設計データ又は前記解析用データベースに該要素を反映させる論理合成ルール要素生成処理と、
をコンピュータに実行させる構造解析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＨＤＬの設計データについて構造解析に関する。
【背景技術】
【０００２】
従来のＬＳＩ作成においては、開発者がＨＤＬ（ハードウェア記述言語）にてＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）を作成し、ＲＴＬから解析用ＤＢを生成し、解析用ＤＢについて論理合成を行うことによりＬＳＩの作成を行うことが一般的である。上記作成過程での構造解析は、コンピュータの資源を大量に消費する。そのため、対象ＬＳＩを分割して論理合成を行うなどの対策が必要な事象が発生する場合があった。
【０００３】
不具合が検出された場合はＨＤＬ設計物を修正し、再び構造解析を行っていた。この為、多大な時間と工数を必要とした。また、近年のＬＳＩの大規模化に伴い、構造解析に使用するコンピュータの資源（メモリ等）の制約により、ＨＤＬ設計物を分割して構造解析を実施するなどの対処が必要となるケースが発生している。
【０００４】
特許文献１では、ＬＳｌなどの半導体回路設計において、非同期パス解析の容易化と、論理合成時間の短縮を実現する。特許文献１では、ＲＴＬ記述の回路データを読み込み、該ＲＴＬ記述の回路データにもとづき回路中の非同期パスを検出し、該検出された非同期パスから配列を抽出し、該非同期パスを配列ごとまとめて表示し、非同期パスをフォルスパスとして選択し、フォルスパスに対応する非同期パスを回路最適化の対象からはずして、ＲＴＬ記述の回路データからゲートレベルの回路を生成している。
【０００５】
また、特許文献２では、ＲＴＬ  ＨＤＬ記述の論理検証対象部分の抽出・最適化を図り、シミュレーション処理速度の高速化を実現する。特許文献２では、ＲＴＬ  ＨＤＬ記述を解析して論理変換処理とレジスタ生成処理とを行い、ＲＴＬ  ＨＤＬ記述をネットリストに変換する。そして論理回路の観測点と入力点の内で定数に固定化する入力点とを指定する。その後、参照及び伝搬関係トレースを行って、回路規模の小型化を行う。更に残留したレジスタの内で観測希望ではないレジスタを移動・統合して更に最適化を実行する。その後、冗長論理の最適化を行った上で、最適化されたネットリストをＲＴＬのＨＤＬ記述に再変換すると共に、最適化に応じてシミュレーションパターンの修正を行っている。
【０００６】
図２９は、従来の解析処理の解析処理手順を示す。解析処理では、まず、ＨＤＬ設計文書２００から、マスターとなるＤＢ２０１を作成する。そして、その構築したマスターＤＢ２０１に対して解析処理２０３を実施して、解析結果データ２０４を取得していた。
【０００７】
この解析処置２０３では、（１）マスターＤＢからルートとなる要素を取得する。（２）解析が必要か否かを判断する。解析が必要であれば処理を実施し、その結果を保持する。（３）子となる要素を取得する（親の要素を保持）。（４）上記（２）〜（３）を繰り返す。これらを全ての要素に対して繰り返す。
【特許文献１】特開２００３−２１６６７２号公報
【特許文献２】特開平９−３１１８８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来、上記のような解析を行う場合、解析用ＤＢが巨大であるため、解析処理に長時間を必要としていた。また、このような大規模なＨＤＬ設計データでは、コンピュータのリソース（メモリ等）が不足していた。すなわち、従来では必要な解析内容に最適化されたデータベースではなかった。
【０００９】
また、不具合発見時にはＲＴＬを修正する必要があり、ＲＴＬから解析用ＤＢを再度作成する作業が必要である。すなわち、不具合の発見時にはＨＤＬ設計物を修正し、その度に解析用ＤＢの再構築を行って解析を再実行していた。しかしながら、この解析処理には多大な時間を必要とするため、効率よく作業を行うことができなかった。なぜなら、一般的な解析システムは不具合の発見に特化しており、ＨＤＬ設計物のメモリ上での組み換えテストが不可能で、設計物の修正と解析実行を繰り返す必要があった。
【００１０】
また、論理合成ツールによって合成ルールが異なる場合があり、出力結果が異なるものとなる場合がある。すなわち、論理合成ツールによって合成ルールが変わり、解析結果と異なる回路が生成されることがある。
【００１１】
上記の課題に鑑み、本発明では、ハードウェア記述言語（ＨＤＬ）を使用した回路設計に関して、設計物の解析の効率化を図る。
【課題を解決するための手段】
【００１２】
本発明にかかるハードウェア記述言語で記述された回路であって複数の要素から構成される該回路に関するデータである回路設計データの回路構造の構造解析を行う処理を、コンピュータに実行させる構造解析プログラムは、前記回路設計データを取得する取得処理と、前記回路設計データに基づいて、構造解析用データベースを構築するデータベース構築処理と、前記構造解析用データベースを複製するデータベース複製処理と、前記複製された前記構造解析用データベースである複製データベースから、該複製データベースが表している前記回路を構成する前記要素のうち所定の要素を削除する要素削除処理と、前記要素削除処理により前記要素が削除された前記複製データベースについて前記構造解析を行う構造解析処理と、をコンピュータに実行させる。
【００１３】
このように構成することにより、ＨＤＬを使用した回路設計について、設計物の解析の効率化を図ることができる。
また、上記の構造解析プログラムにおいて、前記要素削除処理は、前記構造解析処理により実行される構造解析処理の種別に応じて、前記要素を削除する処理を行う。
【００１４】
このように構成することにより、構造解析用データベース（ＤＢ）構築時に、解析に必要でない情報を削除することで最適化を行い、メモリ消費量の抑止と解析処理の向上を実現する。
【００１５】
上記の構造解析プログラムは、さらに、前記回路設計データのうち未設計部分をダミーモジュールとして構築された前記構造解析用データベースにおいて、前記ダミーモジュールを正規のモジュールに置換する要素置換処理をコンピュータに実行させる。
【００１６】
このように構成することにより、未設計部分のブロック（モジュール）が存在していていても、ダミーモジュールに置き換えることで、ブロック間の接続状況を確認することができる。
【００１７】
また、本発明にかかるハードウェア記述言語で記述された回路であって複数の要素から構成される該回路に関するデータである回路設計データの回路構造の構造解析を行う処理を、コンピュータに実行させる構造解析プログラムであって、未設計部分を含む前記回路設計データを取得する取得処理と、前記未設計部分をダミーモジュールとするダミーモジュール作成処理と、前記ダミーモジュール作成処理による前記回路設計データに基づいて、構造解析用データベースを構築する第１のデータベース構築処理と、前記ダミーモジュールを、設計が完了した正規のモジュールと置換する要素置換処理と、前記置換された正規のモジュールに基づいて構造解析用データベースを構築する第２のデータベース構築処理と、前記解析用データベースについて前記構造解析を行う構造解析処理と、をコンピュータに実行させる。
【００１８】
このように構成することにより、未設計部分のブロック（モジュール）が存在していていても、ダミーモジュールに置き換えることで、ブロック間の接続状況を確認することができる。
【００１９】
また、本発明にかかるハードウェア記述言語で記述された回路であって、複数の要素から構成される該回路に関するデータである回路設計データの回路構造の構造解析を行う処理を、コンピュータに実行させる構造解析プログラムであって、前記回路設計データと論理合成のためのルールが記述された論理合成ルールとを取得する論理合成ルール取得処理と、前記回路設計データに基づいて、構造解析用データベースを構築するデータベース構築処理と、前記論理合成ルールに基づいて前記要素を生成し、前記回路設計データ又は前記解析用データベースに該要素を反映させる論理合成ルール要素生成処理と、をコンピュータに実行させる。
【００２０】
このように構成することにより、データベース上の特定パターンをユーザ定義の要素に置き換えることができ、より柔軟な解析を実施することが可能となる。
【発明の効果】
【００２１】
本発明を用いることにより、ハードウェア記述言語を使用した回路設計に関して、設計物の解析の効率化を図ることができる。
【発明を実施するための最良の形態】
【００２２】
図１は、本発明にかかるＨＤＬデータ構造解析システム１００の構成概念図を示す。ＨＤＬデータ構造解析システム１００は、例えば、ハードウェア記述言語（以下ＨＤＬ）で記述された設計データの構造解析を行うプログラムが格納されたコンピュータであり、そのプログラムが制御装置によって読み込まれ、以下の第１〜第３の実施形態で説明するフローを実行する。
【００２３】
ＨＤＬデータ構造解析システム１００は、取得手段１０１、ＤＢ構築手段１０２、ＤＢ複製手段１０３、要素削除手段１０４、要素置換手段１０５、論理合成ルール生成手段１０６、構造解析手段１０７から構成される。
【００２４】
取得手段１０１は、ユーザが作成したＨＤＬで記述された設計データ（ＨＤＬ設計物）を取得する。また、取得手段１０１は、ユーザにより定義された論理合成用のスクリプトを取得する。
【００２５】
ＤＢ構築手段１０２は、ＨＤＬで記述された設計データから、言語レベルでの記述を解析するためのデータベースを生成する。ＤＢ複製手段１０３では、構造解析の種別に応じてＤＢ（データベース）を最適化して解析するために、このＤＢを複製する。
【００２６】
要素削除手段１０４は、ＨＤＬで記述された設計データから、複製されたＤＢから、必要とする情報のみを残し、余計な要素を削除することで構造解析に要するコンピュータ資源（メモリ等）と処理時間を削減しする。これにより大規模な設計データの解析を可能にする。構造解析手段１０７は、上記で構築されたＤＢに関して、回路構成の構造解析（例えば、回路を構成する要素間の接続の状態のチェック、ポート間のルーティングチェック、結線状態のチェック等）を実行する。
【００２７】
また、要素置換手段１０５は、ＨＤＬで記述された設計データから、言語レベルでの記述を解析するためのデータベースを生成後、指定されたパターン要素の置き換え（差し替え）を可能にする。また、要素置換手段１０５は、その置き換え情報を出力する手段を備えている。
【００２８】
また、論理合成ルール生成手段１０６は、ＨＤＬで記述された設計データから、言語レベルでの記述を解析するためのデータベースを生成後、論理合成ルール（例えば、Ｒｅｇｉｓｔｅｒ／Ｓｅｌｅｃｔｏｒ  等）の置き換え（差し替え）を可能にする。
【００２９】
論理合成ルール生成手段１０６は、判定手段１０６ａと生成手段１０６ｂとを有する。判定手段１０６ａは、論理合成ルールに記された条件に合致する前記要素が存在するか否かを判定する。生成手段１０６ｂは、論理合成ルールに基づいて新たな要素を生成し、前記判定処理による判定により取得された要素をその新たな要素に変換する。
【００３０】
本発明の第１の実施形態によれば、構造解析用データベース（ＤＢ）構築時に、解析に必要でない情報を削除することで最適化を行い、メモリ消費量の抑止と解析処理の向上を実現する。
【００３１】
従来の解析処理では、以下のような処理を行っており、解析処理中以外のリソース消費は抑えられるものの、解析に必要となるリソースは後述の新方式よりも多大なものとなる。
【００３２】
図２は、第１の実施形態における最適化されたＤＢを使用しての解析処理手順を示す。まず、予めユーザは所定のソフトウェアを用いてＨＤＬ設計文書１を作成しておき、そのＨＤＬ設計文書１をＨＤＬデータ構造解析システム１００に入力する。そうすると、ＨＤＬデータ構造解析システム１００の制御装置により、以下のＤＢ構築処理と解析処理が実行される。
【００３３】
［ＤＢ構築］
１．ＨＤＬ設計文書１から、マスターとなるＤＢ２を作成する。
２．マスターＤＢ２を複製する。
【００３４】
３．マスターＤＢ（複製）３から不要要素を削除して最適化することにより、マスターＤＢ（複製）３を解析用ＤＢ４に変換する。
４．解析用ＤＢ４に対して解析処理５を実施し、結果データ６を取得する。この解析処理４では、以下を行っている。
【００３５】
［解析処理４］
４−１．解析用ＤＢ４からルートとなる要素を取得する。
４−２．解析処理（例えば、回路を構成する要素間の接続の状態のチェック、ポート間のルーティングチェック、結線状態のチェック  等）を実施し、その結果を保持する。
【００３６】
４−３．子となる要素を取得する（親の要素を保持）。
４−４．上記４−２〜４−３を繰り返す。
このように、最適化された解析用ＤＢを解析処置ごとに作成することにより、メモリ消費量の抑止と解析処理の向上を図ることができる。
【００３７】
ここで、解析用ＤＢについて構造解析を行う場合、構造解析の目的に応じて解析用ＤＢを簡略化することにより、個々の解析について解析用ＤＢを小資源化し、高速化を図る。第１の実施形態では、解析用ＤＢ中のレジスタに関し、非同期パスについて特化した解析用ＤＢを作成する手法と、ブロック間の信号について特化した解析用ＤＢを作成する手法とがある。
【００３８】
本発明の第２の実施形態によれば、未設計部分のブロック（モジュール）が存在していていても、ダミーモジュールに置き換えることで、ブロック間の接続状況を確認することができる。また、作成済みのブロックに関する結線状態を早期段階で確認することができるので、効率的に回路の設計を行うことができる。
【００３９】
図３は、第２の実施形態における回路内の要素（モジュール）を別の要素（モジュール）に入れ替える様子を示す。同図では、Ｓｕｂ１ブロックが未設計である場合に、そのブロックをダミーモジュール７ｅとして回路７ｆに組み込み、解析用ＤＢを構築した状態を示している。そして、その未設計が完成したらその完成したＳｕｂＸをダミーモジュールに置換している。
【００４０】
第２の実施形態では、解析用ＤＢ７ｂを外部（ユーザインターフェース７ａ（以下、ＵＩと称する））から操作（要素の変更／追加／削除）可能にすることで、解析により発見された不具合の即時変更を実現する。また、マスターＤＢ上にＨＤＬ設計物へのリンクを保存しておくことで、修正に対応したＨＤＬ設計物７ｃを出力することが可能となる。
【００４１】
本発明の第３の実施形態によれば、解析用データベースの論理合成ルールをＵＩからの変更を可能にする。これにより、データベース上の特定パターンをユーザ定義の要素に置き換えることができ、より柔軟な解析を実施することが可能となる。
【００４２】
図４は、第３の実施形態における論理合成ルールを追加し、それをユーザが定義したモジュールに変換する様子を示す。同図では、ユーザは論理合成用のスクリプトを作成して、ＨＤＬデータ構造解析システム１００にＵＩ８ａを介して入力する。
【００４３】
ＨＤＬデータ構造解析システム１００では、ＨＤＬ設計物８ｃからマスターＤＢを構築する場合、ＨＤＬ設計物８ｃ内の回路構成にスクリプト８ｂに記述された論理合成ルールに合致するものがあれば、その論理合成ルールをマスターＤＢ８ｄに反映する。そして、マスターＤＢ８ｄから解析用ＤＢ８ｅを作成して構造解析を行う。
【００４４】
このように、解析用ＤＢ８ｅの論理合成ルールを外部（ＵＩ８ａ）から操作（要素の変更／追加／削除）可能にすることで、ユーザの独自仕様の論理合成を実現することができる。
【００４５】
それでは、以下に本発明の各実施形態について詳述する。なお、以下では、ＨＤＬデータの構造解析を行うことを解析処理という。
＜第１の実施形態＞
本実施形態では、ＨＤＬで記述された設計データを入力して、論理合成の前段でマスターデータから各種解析向けに特化したＤＢを動的に生成し、これを用いて情報抽出・不具合検出を高速に行うものである。
【００４６】
本実施形態では、複製されたマスターＤＢから不要要素を削除することにより得られた解析用ＤＢを用いることにより、解析処理時のメモリ消費の抑止と解析処理の向上させる。
【００４７】
回路構成の構造解析には、複数の種類が存在する。それぞれの解析処理には、不要な情報や必要な情報がある。そこで、ある解析処理を行う際に、その解析処理に不要な情報を予め削除しておき、その解析処理について最適化された解析用ＤＢを構築する。以下では、非同期パス検索とブロック間信号情報抽出を例にあげて、最適化された解析用ＤＢ作成する。
【００４８】
（実施例１）非同期パス検索を実行する場合
なお、非同期パス検索とは、異なるクロック信号源と接続されているレジスタを検索することをいう。
【００４９】
図５は、本実施形態の実施例１における複製されたマスターＤＢ上において、全ての情報を含む回路構成の一例を示す。図６は、図５の回路構成の概念図を示す。本実施形態において、回路構成の最上位の概念をＴｏｐ（１０）で表し、その配下にはＳｕｂ１（１１）で表されるブロックと，Ｓｕｂ２（１２）で表されるブロックが存在する。またＳｕｂ２（１２）の配下には，Ｓｕｂ３（１３）のブロックが存在する。各ブロック情報は、自身の配下のブロック及びノード群の情報を管理している（図６のＡ）。また、図６のＢは、ブロックが管理する入出力ポート、レジスタ等のノード情報を示している。ノード間の接続情報は、ノード自身が保持している。
【００５０】
ＨＤＬでブロックの階層の設計をする場合、ブロックはクラスを用いて作成される。したがって、Ｓｕｂ１（１１），Ｓｕｂ２（１２），Ｓｕｂ３（１３）は、そのクラスのインスタンスである。
【００５１】
Ｔｏｐ（１０）が管理している情報は、Ｔｏｐの配下にＳｕｂ１（１１），Ｓｕｂ２（１２）のブロックを有する情報と、Ｉｎ１（１０ａ），Ｉｎ２（１０ｂ），Ｉｎ３（１０ｃ），Ｉｎ４（１０ｄ），Ｉｎ５（１０ｅ）の入力ポートと、Ｏｕｔ１（１０ｆ），Ｏｕｔ２（１０ｇ）の出力ポートとに関する情報である。
【００５２】
Ｓｕｂ１（１１）が管理している情報は、レジスタ１（１１ｄ）、レジスタ２（１１ｅ）と、Ｉｎ１（１１ａ），Ｉｎ２（１１ｂ），Ｉｎ３（１１ｃ）の入力ポートと、Ｏｕｔ１（１１ｆ），Ｏｕｔ２（１１ｇ）の出力ポートとに関する情報である。
【００５３】
Ｓｕｂ２（１２）が管理している情報は、Ｓｕｂ２の配下にＳｕｂ３（１３）を有する情報と、レジスタ１（１２ｅ）と、Ｎｏｔ回路（１２ｆ）と、ＡＮＤ回路（１２ｉ）と、Ｉｎ１（１２ａ），Ｉｎ２（１２ｂ），Ｉｎ３（１２ｃ），Ｉｎ４（１２ｄ）の入力ポートと、Ｏｕｔ１（１２ｇ），Ｏｕｔ２（１２ｈ）の出力ポートとに関する情報である。
【００５４】
Ｓｕｂ３（１３）が管理している情報は、レジスタ１（１３ｃ）と、Ｉｎ１（１３ａ），Ｉｎ２（１３ｂ）の入力ポートと、Ｏｕｔ１（１３ｄ）の出力ポートとに関する情報である。
【００５５】
さて、非同期パス検索を実施する際、ブロック間の接続情報は不要であり、クロック／データ信号が接続されるレジスタの情報があればよい。そこで、図７のようにＤＢを変化させる。
【００５６】
図７は、本実施形態の実施例１における非同期パス検索を実施する際にクロック／データ信号が接続されているレジスタ以外のノード情報を削除した回路構成を示す。図８は、図７の回路構成の概念図を示す。
【００５７】
図７及び図８では、レジスタ１１ｄ，１１ｅ，１２ｅ，１３ｃと、データ信号入出力ポート１０ａ，１０ｆと、クロック信号端子１０ｂ，１０ｃ，１０ｄ，１０ｅと、クロック信号とレジスタとの接続線、及びデータ信号とレジスタとの接続線のみ表示されている。そして、要素は全てＴｏｐ配下に存在する構成となっている。すなわち、サブブロック情報、ノード情報等は全て削除されている。この削除の方法について図９で説明する。
【００５８】
図９及び図１０は、本実施形態の実施例１における非同期パス検索を実施する際にクロック／データ信号が接続されているレジスタ以外のノード情報を削除するフローを示す。ユーザは、例えば、ＨＤＬを用いて、図５及び図６で示されるような回路を設計する。その設計後、ユーザはＨＤＬデータ構造解析システム１００にそのＨＤＬ設計データを入力する。ＨＤＬデータ構造解析システム１００の制御装置は、その入力されたそのＨＤＬ設計データを読み込み、図９及び図１０のフローを実行する。
【００５９】
まず、Ｔｏｐ配下のブロックを検索し、検索されたブロックの一覧を取得する（ステップ１、以下、ステップを「Ｓ」と称する）。本実施形態では、Ｔｏｐ配下のＳｕｂ１，Ｓｕｂ２とが含まれるブロック一覧が取得される。
【００６０】
次に、その取得したブロック一覧の要素毎（Ｓｕｂ１，Ｓｕｂ２）に、ブロック展開及び不要要素の削除処理（Ｓ３）を繰り返す（Ｓ２）。Ｓ３のブロック展開及び不要要素の削除処理の詳細を図１０に示す。
【００６１】
まず、Ｓｕｂ１の場合について説明する。Ｓ３のブロック展開及び不要要素の削除処理では、まず、取得したブロック一覧内で現在選択されているブロック配下にブロックがあるか否かについて判断する（Ｓ３−１）。
【００６２】
今選択されているブロックは、Ｓｕｂ１である。図５及び図６において、Ｓｕｂ１の配下にはブロックは存在しないので（Ｓ３−１で「Ｎｏ」へ進む）、ブロック配下の要素を上位ブロックに展開し、現ブロックを削除する。この場合、当該ブロックＳｕｂ１配下の要素を上位ブロックであるＴｏｐに展開し、当該ブロックＳｕｂ１を削除する（Ｓ３−３）。
【００６３】
すなわち、Ｓｕｂ１（１１）が管理している情報である、レジスタ１（１１ｄ）、レジスタ２（１１ｅ）と、Ｉｎ１（１１ａ），Ｉｎ２（１１ｂ），Ｉｎ３（１１ｃ）の入力ポートと、Ｏｕｔ１（１１ｆ），Ｏｕｔ２（１１ｇ）の出力ポートとに関する情報を、Ｔｏｐ管理下の情報とし、Ｓｕｂ１（１１）を削除する。
【００６４】
Ｓ３−３で上位ブロックに展開されたノードのうち、レジスタ以外を削除する（Ｓ３−４）。この場合、レジスタ１（１１ｄ）及びレジスタ２（１１ｅ）以外のＩｎ１（１１ａ），Ｉｎ２（１１ｂ），Ｉｎ３（１１ｃ）の入力ポートと、Ｏｕｔ１（１１ｆ），Ｏｕｔ２（１１ｇ）が削除される。
【００６５】
その後、レジスタのデータパスとクロックパス以外の接続を削除する（Ｓ３−５）。この場合、削除される接続はない。
そうすると、Ｓｕｂ１についてＳ３の処理が終わり、ブロック一覧内の次のブロックＳｕｂ２についてＳ３の処理を行う（Ｓ２）。では、Ｓｕｂ２について説明する。現ブロック配下にブロックがあるか否かについて判断する（Ｓ３−１）。
【００６６】
図５において、Ｓｕｂ２の配下にはブロックＳｕｂ３が存在するので（Ｓ３−１で「Ｙｅｓ」へ進む）、Ｓｕｂ３のブロックを展開する（Ｓ３−２）。すなわち、ブロックＳｕｂ３について、Ｓ３の処理を実行する。
【００６７】
Ｓｕｂ３の配下にはブロックは存在しないので（Ｓ３−１で「Ｎｏ」へ進む）、Ｓｕｂ３のブロック配下にある要素を上位ブロックＳｕｂ２に展開し、当該ブロックＳｕｂ３を削除する（Ｓ３−３）。
【００６８】
すなわち、Ｓｕｂ３（１３）が管理している情報である、レジスタ１（１３ｃ）と、Ｉｎ１（１３ａ），Ｉｎ２（１３ｂ）の入力ポートと、Ｏｕｔ１（１３ｄ）の出力ポートとに関する情報を、Ｓｕｂ２管理下の情報とし、Ｓｕｂ３（１３）を削除する。
【００６９】
Ｓ３−３でブロックＳｕｂ２に展開された要素のうち、レジスタ以外を削除する（Ｓ３−４）。この場合、レジスタ１（１３ｃ）以外のＩｎ１（１３ａ），Ｉｎ２（１３ｂ）の入力ポートと、Ｏｕｔ１（１３ｄ）の出力ポートが削除される。
【００７０】
その後、レジスタのデータパスとクロックパス以外の接続を削除する（Ｓ３−５）。この場合、削除される接続はない。
そうすると、Ｓｕｂ３についてＳ３の処理が終わり（Ｓ３−２）、ブロックＳｕｂ２についてＳ３−３の処理を行う。すなわち、Ｓｕｂ２が管理している情報である、レジスタ１（１２ｅ）と、Ｎｏｔ回路（１２ｆ）と、ＡＮＤ回路（１２ｉ）と、Ｉｎ１（１２ａ），Ｉｎ２（１２ｂ），Ｉｎ３（１２ｃ），Ｉｎ４（１２ｄ）の入力ポートと、Ｏｕｔ１（１２ｇ），Ｏｕｔ２（１２ｈ）の出力ポートと、レジスタ１（１３ｃ）に関する情報を、Ｔｏｐ管理下の情報とし、Ｓｕｂ２（１２）を削除する。
【００７１】
次に、Ｓ３−３でＴｏｐに展開された要素のうち、レジスタ以外を削除する（Ｓ３−４）。この場合、レジスタ１（１２ｅ）及びレジスタ１（１３ｃ）以外のＮｏｔ回路（１２ｆ）と、ＡＮＤ回路（１２ｉ）と、Ｉｎ１（１２ａ），Ｉｎ２（１２ｂ），Ｉｎ３（１２ｃ），Ｉｎ４（１２ｄ）の入力ポートと、Ｏｕｔ１（１２ｇ），Ｏｕｔ２（１２ｈ）の出力ポートが削除される。
【００７２】
その後、レジスタのデータパスとクロックパス以外の接続を削除する（Ｓ３−５）。この場合、レジスタ１（１１ｅ）のＱ端子とレジスタ１（１２ｅ）のＣＬＲ端子との間の接続と、Ｎｏｔ回路１２ｆの出力端子とＡｎｄ回路（１２ｉ）の入力端子との間の接続と、レジスタ１（１２ｅ）のＱ（反転）端子とＡｎｄ回路（１２ｉ）の入力端子との間の接続と、Ａｎｄ回路（１２ｉ）の出力端子とＯｕｔ２（１０ｇ）の出力ポートの間の接続とが削除される。
【００７３】
その結果、図７及び図８で示されるように、クロック／データ信号が接続されているレジスタ以外のノード情報を削除したＤＢが得られる。なお、図５及び図６で示した回路構成は一例であって、これに限定されず、本実施例はその他の回路構成でも使用することができる。
【００７４】
これにより、ブロックを介さずにレジスタにアクセスできるようになり、解析処理時間の短縮に繋がる。
（実施例２）ブロック間信号情報抽出を実行する場合
本実施例、ブロック間信号情報抽出について説明する。上述の通り、解析の種類によってＤＢを構築するので、本実施例、ブロック間信号情報抽出用のＤＢを構築する。
【００７５】
ブロック間信号情報抽出では、ブロック間の接続状態だけが分かればよいため、それ以外の要素は削除することができる。そこで、以下のようにＤＢを変化させる。
図１１は、本実施形態の実施例２における複製されたマスターＤＢ上において、全ての情報を含む回路構成を示す。図１２は、図１１の回路構成の概念図を示す。本実施形態において、回路構成の最上位の概念をＴｏｐ（２０）で表し、その配下にはＳｕｂ１（２１）で表されるブロックと，Ｓｕｂ２（２２）で表されるブロックが存在する。またＳｕｂ２（１２）の配下には，Ｓｕｂ３（１３）のブロックが存在する。各ブロック情報は、上述の実施例１と同様に、自身の配下のブロック及びノード群の情報を管理している。また、ブロックが管理する入出力ポート、レジスタ等のノード情報を示している。ノード間の接続情報は、ノード自身が保持している。
【００７６】
Ｔｏｐ（２０）が管理している情報は、Ｔｏｐの配下にＳｕｂ１（２１），Ｓｕｂ２（２２）のブロックを有する情報と、Ｉｎ１（２０ａ），Ｉｎ２（２０ｂ），Ｉｎ３（２０ｃ），Ｉｎ４（２０ｄ），Ｉｎ５（２０ｅ）の入力ポートと、Ｏｕｔ１（２０ｆ）の出力ポートとに関する情報である。
【００７７】
Ｓｕｂ１（２１）が管理している情報は、レジスタ１（２１ｄ）、レジスタ２（２１ｅ）と、Ｉｎ１（２１ａ），Ｉｎ２（２１ｂ），Ｉｎ３（２１ｃ）の入力ポートと、Ｏｕｔ１（２１ｆ），Ｏｕｔ２（２１ｇ）の出力ポートとに関する情報である。
【００７８】
Ｓｕｂ２が管理している情報は、Ｓｕｂ２の配下にＳｕｂ３（２３）が存在する情報と、レジスタ１（２２ｅ）と、レジスタ２（２２ｆ）と、Ｉｎ１（２２ａ），Ｉｎ２（２２ｂ），Ｉｎ３（２２ｃ），Ｉｎ４（２２ｄ）の入力ポートと、Ｏｕｔ１（２２ｇ）の出力ポートとに関する情報である。
【００７９】
Ｓｕｂ３（１３）が管理している情報は、トライステートバッファ（２３ｄ）と、Ｉｎ１（２３ａ），Ｉｎ２（２３ｂ），Ｉｎ３（２３ｃ）の入力ポートと、Ｏｕｔ１（２３ｅ）の出力ポートとに関する情報である。
【００８０】
さて、ブロック間信号情報抽出では、ブロック間の接続状態だけが分かればよいため、それ以外の要素は削除することができる。そこで、図１３及び図１４のようにＤＢを変化させる。
【００８１】
図１３は、本実施形態の実施例２における、ブロック間信号情報抽出を実施する際にクロック間の接続情報情報以外の要素を削除した回路構成を示す。図１４は、図１３の回路構成の概念図を示す。
【００８２】
図１３及び図１４では、ブロックＳｕｂ１（２１），Ｓｕｂ２（２２），Ｓｕｂ３（２３）と、各ブロックの入出力ポートＩｎ１（２１ａ），Ｉｎ２（２１ｂ），Ｉｎ３（２１ｃ），Ｏｕｔ１（２１ｆ），Ｏｕｔ２（２１ｇ），Ｉｎ１（２２ａ），Ｉｎ２（２２ｂ），Ｉｎ３（２２ｃ），Ｉｎ４（２２ｄ），Ｏｕｔ１（２２ｇ），Ｉｎ１（２３ａ），Ｉｎ２（２３ｂ），Ｉｎ３（２３ｃ），Ｏｕｔ１（２３ｄ）と、Ｔｏｐの入出力ポートＩｎ１（２０ａ），Ｉｎ２（２０ｂ），Ｉｎ３（２０ｃ），Ｉｎ４（２０ｄ），Ｉｎ５（２０ｅ），Ｏｕｔ１（２０ｆ）、及びブロック間の接続が表示されている。それ以外のサブブロック内の情報、レジスタ情報等は全て削除されている。
【００８３】
図１５及び図１６は、本実施形態の実施例２におけるブロック間信号情報抽出を実施する際にクロック間の接続情報情報以外の要素を削除するフローを示す。ユーザは、例えば、ＨＤＬを用いて、図１１及び図１２で示されるような回路を設計する。その設計後、ユーザはＨＤＬデータ構造解析システム１００にそのＨＤＬ設計データを入力する。ＨＤＬデータ構造解析システム１００の制御装置は、その入力されたそのＨＤＬ設計データを読み込み、図１５及び図１６のフローを実行する。
【００８４】
まず、Ｔｏｐ配下のブロック以外の要素を、接続を維持しつつ削除する（Ｓ１１）。本実施例では、Ｔｏｐ（２０）配下にはブロック及びブロック間の接続しか存在しないので、削除の対象となるものはない。なお、このとき、Ｔｏｐ（２０）配下のブロックを検索し、検索されたブロックの一覧を取得する。本実施例では、Ｔｏｐ（２０）配下のＳｕｂ１（２１），Ｓｕｂ２（２２）からなるブロック一覧が取得される。
【００８５】
次に、その取得したブロック一覧の要素毎（Ｓｕｂ１，Ｓｕｂ２）に、ブロック展開及び不要要素の削除処理（Ｓ１３）を繰り返す（Ｓ１２）。Ｓ１３のブロック展開及び不要要素の削除処理の詳細を図１６に示す。
【００８６】
まず、Ｓｕｂ１（２１）の場合について説明する。Ｓ１３では、まず、取得したブロック配下のブロック以外の要素を、接続を維持しつつ削除する（Ｓ１３−１）。図１１及び図１２において、ブロックＳｕｂ１（２１）配下のうち、ブロックＳｕｂ１（２１）以外の要素であるレジスタ１（２１ｄ），レジスタ（２１ｅ）を削除する。なお、本実施例はブロック間の結線状態を確認することが目的であるので、入出力ポートは原則削除しない。したがって、Ｉｎ１（２１ａ），Ｉｎ２（２１ｂ），Ｉｎ３（２１ｃ）の入力ポートと、Ｏｕｔ１（２１ｆ），Ｏｕｔ２（２１ｇ）の出力ポートはそのまま残しておく。
【００８７】
次に、当該ブロック配下にさらにブロックが存在するか否かを判断する（Ｓ１３−２）。この場合、Ｓｕｂ１（２１）の配下には、ブロックは存在しない（Ｓ１３−２で「Ｎｏ」へ進む）ので、Ｓ１３の処理は終了する。
【００８８】
そうすると、Ｓｕｂ１についてＳ１３の処理が終わり、ブロック一覧内の次のブロックＳｕｂ２についてＳ１３の処理を行う（Ｓ１２）。ここでは、Ｓｕｂ２について説明する。まず、取得したブロック配下のブロック以外の要素を、接続を維持しつつ削除する（Ｓ１３−１）。
【００８９】
図１１及び図１２において、ブロックＳｕｂ２（２２）配下のうち、ブロックＳｕｂ２（２２）以外の要素であるレジスタ１（２２ｅ），レジスタ２（２２ｆ）を削除する。なお、レジスタ１（２２ｅ）を削除しても、ブロック間の接続情報を維持するため、レジスタ１（２２ｅ）のＳ入力端子とＱ出力端子とを結線する。また、レジスタ２（２２ｆ）についても同様に、ブロック間の接続情報を維持するため、レジスタ２（２２ｆ）を削除して、クロック信号入力端子とＱ出力端子とを結線する。このように、どの入力端子とどの出力端子とが接続可能かは、ＨＤＬにおいて、レジスタを作成するときに予め属性として持っている情報である。
【００９０】
なお、本実施例はブロック間の結線状態を確認することが目的であるので、入出力ポートは原則削除しない。
次に、当該ブロック配下にさらにブロックが存在するか否かを判断する（Ｓ１３−２）。この場合、Ｓｕｂ２（２２）の配下には、ブロックＳｕｂ３（２３）が存在するので（Ｓ１３−２で「Ｙｅｓ」へ進む）ので、ブロック展開及び不要要素の削除の処理を行う（Ｓ１３−３）。すなわち、ブロックＳｕｂ３について、Ｓ１３の処理を実行する。
【００９１】
まず、ブロックＳｕｂ３（２３）配下のうち、ブロックＳｕｂ３（２３）以外の要素であるトライステートバッファ（２３ｄ）を削除する。なお、本実施例はブロック間の結線状態を確認することが目的であるので、入出力ポートは原則削除しない。したがって、Ｉｎ１（２３ａ），Ｉｎ２（２３ｂ），Ｉｎ３（２３ｃ）の入力ポートと、Ｏｕｔ１（２３ｅ）の出力ポートはそのまま残しておく。
【００９２】
Ｓｕｂ３についてのＳ３の処理（Ｓ１３−３）は終了したので、Ｓｕｂ２配下における全てのＳ３の処理は終了する。本実施例では、これ以外のブロックは存在しないので、本フローは終了する。
【００９３】
なお、図１１及び図１２で示した回路構成は一例であって、これに限定されず、本実施例はその他の回路構成でも使用することができる。
このようにすることで、ブロックとブロック間相互のインターフェースである入出力ポートのみが残り、ブロック間の接続情報のみになるので、あるブロックから１つ進めば必ず次のブロックが存在し、回路構成を簡略化することができる。これにより、ブロック以外の要素が削除され、ブロック内要素の検索処理速度が向上する。
【００９４】
＜第２の実施形態＞
本実施形態では、解析処理において、試験的に要素を変更し、継続して解析を実施することについて説明する。
【００９５】
大規模回路の解析用ＤＢの構築には数時間を要するため、その時間を有効活用することができれば、作業効率が向上する。そこで、大規模な回路を構成する複数のブロックを作成していて、そのうちあるブロックの作成の進捗が遅れ、そのブロック内部の設計がまだされていない場合がある。
【００９６】
このような場合、作成済みのブロックとその未設計ブロックの代用としてのダミーモジュールとを用いて先行してマスターＤＢを構築して解析処理を進める。その後、その進捗が遅れていたブロックが完成したら、そのダミーモジュールに替えてこれをマスターＤＢに追加する。そうして、完成版のマスターＤＢについて再度解析行う。
【００９７】
このようにすることで、作成済みのブロックに関する結線状態を早期段階で確認することができるので、効率的に回路の設計を行うことができる。
図１７は、本実施形態におけるダミーモジュールを組み込んだ回路構成の一例を示す。図１８は、図１７の回路構成の概念図を示す。
【００９８】
本実施形態において、回路構成の最上位の概念をＴｏｐ（３０）で表し、その配下にはダミーモジュールＳｕｂ１（３１Ｄ）と，正規モジュールＳｕｂ２（３２）のブロックとが存在する。Ｓｕｂ２（３２）は、第１の実施形態と同様に、自身の配下のブロック及びノード群の情報を管理している。また、ブロックが管理する入出力ポート、レジスタ等のノード情報を示している。ノード間の接続情報は、ノード自身が保持している。
【００９９】
Ｔｏｐ（３０）が管理している情報は、その配下にダミーモジュールＳｕｂ１（３１Ｄ），正規モジュールＳｕｂ２（３２）のブロックを有する情報と、Ｉｎ１（３０ａ），Ｉｎ２（３０ｂ），Ｉｎ３（３０ｃ）の入力ポートと、Ｏｕｔ１（３０ｄ），Ｏｕｔ２（３０ｅ）の出力ポートとに関する情報である。
【０１００】
ダミーモジュールＳｕｂ１（３１Ｄ）が管理している情報は、Ｉｎ１（３１Ｄａ），Ｉｎ２（３１Ｄｂ），Ｉｎ３（３１Ｄｃ）の入力ポートと、Ｏｕｔ１（３１Ｄｄ），Ｏｕｔ２（３１Ｄｅ）の出力ポートとに関する情報である。ダミーモジュールとは、内部の設計が未完成なブロックと、入出力ポートとからなるものである。すなわち、クラスのメンバーが入出力しか存在しないモジュールをいう。入出力ポートは、ＨＤＬ設計において、モジュールに変換する場合に最低限必要な情報であり、外部との接続情報として設計しておく情報である。
【０１０１】
Ｓｕｂ２が管理している情報は、トライステートバッファ（３２ｄ）と、ＮＯＴ回路（３２ｅ）と、Ｉｎ１（３２ａ），Ｉｎ２（３２ｂ），Ｉｎ３（３２ｃ）の入力ポートと、Ｏｕｔ１（３２ｆ），Ｏｕｔ２（３２ｇ）の出力ポートとに関する情報である。
【０１０２】
ユーザが設計した大規模な回路内に未実装部分があるため、図１７のように、その未実装部分の代わりにダミーモジュール３１Ｄを含む回路を設計して、後述のように、解析用ＤＢの構築処理を開始することができる。
【０１０３】
このとき、大規模回路の解析用ＤＢの構築には数時間を要するため、その待ち時間を利用して正規のモジュール３１（図２０、図２１参照）を設計し、ダミーモジュール３１Ｄと置き換えてから解析処理を実行することができる。
【０１０４】
図１９は、本実施形態におけるダミーモジュール３１Ｄから正規モジュール３１への置き換えを示す。
図２０は、本実施形態における正規モジュールを組み込んだ回路構成の一例を示す。図２１は、図２０の回路構成の概念図を示す。図２０及び図２１において、ダミーモジュールＳｕｂ１（３１Ｄ）が正規モジュールＳｕｂ１（３１）に置き換わっている。
【０１０５】
この正規モジュールＳｕｂ１（３１）が管理している情報は、レジスタ１（３１ｄ）と、レジスタ２（３１ｅ）と、ＮＯＴ回路（３１ｆ）と、Ｉｎ１（３１ａ），Ｉｎ２（３１ｂ），Ｉｎ３（３１ｃ）の入力ポートと、Ｏｕｔ１（３１ｇ），Ｏｕｔ２（３１ｈ）の出力ポートとに関する情報である。
【０１０６】
図２２は、本実施形態におけるモジュール置き換えのフローを示す。ユーザは、例えば、ＨＤＬを用いて、所定の回路を設計する。その設計後、ユーザはＨＤＬデータ構造解析システム１００にそのＨＤＬ設計データを入力する。ＨＤＬデータ構造解析システム１００の制御装置は、その入力されたそのＨＤＬ設計データを読み込み、以下のフローを実行する。
【０１０７】
制御装置は、入力されたＨＤＬ設計データの一部が未設計か否かを確認する（Ｓ２１）。その回路に未設計部分がない場合（Ｓ２１で「Ｎｏ」へ進む）、解析対象の回路のＨＤＬ設計に基づいてその制御装置により解析用ＤＢが構築される（Ｓ２２）。その後、その制御装置によりその解析用ＤＢについて解析処理が実行される（Ｓ２３）。
【０１０８】
その回路の一部が未設計の場合（Ｓ２１で「Ｙｅｓ」へ進む）、制御装置は入出力ポートのみを有するブロック情報に基づいてダミーモジュールを作成する。そして、そのダミーモジュールを未設計部分に用いて、制御装置はダミーモジュール込み回路を作成する（Ｓ２４）。
【０１０９】
次に、制御装置はそのダミーモジュール込み回路データに基づいて解析用ＤＢを構築する（Ｓ２５）。上述の通り、解析用ＤＢの構築には数時間を要する。そこで、ユーザは、その待ち時間を利用して正規のモジュールを設計する。
【０１１０】
次に、Ｓ２５で構築した解析用ＤＢについて、解析処理を実行する（Ｓ２６）。上述の通り、ここでの解析処理はブロック間の結線状態の確認が主となる。
解析処理を実行後に、未設計のブロック（正規モジュール）の設計が完了したら、ＨＤＬデータ構造解析システム１００にその追加分のＨＤＬ設計データを入力する。制御装置により入力されたその追加分のＨＤＬ設計データが読み込まれ、モジュール（正規モジュール）に変換される。そして、制御装置はダミーモジュールを正規モジュールに置き換える（Ｓ２７）（図１９参照）。
【０１１１】
次に制御装置は、解析用ＤＢを構築する（Ｓ２８）。ここでは、Ｓ２５で構築されたＤＢに差分モジュール（Ｓ２７で置き換えられたモジュール）が追加される。これにより、再び始めから解析用ＤＢを構築する必要がない。
【０１１２】
Ｓ２８で差分モジュールが追加された解析用ＤＢについて、制御装置により解析処理が実行される（Ｓ２６）。未設計部分（すなわち解析用ＤＢにダミーモジュール）が存在する間、Ｓ２７→Ｓ２８→Ｓ２６の処理を繰り返す。
【０１１３】
これにより、未設計部分のブロック（モジュール）が存在していていても、ダミーモジュールに置き換えることで、ブロック間の接続状況を確認することができる。また、作成済みのブロックに関する結線状態を早期段階で確認することができるので、効率的に回路の設計を行うことができる。
【０１１４】
また、第１の実施形態を組み合わせることで、本実施形態をより有効に行うことができる。たとえば、始め大規模回路を構成する複数のブロックを先行して作成した場合、第２の実施形態を行って、ブロック間の結線状態を確認する、その後、各ブロック内の詳細な実装を行い、その実装部分について第１の実施形態を行えば、効率よい回路設計を行うことができる。
【０１１５】
＜第３の実施形態＞
本実施形態では、論理合成ルールを追加し、それをユーザ定義のモジュールに変換する場合について説明する。論理合成とは、ＨＤＬなどのハードウェア記述言語で記述した設計データからゲート・レベルの論理回路を自動生成することをいう。論理合成ルールとは、そのような論理合成のためのルールを定めたものである。
【０１１６】
図２３は、本実施形態におけるＨＤＬ記述からセレクタを生成する様子を説明するための図である。同図では、一例として、ある一定条件を満たすセレクタをトライステートバッファ（ｔｒｉ−ｓｔａｔｅ−ｂｕｆｆｅｒ）として認識させる場合の方法を示している。
【０１１７】
しかしながら、図２３のようなＨＤＬ記述例４０には、例えばｉｆ文があるために通常トライステートバッファの論理合成ルールがない場合は、４１に示すようにセレクタとして認識される。しかし、トライステートバッファの合成ルールを追加することにより、トライステートバッファを合成することができる。図２４ではトライステートバッファの合成ルールを示す。
【０１１８】
図２４は、本実施形態における一定の条件でトライステートバッファに変換する一例を示す。合成条件の例（４２）として、「（１）入力データ信号が３つである。（２）入力データのうち１つが定数値‘Ｚ’である。（３）‘Ｚ’値が使われているのは条件式ではない。（４）出力データ信号が１つである。」とする。
【０１１９】
このような変換は、ユーザによるスクリプト作成（ここではＴＣＬ（Ｔｏｏｌ  Ｃｏｍｍａｎｄ  Ｌａｎｇｕａｇｅ）を使用）により実現することが可能である。図２３のＨＤＬ記述例４０のようなセレクタをトライステートバッファに変換するためのスクリプト例は図２５のようになる。
【０１２０】
図２５は、本実施形態における合成ルールの記述例（４４）を示す。記述例（４４）の記述内容について説明する。まず、コマンド「ｓｅａｒｃｈ＿ｌｉｔｅｌａｌ  −ｖａｌｕｅ  Ｚ」により、解析用ＤＢから‘Ｚ’値を検索する（上記合成条件（２）に相当する）。ｆｏｒｅａｃｈ  ＺＬｉｔｅｒａｌ文により、検索された‘Ｚ’値の個数分以下の処理を繰り返す。
【０１２１】
コマンド「ｔｒａｃｅ＿ｆｏｒｗａｒｄ  −ｎｏｄｅ  ＄ＺＬｉｔｅｒａｌ」により、上記で検索された‘Ｚ’値の１つ前方のノードを追跡する。図２３の場合、‘Ｚ’値の１つ前方のノードであるセレクタが取得される。
【０１２２】
次に、コマンド「ｇｅｔ＿ｉｎｐｕｔ＿ｎｏｄｅ  −ｎｏｄｅ  ＄ｎｏｄｅ」により、そのノードの入力端子数を取得する。図２３の場合では、取得されたセレクタ４１ａの入力端子数３が取得される。
【０１２３】
次に、取得したノードの入力端子数が‘３’か否かが判断される（上記合成条件（１）に相当する）。ノードの入力端子数が‘３’以外の場合には、次の‘Ｚ’値についてｆｏｒｅａｃｈ以下の処理を行う。ノードの入力端子数が‘３’の場合、コマンド「ｇｅｔ＿ｃｏｎｄｉｔｉｏｎ  −ｎｏｄｅ  ＄ｎｏｄｅ  ＄ＺＬｉｔｅｒａｌ」により、そのセレクタの情報を取得する。
【０１２４】
次に、その取得したセレクタが‘Ｚ’値ではないかを判断する（上記合成条件（３）に相当する）。その取得したセレクタが‘Ｚ’値以外の場合、コマンド「ｇｅｔ＿ｏｕｔｐｕｔ＿ｎｏｄｅ  −ｎｏｄｅ  ＄ｎｏｄｅ  ＄ＺＬｉｔｅｒａｌ」により、そのセレクタの出力端子数を取得する。図２３の場合では、取得されたセレクタ４１ａの出力端子数１が取得される。
【０１２５】
次に、取得した出力端子数が１か否かが判断される（上記合成条件（４）に相当する）。出力端子数が‘１’以外の場合には、次の‘Ｚ’値についてｆｏｒｅａｃｈ以下の処理を行う。出力端子数が‘１’の場合には、上記（１）〜（４）の条件を全て満たすので、そのセレクタをトライステートバッファに変換する。
【０１２６】
なお、本実施形態では、スクリプト言語としてＴＣＬを用いたが、これに限定されず、他のスクリプト言語を用いてもよい。本実施形態ではセレクタをトライステートバッファに変換したが、これに限定されない。すなわち、論理合成ルールの所定の条件に合致した要素を、論理合成ルール内で定義された要素に変換できるあらゆる要素が対象となる。
【０１２７】
図２６は、本実施形態における追加した論理合成ルールをモジュールに変換するフローを示す。まず、ユーザは、新規に論理合成ルールを作成する。例えば、図２５で示したようなスクリプトがユーザによって作成される。次に、その作成された論理合成ルールは、ＨＤＬデータ構造解析システム１００に入力される。その入力された論理合成ルールが、制御装置によって読み込まれる（Ｓ３１）。すなわち、制御装置によって例えば、上記のスクリプトが読み込まれる。
【０１２８】
次に、制御装置は、その論理合成ルールに基づいて、例えば、既に構築された解析用ＤＢを判定していく（Ｓ３２）。ここでの判定処理は、例えば図２５で説明したように、論理合成ルールに記述されたコマンドを制御装置によって実行していくことで、解析用ＤＢ中に論理合成ルールに合致する回路構成が存在するか否かを判断していく。
【０１２９】
Ｓ３２で論理合成ルールに合致する回路構成が存在する場合、制御装置は、その論理合成ルールに基づいて新合成要素を生成する（Ｓ３３）。例えば、上述したように、トライステートバッファを生成し、このトライステートバッファを論理合成ルールに合致したセレクタと変換して、周囲の回路等と結線する。
【０１３０】
図２７は、本実施形態におけるユーザ定義の論理合成ルールを解析用ＤＢに反映させる様子を示す図である。論理合成ツールは複数のベンダーより提供されているが、各社ごとにその論理合成ルールが異なり、汎用的なものではない。したがって、使用する論理合成ツールごとに、新たに追加する論理合成ルールを作成しなければならない。しかしながら、上述のように、本実施形態によれば、ＴＣＬ等のスクリプトを用いてユーザが簡単に新たに追加する論理合成ルールを作成することができるので、各社の論理合成ルールに合わせた論理合成ルールを追加することができる。
【０１３１】
また、図２７中の矢印Ｃで示される期間（解析処理よりも前の段階）であれば、ユーザは論理合成ルールを追加することができる。すなわち、ＨＤＬデータ構造解析システム１００に入力されたＨＤＬデータに対して論理合成ルールを追加してもよいし、解析用ＤＢに対して追加してもよい。なお、本実施形態は、第１または第２の実施形態と組み合わせても良い。
【０１３２】
このようにして、各ベンダーが提供する論理合成ツール毎に対応させた論理合成ルールを作成し、その論理合成ルールを含んだＤＢを構築して構造解析を行う。そして、その構造解析で問題がなければ、各ベンダーが提供する論理合成ツールを使用する。
【０１３３】
以上より、解析用データベースの論理合成ルールをＵＩから追加することができる。これにより、データベース上の特定パターンをユーザ定義の要素に置き換えることができ、より柔軟な解析を実施することが可能となる。
【０１３４】
図２８は、第１〜第３の実施形態におけるＨＤＬデータ構造解析システム１００のハードウェア環境の構成ブロック図である。同図においてＨＤＬデータ構造解析システム１００は、制御装置（ＣＰＵ）５２、リードオンリメモリ（ＲＯＭ）５３、ランダムアクセスメモリ（ＲＡＭ）５６、通信インターフェース（以下、インターフェースをＩ／Ｆという）５４、記憶装置５７、出力Ｉ／Ｆ５１、入力Ｉ／Ｆ５５、可搬型記憶媒体の読み取り装置５８、およびこれらの全てが接続されたバス５９、出力Ｉ／Ｆ５１に接続している出力装置６０、入力Ｉ／Ｆ５５に接続している入力装置６１によって構成されている。
【０１３５】
記憶装置５７としてはハードディスク、磁気ディスクなど様々な形式の記憶装置を使用することができる。このような記憶装置５７、またはＲＯＭ５３には、第１〜第３の実施形態で用いたフローのプログラムが格納されている。また、記憶装置５７には、第１〜第３の実施形態で用いたＨＤＬ設計及びＴＣＬのソフトウェアが格納されていてもよい。また、記憶装置５７には構築された解析用ＤＢまたは論理合成ルールが格納されていてもよい。
【０１３６】
上記のプログラムは、プログラム提供者側からネットワーク６２、および通信Ｉ／Ｆ５４を介して、例えば記憶装置５７に格納されることも、また市販され、流通している可搬型記憶媒体に格納され、読み取り装置５８にセットされて、ＣＰＵ５２によって実行されることも可能である。可搬型記憶媒体としてはＣＤ−ＲＯＭ、フレキシブルディスク、光ディスク、光磁気ディスク、ＩＣカードなど様々な形式の記憶媒体を使用することができ、このような記憶媒体に格納されたプログラムが読み取り装置５８によって読み取られる。
【０１３７】
また、入力装置６１には、キーボード、マウス、または電子カメラ、マイク、スキャナ、センサ、タブレットなどを用いることが可能である。また、出力装置６０には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。また、ネットワーク６２は、インターネット、ＬＡＮ、ＷＡＮ、専用線、有線、無線等の通信網であってよい。
【０１３８】
（付記１）
ハードウェア記述言語で記述された回路であって複数の要素から構成される該回路に関するデータである回路設計データの回路構造の構造解析を行う処理を、コンピュータに実行させる構造解析プログラムであって、
前記回路設計データを取得する取得処理と、
前記回路設計データに基づいて、構造解析用データベースを構築するデータベース構築処理と、
前記構造解析用データベースを複製するデータベース複製処理と、
前記複製された前記構造解析用データベースである複製データベースから、該複製データベースが表している前記回路を構成する前記要素のうち所定の要素を削除する要素削除処理と、
前記要素削除処理により前記要素が削除された前記複製データベースについて前記構造解析を行う構造解析処理と、
をコンピュータに実行させる構造解析プログラム。
【０１３９】
（付記２）
前記要素削除処理は、前記構造解析処理により実行される構造解析処理の種別に応じて、前記要素を削除する処理
を行うことを特徴とする付記１に記載の構造解析プログラム。
【０１４０】
（付記３）
前記構造解析処理により非同期パス検索が実行される場合、前記要素削除処理は、クロック信号線またはデータ信号線が接続されているレジスタ以外の前記要素を削除する処理
を行うことを特徴とする付記１に記載の構造解析プログラム。
【０１４１】
（付記４）
前記構造解析処理によりブロック間信号情報抽出が実行される場合、前記要素削除処理は、前記要素の１種であるブロック間の接続に関する前記要素以外を削除する処理
を行うことを特徴とする付記１に記載の構造解析プログラム。
【０１４２】
（付記５）
前記構造解析プログラムは、さらに、
前記回路設計データのうち未設計部分をダミーモジュールとして構築された前記構造解析用データベースにおいて、前記ダミーモジュールを正規のモジュールに置換する要素置換処理
をコンピュータに実行させる請求項１に記載の構造解析プログラム。
【０１４３】
（付記６）
前記取得処理は、さらに論理合成のためのルールが記述された論理合成ルールを取得し、
前記構造解析プログラムは、さらに、
前記論理合成ルールに基づいて前記要素を生成し、前記回路設計データ又は前記解析用データベースに該要素を反映させる論理合成ルール要素生成処理と、
をコンピュータに実行させる付記１に記載の構造解析プログラム。
【０１４４】
（付記７）
前記論理合成ルール要素生成処理は、
前記回路設計データ内または前記複製データベースに、前記論理合成ルールに記された条件に合致する前記要素が存在するか否かを判定する判定処理と、
前記論理合成ルールに基づく要素である論理合成ルール要素を生成し、前記判定処理による判定により取得された要素を前記論理合成ルール要素に変換する生成処理と、
を行うことを特徴とする付記６に記載の構造解析プログラム。
【０１４５】
（付記８）
前記論理合成ルールは、スクリプト言語で作成されている
ことを特徴とする付記６に記載の構造解析プログラム。
【０１４６】
（付記９）
ハードウェア記述言語で記述された回路であって複数の要素から構成される該回路に関するデータである回路設計データの回路構造の構造解析を行う処理を、コンピュータに実行させる構造解析プログラムであって、
未設計部分を含む前記回路設計データを取得する取得処理と、
前記未設計部分をダミーモジュールとするダミーモジュール作成処理と、
前記ダミーモジュール作成処理による前記回路設計データに基づいて、構造解析用データベースを構築する第１のデータベース構築処理と、
前記ダミーモジュールを、設計が完了した正規のモジュールと置換する要素置換処理と、
前記置換された正規のモジュールに基づいて構造解析用データベースを構築する第２のデータベース構築処理と、
前記解析用データベースについて前記構造解析を行う構造解析処理と、
をコンピュータに実行させる構造解析プログラム。
【０１４７】
（付記１０）
ハードウェア記述言語で記述された回路であって、複数の要素から構成される該回路に関するデータである回路設計データの回路構造の構造解析を行う処理を、コンピュータに実行させる構造解析プログラムであって、
前記回路設計データと論理合成のためのルールが記述された論理合成ルールとを取得する論理合成ルール取得処理と、
前記回路設計データに基づいて、構造解析用データベースを構築するデータベース構築処理と、
前記論理合成ルールに基づいて前記要素を生成し、前記回路設計データ又は前記解析用データベースに該要素を反映させる論理合成ルール要素生成処理と、
をコンピュータに実行させる構造解析プログラム。
【０１４８】
（付記１１）
前記論理合成ルール要素生成処理は、
前記回路設計データ内または前記複製データベースに、前記論理合成ルールに記された条件に合致する前記要素が存在するか否かを判定する判定処理と、
前記論理合成ルールに基づく要素である論理合成ルール要素を生成し、前記判定処理による判定により取得された要素を前記論理合成ルール要素に変換する生成処理と、
を行うことを特徴とする付記１０に記載の構造解析プログラム。
【０１４９】
（付記１２）
前記論理合成ルールは、スクリプト言語で作成されている
ことを特徴とする付記１０に記載の構造解析プログラム。
【０１５０】
（付記１３）
ハードウェア記述言語で記述された回路であって複数の要素から構成される該回路に関するデータである回路設計データの回路構造の構造解析を行う構造解析装置であって、
前記回路設計データを取得する取得手段と、
前記回路設計データに基づいて、構造解析用データベースを構築するデータベース構築手段と、
前記構造解析用データベースを複製するデータベース複製手段と、
前記複製された前記構造解析用データベースである複製データベースから、該複製データベースが表している前記回路を構成する前記要素のうち所定の要素を削除する要素削除手段と、
前記要素削除手段により前記要素が削除された前記複製データベースについて前記構造解析を行う構造解析手段と、
を備えることを特徴とする構造解析装置。
【０１５１】
（付記１４）
前記要素削除手段は、前記構造解析手段により実行される構造解析手段の種別に応じて、前記要素を削除する
ことを特徴とする付記１３に記載の構造解析装置。
【０１５２】
（付記１５）
前記構造解析手段により非同期パス検索が実行される場合、前記要素削除手段は、クロック信号線またはデータ信号線が接続されているレジスタ以外の前記要素を削除する
ことを特徴とする付記１３に記載の構造解析装置。
【０１５３】
（付記１６）
前記構造解析手段によりブロック間信号情報抽出が実行される場合、前記要素削除手段は、前記要素の１種であるブロック間の接続に関する前記要素以外を削除する
ことを特徴とする付記１３に記載の構造解析装置。
【０１５４】
（付記１７）
前記構造解析装置は、さらに、
前記回路設計データのうち未設計部分をダミーモジュールとして構築された前記構造解析用データベースにおいて、前記ダミーモジュールを正規のモジュールに置換する要素置換手段
を備えることを特徴とする請求項１３に記載の構造解析装置。
【０１５５】
（付記１８）
前記取得手段は、さらに論理合成のためのルールが記述された論理合成ルールを取得し、
前記構造解析装置は、さらに、
前記論理合成ルールに基づいて前記要素を生成し、前記回路設計データ又は前記解析用データベースに該要素を反映させる論理合成ルール要素生成手段と、
を備えることを付記１３に記載の構造解析装置。
【０１５６】
（付記１９）
前記論理合成ルール要素生成手段は、
前記回路設計データ内または前記複製データベースに、前記論理合成ルールに記された条件に合致する前記要素が存在するか否かを判定する判定手段と、
前記論理合成ルールに基づく要素である論理合成ルール要素を生成し、前記判定手段による判定により取得された要素を前記論理合成ルール要素に変換する生成手段と、
を備えることを特徴とする付記１８に記載の構造解析装置。
【０１５７】
（付記２０）
前記論理合成ルールは、スクリプト言語で作成されている
ことを特徴とする付記１８に記載の構造解析装置。
【０１５８】
（付記２１）
ハードウェア記述言語で記述された回路であって複数の要素から構成される該回路に関するデータである回路設計データの回路構造の構造解析を行う構造解析装置であって、
未設計部分を含む前記回路設計データを取得する取得手段と、
前記未設計部分をダミーモジュールとするダミーモジュール作成手段と、
前記ダミーモジュール作成手段による前記回路設計データに基づいて、構造解析用データベースを構築する第１のデータベース構築手段と、
前記ダミーモジュールを、設計が完了した正規のモジュールと置換する要素置換手段と、
前記置換された正規のモジュールに基づいて構造解析用データベースを構築する第２のデータベース構築手段と、
前記解析用データベースについて前記構造解析を行う構造解析手段と、
を備えることを特徴とする構造解析装置。
【０１５９】
（付記２２）
ハードウェア記述言語で記述された回路であって、複数の要素から構成される該回路に関するデータである回路設計データの回路構造の構造解析を行う構造解析装置であって、
前記回路設計データと論理合成のためのルールが記述された論理合成ルールとを取得する論理合成ルール取得手段と、
前記回路設計データに基づいて、構造解析用データベースを構築するデータベース構築手段と、
前記論理合成ルールに基づいて前記要素を生成し、前記回路設計データ又は前記解析用データベースに該要素を反映させる論理合成ルール要素生成手段と、
を備えることを特徴とする構造解析装置。
【０１６０】
（付記２３）
前記論理合成ルール要素生成手段は、
前記回路設計データ内または前記複製データベースに、前記論理合成ルールに記された条件に合致する前記要素が存在するか否かを判定する判定手段と、
前記論理合成ルールに基づく要素である論理合成ルール要素を生成し、前記判定手段による判定により取得された要素を前記論理合成ルール要素に変換する生成手段と、
を備えることを特徴とする付記２２に記載の構造解析装置。
【０１６１】
（付記２４）
前記論理合成ルールは、スクリプト言語で作成されている
ことを特徴とする付記２２に記載の構造解析装置。
【図面の簡単な説明】
【０１６２】
【図１】本発明にかかるＨＤＬデータ構造解析システム１００の構成概念図を示す。
【図２】第１の実施形態における最適化されたＤＢを使用しての解析処理手順を示す。
【図３】第２の実施形態における回路内の要素（モジュール）を別の要素（モジュール）に入れ替える様子を示す。
【図４】第３の実施形態における論理合成ルールを追加し、それをユーザ定義のモジュールに変換する様子を示す。
【図５】第１の実施形態の実施例１における複製されたマスターＤＢ上において、全ての情報を含む回路構成の一例を示す。
【図６】図５の回路構成の概念図を示す。
【図７】第１の実施形態の実施例１における非同期パス検索を実施する際にクロック／データ信号が接続されているレジスタ以外のノード情報を削除した回路構成を示す。
【図８】図７の回路構成の概念図を示す。
【図９】第１の実施形態の実施例１における非同期パス検索を実施する際にクロック／データ信号が接続されているレジスタ以外のノード情報を削除するフロー（その１）を示す。
【図１０】第１の実施形態の実施例１における非同期パス検索を実施する際にクロック／データ信号が接続されているレジスタ以外のノード情報を削除するフロー（その２）を示す。
【図１１】第１の実施形態の実施例２における複製されたマスターＤＢ上において、全ての情報を含む回路構成を示す。
【図１２】図１１の回路構成の概念図を示す。
【図１３】第１の実施形態の実施例２におけるブロック間信号情報抽出を実施する際にクロック間の接続情報情報以外の要素を削除した回路構成を示す。
【図１４】図１３の回路構成の概念図を示す。
【図１５】第１の実施形態の実施例２におけるブロック間信号情報抽出を実施する際にクロック間の接続情報情報以外の要素を削除するフロー（その１）を示す。
【図１６】第１の実施形態の実施例２におけるブロック間信号情報抽出を実施する際にクロック間の接続情報情報以外の要素を削除するフロー（その２）を示す。
【図１７】第２の実施形態におけるダミーモジュールを組み込んだ回路構成の一例を示す。
【図１８】図１７の回路構成の概念図を示す。
【図１９】第２の実施形態におけるダミーモジュール３１Ｄから正規モジュール３１への置き換えを示す。
【図２０】第２の実施形態における正規モジュールを組み込んだ回路構成の一例を示す。
【図２１】図２０の回路構成の概念図を示す。
【図２２】第２の実施形態におけるモジュール置き換えのフローを示す。
【図２３】第３の実施形態におけるＨＤＬ記述からセレクタを生成する様子を説明するための図である。
【図２４】第３の実施形態における一定の条件でトライステートバッファに変換する一例を示す。
【図２５】第３の実施形態における合成ルールの記述例（４４）を示す。
【図２６】第３の実施形態における追加した論理合成ルールをモジュールに変換するフローを示す。
【図２７】第３の実施形態におけるユーザ定義の論理合成ルールを解析用ＤＢに反映させる様子を示す図である。
【図２８】第１〜第３の実施形態におけるＨＤＬデータ構造解析システム１００のハードウェア環境の構成ブロック図である。
【図２９】従来の解析処理の解析処理手順を示す。
【符号の説明】
【０１６３】
１００  ＨＤＬデータ構造解析システム
１０１  取得手段
１０２  ＤＢ構築手段
１０３  ＤＢ複製手段
１０４  要素削除手段
１０５  要素置換手段
１０６  論理合成ルール要素生成手段
１０６ａ  判定手段
１０６ｂ  生成手段
１０７  構造解析手段
【図１】
2006277154.tif 000003
【図５】
2006277154.tif 000004
【図６】
2006277154.tif 000005
【図７】
2006277154.tif 000006
【図８】
2006277154.tif 000007
【図９】
2006277154.tif 000008
【図１０】
2006277154.tif 000009
【図１１】
2006277154.tif 000010
【図１２】
2006277154.tif 000011
【図１３】
2006277154.tif 000012
【図１４】
2006277154.tif 000013
【図１５】
2006277154.tif 000014
【図１６】
2006277154.tif 000015
【図１８】
2006277154.tif 000016
【図２０】
2006277154.tif 000017
【図２１】
2006277154.tif 000018
【図２２】
2006277154.tif 000019
【図２３】
2006277154.tif 000020
【図２４】
2006277154.tif 000021
【図２５】
2006277154.tif 000022
【図２６】
2006277154.tif 000023
【図２８】
2006277154.tif 000024
【図２】
2006277154.tif 000025
【図３】
2006277154.tif 000026
【図４】
2006277154.tif 000027
【図１７】
2006277154.tif 000028
【図１９】
2006277154.tif 000029
【図２７】
2006277154.tif 000030
【図２９】
2006277154.tif 000031