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.
We use cookies to ensure we give you the best user experience and to provide you with content we believe will be of relevance to you. If you continue to use our site, you consent to our use of cookies. A detailed overview on the use of cookies and other website information is located in our Privacy Policy.