第7回「実機におけるデバッグ手法」(201211)

RTL設計・検証がひと段落つくと次に待ち構えているのが実機検証です。RTLで十分シミュレーションをしているから実機ではスムースに動くはず!っと思っていても、いざ実機検証を始めるといろいろなトラブルが発生するものです。同じ検証でもRTLと実機では環境、デバッグ方法、考え方などが少々異なります。今回は実機におけるデバッグ手法と題して、FPGAを使った実機検証について触れてみます。



●実機ボードの仕様を把握する

実機検証ではボード上に実装されているデバイス、コネクタ、スイッチなどを通してFPGAへの入力設定や出力結果の確認を行います。ボード上で特にデバッグ用途として検証者が自由に使うことができる要素(LED、DIPSW、観測用のヘッダピンやテストランドなど)がどれだけ用意されているか?という点で検証を始める前に実機ボードの仕様を把握しておく必要があります。またFPGAの回路規模はメーカや型番によって異なりますので事前にFPGAの仕様も押さえておきましょう。


●観測方法を考える

実機検証では適切な観測方法を割り当てなければ、何がどのように動作しているかが分かりません。例えばFPGA内部で処理が完結するような回路をデバッグする場合、FPGAのコンフィグレーション後、ボード上に何の変化もなく、果たしてFPGA内部の回路が動いているのかどうかすら分からないという状況にもなりかねません。このような時はFPGA内部の回路で確実に動作していることが分かる信号(分周クロックやリセット信号など)をLEDに出力すれば、FPGAコンフィグレーション後にLEDの点灯パターンにより動作の確認を行うことができます。その他シリアルI/FやJTAGを介してボードに接続したPCからFPGA内部の観測を行うことも可能です。用途や目的に応じて観測方法を検討しておく必要があります。


●FPGAのデバッグ機能を活用する

最近のFPGAはJTAGを介して内部ノードを観測する機能があります。FPGA内部のメモリ使用量などの制限は多少あるものの、これによりRTLシミュレーションのように内部ノードを観測しながらデバッグを行うことが可能です。さらに観測した波形をテキストファイルに保存してRTLシミュレーションの入力パターンに使用することもできます。


●デバッグの手順を考える

問題が発生したときにどこに原因があるのか?どこまでは正しく動いているのか?という問題の切り分けを明確に行うために、デバッグの手順を決めることが重要です。以下の回路を例にの実機デバッグの手順を考えてみます。



onepoint7_1


一度にまとめて動作させてデバッグをしてしまうとどうでしょうか?おそらく問題が生じた場合、不具合の原因を特定するのに多くの時間と労力を費やしてしまいそうです。


onepoint7_2


効率的にデバッグを進めるならば、下図のように画像の出力側から順番にデバッグ用のテストパターン生成回路と組み合わせてデバッグすることをお勧めします。このやり方であれば、不具合が生じた場合でも問題の切り分けも明確に行うことができます。


onepoint7_3


●RTLシミュレーションでは正常動作、実機では不具合発生!なぜ???

このような状況の場合、以下の点を見直してみて下さい。

①論理合成、配置配線でタイミングエラーが生じていないか?
レポート結果を確認してください。タイミングエラーが発生していれば、当然実機では正しく動きません。タイミングエラーがある場合は、回路記述の修正を行うか、FPGAの専用ツールを使用して配置を変えるなどの対応が必要です。FPGAツールではタイミングエラーが発生していてもコンフィグレーション用のデータが生成されるようですので、ついつい論理合成や配置配線のレポート結果を見落としがちですが、必ずチェックするように心がけてください。

②RTLシミュレーションと実機の差分をチェックする
RTLシミュレーションに含まれていなければ、重点的に確認する必要があります。
 ・マクロやライブラリ
 ・非同期クロック間の通信
 ・RTLのバグ
  シミュレーションパターンの不足によりバグが未検出
  モジュールの組み合わせによるバグ(インターフェースなど)


今回は「実機デバッグ手法」についてご紹介しました。皆さんの開発現場において参考にして頂けると幸いです。

株式会社エッチ・ディーラボでは設計スタイルガイドに即した設計・検証およびコンサルティングサービスを実施しております。実機検証環境におけるデバッグ手法や戦略についてもご提案させて頂きますので、ご興味のある方はお問い合わせください。

XILINX
教育サービス
HDLABトレーニング(SystemC)
HDLABトレーニング(SystemVerilog)
HDLABトレーニング(Verilog HDL)
HDLABトレーニング(フレッシュマン向け)
HDLABトレーニング(専門分野)
HDLABトレーニング(組込み分野)
HDLABトレーニング(XILINX認定)
HDLABトレーニング日程表
HDLABトレーニング開催リクエスト
Eラーニング
STIL講座
STIL講座ログイン
設計スキルアセスメント
設計技能検定試験「ESA」
設計技能検定試験「ESA Basic」
設計・コンサルティング
ARM CPUモデル環境
SystemC
Design Style Guide
設計・検証のワンポイント
購入・見積もり
ダウンロード
お問い合わせ

XAP