(57)【要約】  検証支援装置（４００）は、下位階層のモジュールの更新日時とその上位階層のモジュールの更新日時を比較して、下位階層のモジュールの更新日時の方が新しい場合は、上位階層のモジュールの更新日時を下位階層のモジュールの更新日時に変更する。検証支援装置（４００）は、現回路（１００ｂ）のモジュールごとに、更新日時と検証日時を比較する。更新日時の方が新しい場合、検証支援装置（４００）は、更新後に検証が実行されていないことになるため、更新日時の方が新しいモジュールをチェック対象に決定する。そして、検証支援装置（４００）は、同一モジュールについて、現回路（１００ｂ）のチェック対象と旧回路（１００ａ）のモジュールとを比較して、差分を抽出する。
2013175559.tif 000002
【特許請求の範囲】
【請求項１】
階層化されたモジュール群により構成される検証対象回路の回路情報を取得し、
取得された前記回路情報のモジュール群のうち最上位階層以外のいずれかのモジュールの更新日時が、前記いずれかのモジュールの上位階層のモジュールの更新日時よりも新しい日時であるか否かを判断し、
新しい日時であると判断された場合、前記上位階層のモジュールの更新日時を前記いずれかのモジュールの更新日時に変更し、
変更された結果、前記モジュール群のうち、検証を実行した検証日時よりも更新日時が新しいモジュールを、検証候補モジュールに決定する、
処理をコンピュータに実行させることを特徴とする検証支援プログラム。
【請求項２】
決定された前記検証候補モジュールと同一識別情報である比較対象モジュールを、前記検証対象回路の旧回路情報において階層化された旧モジュール群から特定し、
前記検証候補モジュールと特定された前記比較対象モジュールとの差分を抽出する、
処理を前記コンピュータに実行させることを特徴とする請求項１に記載の検証支援プログラム。
【請求項３】
前記検証候補モジュールを、前記検証候補モジュール内の回路間の接続関係を示す第１の文字列化情報に変換するとともに、前記比較対象モジュールを、前記比較対象モジュール内の回路間の接続関係を示す第２の文字列化情報に変換する処理を前記コンピュータに実行させ、
前記差分を抽出する処理は、
変換された前記第１の文字列化情報と前記第２の文字列化情報との差分を抽出することを特徴とする請求項２に記載の検証支援プログラム。
【請求項４】
前記差分が抽出された前記検証候補モジュールおよび前記比較対象モジュールをそれぞれ論理圧縮する処理を前記コンピュータに実行させ、
前記差分を抽出する処理は、
前記論理圧縮後の検証候補モジュールと前記論理圧縮後の比較対象モジュールとの差分を抽出することを特徴とする請求項２に記載の検証支援プログラム。
【請求項５】
前記差分が抽出された前記検証候補モジュールおよび前記比較対象モジュールをそれぞれ論理圧縮する処理を前記コンピュータに実行させ、
前記文字列化情報に変換する処理は、
前記論理圧縮後の検証候補モジュールを、前記論理圧縮後の検証候補モジュール内の回路間の接続関係を示す第３の文字列化情報に変換するとともに、前記論理圧縮後の比較対象モジュールを、前記論理圧縮後の比較対象モジュール内の回路間の接続関係を示す第４の文字列化情報に変換し、
前記差分を抽出する処理は、
変換された前記第３の文字列化情報と前記第４の文字列化情報との差分を抽出することを特徴とする請求項３に記載の検証支援プログラム。
【請求項６】
前記差分に基づいて前記回路情報における前記検証対象回路の出力側にトレースすることにより、前記回路情報における前記検証対象回路の検証対象箇所を設定する処理を前記コンピュータに実行させることを特徴とする請求項２〜５のいずれか一つに記載の検証支援プログラム。
【請求項７】
前記旧回路情報に基づく前記検証対象回路の検証結果から、設定された前記検証対象箇所に該当する情報を削除する処理を前記コンピュータに実行させることを特徴とする請求項６に記載の検証支援プログラム。
【請求項８】
前記検証対象箇所に基づく検証結果を、削除後の検証結果に追加する処理を前記コンピュータに実行させることを特徴とする請求項７に記載の検証支援プログラム。
【請求項９】
コンピュータが、
階層化されたモジュール群により構成される検証対象回路の回路情報を取得し、
取得された前記回路情報のモジュール群のうち最上位階層以外のいずれかのモジュールの更新日時が、前記いずれかのモジュールの上位階層のモジュールの更新日時よりも新しい日時であるか否かを判断し、
新しい日時であると判断された場合、前記上位階層のモジュールの更新日時を前記いずれかのモジュールの更新日時に変更し、
変更された結果、前記モジュール群のうち、検証を実行した検証日時よりも更新日時が新しいモジュールを、検証候補モジュールに決定する、
処理を実行することを特徴とする検証支援方法。
【請求項１０】
階層化されたモジュール群により構成される検証対象回路の回路情報を取得する取得部と、
前記取得部によって取得された回路情報のモジュール群のうち最上位階層以外のいずれかのモジュールの更新日時が、前記いずれかのモジュールの上位階層のモジュールの更新日時よりも新しい日時であるか否かを判断する判断部と、
前記判断部によって新しい日時であると判断された場合、前記上位階層のモジュールの更新日時を前記いずれかのモジュールの更新日時に変更する変更部と、
前記変更部によって変更された結果、前記モジュール群のうち、検証を実行した検証日時よりも更新日時が新しいモジュールを、検証候補モジュールに決定する決定部と、
を有することを特徴とする検証支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検証支援プログラム、検証支援方法、および検証支援装置に関する。
【背景技術】
【０００２】
マクロの変更日時と検証日時とを比較し、変更日時の方が新しいマクロについて、マクロの内部およびマクロに接続しているネットの検証を再実行する従来技術が開示されている。また、過去に表示した物理検証エラーと再度物理検証したエラーとを比較して、差分のあった箇所のみを表示する従来技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平９−１５３０７２号公報
【特許文献２】特開平３−２５０２６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
開発においては、下位階層のモジュールを組み上げて上位階層を構築するため、上位階層のモジュールには下位階層のモジュールが含まれることになる。そして、下位階層のモジュールに変更が生じた場合、下位階層のモジュールの変更が上位階層のモジュールの接続関係や動作に影響を与える場合がある。したがって、下位階層のモジュールのみ検証をおこなうと検証漏れが発生することがある。【０００５】
本発明は、検証精度の向上を図ることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、階層化されたモジュール群により構成される検証対象回路の回路情報を取得し、取得された回路情報のモジュール群のうち最上位階層以外のいずれかのモジュールの更新日時が、前記いずれかのモジュールの上位階層のモジュールの更新日時よりも新しい日時であるか否かを判断し、新しい日時であると判断された場合、前記上位階層のモジュールの更新日時を前記いずれかのモジュールの更新日時に変更し、変更された結果、前記モジュール群のうち、検証を実行した検証日時よりも更新日時が新しいモジュールを、検証候補モジュールに決定する検証支援プログラム、検証支援方法、および検証支援装置が提案される。
【発明の効果】
【０００７】
本発明の一側面によれば、検証効率の向上を図ることができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施の形態にかかる検証支援装置による検証支援例を示す説明図である。
【図２】図２は、検証結果の修正例を示す説明図（その１）である。
【図３】図３は、検証結果の修正例を示す説明図（その２）である。
【図４】図４は、検証支援装置のハードウェア構成例を示すブロック図である。
【図５】図５は、実施の形態１にかかる検証支援装置４００の機能的構成例を示すブロック図である。
【図６】図６は、旧回路１００ａの一例を示す回路図である。
【図７】図７は、現回路１００ｂの一例を示す回路図である。
【図８】図８は、旧回路１００ａの回路情報となるデータ構造例を示す説明図である。
【図９】図９は、現回路１００ｂの回路情報となるデータ構造例を示す説明図である。
【図１０】図１０は、旧回路１００ａの回路情報８００ａのマクロ情報Ｍ１のデータ構造例を示す説明図である。
【図１１】図１１は、現回路１００ｂの回路情報８００ｂのマクロ情報Ｍ１のデータ構造例を示す説明図である。
【図１２】図１２は、旧回路１００ａの回路情報８００ａのマクロ情報Ｍ２のデータ構造例を示す説明図である。
【図１３】図１３は、現回路１００ｂの回路情報８００ｂのマクロ情報Ｍ２のデータ構造例を示す説明図である。
【図１４】図１４は、旧回路１００ａおよび現回路１００ｂの回路情報８００ａ，８００ｂのマクロ情報Ｍ３のデータ構造例を示す説明図である。
【図１５】図１５は、更新日時の変更例を示す説明図である。
【図１６】図１６は、旧回路１００ａの文字列化情報の一例を示す説明図である。
【図１７】図１７は、現回路１００ｂの文字列化情報の一例を示す説明図である。
【図１８】図１８は、文字列化情報Ｌ１ａと文字列化情報Ｌ１ｂとを用いた抽出例を示す説明図である。
【図１９】図１９は、文字列化情報Ｌ２ａと文字列化情報Ｌ２ｂとを用いた抽出例を示す説明図である。
【図２０】図２０は、現回路１００ｂでの検証対象箇所を示す回路図である。
【図２１】図２１は、実施の形態１にかかる検証支援装置４００による検証支援処理手順例を示すフローチャートである。
【図２２】図２２は、図２１に示した検証候補抽出処理（ステップＳ２１０１）の詳細な処理手順例を示すフローチャートである。
【図２３】図２３は、図２１に示した文字列化処理（ステップＳ２１０２）の詳細な処理手順例を示すフローチャートである。
【図２４】図２４は、図２１に示した差分抽出処理（ステップＳ２１０３）の詳細な処理手順例を示すフローチャートである。
【図２５】図２５は、図２１に示した検証対象箇所設定処理（ステップＳ２１０４）の詳細な処理手順例を示すフローチャートである。
【図２６】図２６は、図２１に示した旧回路１００ａの検証結果修正処理（ステップＳ２１０５）の詳細な処理手順例を示すフローチャートである。
【図２７】図２７は、図２１に示した現回路１００ｂの検証結果生成処理（ステップＳ２１０６）の詳細な処理手順例を示すフローチャートである。
【図２８】図２８は、実施の形態２にかかる検証支援装置４００の機能的構成例を示すブロック図である。
【図２９】図２９は、論理圧縮例を示す説明図である。
【図３０】図３０は、旧回路１００ａの第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」の論理圧縮例を示す説明図である。
【図３１】図３１は、現回路１００ｂの第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」の論理圧縮例を示す説明図である。
【図３２】図３２は、現回路１００ｂの第２階層の第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」の論理圧縮例を示す説明図である。
【図３３】図３３は、旧回路１００ａの文字列化情報の一例を示す説明図である。
【図３４】図３４は、現回路１００ｂの文字列化情報の一例を示す説明図である。
【図３５】図３５は、文字列化情報Ｌ３ａと文字列化情報Ｌ３ｂとを用いた抽出例を示す説明図である。
【図３６】図３６は、文字列化情報Ｌ４ａと文字列化情報Ｌ４ｂとを用いた抽出例を示す説明図である。
【図３７】図３７は、実施の形態２にかかる検証支援装置４００による検証支援処理手順例を示すフローチャートである。
【図３８】図３８は、図３７に示した第２の文字列化処理（ステップＳ３７０５）の詳細な処理手順例を示すフローチャートである。
【図３９】図３９は、図３７に示した第２の差分抽出処理（ステップＳ３７０６）の詳細な処理手順例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、この発明にかかる検証支援プログラム、検証支援方法、および検証支援装置の実施の形態を詳細に説明する。検証対象回路は、階層化されたモジュール群で構成された回路情報により表現される。モジュール群の下位階層から上位階層に組み上げることにより、検証対象回路の回路情報が構築される。
【００１０】
以下、本実施の形態では、上位階層である第１階層とその下位階層である第２階層により構成された検証対象回路を例に挙げて説明する。なお、検証は、検証支援装置で実行してもよく、検証支援装置外のシミュレータで実行してもよい。また、本実施の形態では、検証対象回路の現在の構造を示す現回路と、現回路よりも古い構造を示す旧回路を例に挙げて説明するが、両回路の更新に差があれば、一方が現回路である必要はない。
【００１１】
＜検証支援例＞
図１は、本実施の形態にかかる検証支援装置による検証支援例を示す説明図である。図１では同一の検証対象回路１００についての旧回路１００ａと現回路１００ｂとを示している。図１において、各階層における「更新日時」とは、その階層のモジュールが更新された日時である。また、各階層における「検証日時」とは、その階層のモジュールの検証が実行された日時である。図１では、旧回路１００ａは、「２０１１／０７／１０」に更新され、「２０１１／０８／１０」に検証が実行された検証対象回路１００である。また、現回路１００ｂは、旧回路１００ａの第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」を「２０１１／０８／２０」に更新し、旧回路１００ａの第２階層の第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」を「２０１１／０９／１０」に更新した検証対象回路１００である。旧回路１００ａの第２階層の第２モジュール「ｌｏｗ２：ＬＯＷ＿Ｂ」は、更新されていない。
【００１２】
（１）検証支援装置は、下位階層のモジュールの更新日時とその上位階層のモジュールの更新日時を比較して、下位階層のモジュールの更新日時の方が新しい場合は、上位階層のモジュールの更新日時を下位階層のモジュールの更新日時に変更する。図１では、現回路１００ｂにおいて、第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」の更新日時「２０１１／０８／２０」が、第２階層の第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」の更新日時「２０１１／０９／１０」に変更される。下位階層のモジュールに変更が生じた場合、下位階層のモジュールの変更が組み上げ先となる上位階層のモジュールの接続関係や動作に影響を与える場合がある。
【００１３】
したがって、上位階層のモジュールの更新日時を下位階層のモジュールに変更することにより、組み上げ先となる上位階層のモジュールも実質的に更新されたことにする。これにより、下位階層のモジュールのみ検証をおこなう場合に発生する検証漏れを抑制することができる。
【００１４】
（２）つぎに、検証支援装置は、現回路１００ｂのモジュールごとに、更新日時と検証日時を比較する。更新日時の方が新しい場合、検証支援装置は、更新後に検証が実行されていないことになるため、更新日時の方が新しいモジュールをチェック対象に決定する。図１では、第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」と第２階層の第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」がチェック対象となる。第２階層の第２モジュール「ｌｏｗ２：ＬＯＷ＿Ｂ」はチェック対象外となる。これにより、上記（１）によるチェック対象の拡大を抑制することができ、検証しなくても影響のないモジュールをチェック対象外とすることができる。
【００１５】
（３）そして、検証支援装置は、同一モジュールについて、現回路１００ｂのチェック対象と旧回路１００ａのモジュールとを比較して、差分を抽出する。図１では、第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」と第２階層の第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」とが、現回路１００ｂと旧回路１００ａとの間で比較される。第２階層の第２モジュール「ｌｏｗ２：ＬＯＷ＿Ｂ」はチェック対象外であるため比較されない。これにより、無駄な比較処理を防止することができ、検証支援処理の高速化を図ることができる。そして、検証支援装置は、チェック対象のモジュールごとに、差分から後段にトレースした箇所を検証対象箇所とする。これにより、検証対象箇所について検証が実行される。
【００１６】
図２は、検証結果の修正例を示す説明図（その１）である。検証結果Ｖ１は、修正前の検証結果である。検証結果Ｖ１は、旧回路１００ａでの検証結果である。検証結果は、一例として、マクロ名項目、検証種別項目、検証対象箇所項目、検証内容項目を有し、マクロごとに各項目の値が格納される電子データである。マクロ名項目には、モジュールを示すマクロのマクロ名が格納される。マクロ名とは、モジュールを特定する名称である。たとえば、モジュール「ｔｏｐｍｏｄ：ＴＯＰ」の場合、マクロ名として「ｔｏｐｍｏｄ：ＴＯＰ」が格納される。
【００１７】
検証種別項目には、検証種別が格納される。検証種別は、検証の種類を示す。検証種別には、「形状」、「負荷」、「論理」がある。「形状」は形状検証を意味しており、形状検証では接続元回路と接続先回路との接続の正しさが検証される。「負荷」は負荷検証を意味しており、負荷検証では接続元回路から接続先回路に対する負荷が許容範囲内にあるかが検証される。「論理」は論理検証を意味しており、論理検証では回路から出力される論理値の正しさが検証される。検証対象箇所項目には、検証対象箇所となる回路と端子とを組み合わせた文字列が格納される。図２では、「．」の手前の文字列が回路名を指し、「．」以降の文字列が端子名を指す。たとえば、「ｂｕｆ１．Ａ」は、回路ｂｕｆ１の端子Ａを意味する。検証内容項目には、検証内容が格納される。検証内容には、検証対象箇所における検証種別での検証ルールを示す文字列が格納される。
【００１８】
検証結果Ｖ１０は、旧回路１００ａでの検証結果Ｖ１から、図１で得られた差分からトレースされた検証対象箇所を除いた検証結果である。すなわち、図１で得られた検証対象箇所については、再検証が必要であるため、検証支援装置は、検証結果Ｖ１から削除する。一方、図１で得られた検証対象箇所以外の箇所については、検証支援装置は、削除せずに流用する。これにより、検証作業の効率化を図ることができる。
【００１９】
図３は、検証結果の修正例を示す説明図（その２）である。検証結果Ｖ２は、削除後の検証結果Ｖ１０に、図１で得られた検証対象箇所の検証で得られたレコードＲを追加した検証結果Ｖ２である。これにより、現回路１００ｂの部分的な検証結果であるレコードＲを検証結果Ｖ１０に反映することで、検証支援装置は、現回路１００ｂ全体の検証結果Ｖ２を得ることができる。
【００２０】
＜検証支援装置のハードウェア構成例＞
図４は、検証支援装置のハードウェア構成例を示すブロック図である。図４において、検証支援装置４００は、プロセッサ４０１、記憶装置４０２、入力装置４０３、出力装置４０４、および通信装置４０５が、バス４０６に接続されて構成されるコンピュータである。
【００２１】
プロセッサ４０１は、検証支援装置４００の全体の制御を司る。また、プロセッサ４０１は、記憶装置４０２に記憶されている各種プログラム（ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や本実施の形態の検証支援プログラム）を実行することで、記憶装置４０２内のデータを読み出したり、実行結果となるデータを記憶装置４０２に書き込んだりする。
【００２２】
記憶装置４０２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュメモリ、磁気ディスクドライブなどが採用される。また、記憶装置４０２は、プロセッサ４０１のワークエリアになる。また、記憶装置４０２は、各種プログラム（ＯＳや本実施の形態の検証支援プログラム）や各種データ（各プログラムの実行により得られたデータを含む）を記憶する。
【００２３】
入力装置４０３は、キーボード、マウス、タッチパネルなどユーザの操作により、各種データの入力をおこなうインターフェースである。出力装置４０４は、プロセッサ４０１の指示により、データを出力するインターフェースである。出力装置４０４には、ディスプレイやプリンタが挙げられる。通信装置４０５は、ネットワークを介して外部からデータを受信したり、外部にデータを送信したりするインターフェースである。
【００２４】
（実施の形態１）
＜検証支援装置４００の機能的構成例＞
図５は、実施の形態１にかかる検証支援装置４００の機能的構成例を示すブロック図である。検証支援装置４００は、取得部５０１と、判断部５０２と、変更部５０３と、決定部５０４と、特定部５０５と、変換部５０６と、抽出部５０７と、設定部５０８と、削除部５０９と、追加部５１０と、を有する。取得部５０１、判断部５０２、変更部５０３、決定部５０４、特定部５０５、変換部５０６、抽出部５０７、設定部５０８、削除部５０９、および追加部５１０は、具体的には、たとえば、図４に示した記憶装置４０２に記憶されたプログラムをプロセッサ４０１に実行させることにより、その機能を実現する。
【００２５】
取得部５０１は、階層化されたモジュール群により構成される検証対象回路１００の回路情報を取得する。具体的には、たとえば、取得部５０１は、記憶装置４０２から読み出したり、入力装置からの入力により受け付けたり、通信装置から受信することにより、回路情報を取得する。また、取得部５０１は、図１に示した旧回路１００ａの回路情報や現回路１００ｂの回路情報を取得する。ここで、回路情報について具体的に説明する。
【００２６】
図６は、旧回路１００ａの一例を示す回路図である。また、図７は、現回路１００ｂの一例を示す回路図である。旧回路１００ａおよび現回路１００ｂの第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」は、入力端子ＩＮ１〜ＩＮ４、出力端子ＯＵＴ１，ＯＵＴ２、バッファｂｕｆ１：ＢＵＦ、およびマクロｍａ４：ＭＡＣ＿Ｃを有する。現回路１００ｂの第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」には、入力端子ＩＮ５およびインバータｉｎｖ４：ＩＮＶが存在するが、旧回路１００ａの第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」には、存在しない。
【００２７】
旧回路１００ａおよび現回路１００ｂの第２階層の第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」は、入力端子Ｉ１，Ｉ２、出力端子Ｏ１，Ｏ２、ＮＡＮＤ回路ｎａｎｄ１：ＮＡＮＤ、マクロｍａ１：ＭＡＣ＿Ａ、およびマクロｍａ２：ＭＡＣ＿Ａを有する。現回路１００ｂの第２階層の第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」には、インバータｉｎｖ１：ＩＮＶ〜ｉｎｖ３：ＩＮＶおよびバッファｂｕｆ２：ＢＵＦが存在するが、旧回路１００ａの第２階層の第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」には、存在しない。
【００２８】
旧回路１００ａおよび現回路１００ｂの第２階層の第２モジュール「ｌｏｗ２：ＬＯＷ＿Ｂ」は、入力端子Ｉ１，Ｉ２、出力端子Ｏ１、ＮＡＮＤ回路ｎａｎｄ２：ＮＡＮＤ、およびマクロｍａ３：ＭＡＣ＿Ｂを有する。第２階層の第２モジュール「ｌｏｗ２：ＬＯＷ＿Ｂ」は、旧回路１００ａと現回路１００ｂとで同一構成である。
【００２９】
図８は、旧回路１００ａの回路情報となるデータ構造例を示す説明図である。また、図９は、現回路１００ｂの回路情報となるデータ構造例を示す説明図である。図８および図９において、回路情報８００ａ，８００ｂは、マクロＮｏ．項目と、階層項目と、マクロ名項目と、上位リンク項目と、更新日時項目と、検証日時項目と、マクロ情報項目と、検証結果項目と、を有する。回路情報８００ａ，８００ｂには、マクロとなるモジュールごとに各項目の値が格納される。
【００３０】
マクロＮｏ．項目には、マクロＮｏ．が格納される。マクロＮｏ．とは、マクロを一意に特定する識別情報である。階層項目には、階層番号が格納される。階層番号とは、検証対象回路１００を構成するモジュールの階層を特定する番号である。マクロ名項目には、マクロ名が格納される。マクロ名とは、モジュールを特定する名称である。たとえば、モジュール「ｔｏｐｍｏｄ：ＴＯＰ」の場合、マクロ名として「ｔｏｐｍｏｄ：ＴＯＰ」が格納される。
【００３１】
上位リンク項目には、上位リンクが格納される。上位リンクとは、そのマクロの上位階層の階層番号である。たとえば、マクロＮｏ．が「２」のレコードにおいて、第２階層の第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」が組み込まれる上位階層は第１階層であるため、上位リンクとして「１」が格納される。最上位階層、すなわち、第１階層のモジュールについては、上位階層のマクロが存在しないため、第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」を示すマクロＮｏ．が「１」のレコードでは、上位リンクとして「−１」が格納される。
【００３２】
更新日時項目には、更新日時が格納される。回路情報８００ａ，８００ｂの更新処理が検証支援装置４００で実行できる場合には、検証支援装置４００が、更新されたマクロに対して、更新日時を更新する。一方、回路情報８００ａ，８００ｂの更新処理が外部の装置で実行される場合には、検証支援装置４００が、外部の装置から更新日時を取得して、取得した更新日時で更新する。また、検証支援装置４００は、検証支援装置４００の入力装置をユーザが操作することにより、更新日時を更新してもよい。
【００３３】
検証日時項目には、検証が実行された検証日時が格納される。回路情報８００ａ，８００ｂの検証処理が検証支援装置４００で実行できる場合には、検証支援装置４００が、検証されたマクロに対して、検証日時を検証する。一方、回路情報８００ａ，８００ｂの検証処理が外部の装置で実行される場合には、検証支援装置４００が、外部の装置から検証日時を取得して、取得した検証日時で検証する。また、検証支援装置４００は、検証支援装置４００の入力装置をユーザが操作することにより、検証日時を検証してもよい。
【００３４】
マクロ情報項目には、マクロ情報が格納される。マクロ情報とは、マクロの構造を特定する情報であり、たとえば、マクロの内部を構成する回路やマクロとその外部との接続関係を示す情報が含まれる。マクロ情報については、図１０〜図１４で後述する。検証結果項目には、検証結果または検証結果へのポインタが格納される。本例では、図２および図３に示した検証結果Ｖ１または検証結果Ｖ１へのポインタが格納される。
【００３５】
図１０は、旧回路１００ａの回路情報８００ａのマクロ情報Ｍ１のデータ構造例を示す説明図である。図１１は、現回路１００ｂの回路情報８００ｂのマクロ情報Ｍ１のデータ構造例を示す説明図である。図１２は、旧回路１００ａの回路情報８００ａのマクロ情報Ｍ２のデータ構造例を示す説明図である。図１３は、現回路１００ｂの回路情報８００ｂのマクロ情報Ｍ２のデータ構造例を示す説明図である。図１４は、旧回路１００ａおよび現回路１００ｂの回路情報８００ａ，８００ｂのマクロ情報Ｍ３のデータ構造例を示す説明図である。
【００３６】
図１０〜図１４において、マクロ情報Ｍ１〜Ｍ３は、端子Ｎｏ．項目と、自マクロ情報項目と、接続先情報項目と、を有し、項目ごとに値が格納される。端子Ｎｏ．項目には、端子Ｎｏ．が格納される。端子Ｎｏ．とは、自マクロ情報および下位マクロ情報で特定される端子に割当てられる番号である。自マクロ情報項目には、マクロ情報により特定されるマクロ内の端子の情報が格納される。具体的には、自マクロ情報項目は、ＩＯ属性項目と、ＩＯ端子項目と、端子リンク項目と、を有する。ＩＯ属性項目には、ＩＯ属性が格納される。ＩＯ属性とは、端子Ｎｏ．で特定されるＩＯ端子の属性を示す情報が格納される。ＩＯ端子とは、マクロに設けられた端子である。たとえば、ＩＯ端子が入力端子であれば「ＩＮ」、出力端子であれば「ＯＵＴ」が格納される。ＩＯ端子項目には、ＩＯ端子名が格納される。
【００３７】
端子リンク項目には、端子リンクが格納される。端子リンクとは、接続先情報における、リンク先となる端子の端子Ｎｏ．である。図６の旧回路１００ａの回路情報において、入力端子ＩＮ２は、バッファｂｕｆ１：ＢＵＦの入力端子ｂｕｆ１．Ａに接続される。図１０の旧回路１００ａのマクロ情報Ｍ１では、端子Ｎｏ．「２」の入力端子「ＩＮ２」の端子リンクは「５」である。したがって、入力端子「ＩＮ２」は、接続先情報において、端子Ｎｏ．「５」のレコードの「ｂｕｆ１：ＢＵＦ」、ＩＯ属性「ＩＮ」、ＩＯ端子「Ａ」により特定されるバッファｂｕｆ１：ＢＵＦの入力端子ｂｕｆ１．Ａに接続されることがわかる。
【００３８】
また、接続先情報項目には、自マクロ情報で特定されるマクロの各ＩＯ端子の接続先を示す情報が格納される。具体的には、接続先情報項目は、接続先項目と、ＩＯ属性項目と、ＩＯ端子項目と、端子リンク項目と、を有する。接続先項目には、接続先となるマクロ名が格納される。接続先の接続相手は、自マクロのほか、接続先項目内のマクロも該当する。ＩＯ属性項目には、ＩＯ属性が格納される。ＩＯ属性とは、端子Ｎｏ．で特定されるＩＯ端子の属性を示す情報が格納される。ＩＯ端子とは、マクロに設けられた端子である。たとえば、ＩＯ端子が入力端子であれば「ＩＮ」、出力端子であれば「ＯＵＴ」が格納される。ＩＯ端子項目には、ＩＯ端子名が格納される。
【００３９】
端子リンク項目には、端子リンクが格納される。端子リンクとは、自マクロ情報における、リンク先となる端子の端子Ｎｏ．である。端子リンクが負値の場合は、その絶対値が自マクロ情報のＩＯ端子の端子Ｎｏ．を示す。端子リンクが正値の場合は、接続先情報のＩＯ端子の端子Ｎｏ．を示す。
【００４０】
図６の旧回路１００ａにおいて、バッファｂｕｆ１：ＢＵＦの入力端子ｂｕｆ１．Ａは、入力端子ＩＮ２に接続される。図１０の旧回路１００ａのマクロ情報Ｍ１では、端子Ｎｏ．「５」の入力端子「ｂｕｆ１．Ａ」の端子リンクは「−２」である。したがって、入力端子「ｂｕｆ１．Ａ」は、自マクロ情報において、端子Ｎｏ．「２」のレコードのＩＯ端子「ＩＮ２」により特定される入力端子ＩＮ２に接続されることがわかる。
【００４１】
また、図６の旧回路１００ａにおいて、バッファｂｕｆ１：ＢＵＦの出力端子ｂｕｆ１．Ｘは、第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」の入力端子Ｉ２に接続される。図１０の旧回路１００ａのマクロ情報Ｍ１では、端子Ｎｏ．「６」の出力端子「ｂｕｆ１．Ｘ」の端子リンクは「２」である。したがって、出力端子「ｂｕｆ１．Ｘ」は、接続先情報において、端子Ｎｏ．「２」のレコードの第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」のＩＯ端子「Ｉ２」により特定される入力端子Ｉ２に接続されることがわかる。図５に戻る。
【００４２】
判断部５０２は、取得部５０１によって取得された回路情報のモジュール群のうち最上位階層以外のいずれかのモジュールの更新日時が、いずれかのモジュールの上位階層のモジュールの更新日時よりも新しい日時であるか否かを判断する。最上位階層とは、第１階層である。図９の現回路１００ｂにおいて、判断部５０２は、第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」の更新日時「２０１１．０８．２０」と第２階層の第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」の更新日時「２０１１．０９．１０」とを比較する。そして、判断部５０２は、第２階層の第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」の更新日時「２０１１．０９．１０」の方が新しい日時か否かを判断する。
【００４３】
同様に、判断部５０２は、第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」の更新日時「２０１１．０８．２０」と第２階層の第２モジュール「ｌｏｗ２：ＬＯＷ＿Ｂ」の更新日時「２０１１．０７．１０」とを比較する。そして、判断部５０２は、第２階層の第２モジュール「ｌｏｗ２：ＬＯＷ＿Ｂ」の更新日時「２０１１．０７．１０」の方が新しい日時か否かを判断する。
【００４４】
変更部５０３は、判断部５０２によって新しい日時であると判断された場合、上位階層のモジュールの更新日時をいずれかのモジュールの更新日時に変更する。具体的には、たとえば、第２階層の第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」の更新日時「２０１１．０９．１０」が第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」の更新日時「２０１１．０８．２０」よりも新しい日時である。したがって、変更部５０３は、第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」の更新日時「２０１１．０８．２０」を、第２階層の第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」の更新日時「２０１１．０９．１０」に変更する。
【００４５】
下位階層のモジュールに変更が生じた場合、下位階層のモジュールの変更が組み上げ先となる上位階層のモジュールの接続関係や動作に影響を与える場合がある。したがって、上位階層のモジュールの更新日時を下位階層のモジュールに変更することにより、組み上げ先となる上位階層のモジュールも実質的に更新されたことにする。これにより、下位階層のモジュールのみ検証をおこなう場合に発生する検証漏れを抑制することができる。
【００４６】
また、第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」の更新日時「２０１１．０８．２０」と第２階層の第２モジュール「ｌｏｗ２：ＬＯＷ＿Ｂ」の更新日時「２０１１．０７．１０」とでは、第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」の更新日時「２０１１．０８．２０」の方が新しい日時である。したがって、第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」の更新日時「２０１１．０８．２０」は、第２階層の第２モジュール「ｌｏｗ２：ＬＯＷ＿Ｂ」の更新日時「２０１１．０７．１０」に変更されない。
【００４７】
図１５は、更新日時の変更例を示す説明図である。現回路１００ｂの回路情報８００ｂにおいて、マクロＮｏ．「１」のレコードの更新日時が、「２０１１．０８．２０」から「２０１１．０９．１０」に変更される。図５に戻る。
【００４８】
決定部５０４は、変更部５０３によって変更された結果、モジュール群のうち、検証を実行した検証日時よりも更新日時が新しいモジュールを、検証候補モジュールに決定する。具体的には、たとえば、決定部５０４は、現回路１００ｂの回路情報８００ｂにおいて、モジュールごとに、更新日時と検証日時とを比較する。そして、決定部５０４は、検証日時よりも更新日時が新しいモジュールを、検証候補モジュールに決定する。検証候補モジュールとは、図１のチェック対象となったモジュールである。具体的には、たとえば、決定部５０４は、現回路１００ｂの回路情報８００ｂにおいて検証候補モジュールとなるレコードに検証候補であることを示すフラグを設定する。本例では、現回路１００ｂにおける第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」と第２階層の第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」が、検証候補モジュールとなる。
【００４９】
一方、第２階層の第２モジュール「ｌｏｗ２：ＬＯＷ＿Ｂ」は検証対象外となる。これにより、上位階層の更新日時の変更により拡大した検証候補を抑制することができ、検証しなくても影響のないモジュールを検証対象外とすることができる。
【００５０】
特定部５０５は、決定部５０４によって決定された検証候補モジュールと同一識別情報である比較対象モジュールを、検証対象回路１００の旧回路情報において階層化された旧モジュール群から特定する。旧回路情報とは、旧回路１００ａの回路情報８００ａである。特定部５０５は、具体的には、たとえば、現回路１００ｂ内の検証候補モジュール「ｔｏｐｍｏｄ：ＴＯＰ」と同一識別情報、すなわち、同一マクロＮｏ．「１」である旧回路１００ａの第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」を比較対象モジュールとして特定する。同様に、特定部５０５は、現回路１００ｂ内の検証候補モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」と同一識別情報、すなわち、同一マクロＮｏ．「２」である旧回路１００ａの第２階層の第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」を比較対象モジュールとして特定する。
【００５１】
抽出部５０７は、検証候補モジュールと特定部５０５によって特定された比較対象モジュールとの差分を抽出する。具体的には、たとえば、抽出部５０７は、旧回路１００ａの回路情報８００ａと現回路１００ｂの回路情報８００ｂとを比較して、比較対象モジュールにはなくて、検証候補モジュールには存在する回路や、検証候補モジュールにはあるが比較対象モジュールにはない回路を、差分として抽出する。差分を抽出する場合、回路情報同士を比較すると演算処理に時間がかかるため、変換部５０６による文字列化を実行するのが好ましい。
【００５２】
変換部５０６は、検証候補モジュールを、検証候補モジュール内の回路間の接続関係を示す第１の文字列化情報に変換するとともに、比較対象モジュールを、比較対象モジュール内の回路間の接続関係を示す第２の文字列化情報に変換する。ここで文字列化情報への変換である文字列化について説明する。文字列化は、図１０〜図１４に示したマクロ情報のうち、検証候補モジュールおよび比較対象モジュールに該当するマクロ情報を用いて実行される。
【００５３】
変換部５０６は、自マクロ情報のレコードごとに端子リンクを辿ることにより、接続先情報のレコードを特定する。また、変換部５０６は、接続先情報のレコードごとに端子リンクを辿ることにより、接続先情報のレコードを特定する。そして、リンク元の端子名とリンク先の端子名とを結合することにより、文字列化情報が生成される。
【００５４】
文字列化情報は、一例として「ａａａ．ｂｂｂ＿ｃｃｃ．ｄｄｄ」で表現される。「ａａａ」はリンク元であるドライバ側の回路のインスタンス名、「ｂｂｂ」はドライバ側の端子名、「ｃｃｃ」はリンク先であるレシーバ側の回路のインスタンス名、「ｄｄｄ」はリンク先の端子名である。
【００５５】
たとえば、図１１の現回路１００ｂのマクロ情報Ｍ１において、端子Ｎｏ．「１」の自マクロ情報は、「ｔｏｐｍｏｄ：ＴＯＰ」の入力端子ＩＮ１である。したがって、「ａａａ」に相当する文字列は、「ｔｏｐｍｏｄ：ＴＯＰ」のインスタンス名「ｔｏｐｍｏｄ」である。また、「ｂｂｂ」に相当する文字列は、「ｔｏｐｍｏｄ：ＴＯＰ」の「ＩＮ１」である。
【００５６】
また、端子リンクは「１」であるため、変換部５０６は、接続先情報における端子Ｎｏ．「１」の端子として、「ｌｏｗ１：ＬＯＷ＿Ａ」の入力端子Ｉ１を特定する。したがって、「ｃｃｃ」に相当する文字列は、「ｌｏｗ１：ＬＯＷ＿Ａ」のインスタンス名「ｌｏｗ１」である。また、「ｄｄｄ」に相当する文字列は、「ｌｏｗ１：ＬＯＷ＿Ａ」の「Ｉ１」である。これにより、文字列化データ「ｔｏｐｍｏｄ．ＩＮ１＿ｌｏｗ１．Ｉ１」が得られる。
【００５７】
また、図１１の現回路１００ｂのマクロ情報Ｍ１において、端子Ｎｏ．「２」の接続先情報は、「ｌｏｗ１：ＬＯＷ＿Ａ」の入力端子Ｉ２である。この場合、リンク先は、ドライバ側となるバッファｂｕｆ１：ＢＵＦであるため、文字列化は実行されない。すなわち、接続先情報において、ＩＯ属性が「ＩＮ」のレコードはドライバ側となるため選択されない。
【００５８】
また、図１１の現回路１００ｂのマクロ情報Ｍ１において、端子Ｎｏ．「３」の接続先情報は、「ｌｏｗ１：ＬＯＷ＿Ａ」の出力端子Ｏ１である。したがって、「ａａａ」に相当する文字列は、「ｌｏｗ１：ＬＯＷ＿Ａ」のインスタンス名「ｌｏｗ１」である。また、「ｂｂｂ」に相当する文字列は、「ｌｏｗ１：ＬＯＷ＿Ａ」の「Ｏ１」である。
【００５９】
また、端子リンクは「７」であるため、変換部５０６は、接続先情報における端子Ｎｏ．「７」の端子として、「ｍａ４：ＭＡＣ＿Ｃ」の入力端子Ａを特定する。したがって、「ｃｃｃ」に相当する文字列は、「ｍａ４：ＭＡＣ＿Ｃ」のインスタンス名「ｍａ４」である。また、「ｄｄｄ」に相当する文字列は、「ｍａ４：ＭＡＣ＿Ｃ」の「Ａ」である。これにより、文字列化データ「ｌｏｗ１．Ｏ１＿ｍａ４．Ａ」が得られる。
【００６０】
図１６は、旧回路１００ａの文字列化情報の一例を示す説明図である。図１６において、「ｔｏｐｍｏｄ：ＴＯＰ」の文字列化情報Ｌ１ａは、図１０のマクロ情報Ｍ１から変換された文字列化情報である。また、「ｌｏｗ１：ＬＯＷ＿Ａ」の文字列化情報Ｌ２ａは、図１２のマクロ情報Ｍ２から変換された文字列化情報である。
【００６１】
図１７は、現回路１００ｂの文字列化情報の一例を示す説明図である。図１７において、「ｔｏｐｍｏｄ：ＴＯＰ」の文字列化情報Ｌ１ｂは、図１１のマクロ情報Ｍ１から変換された文字列化情報である。また、「ｌｏｗ１：ＬＯＷ＿Ａ」の文字列化情報Ｌ２ｂは、図１３のマクロ情報Ｍ２から変換された文字列化情報である。図５に戻る。
【００６２】
変換部５０６により文字列化が実行された場合、抽出部５０７は、変換部５０６によって変換された第１の文字列化情報と第２の文字列化情報との差分を抽出する。具体的には、抽出部５０７は、同一モジュールにおいて、現回路１００ｂから得られた文字列化情報と旧回路１００ａから得られた文字列化情報を比較して差分を抽出する。
【００６３】
図１８は、文字列化情報Ｌ１ａと文字列化情報Ｌ１ｂとを用いた抽出例を示す説明図である。文字列化情報Ｌ１ｂのうち文字列化情報Ｌ１ａと相違する文字列化データは、「ｔｏｐｍｏｄ．ＩＮ５＿ｉｎｖ４．Ａ」および「ｉｎｖ４．Ｘ＿ｍａ４．Ｃ」である。したがって、抽出部５０７は、相違する文字列化データ「ｔｏｐｍｏｄ．ＩＮ５＿ｉｎｖ４．Ａ」および「ｉｎｖ４．Ｘ＿ｍａ４．Ｃ」のうち回路を示すインスタンス名「ｉｎｖ４」および「ｍａ４」を差分として抽出する。
【００６４】
図１９は、文字列化情報Ｌ２ａと文字列化情報Ｌ２ｂとを用いた抽出例を示す説明図である。文字列化情報Ｌ２ｂのうち文字列化情報Ｌ２ａと相違する文字列化データは、「ｎａｎｄ１．Ｘ＿ｉｎｖ１．Ａ」，「ｎａｎｄ１．Ｘ＿ｂｕｆ．Ａ」，「ｂｕｆ２．Ｘ＿ｉｎｖ３．Ａ」，「ｉｎｖ１．Ｘ＿ｉｎｖ２．Ａ」，「ｉｎｖ２．Ｘ＿ｍａ１．Ａ」，「ｉｎｖ３．Ｘ＿ｍａ２．Ａ」である。したがって、抽出部５０７は、これらの文字列化データのうち、回路を示すインスタンス名「ｎａｎｄ１」，「ｉｎｖ１」，「ｂｕｆ」，「ｂｕｆ２」，「ｉｎｖ３」，「ｉｎｖ２」，「ｍａ１」，および「ｍａ２」を差分として抽出する。図５に戻る。
【００６５】
設定部５０８は、抽出部５０７によって抽出された差分に基づいて回路情報における検証対象回路１００の出力側にトレースすることにより、回路情報における検証対象回路１００の検証対象箇所を設定する。具体的には、設定部５０８は、現回路１００ｂ内の差分となる回路から出力側、すなわち、信号の伝播方向にトレースすることにより、現回路１００ｂにおいて検証対象箇所を設定する。
【００６６】
図２０は、現回路１００ｂでの検証対象箇所を示す回路図である。図２０において、点線で囲まれた回路群が検証対象箇所である。検証対象箇所には、図１８および図１９で抽出された差分と、当該差分から出力側にトレースされた回路が含まれる。このように設定された検証対象箇所に限定して、再度検証をおこなうことにより、検証効率の向上を図ることができる。図５に戻る。
【００６７】
削除部５０９は、旧回路１００ａに基づく検証対象回路１００の検証結果から、設定部５０８によって設定された検証対象箇所に該当する検証情報を削除する。具体的には、たとえば、削除部５０９は、図２に示したように、旧回路１００ａの検証結果Ｖ１から、検証対象箇所を含むレコードを削除して、検証結果Ｖ１０とする。
【００６８】
追加部５１０は、検証対象箇所に基づく検証結果を、削除部５０９による削除後の検証結果に追加する。具体的には、たとえば、追加部５１０は、図３に示したように、削除後の検証結果Ｖ１０に、検証対象箇所に基づく検証結果Ｒを追加することにより、検証結果Ｖ２を生成する。
【００６９】
＜検証支援処理手順＞
図２１は、実施の形態１にかかる検証支援装置４００による検証支援処理手順例を示すフローチャートである。検証支援装置４００は、検証候補抽出処理（ステップＳ２１０１）、文字列化処理（ステップＳ２１０２）、差分抽出処理（ステップＳ２１０３）、検証対象箇所設定処理（ステップＳ２１０４）、旧回路１００ａの検証結果修正処理（ステップＳ２１０５）、現回路１００ｂの検証結果生成処理（ステップＳ２１０６）を実行する。
【００７０】
図２２は、図２１に示した検証候補抽出処理（ステップＳ２１０１）の詳細な処理手順例を示すフローチャートである。まず、検証支援装置４００は、階層番号のインデックスｉをｉ＝Ｎに設定する（ステップＳ２２０１）。Ｎは、現回路１００ｂの最下層の階層番号である。検証支援装置４００は、ｉ＝１であるか否か、すなわち、注目する階層が第１階層であるか否かを判断する（ステップＳ２２０２）。ｉ＝１でない場合（ステップＳ２２０２：Ｎｏ）、検証支援装置４００は、第ｉ階層において未選択モジュールがあるか否かを判断する（ステップＳ２２０３）。未選択モジュールがある場合（ステップＳ２２０３：Ｙｅｓ）、検証支援装置４００は、第ｉ階層の未選択モジュールを選択する（ステップＳ２２０４）。
【００７１】
そして、検証支援装置４００は、選択モジュールに対し第ｉ−１階層のモジュールがあるか否かを判断する（ステップＳ２２０５）。第ｉ−１階層のモジュールがない場合（ステップＳ２２０５：Ｎｏ）、ステップＳ２２０３に戻る。一方、第ｉ−１階層のモジュールがある場合（ステップＳ２２０５：Ｙｅｓ）、検証支援装置４００は、選択モジュールの更新日時が、第ｉ−１階層のモジュールの更新日時よりも新しいか否かを判断する（ステップＳ２２０６）。新しくない場合（ステップＳ２２０６：Ｎｏ）、ステップＳ２２０３に戻る。
【００７２】
一方、新しい場合（ステップＳ２２０６：Ｙｅｓ）、検証支援装置４００は、第ｉ−１階層のモジュールの更新日時を、選択モジュールの更新日時に変更する（ステップＳ２２０７）。そして、ステップＳ２２０３に戻る。ステップＳ２２０３において、第ｉ階層の未選択モジュールがない場合（ステップＳ２２０３：Ｎｏ）、検証支援装置４００は、ｉを１つデクリメントし（ステップＳ２２０８）、ステップＳ２２０２に戻る。ステップＳ２２０２において、ｉ＝１になった場合（ステップＳ２２０２：Ｙｅｓ）、検証支援装置４００は、現回路１００ｂのモジュール群から未抽出モジュールがあるか否かを判断する（ステップＳ２２０９）。
【００７３】
未抽出モジュールがある場合（ステップＳ２２０９：Ｙｅｓ）、検証支援装置４００は、未抽出モジュールを抽出する（ステップＳ２２１０）。そして、検証支援装置４００は、抽出モジュールにおいて更新日時が検証日時より新しいか否かを判断する（ステップＳ２２１１）。新しい場合（ステップＳ２２１１：Ｙｅｓ）、検証支援装置４００は、抽出モジュールを検証候補モジュールに決定して（ステップＳ２２１２）、ステップＳ２２０９に戻る。一方、新しくない場合（ステップＳ２２１１：Ｎｏ）、ステップＳ２２０９に戻る。ステップＳ２２０９において、未抽出モジュールがない場合（ステップＳ２２０９：Ｎｏ）、検証候補抽出処理（ステップＳ２１０１）が終了する。
【００７４】
図２３は、図２１に示した文字列化処理（ステップＳ２１０２）の詳細な処理手順例を示すフローチャートである。まず、検証支援装置４００は、検証候補モジュール群に未選択モジュールがあるか否かを判断する（ステップＳ２３０１）。未選択モジュールがある場合（ステップＳ２３０１：Ｙｅｓ）、検証支援装置４００は、未選択モジュールを選択する（ステップＳ２３０２）。そして、検証支援装置４００は、選択モジュールにおいて、未選択のドライバ側インスタンス名および端子名の組があるか否かを判断する（ステップＳ２３０３）。
【００７５】
未選択のドライバ側インスタンス名および端子名の組がある場合（ステップＳ２３０３：Ｙｅｓ）、検証支援装置４００は、未選択のドライバ側インスタンス名および端子名の組を選択する（ステップＳ２３０４）。そして、検証支援装置４００は、選択したドライバ側インスタンス名および端子名の組の端子リンクをトレースして（ステップＳ２３０５）、レシーバ側インスタンス名および端子名の組を取得する（ステップＳ２３０６）。
【００７６】
このあと、検証支援装置４００は、選択したドライバ側インスタンス名および端子名の組と取得したレシーバ側インスタンス名および端子名の組で文字列化データを生成し（ステップＳ２３０７）、ステップＳ２３０３に戻る。また、ステップＳ２３０３において、未選択のドライバ側インスタンス名および端子名の組がない場合（ステップＳ２３０３：Ｎｏ）、ステップＳ２３０１に戻る。
【００７７】
ステップＳ２３０１において、未選択モジュールがない場合（ステップＳ２３０１：Ｎｏ）、検証支援装置４００は、旧回路１００ａのモジュール群の中から、検証対象モジュールと同一識別情報の未選択モジュールがあるか否かを判断する（ステップＳ２３０８）。未選択モジュールがある場合（ステップＳ２３０８：Ｙｅｓ）、検証支援装置４００は、未選択モジュールを比較対象モジュールとして選択する（ステップＳ２３０９）。そして、検証支援装置４００は、比較対象モジュールにおいて、未選択のドライバ側インスタンス名および端子名の組があるか否かを判断する（ステップＳ２３１０）。
【００７８】
未選択のドライバ側インスタンス名および端子名の組がある場合（ステップＳ２３１０：Ｙｅｓ）、検証支援装置４００は、未選択のドライバ側インスタンス名および端子名の組を選択する（ステップＳ２３１１）。そして、検証支援装置４００は、選択したドライバ側インスタンス名および端子名の組の端子リンクをトレースして（ステップＳ２３１２）、レシーバ側インスタンス名および端子名の組を取得する（ステップＳ２３１３）。このあと、検証支援装置４００は、選択したドライバ側インスタンス名および端子名の組と取得したレシーバ側インスタンス名および端子名の組で文字列化データを生成し（ステップＳ２３１４）、ステップＳ２３１０に戻る。
【００７９】
また、ステップＳ２３１０において、未選択のドライバ側インスタンス名および端子名の組がない場合（ステップＳ２３１０：Ｎｏ）、ステップＳ２３０８に戻る。ステップＳ２３０８において、未選択モジュールがない場合（ステップＳ２３０８：Ｎｏ）、文字列化処理（ステップＳ２１０２）が終了する。これにより、現回路１００ｂの検証候補モジュールと旧回路１００ａの比較対象モジュールのそれぞれについて文字列化情報が生成される。
【００８０】
図２４は、図２１に示した差分抽出処理（ステップＳ２１０３）の詳細な処理手順例を示すフローチャートである。まず、検証支援装置４００は、未選択の現回路１００ｂの文字列化情報があるか否かを判断する（ステップＳ２４０１）。未選択の現回路１００ｂの文字列化情報がある場合（ステップＳ２４０１：Ｙｅｓ）、検証支援装置４００は、未選択の現回路１００ｂの文字列化情報を選択する（ステップＳ２４０２）。つぎに、検証支援装置４００は、選択した現回路１００ｂの文字列化情報に対応する旧回路１００ａの文字列化情報を取得する（ステップＳ２４０３）。
【００８１】
そして、検証支援装置４００は、選択した現回路１００ｂの文字列化情報に未選択の文字列化データがあるか否かを判断する（ステップＳ２４０４）。未選択の文字列化データがある場合（ステップＳ２４０４：Ｙｅｓ）、検証支援装置４００は、未選択の文字列化データを１つ選択する（ステップＳ２４０５）。そして、検証支援装置４００は、選択文字列化データが、ステップＳ２４０３で取得した旧回路１００ａの文字列化情報にあるか否かを判断する（ステップＳ２４０６）。ここでは完全一致する文字列化データがあるか否かを判断する。
【００８２】
選択文字列化データが、ステップＳ２４０３で取得した旧回路１００ａの文字列化情報にある場合（ステップＳ２４０６：Ｙｅｓ）、ステップＳ２４０４に戻る。一方、ない場合（ステップＳ２４０６：Ｎｏ）、検証支援装置４００は、選択文字列化データを記憶装置４０２に一時的に保存し（ステップＳ２４０７）、ステップＳ２４０４に戻る。ステップＳ２４０４において、未選択の文字列化データがない場合（ステップＳ２４０４：Ｎｏ）、検証支援装置４００は、ステップＳ２４０７で保存した選択文字列化データがあるか否かを判断する（ステップＳ２４０８）。
【００８３】
保存した選択文字列化データがある場合（ステップＳ２４０８：Ｙｅｓ）、検証支援装置４００は、選択文字列化データから差分となる回路のインスタンス名を抽出して記憶装置４０２に保存する（ステップＳ２４０９）。そして、ステップＳ２４０１に戻る。一方、保存した選択文字列化データがない場合（ステップＳ２４０８：Ｎｏ）、ステップＳ２４０１に戻る。ステップＳ２４０１において、未選択の現回路１００ｂの文字列化情報がない場合（ステップＳ２４０１：Ｎｏ）、差分抽出処理（ステップＳ２１０３）が終了する。
【００８４】
図２５は、図２１に示した検証対象箇所設定処理（ステップＳ２１０４）の詳細な処理手順例を示すフローチャートである。まず、検証支援装置４００は、差分抽出処理（ステップＳ２１０３）で抽出した差分から未選択の差分があるか否かを判断する（ステップＳ２５０１）。未選択の差分がある場合（ステップＳ２５０１：Ｙｅｓ）、検証支援装置４００は、未選択の差分を選択し（ステップＳ２５０２）、現回路１００ｂにおいて選択した差分から出力端子までトレースする（ステップＳ２５０３）。そして、検証支援装置４００は、選択した差分およびトレースで通過したインスタンスを検証対象箇所に追加する（ステップＳ２５０４）。そして、ステップＳ２５０１に戻る。ステップＳ２５０１において、未選択の差分がない場合（ステップＳ２５０１：Ｎｏ）、検証対象箇所設定処理（ステップＳ２１０４）が終了する。
【００８５】
図２６は、図２１に示した旧回路１００ａの検証結果修正処理（ステップＳ２１０５）の詳細な処理手順例を示すフローチャートである。まず、検証支援装置４００は、旧回路１００ａの検証結果Ｖ１を取得して（ステップＳ２６０１）、旧回路１００ａの検証結果Ｖ１から検証対象箇所を含む検証情報を削除する（ステップＳ２６０２）。そして、検証支援装置４００は、削除後の検証結果Ｖ１０を出力する（ステップＳ２６０３）。出力形式としては、記憶装置４０２への保存、出力装置４０４からの表示出力や印刷出力、通信装置４０５からの送信が挙げられる。これにより、旧回路１００ａの検証結果修正処理（ステップＳ２１０５）が終了する。
【００８６】
図２７は、図２１に示した現回路１００ｂの検証結果生成処理（ステップＳ２１０６）の詳細な処理手順例を示すフローチャートである。まず、検証支援装置４００は、検証対象箇所の検証結果を取得する（ステップＳ２７０１）。つぎに、検証支援装置４００は、検証対象箇所の検証結果を旧回路１００ａの削除後の検証結果Ｖ１０に追加する（ステップＳ２７０２）。これにより、現回路１００ｂの検証結果Ｖ２が生成される。そして、検証支援装置４００は、追加後の検証結果Ｖ２を出力する（ステップＳ２７０３）。出力形式としては、記憶装置４０２への保存、出力装置４０４からの表示出力や印刷出力、通信装置４０５からの送信が挙げられる。これにより、現回路１００ｂの検証結果生成処理（ステップＳ２１０６）が終了する。
【００８７】
このように、実施の形態１によれば、上位階層のモジュールの更新日時を下位階層のモジュールに変更することにより、組み上げ先となる上位階層のモジュールも実質的に更新されたことにする。これにより、下位階層のモジュールのみ検証をおこなう場合に発生する検証漏れを抑制することができる。
【００８８】
また、上位階層の更新日時の変更により拡大した検証範囲から検証しなくても影響のないモジュールを除外することができる。これにより、検証速度の高速化を図ることができる。また、回路情報を、ドライバ側インスタンス名および端子名とレシーバ側インスタンス名および端子名という簡素な文字列化データとすることにより、差分抽出に必要な情報を得ることができ、差分抽出の高速化を図ることができる。
【００８９】
また、旧回路１００ａの検証結果から検証対象箇所の検証情報だけを削除することにより、変更のないモジュールについては検証情報をそのまま流用することができる。また、検証対象箇所について検証を実行することができるため、検証処理の無駄を削減でき、検証処理の高速化を図ることができる。また、検証対象箇所の検証で得られた検証結果を、旧回路１００ａの削除後の検証結果に追加するだけで、現回路１００ｂの検証結果を得ることができる。したがって、現回路１００ｂの検証結果の生成処理の効率化を図ることができる。
【００９０】
（実施の形態２）
つぎに、実施の形態２について説明する。実施の形態２では、検証支援装置４００は、差分を抽出したあと、現回路１００ｂのモジュール群のうち差分を含むモジュールと当該モジュールと同一識別情報の旧回路１００ａのモジュールのそれぞれについて論理圧縮をおこなう。論理圧縮によりモジュールは論理圧縮前と比較して回路構成が簡素化される。たとえば、インバータを２段直列に追加した場合には、論理圧縮により実質的に回路が追加されていないのと同じ構成となる。したがって、論理圧縮後のモジュール同士を比較することにより、差分抽出の高精度化を図る。
【００９１】
図２８は、実施の形態２にかかる検証支援装置４００の機能的構成例を示すブロック図である。実施の形態２では、実施の形態１にかかる検証支援装置４００に、圧縮部２８００が追加される。圧縮部２８００は、具体的には、たとえば、図４に示した記憶装置４０２に記憶されたプログラムをプロセッサ４０１に実行させることにより、その機能を実現する。また、圧縮部２８００以外の機能的構成は、実施の形態１と同一構成であるため、同一符号を付し、圧縮部２８００と関連のある機能についてのみ説明する。
【００９２】
圧縮部２８００は、抽出部５０７によって差分が抽出された検証候補モジュールおよび比較対象モジュールをそれぞれ論理圧縮する。論理圧縮されたモジュールについては、回路情報も論理圧縮後に更新される。ここで、論理圧縮例について説明する。
【００９３】
図２９は、論理圧縮例を示す説明図である。圧縮部２８００では、たとえば、図２９に示したような論理圧縮パターンを記憶しておき、該当する論理圧縮パターンが、差分が抽出された検証候補モジュールや比較対象モジュールにある場合、論理圧縮を実行する。また、圧縮部２８００は、モジュール内の回路構成について論理演算を実行することにより論理圧縮を実行してもよい。
【００９４】
図３０は、旧回路１００ａの第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」の論理圧縮例を示す説明図である。図３０において、論理圧縮前の旧回路１００ａの第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」をモジュール３００１とし、論理圧縮後の旧回路１００ａの第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」をモジュール３００２とする。モジュール３００１のバッファｂｕｆ１：ＢＵＦは、論理圧縮により削除され、モジュール３００２となる。
【００９５】
図３１は、現回路１００ｂの第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」の論理圧縮例を示す説明図である。図３１において、論理圧縮前の現回路１００ｂの第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」をモジュール３１０１とし、論理圧縮後の現回路１００ｂの第１階層のモジュール「ｔｏｐｍｏｄ：ＴＯＰ」をモジュール３１０２とする。モジュール３１０１のバッファｂｕｆ１：ＢＵＦは、論理圧縮により削除され、モジュール３１０２となる。
【００９６】
図３２は、現回路１００ｂの第２階層の第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」の論理圧縮例を示す説明図である。図３２において、論理圧縮前の現回路１００ｂの第２階層の第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」をモジュール３２０１とし、論理圧縮後の現回路１００ｂの第２階層の第１モジュール「ｌｏｗ１：ＬＯＷ＿Ａ」をモジュール３２０２とする。モジュール３２０１のバッファｂｕｆ２：ＢＵＦは、論理圧縮により削除され、また、モジュール３２０１のインバータｉｎｖ１：ＩＮＶ，ｉｎｖ２：ＩＮＶは、論理圧縮により削除され、モジュール３２０２となる。図２８に戻る。
【００９７】
図２８において、変換部５０６は、論理圧縮後のモジュールを文字列化情報に変換する。変換対象が論理圧縮後のモジュールに変わるだけで、変換処理自体は実施の形態１と同一処理である。
【００９８】
図３３は、旧回路１００ａの文字列化情報の一例を示す説明図である。図３３において、「ｔｏｐｍｏｄ：ＴＯＰ」の文字列化情報Ｌ３ａは、図１０のマクロ情報Ｍ１の論理圧縮後のマクロ情報から変換された文字列化情報である。また、「ｌｏｗ１：ＬＯＷ＿Ａ」の文字列化情報Ｌ４ａは、図１２のマクロ情報Ｍ２の論理圧縮後のマクロ情報から変換された文字列化情報である。
【００９９】
図３４は、現回路１００ｂの文字列化情報の一例を示す説明図である。図３４において、「ｔｏｐｍｏｄ：ＴＯＰ」の文字列化情報Ｌ３ｂは、図１１のマクロ情報Ｍ１の論理圧縮後のマクロ情報から変換された文字列化情報である。また、「ｌｏｗ１：ＬＯＷ＿Ａ」の文字列化情報Ｌ４ｂは、図１３のマクロ情報Ｍ２の論理圧縮後のマクロ情報から変換された文字列化情報である。
【０１００】
図３５は、文字列化情報Ｌ３ａと文字列化情報Ｌ３ｂとを用いた抽出例を示す説明図である。文字列化情報Ｌ３ｂのうち文字列化情報Ｌ３ａと相違する文字列化データは、「ｔｏｐｍｏｄ．ＩＮ５＿ｉｎｖ４．Ａ」、および「ｉｎｖ４．Ｘ＿ｍａ４．Ｃ」である。したがって、抽出部５０７は、相違する文字列化データ「ｔｏｐｍｏｄ．ＩＮ５＿ｉｎｖ４．Ａ」および「ｉｎｖ４．Ｘ＿ｍａ４．Ｃ」のうち回路を示すインスタンス名「ｉｎｖ４」および「ｍａ４」を差分として抽出する。図１８の差分抽出例と比較すると、論理圧縮により差分として抽出されるインスタンス名が絞り込まれるため、差分抽出の効率化を図ることができる。
【０１０１】
図３６は、文字列化情報Ｌ４ａと文字列化情報Ｌ４ｂとを用いた抽出例を示す説明図である。文字列化情報Ｌ４ｂのうち文字列化情報Ｌ４ａと相違する文字列化データは、「ｎａｎｄ１．Ｘ＿ｉｎｖ３．Ａ」，「ｉｎｖ３．Ｘ＿ｍａ２．Ａ」である。したがって、抽出部５０７は、相違する文字列化データのうち、回路を示すインスタンス名「ｎａｎｄ１」，「ｉｎｖ３」，および「ｍａ２」を差分として抽出する。図１９の差分抽出例と比較すると、論理圧縮により差分として抽出されるインスタンス名が絞り込まれるため、差分抽出の効率化を図ることができる。
【０１０２】
＜検証支援処理手順＞
図３７は、実施の形態２にかかる検証支援装置４００による検証支援処理手順例を示すフローチャートである。検証支援装置４００は、検証候補抽出処理（ステップＳ３７０１）、第１の文字列化処理（ステップＳ３７０２）、第１の差分抽出処理（ステップＳ３７０３）、圧縮部２８００による論理圧縮処理（ステップＳ３７０４）、第２の文字列化処理（ステップＳ３７０５）、第２の差分抽出処理（ステップＳ３７０６）、検証対象箇所設定処理（ステップＳ３７０７）、旧回路１００ａの検証結果修正処理（ステップＳ３７０８）、現回路１００ｂの検証結果生成処理（ステップＳ３７０９）を実行する。
【０１０３】
検証候補抽出処理（ステップＳ３７０１）は検証候補抽出処理（ステップＳ２１０１）と同一処理であるため説明を省略する。第１の文字列化処理（ステップＳ３７０２）は文字列化処理（ステップＳ２１０２）と同一処理であるため説明を省略する。第１の差分抽出処理（ステップＳ３７０３）は差分抽出処理（ステップＳ２１０３）と同一処理であるため説明を省略する。検証対象箇所設定処理（ステップＳ３７０７）は検証対象箇所設定処理（ステップＳ２１０４）と同一処理であるため説明を省略する。旧回路１００ａの検証結果修正処理（ステップＳ３７０８）は旧回路１００ａの検証結果修正処理（ステップＳ２１０５）と同一処理であるため説明を省略する。現回路１００ｂの検証結果生成処理（ステップＳ３７０９）は現回路１００ｂの検証結果生成処理（ステップＳ２１０６）と同一処理であるため説明を省略する。
【０１０４】
図３８は、図３７に示した第２の文字列化処理（ステップＳ３７０５）の詳細な処理手順例を示すフローチャートである。まず、検証支援装置４００は、論理圧縮済みの検証候補モジュール群に未選択モジュールがあるか否かを判断する（ステップＳ３８０１）。未選択の論理圧縮済みモジュールがある場合（ステップＳ３８０１：Ｙｅｓ）、検証支援装置４００は、未選択の論理圧縮済みモジュールを選択する（ステップＳ３８０２）。そして、検証支援装置４００は、選択した論理圧縮済みモジュールにおいて、未選択のドライバ側インスタンス名および端子名の組があるか否かを判断する（ステップＳ３８０３）。
【０１０５】
未選択のドライバ側インスタンス名および端子名の組がある場合（ステップＳ３８０３：Ｙｅｓ）、検証支援装置４００は、未選択のドライバ側インスタンス名および端子名の組を選択する（ステップＳ３８０４）。そして、検証支援装置４００は、選択したドライバ側インスタンス名および端子名の組の端子リンクをトレースして（ステップＳ３８０５）、レシーバ側インスタンス名および端子名の組を取得する（ステップＳ３８０６）。
【０１０６】
このあと、検証支援装置４００は、選択したドライバ側インスタンス名および端子名の組と取得したレシーバ側インスタンス名および端子名の組で文字列化データを生成し（ステップＳ３８０７）、ステップＳ３８０３に戻る。また、ステップＳ３８０３において、未選択のドライバ側インスタンス名および端子名の組がない場合（ステップＳ３８０３：Ｎｏ）、ステップＳ３８０１に戻る。
【０１０７】
ステップＳ３８０１において、未選択の論理圧縮済みモジュールがない場合（ステップＳ３８０１：Ｎｏ）、検証支援装置４００は、旧回路１００ａの論理圧縮済みモジュール群の中から、検証対象モジュールと同一識別情報の未選択の論理圧縮済みモジュールがあるか否かを判断する（ステップＳ３８０８）。未選択の論理圧縮済みモジュールがある場合（ステップＳ３８０８：Ｙｅｓ）、検証支援装置４００は、未選択の論理圧縮済みモジュールを比較対象モジュールとして選択する（ステップＳ３８０９）。そして、検証支援装置４００は、比較対象モジュールにおいて、未選択のドライバ側インスタンス名および端子名の組があるか否かを判断する（ステップＳ３８１０）。
【０１０８】
未選択のドライバ側インスタンス名および端子名の組がある場合（ステップＳ３８１０：Ｙｅｓ）、検証支援装置４００は、未選択のドライバ側インスタンス名および端子名の組を選択する（ステップＳ３８１１）。そして、検証支援装置４００は、選択したドライバ側インスタンス名および端子名の組の端子リンクをトレースして（ステップＳ３８１２）、レシーバ側インスタンス名および端子名の組を取得する（ステップＳ３８１３）。このあと、検証支援装置４００は、選択したドライバ側インスタンス名および端子名の組と取得したレシーバ側インスタンス名および端子名の組で文字列化データを生成し（ステップＳ３８１４）、ステップＳ３８１０に戻る。
【０１０９】
また、ステップＳ３８１０において、未選択のドライバ側インスタンス名および端子名の組がない場合（ステップＳ３８１０：Ｎｏ）、ステップＳ３８０８に戻る。ステップＳ３８０８において、未選択の論理圧縮済みモジュールがない場合（ステップＳ３８０８：Ｎｏ）、第２の文字列化処理（ステップＳ３７０５）が終了する。これにより、論理圧縮後において、現回路１００ｂの検証候補モジュールと旧回路１００ａの比較対象モジュールのそれぞれについて文字列化情報が生成される。
【０１１０】
図３９は、図３７に示した第２の差分抽出処理（ステップＳ３７０６）の詳細な処理手順例を示すフローチャートである。まず、検証支援装置４００は、未選択の論理圧縮済みの現回路１００ｂの文字列化情報があるか否かを判断する（ステップＳ３９０１）。未選択の論理圧縮済みの現回路１００ｂの文字列化情報がある場合（ステップＳ３９０１：Ｙｅｓ）、検証支援装置４００は、未選択の論理圧縮済みの現回路１００ｂの文字列化情報を選択する（ステップＳ３９０２）。つぎに、検証支援装置４００は、選択した現回路１００ｂの文字列化情報に対応する論理圧縮済みの旧回路１００ａの文字列化情報を取得する（ステップＳ３９０３）。
【０１１１】
そして、検証支援装置４００は、選択した論理圧縮済みの現回路１００ｂの文字列化情報に未選択の文字列化データがあるか否かを判断する（ステップＳ３９０４）。未選択の文字列化データがある場合（ステップＳ３９０４：Ｙｅｓ）、検証支援装置４００は、未選択の文字列化データを１つ選択する（ステップＳ３９０５）。そして、検証支援装置４００は、選択文字列化データが、ステップＳ３９０３で取得した論理圧縮済みの旧回路１００ａの文字列化情報にあるか否かを判断する（ステップＳ３９０６）。ここでは完全一致する文字列化データがあるか否かを判断する。
【０１１２】
選択文字列化データが、ステップＳ３９０３で取得した論理圧縮済みの旧回路１００ａの文字列化情報にある場合（ステップＳ３９０６：Ｙｅｓ）、ステップＳ３９０４に戻る。一方、ない場合（ステップＳ３９０６：Ｎｏ）、検証支援装置４００は、選択文字列化データを記憶装置４０２に一時的に保存し（ステップＳ３９０７）、ステップＳ３９０４に戻る。ステップＳ３９０４において、未選択の文字列化データがない場合（ステップＳ３９０４：Ｎｏ）、検証支援装置４００は、ステップＳ３９０７で保存した選択文字列化データがあるか否かを判断する（ステップＳ３９０８）。
【０１１３】
保存した選択文字列化データがある場合（ステップＳ３９０８：Ｙｅｓ）、検証支援装置４００は、選択文字列化データから差分となる回路のインスタンス名を抽出して記憶装置４０２に保存する（ステップＳ３９０９）。そして、ステップＳ３９０１に戻る。一方、保存した選択文字列化データがない場合（ステップＳ３９０８：Ｎｏ）、ステップＳ３９０１に戻る。ステップＳ３９０１において、未選択の論理圧縮済みの現回路１００ｂの文字列化情報がない場合（ステップＳ３９０１：Ｎｏ）、第２の差分抽出処理（ステップＳ３７１６）が終了する。
【０１１４】
このように、実施の形態２によれば、差分を抽出したあと、論理圧縮によりモジュールは論理圧縮前と比較して回路構成が簡素化される。したがって、論理圧縮後のモジュール同士を比較することにより、差分抽出の高精度化を図ることができる。また、論理圧縮により、抽出される差分の量が抑制されるため、検証対象箇所のトレース量も削減される。したがって、トレース処理の高速化を図ることができる。また、差分の量が抑制されるため、検証対象箇所は、実施の形態１の検証対象箇所の個数以下となる。したがって、検証範囲の抑制により、検証作業の効率化を図ることができる。
【０１１５】
また、実施の形態２では、実施の形態１と同様、上位階層のモジュールの更新日時を下位階層のモジュールに変更することにより、組み上げ先となる上位階層のモジュールも実質的に更新されたことにする。これにより、下位階層のモジュールのみ検証をおこなう場合に発生する検証漏れを抑制することができる。
【０１１６】
また、上位階層の更新日時の変更により拡大した検証範囲から検証しなくても影響のないモジュールを除外することができる。これにより、検証速度の高速化を図ることができる。また、回路情報を、ドライバ側インスタンス名および端子名とレシーバ側インスタンス名および端子名という簡素な文字列化データとすることにより、差分抽出に必要な情報を得ることができ、差分抽出の高速化を図ることができる。
【０１１７】
また、旧回路１００ａの検証結果から検証対象箇所の検証情報だけを削除することにより、変更のないモジュールについては検証情報をそのまま流用することができる。また、検証対象箇所について検証を実行することができるため、検証処理の無駄を削減でき、検証処理の高速化を図ることができる。また、検証対象箇所の検証で得られた検証結果を、旧回路１００ａの削除後の検証結果に追加するだけで、現回路１００ｂの検証結果を得ることができる。したがって、現回路１００ｂの検証結果の生成処理の効率化を図ることができる。
【符号の説明】
【０１１８】
１００  検証対象回路
１００ａ  旧回路
１００ｂ  現回路
４００  検証支援装置
５０１  取得部
５０２  判断部
５０３  変更部
５０４  決定部
５０５  特定部
５０６  変換部
５０７  抽出部
５０８  設定部
５０９  削除部
５１０  追加部
【図１】
2013175559.tif 000003
【図２】
2013175559.tif 000004
【図３】
2013175559.tif 000005
【図４】
2013175559.tif 000006
【図５】
2013175559.tif 000007
【図６】
2013175559.tif 000008
【図７】
2013175559.tif 000009
【図８】
2013175559.tif 000010
【図９】
2013175559.tif 000011
【図１０】
2013175559.tif 000012
【図１１】
2013175559.tif 000013
【図１２】
2013175559.tif 000014
【図１３】
2013175559.tif 000015
【図１４】
2013175559.tif 000016
【図１５】
2013175559.tif 000017
【図１６】
2013175559.tif 000018
【図１７】
2013175559.tif 000019
【図１８】
2013175559.tif 000020
【図１９】
2013175559.tif 000021
【図２０】
2013175559.tif 000022
【図２１】
2013175559.tif 000023
【図２２】
2013175559.tif 000024
【図２３】
2013175559.tif 000025
【図２４】
2013175559.tif 000026
【図２５】
2013175559.tif 000027
【図２６】
2013175559.tif 000028
【図２７】
2013175559.tif 000029
【図２８】
2013175559.tif 000030
【図２９】
2013175559.tif 000031
【図３０】
2013175559.tif 000032
【図３１】
2013175559.tif 000033
【図３２】
2013175559.tif 000034
【図３３】
2013175559.tif 000035
【図３４】
2013175559.tif 000036
【図３５】
2013175559.tif 000037
【図３６】
2013175559.tif 000038
【図３７】
2013175559.tif 000039
【図３８】
2013175559.tif 000040
【図３９】
2013175559.tif 000041
【国際調査報告】
2013175559.tif 000042
2013175559.tif 000043
2013175559.tif 000044
2013175559.tif 000045