(57)【要約】【課題】検証対象の回路からハンドシェイクが行われる回路部を容易に検出できるようにする。【解決手段】クロック信号ＣＫ１で動作するＦＦ２５と、ＦＦ２５の出力信号を受け、クロック信号ＣＫ２で動作するＦＦ２６を含むシンクロナイザ３１と、クロック信号ＣＫ２で動作するＦＦ２８と、ＦＦ２８の出力信号を受け、クロック信号ＣＫ１で動作するＦＦ２９を含むシンクロナイザ３２を、記憶部１１に記憶された回路情報から検出し、シンクロナイザ３１とシンクロナイザ３２を含むループ部Ｌを回路情報から検出し、互いに異なるクロック信号で動作する送信部２１または受信部２２に接続しているループ部Ｌを含む回路部２０を、送信部２１と受信部２２との間で信号の送受信を行う際にハンドシェイク手順を行うハンドシェイク部と判定する。【選択図】図１
2013175123.tif 000002
【特許請求の範囲】
【請求項１】
回路情報を記憶する記憶部と、
前記記憶部に記憶された前記回路情報から、互いに異なるクロック信号で動作する送信部と受信部との間で信号の送受信を行う際にハンドシェイク手順を行うハンドシェイク部を検出する制御部と、を有し、
前記制御部は、
第１のクロック信号で動作する第１のフリップフロップと、前記第１のフリップフロップの出力信号を受け、第２のクロック信号で動作する第２のフリップフロップを含む第１のシンクロナイザと、前記第２のクロック信号で動作する第３のフリップフロップと、前記第３のフリップフロップの出力信号を受け、前記第１のクロック信号で動作する第４のフリップフロップを含む第２のシンクロナイザと、を前記回路情報から検出し、
前記第１のシンクロナイザと前記第２のシンクロナイザを含むループ部を前記回路情報から検出し、
前記送信部または前記受信部に接続している前記ループ部を含む回路部を、前記ハンドシェイク部と判定する、
回路解析装置。
【請求項２】
前記送信部または前記受信部に接続している前記ループ部が検出されないとき、前記制御部は、前記送信部または前記受信部のデータ端子からのバックトレースにより前記ループ部の検出を行い、前記ループ部が検出されれば、前記ループ部を含む回路部を、前記ハンドシェイク部と判定する、請求項１に記載の回路解析装置。
【請求項３】
前記制御部は、前記送信部に接続しているループ部と前記受信部に接続しているループ部とで、含まれる前記第１のシンクロナイザと前記第２のシンクロナイザの対が異なる場合、前記回路部を片側ハンドシェイク構造のハンドシェイク部と判定する、請求項１または２に記載の回路解析装置。
【請求項４】
前記制御部は、前記第２のフリップフロップの出力端子から、前記第２のクロック信号で動作する回路部内のフォワードトレースを行い、前記第１のシンクロナイザの型を決定し、前記第４のフリップフロップの出力端子から、前記第１のクロック信号で動作する回路部内のフォワードトレースを行い、前記第２のシンクロナイザの型を決定する、請求項１乃至３の何れか一項に記載の回路解析装置。
【請求項５】
第１のクロック信号で動作する第１のフリップフロップと、前記第１のフリップフロップの出力信号を受け、第２のクロック信号で動作する第２のフリップフロップを含む第１のシンクロナイザと、前記第２のクロック信号で動作する第３のフリップフロップと、前記第３のフリップフロップの出力信号を受け、前記第１のクロック信号で動作する第４のフリップフロップを含む第２のシンクロナイザを、記憶部に記憶された回路情報から検出し、
前記第１のシンクロナイザと前記第２のシンクロナイザを含むループ部を前記回路情報から検出し、
互いに異なるクロック信号で動作する送信部または受信部に接続している前記ループ部を含む回路部を、前記送信部と前記受信部との間で信号の送受信を行う際にハンドシェイク手順を行うハンドシェイク部と判定する、
回路解析方法。
【請求項６】
第１のクロック信号で動作する第１のフリップフロップと、前記第１のフリップフロップの出力信号を受け、第２のクロック信号で動作する第２のフリップフロップを含む第１のシンクロナイザと、前記第２のクロック信号で動作する第３のフリップフロップと、前記第３のフリップフロップの出力信号を受け、前記第１のクロック信号で動作する第４のフリップフロップを含む第２のシンクロナイザを、記憶部に記憶された回路情報から検出し、
前記第１のシンクロナイザと前記第２のシンクロナイザを含むループ部を前記回路情報から検出し、
互いに異なるクロック信号で動作する送信部または受信部に接続している前記ループ部を含む回路部を、前記送信部と前記受信部との間で信号の送受信を行う際にハンドシェイク手順を行うハンドシェイク部と判定する、
処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路解析装置、回路解析方法及びプログラムに関する。
【背景技術】
【０００２】
異なるクロック信号で動作する互いに非同期な回路部間では、正しくデータの送受信が行われるように、ハンドシェイクと呼ばれる手順にしたがって、リクエスト信号やＡＣＫ信号のやり取りが行われる。
【０００３】
回路検証を行う際、ハンドシェイクが行われる回路部（以下ではハンドシェイク部と呼ぶこともある）では、たとえば、各クロック線あるいは信号線に対して任意のジッター値がランダムに与えられ、動的検証が実施され、その結果から回路の妥当性が確認される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−５９０９７号公報
【特許文献２】特開２００６−２７７１５４号公報
【特許文献３】特開２００５−２２２３１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、検証対象の回路からハンドシェイク部を検出するには手間がかかるという問題があった。たとえば、人手によりハンドシェイク部の定義を示すテンプレートを作成し、解析ツールで抽出することが考えられるが、テンプレートとは異なる回路構成のハンドシェイク部があると、テンプレートの再定義を余儀なくされるなど、手間がかかった。
【課題を解決するための手段】
【０００６】
発明の一観点によれば、回路情報を記憶する記憶部と、その記憶部に記憶された回路情報から、互いに異なるクロック信号で動作する送信部と受信部との間で信号の送受信を行う際にハンドシェイク手順を行うハンドシェイク部を検出する制御部と、を有する回路解析装置が提供される。ここで、制御部は、第１のクロック信号で動作する第１のフリップフロップと、第１のフリップフロップの出力信号を受け、第２のクロック信号で動作する第２のフリップフロップを含む第１のシンクロナイザと、第２のクロック信号で動作する第３のフリップフロップと、第３のフリップフロップの出力信号を受け、第１のクロック信号で動作する第４のフリップフロップを含む第２のシンクロナイザと、を回路情報から検出する。また、制御部は、第１のシンクロナイザと第２のシンクロナイザを含むループ部を回路情報から検出し、送信部または受信部に接続しているループ部を含む回路部を、ハンドシェイク部と判定する。
【０００７】
また、発明の一観点によれば、以下のような回路解析方法が提供される。
この回路解析方法では、第１のクロック信号で動作する第１のフリップフロップと、第１のフリップフロップの出力信号を受け、第２のクロック信号で動作する第２のフリップフロップを含む第１のシンクロナイザと、第２のクロック信号で動作する第３のフリップフロップと、第３のフリップフロップの出力信号を受け、第１のクロック信号で動作する第４のフリップフロップを含む第２のシンクロナイザが、記憶部に記憶された回路情報から検出される。また、第１のシンクロナイザと第２のシンクロナイザを含むループ部が回路情報から検出され、互いに異なるクロック信号で動作する送信部または受信部に接続しているループ部を含む回路部が、送信部と受信部との間で信号の送受信を行う際にハンドシェイク手順を行うハンドシェイク部と判定される。
【発明の効果】
【０００８】
開示の回路解析装置、回路解析方法及びプログラムによれば、検証対象の回路からハンドシェイクが行われる回路部を容易に検出できる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施の形態の回路解析装置及び回路解析方法の一例を示す図である。
【図２】第２の実施の形態の回路解析装置のハードウェア例を示す図である。
【図３】ハンドシェイク部の検出処理の流れを示すフローチャートである。
【図４】シンクロナイザの検出例を示す図である。
【図５】パルス型シンクロナイザを含む回路部のＲＴＬの記述例を示す図である。
【図６】非同期リストへのＦＦの登録処理の一例を示すフローチャートである。
【図７】シンクロナイザの型を決定する処理の一例を示すフローチャートである。
【図８】バックトレースの一例を示す図である。
【図９】同期シンクロナイザの検出処理の一例を示すフローチャートである。
【図１０】同期シンクロナイザの検出対象となる回路部のＲＴＬ例を示す図である。
【図１１】同期シンクロナイザリストの一例を示す図である。
【図１２】ループ部の検出処理の一例を示すフローチャートである。
【図１３】イネーブル端子からのバックトレースの例を示す図である。
【図１４】イネーブル端子を有するＦＦを含む回路部のＲＴＬの記述例である。
【図１５】ハンドシェイク部の検出処理の一例を示すフローチャートである。
【図１６】ハンドシェイク部の認識処理の一例を示すフローチャートである。
【図１７】受信側にイネーブル端子がない回路部の一例を示す図である。
【図１８】送信側にイネーブル端子がない回路部のＲＴＬの記述例を示す図である。
【図１９】受信側にイネーブル端子がない回路部のＲＴＬの記述例を示す図である。
【図２０】補完処理の全体の流れを示すフローチャートである。
【図２１】補完処理の一例を示すフローチャートである。
【図２２】ハンドシェイク部のマッチング処理の対象となる回路部の一例を示す図である。
【図２３】両側ハンドシェイク構造のハンドシェイク部と判定される回路部のＲＴＬ記述の例を示す図である。
【図２４】片側ハンドシェイク構造のハンドシェイク部と判定される回路部のＲＴＬ記述の例を示す図である。
【図２５】ハンドシェイク部のマッチング処理の一例を示すフローチャートである。
【図２６】イネーブル端子のある２つの送信ＦＦとイネーブル端子のない受信ＦＦを有した回路部の例を示す図である。
【図２７】イネーブル端子のない送信ＦＦとイネーブル端子のある受信ＦＦを有した回路部の例を示す図である。
【図２８】ハンドシェイク部の検出結果の出力例を示す図である。
【図２９】ファイル名が“ｈａｎｄｓｈａｋｅ．ｖ”のファイルの内容を示す図である。
【発明を実施するための形態】
【００１０】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、第１の実施の形態の回路解析装置及び回路解析方法の一例を示す図である。
【００１１】
回路解析装置１０は、回路情報を記憶する記憶部１１と、制御部１２を有している。
制御部１２は、記憶部１１に記憶された回路情報から、互いに異なるクロック信号で動作する送信部と受信部との間で信号の送受信を行う際にハンドシェイク手順を行うハンドシェイク部を検出する。
【００１２】
回路情報は、たとえば、ＲＴＬ（Register Transfer Level）で記述されている。図１では、回路情報の一部で表現される回路部２０の一例が示されている。
回路部２０は、クロック信号ＣＫ１で動作する送信部（以下送信ＦＦ（Flip Flop）という）２１と、クロック信号ＣＫ２で動作する受信部（以下受信ＦＦという）２２を有している。
【００１３】
送信ＦＦ２１は、セレクタ２１ａとＦＦ２１ｂを有しており、セレクタ２１ａの一方の入力端子には、図示しない回路部からのデータが入力され、他方の入力端子には、ＦＦ２１ｂからの出力信号が入力される。ＦＦ２１ｂの入力端子には、セレクタ２１ａの出力信号が入力される。
【００１４】
受信ＦＦ２２は、セレクタ２２ａとＦＦ２２ｂを有しており、セレクタ２２ａの一方の入力端子には、送信ＦＦ２１のＦＦ２１ｂの出力信号が入力され、他方の入力端子には、ＦＦ２２ｂからの出力信号が入力される。ＦＦ２２ｂの入力端子には、セレクタ２２ａの出力信号が入力される。
【００１５】
また、送信ＦＦ２１のセレクタ２１ａは、ＦＦや組み合わせ回路を含むＦＦ／組み合わせ回路部２３に接続されており、ＦＦ／組み合わせ回路部２３からの選択信号に応じて、２つの入力値の何れかを選択して出力する。受信部２２のセレクタ２２ａは、ＦＦや組み合わせ回路を含むＦＦ／組み合わせ回路部２４に接続されており、ＦＦ／組み合わせ回路部２４からの選択信号に応じて、２つの入力値の何れかを選択して出力する。
【００１６】
ＦＦ／組み合わせ回路部２３には、たとえば、図示しない他の回路部から制御信号が入力される。ＦＦ／組み合わせ回路部２３の図示しないＦＦは、クロック信号ＣＫ１で動作し、ＦＦ／組み合わせ回路部２４の図示しないＦＦは、クロック信号ＣＫ２で動作する。
【００１７】
さらに、回路部２０は、ＦＦ２５，２６，２７，２８，２９，３０を有している。ＦＦ２５の入力端子はＦＦ／組み合わせ回路部２３に接続され、出力端子はＦＦ２６の入力端子に接続されている。ＦＦ２６の出力端子はＦＦ２７の入力端子に接続されている。ＦＦ２７の出力端子は、ＦＦ／組み合わせ回路部２４に接続されている。ＦＦ２８の入力端子はＦＦ／組み合わせ回路部２４に接続され、出力端子はＦＦ２９の入力端子に接続されている。ＦＦ２９の出力端子は、ＦＦ３０の入力端子に接続されている。ＦＦ３０の出力端子は、ＦＦ／組み合わせ回路部２３に接続されている。
【００１８】
ＦＦ２５，２９，３０は、クロック信号ＣＫ１で動作し、ＦＦ２６〜２８は、クロック信号ＣＫ２で動作する。
回路情報から、ハンドシェイク部を検出するために、制御部１２は以下のような処理を行う。
【００１９】
ステップＳ１：制御部１２は、シンクロナイザの検出を行う。
制御部１２は、回路情報から、入力端子を第１のクロック信号で動作する第１のＦＦの出力端子に接続し、第２のクロック信号で動作する第２のＦＦを含む第１のシンクロナイザを検出する。また、制御部１２は、入力端子を、第２のクロック信号で動作する第３のＦＦの出力端子に接続し、第１のクロック信号で動作する第４のＦＦを含む第２のシンクロナイザを検出する。なお、どのクロック信号を第１のクロック信号とするか、第２のクロック信号とするかは、たとえば、図示しない入力デバイスを介して入力されるユーザからの指示信号により指定される。
【００２０】
図１の回路部２０において、たとえば、クロック信号ＣＫ１を第１のクロック信号、クロック信号ＣＫ２を第２のクロック信号とする。このとき、入力端子がクロック信号ＣＫ１で動作するＦＦ２５の出力端子に接続されており、クロック信号ＣＫ２で動作するＦＦ２６を含む、シンクロナイザ３１が検出される。また、入力端子がクロック信号ＣＫ２で動作するＦＦ２８の出力端子に接続されており、クロック信号ＣＫ１で動作するＦＦ２９を含む、シンクロナイザ３２が検出される。なお、受信ＦＦ２２もシンクロナイザとして検出される。
【００２１】
また、制御部１２は、ＦＦ２６の出力端子に接続され、ＦＦ２６と同じクロック信号ＣＫ２で動作するＦＦ２７もシンクロナイザ３１に含まれるものとする。同様に、制御部１２は、ＦＦ２９の出力端子に接続され、ＦＦ２９と同じクロック信号ＣＫ１で動作するＦＦ３０もシンクロナイザ３２に含まれるものとする。このようなシンクロナイザ３１，３２は、２段型のシンクロナイザと呼ばれる。制御部１２は、他の型のシンクロナイザについても検出可能である。詳細は、以降の実施の形態で説明する。
【００２２】
ステップＳ２：制御部１２は、互いの入力端子から出力端子に至るループ経路がある第１のシンクロナイザと第２のシンクロナイザを含むループ部を検出する。
図１の例において、シンクロナイザ３１の入力端子（ＦＦ２６の入力端子）から、ＦＦ２５、ＦＦ／組み合わせ回路部２３を介してシンクロナイザ３２の出力端子（ＦＦ３０の出力端子）へ至る経路があるとする。また、シンクロナイザ３２の入力端子（ＦＦ２９の入力端子）から、ＦＦ２８、ＦＦ／組み合わせ回路部２４を介してシンクロナイザ３１の出力端子（ＦＦ２７の出力端子）へ至る経路があるとする。このとき、シンクロナイザ３１，３２の対を含むループ部Ｌが検出される。
【００２３】
ステップＳ３：制御部１２は、送信ＦＦまたは受信ＦＦに接続しているループ部を含む回路部を、ハンドシェイク部と判定する。
図１の例では、ステップＳ２の処理で検出されたループ部Ｌは、送信部２１及び受信部２２に接続されている。つまり、ループ部Ｌの信号が、送信部２１と受信部２２によるデータの送受信を制御するような回路構成となっている。このような回路構成は、ハンドシェイク部特有のものである。
【００２４】
そのため、制御部１２は、ループ部Ｌを含む回路部（たとえば、回路部２０全体）を、ハンドシェイク部であると判定する。なお、制御部１２は、ループ部Ｌ自体をハンドシェイク部と判定するようにしてもよい。その後、解析対象の回路の回路情報のどこがハンドシェイク部となるのかが分かるように、たとえば、判定結果が回路解析装置１０の図示しないディスプレイ上に表示される。
【００２５】
以上のように、本実施の形態の回路解析装置１０及び回路解析方法によれば、ハンドシェイク部が有すべき要素である、シンクロナイザ対によるループ部と、そのループ部が送信部または受信部に接続していること、が回路情報から検出される。
【００２６】
これにより、検証対象の回路からハンドシェイク部を容易に抽出できる。また、様々な回路構成のハンドシェイク部があっても、上記のような要素を回路情報から検出することで、各構成に対応したテンプレートを用いなくてもハンドシェイク部として検出することができ、回路解析を行うユーザの負荷を軽減できる。
【００２７】
なお、制御部１２は、ＣＰＵ（Central Processing Unit）及びＲＡＭ（Random Access Memory）を用いて実行されるプログラムで実現されるようにしてもよい。
（第２の実施の形態）
（回路解析装置のハードウェア例）
図２は、第２の実施の形態の回路解析装置のハードウェア例を示す図である。
【００２８】
回路解析装置６０は、ＣＰＵ６１、ＲＡＭ６２、ＨＤＤ（Hard Disk Drive）６３、画像信号処理部６４、入力信号処理部６５、ディスクドライブ６６及び通信部６７を有する。上記ユニットは、回路解析装置６０内でバス６８に接続されている。
【００２９】
ＣＰＵ６１は、回路解析装置６０における情報処理を制御する演算装置である。ＣＰＵ６１は、ＨＤＤ６３に記憶されたプログラムやデータの少なくとも一部を読み出してＲＡＭ６２に展開し、プログラムを実行する。なお、回路解析装置６０は、複数の演算装置を備えて、情報処理を分散して実行してもよい。
【００３０】
ＲＡＭ６２は、ＣＰＵ６１が扱うプログラムやデータを一時的に記憶しておく揮発性メモリである。なお、回路解析装置６０は、ＲＡＭ以外の種類のメモリを備えていてもよく、複数個のメモリを備えてもよい。
【００３１】
ＨＤＤ６３は、ＯＳ（Operating System）プログラムやアプリケーションプログラムなどのプログラム、及び、情報処理に用いられるデータを記憶する不揮発性の記憶装置である。ＨＤＤ６３は、ＣＰＵ６１の命令にしたがって、内蔵の磁気ディスクに対する読み書きを行う。なお、回路解析装置６０は、ＨＤＤ以外の不揮発性の記憶装置（たとえば、ＳＳＤ（Solid State Drive））を備えていてもよく、複数の記憶装置を備えてもよい。
【００３２】
画像信号処理部６４は、ＣＰＵ６１の命令にしたがって、回路解析装置６０に接続されたディスプレイ６４ａに画像を出力する。ディスプレイ６４ａとして、たとえば、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００３３】
入力信号処理部６５は、回路解析装置６０に接続された入力デバイス６５ａから入力信号を取得し、ＣＰＵ６１に出力する。入力デバイス６５ａとして、たとえば、マウスやタッチパネルなどのポインティングデバイスや、キーボードなどを用いることができる。
【００３４】
ディスクドライブ６６は、記録媒体６６ａに記録されたプログラムやデータを読み取る駆動装置である。記録媒体６６ａとして、たとえば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。ディスクドライブ６６は、たとえば、ＣＰＵ６１の命令にしたがって、記録媒体６６ａから読み取ったプログラムやデータをＲＡＭ６２またはＨＤＤ６３に格納する。
【００３５】
通信部６７は、ネットワーク６７ａに接続して通信を行う通信インタフェースである。ネットワーク６７ａへの接続方法は、有線でも無線でもよい。すなわち、通信部６７は、有線通信インタフェースでも無線通信インタフェースでもよい。
【００３６】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
（ハンドシェイク部の検出処理）
図３は、ハンドシェイク部の検出処理の流れを示すフローチャートである。
【００３７】
ハンドシェイク部の検出処理の実行の際、たとえば、入力デバイス６５ａを介して、回路解析装置６０のユーザから、どの２つのクロック信号による非同期箇所のハンドシェイク部を検出するかなどの設定情報や、制約情報などが入力される。そして、ＣＰＵ６１の制御のもと、たとえば、ＨＤＤ６３に記憶された回路情報（ライブラリやＲＴＬファイル）や解析ツールが読み出され、以下のような処理が行われる。
【００３８】
まず、シンクロナイザの検出が行われ（ステップＳ１０）、シンクロナイザが存在したか否かが判定される（ステップＳ１１）。シンクロナイザがない場合には、ハンドシェイク部は検出されず、検出処理が終了する。
【００３９】
シンクロナイザがある場合には、異なるクロック信号で動作するシンクロナイザ対を含むループ部の検出が行われ（ステップＳ１２）、ループ部が存在したか否かが判定される（ステップＳ１３）。ループ部がない場合には、ハンドシェイク部は検出されず、検出処理が終了する。
【００４０】
ループ部がある場合には、ハンドシェイク部の検出処理（ステップＳ１４）として、送信ＦＦまたは受信ＦＦのイネーブル端子（たとえば、図１に示したセレクタ２１ａ，２２ａの選択信号が入力される端子）に接続されているループ部の検出が行われる。そして、ループ部が送信ＦＦに接続されているか否かが判定され（ステップＳ１５）、送信ＦＦに接続されている場合には、同一または異なるループ部が受信ＦＦにも接続されているかが判定される（ステップＳ１６）。
【００４１】
ステップＳ１５の処理で、送信ＦＦにループ部が接続されていないと判定された場合、受信ＦＦにループ部が接続されているかが判定される（ステップＳ１７）。受信ＦＦにもループ部が接続されていない場合には、ハンドシェイク部は検出されず、検出処理が終了する。
【００４２】
受信ＦＦにループ部が接続されている場合、送信側の補完処理（ステップＳ１８）として、送信ＦＦのデータ端子からのバックトレースが行われる。そして、送信ＦＦのデータ端子からのバックトレースでループ部が検出されるか否かで、ハンドシェイク部の検出が行われる（ステップＳ１９）。送信ＦＦのデータ端子からのバックトレースでループ部が検出されればハンドシェイク部が検出され、ステップＳ２２の処理が行われる。ループ部が検出されなければ、検出処理が終了する。
【００４３】
一方、ステップＳ１６の処理で、受信ＦＦにはループ部が接続されていないと判定された場合、受信側の補完処理（ステップＳ２０）として、受信ＦＦのデータ端子からのバックトレースが行われる。そして、受信ＦＦのデータ端子からのバックトレースでループ部が検出されるか否かで、ハンドシェイク部の検出が行われる（ステップＳ２１）。受信ＦＦのデータ端子からのバックトレースでループ部が検出されればハンドシェイク部が検出され、ステップＳ２２の処理が行われる。ループ部が検出されなければ、検出処理が終了する。
【００４４】
ステップＳ２２の処理では、送信側で検出されるループ部のシンクロナイザと、受信側で検出されるループ部のシンクロナイザが同一か否かにより、ハンドシェイク部のマッチングが行われる。送信側で検出されるループ部のシンクロナイザと、受信側で検出されるループ部のシンクロナイザが同一の場合には、両側ハンドシェイク構造のハンドシェイク部が検出される。送信側で検出されるループ部のシンクロナイザと、受信側で検出されるループ部のシンクロナイザが異なる場合には、送信／受信それぞれの片側ハンドシェイク構造のハンドシェイク部が検出される。
【００４５】
以下、各処理の一例をより詳細に説明する。なお、以下の処理も、たとえば、図２に示したようなＣＰＵ６１の制御のもと、ＲＡＭ６２などを用いて実行されるものとする。
（シンクロナイザ検出処理）
図４は、シンクロナイザの検出例を示す図である。
【００４６】
図中の白丸は、外部端子、インスタンスの入力端子（データ端子）または出力端子を示している。ＦＦ７１は、クロック信号Ｔｃｌｋで動作し、ＦＦ７２はクロック信号Ｒｃｌｋで動作する。
【００４７】
シンクロナイザの検出にあたって、まず、バックトレースにより、非同期パスに含まれる受信側のＦＦが、リスト（以下非同期リストという）へ登録される。たとえば、回路情報からクロック信号Ｒｃｌｋで動作するＦＦ７２が抽出された場合、ＦＦ７２の入力端子からのバックトレースにより、クロック信号Ｔｃｌｋで動作するＦＦ７１が検出された場合、ＦＦ７２が非同期リストへ登録される。
【００４８】
その後、非同期リストへ登録されたＦＦ７２の出力端子からのフォワードトレースにより、シンクロナイザ７０の型が決定される。フォワードトレースによりＦＦ７２の出力端子にクロック信号Ｒｃｌｋに同期して動作するＦＦが接続されていない場合には、１段型シンクロナイザと判定される。たとえば、ＦＦ７２の出力端子にクロック信号Ｒｃｌｋに同期して動作するＦＦ７３が接続されている場合には、２段型シンクロナイザ、ＦＦ７４まで接続されている場合には、３段型シンクロナイザと判定される。また、インバータ７５とＡＮＤ回路７６が検出された場合には、パルス型シンクロナイザと判定される。
【００４９】
図５は、パルス型シンクロナイザを含む回路部のＲＴＬの記述例を示す図である。
コード部Ｃ１では、クロック信号Ｔｃｌｋの立ち上がりに同期して動作する、図４のＦＦ７１に対応した記述がなされている。コード部Ｃ２では、クロック信号Ｒｃｌｋの立ち上がりに同期して動作する、図４のＦＦ７２〜７４に対応した記述がなされている。また、コード部Ｃ３では、図４のインバータ７５とＡＮＤ回路７６に対応した記述がなされている。
【００５０】
シンクロナイザの検出処理は、たとえば、このようなＲＴＬで記述された回路情報をもとに行われる。
図６は、非同期リストへのＦＦの登録処理の一例を示すフローチャートである。
【００５１】
まず、回路情報からＦＦが１つ抽出され（ステップＳ３０）、抽出されたＦＦの入力端子からネット（配線）が抽出される（ステップＳ３１）。そして、抽出されたネットのファンインポートからインスタンスが抽出され（ステップＳ３２）、抽出されたインスタンスがＦＦで、ステップＳ３０の処理で抽出されたＦＦに対して非同期であるか否かが判定される（ステップＳ３３）。
【００５２】
抽出されたインスタンスがＦＦで、ステップＳ３０の処理で抽出されたＦＦに対して非同期である場合には、最初のステップＳ３０の処理で抽出されたＦＦが非同期リストに登録され（ステップＳ３４）、ステップＳ３５の処理が行われる。非同期リストはたとえば、ＨＤＤ６３、またはＲＡＭ６２に記憶される。ステップＳ３２の処理で抽出されたインスタンスがＦＦでない場合、または抽出されたインスタンスがステップＳ３０の処理で抽出されたＦＦと同期である場合、ステップＳ３４の処理はスキップされ、ステップＳ３５の処理が行われる。
【００５３】
ステップＳ３５の処理では、ステップＳ３１の処理で抽出されたネットのファンインポートから全てのインスタンスが抽出されたか判定される。全てのインスタンスの抽出が終わっていない場合には、ステップＳ３２の処理が再び行われ、残りのインスタンスの抽出が行われる。全てのインスタンスの抽出が終わった場合、ステップＳ３６の処理が行われる。
【００５４】
ステップＳ３６の処理では、ステップＳ３０で抽出されたＦＦの入力端子に接続される全てのネットが抽出されたか判定される。全てのネットの抽出が終わっていない場合には、ステップＳ３１の処理が再び行われ、残りのネットの抽出が行われる。全てのネットの抽出が終わった場合、ステップＳ３７の処理が行われる。
【００５５】
ステップＳ３７の処理では、回路情報から全てのＦＦが抽出されたか判定される。全てのＦＦの抽出が終わっていない場合には、ステップＳ３０の処理が再び行われ、残りのＦＦの抽出が行われる。全てのＦＦの抽出が終わった場合、非同期リストへのＦＦの登録処理が終了する。
【００５６】
非同期リストへのＦＦの登録処理が終了すると、フォワードトレースにより、シンクロナイザの型が判定される。
図７は、シンクロナイザの型を決定する処理の一例を示すフローチャートである。
【００５７】
まず、非同期リストからＦＦが１つ抽出され（ステップＳ４０）、シンクロナイザに含まれるＦＦの段数ｎが１に初期化される（ステップＳ４１）。その後、抽出されたＦＦの出力端子に接続されるネットが抽出され（ステップＳ４２）、ネットのファンアウトが１か否かが判定される（ステップＳ４３）。
【００５８】
ネットのファンアウトが１である場合、ファンアウトポートからインスタンスが抽出される（ステップＳ４４）。そして、抽出されたインスタンスがＦＦであり、ステップＳ４０の処理で抽出されたＦＦと同期であるか否かが判定される（ステップＳ４５）。
【００５９】
抽出されたインスタンスがＦＦであり、ステップＳ４０の処理で抽出されたＦＦと同期である場合には、ｎがインクリメントされ（ステップＳ４６）、ステップＳ４２からの処理が繰り返される。抽出されたインスタンスがＦＦではない、または、ＦＦであるがステップＳ４０の処理で抽出されたＦＦと非同期の場合、非同期リストから抽出されたＦＦを含むシンクロナイザがｎ段型シンクロナイザであると判定される（ステップＳ４７）。
【００６０】
一方、ステップＳ４３の処理で、ネットのファンアウトが１ではないと判定された場合、ネットのファンアウトが２で、フォワードトレース先にパルス型シンクロナイザの要素であるＡＮＤ回路とインバータが検出されるか否かが判定される（ステップＳ４８）。ＡＮＤ回路とインバータが検出される場合には、非同期リストから抽出されたＦＦを含むシンクロナイザがｎ段パルス型シンクロナイザであると判定される（ステップＳ４９）。
【００６１】
ネットのファンアウトが２ではない、またはＡＮＤ回路とインバータがない場合、つまりシンクロナイザがパルス型ではない場合、ステップＳ４７の処理が行われる。
ステップＳ４７またはステップＳ４９の処理の後、非同期リストの全ＦＦが抽出されたか否かが判定される（ステップＳ５０）。非同期リストの全ＦＦが抽出されていない場合には、ステップＳ４０からの処理が繰り返され、全ＦＦが抽出された場合には、処理が終了する。
【００６２】
（ループ部検出処理）
異なるクロック信号で動作するシンクロナイザ対によるループ部を検出する際、まず、バックトレースにより、あるシンクロナイザの入力端子から、そのシンクロナイザに対して非同期のシンクロナイザの出力端子に至る経路があるかが検出される。その際、たとえば、シンクロナイザの入力側に最も近く、シンクロナイザに対して非同期のＦＦの入力端子からバックトレースが行われ、そのＦＦと同じクロック信号で動作するシンクロナイザ（以下同期シンクロナイザという）の検出が行われる。
【００６３】
図８は、バックトレースの一例を示す図である。
クロック信号Ｔｃｌｋで動作するＦＦ８０ａ，８０ｂを含むシンクロナイザ８０の入力端子（ＦＦ８０ａの入力端子Ｄ１）に接続され、クロック信号Ｒｃｌｋで動作するＦＦ８１の入力端子Ｄ２からバックトレースが行われる。バックトレースは、ＦＦ８１の同期ドメイン（クロック信号Ｒｃｌｋで動作する回路部）内で行われる。図８の例では、バックトレースにより、入力端子Ｄ２から、ＦＦ／組み合わせ回路部８２を介して、クロック信号Ｒｃｌｋで動作するＦＦ８３ａ，８３ｂを含むシンクロナイザ８３の出力端子（ＦＦ８３ａの出力端子Ｑ１）に至る経路が検出される。これにより、同期シンクロナイザとして、シンクロナイザ８３が検出される。
【００６４】
図９は、同期シンクロナイザの検出処理の一例を示すフローチャートである。
まず、非同期リストからＦＦが１つ抽出される（ステップＳ６０）。そして、抽出されたＦＦの入力側に最も近く、抽出されたＦＦに対して非同期のＦＦの入力端子（図８の例では入力端子Ｄ２）から、バックトレースが行われ、インスタンスの抽出が行われる（ステップＳ６１）。
【００６５】
そして、抽出されたインスタンスがシンクロナイザか否かが判定される（ステップＳ６２）。インスタンスがシンクロナイザである場合、そのシンクロナイザは、ステップＳ６０の処理で抽出されたＦＦを含むシンクロナイザと対になって、ループ経路を作る候補となる同期シンクロナイザとして同期シンクロナイザリストに登録される（ステップＳ６３）。図８に示した例では、シンクロナイザ８３は、ＦＦ８０ａを含むシンクロナイザ８０と対になってループ経路を作る候補の同期シンクロナイザとして登録される。
【００６６】
その後、バックトレースが行われる範囲（前述の同期ドメイン内）で、全てのインスタンスの抽出が終了したか否かが判定され（ステップＳ６４）、全インスタンスの抽出が終了していない場合には、ステップＳ６１からの処理が繰り返される。全インスタンスの抽出が終了した場合、非同期リストの全てのＦＦが抽出されたか否かが判定され（ステップＳ６５）、全てのＦＦが抽出されていない場合には、ステップＳ６０からの処理が繰り返される。全てのＦＦの抽出が終了した場合には、同期シンクロナイザの検出処理が終了する。
【００６７】
図１０は、同期シンクロナイザの検出対象となる回路部のＲＴＬ例を示す図である。
１行目から１１行目までは、クロック信号Ｔｃｌｋで動作する回路部が表現されている。１３行目から２２行目までは、クロック信号Ｒｃｌｋで動作する回路部が表現されている。
【００６８】
２，３，１０行目などに記述されている“ＳｙｎｃＢ１”、“ＳｙｎｃＢ２”、“ＳｙｎｃＢ３”はクロック信号Ｔｃｌｋで動作するシンクロナイザの出力値、１５，１９行目などに記述されている“ＳｙｎｃＡ１”、“ＳｙｎｃＡ２”はクロック信号Ｒｃｌｋで動作するシンクロナイザの出力値を示している。以下では、たとえば、“ＳｙｎｃＢ１”を出力するシンクロナイザをシンクロナイザＳｙｎｃＢ１、“ＳｙｎｃＡ１”を出力するシンクロナイザを、シンクロナイザＳｙｎｃＡ１などと表記する。
【００６９】
このような、ＲＴＬ記述に対して、図９の処理フローに基づき、バックトレースが行われる。たとえば、シンクロナイザＳｙｎｃＢ１の入力側に６行目、５行目、１９行目の順でバックトレースしていくと、シンクロナイザＳｙｎｃＢ１と非同期なインスタンスとして、“ＲｘＢ１”を出力するＦＦが検出される。そこで、このＦＦの入力端子からバックトレースが行われていく。そうすると、同期シンクロナイザとして、１７行目でシンクロナイザＳｙｎｃＡ２が検出される。また、１８行目、１５行目の順でバックトレースが行われ、シンクロナイザＳｙｎｃＡ１が検出される。これにより、シンクロナイザＳｙｎｃＢ１に対する同期シンクロナイザとして、シンクロナイザＳｙｎｃＡ１，ＳｙｎｃＡ２が同期シンクロナイザリストに登録される。
【００７０】
図１１は、同期シンクロナイザリストの一例を示す図である。図１０に示したＲＴＬで表現される回路から抽出された同期シンクロナイザの例が示されている。
シンクロナイザＳｙｎｃＡ１に対しては、シンクロナイザＳｙｎｃＢ１，ＳｙｎｃＢ２が同期シンクロナイザとして登録されている。シンクロナイザＳｙｎｃＡ２に対しては、同期シンクロナイザはなし、シンクロナイザＳｙｎｃＢ１に対しては、シンクロナイザＳｙｎｃＡ１，ＳｙｎｃＡ２が同期シンクロナイザとして登録されている。シンクロナイザＳｙｎｃＢ２に対しては、シンクロナイザＳｙｎｃＡ２が、シンクロナイザＳｙｎｃＢ３に対しては、シンクロナイザＳｙｎｃＡ１がそれぞれ同期シンクロナイザとして登録されている。
【００７１】
図１２は、ループ部の検出処理の一例を示すフローチャートである。
まず、非同期リストからＦＦが１つ抽出され（ステップＳ７０）、抽出されたＦＦを含むシンクロナイザに対する同期シンクロナイザ（ここでは、同期シンクロナイザＡとする）が、同期シンクロナイザリストから抽出される（ステップＳ７１）。たとえば、抽出されたＦＦがシンクロナイザＳｙｎｃＡ１に含まれるものであるとすると、図１１の例では、シンクロナイザＳｙｎｃＡ１に対する２つの同期シンクロナイザのうち、たとえば、シンクロナイザＳｙｎｃＢ１が抽出される。
【００７２】
次に、非同期リストから他のＦＦが１つ抽出され（ステップＳ７２）、抽出されたＦＦを含むシンクロナイザに対する同期シンクロナイザ（ここでは、同期シンクロナイザＢとする）が、同期シンクロナイザリストから抽出される（ステップＳ７３）。たとえば、抽出されたＦＦがシンクロナイザＳｙｎｃＢ１に含まれるものであるとすると、図１１の例では、シンクロナイザＳｙｎｃＢ１に対する２つの同期シンクロナイザのうち、たとえば、シンクロナイザＳｙｎｃＡ１が抽出される。
【００７３】
そして、同期シンクロナイザＡと、同期シンクロナイザＢとがループ部を形成するものであるか否かが判定される（ステップＳ７４）。たとえば、シンクロナイザＳｙｎｃＡ１に対する同期シンクロナイザＡとして、シンクロナイザＳｙｎｃＢ１が抽出されており、そのシンクロナイザＳｙｎｃＢ１に対する同期シンクロナイザＢが、シンクロナイザＳｙｎｃＡ１であったとする。この場合、シンクロナイザＳｙｎｃＡ１と、シンクロナイザＳｙｎｃＢ１とがループ部を形成するものと判定される。
【００７４】
同期シンクロナイザＡと、同期シンクロナイザＢとがループ部を形成するものと判定された場合には、ループ部を形成する同期シンクロナイザ対が、たとえば、ＲＡＭ６２またはＨＤＤ６３に記憶される（ステップＳ７５）。
【００７５】
ステップＳ７５の処理の後、またはステップＳ７４の処理で同期シンクロナイザＡと、同期シンクロナイザＢとがループ部を形成するものではないと判定された場合には、全同期シンクロナイザＢの抽出が終了したか否かが判定される（ステップＳ７６）。全同期シンクロナイザＢの抽出が終了した場合には、ステップＳ７７の処理が行われ、全同期シンクロナイザＢの抽出が終了していない場合には、ステップＳ７３からの処理が繰り返される。たとえば、図１１に示したような同期シンクロナイザリストから、ＳｙｎｃＢ１に対する同期シンクロナイザＢとして、シンクロナイザＳｙｎｃＡ１が抽出された後には、シンクロナイザＳｙｎｃＡ２が抽出され、上記と同様の判定処理が行われる。
【００７６】
ステップＳ７７の処理では、ステップＳ７０の処理で抽出したＦＦ以外の全ＦＦに対して、非同期リストからの抽出が終了したか否かが判定される（ステップＳ７７）。抽出が終了した場合にはステップＳ７８の処理が行われ、終了していない場合には、ステップＳ７２からの処理が繰り返される。
【００７７】
ステップＳ７８の処理では、全同期シンクロナイザＡの抽出が終了したか否かが判定される。全同期シンクロナイザＡの抽出が終了した場合には、ステップＳ７９の処理が行われ、全同期シンクロナイザＡの抽出が終了していない場合には、ステップＳ７１からの処理が繰り返される。たとえば、図１１に示したような同期シンクロナイザリストから、ＳｙｎｃＡ１に対する同期シンクロナイザＡとして、シンクロナイザＳｙｎｃＢ１が抽出された後には、シンクロナイザＳｙｎｃＢ２が抽出され、上記と同様の処理が行われる。
【００７８】
ステップＳ７９の処理では、ステップＳ７０の処理で全ＦＦに対して、非同期リストからの抽出が終了したか否かが判定される。抽出が終了した場合には、ループ部の検出処理が終了し、抽出が終了していない場合には、ステップＳ７０からの処理が繰り返される。
【００７９】
（ハンドシェイク部の検出処理）
ハンドシェイク部の抽出処理では、イネーブル端子のあるＦＦ（送信ＦＦまたは受信ＦＦ）のイネーブル端子から、そのＦＦの同期ドメイン内に対してバックトレースが行われる。バックトレースの際に同期シンクロナイザが検出され、その同期シンクロナイザがループ部を形成するものである場合には、そのループ部を含むハンドシェイク部があることが認識される。
【００８０】
図１３は、イネーブル端子からのバックトレースの例を示す図である。
セレクタ９０ａとＦＦ９０ｂを有している送信ＦＦ（または受信ＦＦ）９０は、イネーブル端子（図１３中の“Ｅ”と表記している端子）を有している。図１３中の例では、イネーブル端子は、ＦＦ／組み合わせ回路部９１に接続されており、ＦＦ／組み合わせ回路部９１には、シンクロナイザ９２−１，９２−２，９２−３が接続されている。イネーブル端子からのバックトレースにより、フリップフロップ９０ｂと同じクロック信号で動作するシンクロナイザ９２−１〜９２−３が検出されると、シンクロナイザ９２−１〜９２−３のうち、ループ部を形成するものがある場合には、そのループ部を含むハンドシェイク部があることが認識される。
【００８１】
図１４は、イネーブル端子を有するＦＦを含む回路部のＲＴＬの記述例である。
図１４中の、コード部Ｃ５は、イネーブル端子を有し、クロック信号Ｔｃｌｋで動作する送信ＦＦを表現している。“ＩｎＣｔｒｌ１”がイネーブル端子に入力される制御信号を示している。この送信ＦＦは、“ＩｎＣｔｒｌ１”が“１”の場合に、クロック信号Ｔｃｌｋの立ち上がりに同期して、入力データＩｎＤａｔａ１を送信データＴｘＤａｔａ１として出力する。
【００８２】
コード部Ｃ７は、イネーブル端子を有し、クロック信号Ｒｃｌｋで動作する受信ＦＦを表現している。“ＲｘＳｙｎｃ１”がイネーブル端子に入力される制御信号を示している。この送信ＦＦは、“ＲｘＳｙｎｃ１”が“１”の場合に、クロック信号Ｒｃｌｋの立ち上がりに同期して、送信データＴｘＤａｔａ１を取り込み、出力データＯｕｔＤａｔａ１として出力する。
【００８３】
なお、コード部Ｃ６は、クロック信号Ｔｃｌｋで動作する回路部、コード部Ｃ８は、クロック信号Ｒｃｌｋで動作する回路部を表現している。
図１５は、ハンドシェイク部の検出処理の一例を示すフローチャートである。
【００８４】
まず、非同期リストからＦＦ（この処理の説明ではＦＦ（Ａ）と呼ぶことにする）が１つ抽出される（ステップＳ８０）。ここで抽出されるＦＦ（Ａ）は、図１３に示したような、受信ＦＦ９０も含む。
【００８５】
次に、抽出されたＦＦ（Ａ）にイネーブル端子があるか否かが判定される（ステップＳ８１）。イネーブル端子があるか否かは、たとえば、図１４のようなコード部Ｃ１，Ｃ３があるか否かで判断される。イネーブル端子がある場合には、ステップＳ８２の処理が行われ、イネーブル端子がない場合には、ステップＳ８３の処理が行われる。
【００８６】
ステップＳ８２の処理では、ＦＦ（Ａ）に関するハンドシェイク部の認識処理が行われる。ステップＳ８３の処理では、ＦＦ（Ａ）に対する信号の送信側のＦＦ（この処理の説明ではＦＦ（Ｂ）と呼ぶことにする）の、回路情報からの抽出が行われる。たとえば、図１４の例で、最初に受信ＦＦを示すコード部Ｃ７が抽出された場合には、送信ＦＦを示すコード部Ｃ５の抽出が行われる。
【００８７】
その後、同様にＦＦ（Ｂ）にもイネーブル端子があるか否かが判定される（ステップＳ８４）。イネーブル端子がある場合には、ステップＳ８５の処理が行われ、イネーブル端子がない場合には、ステップＳ８６の処理が行われる。
【００８８】
ステップＳ８５の処理では、ＦＦ（Ｂ）に関するハンドシェイク部の認識処理が行われる。ステップＳ８６の処理では、全ＦＦ（Ｂ）の抽出が終了したか否かが判定される。全ＦＦ（Ｂ）の抽出が終了した場合には、ステップＳ８７の処理が行われ、抽出が終了していない場合には、ステップＳ８３からの処理が繰り返される。
【００８９】
ステップＳ８７の処理では、非同期リストから全てのＦＦがＦＦ（Ａ）として抽出されたか否かが判定される。全てのＦＦが抽出された場合には、ハンドシェイク部の検出処理が終了し、全てのＦＦの抽出が終わっていない場合には、ステップＳ８０からの処理が繰り返される。
【００９０】
図１６は、ハンドシェイク部の認識処理の一例を示すフローチャートである。図１６では、図１５のステップＳ８２，Ｓ８５のハンドシェイク部の認識処理の例が示されている。
【００９１】
ハンドシェイク部の認識処理では、ＦＦ（Ａ）またはＦＦ（Ｂ）のイネーブル端子からのバックトレースにより、同期シンクロナイザが抽出される（ステップＳ９０）。図１４の例では、コード部Ｃ８で“ＲｘＳｙｎｃ１＜＝ｒｅｇＲ”と記載されていることから、受信ＦＦのイネーブル端子の制御信号である“Ｒｘｓｙｎｃ１”は、クロック信号Ｒｃｌｋで動作するシンクロナイザの出力であることが分かる。図１１に示したような同期シンクロナイザリストが参照され、このシンクロナイザが同期シンクロナイザであれば抽出される。
【００９２】
その後、抽出された同期シンクロナイザがループ部を形成するものであるか判定される（ステップＳ９１）。検出された同期シンクロナイザが、図１２で示したループ部の検出処理で、ループ部を形成するものであるとされている場合、そのループ部を含む回路部はハンドシェイク部として認識される（ステップＳ９２）。検出された同期シンクロナイザがループ部を形成するものではない場合には、ハンドシェイク部の認識処理は終了する。
【００９３】
（補完処理）
送信側または受信側でハンドシェイク部が検出できなかった場合に、補完処理が行われる。
【００９４】
図１７は、受信側にイネーブル端子がない回路部の一例を示す図である。
回路部１００は、ＦＦ１０１ａとセレクタ１０１ｂを有する送信ＦＦ１０１、送信ＦＦ１０２、受信ＦＦ１０３を有している。さらに回路部１００は、ＦＦ／組み合わせ回路部１０４，１０５、ＦＦ１０６，１０８、シンクロナイザ１０７−１，１０７−２，１０７−３，１０９を有している。シンクロナイザ１０７−１はＦＦ１０７ａ、１０７ｂを有している。また、シンクロナイザ１０９は、ＦＦ１０９ａ，１０９ｂを有している。また、ＦＦ／組み合わせ回路部１０５は、送信ＦＦ１０１，１０２の何れの出力信号を受信ＦＦの入力端子（“Ｄ”と表記している）に供給するか、選択信号に応じて選択するセレクタ１０５ａを有している。
【００９５】
送信ＦＦ１０１，１０２、ＦＦ／組み合わせ回路部１０４、ＦＦ１０６、シンクロナイザ１０９はクロック信号ＣＫ１で動作する。受信ＦＦ１０３、ＦＦ／組み合わせ回路部１０５、シンクロナイザ１０７−１〜１０７−３、ＦＦ１０８は、クロック信号ＣＫ２で動作する。
【００９６】
また、送信ＦＦ１０１のセレクタ１０１ｂは、イネーブル端子（“Ｅ”と表記されている端子）を介して、ＦＦ／組み合わせ回路部１０４に接続されており、ＦＦ／組み合わせ回路部１０４からの選択信号に応じて、２つの入力値の何れかを選択して出力する。受信ＦＦ１０３にはイネーブル端子はない。
【００９７】
このような回路部１００では、イネーブル端子を有する送信ＦＦ１０１側では、上記のハンドシェイク部の検出処理により、ハンドシェイク部が検出されるが、イネーブル端子を有さない受信ＦＦ１０３側では検出されない。そこで、補完処理では、受信ＦＦ１０３の入力端子（データ端子）からのバックトレースにより、同期シンクロナイズの検出が行われる。たとえば、バックトレースにより、シンクロナイザ１０７−１が検出され、それが同期シンクロナイザであり、シンクロナイザ１０８とループ部を形成する場合、受信側もハンドシェイク部が検出されたと判定される。
【００９８】
以下、補完対象となる回路部のＲＴＬ記述の例を示す。
図１８は、送信側にイネーブル端子がない回路部のＲＴＬの記述例を示す図である。
図１８中のＲＴＬの記述の中で、コード部Ｃ１０では、送信ＦＦとセレクタを含む回路部が記述されている。この回路部は、クロック信号Ｔｃｌｋで動作する。そして、制御信号“ＴｘＳｙｎｃ１”が“１”の場合は、セレクタは２つの入力データ“ＩｎＤａｔａ１”，“ＩｎＤａｔａ２”のうち、“ＩｎＤａｔａ１”を出力し、ＦＦは、出力信号“ＴｘＤａｔａ１”として“ＩｎＤａｔａ１”を出力する。制御信号“ＴｘＳｙｎｃ１”が“０”の場合は、セレクタは２つの入力データ“ＩｎＤａｔａ１”，“ＩｎＤａｔａ２”のうち、“ＩｎＤａｔａ２”を出力し、ＦＦは、出力信号“ＴｘＤａｔａ１”として“ＩｎＤａｔａ２”を出力する。
【００９９】
コード部Ｃ１１では、イネーブル端子を有する受信ＦＦが記述されている。受信ＦＦはクロック信号Ｒｃｌｋで動作する。そして、イネーブル端子に入力される制御信号“ＲｘＳｙｎｃ１”が“１”の場合は、ＦＦは、出力信号“ＯｕｔＤａｔａ１”として、送信ＦＦから送信される“ＴｘＤａｔａ１”を出力する。
【０１００】
図１９は、受信側にイネーブル端子がない回路部のＲＴＬの記述例を示す図である。
図１９中のＲＴＬの記述の中で、コード部Ｃ１５では、イネーブル端子を有する２つの送信ＦＦを含む回路部が記述されている。この回路部は、クロック信号Ｔｃｌｋで動作する。そして、イネーブル端子に入力される制御信号“ＴｘＳｙｎｃ１”が“１”の場合に、一方の送信ＦＦは、出力信号“ＴｘＤａｔａ１”として“ＩｎＤａｔａ１”を出力し、他方の送信ＦＦは、出力信号“ＴｘＤａｔａ２”として“ＩｎＤａｔａ２”を出力する。
【０１０１】
コード部Ｃ１６では、受信ＦＦとセレクタを含む回路部が記述されている。この回路部は、クロック信号Ｒｃｌｋで動作する。そして、制御信号“ＲｘＳｙｎｃ１”が真（“１”）の場合は、セレクタは２つの入力データ“ＴｘＤａｔａ１”，“ＴｘＤａｔａ２”のうち、“ＴｘＤａｔａ１”を出力し、ＦＦは、出力信号“ＯｕｔＤａｔａ１”として“ＴｘＤａｔａ１”を出力する。制御信号“ＲｘＳｙｎｃ１”が偽（“０”）の場合は、セレクタは２つの入力データ“ＴｘＤａｔａ１”，“ＴｘＤａｔａ２”のうち、“ＴｘＤａｔａ２”を出力し、ＦＦは、出力信号“ＯｕｔＤａｔａ１”として“ＴｘＤａｔａ２”を出力する。
【０１０２】
図２０は、補完処理の全体の流れを示すフローチャートである。
まず、非同期リストからＦＦ（この処理の説明ではＦＦ（Ｃ）と呼ぶことにする）が１つ抽出される（ステップＳ１００）。
【０１０３】
次に、ＦＦ（Ｃ）に対する信号の送信側のＦＦ（この処理の説明ではＦＦ（Ｄ）と呼ぶことにする）の抽出が行われる（ステップＳ１０１）。その後、ＦＦ（Ｃ）側（受信側）またはＦＦ（Ｄ）側（送信側）でハンドシェイク部が検出されているかが判定される（ステップＳ１０２）。ＦＦ（Ｄ）側で検出ができなかった場合には、送信側の補完処理が行われ（ステップＳ１０３）、ＦＦ（Ｃ）側で検出ができなかった場合には、受信側の補完処理が行われる（ステップＳ１０４）。
【０１０４】
その後、全ＦＦ（Ｄ）の抽出が終了したか否かが判定される（ステップＳ１０５）。全ＦＦ（Ｄ）の抽出が終了した場合には、ステップＳ１０６の処理が行われ、抽出が終了していない場合には、ステップＳ１０１からの処理が繰り返される。
【０１０５】
ステップＳ１０６の処理では、非同期リストから全てのＦＦがＦＦ（Ｃ）として抽出されたか否かが判定される。全てのＦＦが抽出された場合には、ハンドシェイク部の検出処理が終了し、全てのＦＦの抽出が終わっていない場合には、ステップＳ１００からの処理が繰り返される。
【０１０６】
図２１は、補完処理の一例を示すフローチャートである。
受信側の補完処理の際にはＦＦ（Ｃ）のデータ端子から、送信側の補完処理の際にはＦＦ（Ｄ）のデータ端子からのバックトレースにより、同期シンクロナイザの抽出が行われる（ステップＳ１１０）。
【０１０７】
その後、抽出された同期シンクロナイザがループ部を形成するものであるか判定される（ステップＳ１１１）。検出された同期シンクロナイザが、図１２で示したループ部の検出処理で、ループ部を形成するものであるとされている場合、そのループ部を含む回路部はハンドシェイク部として認識される（ステップＳ１１２）。ステップＳ１１２の処理の後、または、検出された同期シンクロナイザがループ部を形成するものではない場合には、ハンドシェイク部の認識処理は終了する。
【０１０８】
（ハンドシェイク部のマッチング処理）
図２２は、ハンドシェイク部のマッチング処理の対象となる回路部の一例を示す図である。
【０１０９】
回路部２００は、ＦＦ２０１ａとセレクタ２０１ｂを有する送信ＦＦ２０１、ＦＦ２０２ａとセレクタ２０２ｂを有する受信ＦＦ２０２を有している。さらに回路部２００は、ＦＦ／組み合わせ回路部２０３，２０４，２０５，２０６、ＦＦ２０７，２０８，２０９，２１０、シンクロナイザ２１１，２１２，２１３，２１４を有している。
【０１１０】
送信ＦＦ２０１、ＦＦ／組み合わせ回路部２０３，２０５、ＦＦ２０７，２０９、シンクロナイザ２１２，２１４はクロック信号ＣＫ１で動作する。受信ＦＦ２０２、ＦＦ／組み合わせ回路部２０４，２０６、ＦＦ２０８，２１０、シンクロナイザ２１１，２１３はクロック信号ＣＫ２で動作する。
【０１１１】
また、送信ＦＦ２０１のセレクタ２０１ｂは、イネーブル端子を介して、ＦＦ／組み合わせ回路部２０３に接続されており、ＦＦ／組み合わせ回路部２０３からの選択信号に応じて、２つの入力値の何れかを選択して出力する。受信ＦＦ２０２のセレクタ２０２ｂは、イネーブル端子を介して、ＦＦ／組み合わせ回路部２０６に接続されており、ＦＦ／組み合わせ回路部２０６からの選択信号に応じて、２つの入力値の何れかを選択して出力する。
【０１１２】
このような回路部２００では、シンクロナイザ２１１，２１２を含み送信ＦＦ２０１に接続されるループ部Ｌ１と、シンクロナイザ２１３，２１４を含み受信ＦＦ２０２に接続されるループ部Ｌ２と、を有している。
【０１１３】
ハンドシェイク部のマッチング処理では、送信ＦＦ２０１に接続されるループ部Ｌ１のシンクロナイザと、受信ＦＦ２０２に接続されるループ部Ｌ２のシンクロナイザとが一致するか否かの判定が行われる。送信ＦＦ２０１に接続されるループ部Ｌ１のシンクロナイザと、受信ＦＦ２０２に接続されるループ部Ｌ２のシンクロナイザとが一致する場合には、ハンドシェイク部は、両側ハンドシェイク構造として検出される。送信ＦＦ２０１に接続されるループ部Ｌ１のシンクロナイザと、受信ＦＦ２０２に接続されるループ部Ｌ２のシンクロナイザとが異なる場合には、ハンドシェイク部は、送信／受信それぞれの片側ハンドシェイク構造として検出される。
【０１１４】
図２２の場合には、クロック信号ＣＫ２で動作するループ部Ｌ１のシンクロナイザ２１１と、ループ部Ｌ２のシンクロナイザ２１３は異なる。また、クロック信号ＣＫ１で動作するループ部Ｌ１のシンクロナイザ２１２と、ループ部Ｌ２のシンクロナイザ２１４は異なる。したがって、回路部２００は、送信／受信それぞれの片側ハンドシェイク構造のハンドシェイク部として検出される。
【０１１５】
図２３は、両側ハンドシェイク構造のハンドシェイク部と判定される回路部のＲＴＬ記述の例を示す図である。
コード部Ｃ２０では、イネーブル端子を有し、クロック信号Ｔｃｌｋの立ち上がりに同期して入力データ“ＩｎＤａｔａ１”を取り込み、“ＴｘＤａｔａ１”として出力する送信ＦＦが表されている。コード部Ｃ２２では、イネーブル端子を有し、クロック信号Ｒｃｌｋの立ち上がりに同期して“ＴｘＤａｔａ１”を取り込み、“ＯｕｔＤａｔａ１”として出力する受信ＦＦが表されている。
【０１１６】
コード部Ｃ２１では、クロック信号Ｔｃｌｋで動作する回路部が表されている。この回路部には、送信ＦＦのイネーブル端子に入力する制御信号“ＴｘＳｙｎｃ１”を出力するシンクロナイザ（以下シンクロナイザＴｘＳｙｎｃ１と表記する）が含まれている。
【０１１７】
コード部Ｃ２３では、クロック信号Ｒｃｌｋで動作する回路部が表されている。この回路部には、受信ＦＦのイネーブル端子に入力する制御信号“ＲｘＳｙｎｃ１”を出力するシンクロナイザ（以下シンクロナイザＲｘＳｙｎｃ１と表記する）が含まれている。
【０１１８】
コード部Ｃ２１，Ｃ２３から、送信側で認識されるループ部と、受信側で認識されるループ部は、同じシンクロナイザ（シンクロナイザＴｘＳｙｎｃ１とシンクロナイザＲｘＳｙｎｃ１）を有することが分かる。そのため、図２３のようなＲＴＬで表される回路部は、両側ハンドシェイク構造のハンドシェイク部と判定される。
【０１１９】
図２４は、片側ハンドシェイク構造のハンドシェイク部と判定される回路部のＲＴＬ記述の例を示す図である。
コード部Ｃ２５では、イネーブル端子を有し、クロック信号Ｔｃｌｋの立ち上がりに同期して入力データ“ＩｎＤａｔａ１”を取り込み、“ＴｘＤａｔａ１”として出力する送信ＦＦが表されている。コード部Ｃ２７では、イネーブル端子を有し、クロック信号Ｒｃｌｋの立ち上がりに同期して “ＴｘＤａｔａ１”を取り込み、“ＯｕｔＤａｔａ１”として出力する受信ＦＦが表されている。
【０１２０】
コード部Ｃ２６では、クロック信号Ｔｃｌｋで動作する回路部が表されている。この回路部には、送信ＦＦのイネーブル端子に入力する制御信号“ＴｘＳｙｎｃ１”を出力するシンクロナイザＴｘＳｙｎｃ１と、制御信号“ＴｘＳｙｎｃ２”を出力するシンクロナイザ（以下シンクロナイザＴｘＳｙｎｃ２と表記する）が含まれている。
【０１２１】
コード部Ｃ２８では、クロック信号Ｒｃｌｋで動作する回路部が表されている。この回路部には、受信ＦＦのイネーブル端子に入力する制御信号“ＲｘＳｙｎｃ１”を出力するシンクロナイザＲｘＳｙｎｃ１と、制御信号“ＲｘＳｙｎｃ２”を出力するシンクロナイザ（以下シンクロナイザＲｘＳｙｎｃ２と表記する）が含まれている。
【０１２２】
コード部Ｃ２６，Ｃ２８から、送信側で認識されるループ部には、シンクロナイザＴｘＳｙｎｃ１とシンクロナイザＲｘＳｙｎｃ２とが含まれ、受信側で認識されるループ部には、シンクロナイザＲｘＳｙｎｃ１とシンクロナイザＴｘＳｙｎｃ２とが含まれることが分かる。つまり、ループ部に含まれるシンクロナイザが異なる。そのため、図２４のようなＲＴＬで表される回路部は、送信／受信それぞれの片側ハンドシェイク構造のハンドシェイク部と判定される。
【０１２３】
図２５は、ハンドシェイク部のマッチング処理の一例を示すフローチャートである。
まず、前述の補完処理までで、ハンドシェイク部が認識された受信ＦＦ（Ｅ）が、たとえば、ＲＡＭ６２またはＨＤＤ６３から１つ抽出される（ステップＳ１２０）。
【０１２４】
次に、受信ＦＦ（Ｅ）に対する送信ＦＦ（Ｆ）の抽出が行われる（ステップＳ１２１）。その後、受信ＦＦ（Ｅ）と送信ＦＦ（Ｆ）の両方でハンドシェイク部が検出されているかが判定される（ステップＳ１２２）。
【０１２５】
両側でハンドシェイク部が検出されている場合には、受信ＦＦ（Ｅ）、送信ＦＦ（Ｆ）の両側で検出されるループ部のシンクロナイザ対の抽出が行われる（ステップＳ１２３）。そして、受信ＦＦ（Ｅ）側と送信ＦＦ（Ｆ）側でループ部のシンクロナイザ対が、同一か否かが判定される（ステップＳ１２４）。シンクロナイザ対が同一である場合には、ハンドシェイク部が両側ハンドシェイク構造であることが検出される（ステップＳ１２５）。
【０１２６】
ステップＳ１２２の処理で、受信ＦＦ（Ｅ）と送信ＦＦ（Ｆ）の両側でハンドシェイク部が検出されていないと判定された場合、ハンドシェイク部が片側ハンドシェイク構造であることが検出される（ステップＳ１２６）。ステップＳ１２４の処理で、シンクロナイザ対が同一ではないと判定された場合も同様に、ハンドシェイク部が片側ハンドシェイク構造であることが検出される。
【０１２７】
ステップＳ１２５またはステップＳ１２６の処理後、全送信ＦＦ（Ｆ）の抽出が終了したか否かが判定される（ステップＳ１２７）。全ＦＦ（Ｆ）の抽出が終了した場合には、ステップＳ１２８の処理が行われ、抽出が終了していない場合には、ステップＳ１２１からの処理が繰り返される。
【０１２８】
ステップＳ１２８の処理では、ハンドシェイク部が認識された全ての受信ＦＦ（Ｅ）が抽出されたか否かが判定される。全ての受信ＦＦ（Ｅ）が抽出された場合には、ハンドシェイク部のマッチング処理が終了し、全ての受信ＦＦ（Ｅ）の抽出が終わっていない場合には、ステップＳ１２０からの処理が繰り返される。
【０１２９】
以下では、上記のような回路解析方法を適用した場合のハンドシェイク部の検出例を説明する。
（適用例１）
図２６は、イネーブル端子のある２つの送信ＦＦとイネーブル端子のない受信ＦＦを有した回路部の例を示す図である。
【０１３０】
回路部３００は、ＦＦ３０１ａとセレクタ３０１ｂを有する送信ＦＦ３０１、ＦＦ３０２ａとセレクタ３０２ｂを有する送信ＦＦ３０２、１つのＦＦである受信ＦＦ３０３を有している。さらに回路部３００は、ＦＦ／組み合わせ回路部３０４，３０５、組み合わせ回路部３０６、セレクタ３０７、ＦＦ３０８，３０９、シンクロナイザ３１０，３１１を有している。
【０１３１】
シンクロナイザ３１０はＦＦ３１０ａ、３１０ｂを有している。また、シンクロナイザ３１１は、ＦＦ３１１ａ，３１１ｂを有している。
送信ＦＦ３０１，３０２、ＦＦ／組み合わせ回路部３０４、ＦＦ３０８、シンクロナイザ３１１はクロック信号ＣＫ１で動作する。受信ＦＦ３０３、ＦＦ／組み合わせ回路部３０５、シンクロナイザ３１０、ＦＦ３０９は、クロック信号ＣＫ２で動作する。
【０１３２】
送信ＦＦ３０１，３０２のセレクタ３０１ｂ，３０２ｂは、ＦＦ／組み合わせ回路部３０４に接続されており、ＦＦ／組み合わせ回路部３０４からの選択信号に応じて、入力データｄａｔ１，ｄａｔ２か、ＦＦ３０１ａ，３０２ａの出力値の何れかを選択して出力する。また、セレクタ３０７は、ＦＦ／組み合わせ回路部３０５に接続されており、ＦＦ／組み合わせ回路部３０５からの選択信号に応じて、送信ＦＦ３０１，３０２の出力信号の何れかを選択して出力する。ＦＦ組み合わせ回路部３０４，３０５、ＦＦ３０８，３０９、シンクロナイザ３１０，３１１は、ループ部Ｌ５を形成している。
【０１３３】
このような回路部３００に対して、本実施の形態の回路解析方法を適用すると、以下のようになる。
まず、図６に示したような非同期リストへのＦＦの登録処理では、入力端子からのバックトレースにより非同期のＦＦが検出される、受信ＦＦ３０３、ＦＦ３１０ａ，３１１ａが非同期リストへ登録される。そして、図７に示したような処理により、受信ＦＦ３０３を有する１段型シンクロナイザ、ＦＦ３１０ａ，３１０ｂを有する２段型のシンクロナイザ３１０、ＦＦ３１１ａ，３１１ｂを有する２段型のシンクロナイザ３１１が検出される。
【０１３４】
次に、図９に示したような同期シンクロナイザリストへの登録処理により、シンクロナイザ３１０に対する同期シンクロナイザとして、シンクロナイザ３１１が同期シンクロナイザリストへ登録される。また、シンクロナイザ３１１に対する同期シンクロナイザとして、シンクロナイザ３１０が同期シンクロナイザリストへ登録される。
【０１３５】
その後、図１２に示したようなループ部検出処理により、シンクロナイザ３１０，３１１を含むループ部Ｌ５が検出される。そして、図１５、図１６に示したような処理により、イネーブル端子を有する送信ＦＦ３０１，３０２に関するハンドシェイク部が認識される。受信ＦＦ３０３はイネーブル端子を有さないため、ハンドシェイク部は検出されない。しかし、受信ＦＦ３０３の入力端子（データ端子）は組み合わせ回路部３０６と、セレクタ３０７を介してループ部Ｌ５に接続されているので、図２０、図２１に示したような補完処理により、受信ＦＦ３０３側でもハンドシェイク部が認識される。
【０１３６】
その後、図２５に示したハンドシェイク部のマッチング処理が行われる。受信ＦＦ３０３の入力端子に、組み合わせ回路部３０６、セレクタ３０７を介して接続されるループ部Ｌ５と、送信ＦＦ３０１，３０２に接続されるループ部Ｌ５は同じであり、同一のシンクロナイザ対（シンクロナイザ３１０，３１１）を含む。そのため、回路部３００は、両側ハンドシェイク構造のハンドシェイク部であることが検出される。
【０１３７】
（適用例２）
図２７は、イネーブル端子のない送信ＦＦとイネーブル端子のある受信ＦＦを有した回路部の例を示す図である。
【０１３８】
回路部４００は、送信ＦＦ４０１、ＦＦ４０２ａとセレクタ４０２ｂを有する受信ＦＦ４０２を有している。さらに回路部４００は、ＦＦ／組み合わせ回路部４０３，４０４，４０５、セレクタ４０６、ＦＦ４０７，４０８、シンクロナイザ４０９，４１０を有している。
【０１３９】
シンクロナイザ４０９はＦＦ４０９ａ，４０９ｂを有している。また、シンクロナイザ４１０は、ＦＦ４１０ａ，４１０ｂを有している。
送信ＦＦ４０１、ＦＦ／組み合わせ回路部４０３，４０４、ＦＦ４０７、シンクロナイザ４１０はクロック信号ＣＫ１で動作する。受信ＦＦ４０２、ＦＦ／組み合わせ回路部４０５、ＦＦ４０８、シンクロナイザ４０９は、クロック信号ＣＫ２で動作する。
【０１４０】
受信ＦＦ４０２のセレクタ４０２ｂは、ＦＦ／組み合わせ回路部４０５に接続されており、ＦＦ／組み合わせ回路部４０５からの選択信号に応じて、送信ＦＦ４０１の出力信号か、ＦＦ４０２ａの出力信号の何れかを選択して出力する。また、セレクタ４０６は、ＦＦ／組み合わせ回路部４０４に接続されており、ＦＦ／組み合わせ回路部４０４からの選択信号に応じて、入力データｄａｔ１か入力データｄａｔ２の何れかを選択して出力する。ＦＦ組み合わせ回路部４０４，４０５、ＦＦ４０７，４０８、シンクロナイザ４０９，４１０は、ループ部Ｌ６を形成している。
【０１４１】
このような回路部４００に対して、本実施の形態のハンドシェイク部の検出処理を適用すると、以下のようになる。
まず、図６に示したような非同期リストへのＦＦの登録処理では、入力端子からのバックトレースにより非同期のＦＦが検出される受信ＦＦ４０２、ＦＦ４０９ａ，４１０ａが非同期リストへ登録される。そして、図７に示したような処理により、受信ＦＦ４０２を有する１段型シンクロナイザ、ＦＦ４０９ａ，４０９ｂを有する２段型のシンクロナイザ４０９、ＦＦ４１０ａ，４１０ｂを有する２段型のシンクロナイザ４１０が検出される。
【０１４２】
次に、図９に示したような同期シンクロナイザリストへの登録処理により、シンクロナイザ４０９に対する同期シンクロナイザとして、シンクロナイザ４１０が同期シンクロナイザリストへ登録される。また、シンクロナイザ４１０に対する同期シンクロナイザとして、シンクロナイザ４０９が同期シンクロナイザリストへ登録される。
【０１４３】
その後、図１２に示したようなループ部検出処理により、シンクロナイザ４０９，４１０を含むループ部Ｌ６が検出される。そして、図１５、図１６に示したような処理により、イネーブル端子を有する受信ＦＦ４０２に関するハンドシェイク部が認識される。送信ＦＦ４０１はイネーブル端子を有さないため、ハンドシェイク部は検出されない。しかし、送信ＦＦ４０１の入力端子（データ端子）はＦＦ／組み合わせ回路部４０３と、セレクタ４０６を介してループ部Ｌ６に接続されているので、図２０、図２１に示したような補完処理により、送信ＦＦ４０１側でもハンドシェイク部が認識される。
【０１４４】
その後、図２５に示したハンドシェイク部のマッチング処理が行われる。受信ＦＦ４０２に接続されるループ部Ｌ６と、送信ＦＦ４０１の入力端子にＦＦ／組み合わせ部４０３とセレクタ４０６を介して接続されるループ部Ｌ６は同一であり、同一のシンクロナイザ対（シンクロナイザ４０９，４１０）を含むので、回路部４００は、両側ハンドシェイク構造のハンドシェイク部であることが検出される。
【０１４５】
以上のように、本実施の形態の回路解析方法によれば、シンクロナイザの型、ハンドシェイク部の構造（片側ハンドシェイク、両側ハンドシェイク）、イネーブル端子の有無など、回路構成の異なる様々なハンドシェイク部を容易に検出することができる。また、ユーザは、様々な種類のハンドシェイク部を抽出するためのテンプレートを作成しなくてもよくなり、ユーザの負担を軽減できる。
【０１４６】
（ハンドシェイク部の検出結果の出力例）
図２８は、ハンドシェイク部の検出結果の出力例を示す図である。図２８では、ファイル名が、“ｈａｎｄｓｈａｋｅ．ｖ”というファイルに対して本実施の形態の回路解析方法を行った結果の一例が示されている。
【０１４７】
図２９は、ファイル名が“ｈａｎｄｓｈａｋｅ．ｖ”のファイルの内容を示す図である。
図２８のメッセージ欄には、ハンドシェイク部が検出されたことを示すメッセージ“Ｅｖａｌｕａｔｅ  ｈａｎｄｓｈａｋｅ  ｓｔｒｕｃｔｕｒｅ”が示されている。このメッセージに関し、“ｈａｎｄｓｈａｋｅ．ｖ”の１２行目が指定されている。図２９に示されているように、１２行目には、クロック信号Ｒｃｌｋの立ち上がりに同期して、送信ＦＦから出力される“ＴｘＤａｔａ”を取り込んで“ＯｕｔＤａｔａ”として出力する受信ＦＦ（イネーブル端子あり）が記述されている。メッセージ“Ｅｖａｌｕａｔｅ  ｈａｎｄｓｈａｋｅ  ｓｔｒｕｃｔｕｒｅ”により、このような受信ＦＦを有する回路部は、ハンドシェイク構造をもつハンドシェイク部であることが示される。
【０１４８】
また、送信側で用いられるクロック信号“ＨａｎｄＳｈａｋｅ．Ｔｃｌｋ”や、そのクロック信号で動作するシンクロナイザ名“ＨａｎｄＳｈａｋｅ．ＴｘＳｙｎｃ”と、そのシンクロナイザの型“２−ＤＦＦ−ＬＯＯＰ”などが示される。さらに、送信側で用いられるクロック信号“ＨａｎｄＳｈａｋｅ．Ｒｃｌｋ”や、そのクロック信号で動作するシンクロナイザ名“ＨａｎｄＳｈａｋｅ．ＲｘＳｙｎｃ”と、そのシンクロナイザの型“２−ＤＦＦ−ＬＯＯＰ”などが示される。なお、“２−ＤＦＦ−ＬＯＯＰ”は、前述した２段型のシンクロナイザを示している。
【０１４９】
なお、２つ目のメッセージ、“Ｅｖａｌｕａｔｅ  ｌｏｏｐ  ｌｅｖｅｌ  ｓｙｎｃｈｒｏｎｉｚｅｒ”は、シンクロナイザ対がループ部を形成していることを示すメッセージである。
【０１５０】
以上説明してきた回路解析方法は、コンピュータによって実現することができる。その場合、回路解析装置６０が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１５１】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１５２】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１５３】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【０１５４】
以上、実施の形態に基づき、本発明の回路解析装置、回路解析方法及びプログラムの一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【０１５５】
１０  回路解析装置
１１  記憶部
１２  制御部
２０  回路部
２１  送信部（送信ＦＦ）
２１ｂ，２２ｂ，２５〜３０  ＦＦ
２１ａ，２２ａ  セレクタ
２２  受信部（受信ＦＦ）
２３，２４  ＦＦ／組み合わせ回路部
３１，３２  シンクロナイザ
【図１】
2013175123.tif 000003
【図２】
2013175123.tif 000004
【図３】
2013175123.tif 000005
【図４】
2013175123.tif 000006
【図５】
2013175123.tif 000007
【図６】
2013175123.tif 000008
【図７】
2013175123.tif 000009
【図８】
2013175123.tif 000010
【図９】
2013175123.tif 000011
【図１０】
2013175123.tif 000012
【図１１】
2013175123.tif 000013
【図１２】
2013175123.tif 000014
【図１３】
2013175123.tif 000015
【図１４】
2013175123.tif 000016
【図１５】
2013175123.tif 000017
【図１６】
2013175123.tif 000018
【図１７】
2013175123.tif 000019
【図１８】
2013175123.tif 000020
【図１９】
2013175123.tif 000021
【図２０】
2013175123.tif 000022
【図２１】
2013175123.tif 000023
【図２２】
2013175123.tif 000024
【図２３】
2013175123.tif 000025
【図２４】
2013175123.tif 000026
【図２５】
2013175123.tif 000027
【図２６】
2013175123.tif 000028
【図２７】
2013175123.tif 000029
【図２８】
2013175123.tif 000030
【図２９】
2013175123.tif 000031