主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

コシミュレーションモデルの生成

要件

コシミュレーションモデルとは

コシミュレーションモデルは,仿金宝app真软件®シミュレーションおよび設計のHDLシミュレーターとのコシミュレーション用に構成され自動的に生成された仿真软金宝app件モデルです。高密度脂蛋白编码器™はテストベンチ生成プロセスの一部としてコシミュレーションモデルの自動生成をサポートします。

コシミュレーションモデルの内容は次のとおりです。

  • 金宝app仿真软件サブシステムで実現された,設計の動作モデル。

  • 高密度脂蛋白校验を使用して設計をコシミュレートするために構成された,対応する高密度脂蛋白Cosimulationブロック。高密度脂蛋白编码器は,高密度脂蛋白Cosimulationブロックを导师图形®ModelSim®または节奏敏锐的®のいずれかで使用できるように構成します。

  • 指定したテストベンチのスティミュラスから算出されたテスト入力データ。

  • DUTおよび高密度脂蛋白cosimulationの出力およびこれらの信号間のエラーの観察と比較ができる范围ブロック。

  • DUTからのスティミュラスと応答信号を取得して,それらを使用してコシミュレーションを駆動するGotoブロックおよび从ブロック。

  • 元のDUTの出力とコシミュレーションの出力との差異をレポートする比較/アサーションメカニズム。

モデルの生成に加えて,コシミュレーションツールを起動して構成するTclスクリプトが生成されます。スクリプトファイル内のコメントは,コシミュレーションツール用に本製品によって定義されたクロック,リセットおよびその他のタイミング信号の情報を記述します。

GUIからのコシミュレーションモデルの生成

この例では,コシミュレーションモデルを生成するプロセスを説明します。モデル例hdl_cosim_demo1は簡単なMAC(積和演算)アルゴリズムを実装します。MATLAB®コマンドラインでこのモデル名を入力してモデルを開きます。

hdl_cosim_demo1

次の図は最上位モデルを示しています。

DUTはMACサブシステムです。

コシミュレーションモデルの生成はテストベンチの生成時に実行されます。ベストプラクティスとして,以下のようにテストベンチを生成する前にHDLコードを生成します。

  1. [コンフィギュレーションパラメーター]ダイアログボックスの(高密度脂蛋白コード生成)ペインでコード生成用にDUTを選択します。この場合はhdl_cosim_demo1 / MACです。

  2. [適用]をクリックします。

  3. [生成]をクリックします。次のような進行状況を示すメッセージが表示されます。

    ###使用HDL代码生成控制语句### HDL Check完成0错误,0警告和0消息。###在hdl_cosim_demo1/MAC上工作,作为hdlsrc\MAC。vhd代码生成完成。

次に,コシミュレーションモデルの生成を含めるようテストベンチオプションを構成します。

  1. [コンフィギュレーションパラメーター]ダイアログボックスの(高密度脂蛋白コード生成)[テストベンチ]ペインを選択します。

  2. [コシミュレーションモデル]チェックボックスをオンにします。次にプルダウンメニューで[シミュレーションツール]を選択します。

  3. 必要なテストベンチオプションを構成します。生成されたスクリプトファイルにオプション設定が記録されます(コシミュレーションスクリプトファイルを参照)。

  4. [適用]をクリックします。

次に,テストベンチコードとコシミュレーションモデルを生成します。

  1. [テストベンチ]ペインの下部で[テストベンチを生成)をクリックします。高密度脂蛋白编码器に次のような進行状況を示すメッセージが表示されます。

    ###生成新的协同仿真模型:gm_hdl_cosim_demo1_mq0。mdl ###生成新的协同仿真tcl脚本:hdlsrc/gm_hdl_cosim_demo1_mq0_tcl。协同仿真模型生成完成。###生成测试台:hdlsrc\MAC_tb。vhd ###请稍候…### HDL测试平台生成完成。

    テストベンチの生成が完了すると,生成されたコシミュレートモデルが開きます。次の図は生成されたモデルを示しています。

  2. 生成されたモデルを保存します。生成されたモデルは,保存しない限りメモリにのみに存在します。

