(57)【要約】  送信データやクロック、制御信号など非同期受け渡し関連信号群を入力として所望の信号条件を満足しているか判定して非同期異常情報を出力する非同期異常検出回路（１０１）と、送信データやクロック、制御信号など非同期受け渡し関連信号群と上記非同期異常情報とを入力とし、救済処置後の非同期受け渡し関連信号群を出力する非同期異常救済回路（１０２）とを設ける。これらの回路によって、マスクの作り直しを行うことなく、チップ化された半導体集積回路における非同期異常を救済することが可能となる。
2009084124.tif 000002
【特許請求の範囲】
【請求項１】
異なるクロックで動作する非同期クロックドメイン間のデータ受け渡しをする半導体集積回路であって、
互いに非同期となるクロック信号とデータ受け渡しに関連する信号とを入力信号とし、所望の信号条件を満足しているか判定する非同期異常判定部を有する非同期異常検出回路を備えたことを特徴とする半導体集積回路。
【請求項２】
請求項１記載の半導体集積回路において、
前記非同期異常検出回路は、所望の信号条件を満たさない場合に、回路異常情報を外部に出力する出力部を更に備えたことを特徴とする半導体集積回路。
【請求項３】
請求項１記載の半導体集積回路において、
正常にデータ転送が行える条件を満たしていない場合に、非同期受け渡し箇所の信号状態が所望の信号条件を満たすように修正するための非同期異常救済部を有する非同期異常救済回路を更に備えたことを特徴とする半導体集積回路。
【請求項４】
請求項３記載の半導体集積回路において、
前記非同期異常救済回路は、
前記非同期異常救済部を回路異常箇所に対して有効又は無効にする救済切り替え部と、
救済状態を管理、把握して救済回路を制御する制御信号を生成し出力する救済回路制御部とを更に備えたことを特徴とする半導体集積回路。
【請求項５】
請求項１記載の半導体集積回路において、
前記非同期異常検出回路は、受信側クロックと送信側クロックと送信データとを入力とし、送信側クロックよりも受信側クロックの周波数が低い場合において、送信データのデータ変化を検知し、その時点から受信側の一定クロックサイクル間は送信データが変化しないことを監視し、違反した場合は回路異常情報を出力することを特徴とする半導体集積回路。
【請求項６】
請求項１記載の半導体集積回路において、
前記非同期異常検出回路は、受信クロックと送信データと送信データが有効であることを示す制御信号とを入力とし、前記制御信号の変化する前後で送信データが一定期間変化しないことを監視し、違反した場合は回路異常情報を出力することを特徴とする半導体集積回路。
【請求項７】
請求項３記載の半導体集積回路において、
前記非同期異常救済回路は、送信データが受信側に正常にデータを受け渡すには送信データ長が短い場合において受信側に受け渡される前に消失された送信データを補完することを特徴とする半導体集積回路。
【請求項８】
請求項７記載の半導体集積回路において、
前記非同期異常救済回路は、
送信側クロックで動作するデータ遅延フリップフロップを複数段直列連結することで送信データ長を延長する非同期異常救済部と、
救済時に受信側フリップフロップへの入力データを前記データ遅延フリップフロップの出力データ線に切り替える制御信号を生成し出力する救済回路制御部と、
送信側フリップフロップの出力データ線と前記データ遅延フリップフロップの出力データ線とを入力とし前記データ線切り替え制御信号を制御信号として受信側フリップフロップに入力するデータ線を選択するセレクタによって構成される救済切り替え部とを備えたことを特徴とする半導体集積回路。
【請求項９】
請求項７記載の半導体集積回路において、
前記非同期異常救済回路は、
送信データ消失時に受信側にデータを補完するため送信クロックに同期して送信データを一旦記憶しておくデータ記憶回路で構成される非同期異常救済部と、
救済時に受信側フリップフロップへの入力データを前記データ記憶回路の出力データ線に切り替える制御信号を生成し出力し、また送信データの救済時に送信側クロックドメイン回路に対し送信データの救済中であり次のデータ送信を一旦停止するように伝える救済回路制御部と、
送信データの救済時には前記データ記憶回路に記憶されたデータを受信側フリップフロップに入力するよう経路を切り替える救済切り替え部とを備えたことを特徴とする半導体集積回路。
【請求項１０】
請求項１記載の半導体集積回路において、
前記非同期異常検出回路は、送信側フリップフロップが出力する送信データと、受信側フリップフロップに対して直列接続されたメタステーブル対策フリップフロップが出力する受信データとが、送信側フリップフロップの送信データが変化した時間を基準として、受信クロックサイクルを時間単位と考えた場合に前記メタステーブル対策フリップフロップの挿入段数をサイクル数とした次のサイクルで一致すること監視し、違反した場合は回路異常情報を出力するメタステーブル異常検出回路を備えたことを特徴とする半導体集積回路。
【請求項１１】
請求項１０記載の半導体集積回路において、
前記メタステーブル異常検出回路は、
送信側フリップフロップの送信データを入力とし当該送信データの変化を検出した場合に送信データ変化情報を出力する送信データ変化検出回路と、
送信側フリップフロップの送信データが変化したときに送信データを一旦記憶する送信データ記憶回路と、
受信クロックと送信データ変化情報とを入力としデータ変化を検出した場合にリセットされる受信クロックカウンタ回路と、
前記送信データ記憶回路に記憶された送信データとメタステーブル対策フリップフロップの受信データと前記受信クロックカウンタ回路のカウント値とを入力とし、前記カウント値が所望のカウント値を示す時に前記送信データ記憶回路に記憶された送信データと前記メタステーブル対策フリップフロップの受信データとが一致するか比較する比較器とを備えたことを特徴とする半導体集積回路。
【請求項１２】
請求項２記載の半導体集積回路において、
前記出力部は、
信号状態情報を簡易コード化するコード化手段と、
システム全体を停止させ、かつ前記コード化手段によりコード化されたビット情報を非同期箇所近傍に配置されるスキャンチェーン上のフリップフロップに記憶させる手段と、
システムをテストモードに切り替える手段と、
スキャンパス上の信号情報を外部に転送する手段とを備えたことを特徴とする半導体集積回路。
【請求項１３】
請求項１記載の半導体集積回路において、
前記非同期異常検出回路は、非同期関連信号の履歴をある一定期間記憶するための記憶装置で構成される非同期関連信号履歴記憶部を更に備えたことを特徴とする半導体集積回路。
【請求項１４】
請求項３記載の半導体集積回路において、
前記半導体集積回路のシステム全体を制御する制御装置を更に備え、
前記制御装置は、
システム起動時の自己初期テスト時に前記非同期異常検出回路を有効化する検出回路有効化手段と、
前記非同期異常検出回路が非同期異常を検出した時には異常箇所に対して前記非同期異常救済回路を有効化する救済回路有効化手段と、
通常動作モード時には前記非同期異常検出回路の動作を停止する検出回路無効化手段とを有することを特徴とする半導体集積回路。
【請求項１５】
請求項３記載の半導体集積回路における前記非同期異常検出回路と前記非同期異常救済回路とをライブラリ化し再利用することを特徴とする半導体集積回路の設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路における非同期クロックドメイン間のデータ受け渡しにおいて発生する回路動作異常を検出し救済する技術に関するものである。
【背景技術】
【０００２】
半導体集積回路は、位相及び周波数が異なる種々のクロックで動作する複数の同期回路で構成され、共通のクロックで動作する回路部分をクロックドメインと呼ぶ。異なるクロックドメイン間でデータの受け渡しを行う必要があり、従来、非同期クロックドメイン間のデータ受け渡しは、異なるクロックで動作するデータ送信側フリップフロップとデータ受信側フリップフロップとを直接接続する構造でデータの受け渡しを行ってきた。【０００３】
この構造の場合、「メタステーブル」と呼ばれる問題を引き起こす場合がある。メタステーブルは、受信側フリップフロップのクロック遷移と同時にデータ値を変化する場合に生じ、受信側フリップフロップの出力は有限時間振動し、その間その値は不確定である。このデータが後段の論理回路に伝播した場合、エラーや不確実な動作を引き起こす。この対策として、受信側フリップフロップの後段にフリップフロップを追加してダブルバッファとする対策が打たれる。これにより、受信側フリップフロップでデータが不確定になっても後段の論理回路に不確定データが伝播することを防ぐことができる。メタステーブル状態は、一般的に次のクロックエッジまでに安定するとされており、追加されたフリップフロップの出力は安定したデータが出力される。【０００４】
また、フリップフロップのクロック遷移と同時にデータ値を変化する場合において、メタステーブルの問題とは別に出力が正常な値を示さない問題がある。これは、セットアップホールドタイムに受信データの変化点が存在する場合において、変化前データと変化後データとのどちらを取るか分からないために発生する。この問題は、上記のダブルバッファの対策では対応が不可能である。この課題に対しては、データの乗り換えタイミングを制御するデータ乗換回路やデータバッファ装置を用いたハンドシェイク回路を用いることによって、セットアップホールドタイムに受信データ変化点が存在するといった場合に起こる「データのミスラッチ」を起こすことなく、確実にデータの受け渡しを行う対策が実施されている。【０００５】
例えば、特許文献１には、データ乗換回路に関し、非同期クロック間でデータの乗り換えを行う場合に、データの乗り換えタイミングを制御することにより乗り換え時にデータ誤りを発生させないようにするデータ乗換回路を開示している。また、特許文献２には、データバッファ装置を経由して非同期クロックドメイン間でデータを受け渡す転送方法及び装置が開示されている。
【特許文献１】特開平８−２３７２３２号公報
【特許文献２】国際公開第０３／０３９０６１号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、非同期データ受け渡しでは、この問題の他に、取るべきデータが受け側に到達する前に変化してしまい、受け側のフリップフロップでデータを取得できない「データ消失」の問題がある。この問題に関しては、データがそもそも到達していないことが問題であり、従来解決されてきた課題とは別の課題である。【０００７】
データ乗換回路やハンドシェイク回路を用いれば比較的安全に非同期データの受け渡しを行うことができる。しかしながら、回路資産の再利用によるクロックドメイン間データ受け渡し仕様の制限や非同期受け渡し箇所の多さから回路修正が困難であったりするため、このようなデータ受け渡し回路構造を用いることができないケースが多々ある。以上の理由から、非同期受け渡しは一般的に送信側フリップフロップと受信側フリップフロップとを直接接続するような構造を持つケースがほとんどである。【０００８】
このような非同期受け渡し構造は、クロック間のタイミングに依存し、確実にデータが受け渡される保証がないため、上記「メタステーブル」、「データのミスラッチ」、「データ消失」の問題を含め、開発において検証を行うことが必須である。この検証は、ＲＴＬ設計段階において論理シミュレーションや回路データの構造検証により実施され、マスク発注前に回路動作異常を全て発見し、回路動作異常に対する回路修正が全て完了する前提で開発が進められている。しかしながら、設計段階では、最終商品上で生じ得る位相ずれを網羅的に予測することが困難で、多様なクロック位相関係を想定した検証が現時点では実施できない。その結果、チップ評価時や、商品セット評価時に回路動作異常が発覚し、マスクの作り直しが発生する結果、マスク修正費用が発生してしまうことが課題となっている。【０００９】
本発明は、上記の課題を解決するものであり、チップ評価時や、セット商品開発時においても非同期クロックドメイン間のデータ受け渡しにおいて回路動作異常が発生していないか監視し、回路動作異常が発覚した場合にはマスクの作り直しを行うことなく、回路動作異常を救済することを可能にする回路構造を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明に係る半導体集積回路は、異なるクロックで動作する非同期クロックドメイン間のデータ受け渡しをする半導体集積回路であって、例えば次のような非同期異常検出回路と非同期異常救済回路とを備えたことを特徴とするものである。すなわち、非同期異常検出回路は、互いに非同期となるクロック信号とデータ受け渡しに関連する信号とを入力信号とし、所望の信号条件を満足しているか判定する非同期異常判定部を有する。また非同期異常救済回路は、正常にデータ転送が行える条件を満たしていない場合に、非同期受け渡し箇所の信号状態が所望の信号条件を満たすように修正するための非同期異常救済部を有する。
【発明の効果】
【００１１】
本発明によれば、完全な検証が困難である非同期受け渡し部において設計段階で非同期受け渡し箇所の十分な検証が行えず、開発チップ内に非同期異常が残留した場合においても非同期異常検出回路により評価チップ時や商品セット時に非同期異常を容易に検出することが可能となる。また、評価チップ時や商品セット評価時に回路異常が発覚した場合においても、非同期異常救済回路を有効にすることにより回路データの修正やマスクの作り直しを行うことなく異常箇所を修復することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の非同期受け渡し部における基本回路構成を示す図である。
【図２】図２は、非同期異常検出回路の基本的な内部構成を示す図である。
【図３】図３は、非同期異常救済回路の基本的な内部構成を示す図である。
【図４】図４は、非同期データ転送回路を示す図である。
【図５】図５は、図４のデータ転送動作が正常である場合のタイミング図である。
【図６】図６は、図４のデータ転送動作が異常である場合のタイミング図である。
【図７】図７は、サンプリング定理を満たしているか判定する非同期異常検出回路の構成例を示す図である。
【図８】図８は、コントロール信号を用いた非同期データ転送回路を示す図である。
【図９】図９は、図８のデータ転送動作が正常である場合のタイミング図である。
【図１０】図１０は、図８のデータ転送動作が異常である場合のタイミング図である。
【図１１】図１１は、データ変化点チェックを行う非同期異常検出回路を示す図である。
【図１２】図１２は、フリップフロップによる送信データ長を延長する非同期異常救済回路を示す図である。
【図１３】図１３は、図１２の非同期異常救済回路が有効になった場合のタイミング図である。
【図１４】図１４は、データ記憶回路による送信データ長を延長する非同期異常救済回路を示す図である。
【図１５】図１５は、図１４の非同期異常救済回路が有効になった場合のタイミング図である。
【図１６】図１６は、メタステーブル異常を検出し救済する非同期データ転送回路を示す図である。
【図１７】図１７は、図１６中のメタステーブル異常検出回路の構成例を示す図である。
【図１８】図１８は、図１６中のメタステーブル異常救済回路の構成例を示す図である。
【図１９】図１９は、図２中の出力部をスキャンチェーンで構成した場合の構成例を示す図である。
【図２０】図２０は、履歴記憶機能を有する非同期異常救済回路を示す図である。
【図２１】図２１は、非同期異常検出回路と非同期異常救済回路とを制御するシステム構成例を示す図である。
【図２２】図２２は、非同期異常検出回路及び非同期異常救済回路を搭載した半導体集積回路の初期起動ルーチンの例を示す図である。
【図２３】図２３は、非同期異常検出回路及び非同期異常救済回路を搭載した半導体集積回路の設計環境例を示す図である。
【図２４】図２４は、非同期異常検出回路及び非同期異常救済回路を半導体集積回路に組み込むための設計フロー例を示す図である。
【符号の説明】
【００１３】
１０１  非同期異常検出回路
１０２  非同期異常救済回路
２０１  非同期異常判定部
２０２  出力部
３０１  非同期異常救済部
３０２  救済切り替え部
３０３  救済回路制御部
４０１  データ送信側フリップフロップ
４０２  データ受信側フリップフロップ
７０１  送信データ変化検出回路
７０２  受信クロックカウンタ回路
７０３  送信データ記憶回路
７０４  比較器
８０１  データ送信側フリップフロップ
８０２  データ受信側フリップフロップ
１１０１  送信データ記憶回路
１１０２  比較器
１２０４〜１２０９  データ遅延フリップフロップ
１４０２  データ記憶回路
１６０１  データ送信側フリップフロップ
１６０２，１６０３  データ受信側フリップフロップ
１６０４  メタステーブル異常検出回路
１６０５  メタステーブル異常救済回路
１７０１  送信データ変化検出回路
１７０２  送信データ記憶回路
１７０３  受信クロックカウンタ回路
１７０４  比較器
１８０１  非同期異常救済部
１８０２  救済回路制御部
１８０３  救済切り替え部
１８０４〜１８０６  メタステーブル対策フリップフロップ
１９０１〜１９０４  スキャンフリップフロップ
１９０５  データ出力制御回路
２００１  非同期関連信号履歴記憶部
２１００  半導体集積回路
２１０１，２１０２  クロックドメイン回路
２１０３  マイクロコントローラユニット（ＭＣＵ）
【発明を実施するための最良の形態】
【００１４】
以下、半導体集積回路の回路検証手法に関する本発明の実施の形態を図面に基づいて詳細に説明する。【００１５】
《実施の形態１》
図１は、本発明の半導体集積回路内の非同期受け渡し部における基本回路構成を示す。１０１は非同期受け渡しの回路異常を検出する非同期異常検出回路であり、１０２は非同期異常を救済する非同期異常救済回路である。【００１６】
非同期異常検出回路１０１は送信データ、クロック、制御信号など非同期受け渡し関連信号群Ａｓｙｎ＿ＳＩＧ＿Ｉ１を入力とし、非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉ及びＥＲＲＯＲ＿ＳＩＧ＿Ｏを出力する構成をとる。非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉは半導体集積回路の内部で使用されるもので、非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｏは半導体集積回路の外部に出力される情報である。【００１７】
非同期異常救済回路１０２は、送信データ、クロック、制御信号など非同期受け渡し関連信号群Ａｓｙｎ＿ＳＩＧ＿Ｉ２と上記非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉとを入力とし、救済処置後の非同期受け渡し関連信号群Ａｓｙｎ＿ＳＩＧ＿Ｏを出力する構成をとる。なお、非同期受け渡し関連信号群Ａｓｙｎ＿ＳＩＧ＿Ｉ１及びＡｓｙｎ＿ＳＩＧ＿Ｉ２は検出や救済する非同期異常の内容によって異なるものとする。【００１８】
図２は、非同期異常検出回路１０１の基本的な内部構成を示した図である。予め定義された正常にデータを受け渡すために満足すべき信号条件に対して入力信号が所望の信号条件を満足しているか判定する非同期異常判定部２０１と、もし信号条件を満たさない場合に非同期異常情報を外部に出力する出力部２０２とを備えている。ＥＲＲＯＲ＿ＳＩＧ＿Ｘは、非同期異常判定部２０１から出力部２０２へ渡される非同期異常情報である。【００１９】
図３は、非同期異常救済回路１０２の基本的な内部構成を示した図である。各信号状態が非同期受け渡しで正常にデータ転送が行える条件を満たしていない場合において、非同期受け渡し箇所の信号状態が所望の信号条件を満たすように修正するための非同期異常救済部３０１と、この非同期異常救済部３０１を回路異常箇所に対して有効、無効にする救済切り替え部３０２と、救済状態を管理、把握して救済回路を制御する制御信号を生成し出力する救済回路制御部３０３とを備えている。【００２０】
まず、非同期異常検出回路１０１は、非同期受け渡しにおいて満たすべき信号条件が満足されているかを判定部２０１により判定する。もし、信号状態が満たすべき信号条件を違反した場合、非同期異常検出回路１０１は非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｏ及びＥＲＲＯＲ＿ＳＩＧ＿Ｉを出力部２０２により出力する。出力された非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉは非同期異常救済回路１０２に入力される。非同期異常情報を受け取った救済回路１０２は、救済回路制御部３０３によって制御信号を生成し、非同期異常救済部３０１を救済切り替え部３０２により有効にする。これにより、非同期異常の修正が行われる。【００２１】
《実施の形態２》
実施の形態１で示した非同期異常検出回路１０１において、受信側フリップフロップがデータを受け取る前に送信データが消失することなく、確実に受信側フリップフロップでデータを受け取るための送信クロックと受信クロックと送信データとが満たすべき条件を各非同期関連信号が満足しているか検出する構成について説明する。【００２２】
図４は、高速クロックドメインから低速クロックドメインへの非同期データ転送回路を示しており、４０１はデータ送信側のフリップフロップで、４０２はデータ受信側のフリップフロップである。また、ＣＬＫ＿Ａは送信クロック、ＤＡＴＡ＿Ａは送信データ、ＣＬＫ＿Ｂは受信クロック、ＤＡＴＡ＿Ｂは受信データである。両フリップフロップ４０１，４０２は非同期のクロックで動作しており、両フリップフロップ４０１，４０２の間でデータが非同期に受け渡される。【００２３】
図５は、図４のデータ転送動作が正常である場合のタイミング図を示している。また、図６は、図４のデータ転送動作が異常である場合のタイミング図を示している。図５では送信データＤＡＴＡ＿Ａが十分長い期間保持されているので、データが正常にデータ受信側のフリップフロップ４０２に転送されているが、図６では受信クロックＣＬＫ＿Ｂの立ち上がりエッジまでに送信データＤＡＴＡ＿Ａが変化しているため、正常にデータ受信側のフリップフロップ４０２にデータが転送されていないことが分かる。【００２４】
非同期データ受け渡しにおいて送信側のデータが確実に受信されるためには、
送信データ幅＞受信クロック周期
の関係が必要であり、各クロック周期とクロックサイクル数を前関係において、送信データ幅の条件を送受の各クロック周期とクロックサイクル数をパラメータとして表現し、変形すると、
送信データのサイクル数≧（受信クロック周期＋送信クロック周期）／送信クロック周期  …（式１）
の関係式を満たす必要がある。もし、周期比が１：１．２（送信：受信）であった場合、送信データのサイクル数は２．２以上となり、送信サイクルで３サイクル間は送信データの値が変化してはならない。本発明では（式１）の条件を「サンプリング定理」と呼ぶことにする。【００２５】
図７は、上記の関係を満たしているか検出する回路構成例を示している。図７の非同期異常検出回路１０１は、送信データの変化点を検出する送信データ変化検出回路７０１と、受信側フリップフロップのクロックをカウントする受信クロックカウンタ回路７０２と、データが変化した時点の送信データＤＡＴＡ＿Ａ＿Ｐ１を一旦保持する送信データ記憶回路７０３と、送信クロックＣＬＫ＿Ａと受信クロックカウント値ＣＮＴ＿Ｂと送信データ記憶回路７０３に記憶されているデータ変化時の送信データＤＡＴＡ＿Ａ＿Ｐ２と最新の送信データＤＡＴＡ＿Ａとを入力とした比較器７０４とで構成される。なお、送信データＤＡＴＡ＿Ａと送信クロックＣＬＫ＿Ａと受信クロックＣＬＫ＿Ｂとが、図１のＡｓｙｎ＿ＳＩＧ＿Ｉ１にあたる。【００２６】
送信データ変化検出回路７０１は、送信データＤＡＴＡ＿Ａの変化を検出するとリセット信号ＲＳＴにより受信クロックカウンタ回路７０２をリセットする。受信クロックカウンタ回路７０２のカウント値ＣＮＴ＿Ｂは、送信データＤＡＴＡ＿Ａが保持されている期間を送信サイクル単位で示している。送信データ変化検出回路７０１は受信クロックカウンタ回路７０２をリセットするとその時点の送信データＤＡＴＡ＿Ａ＿Ｐ１を送信データ記憶回路７０３に一旦記憶する。送信データ記憶回路７０３に記憶されたデータＤＡＴＡ＿Ａ＿Ｐ２は次回のチェック開始まで保持される。【００２７】
比較器７０４は送信データＤＡＴＡ＿Ａが変化した時点から送信データ記憶回路７０３に記憶された送信データＤＡＴＡ＿Ａ＿Ｐ２と送信データＤＡＴＡ＿Ａとが（式１）の条件を満たす送信クロックサイクル期間、データ変化時の送信データＤＡＴＡ＿Ａ＿Ｐ２と最新の送信データＤＡＴＡ＿Ａとの値が一致しているか比較を行う。もし、データが一致しない場合は、異常が発生したものと判断し、エラー情報と不足するクロックサイクル数の情報とを含む非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉ及びＥＲＲＯＲ＿ＳＩＧ＿Ｏを出力する。【００２８】
《実施の形態３》
実施の形態１で示した非同期異常検出回路１０１において、コントロール信号付フリップフロップ間の非同期データ転送にて、受信側フリップフロップで確実にデータを受け取るための条件を各信号が満足しているか検出する構成について説明する。【００２９】
図８は、コントロール信号を用いた場合の高速クロックドメインから低速クロックドメインへのデータ転送回路を示しており、８０１はデータ送信側のフリップフロップで、８０２はデータ受信側のフリップフロップである。両フリップフロップ８０１，８０２は非同期のクロックで動作しており、データの有効性を示すコントロール信号ＣＮＴＬ＿Ｂがアサートされているとき受信側フリップフロップ８０２は送信側フリップフロップ８０１から転送されてきたデータを受信クロックＣＬＫ＿Ｂの立ち上がりタイミングでラッチする。【００３０】
図９は、図８のデータ転送動作が正常である場合のタイミング図を示している。また、図１０は、図８のデータ転送動作が異常である場合のタイミング図を示している。図９の例ではコントロール信号ＣＮＴＬ＿Ｂがアサートされた次の受信クロックＣＬＫ＿Ｂの立ち上がりエッジを基準として、受信側クロック周期で前後１サイクルの期間、送信データＤＡＴＡ＿Ａが変化していない。そのため、正常にデータが受信側フリップフロップ８０２に転送されていることが分かる。しかし、図１０の例では、コントロール信号ＣＮＴＬ＿Ｂがアサートされた次の受信クロックＣＬＫ＿Ｂの立ち上がりエッジを基準として、受信側クロック周期で前後１サイクルの期間に送信データＤＡＴＡ＿Ａが変化している。この場合、実回路においては信号の物理遅延やクロックの揺らぎにより、タイミングによって正常にデータが受信側フリップフロップ８０２に転送されないことがある。【００３１】
このようなコントロール信号ＣＮＴＬ＿Ｂを用いて非同期クロックドメイン間で送信側のデータが確実に受信されるためには、受け側コントロール信号ＣＮＴＬ＿Ｂが変化した次の受信クロックＣＬＫ＿Ｂの立ち上がりエッジを基準として、受信クロック前後１サイクルの期間送信データＤＡＴＡ＿Ａが変化していないことが必要となる。本発明では、この条件を満たしているかの確認を「データ変化点チェック」と呼ぶことにする。【００３２】
図１１は、上記の関係を満たしているかを検出する非同期異常検出回路１０１を示している。受信クロックＣＬＫ＿Ｂ、コントロール信号ＣＮＴＬ＿Ｂ、送信データＤＡＴＡ＿Ａが図１のＡｓｙｎ＿ＳＩＧ＿Ｉ１にあたる。【００３３】
図１１の非同期異常検出回路１０１は、受信クロック１サイクル前の送信データを記憶しておく送信データ記憶回路１１０１と、最新の送信データＤＡＴＡ＿Ａと送信データ記憶回路１１０１に保持された送信データＤＡＴＡ＿Ａ＿Ｒとコントロール信号ＣＮＴＬ＿Ｂとを入力とし、受信クロックＣＬＫ＿Ｂの立ち上がりエッジのタイミングで送信データＤＡＴＡ＿Ａと受信クロック１サイクル前の送信データＤＡＴＡ＿Ａ＿Ｒとの比較を行う比較器１１０２とで構成される。【００３４】
比較器１１０２は、コントロール信号ＣＮＴＬ＿Ｂが有効になった場合、次の受信側クロックエッジの検出後、送信データ記憶回路１１０１に保持された送信データＤＡＴＡ＿Ａ＿Ｒと最新の送信データＤＡＴＡ＿Ａとの比較を行う。そして、データが一致していれば、更に次のクロックエッジにおいても送信データ記憶回路１１０１に保持された送信データとの比較を行う。このとき、同時にコントロール信号ＣＮＴＬ＿Ｂが有効になったままであるかも確認する。もし、データが一致しない場合、もしくは比較時にコントロール信号ＣＮＴＬ＿Ｂが無効になっていた場合は異常が発生したとして、異常発生のタイミングを含んだ非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉ及びＥＲＲＯＲ＿ＳＩＧ＿Ｏを出力する。なお、比較器１１０２は、コントロール信号ＣＮＴＬ＿Ｂが無効になったとき、比較を終了する。【００３５】
《実施の形態４》
実施の形態１で示した非同期異常救済回路１０２において、データ信号長を延長することによって非同期異常を救済する構成について説明する。【００３６】
実施の形態２で説明したように、送信データが十分な期間保持されていない場合、正常にデータが転送されない場合がある。これを防ぐには送信データ長を延長する必要がある。【００３７】
図１２は、データ遅延フリップフロップを用いた送信データ長を延長する非同期異常救済回路１０２の例を示しており、送信クロックＣＬＫ＿Ａで動作するデータ遅延フリップフロップ１２０４〜１２０９を複数段直列連結した非同期異常救済部３０１と、非同期異常救済時に受信側フリップフロップの入力データ線ＤＡＴＡ＿Ａ２への接続を送信側フリップフロップの出力データ線ＤＡＴＡ＿Ａからデータ遅延フリップフロップの出力データ線ＤＡＴＡ＿ＡＦ１〜ＤＡＴＡ＿ＡＦ６のいずれかに切り替えるデータ線切り替え制御信号ＳＥＬを生成し出力する救済回路制御部３０３と、送信側フリップフロップの出力データ線ＤＡＴＡ＿Ａとデータ遅延フリップフロップの出力データ線ＤＡＴＡ＿ＡＦ１〜ＤＡＴＡ＿ＡＦ６とを入力としデータ線切り替え制御信号ＳＥＬを制御信号として受信側フリップフロップの入力データ線ＤＡＴＡ＿Ａ２を選択するセレクタによって構成される救済切り替え部３０２とで構成される。【００３８】
非同期異常救済部３０１において、データ遅延フリップフロップ１段は送信クロックサイクルで１サイクル分データを遅延させることができる。図１２のように６段直列連結した場合は、送信サイクルで６サイクル分データを遅延させることが可能ということになる。図１２では例として６段のデータ遅延フリップフロップ１２０４〜１２０９を連結した場合を示しているが、連結段数は延長させたいデータ長に対して任意に設定するものとする。データ遅延フリップフロップ１２０４〜１２０９の出力信号のうちいずれかを受信側フリップフロップの入力データとすることで、送信データの延長が可能となる。救済回路制御部３０３は、非同期異常検出回路１０１から出力された非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉを入力とし、この情報をもとにデータ遅延フリップフロップ１２０４〜１２０９の出力を選択するためのデータ線切り替え制御信号ＳＥＬの生成を行う。また、救済回路制御部３０３は、送信側フリップフロップの出力データ線ＤＡＴＡ＿Ａを入力とし、ＤＡＴＡ＿Ａを見てアイドル状態であればデータ遅延フリップフロップ１２０４〜１２０９のリセットのための信号ＲＳＴを供給する。なお、送信側フリップフロップの出力データ線ＤＡＴＡ＿Ａが図１のＡｓｙｎ＿ＳＩＧ＿Ｉ２にあたり、ＤＡＴＡ＿Ａ２が図１のＡｓｙｎ＿ＳＩＧ＿Ｏにあたる。【００３９】
図１３は、非同期異常が検出され、図１２記載の非同期異常救済回路１０２が有効になった場合のタイミング図を示している。実施の形態２で説明したように、送信されるデータＤＡＴＡ＿Ａが次の受信クロックＣＬＫ＿Ｂの立ち上がりエッジまでに変化した場合、データ受信側のフリップフロップにデータが正常に転送されない。その状態を検出した非同期異常検出回路１０１が非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉを出力する。この非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉは、０より大で異常を示しており、その値は正常にデータが転送されるために要求される送信データの延長サイクル数を示している。ＥＲＲＯＲ＿ＳＩＧ＿Ｉを受けた救済回路制御部３０３は、過去に延長したデータ長と要求されている延長サイクル数を足した値を算出し、その値をデータ線切り替え制御信号ＳＥＬとして出力する。図１３では、要求されるデータ延長サイクルは１サイクルで、過去に延長したデータ長が０の場合であり、データ線切り替え制御信号ＳＥＬはＤＡＴＡ＿ＡＦ１を選択する。これにより、ＤＡＴＡ＿Ａ２に示したように送信クロックＣＬＫ＿Ａで１サイクル遅延されたＤＡＴＡ＿ＡＦ１の出力が受信側フリップフロップに入力されデータが１サイクル延長されたことになる。なお、この非同期異常救済回路１０２は、実施の形態２だけではなく実施の形態３と組み合わされる救済回路としても応用が可能である。【００４０】
《実施の形態５》
実施の形態４で示した、データ信号長を延長することによって非同期異常を救済する非同期異常救済回路１０２について、データ遅延フリップフロップを複数段直列連結した構成とは別に、データ記憶回路を１つ使用してデータ信号長を延長し救済する場合の構成について説明する。【００４１】
図１４は、データ記憶回路１４０２を１つ使用して送信データ長を延長する非同期異常救済回路１０２の例を示しており、送信データ消失時に受信側にデータを補完するため送信クロックＣＬＫ＿Ａに同期して送信データＤＡＴＡ＿Ａを一旦記憶しておくデータ記憶回路１４０２で構成される非同期異常救済部３０１と、救済時に受信側フリップフロップの入力データをデータ記憶回路１４０２の出力データ線に切り替える制御信号ＳＥＬを生成し出力し、また送信データの救済時に送信側クロックドメイン回路に対し送信データの救済中であり次のデータ送信を一旦停止するように伝える救済回路制御部３０３と、送信データの救済時にはデータ記憶回路１４０２に記憶されたデータＤＡＴＡ＿ＡＭ１を受信側フリップフロップに入力するよう経路を切り替える救済切り替え部３０２とを備える。【００４２】
図１５は、非同期異常が検出され、図１４記載の非同期異常救済回路１０２が有効になった場合のタイミング図を示している。実施の形態４で説明したように、送信されるデータＤＡＴＡ＿Ａが次の受信クロックＣＬＫ＿Ｂの立ち上がりエッジまでに変化した場合、正常にデータ送信側のフリップフロップにデータが転送されない。その状態を検出した非同期異常検出回路１０１が非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉを出力する。この非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉは、０より大で異常を示しており、その値は正常にデータが転送されるために要求される送信データの延長サイクル数を示している。図１５の場合は２サイクル足りないことを示している。【００４３】
非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉを受けると救済回路制御部３０３は、データ記憶回路１４０２に記憶された送信データを送信サイクル２サイクルの期間選択する制御信号ＳＥＬを生成する。また、合わせて送信サイクル２サイクルの期間、送信側クロックドメイン回路に対し送信データの救済中であり次のデータ送信を一旦停止するように伝える制御信号ＳＴＯＰを生成する。これにより、送信データが正常に受信側フリップフロップに転送される。【００４４】
《実施の形態６》
実施の形態１において、受信側フリップフロップのクロック遷移と同時にデータ値が変化したとき受信側フリップフロップの出力は有限時間振動し、その間その値は不確定になる「メタステーブル」の非同期異常を検出する非同期異常検出回路と非同期異常救済回路との構成について説明する。【００４５】
図１６は、非同期データ転送回路において、メタステーブル異常を検出し救済する回路構成を示しており、送信側フリップフロップ１６０１と受信側１段目のフリップフロップ１６０２と、メタステーブル対策として接続された受信側２段目のフリップフロップ１６０３と、送信データＤＡＴＡ＿Ａと受信クロックＣＬＫ＿Ｂと受信側２段目のフリップフロップの出力ＤＡＴＡ＿Ｂとを入力としてメタステーブル異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉを出力するメタステーブル異常検出回路１６０４と、メタステーブル異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉを入力としメタステーブル異常を救済するメタステーブル異常救済回路１６０５とで構成される。ＤＡＴＡ＿Ｂ２は救済処理後の受信データである。【００４６】
メタステーブル異常検出回路１６０４は、非同期データ転送においてメタステーブルによるデータ転送異常が発生していないか監視し、メタステーブル異常が発生した場合はメタステーブル異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉ及びＥＲＲＯＲ＿ＳＩＧ＿Ｏを出力する。また、メタステーブル異常救済回路１６０５は、メタステーブル異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉを入力として、メタステーブル異常が発生した場合にメタステーブル異常を救済する。【００４７】
図１７は、メタステーブル異常検出回路１６０４の構成例をより詳細に説明した図である。送信データＤＡＴＡ＿Ａの変化を検出する送信データ変化検出回路１７０１と、送信データＤＡＴＡ＿Ａが変化したときのデータを一旦記憶しておく送信データ記憶回路１７０２と、送信データの変化時から受信クロックＣＬＫ＿Ｂのカウントを開始する受信クロックカウンタ回路１７０３と、受信側２段目のフリップフロップの出力ＤＡＴＡ＿Ｂと送信データ記憶回路１７０２に記憶されたデータ変化時の送信データＤＡＴＡ＿Ａ＿Ｙとの値を比較する比較器１７０４とで構成される。【００４８】
送信データ変化検出回路１７０１は、送信データＤＡＴＡ＿Ａの変化を検出すると当該送信データＤＡＴＡ＿Ａを送信データ記憶回路１７０２に記憶させる。それと同時にリセット信号ＲＳＴにより受信クロックカウンタ回路１７０３のカウントをリセットする。これにより、同時に受信クロックカウンタ回路１７０３は受信クロックＣＬＫ＿Ｂのカウントを開始する。比較器１７０４は、最新の受信データＤＡＴＡ＿Ｂと送信データ記憶回路１７０２から出力された送信データＤＡＴＡ＿Ａ＿Ｙと受信クロックカウンタ回路１７０３から出力されたカウント値ＣＮＴとを入力としている。比較器１７０４は、予め内部にメタステーブル対策のため接続されたフリップフロップ挿入段数の値を保持しており、この挿入段数に１を足したサイクル数とカウント値ＣＮＴとが一致したときに最新の受信データＤＡＴＡ＿Ｂと送信データ記憶回路１７０２から出力された送信データＤＡＴＡ＿Ａ＿Ｙとを比較し一致することを確認する。もし、データが一致しない場合はメタステーブル異常が発生したとして、非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉ及びＥＲＲＯＲ＿ＳＩＧ＿Ｏを出力する。【００４９】
図１８は、メタステーブル異常を救済するメタステーブル異常救済回路１６０５の構成例を示しており、メタステーブル対策フリップフロップ１８０４〜１８０６を複数段直列連結した非同期異常救済部１８０１と、図１６の救済処理後の受信データＤＡＴＡ＿Ｂ２に出力する信号を受信側フリップフロップの出力データＤＡＴＡ＿Ｂからメタステーブル対策フリップフロップ１８０４〜１８０６を介して出力されたデータ線ＤＡＴＡ＿ＡＧ１〜ＤＡＴＡ＿ＡＧ３に切り替える制御信号ＳＥＬを出力する救済回路制御部１８０２と、この制御信号ＳＥＬに従って受信データ線ＤＡＴＡ＿Ｂ２に出力するデータを選択するセレクタによって実現される救済切り替え部１８０３とで構成される。救済回路制御部１８０２は非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉを受け取ると制御信号ＳＥＬを生成し、ＤＡＴＡ＿ＢからＤＡＴＡ＿Ｂ２への出力パスをＤＡＴＡ＿ＢからＤＡＴＡ＿ＡＧ１〜ＤＡＴＡ＿ＡＧ３のいずれかを経由したパスに切り替える。【００５０】
《実施の形態７》
実施の形態１（図２）における非同期異常情報を外部に出力する出力部２０２の一例を説明する。【００５１】
図１９は、非同期異常情報を外部に出力する出力部２０２をスキャンチェーンで構成した場合の構成例を示している図である。図１９の非同期異常検出回路１０１は、正常にデータを受け渡すために満足すべき予め定義された信号条件に対して入力信号が所望の信号条件を満足しているか判定する非同期異常判定部２０１と、非同期異常情報を外部に出力する出力部２０２とで構成されている。出力部２０２は、スキャン線ＳＣＡＮ＿ＬＩＮＥに接続されたスキャンフリップフロップ１９０１〜１９０４と、データ出力を制御するデータ出力制御回路１９０５とを備える。【００５２】
非同期異常判定部２０１により非同期異常が検出されると、データ出力制御回路１９０５が半導体集積回路の動作をストップさせテストモードに切り替える制御信号ＳＴＯＰ＿ＲＵＮを生成する。半導体集積回路がテストモードに切り替わるとデータ出力制御回路１９０５は非同期異常判定部２０１から入力された非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿ＸをＥＲＲＯＲ＿ＳＩＧ＿Ｏ１〜ＥＲＲＯＲ＿ＳＩＧ＿ＯＮのビットに分けてスキャンフリップフロップ１９０１〜１９０４に設定する。次に、スキャンフリップフロップ１９０１〜１９０４に設定された非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｏ１〜ＥＲＲＯＲ＿ＳＩＧ＿ＯＮを外部に出力するため、スキャンモードに設定する制御信号ＳＣＡＮ＿ＯＮを生成する。これによりスキャンチェーンが動作し、このスキャンチェーンを介して非同期異常情報が外部に出力される。【００５３】
《実施の形態８》
実施の形態１の非同期異常検出回路１０１において、デバッグのため非同期受け渡し関連信号群Ａｓｙｎ＿ＳＩＧ＿Ｉ１及びＡｓｙｎ＿ＳＩＧ＿Ｉ２の信号状態の履歴をある一定期間記憶するための記憶手段を更に備えた構成について説明する。【００５４】
図２０は、メモリ素子を更に備えた非同期異常検出回路１０１の構成例を示した図である。図２の非同期異常検出回路１０１の構成に非同期関連信号履歴記憶部２００１が追加された構成となっている。非同期関連信号履歴記憶部２００１は、メモリ素子で構成され非同期異常検出と同時に非同期受け渡し関連信号群Ａｓｙｎ＿ＳＩＧ＿Ｉ１の信号履歴を一定保期間保存する。もし、メモリ容量を超えた場合は古い履歴から上書き更新して信号履歴を保存する仕組みとなっている。非同期関連信号履歴記憶部２００１から出力される非同期関連信号履歴情報ＤＥＢＵＧ＿ＳＩＧ＿Ｘは出力部２０２に入力され、出力部２０２を介してデバッグ情報ＤＥＢＵＧ＿ＳＩＧ＿Ｏとして外部に出力することができる。【００５５】
《実施の形態９》
実施の形態１において説明した、非同期異常検出回路１０１及び非同期異常救済回路１０２を搭載した半導体集積回路の制御方法について説明する。【００５６】
図２１は、非同期異常検出回路１０１と非同期異常救済回路１０２とを搭載した半導体集積回路２１００において、非同期異常検出回路１０１と非同期異常救済回路１０２とを制御するシステム構成例を示した図であり、非同期異常検出回路１０１と、非同期異常救済回路１０２と、第１のクロックドメイン回路２１０１と、第２のクロックドメイン回路２１０２と、システム全体を制御するマイクロコントローラユニット（ＭＣＵ）２１０３とで構成される。ＭＣＵ２１０３は、制御線Ｄ＿ＣＯＮＴを介して非同期異常検出回路１０１を、他の制御線Ｒ＿ＣＯＮＴを介して非同期異常救済回路１０２をそれぞれソフトウェアにより任意の制御ができる。【００５７】
図２２は、ＭＣＵ２１０３を用いて実行される、非同期異常検出回路１０１及び非同期異常救済回路１０２を搭載した半導体集積回路２１００の初期起動ルーチンの例を示しており、非同期異常検出回路１０１を有効とする検出回路有効化工程２２０１と、初期テストを行う初期テスト処理工程２２０２と、非同期異常があった場合に、非同期異常救済回路１０２を有効にする救済回路有効化工程２２０３と、初期テスト処理終了後に非同期異常検出回路１０１を無効にする検出回路無効化工程２２０４とで構成される。【００５８】
《実施の形態１０》
実施の形態１において説明した非同期異常検出回路１０１及び非同期異常救済回路１０２を半導体集積回路に組み込むための設計フロー例について説明する。【００５９】
図２３は、半導体集積回路を設計するための設計環境例を示した図である。設計環境は、設計用端末２３０１と、メモリライブラリ２３０２と、スタンダードセルライブラリ２３０３と、回路ＩＰ２３０４と、非同期ライブラリ２３０５と、設計データベース２３０６とで構成される。通常は、非同期ライブラリ２３０５は含まれないが、本発明の非同期異常検出回路１０１及び非同期異常救済回路１０２を組み込むために、非同期ライブラリ２３０５を新たに追加するものとした。【００６０】
図２４は、非同期異常検出回路１０１及び非同期異常救済回路１０２を半導体集積回路に組み込むための設計フロー例を示した図である。要求機能仕様をハードウェア記述言語で記述するＲＴＬ設計・記述工程２４０１と、非同期検出・救済回路組み込み工程２４０２と、ＲＴＬ記述を検証するＨＤＬチェックＲＴＬシミュレーション工程２４０３と、ＲＴＬ記述を論理合成する論理合成工程２４０４と、テスト回路を挿入するテスト回路挿入工程２４０５と、チップレイアウトのフロアプランを行うフロアプラン工程２４０６と、ネットリストのゲート、メモリをフロアプラン上に配置配線する配置配線工程２４０７とで構成され、本発明の非同期異常検出回路１０１及び非同期異常救済回路１０２を組み込むために、非同期検出・救済回路組み込み工程２４０２を新たに追加するものとした。【００６１】
非同期検出・救済回路組み込み工程２４０２では、非同期異常検出回路１０１及び非同期異常救済回路１０２が含まれる非同期ライブラリ２３０５を使用して、ＲＴＬデータに組み込まれる。ＲＴＬデータに組み込まれた非同期異常検出回路１０１及び非同期異常救済回路１０２は、論理合成工程２４０４、配置配線工程２４０７によって自動的にセルライブラリに変換され、実チップ上に配置される。
【産業上の利用の可能性】
【００６２】
以上説明してきたとおり、本発明に係る半導体集積回路及びその設計方法は、完全な検証が困難である非同期受け渡し部において設計段階で非同期受け渡し箇所の十分な検証が行えず、開発チップ内に非同期異常が残留した場合においても非同期異常検出回路により評価チップ時や商品セット時に非同期異常を容易に検出することが可能となり、また評価チップ時や商品セット評価時に回路異常が発覚した場合においても、非同期異常救済回路を有効にすることにより回路データの修正やマスクの作り直しを行うことなく異常箇所を修復することができる効果を有し、非同期クロックドメイン間のデータ受け渡し等として有用である。
【図１】
2009084124.tif 000003
【図２】
2009084124.tif 000004
【図３】
2009084124.tif 000005
【図４】
2009084124.tif 000006
【図５】
2009084124.tif 000007
【図６】
2009084124.tif 000008
【図７】
2009084124.tif 000009
【図８】
2009084124.tif 000010
【図９】
2009084124.tif 000011
【図１０】
2009084124.tif 000012
【図１１】
2009084124.tif 000013
【図１２】
2009084124.tif 000014
【図１３】
2009084124.tif 000015
【図１４】
2009084124.tif 000016
【図１５】
2009084124.tif 000017
【図１６】
2009084124.tif 000018
【図１７】
2009084124.tif 000019
【図１８】
2009084124.tif 000020
【図１９】
2009084124.tif 000021
【図２０】
2009084124.tif 000022
【図２１】
2009084124.tif 000023
【図２２】
2009084124.tif 000024
【図２３】
2009084124.tif 000025
【図２４】
2009084124.tif 000026
【手続補正書】
【提出日】平成21年2月18日(2009.2.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
異なるクロックで動作する非同期クロックドメイン間のデータ受け渡しをする半導体集積回路であって、
互いに非同期となるクロック信号とデータ受け渡しに関連する信号とを入力信号とし、所望の信号条件を満足しているか判定する非同期異常判定部を有する非同期異常検出回路を備えたことを特徴とする半導体集積回路。
【請求項２】
請求項１記載の半導体集積回路において、
前記非同期異常検出回路は、所望の信号条件を満たさない場合に、回路異常情報を外部に出力する出力部を更に備えたことを特徴とする半導体集積回路。
【請求項３】
請求項１記載の半導体集積回路において、
正常にデータ転送が行える条件を満たしていない場合に、非同期受け渡し箇所の信号状態が所望の信号条件を満たすように修正するための非同期異常救済部を有する非同期異常救済回路を更に備えたことを特徴とする半導体集積回路。
【請求項４】
請求項３記載の半導体集積回路において、
前記非同期異常救済回路は、
前記非同期異常救済部を回路異常箇所に対して有効又は無効にする救済切り替え部と、
救済状態を管理、把握して救済回路を制御する制御信号を生成し出力する救済回路制御部とを更に備えたことを特徴とする半導体集積回路。
【請求項５】
請求項１記載の半導体集積回路において、
前記非同期異常検出回路は、受信側クロックと送信側クロックと送信データとを入力とし、送信側クロックよりも受信側クロックの周波数が低い場合において、送信データのデータ変化を検知し、その時点から受信側の一定クロックサイクル間は送信データが変化しないことを監視し、違反した場合は回路異常情報を出力することを特徴とする半導体集積回路。
【請求項６】
請求項１記載の半導体集積回路において、
前記非同期異常検出回路は、受信クロックと送信データと送信データが有効であることを示す制御信号とを入力とし、前記制御信号の変化する前後で送信データが一定期間変化しないことを監視し、違反した場合は回路異常情報を出力することを特徴とする半導体集積回路。
【請求項７】
請求項３記載の半導体集積回路において、
前記非同期異常救済回路は、送信データが受信側に正常にデータを受け渡すには送信データ長が短い場合において受信側に受け渡される前に消失された送信データを補完することを特徴とする半導体集積回路。
【請求項８】
請求項７記載の半導体集積回路において、
前記非同期異常救済回路は、
送信側クロックで動作するデータ遅延フリップフロップを複数段直列連結することで送信データ長を延長する非同期異常救済部と、
救済時に受信側フリップフロップへの入力データを前記データ遅延フリップフロップの出力データ線に切り替える制御信号を生成し出力する救済回路制御部と、
送信側フリップフロップの出力データ線と前記データ遅延フリップフロップの出力データ線とを入力とし前記データ線切り替え制御信号を制御信号として受信側フリップフロップに入力するデータ線を選択するセレクタによって構成される救済切り替え部とを備えたことを特徴とする半導体集積回路。
【請求項９】
請求項７記載の半導体集積回路において、
前記非同期異常救済回路は、
送信データ消失時に受信側にデータを補完するため送信クロックに同期して送信データを一旦記憶しておくデータ記憶回路で構成される非同期異常救済部と、
救済時に受信側フリップフロップへの入力データを前記データ記憶回路の出力データ線に切り替える制御信号を生成し出力し、また送信データの救済時に送信側クロックドメイン回路に対し送信データの救済中であり次のデータ送信を一旦停止するように伝える救済回路制御部と、
送信データの救済時には前記データ記憶回路に記憶されたデータを受信側フリップフロップに入力するよう経路を切り替える救済切り替え部とを備えたことを特徴とする半導体集積回路。
【請求項１０】
請求項１記載の半導体集積回路において、
前記非同期異常検出回路は、送信側フリップフロップが出力する送信データと、受信側フリップフロップに対して直列接続されたメタステーブル対策フリップフロップが出力する受信データとが、送信側フリップフロップの送信データが変化した時間を基準として、受信クロックサイクルを時間単位と考えた場合に前記メタステーブル対策フリップフロップの挿入段数をサイクル数とした次のサイクルで一致すること監視し、違反した場合は回路異常情報を出力するメタステーブル異常検出回路を備えたことを特徴とする半導体集積回路。
【請求項１１】
請求項１０記載の半導体集積回路において、
前記メタステーブル異常検出回路は、
送信側フリップフロップの送信データを入力とし当該送信データの変化を検出した場合に送信データ変化情報を出力する送信データ変化検出回路と、
送信側フリップフロップの送信データが変化したときに送信データを一旦記憶する送信データ記憶回路と、
受信クロックと送信データ変化情報とを入力としデータ変化を検出した場合にリセットされる受信クロックカウンタ回路と、
前記送信データ記憶回路に記憶された送信データとメタステーブル対策フリップフロップの受信データと前記受信クロックカウンタ回路のカウント値とを入力とし、前記カウント値が所望のカウント値を示す時に前記送信データ記憶回路に記憶された送信データと前記メタステーブル対策フリップフロップの受信データとが一致するか比較する比較器とを備えたことを特徴とする半導体集積回路。
【請求項１２】
請求項２記載の半導体集積回路において、
前記出力部は、
信号状態情報を簡易コード化するコード化手段と、
システム全体を停止させ、かつ前記コード化手段によりコード化されたビット情報を非同期箇所近傍に配置されるスキャンチェーン上のフリップフロップに記憶させる手段と、
システムをテストモードに切り替える手段と、
スキャンパス上の信号情報を外部に転送する手段とを備えたことを特徴とする半導体集積回路。
【請求項１３】
請求項１記載の半導体集積回路において、
前記非同期異常検出回路は、非同期関連信号の履歴をある一定期間記憶するための記憶装置で構成される非同期関連信号履歴記憶部を更に備えたことを特徴とする半導体集積回路。
【請求項１４】
請求項３記載の半導体集積回路において、
前記半導体集積回路のシステム全体を制御する制御装置を更に備え、
前記制御装置は、
システム起動時の自己初期テスト時に前記非同期異常検出回路を有効化する検出回路有効化手段と、
前記非同期異常検出回路が非同期異常を検出した時には異常箇所に対して前記非同期異常救済回路を有効化する救済回路有効化手段と、
通常動作モード時には前記非同期異常検出回路の動作を停止する検出回路無効化手段とを有することを特徴とする半導体集積回路。
【請求項１５】
請求項３記載の半導体集積回路における前記非同期異常検出回路と前記非同期異常救済回路とをライブラリ化し再利用することを特徴とする半導体集積回路の設計方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路における非同期クロックドメイン間のデータ受け渡しにおいて発生する回路動作異常を検出し救済する技術に関するものである。
【背景技術】
【０００２】
半導体集積回路は、位相及び周波数が異なる種々のクロックで動作する複数の同期回路で構成され、共通のクロックで動作する回路部分をクロックドメインと呼ぶ。異なるクロックドメイン間でデータの受け渡しを行う必要があり、従来、非同期クロックドメイン間のデータ受け渡しは、異なるクロックで動作するデータ送信側フリップフロップとデータ受信側フリップフロップとを直接接続する構造でデータの受け渡しを行ってきた。
【０００３】
この構造の場合、「メタステーブル」と呼ばれる問題を引き起こす場合がある。メタステーブルは、受信側フリップフロップのクロック遷移と同時にデータ値を変化する場合に生じ、受信側フリップフロップの出力は有限時間振動し、その間その値は不確定である。このデータが後段の論理回路に伝播した場合、エラーや不確実な動作を引き起こす。この対策として、受信側フリップフロップの後段にフリップフロップを追加してダブルバッファとする対策が打たれる。これにより、受信側フリップフロップでデータが不確定になっても後段の論理回路に不確定データが伝播することを防ぐことができる。メタステーブル状態は、一般的に次のクロックエッジまでに安定するとされており、追加されたフリップフロップの出力は安定したデータが出力される。
【０００４】
また、フリップフロップのクロック遷移と同時にデータ値を変化する場合において、メタステーブルの問題とは別に出力が正常な値を示さない問題がある。これは、セットアップホールドタイムに受信データの変化点が存在する場合において、変化前データと変化後データとのどちらを取るか分からないために発生する。この問題は、上記のダブルバッファの対策では対応が不可能である。この課題に対しては、データの乗り換えタイミングを制御するデータ乗換回路やデータバッファ装置を用いたハンドシェイク回路を用いることによって、セットアップホールドタイムに受信データ変化点が存在するといった場合に起こる「データのミスラッチ」を起こすことなく、確実にデータの受け渡しを行う対策が実施されている。
【０００５】
例えば、特許文献１には、データ乗換回路に関し、非同期クロック間でデータの乗り換えを行う場合に、データの乗り換えタイミングを制御することにより乗り換え時にデータ誤りを発生させないようにするデータ乗換回路を開示している。また、特許文献２には、データバッファ装置を経由して非同期クロックドメイン間でデータを受け渡す転送方法及び装置が開示されている。
【特許文献１】特開平８−２３７２３２号公報
【特許文献２】国際公開第０３／０３９０６１号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、非同期データ受け渡しでは、この問題の他に、取るべきデータが受け側に到達する前に変化してしまい、受け側のフリップフロップでデータを取得できない「データ消失」の問題がある。この問題に関しては、データがそもそも到達していないことが問題であり、従来解決されてきた課題とは別の課題である。
【０００７】
データ乗換回路やハンドシェイク回路を用いれば比較的安全に非同期データの受け渡しを行うことができる。しかしながら、回路資産の再利用によるクロックドメイン間データ受け渡し仕様の制限や非同期受け渡し箇所の多さから回路修正が困難であったりするため、このようなデータ受け渡し回路構造を用いることができないケースが多々ある。以上の理由から、非同期受け渡しは一般的に送信側フリップフロップと受信側フリップフロップとを直接接続するような構造を持つケースがほとんどである。
【０００８】
このような非同期受け渡し構造は、クロック間のタイミングに依存し、確実にデータが受け渡される保証がないため、上記「メタステーブル」、「データのミスラッチ」、「データ消失」の問題を含め、開発において検証を行うことが必須である。この検証は、ＲＴＬ設計段階において論理シミュレーションや回路データの構造検証により実施され、マスク発注前に回路動作異常を全て発見し、回路動作異常に対する回路修正が全て完了する前提で開発が進められている。しかしながら、設計段階では、最終商品上で生じ得る位相ずれを網羅的に予測することが困難で、多様なクロック位相関係を想定した検証が現時点では実施できない。その結果、チップ評価時や、商品セット評価時に回路動作異常が発覚し、マスクの作り直しが発生する結果、マスク修正費用が発生してしまうことが課題となっている。
【０００９】
本発明は、上記の課題を解決するものであり、チップ評価時や、セット商品開発時においても非同期クロックドメイン間のデータ受け渡しにおいて回路動作異常が発生していないか監視し、回路動作異常が発覚した場合にはマスクの作り直しを行うことなく、回路動作異常を救済することを可能にする回路構造を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明に係る半導体集積回路は、異なるクロックで動作する非同期クロックドメイン間のデータ受け渡しをする半導体集積回路であって、例えば次のような非同期異常検出回路と非同期異常救済回路とを備えたことを特徴とするものである。すなわち、非同期異常検出回路は、互いに非同期となるクロック信号とデータ受け渡しに関連する信号とを入力信号とし、所望の信号条件を満足しているか判定する非同期異常判定部を有する。また非同期異常救済回路は、正常にデータ転送が行える条件を満たしていない場合に、非同期受け渡し箇所の信号状態が所望の信号条件を満たすように修正するための非同期異常救済部を有する。
【発明の効果】
【００１１】
本発明によれば、完全な検証が困難である非同期受け渡し部において設計段階で非同期受け渡し箇所の十分な検証が行えず、開発チップ内に非同期異常が残留した場合においても非同期異常検出回路により評価チップ時や商品セット時に非同期異常を容易に検出することが可能となる。また、評価チップ時や商品セット評価時に回路異常が発覚した場合においても、非同期異常救済回路を有効にすることにより回路データの修正やマスクの作り直しを行うことなく異常箇所を修復することができる。
【発明を実施するための最良の形態】
【００１２】
以下、半導体集積回路の回路検証手法に関する本発明の実施の形態を図面に基づいて詳細に説明する。
【００１３】
《実施の形態１》
図１は、本発明の半導体集積回路内の非同期受け渡し部における基本回路構成を示す。１０１は非同期受け渡しの回路異常を検出する非同期異常検出回路であり、１０２は非同期異常を救済する非同期異常救済回路である。
【００１４】
非同期異常検出回路１０１は送信データ、クロック、制御信号など非同期受け渡し関連信号群Ａｓｙｎ＿ＳＩＧ＿Ｉ１を入力とし、非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉ及びＥＲＲＯＲ＿ＳＩＧ＿Ｏを出力する構成をとる。非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉは半導体集積回路の内部で使用されるもので、非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｏは半導体集積回路の外部に出力される情報である。
【００１５】
非同期異常救済回路１０２は、送信データ、クロック、制御信号など非同期受け渡し関連信号群Ａｓｙｎ＿ＳＩＧ＿Ｉ２と上記非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉとを入力とし、救済処置後の非同期受け渡し関連信号群Ａｓｙｎ＿ＳＩＧ＿Ｏを出力する構成をとる。なお、非同期受け渡し関連信号群Ａｓｙｎ＿ＳＩＧ＿Ｉ１及びＡｓｙｎ＿ＳＩＧ＿Ｉ２は検出や救済する非同期異常の内容によって異なるものとする。
【００１６】
図２は、非同期異常検出回路１０１の基本的な内部構成を示した図である。予め定義された正常にデータを受け渡すために満足すべき信号条件に対して入力信号が所望の信号条件を満足しているか判定する非同期異常判定部２０１と、もし信号条件を満たさない場合に非同期異常情報を外部に出力する出力部２０２とを備えている。ＥＲＲＯＲ＿ＳＩＧ＿Ｘは、非同期異常判定部２０１から出力部２０２へ渡される非同期異常情報である。
【００１７】
図３は、非同期異常救済回路１０２の基本的な内部構成を示した図である。各信号状態が非同期受け渡しで正常にデータ転送が行える条件を満たしていない場合において、非同期受け渡し箇所の信号状態が所望の信号条件を満たすように修正するための非同期異常救済部３０１と、この非同期異常救済部３０１を回路異常箇所に対して有効、無効にする救済切り替え部３０２と、救済状態を管理、把握して救済回路を制御する制御信号を生成し出力する救済回路制御部３０３とを備えている。
【００１８】
まず、非同期異常検出回路１０１は、非同期受け渡しにおいて満たすべき信号条件が満足されているかを判定部２０１により判定する。もし、信号状態が満たすべき信号条件を違反した場合、非同期異常検出回路１０１は非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｏ及びＥＲＲＯＲ＿ＳＩＧ＿Ｉを出力部２０２により出力する。出力された非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉは非同期異常救済回路１０２に入力される。非同期異常情報を受け取った救済回路１０２は、救済回路制御部３０３によって制御信号を生成し、非同期異常救済部３０１を救済切り替え部３０２により有効にする。これにより、非同期異常の修正が行われる。
【００１９】
《実施の形態２》
実施の形態１で示した非同期異常検出回路１０１において、受信側フリップフロップがデータを受け取る前に送信データが消失することなく、確実に受信側フリップフロップでデータを受け取るための送信クロックと受信クロックと送信データとが満たすべき条件を各非同期関連信号が満足しているか検出する構成について説明する。
【００２０】
図４は、高速クロックドメインから低速クロックドメインへの非同期データ転送回路を示しており、４０１はデータ送信側のフリップフロップで、４０２はデータ受信側のフリップフロップである。また、ＣＬＫ＿Ａは送信クロック、ＤＡＴＡ＿Ａは送信データ、ＣＬＫ＿Ｂは受信クロック、ＤＡＴＡ＿Ｂは受信データである。両フリップフロップ４０１，４０２は非同期のクロックで動作しており、両フリップフロップ４０１，４０２の間でデータが非同期に受け渡される。
【００２１】
図５は、図４のデータ転送動作が正常である場合のタイミング図を示している。また、図６は、図４のデータ転送動作が異常である場合のタイミング図を示している。図５では送信データＤＡＴＡ＿Ａが十分長い期間保持されているので、データが正常にデータ受信側のフリップフロップ４０２に転送されているが、図６では受信クロックＣＬＫ＿Ｂの立ち上がりエッジまでに送信データＤＡＴＡ＿Ａが変化しているため、正常にデータ受信側のフリップフロップ４０２にデータが転送されていないことが分かる。
【００２２】
非同期データ受け渡しにおいて送信側のデータが確実に受信されるためには、
送信データ幅＞受信クロック周期
の関係が必要であり、各クロック周期とクロックサイクル数を前関係において、送信データ幅の条件を送受の各クロック周期とクロックサイクル数をパラメータとして表現し、変形すると、
送信データのサイクル数≧（受信クロック周期＋送信クロック周期）／送信クロック周期  …（式１）
の関係式を満たす必要がある。もし、周期比が１：１．２（送信：受信）であった場合、送信データのサイクル数は２．２以上となり、送信サイクルで３サイクル間は送信データの値が変化してはならない。本発明では（式１）の条件を「サンプリング定理」と呼ぶことにする。
【００２３】
図７は、上記の関係を満たしているか検出する回路構成例を示している。図７の非同期異常検出回路１０１は、送信データの変化点を検出する送信データ変化検出回路７０１と、受信側フリップフロップのクロックをカウントする受信クロックカウンタ回路７０２と、データが変化した時点の送信データＤＡＴＡ＿Ａ＿Ｐ１を一旦保持する送信データ記憶回路７０３と、送信クロックＣＬＫ＿Ａと受信クロックカウント値ＣＮＴ＿Ｂと送信データ記憶回路７０３に記憶されているデータ変化時の送信データＤＡＴＡ＿Ａ＿Ｐ２と最新の送信データＤＡＴＡ＿Ａとを入力とした比較器７０４とで構成される。なお、送信データＤＡＴＡ＿Ａと送信クロックＣＬＫ＿Ａと受信クロックＣＬＫ＿Ｂとが、図１のＡｓｙｎ＿ＳＩＧ＿Ｉ１にあたる。
【００２４】
送信データ変化検出回路７０１は、送信データＤＡＴＡ＿Ａの変化を検出するとリセット信号ＲＳＴにより受信クロックカウンタ回路７０２をリセットする。受信クロックカウンタ回路７０２のカウント値ＣＮＴ＿Ｂは、送信データＤＡＴＡ＿Ａが保持されている期間を送信サイクル単位で示している。送信データ変化検出回路７０１は受信クロックカウンタ回路７０２をリセットするとその時点の送信データＤＡＴＡ＿Ａ＿Ｐ１を送信データ記憶回路７０３に一旦記憶する。送信データ記憶回路７０３に記憶されたデータＤＡＴＡ＿Ａ＿Ｐ２は次回のチェック開始まで保持される。
【００２５】
比較器７０４は送信データＤＡＴＡ＿Ａが変化した時点から送信データ記憶回路７０３に記憶された送信データＤＡＴＡ＿Ａ＿Ｐ２と送信データＤＡＴＡ＿Ａとが（式１）の条件を満たす送信クロックサイクル期間、データ変化時の送信データＤＡＴＡ＿Ａ＿Ｐ２と最新の送信データＤＡＴＡ＿Ａとの値が一致しているか比較を行う。もし、データが一致しない場合は、異常が発生したものと判断し、エラー情報と不足するクロックサイクル数の情報とを含む非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉ及びＥＲＲＯＲ＿ＳＩＧ＿Ｏを出力する。
【００２６】
《実施の形態３》
実施の形態１で示した非同期異常検出回路１０１において、コントロール信号付フリップフロップ間の非同期データ転送にて、受信側フリップフロップで確実にデータを受け取るための条件を各信号が満足しているか検出する構成について説明する。
【００２７】
図８は、コントロール信号を用いた場合の高速クロックドメインから低速クロックドメインへのデータ転送回路を示しており、８０１はデータ送信側のフリップフロップで、８０２はデータ受信側のフリップフロップである。両フリップフロップ８０１，８０２は非同期のクロックで動作しており、データの有効性を示すコントロール信号ＣＮＴＬ＿Ｂがアサートされているとき受信側フリップフロップ８０２は送信側フリップフロップ８０１から転送されてきたデータを受信クロックＣＬＫ＿Ｂの立ち上がりタイミングでラッチする。
【００２８】
図９は、図８のデータ転送動作が正常である場合のタイミング図を示している。また、図１０は、図８のデータ転送動作が異常である場合のタイミング図を示している。図９の例ではコントロール信号ＣＮＴＬ＿Ｂがアサートされた次の受信クロックＣＬＫ＿Ｂの立ち上がりエッジを基準として、受信側クロック周期で前後１サイクルの期間、送信データＤＡＴＡ＿Ａが変化していない。そのため、正常にデータが受信側フリップフロップ８０２に転送されていることが分かる。しかし、図１０の例では、コントロール信号ＣＮＴＬ＿Ｂがアサートされた次の受信クロックＣＬＫ＿Ｂの立ち上がりエッジを基準として、受信側クロック周期で前後１サイクルの期間に送信データＤＡＴＡ＿Ａが変化している。この場合、実回路においては信号の物理遅延やクロックの揺らぎにより、タイミングによって正常にデータが受信側フリップフロップ８０２に転送されないことがある。
【００２９】
このようなコントロール信号ＣＮＴＬ＿Ｂを用いて非同期クロックドメイン間で送信側のデータが確実に受信されるためには、受け側コントロール信号ＣＮＴＬ＿Ｂが変化した次の受信クロックＣＬＫ＿Ｂの立ち上がりエッジを基準として、受信クロック前後１サイクルの期間送信データＤＡＴＡ＿Ａが変化していないことが必要となる。本発明では、この条件を満たしているかの確認を「データ変化点チェック」と呼ぶことにする。
【００３０】
図１１は、上記の関係を満たしているかを検出する非同期異常検出回路１０１を示している。受信クロックＣＬＫ＿Ｂ、コントロール信号ＣＮＴＬ＿Ｂ、送信データＤＡＴＡ＿Ａが図１のＡｓｙｎ＿ＳＩＧ＿Ｉ１にあたる。
【００３１】
図１１の非同期異常検出回路１０１は、受信クロック１サイクル前の送信データを記憶しておく送信データ記憶回路１１０１と、最新の送信データＤＡＴＡ＿Ａと送信データ記憶回路１１０１に保持された送信データＤＡＴＡ＿Ａ＿Ｒとコントロール信号ＣＮＴＬ＿Ｂとを入力とし、受信クロックＣＬＫ＿Ｂの立ち上がりエッジのタイミングで送信データＤＡＴＡ＿Ａと受信クロック１サイクル前の送信データＤＡＴＡ＿Ａ＿Ｒとの比較を行う比較器１１０２とで構成される。
【００３２】
比較器１１０２は、コントロール信号ＣＮＴＬ＿Ｂが有効になった場合、次の受信側クロックエッジの検出後、送信データ記憶回路１１０１に保持された送信データＤＡＴＡ＿Ａ＿Ｒと最新の送信データＤＡＴＡ＿Ａとの比較を行う。そして、データが一致していれば、更に次のクロックエッジにおいても送信データ記憶回路１１０１に保持された送信データとの比較を行う。このとき、同時にコントロール信号ＣＮＴＬ＿Ｂが有効になったままであるかも確認する。もし、データが一致しない場合、もしくは比較時にコントロール信号ＣＮＴＬ＿Ｂが無効になっていた場合は異常が発生したとして、異常発生のタイミングを含んだ非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉ及びＥＲＲＯＲ＿ＳＩＧ＿Ｏを出力する。なお、比較器１１０２は、コントロール信号ＣＮＴＬ＿Ｂが無効になったとき、比較を終了する。
【００３３】
《実施の形態４》
実施の形態１で示した非同期異常救済回路１０２において、データ信号長を延長することによって非同期異常を救済する構成について説明する。
【００３４】
実施の形態２で説明したように、送信データが十分な期間保持されていない場合、正常にデータが転送されない場合がある。これを防ぐには送信データ長を延長する必要がある。
【００３５】
図１２は、データ遅延フリップフロップを用いた送信データ長を延長する非同期異常救済回路１０２の例を示しており、送信クロックＣＬＫ＿Ａで動作するデータ遅延フリップフロップ１２０４〜１２０９を複数段直列連結した非同期異常救済部３０１と、非同期異常救済時に受信側フリップフロップの入力データ線ＤＡＴＡ＿Ａ２への接続を送信側フリップフロップの出力データ線ＤＡＴＡ＿Ａからデータ遅延フリップフロップの出力データ線ＤＡＴＡ＿ＡＦ１〜ＤＡＴＡ＿ＡＦ６のいずれかに切り替えるデータ線切り替え制御信号ＳＥＬを生成し出力する救済回路制御部３０３と、送信側フリップフロップの出力データ線ＤＡＴＡ＿Ａとデータ遅延フリップフロップの出力データ線ＤＡＴＡ＿ＡＦ１〜ＤＡＴＡ＿ＡＦ６とを入力としデータ線切り替え制御信号ＳＥＬを制御信号として受信側フリップフロップの入力データ線ＤＡＴＡ＿Ａ２を選択するセレクタによって構成される救済切り替え部３０２とで構成される。
【００３６】
非同期異常救済部３０１において、データ遅延フリップフロップ１段は送信クロックサイクルで１サイクル分データを遅延させることができる。図１２のように６段直列連結した場合は、送信サイクルで６サイクル分データを遅延させることが可能ということになる。図１２では例として６段のデータ遅延フリップフロップ１２０４〜１２０９を連結した場合を示しているが、連結段数は延長させたいデータ長に対して任意に設定するものとする。データ遅延フリップフロップ１２０４〜１２０９の出力信号のうちいずれかを受信側フリップフロップの入力データとすることで、送信データの延長が可能となる。救済回路制御部３０３は、非同期異常検出回路１０１から出力された非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉを入力とし、この情報をもとにデータ遅延フリップフロップ１２０４〜１２０９の出力を選択するためのデータ線切り替え制御信号ＳＥＬの生成を行う。また、救済回路制御部３０３は、送信側フリップフロップの出力データ線ＤＡＴＡ＿Ａを入力とし、ＤＡＴＡ＿Ａを見てアイドル状態であればデータ遅延フリップフロップ１２０４〜１２０９のリセットのための信号ＲＳＴを供給する。なお、送信側フリップフロップの出力データ線ＤＡＴＡ＿Ａが図１のＡｓｙｎ＿ＳＩＧ＿Ｉ２にあたり、ＤＡＴＡ＿Ａ２が図１のＡｓｙｎ＿ＳＩＧ＿Ｏにあたる。
【００３７】
図１３は、非同期異常が検出され、図１２記載の非同期異常救済回路１０２が有効になった場合のタイミング図を示している。実施の形態２で説明したように、送信されるデータＤＡＴＡ＿Ａが次の受信クロックＣＬＫ＿Ｂの立ち上がりエッジまでに変化した場合、データ受信側のフリップフロップにデータが正常に転送されない。その状態を検出した非同期異常検出回路１０１が非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉを出力する。この非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉは、０より大で異常を示しており、その値は正常にデータが転送されるために要求される送信データの延長サイクル数を示している。ＥＲＲＯＲ＿ＳＩＧ＿Ｉを受けた救済回路制御部３０３は、過去に延長したデータ長と要求されている延長サイクル数を足した値を算出し、その値をデータ線切り替え制御信号ＳＥＬとして出力する。図１３では、要求されるデータ延長サイクルは１サイクルで、過去に延長したデータ長が０の場合であり、データ線切り替え制御信号ＳＥＬはＤＡＴＡ＿ＡＦ１を選択する。これにより、ＤＡＴＡ＿Ａ２に示したように送信クロックＣＬＫ＿Ａで１サイクル遅延されたＤＡＴＡ＿ＡＦ１の出力が受信側フリップフロップに入力されデータが１サイクル延長されたことになる。なお、この非同期異常救済回路１０２は、実施の形態２だけではなく実施の形態３と組み合わされる救済回路としても応用が可能である。
【００３８】
《実施の形態５》
実施の形態４で示した、データ信号長を延長することによって非同期異常を救済する非同期異常救済回路１０２について、データ遅延フリップフロップを複数段直列連結した構成とは別に、データ記憶回路を１つ使用してデータ信号長を延長し救済する場合の構成について説明する。
【００３９】
図１４は、データ記憶回路１４０２を１つ使用して送信データ長を延長する非同期異常救済回路１０２の例を示しており、送信データ消失時に受信側にデータを補完するため送信クロックＣＬＫ＿Ａに同期して送信データＤＡＴＡ＿Ａを一旦記憶しておくデータ記憶回路１４０２で構成される非同期異常救済部３０１と、救済時に受信側フリップフロップの入力データをデータ記憶回路１４０２の出力データ線に切り替える制御信号ＳＥＬを生成し出力し、また送信データの救済時に送信側クロックドメイン回路に対し送信データの救済中であり次のデータ送信を一旦停止するように伝える救済回路制御部３０３と、送信データの救済時にはデータ記憶回路１４０２に記憶されたデータＤＡＴＡ＿ＡＭ１を受信側フリップフロップに入力するよう経路を切り替える救済切り替え部３０２とを備える。
【００４０】
図１５は、非同期異常が検出され、図１４記載の非同期異常救済回路１０２が有効になった場合のタイミング図を示している。実施の形態４で説明したように、送信されるデータＤＡＴＡ＿Ａが次の受信クロックＣＬＫ＿Ｂの立ち上がりエッジまでに変化した場合、正常にデータ送信側のフリップフロップにデータが転送されない。その状態を検出した非同期異常検出回路１０１が非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉを出力する。この非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉは、０より大で異常を示しており、その値は正常にデータが転送されるために要求される送信データの延長サイクル数を示している。図１５の場合は２サイクル足りないことを示している。
【００４１】
非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉを受けると救済回路制御部３０３は、データ記憶回路１４０２に記憶された送信データを送信サイクル２サイクルの期間選択する制御信号ＳＥＬを生成する。また、合わせて送信サイクル２サイクルの期間、送信側クロックドメイン回路に対し送信データの救済中であり次のデータ送信を一旦停止するように伝える制御信号ＳＴＯＰを生成する。これにより、送信データが正常に受信側フリップフロップに転送される。
【００４２】
《実施の形態６》
実施の形態１において、受信側フリップフロップのクロック遷移と同時にデータ値が変化したとき受信側フリップフロップの出力は有限時間振動し、その間その値は不確定になる「メタステーブル」の非同期異常を検出する非同期異常検出回路と非同期異常救済回路との構成について説明する。
【００４３】
図１６は、非同期データ転送回路において、メタステーブル異常を検出し救済する回路構成を示しており、送信側フリップフロップ１６０１と受信側１段目のフリップフロップ１６０２と、メタステーブル対策として接続された受信側２段目のフリップフロップ１６０３と、送信データＤＡＴＡ＿Ａと受信クロックＣＬＫ＿Ｂと受信側２段目のフリップフロップの出力ＤＡＴＡ＿Ｂとを入力としてメタステーブル異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉを出力するメタステーブル異常検出回路１６０４と、メタステーブル異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉを入力としメタステーブル異常を救済するメタステーブル異常救済回路１６０５とで構成される。ＤＡＴＡ＿Ｂ２は救済処理後の受信データである。
【００４４】
メタステーブル異常検出回路１６０４は、非同期データ転送においてメタステーブルによるデータ転送異常が発生していないか監視し、メタステーブル異常が発生した場合はメタステーブル異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉ及びＥＲＲＯＲ＿ＳＩＧ＿Ｏを出力する。また、メタステーブル異常救済回路１６０５は、メタステーブル異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉを入力として、メタステーブル異常が発生した場合にメタステーブル異常を救済する。
【００４５】
図１７は、メタステーブル異常検出回路１６０４の構成例をより詳細に説明した図である。送信データＤＡＴＡ＿Ａの変化を検出する送信データ変化検出回路１７０１と、送信データＤＡＴＡ＿Ａが変化したときのデータを一旦記憶しておく送信データ記憶回路１７０２と、送信データの変化時から受信クロックＣＬＫ＿Ｂのカウントを開始する受信クロックカウンタ回路１７０３と、受信側２段目のフリップフロップの出力ＤＡＴＡ＿Ｂと送信データ記憶回路１７０２に記憶されたデータ変化時の送信データＤＡＴＡ＿Ａ＿Ｙとの値を比較する比較器１７０４とで構成される。
【００４６】
送信データ変化検出回路１７０１は、送信データＤＡＴＡ＿Ａの変化を検出すると当該送信データＤＡＴＡ＿Ａを送信データ記憶回路１７０２に記憶させる。それと同時にリセット信号ＲＳＴにより受信クロックカウンタ回路１７０３のカウントをリセットする。これにより、同時に受信クロックカウンタ回路１７０３は受信クロックＣＬＫ＿Ｂのカウントを開始する。比較器１７０４は、最新の受信データＤＡＴＡ＿Ｂと送信データ記憶回路１７０２から出力された送信データＤＡＴＡ＿Ａ＿Ｙと受信クロックカウンタ回路１７０３から出力されたカウント値ＣＮＴとを入力としている。比較器１７０４は、予め内部にメタステーブル対策のため接続されたフリップフロップ挿入段数の値を保持しており、この挿入段数に１を足したサイクル数とカウント値ＣＮＴとが一致したときに最新の受信データＤＡＴＡ＿Ｂと送信データ記憶回路１７０２から出力された送信データＤＡＴＡ＿Ａ＿Ｙとを比較し一致することを確認する。もし、データが一致しない場合はメタステーブル異常が発生したとして、非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉ及びＥＲＲＯＲ＿ＳＩＧ＿Ｏを出力する。
【００４７】
図１８は、メタステーブル異常を救済するメタステーブル異常救済回路１６０５の構成例を示しており、メタステーブル対策フリップフロップ１８０４〜１８０６を複数段直列連結した非同期異常救済部１８０１と、図１６の救済処理後の受信データＤＡＴＡ＿Ｂ２に出力する信号を受信側フリップフロップの出力データＤＡＴＡ＿Ｂからメタステーブル対策フリップフロップ１８０４〜１８０６を介して出力されたデータ線ＤＡＴＡ＿ＡＧ１〜ＤＡＴＡ＿ＡＧ３に切り替える制御信号ＳＥＬを出力する救済回路制御部１８０２と、この制御信号ＳＥＬに従って受信データ線ＤＡＴＡ＿Ｂ２に出力するデータを選択するセレクタによって実現される救済切り替え部１８０３とで構成される。救済回路制御部１８０２は非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｉを受け取ると制御信号ＳＥＬを生成し、ＤＡＴＡ＿ＢからＤＡＴＡ＿Ｂ２への出力パスをＤＡＴＡ＿ＢからＤＡＴＡ＿ＡＧ１〜ＤＡＴＡ＿ＡＧ３のいずれかを経由したパスに切り替える。
【００４８】
《実施の形態７》
実施の形態１（図２）における非同期異常情報を外部に出力する出力部２０２の一例を説明する。
【００４９】
図１９は、非同期異常情報を外部に出力する出力部２０２をスキャンチェーンで構成した場合の構成例を示している図である。図１９の非同期異常検出回路１０１は、正常にデータを受け渡すために満足すべき予め定義された信号条件に対して入力信号が所望の信号条件を満足しているか判定する非同期異常判定部２０１と、非同期異常情報を外部に出力する出力部２０２とで構成されている。出力部２０２は、スキャン線ＳＣＡＮ＿ＬＩＮＥに接続されたスキャンフリップフロップ１９０１〜１９０４と、データ出力を制御するデータ出力制御回路１９０５とを備える。
【００５０】
非同期異常判定部２０１により非同期異常が検出されると、データ出力制御回路１９０５が半導体集積回路の動作をストップさせテストモードに切り替える制御信号ＳＴＯＰ＿ＲＵＮを生成する。半導体集積回路がテストモードに切り替わるとデータ出力制御回路１９０５は非同期異常判定部２０１から入力された非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿ＸをＥＲＲＯＲ＿ＳＩＧ＿Ｏ１〜ＥＲＲＯＲ＿ＳＩＧ＿ＯＮのビットに分けてスキャンフリップフロップ１９０１〜１９０４に設定する。次に、スキャンフリップフロップ１９０１〜１９０４に設定された非同期異常情報ＥＲＲＯＲ＿ＳＩＧ＿Ｏ１〜ＥＲＲＯＲ＿ＳＩＧ＿ＯＮを外部に出力するため、スキャンモードに設定する制御信号ＳＣＡＮ＿ＯＮを生成する。これによりスキャンチェーンが動作し、このスキャンチェーンを介して非同期異常情報が外部に出力される。
【００５１】
《実施の形態８》
実施の形態１の非同期異常検出回路１０１において、デバッグのため非同期受け渡し関連信号群Ａｓｙｎ＿ＳＩＧ＿Ｉ１及びＡｓｙｎ＿ＳＩＧ＿Ｉ２の信号状態の履歴をある一定期間記憶するための記憶手段を更に備えた構成について説明する。
【００５２】
図２０は、メモリ素子を更に備えた非同期異常検出回路１０１の構成例を示した図である。図２の非同期異常検出回路１０１の構成に非同期関連信号履歴記憶部２００１が追加された構成となっている。非同期関連信号履歴記憶部２００１は、メモリ素子で構成され非同期異常検出と同時に非同期受け渡し関連信号群Ａｓｙｎ＿ＳＩＧ＿Ｉ１の信号履歴を一定保期間保存する。もし、メモリ容量を超えた場合は古い履歴から上書き更新して信号履歴を保存する仕組みとなっている。非同期関連信号履歴記憶部２００１から出力される非同期関連信号履歴情報ＤＥＢＵＧ＿ＳＩＧ＿Ｘは出力部２０２に入力され、出力部２０２を介してデバッグ情報ＤＥＢＵＧ＿ＳＩＧ＿Ｏとして外部に出力することができる。
【００５３】
《実施の形態９》
実施の形態１において説明した、非同期異常検出回路１０１及び非同期異常救済回路１０２を搭載した半導体集積回路の制御方法について説明する。
【００５４】
図２１は、非同期異常検出回路１０１と非同期異常救済回路１０２とを搭載した半導体集積回路２１００において、非同期異常検出回路１０１と非同期異常救済回路１０２とを制御するシステム構成例を示した図であり、非同期異常検出回路１０１と、非同期異常救済回路１０２と、第１のクロックドメイン回路２１０１と、第２のクロックドメイン回路２１０２と、システム全体を制御するマイクロコントローラユニット（ＭＣＵ）２１０３とで構成される。ＭＣＵ２１０３は、制御線Ｄ＿ＣＯＮＴを介して非同期異常検出回路１０１を、他の制御線Ｒ＿ＣＯＮＴを介して非同期異常救済回路１０２をそれぞれソフトウェアにより任意の制御ができる。
【００５５】
図２２は、ＭＣＵ２１０３を用いて実行される、非同期異常検出回路１０１及び非同期異常救済回路１０２を搭載した半導体集積回路２１００の初期起動ルーチンの例を示しており、非同期異常検出回路１０１を有効とする検出回路有効化工程２２０１と、初期テストを行う初期テスト処理工程２２０２と、非同期異常があった場合に、非同期異常救済回路１０２を有効にする救済回路有効化工程２２０３と、初期テスト処理終了後に非同期異常検出回路１０１を無効にする検出回路無効化工程２２０４とで構成される。
【００５６】
《実施の形態１０》
実施の形態１において説明した非同期異常検出回路１０１及び非同期異常救済回路１０２を半導体集積回路に組み込むための設計フロー例について説明する。
【００５７】
図２３は、半導体集積回路を設計するための設計環境例を示した図である。設計環境は、設計用端末２３０１と、メモリライブラリ２３０２と、スタンダードセルライブラリ２３０３と、回路ＩＰ２３０４と、非同期ライブラリ２３０５と、設計データベース２３０６とで構成される。通常は、非同期ライブラリ２３０５は含まれないが、本発明の非同期異常検出回路１０１及び非同期異常救済回路１０２を組み込むために、非同期ライブラリ２３０５を新たに追加するものとした。
【００５８】
図２４は、非同期異常検出回路１０１及び非同期異常救済回路１０２を半導体集積回路に組み込むための設計フロー例を示した図である。要求機能仕様をハードウェア記述言語で記述するＲＴＬ設計・記述工程２４０１と、非同期検出・救済回路組み込み工程２４０２と、ＲＴＬ記述を検証するＨＤＬチェックＲＴＬシミュレーション工程２４０３と、ＲＴＬ記述を論理合成する論理合成工程２４０４と、テスト回路を挿入するテスト回路挿入工程２４０５と、チップレイアウトのフロアプランを行うフロアプラン工程２４０６と、ネットリストのゲート、メモリをフロアプラン上に配置配線する配置配線工程２４０７とで構成され、本発明の非同期異常検出回路１０１及び非同期異常救済回路１０２を組み込むために、非同期検出・救済回路組み込み工程２４０２を新たに追加するものとした。
【００５９】
非同期検出・救済回路組み込み工程２４０２では、非同期異常検出回路１０１及び非同期異常救済回路１０２が含まれる非同期ライブラリ２３０５を使用して、ＲＴＬデータに組み込まれる。ＲＴＬデータに組み込まれた非同期異常検出回路１０１及び非同期異常救済回路１０２は、論理合成工程２４０４、配置配線工程２４０７によって自動的にセルライブラリに変換され、実チップ上に配置される。
【産業上の利用可能性】
【００６０】
以上説明してきたとおり、本発明に係る半導体集積回路及びその設計方法は、完全な検証が困難である非同期受け渡し部において設計段階で非同期受け渡し箇所の十分な検証が行えず、開発チップ内に非同期異常が残留した場合においても非同期異常検出回路により評価チップ時や商品セット時に非同期異常を容易に検出することが可能となり、また評価チップ時や商品セット評価時に回路異常が発覚した場合においても、非同期異常救済回路を有効にすることにより回路データの修正やマスクの作り直しを行うことなく異常箇所を修復することができる効果を有し、非同期クロックドメイン間のデータ受け渡し等として有用である。
【図面の簡単な説明】
【００６１】
【図１】本発明の非同期受け渡し部における基本回路構成を示す図である。
【図２】非同期異常検出回路の基本的な内部構成を示す図である。
【図３】非同期異常救済回路の基本的な内部構成を示す図である。
【図４】非同期データ転送回路を示す図である。
【図５】図４のデータ転送動作が正常である場合のタイミング図である。
【図６】図４のデータ転送動作が異常である場合のタイミング図である。
【図７】サンプリング定理を満たしているか判定する非同期異常検出回路の構成例を示す図である。
【図８】コントロール信号を用いた非同期データ転送回路を示す図である。
【図９】図８のデータ転送動作が正常である場合のタイミング図である。
【図１０】図８のデータ転送動作が異常である場合のタイミング図である。
【図１１】データ変化点チェックを行う非同期異常検出回路を示す図である。
【図１２】フリップフロップによる送信データ長を延長する非同期異常救済回路を示す図である。
【図１３】図１２の非同期異常救済回路が有効になった場合のタイミング図である。
【図１４】データ記憶回路による送信データ長を延長する非同期異常救済回路を示す図である。
【図１５】図１４の非同期異常救済回路が有効になった場合のタイミング図である。
【図１６】メタステーブル異常を検出し救済する非同期データ転送回路を示す図である。
【図１７】図１６中のメタステーブル異常検出回路の構成例を示す図である。
【図１８】図１６中のメタステーブル異常救済回路の構成例を示す図である。
【図１９】図２中の出力部をスキャンチェーンで構成した場合の構成例を示す図である。
【図２０】履歴記憶機能を有する非同期異常救済回路を示す図である。
【図２１】非同期異常検出回路と非同期異常救済回路とを制御するシステム構成例を示す図である。
【図２２】非同期異常検出回路及び非同期異常救済回路を搭載した半導体集積回路の初期起動ルーチンの例を示す図である。
【図２３】非同期異常検出回路及び非同期異常救済回路を搭載した半導体集積回路の設計環境例を示す図である。
【図２４】非同期異常検出回路及び非同期異常救済回路を半導体集積回路に組み込むための設計フロー例を示す図である。
【符号の説明】
【００６２】
１０１  非同期異常検出回路
１０２  非同期異常救済回路
２０１  非同期異常判定部
２０２  出力部
３０１  非同期異常救済部
３０２  救済切り替え部
３０３  救済回路制御部
４０１  データ送信側フリップフロップ
４０２  データ受信側フリップフロップ
７０１  送信データ変化検出回路
７０２  受信クロックカウンタ回路
７０３  送信データ記憶回路
７０４  比較器
８０１  データ送信側フリップフロップ
８０２  データ受信側フリップフロップ
１１０１  送信データ記憶回路
１１０２  比較器
１２０４〜１２０９  データ遅延フリップフロップ
１４０２  データ記憶回路
１６０１  データ送信側フリップフロップ
１６０２，１６０３  データ受信側フリップフロップ
１６０４  メタステーブル異常検出回路
１６０５  メタステーブル異常救済回路
１７０１  送信データ変化検出回路
１７０２  送信データ記憶回路
１７０３  受信クロックカウンタ回路
１７０４  比較器
１８０１  非同期異常救済部
１８０２  救済回路制御部
１８０３  救済切り替え部
１８０４〜１８０６  メタステーブル対策フリップフロップ
１９０１〜１９０４  スキャンフリップフロップ
１９０５  データ出力制御回路
２００１  非同期関連信号履歴記憶部
２１００  半導体集積回路
２１０１，２１０２  クロックドメイン回路
２１０３  マイクロコントローラユニット（ＭＣＵ）
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2009084124.tif 000027
【図２】
2009084124.tif 000028
【図３】
2009084124.tif 000029
【図４】
2009084124.tif 000030
【図５】
2009084124.tif 000031
【図６】
2009084124.tif 000032
【図７】
2009084124.tif 000033
【図８】
2009084124.tif 000034
【図９】
2009084124.tif 000035
【図１０】
2009084124.tif 000036
【図１１】
2009084124.tif 000037
【図１２】
2009084124.tif 000038
【図１３】
2009084124.tif 000039
【図１４】
2009084124.tif 000040
【図１５】
2009084124.tif 000041
【図１６】
2009084124.tif 000042
【図１７】
2009084124.tif 000043
【図１８】
2009084124.tif 000044
【図１９】
2009084124.tif 000045
【図２０】
2009084124.tif 000046
【図２１】
2009084124.tif 000047
【図２２】
2009084124.tif 000048
【図２３】
2009084124.tif 000049
【図２４】
2009084124.tif 000050
【国際調査報告】
2009084124.tif 000051
2009084124.tif 000052
2009084124.tif 000053
2009084124.tif 000054