シンクロナイザ自動挿入方法、および挿入装置
【課題】膨大な数の非同期データ転送パスのうちで、シンクロナイザ挿入がメタステーブル問題の対策とならないパスを自動的に除外し、その他のパスにシンクロナイザを挿入する。
【解決手段】非同期データ転送パスのうちで非同期クロックが原因となるメタステーブル問題に対する対策が行われていない未対策パスを記憶し、記憶されている未対策パスにシンクロナイザを挿入してもメタステーブル問題の対策とならないパスを自動的に判定し、その他のパスにシンクロナイザを挿入する。
【解決手段】非同期データ転送パスのうちで非同期クロックが原因となるメタステーブル問題に対する対策が行われていない未対策パスを記憶し、記憶されている未対策パスにシンクロナイザを挿入してもメタステーブル問題の対策とならないパスを自動的に判定し、その他のパスにシンクロナイザを挿入する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータ転送方式に係り、さらに詳しくは、異なる周波数の独立のクロック信号で動作している2つの回路の間のデータ転送パスに対して、メタステーブル問題を回避するためのシンクロナイザの挿入が必要か否かを判定し、シンクロナイザ挿入パスの絞込みを行うシンクロナイザ自動挿入方法、および挿入装置に関する。
【背景技術】
【0002】
周波数の異なる、互いに独立のクロック信号で動作している装置の間、回路の間、またはLSIチップの間でデータ転送を行う場合に、メタステーブルという問題が発生する可能性がある。例えばデータ転送元のクロック周波数よりデータ転送先のクロック周波数が高い場合には、例えばデータ転送元のクロック信号の立ち上がりに同期して転送されるデータをデータ転送先のクロック信号の立ち上がりにおいて適切に受信することができず、例えばデータ転送元から“1”というデータを送っても、データ転送先において“0”でも“1”でもない不明なデータとして受信されてしまうことがある。逆にデータ転送元のクロック信号の周波数がデータ転送先のクロック信号の周波数より高い場合には、データ転送先のクロック信号がデータ転送元のクロック信号の分周信号であるような場合を除いて、クロック信号の立ち上がり時点のずれのために、正しいデータ転送を行うことができない場合もある。
【0003】
このようなメタステーブル問題の発生を回避するために、周波数の異なるクロック信号で動作している回路の間のデータ転送パス、すなわち非同期データ転送パスに、例えば複数段のフリップ・フロップ(FF)によって構成されるシンクロナイザを挿入することによって、正しいデータ転送を実現する方法がある。従来のシンクロナイザ挿入方法においては、非同期データ転送パスの全てを検出し、その全てのパスにシンクロナイザを自動的に挿入する方法が用いられていた。
【0004】
しかしながら、例えばデータ転送先のデータ受け側のフリップ・フロップの出力が、データ転送先の他のフリップ・フロップのクリア端子などに接続されているような場合には、本来、例えば受信側のクロック信号を送信側のクロック信号の分周信号とする必要があり、非同期データ転送パスにシンクロナイザを挿入してもメタステーブル問題の対策にならないことがある。従来のシンクロナイザ自動挿入方法では、例えばこのようにシンクロナイザを挿入してもメタステーブル問題の対策にならない箇所にも全てシンクロナイザが挿入されてしまい、データ転送回路の面積が大きくなってしまうという問題点があった。
【0005】
従来においても、このようにシンクロナイザを挿入してもメタステーブル問題の対策とならない非同期データ転送パスについては、例えば設計者が、シンクロナイザ挿入の可否を判定する方法もあったが、このような場合には非同期データ転送パスとして検出される膨大な数の全てのパスを対象としてシンクロナイザ挿入の可否を判定する必要があり、工数が大きくなり、また設計者の判定ミスの発生確率も大きくなってしまうという問題点があった。
【0006】
このような非同期データ転送方式やメタステーブル問題解決のための従来技術として特許文献1から特許文献3がある。特許文献1では、全てが立ち上がりで動作するフリップ・フロップのみで、最小構成の非同期信号同期化回路を提供する技術が開示されている。
【0007】
特許文献2では、異なるクロック周波数で動作している2回路間のデータ転送において、転送先でのデータ取り込みの有無をデータ転送基準信号によってデータ転送元が認識す
ることによって、1つのデータ転送にかかるオーバーヘッドを少なくするデータ転送方法が開示されている。
【0008】
特許文献3では、CPUがマクロ回路からマクロデータを読み込む場合に、少ないリードクロック数で読込みを完了することができ、マルチビットに対応するメタステーブル回避機能をもったバスインターフェース回路が開示されている。
【0009】
しかしながらこのような従来技術を用いても、非同期データ転送パスにシンクロナイザを挿入すべきか否かを自動的に判定し、挿入すべきパスにのみシンクロナイザを挿入することはできないという問題点を解決することができなかった。
【特許文献1】特開平10−135938号公報 「非同期信号同期化回路」
【特許文献2】特開平11−161599号公報 「データ転送方法」
【特許文献3】特開2006−236060号公報 「バスインターフェース回路」
【発明の開示】
【発明が解決しようとする課題】
【0010】
本発明の課題は、上述の問題点に鑑み、膨大な数の非同期データ転送パスのうちで、シンクロナイザ挿入がメタステーブル問題の対策とならないパスを自動的に判定し、そのようなパスを除いて自動的にシンクロナイザの挿入を行うことである。
【課題を解決するための手段】
【0011】
本発明のシンクロナイザ自動挿入方法においては、まず第1ステップとして非同期未対策パスのデータを記憶する。すなわち一定のクロック周波数で動作しているデータ転送元から、その一定のクロック周波数と異なるクロック周波数で動作しているデータ転送先へのデータパスとしての非同期(クロック)データ転送パスのうちで、非同期クロックが原因となるメタステーブル問題に対する対策が行われていない非同期(クロック)未対策パスのデータを記憶する。
【0012】
第2ステップとして記憶されている非同期未対策パスのうちで、その未対策パスにシンクロナイザを挿入してもメタステーブル問題への対策とならないシンクロナイザ挿入不要パスを判定し、例えば第1ステップで非同期未対策パスのデータを記憶しているメモリからそのパスのデータを削除する。
【0013】
最後に第3ステップとしてシンクロナイザ挿入不要パス以外の、例えばメモリに削除されずに残っている非同期未対策パスに対してシンクロナイザを挿入する。
本発明のシンクロナイザ自動挿入装置は、以上のシンクロナイザ自動挿入方法を実現するための装置である。
【0014】
以上のように本発明によれば、非同期(クロック)データ転送パスのうちで、シンクロナイザを挿入してもメタステーブル問題の対策にならないシンクロナイザ挿入不要パスを自動的に判定し、それ以外の非同期未対策パスの全てに対してシンクロナイザが自動的に挿入されることになる。
【発明の効果】
【0015】
本発明によれば、膨大な数の非同期データ転送パスのうちで、シンクロナイザを挿入してもメタステーブル問題の対策にならないパスが自動的に判定される。それ以外のパスに対してはシンクロナイザの挿入が自動的に行われるため、例えば設計者がシンクロナイザ挿入不要パスの判定を行う場合に比べて、設計者によるミスの発生確率が大幅に減少し、また工数も大幅に削減することが可能となる。
【発明を実施するための最良の形態】
【0016】
図1は、本実施形態におけるシンクロナイザ自動挿入方法の基本的な機能ブロック図である。同図はデータ転送元のクロック信号とデータ転送先のクロック信号との周波数が異なる非同期クロックデータ転送系、例えば2つの装置の間、2つの回路の間、あるいは2つのLSIチップの間などにおけるデータ転送系において、データ転送パスのうちでシンクロナイザを挿入すべきパスを自動的に判定して、そのパスにシンクロナイザを挿入するためのシンクロナイザ自動挿入方法の機能ブロック図である。
【0017】
図1において、まずステップS1で、データ転送元におけるクロック周波数と異なるクロック周波数で動作しているデータ転送先へのデータパスとしての非同期データ転送パスのうちで、非同期クロックに対する対策(メタステーブル問題への対策)が行われていない非同期未対策パスのデータが記憶され、ステップS2で記憶されている非同期未対策パスのうちで、その未対策パスにシンクロナイザを挿入しても非同期クロック対策、すなわちメタステーブル問題の対策とならないシンクロナイザ挿入不要パスが判定され、ステップS3でそのシンクロナイザ挿入不要パスを除いて、非同期未対策パスへのシンクロナイザ自動挿入が行われる。
【0018】
図2は、本実施形態においてシンクロナイザ自動挿入装置として使用されるコンピュータシステムの一般的な構成ブロック図である。同図においてコンピュータシステムは、中央処理装置(CPU)1、リード・オンリー・メモリ(ROM)2、ランダム・アクセス・メモリ(RAM)3、必要に応じて外部との通信を行うための通信インターフェース4、各種のデータを記憶するための記憶装置5、入出力装置6、およびこれらの全てを接続するためのバス7によって構成されている。
【0019】
図3は、本実施形態におけるシンクロナイザ自動挿入装置の機能的な構成ブロック図である。同図においてシンクロナイザ自動挿入装置10は、基本的な構成要素としてクロック定義ファイル・HDL読込み部11、非同期データ転送パス抽出部12、シンクロナイザ挿入要否判定部13、およびシンクロナイザ挿入部14を備えている。
【0020】
クロック定義ファイル・HDL読込み部11は、例えばデータ転送元とデータ転送先のクロック信号の周波数などの定義データを格納したクロック定義ファイル15、およびデータ転送元とデータ転送先を含む回路のデータとしてのハードウェア・デスクリプション・ランゲージ(HDL)データ16とを読み込み、回路情報17を作成する。回路情報17にはHDLの回路接続情報とクロック定義情報が格納されており、シンクロナイザ自動挿入装置10の内部の各構成部が回路接続情報を参照、および更新するために使用される。
【0021】
非同期データ転送パス抽出部12は、回路情報17を用いてデータ転送元とデータ転送先の間の非同期データ転送パスを抽出し、非同期データ転送パス情報テーブル18にそのパスのデータを設定する。ここでクロック定義ファイル15、HDLデータ16は、図2の、例えば記憶装置5に格納されているものとし、また非同期データ転送パス情報テーブル18はRAM3に格納されるものとする。
【0022】
図4は、非同期データ転送パス情報テーブル18の格納内容の例である。このテーブルにはそれぞれの非同期未対策パスに対応して、データ転送元の回路モジュールとその端子名、データ転送先の回路モジュールとその端子名が格納されている。ここで回路モジュールは、データ転送元とデータ転送先でそれぞれ階層構造を持っているものとし、例えばFF1はトップの階層の次の階層を、FF2はさらにその下の階層を表わすものとし、図4のテーブルの第1行は、データ転送元のFF1の出力端子Qと、データ転送先のFF2のデータ入力端子Dとの間のパスが非同期未対策バスとなっていることを示している。
【0023】
図3に戻り、シンクロナイザ挿入要否判定部13は、非同期データ転送パス情報テーブル18に設定されているそれぞれのパスに対して、回路情報17を用いてシンクロナイザの挿入の必要があるか否かを判定し、シンクロナイザを挿入すべきパスを示すシンクロナイザ挿入テーブル19を作成する。このシンクロナイザ挿入テーブルも、例えば図2のRAM3に格納される。
【0024】
図5は、シンクロナイザ挿入テーブル19に格納されるデータの例である。同図において挿入場所はデータ転送先、すなわち受信側のモジュールにおける非同期データ転送パスの接続端子名であり、シンクロナイザはこの手前に挿入される。図5の第1行は図4の第1行に対応し、受信側のFF2のデータ入力端子の前にシンクロナイザが挿入されることになる。
【0025】
同期クロック端子名はシンクロナイザとして使用されるFFに対するクロック信号を与える端子名であり、ここでは受信側のFF2のクロック端子CKからクロック信号がシンクロナイザを構成するFFに与えられることになる。シンクロナイザ用FF数はシンクロナイザを構成するFFの段数である。
【0026】
図3に戻り、シンクロナイザ挿入部14は、シンクロナイザ挿入テーブル19と回路情報17との内容を用いて、シンクロナイザを挿入すべき非同期データ転送パスに対するシンクロナイザ自動挿入を行い、最終的にシンクロナイザ挿入後のHDLデータ20を出力する。
【0027】
図6は、図3のシンクロナイザ挿入要否判定部13による処理の詳細フローチャートである。同図において処理が開始されると、まずステップS10でメモリパス除外処理、ステップS11で2段セレクタパス除外処理、ステップS12でクリア/プリセットパス除外処理が行われる。これら3つの処理の詳細は後述するが、いずれの処理も図3の非同期データ転送パス情報テーブル18に格納されているパスのそれぞれに対して、そのパスをシンクロナイザ挿入対象から除外すべきか否かを判定し、除外すべきパスについては非同期データ転送パス情報テーブル18から削除する処理を行うものである。
【0028】
これらの3つの処理が終了すると、ステップS13で非同期データ転送パス情報テーブル18に残っているパスから1つずつパスの読込みが行われ、ステップS14でパスがなくなったか否かが判定され、まだなくなっていないときにはステップS15で読み込まれたパスに対して挿入すべきシンクロナイザを構成するFFの段数が決定され、ステップS16でシンクロナイザ挿入テーブル、すなわち図5の内容がセットされ、ステップS13以降の処理が繰り返され、ステップS14で読み込むべきパスがなくなったと判定された時点で処理を終了する。
【0029】
図7は、図6のステップS10におけるメモリパス除外処理の詳細フローチャートである。同図において処理が開始されると、まずステップS20で非同期データ転送パス情報テーブル18からパスが1つずつ読み込まれ、ステップS21でパスがなくなったか否かが判定され、なくなっていない場合にはステップS22で、データ転送先のデータ受け側のFFが、後述するようにFFの2次元配列を構成するFFであるか否かが判定される。その判定結果がNoのときには直ちに、YesのときにはステップS23で該当のパスが非同期データ転送パス情報テーブル18から削除された後にステップS20以降の処理が繰り返され、ステップS21で読み込むべきパスがなくなったと判定されると処理を終了する。
【0030】
図8は、2段セレクタパス除外処理の詳細フローチャートである。この処理においては
、データの転送先、すなわち受信側のFFの入力先、または出力先をトレースし、セレクタを2段経由するか、特に2段のセレクタの制御端子を経由するかを判定し、経由する場合に非同期データ転送パス情報テーブル18からそのパスを削除することを基本として、処理が行われる。
【0031】
処理が開始されると、まずステップS25で非同期データ転送パス情報テーブル18から1つずつパスが読み込まれ、ステップS26で読み込むべきパスがなくなったか否かが判定され、なくなっていないときにはステップS27でデータ転送先、すなわち受信側のFF、例えば非同期データ転送パスが接続されたFFの入力先としての非同期データ転送パスの一部がトレースされる。ステップS28で受信側FFへの入力信号がセレクタを経由しているか否かが判定され、経由している場合にはステップS29でそのセレクタの制御端子、すなわち制御信号入力端子がトレースされ、ステップS30でその制御信号入力端子への入力信号が他のセレクタの制御端子を通過しているか否かが判定され、通過している場合にはステップS31で非同期データ転送パス情報テーブル18からそのパスが削除された後に、通過していない時には直ちにステップS25以降の処理が繰り返される。
【0032】
ステップS28で受信側FFへの入力信号がセレクタを経由していないと判定されると、ステップS32でそのFFの信号出力先がトレースされ、ステップS33でそのFFの出力信号がセレクタの制御端子を経由するか否かが判定される。経由する場合にはそのセレクタの信号出力先がトレースされ、ステップS35でその出力信号が他のセレクタの制御端子を通過するか否かが判定される。通過する場合にはさらにそのセレクタの信号出力先がトレースされ、ステップS37でその出力信号が前述の受信側FFと異なるFFに接続されているか否かが判定される。接続されている場合には非同期データ転送パス情報テーブル18からそのパスが削除された後に、またステップS33でセレクタの制御端子を経由しない場合、ステップS35でセレクタの制御端子を通過しない場合、およびステップS37で他のFFに接続されていない場合には、直ちにステップS25からの処理が繰り返され、ステップS26で読み込むべきパスがなくなったと判定されると処理を終了する。
【0033】
なお、このようにセレクタを2段経由する非同期データ転送パスは、そもそも回路構成として不適切であり、回路構成を変更する必要がある。シンクロナイザ挿入をメタステーブル問題の対策とすることは不適切であるために、このようなパスは非同期データ転送パス情報テーブル18から削除されることになる。
【0034】
図9は、クリア/プリセットパス除外処理の詳細フローチャートである。処理が開始されると、まずステップS40で非同期データ転送パス情報テーブル18から1つずつパスが読み込まれ、ステップS41でパスがなくなったか否かが判定され、なくなっていない場合にはステップS42で受信側FFの信号出力先がトレースされる。ステップS43でその信号が他のFFのクリア端子、またはプリセット端子に到達するか否かが判定され、到達する場合にはステップS44でそのパスがテーブル18から削除された後に、到達していない場合には直ちにステップS40からの処理が繰り返され、ステップS41でパスがなくなったと判定された時点で処理を終了する。なお、このようにクリア端子、またはプリセット端子に受信側FFの出力信号が到達する場合には、例えば受信側のクロックRCLKを送信側のクロックTCLKの分周信号とする必要があり、非同期データ転送パスにシンクロナイザを挿入することは不必要となる。
【0035】
以下図10から図17を用いてシンクロナイザ挿入の必要性の判定の具体例について説明する。図10は、非同期データ転送パスの一例である。同図において送信側でクロックTCLKによって動作するFF30と、受信側でクロックRCLKで動作するFF31との間のパスが非同期データ転送パス32となっている。
【0036】
図11は、図10の非同期データ転送パス32に対するシンクロナイザモジュールの挿入例である。図10の非同期データ転送パス32に対しては、図6のS10からS12における3つのパス除外処理のいずれにおいても非同期データ転送パス情報テーブル18からの削除が行われず、その結果、この非同期データ転送パス32に対してシンクロナイザモジュール33が挿入される。ここでこのモジュールを構成するFFの段数は2段となっているが、この段数の決定については後述する。
【0037】
図12は、シンクロナイザ挿入要否判定の対象となるパスの異なる具体例である。同図においては、クロックTCLKで動作する送信側のFF35と、クロックRCLKで動作する受信側のFF36の前段にあるセレクタ38の制御信号入力端子Sまでのパス37が、シンクロナイザの挿入要否の判定となる非同期データ転送パスである。なお、送信側のFF40から受信側のセレクタ38のデータ入力端子D1までのパスは、送信側から受信側にデータが送られるパスであり、このデータパスに対してはその制御側のパス、すなわちパス37側の制御データが先に確定していることが普通であり、この制御側のパス37にシンクロナイザを挿入するか否かを決定することがメタステーブル問題の解消に有効であり、このパス37に対してシンクロナイザを挿入すべきか否かが判定される。
【0038】
図13は、図12の非同期データ転送パス37に対するシンクロナイザモジュールの挿入の説明図である。まず図7のメモリパス除外処理において、ステップS22でデータの受け側FF36が2次元配列でないと判定され、次に図8のセレクタ2段パス除外処理において、ステップS28で受け側FF36の入力先がセレクタ38を経由すると判定されるが、ステップS30で他のセレクタの制御端子を通過しないと判定される。さらに図9のクリア/プリセットパス除外処理において、ステップS43で受け側FF36の出力が他のFFのクリア/プリセット端子に到達しないと判定され、その結果非同期データ転送パス37は、非同期データ転送パス情報テーブル18から削除されることなく、図13に示すようにシンクロナイザモジュール33がこのパスに挿入される。
【0039】
図14は、メモリパス除外処理の対象となる回路の具体例の説明図である。同図においてはそれぞれ送信側でクロックTCLKで動作する2つのFF43、44と、受信側でクロックRCLKで動作する2つのFF46、47とがそれぞれ接続され、点線の矢印で示すように、FF43の出力はFF47のデータ入力端子に与えられ、またFF44の出力は、FF46のイネーブル端子に与えられている。
【0040】
ここで受信側のFF46、47は、FFの2次元配列を構成している。この2次元配列のFFによって、通常のRAMなどのメモリ構造が表わされる。2次元配列の行を示すのがアドレスであり、列を示すのがデータとなる。RAMなどのメモリにアクセスする信号は、全て単一クロックに基づいて動作しなければ、アクセスの正常動作が行われない、またアドレス、データ、イネーブルの各信号は予め意図した組合せで同期して変化しなければ意図したアドレスにデータの読み書きを行うことはできない。
【0041】
例えば非同期データ転送パスがアドレスの転送パスである場合には、そこにシンクロナイザが挿入されても、データやイネーブルの信号とのタイミングにずれが生じれば、正しい動作は行われないため、アドレス以外のデータのタイミングも考慮した回路の修正が必要となる。
【0042】
すなわち受信側FFが2次元配列の場合には、メタステーブル問題の対策としてはシンクロナイザの挿入を行うのではなく、クロックの同期、すなわち送信側のクロックTCLKと受信側のクロックRCLKとを同一とすることが必要である。したがって図7のステップS22で説明したように、データの受け側FFが2次元配列を構成するFFである場
合には、その非同期データ転送パスは非同期データ転送パス情報テーブル18から削除されてシンクロナイザ挿入の対象からはずされる。
【0043】
図15は、図8のセレクタ2段パス除外処理の対象となる非同期データ転送パスの具体例である。同図においては、送信側FF50と受信側FF51との間のデータ転送パス上に、2つのセレクタ52、53が存在する。
【0044】
図8のステップS27で、受信側FF51の入力先が、点線の矢印で示すようにトレースされ、ステップS28でセレクタ52を経由することが判定され、さらにステップS30で他のセレクタ53の制御端子を通過することが判定される。その結果、この非同期データ転送パス、すなわち受け側FF51の手前へのシンクロナイザ挿入は行われない。
【0045】
図16は、図8のセレクタ2段パス除外処理の対象となる別の非同期データ転送パスの例である。この例では、送信側FF55と受信側FF56との間のパスが非同期データ転送パスであるが、図8のステップS28で受信側FF56の入力先にセレクタが存在しないと判定されるため、ステップS32でこのFF56の信号出力先が点線で示すようにトレースされ、ステップS33でセレクタ57の制御端子を経由すると判定される。このセレクタ57の信号出力先がステップS35で他のセレクタ58の制御端子を通過すると判定され、さらにこのセレクタ58の出力先がステップS37でFF59に接続されていることが判定され、ステップS31で非同期データ転送パス情報テーブル18から対象の非同期データ転送パスが削除され、結果としてこのパスにはシンクロナイザの挿入は行われない。
【0046】
図17は、図9のクリア/プリセットパス除外処理の対象となる非同期データ転送パスの例である。この例では受信側FF62の出力先が図9のステップS42でトレースされ、FF63のクリア端子にその信号が到達することがステップS43で判定されて、対象となる非同期データ転送パス64、すなわち受信側FF62の手前にはシンクロナイザの挿入は行われない。
【0047】
図18は、図3のシンクロナイザ挿入部14による処理の詳細フローチャートである。同図において処理が開始されると、ステップS50でシンクロナイザ挿入テーブル19、すなわち図5の各行について、挿入場所としての非同期データ転送パスの受信側のモジュールの入力端子名が取得され、ステップS51で挿入場所がなくなったか否かが判定され、なくなっていない場合には、ステップS52で挿入場所に対応するシンクロナイザ用FFの段数が、後述するように送信側クロックと受信側クロックの周波数によって決定され、ステップS53で挿入場所にシンクロナイザモジュール、すなわちFFのデータ入力、および出力端子が接続され、回路情報17が変更され、ステップS54でシンクロナイザモジュールのFFのクロック端子と図5の同期クロック端子とが接続され、回路情報17が変更された後にステップS50からの処理が繰り返され、ステップS51で挿入場所がなくなったと判定されると、ステップS55で変更された回路情報がシンクロナイザ挿入後のHDLデータ20として出力され、処理を終了する。
【0048】
最後に非同期データ転送パスに挿入されるシンクロナイザモジュールを構成するFFの段数決定方法について説明する。このFFの段数は、本実施形態では受信側FFに対するクロックRCLKの周波数と、送信側FFに対するクロックTCLKの周波数の比を基として計算することにし、この比の値が2以上の場合は小数点以下を切り捨てて整数の値とし、計算結果が2以下の場合は、データ転送を確実にする観点から段数を2とすることとする。
【0049】
例えばTCLK=100MHz、RCLK=150MHzの場合、この比は1.5とな
り、FFの段数は2となる。
逆にTCLK=150MHz、RCLK=100MHzの場合はこの比は0.666となり、FFの段数は2となる。
【0050】
次にTCLK100MHz、RCLK=330MHzの場合にはこの比は3.3となり、小数点以下を切り捨てることによって、FFの段数は3となる。
さらに逆にTCLK=330MHz、TCLK=100MHzの場合にはこの比は0.3030となり、その結果としてFFの段数は2となる。
【図面の簡単な説明】
【0051】
【図1】シンクロナイザ自動挿入方法の基本的な機能ブロック図である。
【図2】本実施形態においてシンクロナイザ自動挿入を行う計算機の構成ブロック図である。
【図3】シンクロナイザ自動挿入装置の構成ブロック図である。
【図4】非同期データ転送パス情報テーブルの格納内容の例である。
【図5】シンクロナイザ挿入テーブルの格納内容の例である。
【図6】シンクロナイザ挿入要否判定部の処理フローチャートである。
【図7】メモリパス除外処理の詳細フローチャートである。
【図8】セレクタ2段パス除外処理の詳細フローチャートである。
【図9】クリア/プリセットパス除外処理の詳細フローチャートである。
【図10】シンクロナイザ挿入要否判定対象となる非同期データ転送パスの例である。
【図11】図10の非同期データ転送パスに対するシンクロナイザモジュールの挿入を説明する図である。
【図12】シンクロナイザ挿入要否判定対象となる非同期データ転送パスの他の例を示す図である。
【図13】図12の非同期データ転送パスに対するシンクロナイザ挿入の説明図である。
【図14】メモリパス除外処理の対象となる回路の具体例の説明図である。
【図15】セレクタ2段パス除外処理の対象となる回路の具体例の説明図である。
【図16】セレクタ2段パス除外処理の対象となる回路の異なる具体例の説明図である。
【図17】クリア/プリセットパス除外処理の対象となる回路の具体例の説明図である。
【図18】シンクロナイザ挿入部の処理フローチャートである。
【符号の説明】
【0052】
1 中央処理装置(CPU)
2 リード・オンリ・メモリ(ROM)
3 ランダム・アクセス・メモリ(RAM)
4 通信インターフェース
5 記憶装置
6 入出力装置
7 バス
10 シンクロナイザ自動挿入装置
11 クロック定義ファイル・HDL読込み部
12 非同期データ転送パス抽出部
13 シンクロナイザ挿入要否判定部
14 シンクロナイザ挿入部
15 クロック定義ファイル
16 HDLデータ
17 回路情報
18 非同期データ転送パス情報テーブル
19 シンクロナイザ挿入テーブル
20 シンクロナイザ挿入後のHDLデータ
【技術分野】
【0001】
本発明はデータ転送方式に係り、さらに詳しくは、異なる周波数の独立のクロック信号で動作している2つの回路の間のデータ転送パスに対して、メタステーブル問題を回避するためのシンクロナイザの挿入が必要か否かを判定し、シンクロナイザ挿入パスの絞込みを行うシンクロナイザ自動挿入方法、および挿入装置に関する。
【背景技術】
【0002】
周波数の異なる、互いに独立のクロック信号で動作している装置の間、回路の間、またはLSIチップの間でデータ転送を行う場合に、メタステーブルという問題が発生する可能性がある。例えばデータ転送元のクロック周波数よりデータ転送先のクロック周波数が高い場合には、例えばデータ転送元のクロック信号の立ち上がりに同期して転送されるデータをデータ転送先のクロック信号の立ち上がりにおいて適切に受信することができず、例えばデータ転送元から“1”というデータを送っても、データ転送先において“0”でも“1”でもない不明なデータとして受信されてしまうことがある。逆にデータ転送元のクロック信号の周波数がデータ転送先のクロック信号の周波数より高い場合には、データ転送先のクロック信号がデータ転送元のクロック信号の分周信号であるような場合を除いて、クロック信号の立ち上がり時点のずれのために、正しいデータ転送を行うことができない場合もある。
【0003】
このようなメタステーブル問題の発生を回避するために、周波数の異なるクロック信号で動作している回路の間のデータ転送パス、すなわち非同期データ転送パスに、例えば複数段のフリップ・フロップ(FF)によって構成されるシンクロナイザを挿入することによって、正しいデータ転送を実現する方法がある。従来のシンクロナイザ挿入方法においては、非同期データ転送パスの全てを検出し、その全てのパスにシンクロナイザを自動的に挿入する方法が用いられていた。
【0004】
しかしながら、例えばデータ転送先のデータ受け側のフリップ・フロップの出力が、データ転送先の他のフリップ・フロップのクリア端子などに接続されているような場合には、本来、例えば受信側のクロック信号を送信側のクロック信号の分周信号とする必要があり、非同期データ転送パスにシンクロナイザを挿入してもメタステーブル問題の対策にならないことがある。従来のシンクロナイザ自動挿入方法では、例えばこのようにシンクロナイザを挿入してもメタステーブル問題の対策にならない箇所にも全てシンクロナイザが挿入されてしまい、データ転送回路の面積が大きくなってしまうという問題点があった。
【0005】
従来においても、このようにシンクロナイザを挿入してもメタステーブル問題の対策とならない非同期データ転送パスについては、例えば設計者が、シンクロナイザ挿入の可否を判定する方法もあったが、このような場合には非同期データ転送パスとして検出される膨大な数の全てのパスを対象としてシンクロナイザ挿入の可否を判定する必要があり、工数が大きくなり、また設計者の判定ミスの発生確率も大きくなってしまうという問題点があった。
【0006】
このような非同期データ転送方式やメタステーブル問題解決のための従来技術として特許文献1から特許文献3がある。特許文献1では、全てが立ち上がりで動作するフリップ・フロップのみで、最小構成の非同期信号同期化回路を提供する技術が開示されている。
【0007】
特許文献2では、異なるクロック周波数で動作している2回路間のデータ転送において、転送先でのデータ取り込みの有無をデータ転送基準信号によってデータ転送元が認識す
ることによって、1つのデータ転送にかかるオーバーヘッドを少なくするデータ転送方法が開示されている。
【0008】
特許文献3では、CPUがマクロ回路からマクロデータを読み込む場合に、少ないリードクロック数で読込みを完了することができ、マルチビットに対応するメタステーブル回避機能をもったバスインターフェース回路が開示されている。
【0009】
しかしながらこのような従来技術を用いても、非同期データ転送パスにシンクロナイザを挿入すべきか否かを自動的に判定し、挿入すべきパスにのみシンクロナイザを挿入することはできないという問題点を解決することができなかった。
【特許文献1】特開平10−135938号公報 「非同期信号同期化回路」
【特許文献2】特開平11−161599号公報 「データ転送方法」
【特許文献3】特開2006−236060号公報 「バスインターフェース回路」
【発明の開示】
【発明が解決しようとする課題】
【0010】
本発明の課題は、上述の問題点に鑑み、膨大な数の非同期データ転送パスのうちで、シンクロナイザ挿入がメタステーブル問題の対策とならないパスを自動的に判定し、そのようなパスを除いて自動的にシンクロナイザの挿入を行うことである。
【課題を解決するための手段】
【0011】
本発明のシンクロナイザ自動挿入方法においては、まず第1ステップとして非同期未対策パスのデータを記憶する。すなわち一定のクロック周波数で動作しているデータ転送元から、その一定のクロック周波数と異なるクロック周波数で動作しているデータ転送先へのデータパスとしての非同期(クロック)データ転送パスのうちで、非同期クロックが原因となるメタステーブル問題に対する対策が行われていない非同期(クロック)未対策パスのデータを記憶する。
【0012】
第2ステップとして記憶されている非同期未対策パスのうちで、その未対策パスにシンクロナイザを挿入してもメタステーブル問題への対策とならないシンクロナイザ挿入不要パスを判定し、例えば第1ステップで非同期未対策パスのデータを記憶しているメモリからそのパスのデータを削除する。
【0013】
最後に第3ステップとしてシンクロナイザ挿入不要パス以外の、例えばメモリに削除されずに残っている非同期未対策パスに対してシンクロナイザを挿入する。
本発明のシンクロナイザ自動挿入装置は、以上のシンクロナイザ自動挿入方法を実現するための装置である。
【0014】
以上のように本発明によれば、非同期(クロック)データ転送パスのうちで、シンクロナイザを挿入してもメタステーブル問題の対策にならないシンクロナイザ挿入不要パスを自動的に判定し、それ以外の非同期未対策パスの全てに対してシンクロナイザが自動的に挿入されることになる。
【発明の効果】
【0015】
本発明によれば、膨大な数の非同期データ転送パスのうちで、シンクロナイザを挿入してもメタステーブル問題の対策にならないパスが自動的に判定される。それ以外のパスに対してはシンクロナイザの挿入が自動的に行われるため、例えば設計者がシンクロナイザ挿入不要パスの判定を行う場合に比べて、設計者によるミスの発生確率が大幅に減少し、また工数も大幅に削減することが可能となる。
【発明を実施するための最良の形態】
【0016】
図1は、本実施形態におけるシンクロナイザ自動挿入方法の基本的な機能ブロック図である。同図はデータ転送元のクロック信号とデータ転送先のクロック信号との周波数が異なる非同期クロックデータ転送系、例えば2つの装置の間、2つの回路の間、あるいは2つのLSIチップの間などにおけるデータ転送系において、データ転送パスのうちでシンクロナイザを挿入すべきパスを自動的に判定して、そのパスにシンクロナイザを挿入するためのシンクロナイザ自動挿入方法の機能ブロック図である。
【0017】
図1において、まずステップS1で、データ転送元におけるクロック周波数と異なるクロック周波数で動作しているデータ転送先へのデータパスとしての非同期データ転送パスのうちで、非同期クロックに対する対策(メタステーブル問題への対策)が行われていない非同期未対策パスのデータが記憶され、ステップS2で記憶されている非同期未対策パスのうちで、その未対策パスにシンクロナイザを挿入しても非同期クロック対策、すなわちメタステーブル問題の対策とならないシンクロナイザ挿入不要パスが判定され、ステップS3でそのシンクロナイザ挿入不要パスを除いて、非同期未対策パスへのシンクロナイザ自動挿入が行われる。
【0018】
図2は、本実施形態においてシンクロナイザ自動挿入装置として使用されるコンピュータシステムの一般的な構成ブロック図である。同図においてコンピュータシステムは、中央処理装置(CPU)1、リード・オンリー・メモリ(ROM)2、ランダム・アクセス・メモリ(RAM)3、必要に応じて外部との通信を行うための通信インターフェース4、各種のデータを記憶するための記憶装置5、入出力装置6、およびこれらの全てを接続するためのバス7によって構成されている。
【0019】
図3は、本実施形態におけるシンクロナイザ自動挿入装置の機能的な構成ブロック図である。同図においてシンクロナイザ自動挿入装置10は、基本的な構成要素としてクロック定義ファイル・HDL読込み部11、非同期データ転送パス抽出部12、シンクロナイザ挿入要否判定部13、およびシンクロナイザ挿入部14を備えている。
【0020】
クロック定義ファイル・HDL読込み部11は、例えばデータ転送元とデータ転送先のクロック信号の周波数などの定義データを格納したクロック定義ファイル15、およびデータ転送元とデータ転送先を含む回路のデータとしてのハードウェア・デスクリプション・ランゲージ(HDL)データ16とを読み込み、回路情報17を作成する。回路情報17にはHDLの回路接続情報とクロック定義情報が格納されており、シンクロナイザ自動挿入装置10の内部の各構成部が回路接続情報を参照、および更新するために使用される。
【0021】
非同期データ転送パス抽出部12は、回路情報17を用いてデータ転送元とデータ転送先の間の非同期データ転送パスを抽出し、非同期データ転送パス情報テーブル18にそのパスのデータを設定する。ここでクロック定義ファイル15、HDLデータ16は、図2の、例えば記憶装置5に格納されているものとし、また非同期データ転送パス情報テーブル18はRAM3に格納されるものとする。
【0022】
図4は、非同期データ転送パス情報テーブル18の格納内容の例である。このテーブルにはそれぞれの非同期未対策パスに対応して、データ転送元の回路モジュールとその端子名、データ転送先の回路モジュールとその端子名が格納されている。ここで回路モジュールは、データ転送元とデータ転送先でそれぞれ階層構造を持っているものとし、例えばFF1はトップの階層の次の階層を、FF2はさらにその下の階層を表わすものとし、図4のテーブルの第1行は、データ転送元のFF1の出力端子Qと、データ転送先のFF2のデータ入力端子Dとの間のパスが非同期未対策バスとなっていることを示している。
【0023】
図3に戻り、シンクロナイザ挿入要否判定部13は、非同期データ転送パス情報テーブル18に設定されているそれぞれのパスに対して、回路情報17を用いてシンクロナイザの挿入の必要があるか否かを判定し、シンクロナイザを挿入すべきパスを示すシンクロナイザ挿入テーブル19を作成する。このシンクロナイザ挿入テーブルも、例えば図2のRAM3に格納される。
【0024】
図5は、シンクロナイザ挿入テーブル19に格納されるデータの例である。同図において挿入場所はデータ転送先、すなわち受信側のモジュールにおける非同期データ転送パスの接続端子名であり、シンクロナイザはこの手前に挿入される。図5の第1行は図4の第1行に対応し、受信側のFF2のデータ入力端子の前にシンクロナイザが挿入されることになる。
【0025】
同期クロック端子名はシンクロナイザとして使用されるFFに対するクロック信号を与える端子名であり、ここでは受信側のFF2のクロック端子CKからクロック信号がシンクロナイザを構成するFFに与えられることになる。シンクロナイザ用FF数はシンクロナイザを構成するFFの段数である。
【0026】
図3に戻り、シンクロナイザ挿入部14は、シンクロナイザ挿入テーブル19と回路情報17との内容を用いて、シンクロナイザを挿入すべき非同期データ転送パスに対するシンクロナイザ自動挿入を行い、最終的にシンクロナイザ挿入後のHDLデータ20を出力する。
【0027】
図6は、図3のシンクロナイザ挿入要否判定部13による処理の詳細フローチャートである。同図において処理が開始されると、まずステップS10でメモリパス除外処理、ステップS11で2段セレクタパス除外処理、ステップS12でクリア/プリセットパス除外処理が行われる。これら3つの処理の詳細は後述するが、いずれの処理も図3の非同期データ転送パス情報テーブル18に格納されているパスのそれぞれに対して、そのパスをシンクロナイザ挿入対象から除外すべきか否かを判定し、除外すべきパスについては非同期データ転送パス情報テーブル18から削除する処理を行うものである。
【0028】
これらの3つの処理が終了すると、ステップS13で非同期データ転送パス情報テーブル18に残っているパスから1つずつパスの読込みが行われ、ステップS14でパスがなくなったか否かが判定され、まだなくなっていないときにはステップS15で読み込まれたパスに対して挿入すべきシンクロナイザを構成するFFの段数が決定され、ステップS16でシンクロナイザ挿入テーブル、すなわち図5の内容がセットされ、ステップS13以降の処理が繰り返され、ステップS14で読み込むべきパスがなくなったと判定された時点で処理を終了する。
【0029】
図7は、図6のステップS10におけるメモリパス除外処理の詳細フローチャートである。同図において処理が開始されると、まずステップS20で非同期データ転送パス情報テーブル18からパスが1つずつ読み込まれ、ステップS21でパスがなくなったか否かが判定され、なくなっていない場合にはステップS22で、データ転送先のデータ受け側のFFが、後述するようにFFの2次元配列を構成するFFであるか否かが判定される。その判定結果がNoのときには直ちに、YesのときにはステップS23で該当のパスが非同期データ転送パス情報テーブル18から削除された後にステップS20以降の処理が繰り返され、ステップS21で読み込むべきパスがなくなったと判定されると処理を終了する。
【0030】
図8は、2段セレクタパス除外処理の詳細フローチャートである。この処理においては
、データの転送先、すなわち受信側のFFの入力先、または出力先をトレースし、セレクタを2段経由するか、特に2段のセレクタの制御端子を経由するかを判定し、経由する場合に非同期データ転送パス情報テーブル18からそのパスを削除することを基本として、処理が行われる。
【0031】
処理が開始されると、まずステップS25で非同期データ転送パス情報テーブル18から1つずつパスが読み込まれ、ステップS26で読み込むべきパスがなくなったか否かが判定され、なくなっていないときにはステップS27でデータ転送先、すなわち受信側のFF、例えば非同期データ転送パスが接続されたFFの入力先としての非同期データ転送パスの一部がトレースされる。ステップS28で受信側FFへの入力信号がセレクタを経由しているか否かが判定され、経由している場合にはステップS29でそのセレクタの制御端子、すなわち制御信号入力端子がトレースされ、ステップS30でその制御信号入力端子への入力信号が他のセレクタの制御端子を通過しているか否かが判定され、通過している場合にはステップS31で非同期データ転送パス情報テーブル18からそのパスが削除された後に、通過していない時には直ちにステップS25以降の処理が繰り返される。
【0032】
ステップS28で受信側FFへの入力信号がセレクタを経由していないと判定されると、ステップS32でそのFFの信号出力先がトレースされ、ステップS33でそのFFの出力信号がセレクタの制御端子を経由するか否かが判定される。経由する場合にはそのセレクタの信号出力先がトレースされ、ステップS35でその出力信号が他のセレクタの制御端子を通過するか否かが判定される。通過する場合にはさらにそのセレクタの信号出力先がトレースされ、ステップS37でその出力信号が前述の受信側FFと異なるFFに接続されているか否かが判定される。接続されている場合には非同期データ転送パス情報テーブル18からそのパスが削除された後に、またステップS33でセレクタの制御端子を経由しない場合、ステップS35でセレクタの制御端子を通過しない場合、およびステップS37で他のFFに接続されていない場合には、直ちにステップS25からの処理が繰り返され、ステップS26で読み込むべきパスがなくなったと判定されると処理を終了する。
【0033】
なお、このようにセレクタを2段経由する非同期データ転送パスは、そもそも回路構成として不適切であり、回路構成を変更する必要がある。シンクロナイザ挿入をメタステーブル問題の対策とすることは不適切であるために、このようなパスは非同期データ転送パス情報テーブル18から削除されることになる。
【0034】
図9は、クリア/プリセットパス除外処理の詳細フローチャートである。処理が開始されると、まずステップS40で非同期データ転送パス情報テーブル18から1つずつパスが読み込まれ、ステップS41でパスがなくなったか否かが判定され、なくなっていない場合にはステップS42で受信側FFの信号出力先がトレースされる。ステップS43でその信号が他のFFのクリア端子、またはプリセット端子に到達するか否かが判定され、到達する場合にはステップS44でそのパスがテーブル18から削除された後に、到達していない場合には直ちにステップS40からの処理が繰り返され、ステップS41でパスがなくなったと判定された時点で処理を終了する。なお、このようにクリア端子、またはプリセット端子に受信側FFの出力信号が到達する場合には、例えば受信側のクロックRCLKを送信側のクロックTCLKの分周信号とする必要があり、非同期データ転送パスにシンクロナイザを挿入することは不必要となる。
【0035】
以下図10から図17を用いてシンクロナイザ挿入の必要性の判定の具体例について説明する。図10は、非同期データ転送パスの一例である。同図において送信側でクロックTCLKによって動作するFF30と、受信側でクロックRCLKで動作するFF31との間のパスが非同期データ転送パス32となっている。
【0036】
図11は、図10の非同期データ転送パス32に対するシンクロナイザモジュールの挿入例である。図10の非同期データ転送パス32に対しては、図6のS10からS12における3つのパス除外処理のいずれにおいても非同期データ転送パス情報テーブル18からの削除が行われず、その結果、この非同期データ転送パス32に対してシンクロナイザモジュール33が挿入される。ここでこのモジュールを構成するFFの段数は2段となっているが、この段数の決定については後述する。
【0037】
図12は、シンクロナイザ挿入要否判定の対象となるパスの異なる具体例である。同図においては、クロックTCLKで動作する送信側のFF35と、クロックRCLKで動作する受信側のFF36の前段にあるセレクタ38の制御信号入力端子Sまでのパス37が、シンクロナイザの挿入要否の判定となる非同期データ転送パスである。なお、送信側のFF40から受信側のセレクタ38のデータ入力端子D1までのパスは、送信側から受信側にデータが送られるパスであり、このデータパスに対してはその制御側のパス、すなわちパス37側の制御データが先に確定していることが普通であり、この制御側のパス37にシンクロナイザを挿入するか否かを決定することがメタステーブル問題の解消に有効であり、このパス37に対してシンクロナイザを挿入すべきか否かが判定される。
【0038】
図13は、図12の非同期データ転送パス37に対するシンクロナイザモジュールの挿入の説明図である。まず図7のメモリパス除外処理において、ステップS22でデータの受け側FF36が2次元配列でないと判定され、次に図8のセレクタ2段パス除外処理において、ステップS28で受け側FF36の入力先がセレクタ38を経由すると判定されるが、ステップS30で他のセレクタの制御端子を通過しないと判定される。さらに図9のクリア/プリセットパス除外処理において、ステップS43で受け側FF36の出力が他のFFのクリア/プリセット端子に到達しないと判定され、その結果非同期データ転送パス37は、非同期データ転送パス情報テーブル18から削除されることなく、図13に示すようにシンクロナイザモジュール33がこのパスに挿入される。
【0039】
図14は、メモリパス除外処理の対象となる回路の具体例の説明図である。同図においてはそれぞれ送信側でクロックTCLKで動作する2つのFF43、44と、受信側でクロックRCLKで動作する2つのFF46、47とがそれぞれ接続され、点線の矢印で示すように、FF43の出力はFF47のデータ入力端子に与えられ、またFF44の出力は、FF46のイネーブル端子に与えられている。
【0040】
ここで受信側のFF46、47は、FFの2次元配列を構成している。この2次元配列のFFによって、通常のRAMなどのメモリ構造が表わされる。2次元配列の行を示すのがアドレスであり、列を示すのがデータとなる。RAMなどのメモリにアクセスする信号は、全て単一クロックに基づいて動作しなければ、アクセスの正常動作が行われない、またアドレス、データ、イネーブルの各信号は予め意図した組合せで同期して変化しなければ意図したアドレスにデータの読み書きを行うことはできない。
【0041】
例えば非同期データ転送パスがアドレスの転送パスである場合には、そこにシンクロナイザが挿入されても、データやイネーブルの信号とのタイミングにずれが生じれば、正しい動作は行われないため、アドレス以外のデータのタイミングも考慮した回路の修正が必要となる。
【0042】
すなわち受信側FFが2次元配列の場合には、メタステーブル問題の対策としてはシンクロナイザの挿入を行うのではなく、クロックの同期、すなわち送信側のクロックTCLKと受信側のクロックRCLKとを同一とすることが必要である。したがって図7のステップS22で説明したように、データの受け側FFが2次元配列を構成するFFである場
合には、その非同期データ転送パスは非同期データ転送パス情報テーブル18から削除されてシンクロナイザ挿入の対象からはずされる。
【0043】
図15は、図8のセレクタ2段パス除外処理の対象となる非同期データ転送パスの具体例である。同図においては、送信側FF50と受信側FF51との間のデータ転送パス上に、2つのセレクタ52、53が存在する。
【0044】
図8のステップS27で、受信側FF51の入力先が、点線の矢印で示すようにトレースされ、ステップS28でセレクタ52を経由することが判定され、さらにステップS30で他のセレクタ53の制御端子を通過することが判定される。その結果、この非同期データ転送パス、すなわち受け側FF51の手前へのシンクロナイザ挿入は行われない。
【0045】
図16は、図8のセレクタ2段パス除外処理の対象となる別の非同期データ転送パスの例である。この例では、送信側FF55と受信側FF56との間のパスが非同期データ転送パスであるが、図8のステップS28で受信側FF56の入力先にセレクタが存在しないと判定されるため、ステップS32でこのFF56の信号出力先が点線で示すようにトレースされ、ステップS33でセレクタ57の制御端子を経由すると判定される。このセレクタ57の信号出力先がステップS35で他のセレクタ58の制御端子を通過すると判定され、さらにこのセレクタ58の出力先がステップS37でFF59に接続されていることが判定され、ステップS31で非同期データ転送パス情報テーブル18から対象の非同期データ転送パスが削除され、結果としてこのパスにはシンクロナイザの挿入は行われない。
【0046】
図17は、図9のクリア/プリセットパス除外処理の対象となる非同期データ転送パスの例である。この例では受信側FF62の出力先が図9のステップS42でトレースされ、FF63のクリア端子にその信号が到達することがステップS43で判定されて、対象となる非同期データ転送パス64、すなわち受信側FF62の手前にはシンクロナイザの挿入は行われない。
【0047】
図18は、図3のシンクロナイザ挿入部14による処理の詳細フローチャートである。同図において処理が開始されると、ステップS50でシンクロナイザ挿入テーブル19、すなわち図5の各行について、挿入場所としての非同期データ転送パスの受信側のモジュールの入力端子名が取得され、ステップS51で挿入場所がなくなったか否かが判定され、なくなっていない場合には、ステップS52で挿入場所に対応するシンクロナイザ用FFの段数が、後述するように送信側クロックと受信側クロックの周波数によって決定され、ステップS53で挿入場所にシンクロナイザモジュール、すなわちFFのデータ入力、および出力端子が接続され、回路情報17が変更され、ステップS54でシンクロナイザモジュールのFFのクロック端子と図5の同期クロック端子とが接続され、回路情報17が変更された後にステップS50からの処理が繰り返され、ステップS51で挿入場所がなくなったと判定されると、ステップS55で変更された回路情報がシンクロナイザ挿入後のHDLデータ20として出力され、処理を終了する。
【0048】
最後に非同期データ転送パスに挿入されるシンクロナイザモジュールを構成するFFの段数決定方法について説明する。このFFの段数は、本実施形態では受信側FFに対するクロックRCLKの周波数と、送信側FFに対するクロックTCLKの周波数の比を基として計算することにし、この比の値が2以上の場合は小数点以下を切り捨てて整数の値とし、計算結果が2以下の場合は、データ転送を確実にする観点から段数を2とすることとする。
【0049】
例えばTCLK=100MHz、RCLK=150MHzの場合、この比は1.5とな
り、FFの段数は2となる。
逆にTCLK=150MHz、RCLK=100MHzの場合はこの比は0.666となり、FFの段数は2となる。
【0050】
次にTCLK100MHz、RCLK=330MHzの場合にはこの比は3.3となり、小数点以下を切り捨てることによって、FFの段数は3となる。
さらに逆にTCLK=330MHz、TCLK=100MHzの場合にはこの比は0.3030となり、その結果としてFFの段数は2となる。
【図面の簡単な説明】
【0051】
【図1】シンクロナイザ自動挿入方法の基本的な機能ブロック図である。
【図2】本実施形態においてシンクロナイザ自動挿入を行う計算機の構成ブロック図である。
【図3】シンクロナイザ自動挿入装置の構成ブロック図である。
【図4】非同期データ転送パス情報テーブルの格納内容の例である。
【図5】シンクロナイザ挿入テーブルの格納内容の例である。
【図6】シンクロナイザ挿入要否判定部の処理フローチャートである。
【図7】メモリパス除外処理の詳細フローチャートである。
【図8】セレクタ2段パス除外処理の詳細フローチャートである。
【図9】クリア/プリセットパス除外処理の詳細フローチャートである。
【図10】シンクロナイザ挿入要否判定対象となる非同期データ転送パスの例である。
【図11】図10の非同期データ転送パスに対するシンクロナイザモジュールの挿入を説明する図である。
【図12】シンクロナイザ挿入要否判定対象となる非同期データ転送パスの他の例を示す図である。
【図13】図12の非同期データ転送パスに対するシンクロナイザ挿入の説明図である。
【図14】メモリパス除外処理の対象となる回路の具体例の説明図である。
【図15】セレクタ2段パス除外処理の対象となる回路の具体例の説明図である。
【図16】セレクタ2段パス除外処理の対象となる回路の異なる具体例の説明図である。
【図17】クリア/プリセットパス除外処理の対象となる回路の具体例の説明図である。
【図18】シンクロナイザ挿入部の処理フローチャートである。
【符号の説明】
【0052】
1 中央処理装置(CPU)
2 リード・オンリ・メモリ(ROM)
3 ランダム・アクセス・メモリ(RAM)
4 通信インターフェース
5 記憶装置
6 入出力装置
7 バス
10 シンクロナイザ自動挿入装置
11 クロック定義ファイル・HDL読込み部
12 非同期データ転送パス抽出部
13 シンクロナイザ挿入要否判定部
14 シンクロナイザ挿入部
15 クロック定義ファイル
16 HDLデータ
17 回路情報
18 非同期データ転送パス情報テーブル
19 シンクロナイザ挿入テーブル
20 シンクロナイザ挿入後のHDLデータ
【特許請求の範囲】
【請求項1】
一定のクロック周波数で動作しているデータ転送元から、該一定のクロック周波数と異なるクロック周波数で動作しているデータ転送先へのデータパスとしての非同期クロックデータ転送パスのうちで、該非同期クロックが原因となるメタステーブル問題に対する対策が行われていない非同期未対策パスのデータをメモリに記憶させる非同期未対策パス記憶ステップと、
該メモリに記憶されている非同期未対策パスのうちで、該未対策パスにシンクロナイザを挿入しても前記メタステーブル問題への対策とならないシンクロナイザ挿入不要パスを判定し、該シンクロナイザ挿入不要パスのデータを前記メモリから削除するシンクロナイザ挿入不要パス判定ステップと、
該シンクロナイザ挿入不要パス以外の非同期未対策パスにシンクロナイザを挿入するシンクロナイザ挿入ステップとを備えることを特徴とするシンクロナイザ自動挿入方法。
【請求項2】
前記シンクロナイザ挿入不要パス判定ステップにおいて、前記データ転送先における前記非同期未対策パスの接続先としての転送先フリップ・フロップの出力信号が該転送先の異なるフリップ・フロップのクリア/プリセット端子に到達する時、該非同期未対策パスをシンクロナイザ挿入不要パスと判定することを特徴とする請求項1に記載のシンクロナイザ自動挿入方法。
【請求項3】
前記シンクロナイザ挿入不要パス判定ステップにおいて、前記データ転送先における前記非同期未対策パスの接続先としての転送先フリップ・フロップへの入力信号が該転送先フリップ・フロップの入力側にあるセレクタを経由し、かつ該セレクタの制御端子への信号が他のセレクタの制御端子を通過している時、または前記入力側にあるセレクタを経由せず、かつ転送先フリップ・フロップの出力信号が該フリップ・フロップの出力側にある2段のセレクタの制御端子を通過して異なるフリップ・フロップに入力されている時、該未対策パスをシンクロナイザ挿入不要パスと判定することを特徴とする請求項1に記載のシンクロナイザ自動挿入方法。
【請求項4】
前記シンクロナイザ挿入不要パス判定ステップにおいて、前記データ転送先における前記非同期未対策パスの接続先が該データ転送先においてフリップ・フロップの2次元配列を構成するフリップ・フロップである時、該非同期未対策パスをシンクロナイザ挿入不要パスと判定することを特徴とする請求項1に記載のシンクロナイザ自動挿入方法。
【請求項5】
一定のクロック周波数で動作しているデータ転送元から、該一定のクロック周波数と異なるクロック周波数で動作しているデータ転送先へのデータパスとしての非同期クロックデータ転送パスのうちで、該非同期クロックが原因となるメタステーブル問題に対する対策が行われていない非同期未対策パスのデータを記憶する非同期未対策パス記憶手段と、
該記憶されている非同期未対策パスのうちで、該未対策パスにシンクロナイザを挿入しても前記メタステーブル問題への対策とならないシンクロナイザ挿入不要パスを判定し、該シンクロナイザ挿入不要パスのデータを前記非同期未対策パス記憶手段の記憶内容から削除するするシンクロナイザ挿入不要パス判定手段と、
該シンクロナイザ挿入不要パス以外の非同期未対策パスにシンクロナイザを挿入するシンクロナイザ挿入手段とを備えることを特徴とするシンクロナイザ自動挿入装置。
【請求項1】
一定のクロック周波数で動作しているデータ転送元から、該一定のクロック周波数と異なるクロック周波数で動作しているデータ転送先へのデータパスとしての非同期クロックデータ転送パスのうちで、該非同期クロックが原因となるメタステーブル問題に対する対策が行われていない非同期未対策パスのデータをメモリに記憶させる非同期未対策パス記憶ステップと、
該メモリに記憶されている非同期未対策パスのうちで、該未対策パスにシンクロナイザを挿入しても前記メタステーブル問題への対策とならないシンクロナイザ挿入不要パスを判定し、該シンクロナイザ挿入不要パスのデータを前記メモリから削除するシンクロナイザ挿入不要パス判定ステップと、
該シンクロナイザ挿入不要パス以外の非同期未対策パスにシンクロナイザを挿入するシンクロナイザ挿入ステップとを備えることを特徴とするシンクロナイザ自動挿入方法。
【請求項2】
前記シンクロナイザ挿入不要パス判定ステップにおいて、前記データ転送先における前記非同期未対策パスの接続先としての転送先フリップ・フロップの出力信号が該転送先の異なるフリップ・フロップのクリア/プリセット端子に到達する時、該非同期未対策パスをシンクロナイザ挿入不要パスと判定することを特徴とする請求項1に記載のシンクロナイザ自動挿入方法。
【請求項3】
前記シンクロナイザ挿入不要パス判定ステップにおいて、前記データ転送先における前記非同期未対策パスの接続先としての転送先フリップ・フロップへの入力信号が該転送先フリップ・フロップの入力側にあるセレクタを経由し、かつ該セレクタの制御端子への信号が他のセレクタの制御端子を通過している時、または前記入力側にあるセレクタを経由せず、かつ転送先フリップ・フロップの出力信号が該フリップ・フロップの出力側にある2段のセレクタの制御端子を通過して異なるフリップ・フロップに入力されている時、該未対策パスをシンクロナイザ挿入不要パスと判定することを特徴とする請求項1に記載のシンクロナイザ自動挿入方法。
【請求項4】
前記シンクロナイザ挿入不要パス判定ステップにおいて、前記データ転送先における前記非同期未対策パスの接続先が該データ転送先においてフリップ・フロップの2次元配列を構成するフリップ・フロップである時、該非同期未対策パスをシンクロナイザ挿入不要パスと判定することを特徴とする請求項1に記載のシンクロナイザ自動挿入方法。
【請求項5】
一定のクロック周波数で動作しているデータ転送元から、該一定のクロック周波数と異なるクロック周波数で動作しているデータ転送先へのデータパスとしての非同期クロックデータ転送パスのうちで、該非同期クロックが原因となるメタステーブル問題に対する対策が行われていない非同期未対策パスのデータを記憶する非同期未対策パス記憶手段と、
該記憶されている非同期未対策パスのうちで、該未対策パスにシンクロナイザを挿入しても前記メタステーブル問題への対策とならないシンクロナイザ挿入不要パスを判定し、該シンクロナイザ挿入不要パスのデータを前記非同期未対策パス記憶手段の記憶内容から削除するするシンクロナイザ挿入不要パス判定手段と、
該シンクロナイザ挿入不要パス以外の非同期未対策パスにシンクロナイザを挿入するシンクロナイザ挿入手段とを備えることを特徴とするシンクロナイザ自動挿入装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2009−37384(P2009−37384A)
【公開日】平成21年2月19日(2009.2.19)
【国際特許分類】
【出願番号】特願2007−200575(P2007−200575)
【出願日】平成19年8月1日(2007.8.1)
【出願人】(308014341)富士通マイクロエレクトロニクス株式会社 (2,507)
【Fターム(参考)】
【公開日】平成21年2月19日(2009.2.19)
【国際特許分類】
【出願日】平成19年8月1日(2007.8.1)
【出願人】(308014341)富士通マイクロエレクトロニクス株式会社 (2,507)
【Fターム(参考)】
[ Back to top ]