コード生成メッセージに示されるように,通常のHDLテストベンチファイルに加えて以下のファイルが生成されます。

  • コシミュレーションモデル(gm_hdl_cosim_demo1_mq

  • TCLコシミュレーションスクリプトおよびコシミュレーションモデル(gm_hdl_cosim_demo1_mq_tcl.m)の設定に関する情報を含むファイル

生成されたコシミュレーションモデルおよびスクリプトの命名規則で説明されているように,生成されたファイルの名前はモデル名から派生されます。

次の節生成されたモデルの構造ではモデルの機能を説明しています。コシミュレーションを実行する前に、これらの機能を理解しておいてください。

生成されたモデルの構造

生成されたモデルに配置されたコントロールを使用してコシミュレーションを設定して起動できます。この節では,MACサブシステムの例から生成されたモデルについて説明します。

シミュレーションパス

モデルは2つの並列信号のパスで構成されています。モデルウィンドウの上半分に位置する“シミュレーションパス”は元のDUTとほぼ同一です。シミュレーションパスの目的は通常の Simulink シミュレーションを実行し、コシミュレーションの結果と比較するための基準信号を提供することです。次の図にシミュレーション パスを示します。

ToCosimSrcおよびToCosimSinkとラベル付けされた2つのサブシステムはシミュレーションパスのパフォーマンスに影響を与えません。これらのサブシステムの目的は,DUTのスティミュラスと応答信号を取得して高密度脂蛋白cosimulationブロックとのルートを確立することです(シミュレーションとコシミュレーションパス間の信号の経路指定を参照してください)。

コシミュレーションパス

モデルウィンドウの下半分に位置する“コシミュレーションパス”には,生成された高密度脂蛋白Cosimulationブロックが含まれます。次の図にコシミュレーションパスを示します。

FromCosimSrcサブシステムは,DUTを駆動する入力信号と同じ入力信号を受信します。gm_hdl_cosim_demo1_mq0モデル内で,サブシステムは高密度脂蛋白Cosimulationブロックにそのまま入力を渡します。この段階で,一部のデータ型の信号はさらに処理が必要です(シミュレーションとコシミュレーションパス間の信号の経路指定を参照してください)。

コシミュレーションパスの最後にある比较サブシステムは,コシミュレーションの出力をシミュレーションパスによって生成された基準出力と比較します。この比較で誤差が検出されると,比较サブシステム内の断言ブロックによって警告メッセージが表示されます。必要であれば,アサーションを無効にし,比较サブシステムの他の処理を制御することができます。詳細は,アサーションおよびスコープの表示の制御を参照してください。

高密度脂蛋白编码器では高密度脂蛋白Cosimulationブロックに,DUTのコンパイルされたI / Oインターフェイスが事前設定されます。次の図は,Mac_mq高密度脂蛋白Cosimulationブロックの(港口)ペインを示しています。

高密度脂蛋白编码器によって,(完整的高密度脂蛋白的名字)(样品时间)(数据类型)およびモデルに必要な他のフィールドが設定されます。また,(时间表)ペインおよび(Tcl)ペインの他の高密度脂蛋白Cosimulationブロックパラメーターも構成されます。

ヒント

高密度脂蛋白编码器では,生成された高密度脂蛋白Cosimulationブロックが(共有メモリ]接続メソッド用に構成されます。

启动模拟器コントロール

启动模拟器コントロールをダブルクリックすると,選択されたコシミュレーションツールが起動され,スタートアップコマンドがツールへ渡されます。启动模拟器アイコンに,次の図に示すスタートアップコマンドが表示されます。

启动模拟器アイコンをダブルクリックしたときに実行されるコマンドによりコシミュレーションツールが起動され設定されますが,コシミュレーションの実行は行われません。生成されたモデルでコシミュレーションを実行する方法は,コシミュレーションの起動で説明されています。

シミュレーションとコシミュレーションパス間の信号の経路指定

生成されたモデルは,Gotoブロックおよび从ブロックを使用してシミュレーションとコシミュレーションパス間の信号の経路を指定します。たとえば,ToCosimSrcサブシステム内のGotoブロックは各DUTの入力信号を対応するFromCosimSrc从ブサブシステム内のロックにルートします。次の図は,各サブシステム内の Goto ブロックおよび From ブロックを示しています。

上の図は簡単なスカラー入力を示しています。複雑なベクトルデータ型の信号はさらに処理が必要です。詳細は,生成されたコシミュレーションモデル内の複素信号およびベクトル信号を参照してください。

アサーションおよびスコープの表示の制御

比较サブシステムにより,スコープの信号およびアサーションからの警告メッセージの表示を制御できます。次の図はgm_hdl_cosim_demo1_mq0モデルの比较サブシステムを示しています。

DUTの各出力について,アサーションチェックサブシステム(Assert_OutN)が生成されます。このサブシステムは元のDUTの出力(dut裁判)とそれに対応するコシミュレーションの出力(cosim)の差分(犯错)を算出します。サブシステムはこの比較結果を断言ブロックへルートします。比較結果がゼロではない場合,断言ブロックは誤差をレポートします。

次の図はgm_hdl_cosim_demo1_mq0モデルのAssert_Out1サブシステムを示しています。

このサブシステムは,モデルの最上位での表示のため,dut裁判cosimおよび犯错信号も范围ブロックにルートします。

既定の設定では,生成されたコシミュレーションモデルはすべてのアサーションとすべての范围ブロックの表示を有効にします。アサーションを無効にしたり,范围ブロックを非表示にするには,比较サブシステムのボタンを使用します。

ヒント

アサーションメッセージは警告であり,シミュレーションは停止しません。

コシミュレーションの起動

生成されたモデルでコシミュレーションを実行するには,次の手順に従います。

  1. 比较サブシステムをダブルクリックして范围ブロックとアサーションの設定を構成します。

    コシミュレーションの開始前に范围ブロックの表示またはアサーションの警告を無効にする場合は,次の図に示す比较サブシステムのボタンを使用します。

  2. 启动模拟器コントロールをダブルクリックします。

    启动模拟器コントロールによってHDLシミュレーター(この場合,导师图形ModelSimで使用するHDL校验)が起動されます。

    これにより,高密度脂蛋白シミュレーターによってスタートアップスクリプトが実行されます。この例では,スタートアップスクリプトはgm_hdl_cosim_demo1_mq0_tcl.m内に配置されたTclコマンドで構成されています。高密度脂蛋白シミュレーターによってスタートアップスクリプトの実行が完了すると,次のようなメッセージが表示されます。

    #准备好联合模拟…
  3. 生成されたモデルの仿金宝app真软件エディター内でシミュレーションを開始します。

    コシミュレーションの実行中,高密度脂蛋白シミュレーターは次のようなメッセージを表示します。

    #运行Simulin金宝appk协同仿真模块。#芯片名称:——> hdl_cosim_demo1/MAC #目标语言:——> vhdl #目标目录:——> hdlsrc # Fri Jun 05 4:26:34 PM Eastern Daylight Time 2009 #模拟停止请求外部接口。#做

    范围ブロックの表示を有効にしている場合,コシミュレーションの最後に比較スコープに次の信号が表示されます。

    • cosim:高密度脂蛋白Cosimulationブロックによる結果の出力信号。

    • dut裁判: DUTからの基準出力信号。

    • 犯错2:これらのつの出力の差分(誤差)。

    次の図はこれらの信号を示しています。

コシミュレーションスクリプトファイル

生成されたスクリプトファイルには以下の2つのセクションがあります。

  • コシミュレーションに関連するモデル設定を記述するコメントセクション。

  • TCLコードの複数の行を変数に格納する関数tclCmds。コシミュレーションを起動すると,コシミュレーションツールによってこれらのコマンドが実行されます。

ヘッダーコメントセクション

以下のリストは,hdl_cosim_demo1モデル用に生成されたスクリプトファイルのコメントセクションを示しています。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 自动生成cosimulation tclstart脚本  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 源模型:hdl_cosim_demo1。mdl %生成的模型:gm_hdl_cosim_demo1。mdl %协同仿真模型:gm_hdl_cosim_demo1_mq。mdl % %源DUT: gm_hdl_cosim_demo1_mq/MAC % co - simulation DUT: gm_hdl_cosim_demo1_mq/MAC_mq % %文件位置:hdlsrc/gm_hdl_cosim_demo1_mq_tcl. xml . xml . xmlm %创建:2009-06-16 10:51:01 % %由MATLAB 7.9和1.6 HDL编码器  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ClockName: clk % ResetName:重置% ClockEnableName: clk_enable % % ClockLowTime: 5 ns % ClockHighTime:5 ns % ClockPeriod: 10 ns % % ResetLength: 20 ns % ClockEnableDelay: 10 ns % HoldTime: 2 ns  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ModelBaseSampleTime: 1% OverClockFactor:1  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 的映射DutBaseSampleTime ClockPeriod % % N = (ClockPeriod / DutBaseSampleTime) * OverClockFactor % 1秒10 ns模型对应的高密度脂蛋白(金宝appN = 10) % %模拟器%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ResetHighAt:(ClockLowTime + ResetLength + HoldTime) % ResetRiseEdge: 27 ns % ResetType:异步% ResetAssertedLevel: 1% % ClockEnableHighAt:(ClockLowTime + ResetLength + ClockEnableDelay + HoldTime) % ClockEnableRiseEdge: 37 ns  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

コメントセクションは以下のサブセクションで構成されています。

  • ヘッダーコメント:このセクションは,生成されたモデルとそのソースおよび生成されたDUTとそのソースのファイル名を記述します。

  • テストベンチの設定:このセクションは,コシミュレーションモデルの生成に影響するmakehdltbプロパティ値を記述します。生成されたTclスクリプトは,これらの値を使用してコシミュレーションツールを初期化します。

  • サンプル時間情報:次の2つのセクションは,モデルの基本サンプル時間とオーバーサンプリング係数を記述します。高密度脂蛋白编码器はModelBaseSampleTimeOverClockFactorを使用して,モデルのクロック周期をHDLコシミュレーションのクロック周期にマップします。

  • クロック,クロックイネーブルおよびリセットの波形:このセクションは,clkclk_enableおよび重置信号のデューティ比の計算を記述します。

Tclコマンドセクション

以下のリストは,hdl_cosim_demo1モデル用に生成されたスクリプトファイルのTclコマンドセクションを示しています。

函数tclCmds = gm_hdl_cosim_demo1_mq_tcl%编译生成的代码'vsimulink work.MAC',…金宝app%启动联合仿真'add wave /MAC/clk',…为芯片输入信号添加wave命令' Add wave /MAC/reset',…“添加/ MAC / clk_enable浪潮”,……“添加波/ MAC /三机一体”,……“添加波/ MAC / In2”,……“添加/ MAC / ce_out浪潮”,……%为芯片输出信号添加wave命令' Add wave /MAC/Out1',…UserTimeUnit ns,这……%设置模拟时间单位'puts ',…“准备好进行联合模拟……” }; end

