(57)【要約】【課題】階層設計された検証対象回路の検証にかかる処理を高速化し、検証期間の短縮化を図ること。【解決手段】（ｉ）検証対象回路１００に関するネットリストをモジュールＡ〜Ｉごとに分割する。（ｉｉ）各ＨＬＢ０１〜０５の検証時に、全ネットリストを読み込むのではなく、検証対象となるＨＬＢ０１〜０５の分割後のネットリストを読み込む。（ｉｉｉ）既に検証済みの下位階層のＨＬＢをブラックボックス化する。これにより、各ＨＬＢ０１〜０５の検証時に、その都度、検証対象回路１００に関する全ネットリストを読み込む必要がなくなり、処理時間を削減することができる。さらに、下位階層のＨＬＢをブラックボックス化することにより、無駄な論理展開にかかる使用メモリを削減することができる。【選択図】図１
2010146277.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
階層設計された検証対象回路に関するネットリストを取得する取得手段、
前記取得手段によって取得されたネットリストを前記検証対象回路内のモジュールごとに分割する分割手段、
前記モジュール群のうち階層構造化された階層レイアウトブロックを示すモジュールの中から、検証対象となる階層レイアウトブロックのモジュールを選択する選択手段、
前記選択手段によって選択されたモジュールのネットリストを、前記分割手段によって前記モジュールごとに分割されたネットリスト群の中から検索する検索手段、
前記検索手段によって検索されたモジュールのネットリストを出力する出力手段、
として機能させることを特徴とする検証支援プログラム。
【請求項２】
前記コンピュータを、
前記階層レイアウトブロックごとに、当該階層レイアウトブロックと呼出関係を有する直下階層の階層レイアウトブロックを前記ネットリストの中から検出する検出手段、
前記検出手段によって検出された検出結果に基づいて、前記階層レイアウトブロック間の呼出関係を辿ることにより、前記階層レイアウトブロックごとの最上位階層からの階層の深さを特定する特定手段、
前記特定手段によって特定された階層レイアウトブロックごとの階層の深さに基づいて、最下位階層から最上位階層までの各階層の階層レイアウトブロックを順に羅列した階層レイアウトブロックリストを作成する作成手段、として機能させ、
前記選択手段は、
前記作成手段によって作成された階層レイアウトブロックリストを参照して、前記検証対象となる階層レイアウトブロックのモジュールを選択することを特徴とする請求項１に記載の検証支援プログラム。
【請求項３】
前記コンピュータを、
前記検索手段によって検索されたモジュールのネットリストを用いて、当該モジュールの階層設計ルールを検証する検証手段として機能させ、
前記出力手段は、
前記検証手段によって検証された検証結果を出力することを特徴とする請求項１または２に記載の検証支援プログラム。
【請求項４】
階層設計された検証対象回路に関するネットリストを取得する取得手段と、
前記取得手段によって取得されたネットリストを前記検証対象回路内のモジュールごとに分割する分割手段と、
前記モジュール群のうち階層構造化された階層レイアウトブロックを示すモジュールの中から、検証対象となる階層レイアウトブロックのモジュールを選択する選択手段と、
前記選択手段によって選択されたモジュールのネットリストを、前記分割手段によって前記モジュールごとに分割されたネットリスト群の中から検索する検索手段と、
前記検索手段によって検索されたモジュールのネットリストを出力する出力手段と、
を備えることを特徴とする検証支援装置。
【請求項５】
制御手段および記憶手段を備えるコンピュータに、
前記制御手段により、階層設計された検証対象回路に関するネットリストを取得して、前記記憶手段に記憶する取得工程と、
前記制御手段により、前記取得工程によって取得されたネットリストを前記検証対象回路内のモジュールごとに分割して、前記記憶手段に記憶する分割工程と、
前記制御手段により、前記モジュール群のうち階層構造化された階層レイアウトブロックを示すモジュールの中から、検証対象となる階層レイアウトブロックのモジュールを選択して、前記記憶手段に記憶する選択工程と、
前記制御手段により、前記選択工程によって選択されたモジュールのネットリストを、前記分割工程によって前記モジュールごとに分割されたネットリスト群の中から検索して、前記記憶手段に記憶する検索工程と、
前記制御手段により、前記検索工程によって検索されたモジュールのネットリストを出力する出力工程と、
を実行させることを特徴とする検証支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）の階層設計を支援する検証支援プログラム、検証支援装置、および検証支援方法に関する。
【背景技術】
【０００２】
近年、ＬＳＩの大規模化、複雑化にともなってネットリストのデータ量が膨大なものとなっている。このため、１つのチップに対して一括してネットリストを設計するのではなく、チップ内の機能ブロック単位でネットリストを設計して効率化を図る階層設計がおこなわれている。一方で、階層設計されたネットリストに対しては、階層設計ルールを満たしているか否かを機能ブロックごとに検証する必要がある。そこで、複雑に階層構造化されたネットリストの検証効率を向上させる技術が求められている。
【０００３】
従来、階層設計された論理回路の検証において、複数回共通して用いられる階層ブロックが存在する場合の重複検証を回避して、検証効率の向上を図る技術が開示されている（たとえば、下記特許文献１参照。）。具体的には、階層ブロックの接続規則の検証をおこなう際に、その階層ブロックの上位側の階層ブロックの接続規則の検証に必要な情報を予め求めて格納する。
【０００４】
また、論理等価性検証を分割して実行することにより、検証効率の向上を図る技術が開示されている（たとえば、下記特許文献２参照。）。具体的には、論理変更または追加のあった論理階層の情報に基づいて、基準論理回路に必要なハードウェア記述用プログラム言語ファイルを検索して論理階層を組み立て、比較対象論理回路との論理等価性検証を分割して実行する。
【０００５】
【特許文献１】特開平６−１９５４０９号公報
【特許文献２】特開２００６−９２２５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、階層設計されたネットリストに対する検証は、チップ内の機能ブロックごとにおこなわれる。このため、各機能ブロックを検証する際に、その都度、全ネットリストを読み込む必要がある。これでは、検証時におけるネットリストの読み込みにかかる処理時間が増大し、検証期間の長期化を招くという問題があった。
【０００７】
この開示技術は、上述した従来技術による問題点を解消するため、階層設計された検証対象回路の検証にかかる処理を高速化し、検証期間の短縮化を図ることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、この開示技術は、階層設計された検証対象回路に関するネットリストを取得し、取得されたネットリストを前記検証対象回路内のモジュールごとに分割し、前記モジュール群のうち階層構造化された階層レイアウトブロックを示すモジュールの中から、検証対象となる階層レイアウトブロックのモジュールを選択し、選択されたモジュールのネットリストを、前記モジュールごとに分割されたネットリスト群の中から検索し、検索されたモジュールのネットリストを出力することを要件とする。
【０００９】
この開示技術によれば、ネットリストをモジュールごとに分割することにより、検証時に必要となるネットリストを、検証対象となる階層レイアウトブロック単位で提供することができる。
【発明の効果】
【００１０】
この開示技術によれば、階層設計された検証対象回路の検証にかかる処理を高速化し、検証期間の短縮化を図ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１１】
以下に添付図面を参照して、この検証支援プログラム、検証支援装置、および検証支援方法の好適な実施の形態を詳細に説明する。この検証支援プログラム、検証支援装置、および検証支援方法では、検証対象回路内のＨＬＢ（階層レイアウトブロック）の階層構造を明確にし、モジュール単位で分割されたネットリストを用いて、下位階層から上位階層へのＨＬＢごとの検証をおこなうことにより、検証にかかる処理時間および使用メモリを削減する。
【００１２】
（実施の形態の概要）
まず、本実施の形態の概要について説明する。図１は、実施の形態の概要を示す説明図である。図１において、検証対象回路１００は、複数のモジュールＡ〜Ｉを含む構成である。これらモジュールＡ〜Ｉのうち、モジュールＡ，Ｂ，Ｃ，Ｅ，Ｇは階層レイアウトブロック（以下、「ＨＬＢ」と表記する）である。
【００１３】
ここで、ＨＬＢとは、論理素子と論理素子同士を接続するネットからなる論理モジュールを含む機能ブロックである。検証対象回路１００は、ＨＬＢ０１を最上位階層のトップモジュールとして、複数のＨＬＢ（ＨＬＢ０１〜ＨＬＢ０５）によって階層構造化されている。
【００１４】
この検証対象回路１００のように階層設計されたネットリストに対しては、階層設計ルールを満たしているか否かを検証する必要がある。具体的には、たとえば、検証対象回路１００の階層構造を認識して、下位階層から上位階層に向けてＨＬＢ０１〜ＨＬＢ０５ごとの検証を順次おこなう。この例では、検証順序は「ＨＬＢ０４→ＨＬＢ０２→ＨＬＢ０５→ＨＬＢ０３→ＨＬＢ０１」となる。
【００１５】
従来手法では、ＨＬＢ０１〜ＨＬＢ０５ごとの検証をおこなう際に、その都度、検証対象回路１００に関する全ネットリストを読み込む必要があった。たとえば、ＨＬＢ０４を検証するために全ネットリストを読み込み、その検証が終了すると、さらに、ＨＬＢ０２を検証するために全ネットリストを読み込んでいた。
【００１６】
ところが、近年ではネットリストが大規模化しており、従来手法では、検証時におけるネットリストの読み込みにかかる処理時間が膨大なものとなってしまう。さらに、検証時にはＨＬＢ０１〜ＨＬＢ０５内の全セルを論理展開する必要があり、使用メモリの増大化を招くという問題があった。
【００１７】
そこで、本手法では、（ｉ）検証対象回路１００に関するネットリストをモジュールＡ〜Ｉごとに分割する。（ｉｉ）各ＨＬＢ０１〜ＨＬＢ０５の検証時に、全ネットリストを読み込むのではなく、検証対象となるＨＬＢ０１〜ＨＬＢ０５の分割後のネットリストを読み込む。（ｉｉｉ）既に検証済みの下位階層のＨＬＢをブラックボックス化する。
【００１８】
たとえば、ＨＬＢ０４を検証する際には、検証対象となるＨＬＢ０４（モジュールＥ）に関する分割後のネットリストだけを読み込む。このあと、ＨＬＢ０２を検証する際には、ＨＬＢ０２とＨＬＢ０２より下位階層のＨＬＢ０４とに関する分割後のネットリストを読み込む。このとき、既に検証済みのＨＬＢ０４をブラックボックス化して検証する。
【００１９】
これにより、各ＨＬＢ０１〜ＨＬＢ０５の検証時に、その都度、検証対象回路１００に関する全ネットリストを読み込む必要がなくなり、従来手法に比べて処理時間を大幅に削減することができる。さらに、既に検証済みのＨＬＢ（たとえば、ＨＬＢ０４）をブラックボックス化することにより、無駄な論理展開にかかる使用メモリを削減することができる。
【００２０】
（検証支援装置のハードウェア構成）
つぎに、実施の形態にかかる検証支援装置のハードウェア構成について説明する。図２は、検証支援装置のハードウェア構成を示すブロック図である。図２において、検証支援装置２００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、磁気ディスクドライブ２０４と、磁気ディスク２０５と、光ディスクドライブ２０６と、光ディスク２０７と、ディスプレイ２０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２０９と、キーボード２１０と、マウス２１１と、スキャナ２１２と、プリンタ２１３と、を備えている。また、各構成部はバス２００によってそれぞれ接続されている。
【００２１】
ここで、ＣＰＵ２０１は、検証支援装置２００の全体の制御を司る。ＲＯＭ２０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される。磁気ディスクドライブ２０４は、ＣＰＵ２０１の制御にしたがって磁気ディスク２０５に対するデータのリード／ライトを制御する。磁気ディスク２０５は、磁気ディスクドライブ２０４の制御で書き込まれたデータを記憶する。
【００２２】
光ディスクドライブ２０６は、ＣＰＵ２０１の制御にしたがって光ディスク２０７に対するデータのリード／ライトを制御する。光ディスク２０７は、光ディスクドライブ２０６の制御で書き込まれたデータを記憶したり、光ディスク２０７に記憶されたデータをコンピュータに読み取らせたりする。
【００２３】
ディスプレイ２０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ２０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００２４】
インターフェース（以下、「Ｉ／Ｆ」と略する。）２０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク２１４に接続され、このネットワーク２１４を介して他の装置に接続される。そして、Ｉ／Ｆ２０９は、ネットワーク２１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ２０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００２５】
キーボード２１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス２１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００２６】
スキャナ２１２は、画像を光学的に読み取り、検証支援装置２００内に画像データを取り込む。なお、スキャナ２１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ２１３は、画像データや文書データを印刷する。プリンタ２１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００２７】
（検証支援装置の機能的構成）
つぎに、検証支援装置２００の機能的構成について説明する。図３は、検証支援装置の機能的構成を示すブロック図である。図３において、検証支援装置２００は、取得部３０１と、分割部３０２と、選択部３０３と、検索部３０４と、検出部３０５と、特定部３０６と、作成部３０７と、検証部３０８と、出力部３０９と、を含む構成である。この制御部となる機能（取得部３０１〜出力部３０９）は、具体的には、たとえば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０９により、その機能を実現する。
【００２８】
取得部３０１は、階層設計された検証対象回路に関するネットリストを取得する機能を有する。具体的には、たとえば、取得部３０１が、図２に示したキーボード２１０やマウス２１１を用いたユーザの操作入力により、検証対象回路に関するネットリストを受け付けてもよく、また、データベースからの抽出により取得することとしてもよい。
【００２９】
ここで、ネットリストの一例について説明する。図４は、ネットリストの一例を示す説明図である。図４において、ネットリストＮＬは、検証対象回路４００に関する回路情報である。このネットリストＮＬは、Ｖｅｒｉｌｏｇ  ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）を用いて記述されている。
【００３０】
ここでは詳細な説明は省略するが、回路情報として、たとえば、モジュール名、モジュール内部の信号やパラメータなどの宣言、回路記述、下位モジュール呼び出しなどが記述されている。なお、図面では検証対象回路４００およびネットリストＮＬの一部を抜粋して表示している。
【００３１】
また、取得部３０１は、検証対象回路内のモジュール群のうち階層レイアウトブロック（以下、「ＨＬＢ」と表記）に指定されたモジュールを示す階層情報を取得する機能を有する。具体的には、たとえば、取得部３０１が、キーボード２１０やマウス２１１を用いたユーザの操作入力により、階層情報を受け付けてもよく、また、データベースからの抽出により取得することとしてもよい。
【００３２】
図５は、階層情報の一例を示す説明図である。図５において、階層情報５００には、検証対象回路４００（図４参照）内のトップモジュールおよびＨＬＢに指定されたモジュールのモジュール名が示されている。ここでは、図４に表示されている全モジュールＭ１〜Ｍ４がＨＬＢに指定されている。また、トップモジュールとは、階層構造化された検証対象回路の最上位階層のモジュールである。
【００３３】
なお、検証対象回路内のモジュール群のうち、どのモジュールをＨＬＢに指定するのかは、レイアウトや検証のし易さなどを考慮して設計者が任意に指定する。取得された取得結果は、たとえば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００３４】
分割部３０２は、取得されたネットリストを検証対象回路内のモジュールごとに分割する機能を有する。具体的には、たとえば、分割部３０２が、モジュール名を手掛かりに、ネットリストＮＬを検証対象回路４００内のモジュールＭ１〜Ｍ４ごとに分割する。分割された分割結果は、たとえば、ＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００３５】
ここで、ネットリストの分割例について説明する。図６は、ネットリストの分割例を示す説明図である。図６において、ネットリストＮＬをモジュールＭ１〜Ｍ４ごとに分割することにより、複数のネットリストＮＬ１〜ＮＬ４が作成されている。具体的には、ネットリストＮＬの記述内容が“ｍｏｄｕｌｅ”と“ｅｎｄｍｏｄｕｌｅ”で囲まれた記述単位で分割されている。
【００３６】
選択部３０３は、検証対象回路内のモジュール群のうち階層構造化されたＨＬＢを示すモジュールの中から、検証対象となるＨＬＢのモジュールを選択する機能を有する。具体的には、たとえば、選択部３０３が、階層構造化されたＨＬＢ群の中から、検証対象となるモジュールを下位階層から上位階層に向けて順次選択する。なお、選択処理についての詳細な説明は後述する。選択された選択結果は、たとえば、ＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００３７】
検索部３０４は、選択された検証対象となるＨＬＢのモジュールのネットリストを、モジュールごとに分割されたネットリスト群の中から検索する機能を有する。具体的には、たとえば、検索部３０４が、モジュール名を手掛かりに、分割後のネットリストＮＬ１〜ＮＬ４の中から検証対象となるＨＬＢのネットリストを検索する。検索された検索結果は、たとえば、ＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００３８】
出力部３０９は、検索されたモジュールのネットリストを出力する機能を有する。具体的には、たとえば、出力部３０９が、検証対象となるＨＬＢのモジュール名と、検索されたネットリストと、を関連付けて出力する。出力形式としては、たとえば、ディスプレイ２０８への表示、プリンタ２１３への印刷出力、Ｉ／Ｆ２０９による外部装置への送信がある。また、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶することとしてもよい。
【００３９】
ここで、上記選択部３０３による選択処理について詳細に説明する。ここでは、選択部３０３が、後述するＨＬＢリストを参照して、下位階層から上位階層に向けて検証対象となるモジュールを順次選択する。以下、ＨＬＢリストを作成する具体的な処理内容について説明する。
【００４０】
まず、検出部３０５は、ＨＬＢを示すモジュールごとに、当該モジュールと呼出関係を有する直下階層のＨＬＢを示すモジュールをネットリストの中から検出する機能を有する。具体的には、たとえば、まず、検出部３０５が、階層情報５００を参照して、モジュール名を手掛かりに、ネットリストＮＬの中からＨＬＢを示すモジュール（以下、「検出モジュール」）を検出する。
【００４１】
さらに、検出部３０５が、検出モジュールの“ｍｏｄｕｌｅ”と“ｅｎｄｍｏｄｕｌｅ”で囲まれた記述部分の中から、ＨＬＢを示す下位モジュールを検出する。検出された検出結果（検出モジュール、下位モジュール）は、たとえば、図７に示す相関テーブル７００に記憶される。ここで、相関テーブル７００について説明する。
【００４２】
図７は、相関テーブルの記憶内容を示す説明図である。図７において、相関テーブル７００は、モジュール名、下位モジュール、並列モジュール、階層の深さといったフィールドを有している。各フィールドに情報を設定することで、ＨＬＢ間の相関関係がレコードとして記憶される。
【００４３】
ここで、モジュール名とは、ＨＬＢに指定された検出モジュールの名称である。このモジュール名のフィールドには、上記検出部３０５によって検出された検出モジュール名が設定される。下位モジュールとは、検出モジュールと呼出関係を有する直下階層のＨＬＢを示すモジュールである。この下位モジュールのフィールドには、上記検出部３０５によって検出された下位モジュール名が設定される。
【００４４】
並列モジュールとは、呼出関係を有する直上階層のモジュールが、検出モジュールと同一の他のＨＬＢを示すモジュールである。一例として、検出モジュールをモジュールＭ２とする。ここでは、モジュールＭ２とモジュールＭ３とは、呼出関係を有する直上階層のモジュールＭ１が同一（双方ともモジュールＭ１の下位モジュール）である。
【００４５】
このため、モジュールＭ２の並列モジュールはモジュールＭ３となる。同様に、モジュールＭ３の並列モジュールはモジュールＭ２となる。この結果、モジュールＭ２の並列モジュールのフィールドにはモジュール名「Ｍ３」が設定され、モジュールＭ３の並列モジュールのフィールドにはモジュール名「Ｍ２」が設定される。
【００４６】
階層の深さとは、最上位階層からの階層の深さである。ただし、最上位階層の深さを「０」とする。この階層の深さのフィールドには、後述する特定部３０６による特定結果が設定されることになる。相関テーブル７００は、たとえば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶されている。
【００４７】
図３の説明に戻り、特定部３０６は、検出された検出結果に基づいて、ＨＬＢ間の呼出関係を辿ることにより、ＨＬＢごとの最上位階層からの階層の深さ（以下、階層の深さを「ｈ」と表記）を特定する機能を有する。具体的には、たとえば、まず、特定部３０６が、階層情報５００を参照して、ＨＬＢに指定されたモジュールＭ１〜Ｍ４の中から、任意のモジュール（以下、「ターゲットモジュール」という）を選択する。この時点でのターゲットモジュールの階層の深さを「ｈ＝０」とする。
【００４８】
つぎに、特定部３０６が、相関テーブル７００を参照して、下位モジュールにターゲットモジュールを含むモジュール（以下、「検索モジュール」という）を検索する。ここで、検索モジュールが検索された場合、ターゲットモジュールの階層の深さｈをインクリメントして「ｈ＝ｈ＋１」とする。
【００４９】
このあと、特定部３０６が、下位モジュールに検索モジュールを含む他の検索モジュールを検索し、他の検索モジュールが検索されると、ターゲットモジュールの階層の深さｈをインクリメントする。これを、下位モジュールに検索モジュールを含む他の検索モジュールが未検索となるまで繰り返す。
【００５０】
この結果、ターゲットモジュールの階層の深さｈを特定することができる。ここで、モジュールＭ１〜Ｍ４の中から、モジュールＭ４をターゲットモジュールとして選択した場合を例に挙げて説明する。この時点では、モジュールＭ４の階層の深さは「ｈ＝０」である。
【００５１】
つぎに、特定部３０６が、下位モジュールにモジュールＭ４を含む検索モジュールを検索する。ここでは、検索モジュールとしてモジュールＭ３が検索され、モジュールＭ４の階層の深さｈが「ｈ＝１」となる。このあと、特定部３０６が、下位モジュールにモジュールＭ３を含む他の検索モジュールを検索する。
【００５２】
ここでは、他の検索モジュールとしてモジュールＭ１が検索され、モジュールＭ４の階層の深さが「ｈ＝２」となる。さらにこのあと、特定部３０６が、下位モジュールにモジュールＭ１を含む他の検索モジュールを検索する。ここでは、下位モジュールにモジュールＭ１を含む他の検索モジュールが未検索となり、モジュールＭ４の階層の深さが「ｈ＝２」となる。
【００５３】
これら一連の処理をＨＬＢに指定された全モジュールについて実行することにより、各モジュールＭ１〜Ｍ４の階層の深さｈを特定することができる。なお、特定された特定結果は、たとえば、相関テーブル７００内の階層の深さフィールドに記憶される。また、階層の深さｈの最大値は、最下位階層の深さｈmaxとして認識可能に記憶される。
【００５４】
また、特定部３０６は、ＨＬＢ群のうち第１のＨＬＢの階層の深さが特定された結果、呼出関係を有する直上階層のＨＬＢが、第１のＨＬＢと同一の第２のＨＬＢの階層の深さを、第１のＨＬＢと同一の深さに特定することにしてもよい。ここで、一例として、モジュールＭ２の階層の深さ「ｈ＝１」が特定された場合を例に挙げる。
【００５５】
この場合、特定部３０６が、相関テーブル７００を参照して、モジュールＭ２の並列モジュールであるモジュールＭ３を特定する。そして、モジュールＭ３の階層の深さを、モジュールＭ２と同一の深さ「ｈ＝１」に特定する。これにより、各モジュールの階層の深さを特定する処理にかかる処理時間を削減することができる。
【００５６】
作成部３０７は、特定されたＨＬＢごとの階層の深さに基づいて、最下位階層から最上位階層までの各階層のモジュールを順に羅列したＨＬＢリストを作成する機能を有する。ここで、ＨＬＢリストとは、階層設計された検証対象回路内のＨＬＢ群を検証する際の検証順序をあらわすものである。
【００５７】
すなわち、ＨＬＢリストを参照して最下位階層から最上位階層までの各階層のモジュールを認識し、それぞれのモジュールが階層設計ルールを満たしているか否かを順次検証することになる。具体的には、たとえば、ＨＬＢリストは、検証順序をあらわすｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文と、ＨＬＢ間の呼出関係をあらわすｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文とを含む構成である。
【００５８】
以下、作成部３０７による作成処理の具体的な処理内容について説明する。まず、作成部３０７が、図８に示すテンプレート８００を用いて、ｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文を作成する。図８は、ｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文のテンプレートを示す説明図である。図８において、テンプレート８００は、階層の深さｈのモジュールを記述するためのｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文である。
【００５９】
テンプレート８００において、ボックス８１０は、階層の深さｈを挿入するための挿入位置である。ボックス８２０は、階層の深さｈのモジュールのモジュール名を挿入するための挿入位置である。なお、テンプレート８００は、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に予め記憶されている。
【００６０】
ここで、ｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文の作成例について説明する。図９は、ｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文の作成例を示す説明図である。図９において、（１）テンプレート８００のボックス８１０に（図８参照）、最下位階層「ｈ＝ｈmax＝２」から最上位階層「ｈ＝０」の深さを挿入して、階層ごとのｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文９１０〜９３０を作成する。
【００６１】
（２）相関テーブル７００を参照して、階層の深さ「ｈ＝２」のモジュール名「Ｍ４」をｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文９１０〜９３０のボックス８２０に挿入する。（３）相関テーブル７００を参照して、階層の深さ「ｈ＝１」のモジュール名「Ｍ２，Ｍ３」をｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文９２０，９３０のボックス８２０に挿入する。（４）相関テーブル７００を参照して、階層の深さ「ｈ＝０」のモジュール名「Ｍ１」をｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文９３０のボックス８２０に挿入する。
【００６２】
これにより、検証対象回路４００内のＨＬＢを示すモジュールＭ１〜Ｍ４の検証順序をあらわすｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文を作成することができる。なお、作成された作成結果は、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に予め記憶される。
【００６３】
つぎに、作成部３０７が、図１０に示すテンプレート１０００を用いて、ｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文を作成する。図１０は、ｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文のテンプレートを示す説明図である。図１０において、テンプレート１０００は、ＨＬＢ間の呼出関係を記述するためのｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文である。
【００６４】
ボックス１０１０は、ＨＬＢを示す任意のモジュール名を挿入するための挿入位置である。ボックス１０２０は、ボックス１０１０に挿入されたモジュールと呼出関係を有するモジュール名を挿入するための挿入位置である。なお、テンプレート１０００は、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に予め記憶されている。
【００６５】
ここで、ｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文の作成例について説明する。図１１は、ｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文の作成例を示す説明図である。図１１において、（１）テンプレート１０００のボックス１０１０に（図１０参照）、最上位階層「ｈ＝０」から最下位階層「ｈ＝ｈmax＝２」の各階層のＨＬＢを示すモジュール名を挿入して、ＨＬＢごとのｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文１１１０〜１１４０を作成する。
【００６６】
（２）相関テーブル７００を参照して、モジュールＭ１の下位モジュール名「Ｍ２，Ｍ３」をｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文１１１０のボックス１０２０に挿入する。（３）相関テーブル７００を参照して、モジュールＭ３の下位モジュール名「Ｍ４」をｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文１１３０のボックス１０２０に挿入する。
【００６７】
なお、モジュールＭ２およびＭ４の下位モジュールは存在しないため、ｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文１１２０，１１４０のボックス１０２０は空欄となる。これにより、検証対象回路４００内のＨＬＢ間の呼出関係をあらわすｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文を作成することができる。
【００６８】
図１２は、ＨＬＢリストの一例を示す説明図である。図１２において、ＨＬＢリスト１２００は、ＨＬＢ群の検証順序をあらわすｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文９３０と、ＨＬＢ間の呼出関係をあらわすｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文１１１０〜１１４０と、を含む構成である。このＨＬＢリスト１２００によれば、検証対象回路４００内のＨＬＢ群の検証順序と、ＨＬＢ間の呼出関係と、を認識することができる。
【００６９】
この結果、選択部３０３は、作成されたＨＬＢリストを参照して、検証対象となるモジュールを選択する。具体的には、たとえば、選択部３０３が、ＨＬＢリスト１２００（図１２参照）のｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文９３０を参照して、最下位階層から最上位階層までのＨＬＢを示すモジュールを順次選択する。この例では、「モジュールＭ４→モジュールＭ２→モジュールＭ３→モジュールＭ１」の順に、検証対象となるＨＬＢを選択する。
【００７０】
図３の説明に戻り、検証部３０８は、検索されたモジュールのネットリストを用いて、当該モジュールを検証する機能を有する。具体的には、たとえば、検証部３０８が、検証対象となるモジュールを論理展開して階層設計ルールを満たしているか否かを検証する。検証内容としては、たとえば、モジュールの初段のセルが、ＦＦ（フリップフロップ）やバッファであるか否かのチェックがある。検証された検証結果は、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００７１】
また、検証部３０８は、検証対象となるモジュールより下位階層のモジュール群のうち、ＨＬＢを示すモジュールをブラックボックス化する機能を有する。具体的には、たとえば、検証部３０８が、下位モジュールのネットリストを、初段のセルや入力信号に対する出力信号のみが記述された内容に変更する。これにより、検証済みの下位モジュールを論理展開する必要がなく、検証時における使用メモリを削減することができる。
【００７２】
また、出力部３０９は、検証された検証結果を出力する。具体的には、たとえば、出力部３０９が、検証対象となるＨＬＢのモジュール名と、検証された検証結果と、を関連付けて出力することにしてもよい。
【００７３】
（検証支援装置の検証支援処理手順）
つぎに、検証支援装置２００の検証支援処理手順について説明する。図１３は、検証支援装置の検証支援処理手順の一例を示すフローチャートである。図１３のフローチャートにおいて、まず、取得部３０１により、検証対象回路に関するネットリストおよび階層情報の入力を受け付けたか否かを判断する（ステップＳ１３０１）。
【００７４】
ここで、ネットリストおよび階層情報の入力を受け付けるのを待って（ステップＳ１３０１：Ｎｏ）、受け付けた場合（ステップＳ１３０１：Ｙｅｓ）、分割部３０２により、ネットリストを検証対象回路内のモジュールごとに分割するネットリスト分割処理を実行する（ステップＳ１３０２）。
【００７５】
このあと、検出部３０５により、ＨＬＢ間の呼出関係をあらわす相関テーブルを作成する相関テーブル作成処理を実行する（ステップＳ１３０３）。そして、作成部３０７により、最下位階層から最上位階層までの各階層のモジュールを順に羅列したＨＬＢリストを作成するＨＬＢリスト作成処理を実行する（ステップＳ１３０４）。最後に、検証部３０８により、検証対象回路内のＨＬＢごとの検証処理を実行して（ステップＳ１３０５）、本フローチャートによる一連の処理を終了する。
【００７６】
つぎに、図１３に示したステップＳ１３０２のネットリスト分割処理の具体的処理手順について説明する。図１４は、ネットリスト分割処理の具体的処理手順を示すフローチャートである。図１４のフローチャートにおいて、まず、分割部３０２により、図１３に示したステップＳ１３０１において入力を受け付けたネットリストから文字列を読み込む（ステップＳ１４０１）。
【００７７】
このあと、ネットリストから文字列が読み込まれたか否かを判断して（ステップＳ１４０２）、読み込まれた場合（ステップＳ１４０２：Ｙｅｓ）、読み込まれた文字列が“ｍｏｄｕｌｅ”か否かを判断する（ステップＳ１４０３）。ここで、文字列が“ｍｏｄｕｌｅ”ではない場合（ステップＳ１４０３：Ｎｏ）、ステップＳ１４０１に戻る。
【００７８】
一方、文字列が“ｍｏｄｕｌｅ”の場合（ステップＳ１４０３：Ｙｅｓ）、ネットリストからモジュール名を読み込んで（ステップＳ１４０４）、ファイル名“モジュール名．ｖ”のファイルを作成する（ステップＳ１４０５）。そして、ネットリストからつぎの文字列を読み込んで（ステップＳ１４０６）、“モジュール名．ｖ”のファイルに文字列を書き込む（ステップＳ１４０７）。
【００７９】
このあと、ステップＳ１４０６において読み込まれた文字列が“ｅｎｄｍｏｄｕｌｅ”か否かを判断して（ステップＳ１４０８）、文字列が“ｅｎｄｍｏｄｕｌｅ”ではない場合（ステップＳ１４０８：Ｎｏ）、ステップＳ１４０６に戻る。
【００８０】
一方、文字列が“ｅｎｄｍｏｄｕｌｅ”の場合（ステップＳ１４０８：Ｙｅｓ）、“モジュール名．ｖ”のファイルを記憶領域に保存して（ステップＳ１４０９）、ステップＳ１４０１に戻る。そして、ステップＳ１４０２において、ネットリストから文字列が読み込まれなかった場合に（ステップＳ１４０２：Ｎｏ）、図１３に示したステップＳ１３０３に移行する。
【００８１】
これにより、検証対象回路に関するネットリストをモジュールごとに分割することができる。
【００８２】
つぎに、図１３に示したステップＳ１３０３の相関テーブル作成処理の具体的処理手順について説明する。図１５は、相関テーブル作成処理の具体的処理手順を示すフローチャートである。図１５のフローチャートにおいて、まず、検出部３０５により、図１３に示したステップＳ１３０１において入力を受け付けたネットリストから文字列を読み込む（ステップＳ１５０１）。
【００８３】
このあと、ネットリストから文字列が読み込まれたか否かを判断して（ステップＳ１５０２）、読み込まれた場合（ステップＳ１５０２：Ｙｅｓ）、読み込まれた文字列が“ｍｏｄｕｌｅ”か否かを判断する（ステップＳ１５０３）。ここで、文字列が“ｍｏｄｕｌｅ”ではない場合（ステップＳ１５０３：Ｎｏ）、ステップＳ１５０１に戻る。
【００８４】
一方、文字列が“ｍｏｄｕｌｅ”の場合（ステップＳ１５０３：Ｙｅｓ）、ネットリストからモジュール名を読み込んで（ステップＳ１５０４）、図１３に示したステップＳ１３０１において入力を受け付けた階層情報を参照して、読み込まれたモジュール名がＨＬＢを示すモジュール名か否かを判断する（ステップＳ１５０５）。
【００８５】
ここで、ＨＬＢを示すモジュール名ではない場合（ステップＳ１５０５：Ｎｏ）、ステップＳ１５０１に戻る。一方、ＨＬＢを示すモジュール名の場合（ステップＳ１５０５：Ｙｅｓ）、ステップＳ１５０４において読み込まれたモジュール名を相関テーブルに登録する（ステップＳ１５０６）。
【００８６】
このあと、ネットリストを読み込むことにより下位モジュールがあるか否かを判断して（ステップＳ１５０７）、下位モジュールがない場合は（ステップＳ１５０７：Ｎｏ）、ステップＳ１５０１に戻る。そして、ステップＳ１５０２において、文字列が読み込まれなかった場合（ステップＳ１５０２：Ｎｏ）、図１３に示したステップＳ１３０４に移行する。また、ステップＳ１５０７において、下位モジュールがある場合（ステップＳ１５０７：Ｙｅｓ）、階層情報を参照して、下位モジュール名がＨＬＢを示すモジュール名か否かを判断する（ステップＳ１５０８）。
【００８７】
ここで、ＨＬＢを示すモジュール名ではない場合（ステップＳ１５０８：Ｎｏ）、ステップＳ１５０７に戻る。一方、ＨＬＢを示すモジュール名の場合（ステップＳ１５０８：Ｙｅｓ）、ステップＳ１５０７において読み込まれた下位モジュール名を相関テーブルに登録する（ステップＳ１５０９）。
【００８８】
このあと、相関テーブルに他の下位モジュールが登録済みか否かを判断する（ステップＳ１５１０）。ここで、下位モジュールが登録済みの場合（ステップＳ１５１０：Ｙｅｓ）、下位モジュール同士を並列モジュールとして相関テーブルに登録して（ステップＳ１５１１）、ステップＳ１５０７に戻る。一方、登録されていない場合は（ステップＳ１５１０：Ｎｏ）、ステップＳ１５０７に戻る。
【００８９】
これにより、検証対象回路内のＨＬＢ間の呼出関係をあらわす相関テーブルを作成することができる。
【００９０】
つぎに、図１３に示したステップＳ１３０４のＨＬＢリスト作成処理の具体的処理手順について説明する。図１６は、ＨＬＢリスト作成処理の具体的処理手順を示すフローチャートである。図１６のフローチャートにおいて、まず、特定部３０６により、ＨＬＢに指定された各モジュールの階層の深さを特定する階層特定処理を実行する（ステップＳ１６０１）。
【００９１】
このあと、作成部３０７により、検証対象回路内のＨＬＢ群の検証順序をあらわすｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文作成処理を実行する（ステップＳ１６０２）。そして、作成部３０７により、検証対象回路内のＨＬＢ間の呼出関係をあらわすｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文作成処理を実行して（ステップＳ１６０３）、図１３に示したステップＳ１３０５に移行する。
【００９２】
つぎに、図１６に示したステップＳ１６０１の階層特定処理の具体的処理手順について説明する。図１７は、階層特定処理の具体的処理手順を示すフローチャートである。図１７において、まず、特定部３０６により、階層情報を参照して、検証対象回路内のＨＬＢ群の中から任意のモジュール（以下、「ターゲットモジュール」という）を選択する（ステップＳ１７０１）。
【００９３】
そして、ターゲットモジュールの階層の深さを「ｈ＝０」に初期化する（ステップＳ１７０２）。このあと、特定部３０６により、相関テーブルを参照して、下位モジュールにターゲットモジュールを含むモジュールを検索する（ステップＳ１７０３）。
【００９４】
ここで、モジュール（以下、「検索モジュール」という）が検索された場合（ステップＳ１７０４：Ｙｅｓ）、ターゲットモジュールの階層の深さｈを「ｈ＝ｈ＋１」とする（ステップＳ１７０５）。そして、下位モジュールに検索モジュールを含むモジュールを検索して（ステップＳ１７０６）、ステップＳ１７０４に戻る。
【００９５】
一方、ステップＳ１７０４において、検索モジュールが検索されなかった場合（ステップＳ１７０４：Ｎｏ）、ターゲットモジュールの階層の深さｈを相関テーブルに登録する（ステップＳ１７０７）。そして、相関テーブルを参照して、ターゲットモジュールの並列モジュールがあるか否かを判断する（ステップＳ１７０８）。
【００９６】
ここで、並列モジュールがない場合（ステップＳ１７０８：Ｎｏ）、ステップＳ１７１１に移行する。一方、並列モジュールがある場合（ステップＳ１７０８：Ｙｅｓ）、ＨＬＢ群の中からその並列モジュールを選択する（ステップＳ１７０９）。そして、ターゲットモジュールの階層の深さｈを、並列モジュールの階層の深さｈとして相関テーブルに登録する（ステップＳ１７１０）。
【００９７】
このあと、ＨＬＢ群の中から選択されていない未選択のモジュールがあるか否かを判断して（ステップＳ１７１１）、未選択のモジュールがある場合（ステップＳ１７１１：Ｙｅｓ）、ステップＳ１７０１に戻る。一方、未選択のモジュールがない場合には（ステップＳ１７１１：Ｎｏ）、最下階層の深さｈmaxを相関テーブルに登録して（ステップＳ１７１２）、図１６に示したステップＳ１６０２に移行する。
【００９８】
これにより、検証対象回路内の各ＨＬＢを示すモジュールの階層の深さを特定することができる。
【００９９】
つぎに、図１６に示したステップＳ１６０２のｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文作成処理の具体的処理手順について説明する。図１８は、ｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文作成処理の具体的処理手順を示すフローチャートである。ただし、Ｈは階層の深さをあらわすパラメータである。
【０１００】
図１８において、まず、作成部３０７により、相関テーブルを参照して、テンプレート８００に最下位階層から最上位階層までの各階層の深さを挿入することにより、階層ごとのｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文を作成する（ステップＳ１８０１）。そして、パラメータＨを「Ｈ＝ｈmax」とする（ステップＳ１８０２）。
【０１０１】
このあと、階層の深さｈを「ｈ＝０」として（ステップＳ１８０３）、「Ｈ＝ｈ」か否かを判断する（ステップＳ１８０４）。ここで、「Ｈ≠ｈ」の場合（ステップＳ１８０４：Ｎｏ）、階層の深さｈを「ｈ＝ｈ＋１」として（ステップＳ１８０５）、ステップＳ１８０４に戻る。
【０１０２】
一方、「Ｈ＝ｈ」の場合（ステップＳ１８０４：Ｙｅｓ）、相関テーブルを参照して、階層の深さｈのモジュールを選択する（ステップＳ１８０６）。そして、階層の深さがｈ以下のｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文に、選択された階層の深さｈのモジュール名を挿入する（ステップＳ１８０７）。
【０１０３】
このあと、相関テーブルを参照して、階層の深さｈの他のモジュールがあるか否かを判断して（ステップＳ１８０８）、他のモジュールがある場合は（ステップＳ１８０８：Ｙｅｓ）、ステップＳ１８０６に戻る。一方、他のモジュールがない場合には（ステップＳ１８０８：Ｎｏ）、「Ｈ＝０」か否かを判断する（ステップＳ１８０９）。
【０１０４】
ここで、「Ｈ＝０」の場合は（ステップＳ１８０９：Ｙｅｓ）、図１６に示したステップＳ１６０３に移行する。一方、「Ｈ≠０」の場合には（ステップＳ１８０９：Ｎｏ）、「Ｈ＝Ｈ−１」として（ステップＳ１８１０）、ステップＳ１８０３に戻る。
【０１０５】
これにより、検証対象回路内のＨＬＢ群の検証順序をあらわすｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文を作成することができる。
【０１０６】
つぎに、図１６に示したステップＳ１６０３のｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文作成処理の具体的処理手順について説明する。図１９は、ｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文作成処理の具体的処理手順を示すフローチャートである。図１９のフローチャートにおいて、まず、作成部３０７により、階層情報を参照して、テンプレート１０００にＨＬＢを示すモジュール名を挿入することにより、ＨＬＢを示すモジュールごとのｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文を作成する（ステップＳ１９０１）。
【０１０７】
このあと、階層の深さｈを「ｈ＝０」として（ステップＳ１９０２）、相関テーブルを参照して、階層の深さｈのモジュールを選択する（ステップＳ１９０３）。そして、相関テーブルを参照して、選択されたモジュールの下位モジュールをｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文のボックス１０２０に挿入する（ステップＳ１９０４）。
【０１０８】
つぎに、相関テーブルを参照して、階層の深さｈの他のモジュールがあるか否かを判断して（ステップＳ１９０５）、他のモジュールがある場合（ステップＳ１９０５：Ｙｅｓ）、ステップＳ１９０３に戻る。一方、他のモジュールがない場合には（ステップＳ１９０５：Ｎｏ）、階層の深さｈが「ｈ＝ｈmax」か否かを判断する（ステップＳ１９０６）。
【０１０９】
ここで、階層の深さｈが「ｈ≠ｈmax」の場合（ステップＳ１９０６：Ｎｏ）、階層の深さｈを「ｈ＝ｈ＋１」として（ステップＳ１９０７）、ステップＳ１９０３に戻る。一方、階層の深さｈが「ｈ＝ｈmax」の場合（ステップＳ１９０６：Ｙｅｓ）、図１３に示したステップＳ１３０５に移行する。
【０１１０】
これにより、検証対象回路内のＨＬＢ間の呼出関係をあらわすｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文を作成することができる。
【０１１１】
つぎに、図１３に示したステップＳ１３０５の検証処理の具体的処理手順について説明する。図２０は、検証処理の具体的処理手順を示すフローチャートである。図２０のフローチャートにおいて、まず、選択部３０３により、ＨＬＢリストのｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文を参照して、検証対象となるモジュールを選択する（ステップＳ２００１）。
【０１１２】
このあと、検索部３０４により、図１３に示したステップＳ１３０２において分割されたモジュールごとのネットリスト群の中から、検証対象となるモジュールのネットリストを検索する（ステップＳ２００２）。つぎに、検証部３０８により、検索されたネットリストを参照して、検証対象となるモジュールに下位モジュールがあるか否かを判断する（ステップＳ２００３）。
【０１１３】
ここで、下位モジュールがある場合（ステップＳ２００３：Ｙｅｓ）、検証部３０８により、ＨＬＢリストのｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文を参照して、下位モジュールがＨＬＢか否かを判断する（ステップＳ２００４）。そして、下位モジュールがＨＬＢの場合（ステップＳ２００４：Ｙｅｓ）、検証部３０８により、下位モジュールをブラックボックス化して（ステップＳ２００５）、ステップＳ２００３に戻る。一方、下位モジュールがＨＬＢではない場合（ステップＳ２００４：Ｎｏ）、検証部３０８により、下位モジュールを論理展開して（ステップＳ２００６）、ステップＳ２００３に戻る。
【０１１４】
また、ステップＳ２００３において、下位モジュールがない場合には（ステップＳ２００３：Ｎｏ）、検証部３０８により、検証対象となるモジュールの検証処理を実行する（ステップＳ２００７）。そして、選択部３０３により、ＨＬＢリストのｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文を参照して、検証対象として選択されていない未選択のモジュールがあるか否かを判断する（ステップＳ２００８）。
【０１１５】
ここで、未選択のモジュールがある場合（ステップＳ２００８：Ｙｅｓ）、ステップＳ２００１に戻る。一方、未選択のモジュールがない場合には（ステップＳ２００８：Ｎｏ）、出力部３０９により、ステップＳ２００７における検証結果を出力して（ステップＳ２００９）、本フローチャートによる一連の処理を終了する。
【０１１６】
以上説明したように、本実施の形態によれば、検証対象回路内のモジュール単位で分割された分割後のネットリストを用いて、ＨＬＢごとの検証をおこなうことができる。これにより、検証時におけるネットリストの読み込みにかかる処理時間を削減することができる。また、検証対象となるＨＬＢよりも下位階層のＨＬＢをブラックボックス化することにより、検証時における無駄な論理展開を排除して使用メモリを削減することができる。
【０１１７】
このように、本実施の形態にかかる検証支援プログラム、検証支援装置、および検証支援方法によれば、階層設計された検証対象回路の検証にかかる処理の高速化および使用メモリの低容量化を実現し、検証期間の短縮化を図ることができる。
【０１１８】
なお、本実施の形態で説明した検証支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、このプログラムは、インターネットなどのネットワークを介して配布することが可能であってもよい。
【０１１９】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１２０】
（付記１）コンピュータを、
階層設計された検証対象回路に関するネットリストを取得する取得手段、
前記取得手段によって取得されたネットリストを前記検証対象回路内のモジュールごとに分割する分割手段、
前記モジュール群のうち階層構造化された階層レイアウトブロックを示すモジュールの中から、検証対象となる階層レイアウトブロックのモジュールを選択する選択手段、
前記選択手段によって選択されたモジュールのネットリストを、前記分割手段によって前記モジュールごとに分割されたネットリスト群の中から検索する検索手段、
前記検索手段によって検索されたモジュールのネットリストを出力する出力手段、
として機能させることを特徴とする検証支援プログラム。
【０１２１】
（付記２）前記コンピュータを、
前記階層レイアウトブロックごとに、当該階層レイアウトブロックと呼出関係を有する直下階層の階層レイアウトブロックを前記ネットリストの中から検出する検出手段、
前記検出手段によって検出された検出結果に基づいて、前記階層レイアウトブロック間の呼出関係を辿ることにより、前記階層レイアウトブロックごとの最上位階層からの階層の深さを特定する特定手段、
前記特定手段によって特定された階層レイアウトブロックごとの階層の深さに基づいて、最下位階層から最上位階層までの各階層の階層レイアウトブロックを順に羅列した階層レイアウトブロックリストを作成する作成手段、として機能させ、
前記選択手段は、
前記作成手段によって作成された階層レイアウトブロックリストを参照して、前記検証対象となる階層レイアウトブロックのモジュールを選択することを特徴とする付記１に記載の検証支援プログラム。
【０１２２】
（付記３）前記選択手段は、
前記階層レイアウトブロックリストを参照して、最下位階層から最上位階層までの階層レイアウトブロックを示すモジュールを順次選択することを特徴とする付記２に記載の検証支援プログラム。
【０１２３】
（付記４）前記コンピュータを、
前記検索手段によって検索されたモジュールのネットリストを用いて、当該モジュールの階層設計ルールを検証する検証手段として機能させ、
前記出力手段は、
前記検証手段によって検証された検証結果を出力することを特徴とする付記１〜３のいずれか一つに記載の検証支援プログラム。
【０１２４】
（付記５）前記検証手段は、
前記検証対象となるモジュールより下位階層の階層レイアウトブロックに関するネットリストを変更することにより、当該階層レイアウトブロックをブラックボックス化することを特徴とする付記４に記載の検証支援プログラム。
【０１２５】
（付記６）前記特定手段は、
前記階層レイアウトブロック群のうち第１の階層レイアウトブロックの階層の深さが特定された結果、呼出関係を有する直上階層の階層レイアウトブロックが、前記第１の階層レイアウトブロックと同一の第２の階層レイアウトブロックの階層の深さを、前記第１の階層レイアウトブロックの階層の深さと同一の深さに特定することを特徴とする付記２に記載の検証支援プログラム。
【０１２６】
（付記７）階層設計された検証対象回路に関するネットリストを取得する取得手段と、
前記取得手段によって取得されたネットリストを前記検証対象回路内のモジュールごとに分割する分割手段と、
前記モジュール群のうち階層構造化された階層レイアウトブロックを示すモジュールの中から、検証対象となる階層レイアウトブロックのモジュールを選択する選択手段と、
前記選択手段によって選択されたモジュールのネットリストを、前記分割手段によって前記モジュールごとに分割されたネットリスト群の中から検索する検索手段と、
前記検索手段によって検索されたモジュールのネットリストを出力する出力手段と、
を備えることを特徴とする検証支援装置。
【０１２７】
（付記８）制御手段および記憶手段を備えるコンピュータに、
前記制御手段により、階層設計された検証対象回路に関するネットリストを取得して、前記記憶手段に記憶する取得工程と、
前記制御手段により、前記取得工程によって取得されたネットリストを前記検証対象回路内のモジュールごとに分割して、前記記憶手段に記憶する分割工程と、
前記制御手段により、前記モジュール群のうち階層構造化された階層レイアウトブロックを示すモジュールの中から、検証対象となる階層レイアウトブロックのモジュールを選択して、前記記憶手段に記憶する選択工程と、
前記制御手段により、前記選択工程によって選択されたモジュールのネットリストを、前記分割工程によって前記モジュールごとに分割されたネットリスト群の中から検索して、前記記憶手段に記憶する検索工程と、
前記制御手段により、前記検索工程によって検索されたモジュールのネットリストを出力する出力工程と、
を実行させることを特徴とする検証支援方法。
【図面の簡単な説明】
【０１２８】
【図１】実施の形態の概要を示す説明図である。
【図２】検証支援装置のハードウェア構成を示すブロック図である。
【図３】検証支援装置の機能的構成を示すブロック図である。
【図４】ネットリストの一例を示す説明図である。
【図５】階層情報の一例を示す説明図である。
【図６】ネットリストの分割例を示す説明図である。
【図７】相関テーブルの記憶内容を示す説明図である。
【図８】ｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文のテンプレートを示す説明図である。
【図９】ｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文の作成例を示す説明図である。
【図１０】ｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文のテンプレートを示す説明図である。
【図１１】ｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文の作成例を示す説明図である。
【図１２】ＨＬＢリストの一例を示す説明図である。
【図１３】検証支援装置の検証支援処理手順の一例を示すフローチャートである。
【図１４】ネットリスト分割処理の具体的処理手順を示すフローチャートである。
【図１５】相関テーブル作成処理の具体的処理手順を示すフローチャートである。
【図１６】ＨＬＢリスト作成処理の具体的処理手順を示すフローチャートである。
【図１７】階層特定処理の具体的処理手順を示すフローチャートである。
【図１８】ｂｌｏｃｋ＿ｓｅｑｕｅｎｃｅ文作成処理の具体的処理手順を示すフローチャートである。
【図１９】ｈｉｅｒａｒｃｈｙ＿ｍｏｄｕｌｅ文作成処理の具体的処理手順を示すフローチャートである。
【図２０】検証処理の具体的処理手順を示すフローチャートである。
【符号の説明】
【０１２９】
２００  検証支援装置
３０１  取得部
３０２  分割部
３０３  選択部
３０４  検索部
３０５  検出部
３０６  特定部
３０７  作成部
３０８  検証部
３０９  出力部
５００  階層情報
７００  相関テーブル
１２００  ＨＬＢリスト
ＮＬ，ＮＬ１〜ＮＬ４  ネットリスト
【図１】
2010146277.tif 000003
【図２】
2010146277.tif 000004
【図３】
2010146277.tif 000005
【図４】
2010146277.tif 000006
【図５】
2010146277.tif 000007
【図６】
2010146277.tif 000008
【図７】
2010146277.tif 000009
【図８】
2010146277.tif 000010
【図９】
2010146277.tif 000011
【図１０】
2010146277.tif 000012
【図１１】
2010146277.tif 000013
【図１２】
2010146277.tif 000014
【図１３】
2010146277.tif 000015
【図１４】
2010146277.tif 000016
【図１５】
2010146277.tif 000017
【図１６】
2010146277.tif 000018
【図１７】
2010146277.tif 000019
【図１８】
2010146277.tif 000020
【図１９】
2010146277.tif 000021
【図２０】
2010146277.tif 000022