メインコンテンツ

このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。

cosimulationConfiguration

HDLコシミュレーションワークフローを構成する

R2022b 以降

説明

cosimulationConfiguration オブジェクトは、指定された HDL モジュールの HDL Cosimulation ブロックまたは System object™ の作成を制御します。

作成

説明

cosimObj = cosimulationConfiguration(HDLSimulator,SubWorkflow,HDLTopLevelName) は、指定された HDLSimulatorSubWorkflow、および HDLTopLevelName 値を持つ cosimulationConfiguration オブジェクトを作成します。

このワークフローは、HDL Cosimulation ブロックまたは hdlverifier.HDLCosimulation System object を作成するために コシミュレーション ウィザード を使用する代わりに使用するコマンドラインです。

cosimObj = cosimulationConfiguration(MATfile) は、コシミュレーション ウィザード またはコマンドライン ワークフローの以前の実行の結果に基づいて cosimulationConfiguration オブジェクトを作成します。

プロパティ

すべて展開する

ワークフロー

コシミュレーションに使用する HDL シミュレータ。'ModelSim''Xcelium''Vivado Simulator'、または 'VCS' として指定されます。

実行するコシミュレーションの種類:

  • 'Simulink' — Simulink®コシミュレーション用の HDL Cosimulation ブロックを作成するようにワークフローを構成します。

  • 'MATLAB System Object' — MATLAB®コシミュレーション用の hdlverifier.HDLCosimulation System object を作成するようにワークフローを構成します。

文字列または文字ベクトルとして指定された、最上位 HDL モジュールまたはエンティティの名前。

データ型: char | string

HDL コンパイル

文字列または cell 配列として指定された、コシミュレーションに必要な HDL ディレクトリ、ファイル、またはファイル。ファイルの 1 つに既知の HDL ファイル拡張子がない場合、ツールはそれを無視します。

例: './hdlsrc' には hdlsrc ディレクトリのすべてのファイルが含まれます

例: {'./hdlsrc','myModule.v'} には、hdlsrc ディレクトリのすべてのファイルと、myModule.v という名前のローカル ファイルが含まれます。

別のオプションとして、各ファイルの後にファイル タイプが続くリストを指定します。使用可能なファイルの種類はシミュレータによって異なります。

  • ModelSim™: Verilog (*.v、*.sv)、VHDL (*.vhd)、ModelSim macro file (*.do)

  • Xcelium™: Verilog (*.v、*.sv)、VHDL (*.vhd)、Shell script (*.sh)

  • Vivado®: Verilog (*.v、*.sv)、VHDL (*.vhd)、Vivado XCI file (*.xci)

  • VCS®: Verilog (*.v、*.sv)、VHDL (*.vhd)、PLI tab file (*.tab)

例: {'mytop.v','Verilog','submod.v','Verilog'}

データ型: char | string | cell array

文字列または文字ベクトルとして指定された HDL シミュレータの場所。システム PATH で指定された場所とは異なる場所でシミュレータを使用する場合は、このオプションを使用します。空の場合は、システム パスが使用されます。

データ型: char | string

VCS vhdlan ツールのフラグを指定します。

依存関係

このプロパティを有効にするには、HDLSimulatorVCS に設定します。

データ型: char | string

VCS vlogan ツールのフラグを指定します。

依存関係

このプロパティを有効にするには、HDLSimulatorVCS に設定します。

データ型: char | string

使用するコンパイル コマンド。文字列または文字ベクトルとして指定します。コンパイル コマンドは、選択したシミュレータと設計ファイル リストに基づいて自動的に生成されます。特定のライブラリにコンパイルする必要がある場合など、必要に応じて異なるコンパイル コマンドを指定できます。

ヒント

ワークフローを 1 回実行して cosimWizard_<TOP>.mat ファイルを生成すると便利です。その後、コンパイル コマンドを変更してこのプロパティを設定できます。

依存関係

HDLSimulatorVCS に設定されている場合、このプロパティは無効になります。

データ型: char | string