生成されたコシミュレーションモデル内の複素信号およびベクトル信号

複素数またはベクトルデータ型の入力信号は,コシミュレーションパスに追加の要素を挿入する必要があります。この節では,これらの要素を説明します。

複素信号

生成されたコシミュレーションモデルは複素数入力を実数部と虚数部に自動的に分けます。次の図は2つの複素数入力信号を受信するFromCosimSrcサブシステムを示しています。このサブシステムは,入力をサブシステムの出力に渡す前に実数部と虚数部に分けます。

このモデルは,コシミュレーションパス全体に渡って,実数部と虚数部の分離を維持します。比较サブシステムは,信号要素の比較とスコープ表示を,実数部と虚数部でそれぞれ実行します。

ベクトル信号

生成されたコシミュレーションモデルはベクトル入力を平坦化します。次の図は,次元2のつのベクトル入力信号を受信するFromCosimSrcサブシステムを示しています。このサブシステムは,入力をサブシステムの出力に渡す前にスカラーに平坦化します。

コマンドラインからのコシミュレーションモデルの生成

コマンドラインからコシミュレーションモデルを生成するには,GenerateCosimModelプロパティを関数makehdltbに渡します。GenerateCosimModelは次のいずれか1つのプロパティ値を取ります。

  • “ModelSim”:导师图形ModelSimをHDL校验で使用するために構成されたコシミュレーションモデルを生成します。

  • “尖锐”:节奏门齿をHDL校验で使用するために構成されたコシミュレーションモデルを生成します。

