Riviera-PROは双方向のMATLAB協調シミュレーション・インターフェースを提供し、AldecのHDLベースのシミュレーション環境とMathWorks社のシステム・レベルのコンピューティング環境との統合を可能にします。このインターフェースによってエンジニアがASIC/FPGAのインプリメンテーションとシステム仕様との一致を検証することを可能にします。Riviear-PROはMATLABとの協調シミュレーションでマスターまたはスレーブとして機能します。
マスター・モードでは、Riviera-PROのユーザがMATLAB環境のコンピューティング・パワーと共にHDL言語によるテストベンチの機能を拡張できます。これにはMATLABコマンドの実行、M-関数の呼び出し、MATLABワークスペースへのデータの出し入れが含まれています。よって、Riviera-PRO(HDL)環境にいる間は、MATLAB環境をコントロールすることができます。この方法を行いたい場合は、以下のアプリケーションノートを参照ください。 http://www.aldec.com/jp/support/resources/documentation/articles/1263
スレーブ・モードでは、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に転送可能。
インターフェースを設定するため以下の手順を実行します。
MATALBを起動します。
MATLABウィンドウで現在のフォルダを$aldec/interfaces/matlabディレクトリに変更します。
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を起動して、その中でM-スクリプトを作成。
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シミュレーション実行による広範囲な数学データ解析を備えた強固なテストベンチ・シナリオを作成することができます。