HDLパラメーターまたはジェネリックのデフォルト以外の値を指定するには、パラメーターファイルをインクルードします。ファイルを編集してデフォルト値を上書きし、パラメーター値を有効にするために runWorkflow 関数を実行します。次のいずれかのオプションを入力できます。

  • ''parameter_HDLTopLevelName.cfg という名前のデフォルトのパラメーターファイルを生成します。ここで、HDLTopLevelName は最上位 HDL モジュールまたはエンティティの名前です。ファイルには各 HDLパラメーターの行が含まれており、すべての行がコメント化されています。runWorkflow 関数を実行すると、関数はデフォルトのファイルを生成し、ワークフロー全体にわたって実行を続けます。

  • GENERATE_AND_EDIT — デフォルトのファイル名 parameter_HDLTopLevelName.cfg で新しいパラメーターファイルを生成します。runWorkflow 関数を実行すると、パラメーター設定ファイルが生成された後に実行が停止します。ファイルを編集して、関連するパラメーターを含む行のコメントを解除し、その値を変更してデフォルト値を上書きします。次に、コマンドラインで runworkflow(c) を実行してワークフローを再起動します。

  • filename — ワークフローを実行するときに、指定されたパラメーターファイルを使用します。

このプロパティは、Xcelium または ModelSim とのコシミュレーションの場合にのみ有効です。

ヒント

Vivado シミュレータを使用するときに HDLパラメーターを設定するには、HDLCompilationCommand プロパティを使用します。詳細については、Vivado シミュレーションの HDL パラメータを設定するを参照してください。

データ型: char | string

文字列または文字ベクトルとして指定された、HDL 詳細化ツールのオプション。

依存関係

このプロパティは、VCS または Xcelium とのコシミュレーションに有効です。

データ型: char | string

文字列または文字ベクトルとして指定された、HDL シミュレーション ツールのオプション。

Xcelium のデフォルト値は、64 ビット アプリの使用を強制します。

ModelSim のデフォルト値には、HDL 時間精度を定義し、コシミュレーション用のポートの読み取り/書き込みアクセスを許可するために必要なフラグが含まれています。

依存関係

このプロパティは、Xcelium、VCS、または ModelSim とのコシミュレーションに有効です。

データ型: char | string

HDL タイミング

HDL シミュレーションの時間単位。このユニットは次の構成に影響します。

  • PreCosimulationRunTime プロパティ

  • SampleTime プロパティ (MATLAB System object サブワークフロー)

  • クロック端子の周期属性

  • リセットポートの持続属性

デフォルトの単位は、コンパイル時に HDL シミュレータに時間精度を問い合わせることによって (ModelSim、Xcelium)、または HDLTimePrecision プロパティによって (Vivado) 動的に決定されます。

メモ

出力ポートの SampleTime 属性は Simulink 時間を指定するため、秒単位になります。

シミュレーションを開始する前に HDL シミュレーターを実行する時間 (Simulink または MATLAB、HDLTimeUnit 単位)。この時間により、必要なリセットを実行し、クロック イネーブルをアサートできるようになります。

ワークフローを実行すると、クロック、リセット、およびコシミュレーション開始時間の視覚的なタイミング図がファイル hdlverifier_rstclk_waveform.jpg に作成されます。

最初のコシミュレーションで Simulink 時間と HDL 時間の比率を自動的に決定します。

Simulink サンプル時間は、タイミング スケールを使用して HDL シミュレーション時間に関連付けられます。多くの場合、基本的な Simulink サンプル時間が HDL で最速のクロック周期と等しくなるようにすることが最善の選択となります。このワークフローの実行時にはすべての入力サンプル時間がわかっていないため、すべてのサンプル時間がわかっている最初のシミュレーションでタイムスケールを自動的に決定するように選択できます。

依存関係

このプロパティを有効にするには、SubworkflowSimulink に設定します。

このプロパティは、VCS とのコシミュレーションでは使用できません。

スケール係数と時間単位として指定して、タイムスケールを手動で設定します: {factor, unit}

