Meteorcomm、Simulink テストベンチを複数のコシミュレーション ブロックを使用したサイクルごとの RTL 検証に使用

「コシミュレーション モデルを使用することで、1 人の FPGA エンジニアが 1 時間以内にスティミュラス チェックを 3 セット完了できました。私はコシミュレーション テストベンチを 1 スプリント (3 週間) で作成しました。全体的な開発期間は 9 週間から 3 週間に短縮されました。コシミュレーション ベンチを再利用すれば、システムモデルまたは RTL からの変更を同期できます。」

主な成果

  • HDL コシミュレーションで Simulink テストベンチを再利用することにより、開発期間を短縮しエラーを削減。これにより、SystemVerilog を手作業で記述する必要なく、HDL 実装の検証が可能に
  • コシミュレーションで HDL 設計と参照モデルをサイクルごとに同期することにより、結果を直接比較
  • ロジックアナライザーを使用してシステムモデルと RTL コシミュレーション ブロックの信号値を表示および比較することで、Simulink 内での効率的なデバッグを実現
HDL モデルのコシミュレーションのワークフローを示した図 (中央に同じスティミュラスを使用するサイクルごとのデジタル ダウンコンバーターの MATLAB モデルを含む)。

デジタル ダウンコンバーターの MATLAB モデルを含む HDL モデルを使用したテストベンチ。

コシミュレーション デジタル ダウンコンバーター モデルの展開図。参照モデルと HDL 実装の間の同期性と比較の容易さを確保するための複数の遅延ブロックが示されている。

デジタル ダウンコンバーター RTL コシミュレーション ブロックの展開図。

Meteorcomm は、鉄道産業向けに無線通信と列車制御のソリューションを提供しています。同社では、最近、列車通信システムに関して、以前のソフトウェア無線設計によるデジタル ダウンコンバーターを、できる限り新製品の開発に再利用する必要に迫られていました。同社の設計では、無線周波数信号を取得し、それをデジタル調整してベースバンドに合わせます。そしてその信号に対してフィルター処理やプリアンブル検出が複数回行われ、復元されたシンボルが DDR メモリ内のバッファーに転送されて、プロセッサによりさらなる処理が行われます。

Meteorcomm のエンジニアは、まず MATLAB® 関数と Simulink ブロックを組み合わせて Simulink® を使用した設計用の参照モデルを開発することから着手していました。その後、設計者が論理合成可能な HDL コードを手作業で記述し、Zynq® UltraScale+™ MPSoC デバイスに設計を実装していました。この従来の検証手法では、参照モデルを使用してテスト対象設計 (DUT) のための入力スティミュラスを生成し、サードパーティの HDL シミュレーターを使用してシミュレーションを実行したうえで、出力結果を Simulink 参照モデルと比較して DUT を検証します。

しかし、この手法ではエラーが発生しやすく、完了までに数日かかることもあります。このような問題を回避するため、Meteorcomm のエンジニアは HDL Verifier™ の HDL コシミュレーション機能を使用することにしました。HDL コシミュレーションを使用することで、Simulink テストベンチ全体を再利用して同じスティミュラスを参照モデルと DUT の両方に適用し、Simulink で結果比較ブロックを使用してそれらを比較できます。Meteorcomm のエンジニアは、Simulink で RTL 実装の動作をより柔軟にモデル化するために、システムを複数のモジュールに分割し、コシミュレーション ブロックを各モジュールの RTL 実装に使用しました。そのうえで、コシミュレーション ブロック間に遅延を追加し、RTL と Simulink の間の実装の差分と一致させました。

各段階に専用の比較ブロックがあるため、同一のスティミュラスを両方のモデルに適用することで、サイクルごとに結果を一致させることができました。異なるスティミュラスを使用した新しいテストはわずか数分で設定できるため、MATLAB モデルと HDL コードが同一の動作をしているかを検証するプロセスが大幅にスピードアップしました。