(57)【要約】【課題】検証の効率化を図ること。【解決手段】判定装置１００は、複数のモジュールに含まれる各端子のうち、オープン端子であるか否かの判定対象の対象端子を示す端子情報１０１を取得する。判定装置１００は、各端子のそれぞれについて、接続情報と、入力端子および出力端子のいずれであるかの属性を示す第１属性情報と、を取得する。判定装置１００は、各端子のそれぞれについて、取得した第１属性情報が示す入出力属性の反対の入出力属性を示す第２属性情報を生成する。判定装置１００は、取得した接続情報と生成した第２属性情報とに基づいて、各端子のうち、第２属性情報が出力端子であることを示す端子の値を特定値とした場合における各端子の状態をシミュレーションする。判定装置１００は、端子情報１０１が示す対象端子の状態がハイインピーダンス状態となるかを判定する。【選択図】図１
2015056076.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
複数の部分回路に含まれる各端子のうち、オープン端子であるか否かの判定対象の第１対象端子を示す端子情報を取得し、
前記各端子のそれぞれについて、接続情報と、入力端子および出力端子のいずれであるかの属性を示す第１属性情報と、を取得し、
前記各端子のそれぞれについて、取得した前記第１属性情報が示す属性の反対の属性を示す第２属性情報を生成し、
取得した前記接続情報と生成した前記第２属性情報とに基づいて、前記各端子のうち、前記第２属性情報が出力端子であることを示す端子の値を第１特定値とした場合における前記各端子の状態をシミュレーションすることにより、前記端子情報が示す前記第１対象端子の状態がハイインピーダンス状態となるかを判定する、
処理を実行することを特徴とする判定方法。
【請求項２】
前記生成する処理では、取得した前記接続情報に基づいて、前記各端子のうち、入力値が固定値となる第１端子について前記第２属性情報を生成せず、
前記判定する処理では、前記各端子のうち、前記第１端子以外の第２端子のそれぞれについて取得した前記接続情報と生成した前記第２属性情報と、に基づいて、前記第１対象端子の状態が前記ハイインピーダンス状態となるかを判定することを特徴とする請求項１に記載の判定方法。
【請求項３】
前記コンピュータが、
前記各端子のうち、前記第１対象端子と異なる、クリップ接続であるか否かの判定対象の第２対象端子を示す第２端子情報を取得する処理を実行し、
前記判定する処理では、前記各端子のそれぞれについて取得した前記接続情報と、前記第１端子のそれぞれについて取得した前記第１属性情報と、前記第２端子のそれぞれについて生成した前記第２属性情報と、に基づいて、前記各端子の状態をシミュレーションすることにより、さらに、前記第２端子情報が示す前記第２対象端子が第２特定値となるかを判定することを特徴とする請求項２に記載の判定方法。
【請求項４】
前記コンピュータが、
前記第１対象端子の状態が前記ハイインピーダンス状態となる場合、前記第１対象端子が前記オープン端子であることを示す情報を出力し、前記第１対象端子の状態が前記ハイインピーダンス状態とならない場合、前記第１対象端子が前記オープン端子でないことを示す情報を出力する処理を実行することを特徴とする請求項１〜３のいずれか１つに記載の判定方法。
【請求項５】
コンピュータに、
複数の部分回路に含まれる各端子のうち、オープン端子であるか否かの判定対象の第１対象端子を示す端子情報を取得し、
前記各端子のそれぞれについて、接続情報と、入力端子および出力端子のいずれであるかの属性を示す第１属性情報と、を取得し、
前記各端子のそれぞれについて、取得した前記第１属性情報が示す属性の反対の属性を示す第２属性情報を生成し、
取得した前記接続情報と生成した前記第２属性情報とに基づいて、前記各端子のうち、前記第２属性情報が出力端子であることを示す端子の値を第１特定値とした場合における前記各端子の状態をシミュレーションすることにより、前記端子情報が示す前記第１対象端子の状態がハイインピーダンス状態となるかを判定する、
処理を実行させることを特徴とする判定プログラム。
【請求項６】
複数の部分回路に含まれる各端子のうち、オープン端子であるか否かの判定対象の第１対象端子を示す端子情報を取得する端子情報取得部と、
前記各端子のそれぞれについて、接続情報と、入力端子および出力端子のいずれであるかの属性を示す第１属性情報と、を取得するネットリスト取得部と、
前記各端子のそれぞれについて、取得した前記第１属性情報が示す属性の反対の属性を示す第２属性情報を生成するネットリスト生成部と、
取得した前記接続情報と生成した前記第２属性情報とに基づいて、前記各端子のうち、前記第２属性情報が出力端子であることを示す端子の値を第１特定値とした場合における前記各端子の状態をシミュレーションすることにより、前記端子情報が示す前記第１対象端子の状態がハイインピーダンス状態となるかを判定する判定部と、
を有することを特徴とする判定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、判定方法、判定プログラム、および判定装置に関する。
【背景技術】
【０００２】
従来、半導体集積回路を示す回路情報においてオープンとなっている端子が、設計仕様においてオープンとなっているのか設計ミスによりオープンとなっているのかをフォーマル検証によって判定する技術がある（例えば、下記特許文献１参照。）。
【０００３】
また、従来、値が固定される仕様である入力端子の状態が、ハイインピーダンス状態とならないことを確認し、ハイインピーダンス状態でない場合に、その入力端子の値が期待値となるかをシミュレーションによって判定する技術がある（例えば、下記特許文献２参照。）。
【０００４】
また、従来、半導体集積回路の試験では、オープンとなっている端子間の接続部分を検証するためのテスト信号を流し、このテスト信号をモニタすることによりマクロ間の接続の正当性を試験する技術がある（例えば、下記特許文献３参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−２０３９６２号公報
【特許文献２】特開２００９−４８３１２号公報
【特許文献３】特開平１０−３２６３０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、回路情報において特定の端子がオープン端子となっているかをシミュレーションによって判定することができないため、端子の接続に関する検証を効率よく行えないという問題点がある。
【０００７】
１つの側面では、本発明は、検証の効率化を図ることができる判定方法、判定プログラム、および判定装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一側面によれば、複数の部分回路に含まれる各端子のうち、オープン端子であるか否かの判定対象の第１対象端子を示す端子情報を取得し、前記各端子のそれぞれについて、接続情報と、入力端子および出力端子のいずれであるかの属性を示す第１属性情報と、を取得し、前記各端子のそれぞれについて、取得した前記第１属性情報が示す属性の反対の属性を示す第２属性情報を生成し、取得した前記接続情報と生成した前記第２属性情報とに基づいて、前記各端子のうち、前記第２属性情報が出力端子であることを示す端子の値を第１特定値とした場合における前記各端子の状態をシミュレーションすることにより、前記端子情報が示す前記第１対象端子の状態がハイインピーダンス状態となるかを判定する判定方法、判定プログラム、および判定装置が提案される。
【発明の効果】
【０００９】
本発明の一態様によれば、検証の効率化を図ることができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、判定装置による一動作例を示す説明図である。
【図２】図２は、端子の接続例を示す説明図である。
【図３】図３は、実施の形態にかかる判定装置のハードウェア構成例を示すブロック図である。
【図４】図４は、判定装置の機能的構成を示すブロック図である。
【図５】図５は、モジュールＺの接続仕様情報例を示す説明図である。
【図６】図６は、判定例１にかかるネットリストが示すモジュール間の接続関係を示す説明図である。
【図７】図７は、判定例１にかかるモジュールＺのネットリストを示す説明図である。
【図８】図８は、判定例１にかかる変換前後のモジュールＸのネットリスト例を示す説明図である。
【図９】図９は、判定例１にかかる変換前後のモジュールＹのネットリスト例を示す説明図である。
【図１０】図１０は、アサーション記述情報例を示す説明図である。
【図１１】図１１は、判定例１における判定結果を示す説明図である。
【図１２】図１２は、判定例２にかかるネットリストが示すモジュール間の接続関係を示す説明図である。
【図１３】図１３は、判定例２にかかるモジュールＺのネットリストを示す説明図である。
【図１４】図１４は、判定例２にかかる変換前後のモジュールＹのネットリスト例を示す説明図である。
【図１５】図１５は、判定例２における判定結果を示す説明図である。
【図１６】図１６は、実施例１にかかる判定装置による判定処理手順例を示すフローチャート（その１）である。
【図１７】図１７は、実施例１にかかる判定装置による判定処理手順例を示すフローチャート（その２）である。
【図１８】図１８は、実施例２にかかるネットリストの生成例を示す説明図である。
【図１９】図１９は、実施例２にかかる判定装置による判定処理手順例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、本発明にかかる判定方法、判定プログラム、および判定装置の実施の形態を詳細に説明する。
【００１２】
図１は、判定装置による一動作例を示す説明図である。判定装置１００は、設計仕様においてオープン端子であると定められた端子が、設計仕様に基づいて設計されたネットリストにおいてオープン端子となっているかを判定するコンピュータである。まず、判定装置１００は、複数の部分回路に含まれる各端子のうち、オープン端子であるか否かの判定の対象端子を示す端子情報１０１を取得する。ここで、部分回路は、モジュールと称する。端子情報１０１は、例えば、設計仕様を示す情報である。図１の例では、端子Ｐ２と端子Ｐ４が判定の対象端子である。
【００１３】
つぎに、判定装置１００は、各端子のそれぞれについて、接続情報と、入力端子および出力端子のいずれであるかの属性を示す第１属性情報と、を取得する。具体的には、接続情報と第１属性情報とは、複数のモジュールを含むモジュールを示すネットリストに含まれる。ネットリストは、例えば、ＶｅｒｉｌｏｇやＶＨＤＬ（Ｖｅｒｙ  ｈｉｇｈ  ｓｐｅｅｄ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ  Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）などのハードウェア記述言語やシステム記述言語によって記述される。また、第１属性情報は、設計仕様を示す情報であってもよい。図１上側では、理解の容易化のために、ネットリストが示すモジュールｚを示す。図１に示すように、モジュールｚはモジュールｘとモジュールｙを含む。モジュールｘは端子Ｐ１〜端子Ｐ４を含み、モジュールｙは端子Ｐ５〜端子Ｐ７を含む。ここで、入力端子および出力端子のいずれであるかの属性を入出力属性と称する。入出力属性が入力である場合、第１属性情報は「Ｉｎｐｕｔ」である。入出力属性が出力である場合、第１属性情報は「Ｏｕｔｐｕｔ」である。図１の例では、各端子名の前に付随する「Ｉｎｐｕｔ」または「Ｏｕｔｐｕｔ」が第１属性情報である。例えば、端子Ｐ１，Ｐ２，Ｐ４，Ｐ７の入出力属性は出力であり、端子Ｐ３，Ｐ５，Ｐ６の入出力属性は入力である。
【００１４】
つぎに、判定装置１００は、各端子のそれぞれについて、取得した第１属性情報が示す入出力属性の反対の入出力属性を示す第２属性情報を生成する。図１に示すように、判定装置１００は、端子の各々について、第１属性情報が「Ｉｎｐｕｔ」であれば、「Ｏｕｔｐｕｔ」にした第２属性情報を生成し、第１属性情報が「Ｏｕｔｐｕｔ」であれば、「Ｉｎｐｕｔ」にした第２属性情報を生成する。このように、判定装置１００は、図１下側に示すように、端子の各々について、入出力属性を反対にした第２属性情報を生成する。これにより、判定装置１００は、例えば、取得した接続情報と生成した第２属性情報とを含むネットリストを生成する。例えば、端子Ｐ１，Ｐ２，Ｐ４，Ｐ７の入出力属性は入力となり、端子Ｐ３，Ｐ５，Ｐ６の入出力属性は出力となる。
【００１５】
判定装置１００は、取得した接続情報と生成した第２属性情報とに基づいて、各端子のうち、第２属性情報が出力端子であることを示す端子の値を特定値とした場合における各端子の状態をシミュレーションする。特定値は、予め設計者によって定められ、判定装置１００がアクセス可能な記憶装置に記憶される。図１の例では、特定値は“１’ｂ０”である。これにより、判定装置１００は、端子情報１０１が示す対象端子の状態がハイインピーダンス状態となるかを判定する。具体的には、判定装置１００は、対象端子の状態がハイインピーダンス状態となるかを判定することを示すアサーション記述情報と、取得した接続情報と生成した第２属性情報とを含むネットリストと、をシミュレータに与えることによりシミュレーションする。アサーション記述情報は、例えば、アサーション言語によって記述された情報である。
【００１６】
例えば、判定装置１００は、対象端子の状態がハイインピーダンス状態となっていれば、対象端子がオープンとなっていると判定する。また、例えば、判定装置１００は、対象端子の状態はハイインピーダンス状態となっていなければ、対象端子がオープンとなっていないと判定する。例えば、端子Ｐ２の値は、端子Ｐ６と接続されているため“１’ｂ０”となり、端子Ｐ２はオープン端子となっていないと判定される。例えば、端子Ｐ４の状態はハイインピーダンス状態となり、端子Ｐ４はオープン端子となっていると判定される。
【００１７】
これにより、オープン端子の正当性を検証することができる。したがって、端子の接続に関する検証の効率化を図ることができる。また、端子の誤接続により発生しうる故障を低減させることができ、設計品質を向上させることができる。
【００１８】
図２は、端子の接続例を示す説明図である。例えば、モジュールｍ１がモジュールｍ２とモジュールｍ３とを含む場合、ネットリストにおける接続は、外部とモジュールｍ２との接続、モジュールｍ２とモジュールｍ３とのモジュール間接続、モジュールｍ３と外部との接続、の３つに分類される。
【００１９】
また、モジュール間接続における端子の接続には、例えば、（１）入力端子と出力端子とが接続される端子間接続と、（２）入力端子の値が固定されるクリップ接続と、（３）出力端子に接続先がないオープン接続と、の３種類の接続がある。（２）クリップ接続について、図２の例では、入力端子の値が“１’ｂ０”に固定されるが、入力端子の値が“１’ｂ１”に固定される場合もある。上述したように、本実施の形態では、オープン接続について出力端子がオープン端子となっているかをシミュレーションによって判定する。
【００２０】
また、例えば、クリップ接続については、入力端子の値をシミュレーションして固定値になっているかを判定することにより、ネットリストにおいて入力端子の値が固定されているかを検証する。また、例えば、端子間接続については、出力端子の値と入力端子の値とをシミュレーションして出力端子の値と入力端子の値とが一致しているか否かを判定することにより、ネットリストにおいて出力端子と入力端子とが接続されているかを検証する。例えば、端子ａと端子ｄとの端子間接続を検証するためのアサーション言語の記述は以下のようになる。
【００２１】
「Ａｓｓｅｒｔ  Ａｌｗａｙｓ（モジュールｍ２．ａ＝＝＝モジュールｍ３．ｄ）」
【００２２】
（判定装置のハードウェア構成例）
図３は、実施の形態にかかる判定装置のハードウェア構成例を示すブロック図である。判定装置１００は、ＣＰＵ３０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２と、ＲＡＭ３０３と、ディスクドライブ３０４と、ディスク３０５と、を有する。判定装置は、Ｉ／Ｆ（Ｉｎｔｅｒ  Ｆａｃｅ）３０６と、入力装置３０７と、出力装置３０８と、を有する。また、各部はバス３００によってそれぞれ接続される。
【００２３】
ここで、ＣＰＵ３０１は、例えばＲＯＭ３０２に記憶されたプログラムをＲＡＭ３０３にロードして実行することにより、判定装置１００の全体の制御やデータ処理を行う。ＲＯＭ３０２は、ブートプログラムや判定プログラムなどのプログラムを記憶する。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される記憶部である。ディスクドライブ３０４は、ＣＰＵ３０１の制御に従ってディスク３０５に対するデータのリード／ライトを制御する。ディスク３０５は、ディスクドライブ３０４の制御で書き込まれたデータを記憶する。ディスク３０５としては、磁気ディスク、光ディスクなどが挙げられる。
【００２４】
Ｉ／Ｆ３０６は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワークＮＥＴに接続され、このネットワークＮＥＴを介して他の装置に接続される。そして、Ｉ／Ｆ３０６は、ネットワークＮＥＴと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ３０６には、例えばモデムやＬＡＮアダプタなどを採用することができる。
【００２５】
入力装置３０７は、キーボード、マウス、タッチパネルなど設計者の操作により、各種データの入力を行うインターフェースである。また、入力装置３０７は、カメラから画像や動画を取り込むこともできる。また、入力装置３０７は、マイクから音声を取り込むこともできる。出力装置３０８は、ＣＰＵ３０１の指示により、データを出力するインターフェースである。出力装置３０８には、ディスプレイやプリンタが挙げられる。
【００２６】
（判定装置の機能的構成例）
図４は、判定装置の機能的構成を示すブロック図である。判定装置１００は、端子情報取得部４０１と、ネットリスト取得部４０２と、ネットリスト生成部４０３と、アサーション記述情報生成部４０４と、判定部４０５と、出力部４０６と、を有する。端子情報取得部４０１から出力部４０６までの処理は、例えば、ＣＰＵ３０１がアクセス可能なディスク３０５などの記憶装置に記憶されたシミュレーションプログラムにコーディングされる。そして、ＣＰＵ３０１が記憶装置に記憶された判定プログラムを読み出して、判定プログラムにコーディングされている処理を実行する。これにより、端子情報取得部４０１から判定部４０５までの処理が実現される。また、各部の処理結果は、例えば、ＲＡＭ３０３、ディスク３０５などの記憶装置に記憶される。
【００２７】
まず、端子情報取得部４０１は、複数の部分回路に含まれる各端子のうち、オープン端子であるか否かの判定の第１対象端子を示す端子情報を取得する。また、端子情報取得部４０１は、各端子のうち、第２対象端子を示す端子情報を取得する。第２対象端子は、上述したクリップ接続となっている端子かの判定の対象である。また、端子情報取得部４０１は、各端子のうち、第３対象端子を示す端子情報を取得する。第３対象端子は、端子間接続となっている端子かの判定の対象である。具体的な取得方法としては、例えば、ディスクなどの記憶装置から取得してもよいし、入力装置を介して入力された端子情報を取得してもよいし、ネットワークを介して他の装置から端子情報を取得してもよい。ここでは、検証の対象回路はモジュールＺとし、モジュールＺに含まれる部分回路はモジュールＸとモジュールＹとした例を挙げる。具体的には、端子情報取得部４０１は、接続仕様情報に含まれる各モジュールの接続表を取得する。
【００２８】
図５は、モジュールＺの接続仕様情報例を示す説明図である。モジュールＺの接続仕様情報５００は、モジュールＸの接続表５０１と、モジュールＹの接続表５１１と、を有する。モジュールＸの接続表５０１は、モジュール内のモジュールの各端子の接続仕様を示す。モジュールＹの接続表５１１は、モジュール内のモジュールの各端子の接続仕様を示す。
【００２９】
モジュールＸの接続表５０１は、例えば、ＰｏｒｔＮａｍｅ、Ｂｉｔ、Ｉ／Ｏ、Ｃｏｎｎｅｃｔｉｏｎ、Ｎｏｔｅのフィールドを含む。モジュールＸの接続表５０１の各フィールドに情報が設定されることにより、レコード（５０２−１〜５０２−３）として記憶される。モジュールＸの接続表５０１は、ＲＡＭ３０３やディスク３０５などの記憶装置に記憶される。
【００３０】
ＰｏｒｔＮａｍｅのフィールドには、モジュールＸの端子を示す識別情報として端子名が設定される。Ｂｉｔのフィールドには、端子のビット幅が設定される。Ｉ／Ｏのフィールドには、端子が入力端子であるか出力端子であるかの入出力属性を示す属性情報が設定される。出力端子である場合、「Ｏｕｔ」が設定され、入力端子である場合、「Ｉｎ」が設定される。Ｃｏｎｎｅｃｔｉｏｎのフィールドには、接続先、固定値、またはオープンなどの接続に関する情報が設定される。入力端子または出力端子に接続される場合、接続先の識別情報が設定される。入力値をクリップさせる入力端子の場合、クリップさせる値が固定値として設定される。オープン端子の場合、「ＯＰＥＮ」が設定される。Ｎｏｔｅのフィールドには、各端子についての設計者による注釈が設定される。
【００３１】
モジュールＸの接続表５０１によれば、端子Ｐｏｒｔ＿Ａは、出力端子であり、モジュールＹの端子Ｐｏｒｔ＿Ｄに接続される。モジュールＸの接続表５０１によれば、端子Ｐｏｒｔ＿Ｂは、入力端子であり、“１’ｂ１”に固定される。モジュールＸの接続表５０１によれば、端子Ｐｏｒｔ＿Ｃは、出力端子であり、オープン端子である。
【００３２】
モジュールＹの接続表５１１のフィールドは、モジュールＸの接続表５０１のフィールドと同じであるため、各フィールドの詳細な説明を省略する。モジュールＹの接続表５１１の各フィールドに情報が設定されることにより、レコード（５１２−１と５１２−２）として記憶される。モジュールＹの接続表５１１は、ＲＡＭ３０３やディスク３０５などの記憶装置に記憶される。
【００３３】
モジュールＹの接続表５１１によれば、端子Ｐｏｒｔ＿Ｄは、入力端子であり、モジュールＸの端子Ｐｏｒｔ＿Ａに接続される。モジュールＹの接続表５１１によれば、端子Ｐｏｒｔ＿Ｅは、入力端子であり、“１’ｂ０”に固定される。
【００３４】
そして、具体的には、端子情報取得部４０１は、接続仕様情報５００に含まれる各モジュールの接続表から、Ｃｏｎｎｅｃｔｉｏｎのフィールドに「ＯＰＥＮ」が設定されたレコードを、オープン端子の判定の第１対象端子を示す端子情報として抽出する。例えば、第１対象端子を示す端子情報としてレコード５０２−３が抽出される。また、具体的には、端子情報取得部４０１は、各モジュールの接続表から、Ｃｏｎｎｅｃｔｉｏｎのフィールドに固定値が設定されたレコードを、第２対象端子を示す端子情報として抽出する。例えば、第２対象端子を示す端子情報としてレコード５０２−２とレコード５１２−２とが抽出される。また、具体的には、端子情報取得部４０１は、各モジュールの接続表から、Ｃｏｎｎｅｃｔｉｏｎのフィールドに接続先の端子名が設定されたレコードを、第３対象端子を示す端子情報として抽出する。例えば、第３対象端子を示す端子情報としてレコード５０２−１とレコード５１２−１とが抽出される。
【００３５】
ここで、ネットリスト取得部４０２から出力部４０６までの各処理を実施例１と実施例２を挙げて詳細に説明する。本実施の形態では、モジュールＸの端子Ｐｏｒｔ＿Ｃが、組み上げたモジュールＺを示すネットリストにおいて、オープン端子となっているかを判定する。以下実施例１では、モジュールＸの端子Ｐｏｒｔ＿Ｃが、オープン端子となっていると判定される判定例１と、モジュールＸの端子Ｐｏｒｔ＿Ｃが、オープン端子となっていないと判定される判定例２と、を示す。また、実施例２では、実施例１と異なるシミュレーション用のネットリストの作成方法例を示す。
【００３６】
（実施例１）
（判定例１）
図６は、判定例１にかかるネットリストが示すモジュール間の接続関係を示す説明図である。判定例１では、オープン端子であるか否かの判定の第１対象端子である端子Ｐｏｒｔ＿Ｃがネットリストにおいてオープン端子となっていると判定される例を示す。
【００３７】
ネットリスト取得部４０２は、各端子のそれぞれについて、接続情報と、入力端子および出力端子のいずれであるかの属性を示す第１属性情報と、を取得する。具体的には、ネットリスト取得部４０２は、複数のモジュールを示すネットリストであって、接続情報と第１属性情報とを含むネットリストを取得する。ここで取得されるネットリストは、例えば、ＶｅｒｉｌｏｇやＶＨＤＬなどのハードウェア記述言語やシステム記述言語によって記述される。
【００３８】
図７は、判定例１にかかるモジュールＺのネットリストを示す説明図である。取得されるネットリスト７００は、モジュールＺのネットリスト７０１と、モジュールＸのネットリスト７０２と、モジュールＹのネットリスト７０３と、を有する。ネットリスト７０１は、ＶｅｒｉｌｏｇＨＤＬによって記述されたモジュールＺの定義文であって、モジュールＺを示す回路情報である。ネットリスト７０１では、モジュールＺの端子宣言文を省略する。例えば、ネットリスト７０１には、モジュールＸとモジュールＹとのそれぞれをインスタンス化するインスタンス構文が記述される。各インスタンス構文には、各モジュールの端子の接続が記述されるため、ネットリスト７０１は、各モジュールＸの端子の接続を示す接続情報である。
【００３９】
モジュールＸのインスタンス構文には、モジュールＸを示すモジュール名と、モジュールＸの端子を示す端子名と、各端子に接続される信号線を示すネット名と、が記述される。モジュールＸのインスタンス構文によれば、モジュールＸの端子Ｐｏｒｔ＿Ａは、信号線ｓｉｇ＿Ｎｕｍｂｅｒ１に接続される。モジュールＸのインスタンス構文によれば、モジュールＸの端子Ｐｏｒｔ＿Ｂの値は、“１’ｂ１”に固定される。モジュールＸのインスタンス構文によれば、モジュールＸの端子Ｐｏｒｔ＿Ｃは、信号線ｓｉｇ＿Ｎｕｍｂｅｒ２に接続される。
【００４０】
また、モジュールＹのインスタンス構文には、モジュールＹの端子と、モジュールＹの端子に接続される信号を示すネット名と、が記述される。モジュールＹのインスタンス構文によれば、モジュールＹの端子Ｐｏｒｔ＿Ｄは、信号線ｓｉｇ＿Ｎｕｍｂｅｒ１に接続される。モジュールＹのインスタンス構文によれば、モジュールＹの端子Ｐｏｒｔ＿Ｅの値は、“１’ｂ０”に固定される。
【００４１】
つぎに、ネットリスト生成部４０３は、各端子のそれぞれについて、取得した第１属性情報が示す属性の反対の属性を示す第２属性情報を生成する。また、ネットリスト生成部４０３は、取得された接続情報に基づいて、各端子のうち、値が固定値となる第１端子について第２属性情報を生成しない。また、ネットリスト生成部４０３は、各端子のうち、第２属性情報が出力端子であることを示す端子の値を特定値とする出力情報を生成する。特定値は、例えば、１または０の論理値である。特定値については、予め設計者によって定められ、ＲＡＭ３０３やディスク３０５などの記憶装置に記憶される。具体的には、第２属性情報と出力情報とは、各モジュールが定義された定義文であって、各モジュールを示すネットリストである。
【００４２】
具体的には、ネットリスト生成部４０３は、ネットリスト７０１から、ネットリスト７０１に記述されたインスタンス構文のモジュール名と、接続先が記述された端子名または接続先および固定値のいずれも記述されていない端子名と、の組み合わせを検出する。ここでは、図７に示す○で囲われた端子名と、当該端子名が記述されたインスタンス構文のモジュール名と、の組み合わせが検出される。接続先が関連付けて記述された端子名と、接続先および固定値のいずれも関連付けて記述されていない端子名と、のいずれかが示す端子は、各端子のうちの第１端子以外の第２端子である。第１端子は、固定値が関連付けて記述された端子名が示す端子である。
【００４３】
そして、ネットリスト生成部４０３は、検出した組み合わせの各々について、ネットリスト７０１から、組み合わせのモジュール名に基づいて、モジュールの定義文を検索する。組み合わせの端子名に基づいて、検索したモジュールの定義文に含まれる端子定義文に記述された入出力属性を反対になるように変換する。例えば、ネットリスト生成部４０３は、「Ｏｕｔｐｕｔ」であれば、「Ｉｎｐｕｔ」に変換し、「Ｉｎｐｕｔ」であれば、「Ｏｕｔｐｕｔ」に変換する。
【００４４】
図８は、判定例１にかかる変換前後のモジュールＸのネットリスト例を示す説明図である。ネットリスト７０２は、ＶｅｒｉｌｏｇＨＤＬによって記述されたモジュールＸの定義文であって、モジュールＸを示す回路情報である。ネットリスト７０２では、詳細な論理回路記述を省略する。ネットリスト生成部４０３は、例えば、ネットリスト７０２に記述された端子Ｐｏｒｔ＿Ａの端子宣言文の入出力属性情報を「Ｏｕｔｐｕｔ」から「Ｉｎｐｕｔ」に変換する。ネットリスト生成部４０３は、例えば、ネットリスト７０２に記述された端子Ｐｏｒｔ＿Ｃの端子宣言文の入出力属性情報を「Ｏｕｔｐｕｔ」から「Ｉｎｐｕｔ」に変換する。これにより、ネットリスト生成部４０３は、ネットリスト７０１と、入出力属性情報が変換されたネットリスト８０１と、を有するネットリスト８００を生成する。
【００４５】
図９は、判定例１にかかる変換前後のモジュールＹのネットリスト例を示す説明図である。ネットリスト７０３は、ＶｅｒｉｌｏｇＨＤＬによって記述されたモジュールＹの定義文であって、モジュールＹを示す回路情報である。ネットリスト７０３では、詳細な論理回路記述を省略する。ネットリスト生成部４０３は、例えば、ネットリスト７０３に記述された端子Ｐｏｒｔ＿Ｄの端子宣言文の属性情報を「Ｉｎｐｕｔ」から「Ｏｕｔｐｕｔ」に変換したネットリスト９０１を生成する。
【００４６】
また、シミュレーションにおいて入出力属性が出力である端子の出力値を特定値とするために、ネットリスト生成部４０３は、入出力属性情報を「Ｉｎｐｕｔ」から「Ｏｕｔｐｕｔ」に変換した端子の値を特定値とすることを示す出力情報を追加する。特定値は、設計者によって予め定められ、ＲＡＭ３０３、ディスク３０５などの記憶装置に記憶される。出力情報は、図９の例では、「ａｓｓｉｇｎ」定義文であり、端子Ｐｏｒｔ＿Ｅの値が“１’ｂ１”に固定される。これにより、ネットリスト生成部４０３は、ネットリスト７０１と、ネットリスト８０１と、ネットリスト９０１と、を含むネットリスト８００を生成する。また、生成されたネットリスト８００は、ＲＡＭ３０３やディスク３０５などの記憶装置に記憶される。
【００４７】
つぎに、アサーション記述情報生成部４０４は、取得した端子情報が示す第１対象端子の状態がハイインピーダンス状態であるか否かを判定することを示すアサーション記述情報を生成する。アサーション記述情報は、設計仕様を記述するアサーション言語によって記述された情報である。
【００４８】
図１０は、アサーション記述情報例を示す説明図である。例えば、アサーション記述情報生成部４０４は、第１対象端子を示す端子情報として取得したレコード５０２−３を含む接続表５０１が示すモジュール名と、レコード５０２−３に含まれるＰｏｒｔＮａｍｅのフィールドに設定された端子名と、を特定する。そして、アサーション記述情報生成部４０４は、特定したモジュール名と、特定した端子名と、によって、左辺の“モジュールＸ．Ｐｏｒｔ＿Ｃ”を生成する。
【００４９】
そして、アサーション記述情報生成部４０４は、レコード５０２−３に含まれるＢｉｔのフィールドに設定されたビット幅に基づいて、ハイインピーダンス状態を示す右辺の“１’ｂｚ”を生成する。これにより、アサーション記述情報生成部４０４は、生成した右辺と生成した左辺とを組み合わせたアサーション記述情報１０００を生成する。アサーション記述情報１０００によれば、端子Ｐｏｒｔ＿Ｃの状態がハイインピーダンス状態でない場合に、エラーが出力される。また、生成されたアサーション記述情報１０００は、ＲＡＭ３０３やディスク３０５などの記憶装置に記憶される。
【００５０】
また、アサーション記述情報生成部４０４は、第２対象端子を示す端子情報を示す第２対象端子の値が第２特定値となっているか否かを判定することを示すアサーション記述情報を生成する。第２特定値については、接続仕様情報５００に含まれる。例えば、端子Ｐｏｒｔ＿Ｂについての第２特定値は、レコード５０２−２に含まれるＣｏｎｎｅｃｔｉｏｎのフィールドに設定された“１’ｂ１”である。また、例えば、端子Ｐｏｒｔ＿Ｅについての第２特定値は、レコード５１２−２に含まれるＣｏｎｎｅｃｔｉｏｎのフィールドに設定された“１’ｂ０”である。
【００５１】
また、判定部４０５は、取得された接続情報と生成された第２属性情報とに基づいて、各端子のうち、第２属性情報が出力端子であることを示す端子の値を特定値とした場合における各端子の状態をシミュレーションする。これにより、判定部４０５は、端子情報が示す第１対象端子の状態がハイインピーダンス状態となるかを判定する。具体的には、判定部４０５は、ネットリスト８００と、アサーション記述情報１０００と、に基づいて、各端子の状態をシミュレーションすることにより、第１対象端子の状態がハイインピーダンス状態となるとエラーを出力する。
【００５２】
また、判定部４０５は、各端子のそれぞれについて取得された接続情報と、第１端子のそれぞれについて取得された第１属性情報と、第２端子のそれぞれについて生成された第２属性情報と、に基づいて、各端子の状態をシミュレーションする。これにより、さらに、判定部４０５は、第２対象端子が第２特定値となるかを判定する。
【００５３】
また、出力部４０６は、判定部４０５による判定結果を出力する。例えば、出力部４０６は、第１対象端子の状態がハイインピーダンス状態となる場合、第１対象端子がオープン端子であることを出力し、第１対象端子の状態がハイインピーダンス状態とならない場合、第１対象端子がオープン端子とならないことを出力する。
【００５４】
図１１は、判定例１における判定結果を示す説明図である。第１対象端子である端子Ｐｏｒｔ＿Ｃの状態はハイインピーダンス状態となり、端子Ｐｏｒｔ＿Ｃはオープン端子であると判定される。また、第２対象端子である端子Ｐｏｒｔ＿Ｂの値は“１’ｂ１”となり、端子Ｐｏｒｔ＿Ｂはクリップ接続となっている端子であると判定される。第２対象端子である端子Ｐｏｒｔ＿Ｅの値は“１’ｂ０”となり、端子Ｐｏｒｔ＿Ｅはクリップ接続となっている端子であると判定される。また、第３対象端子である端子Ｐｏｒｔ＿Ａの値と第３対象端子である端子Ｐｏｒｔ＿Ｄの値とは一致するため、端子Ｐｏｒｔ＿Ａと端子Ｐｏｒｔ＿Ｄとは端子間接続となっている端子であると判定される。
【００５５】
（判定例２）
図１２は、判定例２にかかるネットリストが示すモジュール間の接続関係を示す説明図である。判定例２では、オープン端子であるか否かの判定の第１対象端子である端子Ｐｏｒｔ＿Ｃがネットリストにおいてオープン端子となっていないと判定される例を示す。図１２に示すように、端子Ｐｏｒｔ＿Ｃが誤って端子Ｐｏｒｔ＿Ｅに接続される。各部の処理は、判定例１と同じである。
【００５６】
図１３は、判定例２にかかるモジュールＺのネットリストを示す説明図である。ネットリスト１３００は、判定例１にかかるネットリスト７００と同様に記述される。モジュールＸのインスタンス構文によれば、モジュールＸの端子Ｐｏｒｔ＿Ａは、信号線ｓｉｇ＿Ｎｕｍｂｅｒ１に接続される。モジュールＸのインスタンス構文によれば、モジュールＸの端子Ｐｏｒｔ＿Ｂの値は、“１’ｂ１”に固定される。モジュールＸのインスタンス構文によれば、モジュールＸの端子Ｐｏｒｔ＿Ｃは、信号線ｓｉｇ＿Ｎｕｍｂｅｒ２に接続される。
【００５７】
モジュールＹのインスタンス構文によれば、モジュールＹの端子Ｐｏｒｔ＿Ｄは、信号線ｓｉｇ＿Ｎｕｍｂｅｒ１に接続される。モジュールＹのインスタンス構文によれば、モジュールＹの端子Ｐｏｒｔ＿Ｅの値は、信号線ｓｉｇ＿Ｎｕｍｂｅｒ２に接続される。
【００５８】
つぎに、ネットリスト生成部４０３は、判定例１で説明したように、ネットリスト１３００に基づいて、各端子のうち、値が固定値となる第１端子以外の第２端子の入出力属性を反対にしたネットリストを生成する。入出力属性を反対にしたモジュールＸのネットリストは、判定例１と同一のネットリスト８０１であるため、詳細な説明を省略する。
【００５９】
図１４は、判定例２にかかる変換前後のモジュールＹのネットリスト例を示す説明図である。ネットリスト生成部４０３は、例えば、ネットリスト７０３に記述された端子Ｐｏｒｔ＿Ｄの端子宣言文の入出力属性情報を「Ｉｎｐｕｔ」から「Ｏｕｔｐｕｔ」に変換する。また、ネットリスト生成部４０３は、例えば、ネットリスト７０３に記述された端子Ｐｏｒｔ＿Ｅの端子宣言文の入出力属性情報を「Ｉｎｐｕｔ」から「Ｏｕｔｐｕｔ」に変換する。
【００６０】
また、ネットリスト生成部４０３は、入出力属性情報を「Ｉｎｐｕｔ」から「Ｏｕｔｐｕｔ」に変換した端子の値を特定値とすることを示す出力情報を追加する。出力情報は、各端子の値を固定する「ａｓｓｉｇｎ」定義文である。図１４の例では、端子Ｐｏｒｔ＿Ｄと端子Ｐｏｒｔ＿Ｅのそれぞれの値が“１’ｂ１”に固定される。これにより、ネットリスト生成部４０３は、ネットリスト１３０１と、入出力属性を反対にしたネットリスト８０１と、入出力属性を反対にしたネットリスト１４０１と、を含むネットリスト１４００を生成する。また、ネットリスト１４００は、ＲＡＭ３０３やディスク３０５などの記憶装置に記憶される。
【００６１】
そして、判定部４０５は、ネットリスト１４００と、アサーション記述情報１０００と、に基づいて、各端子の状態をシミュレーションする。アサーション記述情報１０００は、判定例１と同一であるため、詳細な説明を省略する。出力部４０６は、端子Ｐｏｒｔ＿Ｃの状態がハイインピーダンス状態とならない場合、端子Ｐｏｒｔ＿Ｃがオープン端子でないことを出力する。
【００６２】
図１５は、判定例２における判定結果を示す説明図である。端子Ｐｏｒｔ＿Ｃは、端子Ｐｏｒｔ＿Ｅに接続されている。また、端子Ｐｏｒｔ＿Ｅの値が“１’ｂ１”に固定されているため、端子Ｐｏｒｔ＿Ｃの値は“１’ｂ１”となり、端子Ｐｏｒｔ＿Ｃの状態がハイインピーダンス状態とならないため、アサーションによってエラーが出力される。
【００６３】
このように、判定装置１００は、ネットリスト１４００に基づいて各端子の状態のシミュレーションを行うことにより、第１対象端子の状態がハイインピーダンス状態となるか判定する。これにより、オープン端子の正当性をシミュレーションによって検証することができる。したがって、検証の効率化を図ることができる。また、接続仕様情報５００に示したように、モジュールＸの端子Ｐｏｒｔ＿Ｃは、オープン端子であるが、ネットリスト７００におけるモジュールＸのインスタンス構文のように、信号線ｓｉｇ＿Ｎｕｍｂｅｒ２に接続されるように記述される場合がある。この場合、信号線ｓｉｇ＿Ｎｕｍｂｅｒ２が、他の信号線や端子などに接続されている状態か、またはいずれにも接続されていないオープン状態かはインスタンス構文だけでは判定できない。そのため、ネットリスト７００だけで第１対象端子がオープン端子となっているかを確認するには、設計者の操作により、信号名を辿らなければならないため、検証に時間がかかる。このように、本実施の形態にかかる判定装置１００によれば、設計者の操作によりオープン端子となっているかを確認する場合と比較して、検証時間を低減させることができる。したがって、端子の接続に関する検証の効率化を図ることができる。
【００６４】
（実施例１にかかる判定装置１００による判定処理手順例）
図１６および図１７は、実施例１にかかる判定装置による判定処理手順例を示すフローチャートである。図１６および図１７の例は、判定例１で用いたネットリスト７００を用いて示す。まず、判定装置１００は、各モジュールの接続表を有する接続仕様情報５００を取得する（ステップＳ１６０１）。判定装置１００は、接続仕様情報５００からオープン端子であるか否かの判定の第１対象端子を示す端子情報を抽出する（ステップＳ１６０２）。
【００６５】
判定装置１００は、オープン端子であるか否かの判定の第１対象端子のアサーション記述情報１０００を生成する（ステップＳ１６０３）。判定装置１００は、接続仕様情報５００から、クリップ接続であるか否かの判定の第２対象端子を示す端子情報と、端子間接続であるか否かの判定の第３対象端子を示す端子情報と、を抽出する（ステップＳ１６０４）。判定装置１００は、第２対象端子と第３対象端子とのそれぞれのアサーション記述情報１６００を生成する（ステップＳ１６０５）。
【００６６】
判定装置１００は、設計者の操作により、ＲＴＬ設計を行う（ステップＳ１６０６）。判定装置１００は、検証用のネットリスト７００と、アサーション記述情報１６００と、に基づきシミュレーションすることにより、第２対象端子と第３対象端子についての判定を行う（ステップＳ１６０７）。判定装置１００は、判定結果を出力する（ステップＳ１６０８）。判定装置１００は、判定結果を含めた検証結果がＯＫか否かを判断する（ステップＳ１６０９）。例えば、第２対象端子がクリップ接続となっている端子であり、第３対象端子が端子間接続となっている端子であると判定されれば、判定装置１００は、検証結果がＯＫであると判断する。さらに、その他にエラーなどが発生しなければ、判定装置１００は、検証結果がＯＫであると判断する。検証結果がＯＫでないと判断された場合（ステップＳ１６０９：Ｎｏ）、判定装置１００は、ステップＳ１６０６へ戻って、再度ＲＴＬ設計を行う。
【００６７】
一方、検証結果がＯＫであると判断された場合（ステップＳ１６０９：Ｙｅｓ）、判定装置１００は、検証用のネットリスト７００から、トップモジュールのネットリスト７０１を抽出する（ステップＳ１７０１）。判定例１では、トップモジュールはモジュールＺである。つぎに、判定装置１００は、抽出したネットリスト７０１から、固定値となっていない端子を示す端子名と当該端子を有するモジュールを示すモジュール名の組み合わせを検出する（ステップＳ１７０２）。例えば、判定例１では、モジュールＸと端子Ｐｏｒｔ＿Ａとの組み合わせと、モジュールＸと端子Ｐｏｒｔ＿Ｃとの組み合わせと、モジュールＹと端子Ｐｏｒｔ＿Ｅとの組み合わせと、の組み合わせが検出される。
【００６８】
判定装置１００は、検証用のネットリスト７００から、組み合わせのモジュール名が示すモジュールのネットリストを抽出する（ステップＳ１７０３）。判定例１では、モジュールＸのネットリスト７０２とモジュールＹのネットリスト７０３とが抽出される。判定装置１００は、抽出したネットリスト７０２，７０３に基づいて、組み合わせの端子名の端子の入出力属性と反対の入出力属性を示す属性情報を含むネットリスト８００を生成する（ステップＳ１７０４）。ここでは、ステップＳ１７０４では、判定装置１００は、反対にした後の入出力属性が出力である端子の値を特定値とする出力情報をネットリスト８００に追加する。そして、判定装置１００は、生成したネットリスト８００と、アサーション記述情報１０００，１６００と、に基づきシミュレーションすることにより、第１対象端子から第３対象端子のそれぞれについての判定を行う（ステップＳ１７０５）。
【００６９】
判定装置１００は、判定結果を出力する（ステップＳ１７０６）。判定装置１００は、判定結果を含めた検証結果がＯＫか否かを判断する（ステップＳ１７０７）。例えば、第１対象端子がオープンとなり、第２対象端子がクリップ接続となっている端子であり、第３対象端子が端子間接続となっている端子であると判定されれば、判定装置１００は、検証結果がＯＫであると判断する。判定例１では、第１対象端子である端子Ｐｏｒｔ＿Ｃの状態はハイインピーダンス状態となり、端子Ｐｏｒｔ＿Ｃはオープン端子であると判定される。また、第２対象端子である端子Ｐｏｒｔ＿Ｂの値は“１’ｂ１”となり、端子Ｐｏｒｔ＿Ｂはクリップ接続となっている端子であると判定される。第２対象端子である端子Ｐｏｒｔ＿Ｅの値は“１’ｂ０”となり、端子Ｐｏｒｔ＿Ｅはクリップ接続となっている端子であると判定される。また、第３対象端子である端子Ｐｏｒｔ＿Ａの値と第３対象端子である端子Ｐｏｒｔ＿Ｄの値とは一致するため、端子Ｐｏｒｔ＿Ａと端子Ｐｏｒｔ＿Ｄとは端子間接続となっている端子であると判定される。さらに、その他にエラーなどが発生しなければ、判定装置１００は、検証結果がＯＫであると判断する。
【００７０】
検証結果がＯＫでない場合（ステップＳ１７０７：Ｎｏ）、判定装置１００は、ステップＳ１６０６へ戻る。検証結果がＯＫである場合（ステップＳ１７０７：Ｙｅｓ）、判定装置１００は、一連の処理を終了する。
【００７１】
（実施例２）
実施例２では、第１属性情報として接続仕様情報５００を取得し、接続仕様情報５００に含まれる各接続表に基づいて、第２属性情報および出力情報を含むネットリストを生成する。実施例２は、実施例１と同一構成について同一符号を付し、実施例１と同一機能や構成についての詳細な説明を省略する。
【００７２】
図１８は、実施例２にかかるネットリストの生成例を示す説明図である。ネットリスト生成部４０３は、ネットリスト７０１から、ネットリスト７０１に記述されたインスタンス構文のモジュール名と、固定値となることが記述されていない端子名と、の組み合わせを検出する。ここで、検出される組み合わせは、実施例１で説明した判定例１と同一とする。
【００７３】
そして、ネットリスト生成部４０３は、検出した組み合わせのうち、モジュール名が同一の組み合わせを同一グループにする。そして、ネットリスト生成部４０３は、グループの各々について、グループに含まれる組み合わせの端子名が示す端子の入出力属性を反対にした入出力属性を示す第２属性情報を含むネットリストを生成する。具体的には、ネットリスト生成部４０３は、接続仕様情報５００から、グループに含まれる組み合わせのモジュール名に基づいて、接続表を取得する。
【００７４】
そして、ネットリスト生成部４０３は、グループに含まれる組み合わせのモジュール名のモジュールの定義文を生成する。つぎに、ネットリスト生成部４０３は、グループについて取得した接続表内の各レコードに基づいて、モジュール定義文の端子宣言文を生成する。そして、ネットリスト生成部４０３は、モジュール定義文の端子宣言文に記述される属性情報を設定する。ここでは、ネットリスト生成部４０３は、グループに含まれる端子名の属性情報が示す入出力属性を、グループに含まれる組み合わせの端子名を有するレコードに含まれるＩ／Ｏのフィールドに設定された入出力属性の反対の入出力属性となるようにする。これにより、ネットリスト生成部４０３は、第２属性情報を生成する。
【００７５】
例えば、ネットリスト生成部４０３は、モジュールＸの接続表５０１に基づいて、モジュール定義文を生成する。ネットリスト生成部４０３は、端子Ｐｏｒｔ＿Ａの入出力属性を、端子名として「Ｐｏｒｔ＿Ａ」を含む接続表５０１内のレコードに含まれるＩ／Ｏのフィールドに設定された入出力属性の反対の入出力属性となるようにする。ネットリスト生成部４０３は、端子Ｐｏｒｔ＿Ｃの入出力属性を、端子名として「Ｐｏｒｔ＿Ｃ」を含む接続表内のレコードに含まれるＩ／Ｏのフィールドに設定された入出力属性の反対の入出力属性となるようにする。これにより、モジュールＸのネットリスト８０１が生成される。同様に、ネットリスト生成部４０３は、モジュールＹのネットリスト９０１を生成する。
【００７６】
（実施例２にかかる判定装置１００による判定処理手順例）
図１９は、実施例２にかかる判定装置による判定処理手順例を示すフローチャートである。ここでは、実施例２にかかる判定装置１００による判定処理手順と、実施例１にかかる判定装置１００による判定処理手順と、の違う手順についてのみ説明する。図１６に示す処理手順については、実施例２においても同様の処理を行うため、ステップＳ１６０９のＹｅｓの場合の処理について説明する。
【００７７】
検証結果がＯＫであると判断された場合（ステップＳ１６０９：Ｙｅｓ）、判定装置１００は、検証用のネットリスト７００から、トップモジュールのネットリスト７０１を抽出する（ステップＳ１９０１）。上述例では、トップモジュールはモジュールＺである。つぎに、判定装置１００は、抽出したネットリスト７０１から、固定値が設定されていない端子を示す端子名と当該端子を有するモジュールを示すモジュール名の組み合わせを検出する（ステップＳ１９０２）。
【００７８】
つぎに、判定装置１００は、接続仕様情報５００から、組み合わせのモジュール名が示すモジュールの接続表５０１，５１１を抽出する（ステップＳ１９０３）。判定装置１００は、抽出した接続表５０１，５１１に基づいて、組み合わせの端子名の端子の入出力属性と反対の入出力属性を示す属性情報を含むネットリスト８００を生成する（ステップＳ１９０４）。判定装置１００は、生成したネットリスト８００と、アサーション記述情報１０００，１６００と、に基づきシミュレーションすることにより、第１対象端子から第３対象端子のそれぞれについての判定を行う（ステップＳ１９０５）。
【００７９】
判定装置１００は、判定結果を出力する（ステップＳ１９０６）。判定装置１００は、判定結果を含めた検証結果がＯＫか否かを判断する（ステップＳ１９０７）。例えば、第１対象端子がオープン端子であると判定され、第２対象端子がクリップ接続となる端子であると判定され、第３対象端子が端子間接続となる端子であると判定されれば、判定装置１００は、検証結果がＯＫであると判断する。さらに、その他にエラーなどが発生しなければ、判定装置１００は、検証結果がＯＫであると判断する。検証結果がＯＫでない場合（ステップＳ１９０７：Ｎｏ）、判定装置１００は、ステップＳ１６０６へ戻る。検証結果がＯＫである場合（ステップＳ１９０７：Ｙｅｓ）、判定装置１００は、一連の処理を終了する。
【００８０】
以上説明したように、本実施の形態にかかる判定装置は、ネットリスト内の各端子の入出力属性を反対にし、出力属性となった端子の値を特定値にした場合の各端子の状態のシミュレーションにより第１対象端子の状態がハイインピーダンス状態となるか判定する。これにより、オープン端子の正当性をシミュレーションによって検証することができる。したがって、端子の接続に関する検証の効率化を図ることができる。
【００８１】
また、ネットリストにおいて値が固定値となる入力端子は、オープン端子となるかの判定の対象端子と接続されていない。そこで、本実施の形態にかかる判定装置は、値が固定値となる端子の入出力属性を反対にせず、入出力属性を反対にした端子の状態をシミュレーションする。これにより、第１対象端子がオープン端子となっているかの判定に影響しない端子をシミュレーションから除外することができ、検証の効率化を図ることができる。
【００８２】
また、本実施の形態にかかる判定装置は、ネットリストにおいて値が固定値となる端子の入出力属性を反対にせず、各端子の状態をシミュレーションすることにより、さらに、クリップ接続となるかの判定の第２対象端子が、特定値に固定されたかを判定する。これにより、クリップ接続となるかの判定とオープン端子となるかの判定とを同一のシミュレーションにより検証することができる。これにより、検証の効率化を図ることができる。
【００８３】
また、本実施の形態にかかる判定装置は、第１対象端子の状態がハイインピーダンス状態となる場合、第１対象端子がオープン端子であることを出力し、第１対象端子の状態がハイインピーダンス状態とならない場合、第１対象端子がオープン端子でないことを出力する。これにより、第１対象端子がオープン端子であったか否かの判断を容易化することができる。
【００８４】
また、本実施の形態によれば、モジュール間接続における３種類の接続について、すべて正当性を検証することができる。そのため、モジュール間の端子の誤接続により発生しうる故障を低減させることができ、設計品質を向上させることができる。
【００８５】
なお、本実施の形態で説明した判定プログラムは、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。本判定プログラムは、ディスクやＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本算出プログラムは、インターネット等のネットワークを介して配布してもよい。
【００８６】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００８７】
（付記１）コンピュータが、
複数の部分回路に含まれる各端子のうち、オープン端子であるか否かの判定対象の第１対象端子を示す端子情報を取得し、
前記各端子のそれぞれについて、接続情報と、入力端子および出力端子のいずれであるかの属性を示す第１属性情報と、を取得し、
前記各端子のそれぞれについて、取得した前記第１属性情報が示す属性の反対の属性を示す第２属性情報を生成し、
取得した前記接続情報と生成した前記第２属性情報とに基づいて、前記各端子のうち、前記第２属性情報が出力端子であることを示す端子の値を第１特定値とした場合における前記各端子の状態をシミュレーションすることにより、前記端子情報が示す前記第１対象端子の状態がハイインピーダンス状態となるかを判定する、
処理を実行することを特徴とする判定方法。
【００８８】
（付記２）前記生成する処理では、取得した前記接続情報に基づいて、前記各端子のうち、入力値が固定値となる第１端子について前記第２属性情報を生成せず、
前記判定する処理では、前記各端子のうち、前記第１端子以外の第２端子のそれぞれについて取得した前記接続情報と生成した前記第２属性情報と、に基づいて、前記第１対象端子の状態が前記ハイインピーダンス状態となるかを判定することを特徴とする付記１に記載の判定方法。
【００８９】
（付記３）前記コンピュータが、
前記各端子のうち、前記第１対象端子と異なる、クリップ接続であるか否かの判定対象の第２対象端子を示す第２端子情報を取得する処理を実行し、
前記判定する処理では、前記各端子のそれぞれについて取得した前記接続情報と、前記第１端子のそれぞれについて取得した前記第１属性情報と、前記第２端子のそれぞれについて生成した前記第２属性情報と、に基づいて、前記各端子の状態をシミュレーションすることにより、さらに、前記第２端子情報が示す前記第２対象端子が第２特定値となるかを判定することを特徴とする付記２に記載の判定方法。
【００９０】
（付記４）前記コンピュータが、
前記第１対象端子の状態が前記ハイインピーダンス状態となる場合、前記第１対象端子が前記オープン端子であることを示す情報を出力し、前記第１対象端子の状態が前記ハイインピーダンス状態とならない場合、前記第１対象端子が前記オープン端子でないことを示す情報を出力する処理を実行することを特徴とする付記１〜３のいずれか１つに記載の判定方法。
【００９１】
（付記５）コンピュータに、
複数の部分回路に含まれる各端子のうち、オープン端子であるか否かの判定対象の第１対象端子を示す端子情報を取得し、
前記各端子のそれぞれについて、接続情報と、入力端子および出力端子のいずれであるかの属性を示す第１属性情報と、を取得し、
前記各端子のそれぞれについて、取得した前記第１属性情報が示す属性の反対の属性を示す第２属性情報を生成し、
取得した前記接続情報と生成した前記第２属性情報とに基づいて、前記各端子のうち、前記第２属性情報が出力端子であることを示す端子の値を第１特定値とした場合における前記各端子の状態をシミュレーションすることにより、前記端子情報が示す前記第１対象端子の状態がハイインピーダンス状態となるかを判定する、
処理を実行させることを特徴とする判定プログラム。
【００９２】
（付記６）前記生成する処理では、取得した前記接続情報に基づいて、前記各端子のうち、入力値が固定値となる第１端子について前記第２属性情報を生成せず、
前記判定する処理では、前記各端子のうち、前記第１端子以外の第２端子のそれぞれについて取得した前記接続情報と生成した前記第２属性情報と、に基づいて、前記第１対象端子の状態が前記ハイインピーダンス状態となるかを判定することを特徴とする付記５に記載の判定プログラム。
【００９３】
（付記７）前記コンピュータに、
前記各端子のうち、前記第１対象端子と異なる、クリップ接続であるか否かの判定対象の第２対象端子を示す第２端子情報を取得する処理を実行させ、
前記判定する処理では、前記各端子のそれぞれについて取得した前記接続情報と、前記第１端子のそれぞれについて取得した前記第１属性情報と、前記第２端子のそれぞれについて生成した前記第２属性情報と、に基づいて、前記各端子の状態をシミュレーションすることにより、さらに、前記第２端子情報が示す前記第２対象端子が第２特定値となるかを判定することを特徴とする付記６に記載の判定プログラム。
【００９４】
（付記８）前記コンピュータに、
前記第１対象端子の状態が前記ハイインピーダンス状態となる場合、前記第１対象端子が前記オープン端子であることを示す情報を出力し、前記第１対象端子の状態が前記ハイインピーダンス状態とならない場合、前記第１対象端子が前記オープン端子でないことを示す情報を出力する処理を実行させることを特徴とする付記５〜７のいずれか１つに記載の判定プログラム。
【００９５】
（付記９）複数の部分回路に含まれる各端子のうち、オープン端子であるか否かの判定対象の第１対象端子を示す端子情報を取得する端子情報取得部と、
前記各端子のそれぞれについて、接続情報と、入力端子および出力端子のいずれであるかの属性を示す第１属性情報と、を取得するネットリスト取得部と、
前記各端子のそれぞれについて、取得した前記第１属性情報が示す属性の反対の属性を示す第２属性情報を生成するネットリスト生成部と、
取得した前記接続情報と生成した前記第２属性情報とに基づいて、前記各端子のうち、前記第２属性情報が出力端子であることを示す端子の値を第１特定値とした場合における前記各端子の状態をシミュレーションすることにより、前記端子情報が示す前記第１対象端子の状態がハイインピーダンス状態となるかを判定する判定部と、
を有することを特徴とする判定装置。
【００９６】
（付記１０）前記ネットリスト生成部は、取得した前記接続情報に基づいて、前記各端子のうち、入力値が固定値となる第１端子について前記第２属性情報を生成せず、
前記判定部は、前記各端子のうち、前記第１端子以外の第２端子のそれぞれについて取得した前記接続情報と生成した前記第２属性情報と、に基づいて、前記第１対象端子の状態が前記ハイインピーダンス状態となるかを判定することを特徴とする付記９に記載の判定装置。
【００９７】
（付記１１）前記端子情報取得部は、前記各端子のうち、前記第１対象端子と異なる、クリップ接続であるか否かの判定対象の第２対象端子を示す第２端子情報を取得し、
前記判定部は、前記各端子のそれぞれについて取得した前記接続情報と、前記第１端子のそれぞれについて取得した前記第１属性情報と、前記第２端子のそれぞれについて生成した前記第２属性情報と、に基づいて、前記各端子の状態をシミュレーションすることにより、さらに、前記第２端子情報が示す前記第２対象端子が第２特定値となるかを判定することを特徴とする付記１０に記載の判定装置。
【００９８】
（付記１２）前記第１対象端子の状態が前記ハイインピーダンス状態となる場合、前記第１対象端子が前記オープン端子であることを示す情報を出力し、前記第１対象端子の状態が前記ハイインピーダンス状態とならない場合、前記第１対象端子が前記オープン端子でないことを示す情報を出力する出力部を有することを特徴とする付記９〜１１のいずれか１つに記載の判定装置。
【００９９】
（付記１３）複数の部分回路に含まれる各端子のうち、オープン端子であるか否かの判定対象の第１対象端子を示す端子情報を取得し、
前記各端子のそれぞれについて、接続情報と、入力端子および出力端子のいずれであるかの属性を示す第１属性情報と、を取得し、
前記各端子のそれぞれについて、取得した前記第１属性情報が示す属性の反対の属性を示す第２属性情報を生成し、
取得した前記接続情報と生成した前記第２属性情報とに基づいて、前記各端子のうち、前記第２属性情報が出力端子であることを示す端子の値を第１特定値とした場合における前記各端子の状態をシミュレーションすることにより、前記端子情報が示す前記第１対象端子の状態がハイインピーダンス状態となるかを判定する、
処理をコンピュータに実行させる判定プログラムを記録したことを特徴とする記録媒体。
【符号の説明】
【０１００】
１００  判定装置
１０１  端子情報
４０１  端子情報取得部
４０２  ネットリスト取得部
４０３  ネットリスト生成部
４０４  アサーション記述情報生成部
４０５  判定部
４０６  出力部
５００  接続仕様情報
５０１，５１１  接続表
７００，７０１〜７０３，８００，８０１，９０１，１３００，１３０１，１４００，１４０１  ネットリスト
１０００，１６００  アサーション記述情報
ｘ，ｙ，ｚ，Ｘ，Ｙ，Ｚ，ｍ１，ｍ２，ｍ３  モジュール
Ｐ１〜Ｐ７，ａ〜ｄ，Ｐｏｒｔ＿Ａ，Ｐｏｒｔ＿Ｂ，Ｐｏｒｔ＿Ｃ，Ｐｏｒｔ＿Ｄ，Ｐｏｒｔ＿Ｅ  端子
【図１】
2015056076.tif 000003
【図２】
2015056076.tif 000004
【図３】
2015056076.tif 000005
【図４】
2015056076.tif 000006
【図５】
2015056076.tif 000007
【図６】
2015056076.tif 000008
【図７】
2015056076.tif 000009
【図８】
2015056076.tif 000010
【図９】
2015056076.tif 000011
【図１０】
2015056076.tif 000012
【図１１】
2015056076.tif 000013
【図１２】
2015056076.tif 000014
【図１３】
2015056076.tif 000015
【図１４】
2015056076.tif 000016
【図１５】
2015056076.tif 000017
【図１６】
2015056076.tif 000018
【図１７】
2015056076.tif 000019
【図１８】
2015056076.tif 000020
【図１９】
2015056076.tif 000021