QEMU 協調シミュレーション

今日のSoC型FPGAは、システム、ソフトウェア、ハードウェアそれぞれを担当するエンジニアにとって、新しい検証の課題を突き付ける存在です。HW/SWの統合に関係して発生する問題は増え続けていて、しかもそういった問題は、SoC FPGAを実行しながらのテストベッドでしか発見できないものが多く、テストベッドで問題を発見しても遅すぎて、プロジェクトの遅延につながることが多くなります。

アルデックは Riviera-PRO™ と QEMU (オープンソースのプロセッサ・エミュレータ)をつなぐHW/SW協調検証インタフェースを提供します。システムインテグレーションと、HDLコードとQEMU上で動作するソフトウェアアプリケーションやドライバとの協調シミュレーションは、アルデックのQEMU Bridgeを加えることでシンプルになります。QEMU Bridge は Riviera-PRO と QEMU をつなぎ、さらにSystemC TLMトランザクションをAXIに変換したり、その逆を行うことで、高速協調シミュレーション用インタフェースとなります。

 

図1: Riviera-PROとQEMUで構築するHW/SW協調シミュレーション環境

 

Transaction Recorderを持つAXI BFM

アルデックがAXIベースデザインのRTLシミュレーション用に開発したAXIのバスファンクショナルモデル(BFM)がRiviera-PROで利用できます。このBFMは暗号化されたVerilogおよびSystemVerilogのモジュールとして提供します。ユーザーのテストベンチでこのBFMを使用するには、アルデックの提供するVerilogまたはSystemVerilogタスクAPIを利用します。アルデックのAXI BFMは次のBFMをサポートしています。

  • AXI 3 Master
  • AXI 3 Slave
  • AXI 4 Master
  • AXI 4 Slave
  • AXI 4 Lite Master
  • AXI 4 Lite Slave
  • AXI 4 Stream Master
  • AXI 4 Stream Slave

 

それぞれのBFMでは、組込みのAXIトランザクションレコーダでAXIトランザクションをASDB(アルデックのシミュレーション・データベース)フォーマットのログに記録できます。Riviera-PROでのトランザクション利用法についてさらに詳しくは、Riviera-PRO Transactions のドキュメントをご覧ください。デザインにAXIを取り組むプロセスは次の通りです。

  • デザインの段階
    • コンパイル済みライブラリにて配布
    • プロジェクトのHDL部分にインスタン化
  • コンパイルと設定の段階
    • パラメータによる設定
    • 組込みのAXIトランザクションレコーダをオン
  • シミュレーションの段階
    • QEMU Bridge プロセスに自動接続

 

AXI_Transaction_Riviera-PRO

図2: Riviera-PROでのAXIトランザクション

QEMU Bridge

QEMU Bridge は SystemC トランザクションレベル・モデリング(TLM)をベースにアルデックが開発したソリューションで、プログラマブル・ロジック(PL)とプロセッシング・システム(PS)からなるSoCを、トランザクション精度のブリッジでまるごと協調シミュレーションできます。通信はこのブリッジが自動で処理し、検証エンジニア側で何らかの余分な作業は必要ありません。

Riviera-PRO を使うハードウェアエンジニアはHDLにブレークポイントを設定したり、データフローを検証したり、さらにはコードカバレッジやQEMU上で実行中のソフトウェアアプリケーションから実行されるパスなどを解析したりすることができます。QEMU を使うソフトウェアエンジニアはGNU Debugger(GDB)でブレークポイントを使ってコードを行ったり来たりしながら、カーネルとドライバを両方とも検証できるようになります。

 

Xilinx SoC FPGA用のQEMU

Xilinx® は Microblaze™, Zynq™ および Zynq UltraScale+ で利用できるQEMUツリーを提供しています。QEMUツリーはユーザーがダウンロードしてインストールする必要があります。Xilinxは下記サイトからのQEMUツリーのダウンロードを推奨しています。https://github.com/Xilinx/qemu

Ask Us a Question
x

Ask Us a Question

x
Captcha ImageReload Captcha
Incorrect data entered.
Thank you! Your question has been submitted. Please allow 1-3 business days for someone to respond to your question.
Internal error occurred. Your question was not submitted. Please contact us using Feedback form.