スケールは Simulink の 1 秒に相対的です。Simulink の 1 秒は HDL の {factor, unit} に相当します。係数は double で、単位は 'fs','ps','ns','us','ms' または 's' のいずれかです。デフォルト値は {1, 's'} です。つまり、Simulink 時間は HDL 時間と同じになります。

例: Simulinkのサンプル時間が1秒でHDLクロックが100MHzの場合、Simulinkの1秒がHDLの10nsに等しいタイムスケールを作成します: c.AutoTimeScale = false; c.TimeScale = {10, 'ns'};

依存関係

このプロパティを有効にするには、SubworkflowSimulink に設定します。

生成された System object の MATLAB サンプル時間を HDLTimeUnit 単位で設定します。すべての入力と出力は MATLAB で同じサンプル時間を共有し、step メソッドの各呼び出しでこの時間が経過します。

デフォルト値は、指定されたクロック周期と出力サンプル時間によって決まります。

依存関係

このプロパティを有効にするには、SubworkflowMATLAB System Object に設定します。

HDLシミュレータ接続

MATLAB または Simulink を HDL シミュレータに接続するためのチャネルタイプ。Socket または Shared Memory として指定されます。

  • Socket: MATLAB または Simulink と HDL シミュレータは、指定された TCP/IP ソケットを介して通信します。単一システムおよびネットワーク構成に使用できます。このオプションは最大のスケーラビリティを提供します。TCP/IP ソケット通信の詳細については、TCP/IPソケットポート を参照してください。

  • Shared memory: MATLAB または Simulink と HDL シミュレータは共有メモリを介して通信します。共有メモリ通信により最適なパフォーマンスが提供されます。

    HDLSimulatorVCS に設定されている場合、このオプションは使用できません。

ポートインターフェースのプロパティ

正規表現として指定された、ポートをクロックに自動割り当てするための式。MATLAB の正規表現の詳細については、正規表現 を参照してください。

例: 'clk_in$' は、「clk_in」で終わるすべてのポートをクロック端子として割り当てます。

リセットにポートを自動割り当てするための式。正規表現として指定します。MATLAB の正規表現の詳細については、正規表現 を参照してください。

例: c.ResetPortRegularExpression = [c.ResetPortRegularExpress 'rst[0-9]$'] は、リセット ポートのデフォルト式に加えて、"rst" と数値で終わるすべてのポートをリセット ポートとして割り当てます。

正規表現として指定された、ポートを未使用としてラベル付けする式。未使用として割り当てられたポートは、コシミュレーションの一部ではありません。未使用のポートはコシミュレーションインターフェイスに表示されず、駆動もサンプリングもされません。

仕様をクリアするには、信号名の後に空の引数を指定します。

MATLAB の正規表現の詳細については、正規表現 を参照してください。

例: 'clk_out$' は、「clk_out」で終わるポートが未使用であることを示します。

この プロパティ は読み取り専用です。

入力ポートがテーブルとして表示されます。portInterface オブジェクト関数を呼び出して、テーブルの全内容を表示します。

デフォルトは空のテーブルであり、ワークフローによって入力データ ポートが決定されます。クロック、リセット、未使用の正規表現に一致しない入力は、入力データ ポートと見なされます。

specifyInput オブジェクト関数を使用して、入力ポートを明示的に割り当てることができます。

この プロパティ は読み取り専用です。

出力ポートがテーブルとして表示されます。テーブルの各行には、出力ごとに次の情報が含まれています。

  • 出力ポート名

  • SampleTime

  • DataType

  • Signed

  • FractionLength

DUT 出力に加えて、テーブルには default_output_definition という名前の行が含まれており、出力に割り当てられたデフォルト値が含まれています。

specifyOutput オブジェクト関数を使用して、デフォルトの出力値を変更したり、出力ポートを手動で割り当てたりすることができます。

portInterface オブジェクト関数を呼び出して、テーブルの全内容を表示します。

この プロパティ は読み取り専用です。

クロック端子がテーブルとして表示されます。表の各行には、クロックごとに次の情報が含まれています。

  • クロック端子の名前

  • Edge

  • Period

DUT クロックに加えて、テーブルにはデフォルトのクロック定義用の default_clock_definition という追加の行が含まれています。

