(57)【要約】【課題】設計者の作業負担の軽減および設計期間の短縮化を図ること。【解決手段】検証支援装置３００は、入力部３０１と、指定部３０２と、検出部３０３と、抽出部３０４と、作成部３０５と、から構成されている。入力部３０１により、論理回路記述情報３１０が入力された場合、指定部３０２により、未処理のクロックドメインレジスタ（レジスタＲ１、Ｒ５）を指定する。検出部３０３により、再収斂レジスタ（レジスタＲ８）を検出し、抽出部３０４により、再収斂論理５００を抽出する。そして、検証プロパティ３０６を作成する。これにより、メタスタビリティが発生しそうなレジスタである再収斂レジスタを自動検出することができる。また、自動検出したレジスタにおいて検証すべき項目（検証プロパティ３０６）を自動作成することができる。【選択図】        図３
2006252438.tif 000002
【特許請求の範囲】
【請求項１】
検証対象の論理回路記述情報の入力を受け付ける入力手段と、
前記検証対象において隣接する一対のクロックドメインのうち一方のクロックドメインからそれぞれデータを出力する２以上のレジスタを指定する指定手段と、
前記入力手段によって入力された検証対象の論理回路記述情報と、前記指定手段によって指定された２以上のレジスタとに基づいて、他方のクロックドメインにおいて収斂する単一のレジスタ（以下、「再収斂レジスタ」という）を検出する検出手段と、
を備えることを特徴とする検証支援装置。
【請求項２】
前記検出手段は、
前記２以上のレジスタからファンアウト側論理をたどることによって前記他方のクロックドメインにおいて収斂する再収斂レジスタを検出することを特徴とする請求項１に記載の検証支援装置。
【請求項３】
前記検出手段によって検出された再収斂レジスタから前記２以上のレジスタまでの論理（以下、「再収斂論理」という）を抽出する抽出手段と、
前記抽出手段によって抽出された再収斂論理に基づいて、前記検証対象を検証する検証プロパティを作成する作成手段と、
を備えることを特徴とする請求項１または２に記載の検証支援装置。
【請求項４】
検証対象の論理回路記述情報の入力を受け付ける入力工程と、
前記検証対象において隣接する一対のクロックドメインのうち一方のクロックドメインからそれぞれデータを出力する２以上のレジスタを指定する指定工程と、
前記入力工程によって入力された検証対象の論理回路記述情報と、前記指定工程によって指定された２以上のレジスタとに基づいて、他方のクロックドメインにおいて収斂する単一のレジスタ（以下、「再収斂レジスタ」という）を検出する検出工程と、
を含んだことを特徴とする検証支援方法。
【請求項５】
前記検出工程は、
前記２以上のレジスタからファンアウト側論理をたどることによって前記他方のクロックドメインにおいて収斂する再収斂レジスタを検出することを特徴とする請求項４に記載の検証支援方法。
【請求項６】
前記検出工程によって検出された再収斂レジスタから前記２以上のレジスタまでの論理（以下、「再収斂論理」という）を抽出する抽出工程と、
前記抽出工程によって抽出された再収斂論理に基づいて、前記検証対象を検証する検証プロパティを作成する作成工程と、
を含んだことを特徴とする請求項４または５に記載の検証支援方法。
【請求項７】
検証対象の論理回路記述情報の入力を受け付けさせる入力工程と、
前記検証対象において隣接する一対のクロックドメインのうち一方のクロックドメインからそれぞれデータを出力する２以上のレジスタを指定させる指定工程と、
前記入力工程によって入力された検証対象の論理回路記述情報と、前記指定工程によって指定された２以上のレジスタとに基づいて、他方のクロックドメインにおいて収斂する単一のレジスタ（以下、「再収斂レジスタ」という）を検出させる検出工程と、
をコンピュータに実行させることを特徴とする検証支援プログラム。
【請求項８】
前記検出工程は、
前記２以上のレジスタからファンアウト側論理をたどることによって前記他方のクロックドメインにおいて収斂する再収斂レジスタを検出させることを特徴とする請求項７に記載の検証支援プログラム。
【請求項９】
前記検出工程によって検出された再収斂レジスタから前記２以上のレジスタまでの論理（以下、「再収斂論理」という）を抽出させる抽出工程と、
前記抽出工程によって抽出された再収斂論理に基づいて、前記検証対象を検証する検証プロパティを作成させる作成工程と、
をコンピュータに実行させることを特徴とする請求項７または８に記載の検証支援プログラム。
【請求項１０】
請求項７〜９のいずれか一つに記載の検証支援プログラムを記録したコンピュータに読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、検証対象の検証に用いる検証プロパティを作成する検証支援装置、検証支援方法、検証支援プログラム、および記録媒体に関する。
【背景技術】
【０００２】
ＬＳＩ設計では、従来から設計期間の短縮による作業効率化が要求されている一方、ＬＳＩが正しく動作するかどうかを検証する検証作業が必要不可欠であり、特に、大規模化、高機能化、高速化および低消費電力化が要求されているＬＳＩについては、高品質を維持するためにもこの検証作業は重要である。
【０００３】
このようなＬＳＩのうち非同期マルチクロック論理回路は、２以上の周期が異なるクロックによってドライブする論理回路である。非同期マルチクロック論理回路は、あるクロックでドライブする回路から他のクロックでドライブする回路へのデータの受け渡し、すなわち、クロックドメインの境界でのデータの受け渡しにおいては、メタスタビリティによる値伝播の乱れ、具体的には、クロックドメインを値が伝播する際に１サイクルだけ値の伝播が遅れるまたは早まることにより障害が発生する。
【０００４】
従来においては、シミュレーションもしくはスタティック検証環境において論理回路にメタスタビリティを積極的に発生させ、その影響が通常検証（メタスタビリティ発生なし）の検証プロパティに違反するかどうかで検証を行なっている。なお、関連する従来技術としては、下記特許文献１，２に記載の発明が開示されている。
【０００５】
【特許文献１】特開平６−８３９０１号公報
【特許文献２】特開平１０−１１７１８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来技術では、非同期マルチクロック論理回路においてクロックドメインの数が膨大であり、クロックドメインからメタスタビリティによる問題が発生する箇所を、設計者の手作業によって探していた。また、メタスタビリティによる問題が発生する箇所は、外部ポートに変化が現れなかったり、他の信号により変化がマスクされたりするため、どのような検証が有効であるかも、設計者自身で解析しなければならなかった。したがって、設計者に多大な負担が生じ、設計者の設計労力の増大および設計期間の長期化を招くという問題があった。
【０００７】
この発明は、上述した従来技術による問題点を解消するため、設計者の作業負担の軽減および設計期間の短縮化を図ることができる検証支援装置、検証支援方法、検証支援プログラム、および記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、この発明にかかる検証支援装置、検証支援方法、検証支援プログラム、および記録媒体は、検証対象の論理回路記述情報の入力を受け付け、前記検証対象において隣接する一対のクロックドメインのうち一方のクロックドメインからそれぞれデータを出力する２以上のレジスタを指定し、入力された検証対象の論理回路記述情報と、指定された２以上のレジスタとに基づいて、他方のクロックドメインにおいて収斂する単一のレジスタ（以下、「再収斂レジスタ」という）を検出することを特徴とする。
【０００９】
また、上記発明において、前記２以上のレジスタからファンアウト側論理をたどることによって前記他方のクロックドメインにおいて収斂する再収斂レジスタを検出することとしてもよい。
【００１０】
また、上記発明において、検出された再収斂レジスタから前記２以上のレジスタまで論理（以下、「再収斂論理」という）を抽出し、抽出された再収斂論理に基づいて、前記検証対象を検証する検証プロパティを作成することとしてもよい。
【００１１】
また、上記発明において、前記再収斂レジスタから前記２以上のレジスタまでファンイン側論理をたどることにより、当該ファンイン先のレジスタと前記再収斂レジスタとからなる再収斂論理を抽出することとしてもよい。
【００１２】
また、上記発明において、前記再収斂レジスタから前記２以上のレジスタまでファンイン側論理をたどることにより、当該ファンイン先のレジスタに前記再収斂レジスタからの到達サイクル数を付与して、前記ファンイン先のレジスタと前記再収斂レジスタとからなる再収斂論理を抽出し、前記各ファンイン先のレジスタに付与された到達サイクル数を用いて、前記検証対象を検証する検証プロパティを作成することとしてもよい。
【００１３】
これらの発明によれば、メタスタビリティが発生しそうなレジスタを、自動的に検出することができる。また、自動検出したレジスタにおいて検証すべき項目（検証プロパティ）を自動的に作成することができる。
【発明の効果】
【００１４】
本発明にかかる検証支援装置、検証支援方法、検証支援プログラム、および記録媒体によれば、設計者の作業負担の軽減および設計期間の短縮化を図ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１５】
以下に添付図面を参照して、この発明にかかる検証支援装置、検証支援方法、検証支援プログラム、および記録媒体の好適な実施の形態を詳細に説明する。
【００１６】
（検証支援装置のハードウェア構成）
まず、この発明の実施の形態にかかる検証支援装置のハードウェア構成について説明する。図１は、この発明の実施の形態にかかる検証支援装置のハードウェア構成を示すブロック図である。
【００１７】
図１において、検証支援装置は、ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、ＨＤＤ（ハードディスクドライブ）１０４と、ＨＤ（ハードディスク）１０５と、ＦＤＤ（フレキシブルディスクドライブ）１０６と、着脱可能な記録媒体の一例としてのＦＤ（フレキシブルディスク）１０７と、ディスプレイ１０８と、Ｉ／Ｆ（インターフェース）１０９と、キーボード１１０と、マウス１１１と、スキャナ１１２と、プリンタ１１３と、を備えている。また、各構成部はバス１００によってそれぞれ接続されている。
【００１８】
ここで、ＣＰＵ１０１は、検証支援装置の全体の制御を司る。ＲＯＭ１０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ１０３は、ＣＰＵ１０１のワークエリアとして使用される。ＨＤＤ１０４は、ＣＰＵ１０１の制御にしたがってＨＤ１０５に対するデータのリード／ライトを制御する。ＨＤ１０５は、ＨＤＤ１０４の制御で書き込まれたデータを記憶する。
【００１９】
ＦＤＤ１０６は、ＣＰＵ１０１の制御にしたがってＦＤ１０７に対するデータのリード／ライトを制御する。ＦＤ１０７は、ＦＤＤ１０６の制御で書き込まれたデータを記憶したり、ＦＤ１０７に記憶されたデータを検証支援装置に読み取らせたりする。
【００２０】
また、着脱可能な記録媒体として、ＦＤ１０７のほか、ＣＤ−ＲＯＭ（ＣＤ−Ｒ、ＣＤ−ＲＷ）、ＭＯ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、メモリーカードなどであってもよい。ディスプレイ１０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ１０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００２１】
Ｉ／Ｆ１０９は、通信回線を通じてインターネットなどのネットワーク１１４に接続され、このネットワーク１１４を介して他の装置に接続される。そして、Ｉ／Ｆ１０９は、ネットワーク１１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ１０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００２２】
キーボード１１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス１１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００２３】
スキャナ１１２は、画像を光学的に読み取り、検証支援装置内に画像データを取り込む。なお、スキャナ１１２は、ＯＣＲ機能を持たせてもよい。また、プリンタ１１３は、画像データや文書データを印刷する。プリンタ１１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００２４】
つぎに、この発明の実施の形態にかかる検証対象の一例について説明する。図２は、この発明の実施の形態にかかる検証対象の一例を示す回路図である。図２において、検証対象２００は、クロックドメインＤ１とクロックドメインＤ２からなるクロックドメイン２０１を有する非同期マルチクロック論理回路である。この検証対象２００において、データは、クロックドメインＤ１側からクロックドメインＤ２側に流れる。図２中、クロックドメイン２０１の境界Ｌ、すなわち、クロックＣＫ１からクロックＣＫ２への切り替わり位置を、点線で示している。
【００２５】
クロックドメインＤ１はクロックＣＫ１でドライブする論理回路の集合であり、レジスタＲ０、Ｒ１、Ｒ４、Ｒ５を有している。また、クロックドメインＤ２は、クロックＣＫ２でドライブする論理回路の集合であり、レジスタＲ２、Ｒ３，Ｒ６〜Ｒ８を有している。なお、クロックドメイン２０１は、あらかじめ設計者の操作入力によって設定してもよく、図示しない解析ツールの解析結果を用いることとしてもよい。
【００２６】
（検証支援装置の機能的構成）
つぎに、この発明の実施の形態にかかる検証支援装置の機能的構成について説明する。図３は、この発明の実施の形態にかかる検証支援装置の機能的構成を示すブロック図である。図３において、検証支援装置３００は、入力部３０１と、指定部３０２と、検出部３０３と、抽出部３０４と、作成部３０５と、から構成されている。
【００２７】
入力部３０１は、検証対象２００の論理回路記述情報３１０の入力を受け付ける。論理回路記述情報３１０は、図２に示した検証対象２００の論理回路記述を示す情報であり、たとえば、ネットリストやＲＴＬのＨＤＬで記述された回路情報が挙げられる。
【００２８】
また、指定部３０２は、検証対象２００において隣接する一対のクロックドメイン２０１のうち一方のクロックドメインからそれぞれデータを出力する２以上のレジスタを指定する。図２を用いて具体的に説明すると、隣接する一対のクロックドメインＤ１およびＤ２のうち、一方のクロックドメインＤ１からそれぞれデータを出力するレジスタＲ１およびＲ５の指定を受け付ける。このように指定されたレジスタＲ１およびＲ５を、「クロックドメインレジスタ」と称す。
【００２９】
また、検出部３０３は、入力部３０１によって入力された検証対象２００の論理回路記述情報３１０と、指定部３０２によって指定された２以上のレジスタとに基づいて、他方のクロックドメインＤ２において収斂する単一のレジスタ（以下、「再収斂レジスタ」という）を検出する。具体的には、検出部３０３は、２以上のレジスタからファンアウト側論理をたどることによって他方のクロックドメインＤ２において収斂する再収斂レジスタを検出する。すなわち、上述した図２の検証対象２００においては、指定部３０２によって指定されたレジスタＲ１およびＲ５からファンアウト側論理をたどることによってクロックドメインＤ２において収斂するレジスタＲ８を再収斂レジスタとして検出する。
【００３０】
ここで、この検出部３０３による検出処理について具体的に説明する。図４は、再収斂レジスタ検出処理をおこなっている検証対象２００を示す回路図である。図４において、クロックドメインレジスタ（レジスタＲ１、Ｒ５）にそれぞれラベル｛ａ｝，｛ｂ｝を割り付ける。そして、図４中、点線矢印で示すようにそれぞれファンアウトし、ファンアウト先のレジスタ（以下、「ファンアウトレジスタ」という）にも同一のラベルを割り付ける。
【００３１】
たとえば、レジスタＲ１からレジスタＲ２までファンアウト側論理をたどると、レジスタＲ１に割り付けられたラベル｛ａ｝をファンアウトレジスタ（レジスタＲ２）にも割り付けられる。また、レジスタＲ２のファンアウト側論理をたどると、レジスタＲ２に割り付けられたラベル｛ａ｝をファンアウトレジスタ（レジスタＲ３）にも割り付けられる。このようにして、ファンアウトを続け、最終的に、ラベル｛ａ｝，｛ｂ｝が割り付けられたレジスタＲ８が、再収斂レジスタとなる。これにより、メタスタビリティが発生しそうなレジスタを、自動的に検出することができる。
【００３２】
また、図３において、抽出部３０４は、検出部３０３によって検出された再収斂レジスタから２以上のレジスタまでの論理（以下、「再収斂論理」という）を抽出する。具体的には、抽出部３０４は、再収斂レジスタから２以上のレジスタまでファンイン側論理をたどることにより、当該ファンイン先のレジスタ（以下、「ファンインレジスタ」という）と再収斂レジスタとからなる再収斂論理を抽出する。
【００３３】
ここで、この抽出部３０４による抽出処理について具体的に説明する。図５は、再収斂論理抽出処理が実行されている検証対象２００を示す回路図である。図５において、再収斂レジスタ（レジスタＲ８）からファンインレジスタ（レジスタＲ１〜Ｒ３，Ｒ５〜Ｒ７）に、再収斂レジスタ（レジスタＲ８）からの到達サイクル数Ｃが伝搬される。
【００３４】
すなわち、上述した図２の検証対象２００においては、再収斂レジスタ（レジスタＲ８）からクロックドメインレジスタ（レジスタＲ１、Ｒ５）までファンイン側論理をたどることにより、ファンインレジスタ（レジスタＲ１〜Ｒ３，Ｒ５〜Ｒ７）と再収斂レジスタ（レジスタＲ８）とからなる再収斂論理５００を抽出する。
【００３５】
たとえば、再収斂レジスタ（レジスタＲ８）の到達サイクル数Ｃを｛０｝とすると、ファンインレジスタ（レジスタＲ３、Ｒ７）の到達サイクル数Ｃは｛１｝、レジスタＲ２およびレジスタＲ６の到達サイクル数Ｃは｛２｝、レジスタＲ１およびレジスタＲ５の到達サイクル数Ｃは｛３｝となる。到達サイクル数Ｃの伝搬は、クロックドメインレジスタ（レジスタＲ１、Ｒ５）で終了する。
【００３６】
この到達サイクル数Ｃが伝搬されたファンインレジスタ（レジスタＲ１〜Ｒ３、Ｒ５〜Ｒ７）と再収斂レジスタ（レジスタＲ８）を含む論理回路を、再収斂論理５００として抽出する。これにより、再収斂レジスタ（レジスタＲ８）の検証には、レジスタＲ０，Ｒ４が不必要であることがわかる。すなわち、再収斂レジスタ（レジスタＲ８）の検証に必要な回路と再収斂レジスタ（レジスタＲ８）からの到達サイクル数Ｃを得ることができる。
【００３７】
また、図３において、作成部３０５は、抽出部３０４によって抽出された再収斂論理に基づいて、検証対象２００を検証する検証プロパティ３０６を作成する。具体的には、作成部３０５は、抽出部３０４によって抽出された再収斂論理に基づいて、各ファンインレジスタに付与された到達サイクル数を用いて、検証対象２００を検証する検証プロパティ３０６を作成する。
【００３８】
作成部３０５は、より具体的には、再収斂論理が得られると、再収斂レジスタの値が１(もしくは０)になる論理を再収斂論理から生成する。生成する論理に使用する変数は、再収斂論理を構成するレジスタの論理変数を、その到達サイクル数をもとに下記のように作成する。
【００３９】
<論理変数>::=prev(<レジスタ名>,<到達サイクル数>)・・・（１）
【００４０】
そして、作成部３０５は、再収斂レジスタが１(もしくは０)という論理式を前件部、上記論理式（１）を後件部として、含意オペレータで接続して、プロパティ言語、たとえばVerilog-HDLなどのハードウェア記述言語を用いて下記の検証プロパティ３０６を作成する。
【００４１】
always( (再収斂レジスタ=1) -> <1になる論理式> )・・・（２）
always( (再収斂レジスタ=0) -> <0になる論理式> )・・・（３）
【００４２】
ここで、この作成部３０５による検証プロパティ作成処理について、上述した図５に示した再収斂論理５００を用いて説明する。再収斂論理５００が得られると、再収斂論理５００を構成するレジスタＲ１〜Ｒ３、Ｒ５〜Ｒ７の論理変数を、その到達サイクル数Ｃをもとに上述した論理式（１）を用いて下記のように設定する。
【００４３】
レジスタＲ１の論理変数⇒prev（Ｒ１，３）・・・（４）
レジスタＲ５の論理変数⇒prev（Ｒ５，３）・・・（５）
レジスタＲ２の論理変数⇒prev（Ｒ２，２）・・・（６）
レジスタＲ６の論理変数⇒prev（Ｒ６，２）・・・（７）
レジスタＲ３の論理変数⇒prev（Ｒ３，１）・・・（８）
レジスタＲ７の論理変数⇒prev（Ｒ７，１）・・・（９）
【００４４】
上記（４）の論理変数は、再収斂レジスタ（レジスタＲ８）の３サイクル前のレジスタＲ１の値をあらわしており、上記（５）の論理変数は、再収斂レジスタ（レジスタＲ８）の３サイクル前のレジスタＲ５の値をあらわしており、上記（６）の論理変数は、再収斂レジスタ（レジスタＲ８）の２サイクル前のレジスタＲ２の値をあらわしており、上記（７）の論理変数は、再収斂レジスタ（レジスタＲ８）の２サイクル前のレジスタＲ６の値をあらわしており、上記（８）の論理変数は、再収斂レジスタ（レジスタＲ８）の１サイクル前のレジスタＲ３の値をあらわしており、上記（９）の論理変数は、再収斂レジスタ（レジスタＲ８）の１サイクル前のレジスタＲ７の値をあらわしている。
【００４５】
そして、上記（４）〜（９）の論理変数から、ＨＤＬ（たとえばVerilog-HDL）を用いて、再収斂レジスタ（レジスタＲ８）に関する下記（１０）〜（１５）の論理式を作成する。
【００４６】
Ｒ８＝（prev（R３，１） && prev（R７，１））・・・・・（１０）
prev（Ｒ３，１）＝prev（Ｒ２，２）・・・・・・・・・・（１１）
prev（Ｒ２，２）＝prev（Ｒ１，３）・・・・・・・・・・（１２）
prev（Ｒ７，１）＝prev（Ｒ６，２）・・・・・・・・・・（１３）
prev（Ｒ６，２）＝prev（Ｒ５，３）・・・・・・・・・・（１４）
!Ｒ８＝（!prev（Ｒ３，１）|| !prev（Ｒ７，１））・・・（１５）
【００４７】
なお、上記論理式（１０）〜（１４）に対応する箇所を、図６に示す。図６は、論理式（１０）〜（１４）との対応関係を示す再収斂論理５００の回路図である。また、上記論理式（１０）、（１５）を論理式（１１）〜（１４）を用いて展開すると、下記論理式（１６）、（１７）を得ることができる。
【００４８】
Ｒ８＝（prev（Ｒ１，３） && prev（Ｒ５，３））・・・・（１６）
!Ｒ８＝（!prev（Ｒ１，３）|| !prev（Ｒ５，３））・・・（１７）
【００４９】
最後に、上記論理式（１６）、（１７）から、再収斂レジスタ（レジスタＲ８）を検証する検証プロパティ３０６を作成する。たとえば、検証プロパティ言語ＰＳＬを用いて記述すると、検証プロパティ３０６は下記（１８）、（１９）のようになる。
【００５０】
[R8が正しく１になることをチェックする検証プロパティ３０６]
assert always( R8 -> ( prev(R1,3) && prev(R5,3) ) @(posedge CK2) ;
・・・（１８）
【００５１】
[R8が正しく０になることをチェックする検証プロパティ３０６]
assert always( !R8 -> ( !prev(R1,3) || !prev(R5,3) ) @(posedge CK2) ; 
・・・（１９）
【００５２】
また、検証部３０７は、いわゆる一般的な検証ツールであり、論理回路記述情報３１０と検証プロパティ３０６が入力されると、検証処理を実行する。図７は、検証部３０７による検証内容を示すタイミングチャートである。図７では、レジスタＲ５にメタスタビリティが発生していることを前提としている。
【００５３】
図２に示した検証対象２００では、レジスタＲ６〜レジスタＲ８の値は、正常な場合には、時刻ｔ１〜ｔ４において一点鎖線の状態となるが、レジスタＲ５のメタスタビリティにより１サイクル遅延している。これにより、時刻ｔ４において、レジスタＲ８の値は「０」であるが、その３サイクル前の時刻ｔ１では、prev（Ｒ１，３）およびprev（Ｒ５，３）が「１」であるため、検証プロパティ３０６（１８）に違反していることとなる。
【００５４】
（検証支援処理手順）
つぎに、この発明の実施の形態にかかる検証支援処理手順について説明する。図８は、この発明の実施の形態にかかる検証支援処理手順を示すフローチャートである。図８において、まず、論理回路記述情報３１０が入力された場合（ステップＳ８０１：Ｙｅｓ）、未処理のクロックドメインレジスタを指定する（ステップＳ８０２）。たとえば、図２に示したように、クロックドメインレジスタであるレジスタＲ１、Ｒ５を指定する。
【００５５】
このあと、再収斂レジスタ検出処理（ステップＳ８０３）、再収斂論理抽出処理（ステップＳ８０４）および検証プロパティ作成処理（ステップＳ８０５）を実行する。そして、未処理のクロックドメインレジスタがある場合（ステップＳ８０６：Ｙｅｓ）、ステップＳ８０２に移行して、未処理のクロックドメインレジスタを指定する。一方、未処理のクロックドメインレジスタがない場合（ステップＳ８０６：Ｎｏ）、一連の処理を終了する。
【００５６】
つぎに、図８に示した再収斂レジスタ検出処理（ステップＳ８０３）について説明する。図９は、図８に示した再収斂レジスタ検出処理を示すフローチャートである。図９において、クロックドメインレジスタにユニークなラベルを付与する（ステップＳ９０１）。たとえば、クロックドメインレジスタに指定されたレジスタＲ１にラベル｛ａ｝、レジスタＲ５にラベル｛ｂ｝を付与する。
【００５７】
このラベル付きクロックドメインレジスタを検出部３０３内の処理リストに追加する（ステップＳ９０２）。そして、処理リストから未処理のレジスタを抽出し（ステップＳ９０３）、抽出されたレジスタに対してファンアウトレジスタがあるか否かを判定する（ステップＳ９０４）。ファンアウトレジスタがある場合（ステップＳ９０４：Ｙｅｓ）、抽出されたレジスタに付与されたラベルを、ファンアウトレジスタに付与して（ステップＳ９０５）、ラベルが付与されたファンアウトレジスタを処理リストに追加する（ステップＳ９０６）。そして、ステップＳ９０３に移行する。
【００５８】
たとえば、ステップＳ９０３で抽出されたレジスタが、ラベル｛ａ｝が付与されたレジスタＲ３の場合、ファンアウトレジスタとなるレジスタＲ８が存在するため、レジスタＲ８にラベル｛ａ｝を付与して、処理リストに追加する。これにより、処理リストのレジスタＲ３が、ラベル｛ａ｝が付与されたレジスタＲ８に更新される。
【００５９】
また、ステップＳ９０３で抽出されたレジスタが、ラベル｛ｂ｝が付与されたレジスタＲ７の場合、ファンアウトレジスタとなる、ラベル｛ａ｝が付与されたレジスタＲ８が存在するため、レジスタＲ８にラベル｛ｂ｝を付与して、処理リストに追加する。これにより、処理リストのレジスタＲ３が、ラベル｛ｂ｝が付与されたレジスタＲ８に更新される。したがって、レジスタＲ８は、２以上のラベル｛ａ｝、｛ｂ｝が付与されたこととなる。
【００６０】
また、ステップＳ９０４において、ファンアウトレジスタがない場合（ステップＳ９０４：Ｎｏ）、処理リストに未処理のレジスタがあるか否かを判定する（ステップＳ９０７）。未処理のレジスタがある場合（ステップＳ９０７：Ｙｅｓ）、ステップＳ９０３に移行して、処理リストから未処理のレジスタを抽出する。一方、未処理のレジスタがない場合（ステップＳ９０７：Ｎｏ）、処理リスト内において２以上のラベルを有するレジスタを抽出する（ステップＳ９０８）。
【００６１】
たとえば、ステップＳ９０３で抽出されたレジスタが、ラベル｛ａ｝が付与されたレジスタＲ８の場合、ファンアウトレジスタが存在しない。また、ステップＳ９０３で抽出されたレジスタが、ラベル｛ｂ｝が付与されたレジスタＲ８の場合も、ファンアウトレジスタが存在しない。したがって、レジスタＲ８は、２以上のラベル｛ａ｝、｛ｂ｝が付与された再収斂レジスタとして抽出されることとなる。
【００６２】
つぎに、図８に示した再収斂論理抽出処理（ステップＳ８０４）について説明する。図１０は、図８に示した再収斂論理抽出処理を示すフローチャートである。図１０において、ステップＳ８０３において再収斂レジスタが検出された場合（ステップＳ１００１：Ｙｅｓ）、再収斂レジスタの到達サイクル数ＣをＣ＝０に設定し（ステップＳ１００２）、抽出部３０４の処理リストに追加する（ステップＳ１００３）。たとえば、ステップＳ８０４において、再収斂レジスタとしてレジスタＲ８が検出された場合、このレジスタＲ８の到達サイクル数ＣをＣ＝０に設定して、処理リストに追加する。
【００６３】
そして、処理リストの中から、未処理のレジスタを抽出し（ステップＳ１００４）。その到達サイクル数Ｃを１つインクリメントする（ステップＳ１００５）。そして、抽出されたレジスタのファンインレジスタを抽出し（ステップＳ１００６）、ステップＳ１００５でインクリメントされた到達サイクル数Ｃをファンインレジスタに割り当てて（ステップＳ１００７）、処理リストに追加する（ステップＳ１００８）。
【００６４】
たとえば、ステップＳ１００４で未処理のレジスタとして、到達サイクル数Ｃ（Ｃ＝０）の再収斂レジスタ（レジスタＲ８）が抽出された場合、レジスタＲ８の到達サイクル数Ｃを１つインクリメントする。そして、レジスタＲ８のファンインレジスタとなるレジスタＲ３、Ｒ７を抽出し、インクリメントされた到達サイクル数Ｃを割り当てる。到達サイクル数が割り当てられたレジスタＲ３、Ｒ７は、未処理のレジスタとして処理リストに追加される。
【００６５】
また、ステップＳ１００９において、ステップＳ１００６で抽出されたファンインレジスタが、ステップＳ１００４で抽出されたレジスタと同一のクロックドメインである場合（ステップＳ１００９：Ｙｅｓ）、ステップＳ１００４に移行して、処理リスト内の未処理のレジスタを抽出する。一方、ファンインレジスタが、ステップＳ１００４で抽出されたレジスタと異なるクロックドメインである場合（ステップＳ１００９：Ｎｏ）、再収斂論理を抽出する（ステップＳ１０１０）。すなわち、処理リスト内に追加されているレジスタによって構成される論理を、再収斂論理として抽出する。
【００６６】
たとえば、図５において、レジスタＲ２は、レジスタＲ３のファンインレジスタであるため、レジスタＲ３の到達サイクル数Ｃ（Ｃ＝１）から１つインクリメントした到達サイクル数Ｃ（Ｃ＝２）が割り当てられて、処理リストに追加される。また、レジスタＲ１は、レジスタＲ２のファンインレジスタであるため、レジスタＲ２の到達サイクル数Ｃ（Ｃ＝２）から１つインクリメントした到達サイクル数Ｃ（Ｃ＝３）が割り当てられて、処理リストに追加される。
【００６７】
また、レジスタＲ６は、レジスタＲ７のファンインレジスタであるため、レジスタＲ７の到達サイクル数Ｃ（Ｃ＝１）から１つインクリメントした到達サイクル数Ｃ（Ｃ＝２）が割り当てられて、処理リストに追加される。また、レジスタＲ５は、レジスタＲ６のファンインレジスタであるため、レジスタＲ６の到達サイクル数Ｃ（Ｃ＝２）から１つインクリメントした到達サイクル数Ｃ（Ｃ＝３）が割り当てられて、処理リストに追加される。
【００６８】
たとえば、ステップＳ１０１０において未処理のレジスタがない場合、処理リスト内には、レジスタＲ１〜Ｒ３、Ｒ５〜Ｒ８が登録されている。したがって、このレジスタＲ１〜Ｒ３、Ｒ５〜Ｒ８によって構成される論理が、再収斂論理５００である。
【００６９】
つぎに、図８に示した検証プロパティ作成処理（ステップＳ８０５）について説明する。図１１は、図８に示した検証プロパティ作成処理を示すフローチャートである。図１１において、ステップＳ８０４において再収斂論理が抽出された場合（ステップＳ１１０１：Ｙｅｓ）、再収斂レジスタを除く、再収斂論理内のレジスタの論理変数を設定する（ステップＳ１１０２）。
【００７０】
そして、このレジスタの論理変数を用いて再収斂レジスタに関する論理式を作成する（ステップＳ１１０３）。そして、再収斂レジスタに関する論理式から、再収斂レジスタを検証する検証プロパティ３０６を作成する（ステップＳ１１０４）。
【００７１】
たとえば、再収斂論理として図５に示した再収斂論理５００が抽出された場合、再収斂レジスタ（レジスタＲ８）を除く、再収斂論理５００内のレジスタＲ１〜Ｒ３、Ｒ５〜Ｒ７の論理変数を設定する（上記（４）〜（９）を参照。）。この論理変数（４）〜（９）を用いて、再収斂レジスタ（レジスタＲ８）に関する論理式（１０）〜（１５）を作成する。そして、この論理式（１０）〜（１５）から、論理式（１６）、（１７）を経て、再収斂レジスタ（レジスタＲ８）を検証する検証プロパティ３０６（１８）、（１９）を作成する。
【００７２】
このように、本実施の形態によれば、観測信号を構成するファンイン側論理のうちクロックドメインまでの論理を利用するだけで、チェック可能となる。したがって、観測信号を構成するクロックドメインまでの論理を期待値とし、その期待値通りに動作しないようなメタスタビリティ発生状況があるかどうかをチェックする検証プロパティ３０６を自動的に生成することができる。
【００７３】
以上説明したように、検証支援装置、検証支援方法、検証支援プログラム、および記録媒体によれば、非同期マルチクロック論理回路においてクロックドメインの数が膨大であっても、クロックドメインからメタスタビリティによる問題が発生する箇所を、設計者の手作業によらず、自動的に検出することができる。したがって、設計者の作業負担の軽減および設計期間の短縮化を図ることができるという効果を奏する。
【００７４】
なお、本実施の形態で説明した検証支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【００７５】
（付記１）検証対象の論理回路記述情報の入力を受け付ける入力手段と、
前記検証対象において隣接する一対のクロックドメインのうち一方のクロックドメインからそれぞれデータを出力する２以上のレジスタを指定する指定手段と、
前記入力手段によって入力された検証対象の論理回路記述情報と、前記指定手段によって指定された２以上のレジスタとに基づいて、他方のクロックドメインにおいて収斂する単一のレジスタ（以下、「再収斂レジスタ」という）を検出する検出手段と、
を備えることを特徴とする検証支援装置。
【００７６】
（付記２）前記検出手段は、
前記２以上のレジスタからファンアウト側論理をたどることによって前記他方のクロックドメインにおいて収斂する再収斂レジスタを検出することを特徴とする付記１に記載の検証支援装置。
【００７７】
（付記３）前記検出手段によって検出された再収斂レジスタから前記２以上のレジスタまでの論理（以下、「再収斂論理」という）を抽出する抽出手段と、
前記抽出手段によって抽出された再収斂論理に基づいて、前記検証対象を検証する検証プロパティを作成する作成手段と、
を備えることを特徴とする付記１または２に記載の検証支援装置。
【００７８】
（付記４）前記抽出手段は、
前記再収斂レジスタから前記２以上のレジスタまでファンイン側論理をたどることにより、当該ファンイン先のレジスタと前記再収斂レジスタとからなる再収斂論理を抽出することを特徴とする付記３に記載の検証支援装置。
【００７９】
（付記５）前記抽出手段は、
前記再収斂レジスタから前記２以上のレジスタまでファンイン側論理をたどることにより、当該ファンイン先のレジスタに前記再収斂レジスタからの到達サイクル数を付与して、前記ファンイン先のレジスタと前記再収斂レジスタとからなる再収斂論理を抽出し、
前記作成手段は、
前記各ファンイン先のレジスタに付与された到達サイクル数を用いて、前記検証対象を検証する検証プロパティを作成することを特徴とする付記３または４に記載の検証支援装置。
【００８０】
（付記６）検証対象の論理回路記述情報の入力を受け付ける入力工程と、
前記検証対象において隣接する一対のクロックドメインのうち一方のクロックドメインからそれぞれデータを出力する２以上のレジスタを指定する指定工程と、
前記入力工程によって入力された検証対象の論理回路記述情報と、前記指定工程によって指定された２以上のレジスタとに基づいて、他方のクロックドメインにおいて収斂する単一のレジスタ（以下、「再収斂レジスタ」という）を検出する検出工程と、
を含んだことを特徴とする検証支援方法。
【００８１】
（付記７）前記検出工程は、
前記２以上のレジスタからファンアウト側論理をたどることによって前記他方のクロックドメインにおいて収斂する再収斂レジスタを検出することを特徴とする付記６に記載の検証支援方法。
【００８２】
（付記８）前記検出工程によって検出された再収斂レジスタから前記２以上のレジスタまでの論理（以下、「再収斂論理」という）を抽出する抽出工程と、
前記抽出工程によって抽出された再収斂論理に基づいて、前記検証対象を検証する検証プロパティを作成する作成工程と、
を含んだことを特徴とする付記６または７に記載の検証支援方法。
【００８３】
（付記９）前記抽出工程は、
前記再収斂レジスタから前記２以上のレジスタまでファンイン側論理をたどることにより、当該ファンイン先のレジスタと前記再収斂レジスタとからなる再収斂論理を抽出することを特徴とする付記８に記載の検証支援方法。
【００８４】
（付記１０）前記抽出工程は、
前記再収斂レジスタから前記２以上のレジスタまでファンイン側論理をたどることにより、当該ファンイン先のレジスタに前記再収斂レジスタからの到達サイクル数を付与して、前記ファンイン先のレジスタと前記再収斂レジスタとからなる再収斂論理を抽出し、
前記作成工程は、
前記各ファンイン先のレジスタに付与された到達サイクル数を用いて、前記検証対象を検証する検証プロパティを作成することを特徴とする付記８または９に記載の検証支援方法。
【００８５】
（付記１１）検証対象の論理回路記述情報の入力を受け付けさせる入力工程と、
前記検証対象において隣接する一対のクロックドメインのうち一方のクロックドメインからそれぞれデータを出力する２以上のレジスタを指定させる指定工程と、
前記入力工程によって入力された検証対象の論理回路記述情報と、前記指定工程によって指定された２以上のレジスタとに基づいて、他方のクロックドメインにおいて収斂する単一のレジスタ（以下、「再収斂レジスタ」という）を検出させる検出工程と、
をコンピュータに実行させることを特徴とする検証支援プログラム。
【００８６】
（付記１２）前記検出工程は、
前記２以上のレジスタからファンアウト側論理をたどることによって前記他方のクロックドメインにおいて収斂する再収斂レジスタを検出させることを特徴とする付記１１に記載の検証支援プログラム。
【００８７】
（付記１３）前記検出工程によって検出された再収斂レジスタから前記２以上のレジスタまでの論理（以下、「再収斂論理」という）を抽出させる抽出工程と、
前記抽出工程によって抽出された再収斂論理に基づいて、前記検証対象を検証する検証プロパティを作成させる作成工程と、
をコンピュータに実行させることを特徴とする付記１１または１２に記載の検証支援プログラム。
【００８８】
（付記１４）前記抽出工程は、
前記再収斂レジスタから前記２以上のレジスタまでファンイン側論理をたどることにより、当該ファンイン先のレジスタと前記再収斂レジスタとからなる再収斂論理を抽出させることを特徴とする付記１３に記載の検証支援プログラム。
【００８９】
（付記１５）前記抽出工程は、
前記再収斂レジスタから前記２以上のレジスタまでファンイン側論理をたどることにより、当該ファンイン先のレジスタに前記再収斂レジスタからの到達サイクル数を付与して、前記ファンイン先のレジスタと前記再収斂レジスタとからなる再収斂論理を抽出させ、
前記作成工程は、
前記各ファンイン先のレジスタに付与された到達サイクル数を用いて、前記検証対象を検証する検証プロパティを作成させることを特徴とする付記１３または１４に記載の検証支援プログラム。
【００９０】
（付記１６）付記１１〜１５のいずれか一つに記載の検証支援プログラムを記録したコンピュータに読み取り可能な記録媒体。
【産業上の利用可能性】
【００９１】
以上のように、本発明にかかる検証支援装置、検証支援方法、検証支援プログラム、および記録媒体は、非同期マルチクロック論理回路に有用であり、特に、その検証ツールを支援するツールに適している。
【図面の簡単な説明】
【００９２】
【図１】この発明の実施の形態にかかる検証支援装置のハードウェア構成を示すブロック図である。
【図２】この発明の実施の形態にかかる検証対象の一例を示す回路図である。
【図３】この発明の実施の形態にかかる検証支援装置の機能的構成を示すブロック図である。
【図４】再収斂レジスタ検出処理をおこなっている検証対象を示す回路図である。
【図５】再収斂論理抽出処理が実行されている検証対象を示す回路図である。
【図６】論理式（１０）〜（１４）との対応関係を示す再収斂論理の回路図である。
【図７】検証部３０７による検証内容を示すタイミングチャートである。
【図８】この発明の実施の形態にかかる検証支援処理手順を示すフローチャートである。
【図９】図８に示した再収斂レジスタ検出処理を示すフローチャートである。
【図１０】図８に示した再収斂論理抽出処理を示すフローチャートである。
【図１１】図８に示した検証プロパティ作成処理を示すフローチャートである。
【符号の説明】
【００９３】
２００  検証対象
２０１（Ｄ１、Ｄ２）  クロックドメイン
３００  検証支援装置
３０１  入力部
３０２  指定部
３０３  検出部
３０４  抽出部
３０５  作成部
３０６  検証プロパティ
３０７  検証部
３１０  論理回路記述情報
５００  再収斂論理
Ｒ０〜Ｒ８  レジスタ
【図１】
2006252438.tif 000003
【図２】
2006252438.tif 000004
【図３】
2006252438.tif 000005
【図４】
2006252438.tif 000006
【図５】
2006252438.tif 000007
【図６】
2006252438.tif 000008
【図７】
2006252438.tif 000009
【図８】
2006252438.tif 000010
【図９】
2006252438.tif 000011
【図１０】
2006252438.tif 000012
【図１１】
2006252438.tif 000013