いまさら聞けない!電気回路設計者向け EDA基礎知識 非同期回路の設計とは

今日、LSI/FPGAの設計において非同期設計は当たり前になってきています。
その中でLSI/FPGAのシステム化、高周波数化により非同期設計に関するバグの発生割合は全体の4割以上となってきています。
しかし、論理の検証においてはシミュレータを駆使しバグを洗い出すものの非同期設計におけるバグ対策は実機検証において発生した場合のみデバッグする、というケースも少なくありません。
下記ではRTLの設計段階で非同期におけるバグを抑えるためのポイントをご紹介致します。

「たまにレジスタがおかしな値になる。」
「連続データのはずが、たまにデータが抜けることがある。」
「指定していないアドレスのレジスタ値が書き変ってしまった。」
実機検証でこのような経験をされたことはないでしょうか?こんな時はまず非同期クロック間のデータ転送を疑ってみたほうがよさそうです。

「そもそもなぜ設計において非同期クロックが必要となるのか?回路設計は単一クロックが基本のはずだが?」
と思われる方もおられるかも知れません。確かにその通りで回路設計は単一クロック単一エッジの同期設計で行うのが基本です。

しかしながらシステム全体を見渡してみると、CPU、バス、通信インターフェース回路、画像表示回路、ユーザ回路などにおいて必要となるクロック周波数は様々であり、システム全体でクロックを統一することはほぼ不可能と言えます。ということで非同期クロック間のデータ転送を行う回路(以下非同期回路と呼ぶ)はシステムでは不可欠な構成要素なのです。

では、冒頭のような不具合を発生させないためにどのような回路設計を行えばよいのでしょうか。
ポイントは2つあります。

1つは入力側のクロック周波数と受け側のクロック周波数を把握したうえで、正しくデータ転送を行う回路仕様をしっかり検討すること。
入力と受け側のクロック周波数の比率によりデータを取り込むタイミングなどの回路構造は大きく変わります。データの抜けや追い越しに気をつけて設計しなければなりません。

2つ目はFFのセットアップタイム、ホールドタイムを違反することで生じるメタ・ステーブルの対策を行うこと。
周波数、位相が異なるクロック間ではこのメタ・ステーブルの現象は避けられません。対策回路はRTL設計スタイルガイドで紹介されていますので、これに準拠した回路を適応してください。

最後に非同期回路の検証方法についてですが、実機での確認はお勧めできません。非同期回路における不具合は発生頻度が低いという特徴がありますので、冒頭のような状況に陥ると原因究明に多くの時間がかかってしまいます。

結論として非同期回路の検証はジッタを考慮したシミュレーションの実行と回路構造を解析する専用のツールで抑え込まなければいけません。
非同期回路の設計・検証のスキルは一人前の設計者になるための必須項目です。同期設計をマスターした方は是非ともチャレンジしてみてください。

転載元:Copyright© 2016 hdLab, Inc. All Rights Reserved.
※転載許可を得て掲載しています。