MATLAB®からRiviera-PROをコントロール

はじめに

Riviera-PROは双方向のMATLAB協調シミュレーション・インターフェースを提供し、AldecのHDLベースのシミュレーション環境とMathWorks社のシステム・レベルのコンピューティング環境との統合を可能にします。このインターフェースによってエンジニアがASIC/FPGAのインプリメンテーションとシステム仕様との一致を検証することを可能にします。Riviear-PROはMATLABとの協調シミュレーションでマスターまたはスレーブとして機能します。

  1. マスター・モードでは、Riviera-PROのユーザがMATLAB環境のコンピューティング・パワーと共にHDL言語によるテストベンチの機能を拡張できます。これにはMATLABコマンドの実行、M-関数の呼び出し、MATLABワークスペースへのデータの出し入れが含まれています。よって、Riviera-PRO(HDL)環境にいる間は、MATLAB環境をコントロールすることができます。この方法を行いたい場合は、以下のアプリケーションノートを参照ください。 http://www.aldec.com/jp/support/resources/documentation/articles/1263

  2. スレーブ・モードでは、MATLABユーザがMATLAB環境を離れること無くビット精度のIPモデルを実行できます。Riviera-PROのMATLABインターフェースは、MATLABをメインの環境として保つことができるフローをサポートし、HDLシミュレーションのためにRiviera-PROを呼び出すことができます。この方法ではHDLシミュレーション環境に対処する必要は全くありません(HDL側でデザイン固有のインターフェースが実装される)。この方法を行う場合は、下記を読み進めてください。

注意: 上記の両方の方法では、インターフェース上の全てのデータ転送動作はHDLコードから制御されます。MATLABとの通信は、VerilogとVHDLの両方で用意された専用のサブプログラムのセットで行われます。

デザイン固有のインターフェースの実装

HDLモデルが既に実装されたインターフェースを持っている場合は、次のセクションに進んでください。MATLABインターフェースの動作は、HDLコード内でインターフェース関数を呼び出すことに基づいています。インターフェースを最初から実装する場合は、以下のアプリケーションノートを参照してください。 http://www.aldec.com/jp/support/resources/documentation/articles/1263

インターフェースの注目点

  • コードに挿入されているインターフェース・ルーチンの場所に制限は無い‐テストベンチやIPのコードに入れることが可能(HDLコードの任意の場所からMATLABにデータを引き渡すことが可能)。

  • 固定小数点データ(HDLベクター)をMATLABの浮動小数点データ(double, signle)および整数型(HDLのrealをMATLABのdouble/single、HDLをMTALABのinteger)にビルトインで変換。

  • 配列の転送と効果的なメモリー管理。

  • HDLシミュレーション時間はMATLABに転送可能。

協調シミュレーションのためのMATLABセットアップ

インターフェースを設定するため以下の手順を実行します。

  1. MATALBを起動します。

  2. MATLABウィンドウで現在のフォルダを$aldec/interfaces/matlabディレクトリに変更します。

  3. MATLABコマンドウィンドウでsetupコマンドを入力しEnterキーを押します。MATLABにインストールされた以前のバージョンのRiviera-PROブロックセットを誤って削除しないために、警告のダイアログ・ボックスが表示されます。Yes を押すとセットアップが実行され、次のメッセージがコマンドウィンドウに表示されます。

    Welcome to Riviera-Pro Toolbox Setup.
    Installing Riviera-Pro Toolbox...
    Adding Riviera-Pro Toolbox path:
    C:\Aldec\Riviera-PRO-2012.10-x64\interfaces\matlab
    

Riviera-PRO Toolbox は正常にインストールされています。セットアップが完了したら、すぐに Riviera-PRO Toolbox を使用することができます。Riviera-PRO Toolbox はMATLABとSimulinkのインターフェースで構成されています。

MATLABからのシミュレーション実行

MATLABからのシミュレーション実行を行うために従う基本的な手順は以下になります。

  1. デザイン固有のインターフェースを実装していることを必ず確認。

  2. MATLABを起動して、その中でM-スクリプトを作成。

  3. Riviera-PROを呼び出して、HDLシミュレーションを実行するスクリプトをMATLABで実行(run)

Rviera-PROでHDLシミュレーションを実行するためのコマンドを使用します。Riviea-PROのマクロコマンドの使用方法についての詳細はマニュアル http://www.aldec.com/resources/manuals/Riviera-PRO/index.htm を参照ください。以下はMATLAB環境からHDLコンパイルおよびシミュレーションを実行するためのサンプルスクリプトです(Riviera-PROのインストール /examples/tools/matlab にある fft_analysis サンプルデザインを基にしています)。

%Initialize Riviera-PRO from Matlab
riv_server_init
%Compile project  
riv_do('alib work')
riv_do('acom -dbg src/cfft/*.vhd')
riv_do('acom -dbg src/*.vhd')
%Execute 6 simulation for different window_type 'w' value
for w=1:6
    asimstring = ['asim -ieee_nowarn -Gwindow_type=' num2str(w) ' top_fft_tb']
    riv_do(asimstring)
    riv_do('run -all')
    riv_do('endsim')
    %Collect all 6 results to the common arrays
    all_fft_Qin(w,:)=fft_Qin
    all_fft_Qout(w,:)=fft_Qout
end 

上記で、

  • riv_server_init MATLABからRiviera-PROを起動するためのコマンド

  • riv_do Riviera-PRO実行のための文字列やコマンドを渡すルーチン

  • -G 引数、HDLシミュレーションのイニシャライズ・コマンド(asim)に異なるパラメータを渡す。サンプル・スクリプトは、同じ時間でFFTブロックのシミュレーションを実行するために使用される6つの異なるウィンドウタイプ・ファンクションでシミュレーションを実行します。

協調シミュレーションを実行するには(fft_analysisディレクトリから)、MATLABから上記のスクリプトを使用してください。サンプル・スクリプトの実行結果は以下になります。

まとめ

Riviera-PROをMATLABからスタートでき、MATLABのインターフェース・コードでデザインを実行できます。これにより、1つのMATLABインスタンス内で複数のHDLシミュレーション実行による広範囲な数学データ解析を備えた強固なテストベンチ・シナリオを作成することができます。

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.