デフォルトのクロック値を変更したり、specifyClock オブジェクト関数を使用してクロックを手動で割り当てたりすることができます。

portInterface オブジェクト関数を呼び出して、テーブルの全内容を表示します。

この プロパティ は読み取り専用です。

リセット ポートがテーブルとして表示されます。表の各行には、リセットごとに次の情報が含まれています。

  • Name — リセットポートの名前

  • InitialValue — リセットの初期値

  • Duration — リセット信号の持続時間

DUT リセットに加えて、テーブルにはデフォルトのリセット定義用の default_reset_definition という追加の行が含まれています。

デフォルトのリセット値を変更したり、specifyReset オブジェクト関数を使用してリセットを手動で割り当てたりすることができます。

portInterface オブジェクト関数を呼び出して、テーブルの全内容を表示します。

この プロパティ は読み取り専用です。

未使用のポートがテーブルとして表示されます。portInterface オブジェクト関数を呼び出して、テーブルの全内容を表示します。

デフォルトは空のテーブルであり、ワークフローによって未使用のポートが決定されます。未使用の正規表現に一致するポートは未使用とみなされます。

specifyUnused オブジェクト関数を使用すると、ポートを未使用として明示的にラベル付けできます。

オブジェクト関数

portInterfaceポートの仕様の表示
runWorkflow協調シミュレーションワークフローを実行し、必要な成果物を生成する
specifyClockクロックポートをコシミュレーションブロックまたはSystem objectに割り当てる
specifyInputHDL入力ポートをコシミュレーションブロックまたはSystem objectに割り当てる
specifyOutputHDL出力ポートをコシミュレーションブロックまたはSystem objectに割り当てる
specifyResetリセットポートをコシミュレーションブロックまたはSystem objectに割り当てる
specifyUnusedHDLポートを未使用ポートとしてラベル付けする

すべて折りたたむ

この例では、コマンドライン インターフェイスを使用して Simulink ® でレイズド コサイン フィルターをコシミュレートする方法を示します。これは、Simulink HDL コシミュレーション入門 と同じワークフローに従ってコシミュレーション成果物を生成しますが、コシミュレーションウィザードの代わりにコマンド ラインを使用します。

コシミュレーションワークフローを構成する

コシミュレーション構成オブジェクトを作成します。

c =  cosimulationConfiguration('ModelSim','Simulink','rcosflt_rtl');

HDL ファイルを設定します。

c.HDLFiles = {'./rcosflt_rtl.v','Verilog'};

filter_out ポートを符号付き固定小数点データ型の出力として設定し、小数部の長さを 29 に設定します。

specifyOutput(c,'filter_out',Datatype='Fixedpoint',Signed=true,FractionLength=29)

クロックの周期を 20 ns に設定し、リセット期間を 15 ns に設定します。

specifyClock(c,'clk',Period=20)
specifyReset(c,'reset',Duration=15)

ポート テーブルを表示します。出力、クロック、リセット属性に対して行われた設定が反映されます。その他の設計ポートはデフォルトの属性を取得します。

portInterface(c);
----- Input Data Ports -----
  0×1 empty table

    Name
    ____



----- Output Data Ports -----
  2×5 table

                Name                 SampleTime       DataType       Signed    FractionLength
    _____________________________    __________    ______________    ______    ______________

    {'default_output_definition'}        1         {'Inherit'   }    false            0      
    {'filter_out'               }        1         {'Fixedpoint'}    true            29      


----- Clock Ports -----
  2×3 table

                Name                   Edge       Period
    ____________________________    __________    ______

    {'default_clock_definition'}    {'Rising'}      10  
    {'clk'                     }    {'Rising'}      20  


----- Reset Ports -----
  2×3 table

                Name                InitialValue    Duration
    ____________________________    ____________    ________

    {'default_reset_definition'}         1              8   
    {'reset'                   }         1             15   


----- Unused Ports -----
  0×1 empty table

    Name
    ____



HDL Cosimulation ブロックを生成する

ワークフローを実行して、HDL Cosimulation ブロックと付随するファイルを生成します。