以下のコマンドでは,makehdltbは导师图形ModelSimをHDL校验で使用するために構成されたコシミュレーションモデルを生成します。

makehdltb(“hdl_cosim_demo1 / MAC”、“GenerateCosimModel”,“ModelSim”);

生成されたコシミュレーションモデルおよびスクリプトの命名規則

生成されたコシミュレーションモデルの命名規則は以下のとおりです。

前缀_modelname_toolid_后缀,ここで,

  • 前缀は,文字列通用汽车です。

  • modelnameは,生成されたモデルの名前です。

  • toolidは,(使用するコシミュレーションモデル:]で選択されたHDLシミュレーターを示す識別子です。オプションを選択します。有効なtoolid文字列は“mq”および“在”です。

  • 后缀は生成されたモデルごとに一意の名前を付けるための整数です。后缀は,そのモデルでテストベンチを生成するたびにインクリメントされます。たとえば,元のモデルの名前が测试の場合,連続して生成されるコシミュレーションモデルの名前はgm_test_toolid_0gm_test_toolid_1などのようになります。

生成されたコシミュレーションスクリプトの命名規則は,ファイル名の拡張子が00であることを除き,モデルの命名規則と同じです。

コシミュレーションモデル生成の制限

コシミュレーションモデルの生成用にモデルを構成する場合,以下の制限に注意してください。

  • シミュレーションパス内で,DUTへのソースブロックのサンプル時間を明示的に指定してください。ソースブロックの既定のサンプル時間(-1)の使用は,生成されたモデルのコシミュレーションパスでサンプル時間の伝播の問題を起こす場合があります。

  • コシミュレーションモデルの生成では,連続サンプル時間はサポートされていません。シミュレーションパス内のソースブロックには,サンプル時間0またはを使用しないでください。

  • [クロックの入力)[複数]に設定すると,高密度脂蛋白编码器ではコシミュレーションモデルの生成はサポートされません。

  • 組み合わせ出力パス(生成されたコード内にレジスタがない場合に発生)は,コシミュレーション内で1周期の余分なレイテンシが発生します。シミュレーションとコシミュレーションとの出力の比較における不一致を回避するため,高密度脂蛋白Cosimulationブロックの(港口)ペインにある(直達を許可)オプションが自動的に選択されます。

    代わりに,出力パイプラインを指定することでレイテンシを回避することもできます(OutputPipelineを参照してください)。これにより,コード生成中に出力が完全に登録されます。

  • 高密度脂蛋白Cosimulationブロックでは双データ型はサポートしていません。高密度脂蛋白コードおよびコシミュレーションモデルを生成する場合は,シミュレーションパス内での双データ型の使用は避けてください。