« Prev | Next » MATLAB®からRiviera-PROをコントロール はじめに 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に転送可能。 協調シミュレーションのための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からのシミュレーション実行を行うために従う基本的な手順は以下になります。 デザイン固有のインターフェースを実装していることを必ず確認。 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シミュレーション実行による広範囲な数学データ解析を備えた強固なテストベンチ・シナリオを作成することができます。 Previous article Next article