runWorkflow(c);
-------------------- Step 1------------------
Select the type of cosimulation you want to do.If the HDL simulator executable you want to use is not on the system path in your environment you must specify its location.
-------------------- Step 2------------------
Add all VHDL, Verilog, and/or script files to be used in cosimulation to the following table. If the file type cannot be automatically detected or the detection result is incorrect, specify the correct file type in the table. If possible, we will determine the compilation order automatically using HDL simulator provided functionality. Then the HDL files can be added in any order.
-------------------- Step 3------------------
HDL Verifier has automatically generated the following HDL compilation commands. You can customize these commands with optional parameters as specified in the HDL simulator documentation but they are sufficient as shown to compile your HDL code for cosimulation. The HDL files will be compiled when you click Next.
Compiling HDL design. Please wait ...
###Compiling HDL design
Reading pref.tcl 
 
# 2024.2 
 
# do hdlverifier_compile_design.do 
# ** Warning: (vlib-34) Library already exists at "work". 
# Errors: 0, Warnings: 1 
# Loading project compile_project 
# . 
# QuestaSim-64 vlog 2024.2 Compiler 2024.05 May 20 2024 
# Start time: 14:09:05 on Aug 29,2025 
# vlog -work work -vopt C:/Users/user/OneDrive - MathWorks/Documents/MATLAB/ExampleManager/user.Bdoc25b.j2987061/hdlverifier-ex80882452/rcosflt_rtl.v  
# -- Compiling module rcosflt_rtl 
#  
# Top level modules: 
# 	rcosflt_rtl 
# End time: 14:09:07 on Aug 29,2025, Elapsed time: 0:00:02 
# Errors: 0, Warnings: 0 
# Compile of rcosflt_rtl.v was successful. 
# All compile dependencies have been resolved.vlog -work work -vopt -stats=none {C:/Users/user/OneDrive - MathWorks/Documents/MATLAB/ExampleManager/user.Bdoc25b.j2987061/hdlverifier-ex80882452/rcosflt_rtl.v} 
# reading E:/share/apps/HDLTools/ModelSim/questasim-2024.2/Windows/win64/../modelsim.ini 
# QuestaSim-64 vlog 2024.2 Compiler 2024.05 May 20 2024 
# -- Compiling module rcosflt_rtl 
#  
# Top level modules: 
# 	rcosflt_rtl 
...done
-------------------- Step 4------------------
Use 'Shared Memory' communication method if your firewall policy does not allow TCP/IP socket communication.
Elaborating and Loading HDL simulation image. Please wait ...
Waiting for HDL Simulator to startup ...
120 seconds to time-out ...
To stop this process, press Ctrl+C in MATLAB console.
Waiting for HDL Simulator to startup ...
119 seconds to time-out ...
To stop this process, press Ctrl+C in MATLAB console.
Waiting for HDL Simulator to startup ...
118 seconds to time-out ...
To stop this process, press Ctrl+C in MATLAB console.
Waiting for HDL Simulator to startup ...
117 seconds to time-out ...
To stop this process, press Ctrl+C in MATLAB console.
Waiting for HDL Simulator to startup ...
116 seconds to time-out ...
To stop this process, press Ctrl+C in MATLAB console.
Waiting for HDL Simulator to startup ...
115 seconds to time-out ...
To stop this process, press Ctrl+C in MATLAB console.
Waiting for HDL Simulator to startup ...
114 seconds to time-out ...
To stop this process, press Ctrl+C in MATLAB console.
Waiting for HDL Simulator to startup ...
113 seconds to time-out ...
To stop this process, press Ctrl+C in MATLAB console.
Waiting for HDL Simulator to startup ...
112 seconds to time-out ...
To stop this process, press Ctrl+C in MATLAB console.
...done
-------------------- Step 5------------------
Specify all input and output port types. Input signals that are identified as 'Clock' and 'Reset' signals will be forced in the HDL simulator through Tcl commands. You can specify the timing parameters for forced 'Clock' and 'Reset' signals in the next step. If you want to drive your HDL clock and reset signals with Simulink signals, mark them as 'Input'.
-------------------- Step 6------------------
Set the sample time and data type for each output port. You can specify the sample time as -1, which means that it will be inherited via back propagation in the Simulink model. Back propagation may fail in certain circumstances; click Help for details.
-------------------- Step 7------------------
Set clock and reset parameters here. The time in these tables refers to time in the HDL simulator.
Please wait while generating waveforms.
...done
-------------------- Step 8------------------
The diagram below shows the current settings for forced 'Clock' and 'Reset' signals. The red line represents the time in the HDL simulation at which MATLAB/Simulink will start (i.e. cosimulation will start). 

To change the MATLAB/Simulink start time relative to the HDL simulation time, enter the new start time below. To avoid a race condition, make sure the start time does not coincide with the active edge of any clock signal. You can do so by moving the start time or by changing the clock active edge in the previous step (click Back).
-------------------- Step 9------------------
When you click Finish, the Cosimulation Wizard performs the following actions:
 - Creates and opens a new Simulink model containing an HDL Cosimulation block configured to your specifications.
 - Generates the scripts to compile your HDL code and launch the HDL simulator according
 to the choices you made with this assistant.
 - (If you check the box below) Configures the HDL Cosimulation block to assist you in setting the timescale
 when you cosimulate the block for the first time.
 - (If you uncheck the box below) The timescale is set to the default setting of 1 Simulink second = 1 second in the HDL simulator
 or you may change it below.
Generating blocks ... Please wait.
Warning: The model name 'hdlverifier_wizard_rcosflt_rtl' is shadowing another
name in the MATLAB workspace or path. Type "which -all
hdlverifier_wizard_rcosflt_rtl" at the command line to find the other uses of
this name. You should change the name of the model to avoid problems. 
...done

ワークフローはステップを実行し、hdlverifier_wizard_rcosflt_rtl.slx という名前の Simulink モデルを生成します。このモデルには、HDL Cosimulation ブロックと、コンパイルおよび HDL シミュレータとの通信用の 2 つの追加ブロックが含まれています。

提供されたテストベンチ モデルを開きます。

open_system('rcosflt_tb.slx')

生成された HDL Cosimulation ブロックをキャンバスにドラッグし、その入力と出力をテストベンチに接続します。モデルは次の図のようになります。

コシミュレーションを実行してHDL設計を検証する

  1. Launch HDL Simulator というラベルの付いたブロックをダブルクリックして、HDL シミュレータを起動します。

  2. HDL シミュレータの準備ができたら、Simulink に戻り、シミュレーションを開始します。

  3. タイムスケールを決定します。AutoTimeScale プロパティはシミュレーションの開始時にタイムスケールを自動的に決定するように設定されているため、HDL Verifier はシミュレーションを開始する代わりに、タイムスケールの詳細グラフィカル インターフェイスを起動します。HDL シミュレータと Simulink はどちらも filter_in ポートと filter_out ポートを 1 秒ごとにサンプリングします。ただし、HDL シミュレータでのサンプル時間はクロック周期 (20 ns) と同じである必要があります。/rcosflt_rtl/clk の Simulink サンプル時間を 1 (秒) に変更し、Enter を押します。その後、ウィザードはテーブルを更新します。次の図は新しいタイムスケールを示しています。Simulink の 1 秒は、HDL シミュレータの 2e-008 秒に相当します。

4. OK をクリックして、[タイムスケールの詳細] ダイアログ ボックスを閉じます。Simulink シミュレーションを再起動し、テストベンチ モデルのスコープからの結果を確認します。

スコープには、レイズド コサイン フィルターへの入力の遅延バージョンとそのフィルターの出力の両方が表示されます。このフィルタの出力を直接サンプリングすると、シンボル間干渉は発生しません。

制限

  • MATLAB リリースで生成した .mat ファイルは、他のリリースでも動作することは保証されません。異なる MATLAB リリースの場合は、デザインに必要なカスタマイズを使用して コシミュレーション ウィザード ワークフローを完了まで実行し、.mat ファイルを再生成します。

バージョン履歴

R2022b で導入

すべて展開する