古いリリースのモデルのモデル カバレッジの拡張
古いリリースで作成したモデルのモデル カバレッジを拡張するには、テスト生成ワークフロー、またはコード生成ワークフローを使用します。Simulink® Design Verifier™ の最新リリースの機能を活用して、モデルベース デザインのテスト ケースを生成できます。
これらのワークフローはモデル カバレッジを拡張します。
古いリリースのモデルのテスト ケースの生成によるモデル カバレッジの拡張
この例では、R2015b で作成されたモデルのモデル カバレッジのアップグレード方法を説明します。最新リリースで利用可能な、サポートされている S-Function のテスト生成を使用します。
モデル例 sldvexSFunctionHandlingExample には、ルックアップ テーブルのアルゴリズムを実装する手書きの S-Function が含まれています。手書きの S-Function は、ファイル sldvexSFunctionHandlingSFcn.c に用意されています。ルックアップ テーブルのユーザー ソース コードは、ファイル sldvexSFunctionHandlingSource.c に用意されています。
1.MATLAB R2015b で、sldvexSFunctionHandlingExample モデルを開きます。
open_system('sldvexSFunctionHandlingExample');
2.Simulink エディターで [実行] ボタンをクリックして、モデルをシミュレートし、カバレッジ レポートを生成します。Simulink キャンバスでのモデルのカバレッジ結果の表示 (Simulink Coverage)を参照してください。
シミュレーション後、カバレッジ レポートには sldvexSFunctionHandlingExample モデルがフル カバレッジを達成していないことが示されます。

3.MATLAB R2018b 以降のリリースで、sldvexSFunctionHandlingExample モデルを開きます。モデル例 sldvexSFunctionHandlingExample は R2015b 以降のリリースで利用可能であるため、テスト生成のワークフローに同じモデルを使用できます。
open_system('sldvexSFunctionHandlingExample');モデルに変更が加えられる可能性を回避するため、現在の作業フォルダーに古いリリースのモデルのコピーを作成した後、R2018b 以降のリリースでモデルを開きます。upgradeadvisor を使用して、現在のリリースで使用するモデルをアップグレードおよび改善できます。プログラムによるモデルの解析とアップグレードを参照してください。
4.Simulink Design Verifier と互換性をもたせ、テスト ケースの生成が可能になるよう、slcovmex (Simulink Coverage)を使用して S-Function をコンパイルします。詳細については、テスト ケース生成のための S-Function の構成を参照してください。
slcovmex('-sldv', ... '-output', 'sldvexSFunctionHandlingSFcn',... 'sldvexSFunctionHandlingSource.c','sldvexSFunctionHandlingSFcn.c');
mex /tmp/Bdoc25b_2988451_638779/tp033a381d_fb93_4af9_8361_7cd553c46112/tp3bdae2fc_2a3c_4d66_acb0_c4e4d8e4b0d6.c /tmp/Bdoc25b_2988451_638779/tp033a381d_fb93_4af9_8361_7cd553c46112/tpad97212a_23d2_4bbd_a3c5_aad42cc20d0a.c -L/mathworks/devel/bat/filer/batfs2566-0/Bdoc25b.2988451/build/runnable/matlab/bin/glnxa64 -lmwsl_sfcn_cov_bridge -output sldvexSFunctionHandlingSFcn Building with 'gcc'. MEX completed successfully. mex sldvexSFunctionHandlingSource.c /tmp/Bdoc25b_2988451_638779/tp033a381d_fb93_4af9_8361_7cd553c46112/sldvexSFunctionHandlingSFcn.c /tmp/Bdoc25b_2988451_638779/tp033a381d_fb93_4af9_8361_7cd553c46112/tpc159e0fa_447b_4371_9fca_345fd4551b8d.c /tmp/Bdoc25b_2988451_638779/tp033a381d_fb93_4af9_8361_7cd553c46112/tp5f571b8f_ac1b_4b32_8ff2_9a6ed07ee204.c -L/mathworks/devel/bat/filer/batfs2566-0/Bdoc25b.2988451/build/runnable/matlab/bin/glnxa64 -lmwsl_sfcn_cov_bridge -output sldvexSFunctionHandlingSFcn Building with 'gcc'. MEX completed successfully.
5.sldvexSFunctionHandlingExample モデルの opts オプションを作成します。
opts = sldvoptions; opts.Mode = 'TestGeneration'; opts.ModelCoverageObjectives = 'ConditionDecision'; opts.SaveHarnessModel = 'off'; opts.SaveReport = 'off'; opts.SFcnSupport = 'on';
6.指定された opts オプションを使用してテスト ケースを生成するために、sldvrun を使用してモデルを解析します。
[status, fileNames] = sldvrun('sldvexSFunctionHandlingExample', opts);12-Aug-2025 18:13:25
Checking compatibility for test generation: model 'sldvexSFunctionHandlingExample'
Compiling model...done
Building model representation...done
12-Aug-2025 18:13:49
'sldvexSFunctionHandlingExample' is compatible for test generation with Simulink Design Verifier.
Generating tests using model representation from 12-Aug-2025 18:13:49...
Generating output files:
12-Aug-2025 18:14:05
Results generation completed.
Data file:
/tmp/Bdoc25b_2988451_638779/tp4197d6c1/sldv-ex67693772/sldv_output/sldvexSFunctionHandlingExample/sldvexSFunctionHandlingExample_sldvdata.mat
解析後、Simulink Design Verifier データ ファイルが生成され、既定の場所 <current_folder>\sldv_output\sldvexSFunctionHandlingExample_sldvdata.mat. に格納されます。
7.R2015b でモデルを開きます。
open_system('sldvexSFunctionHandlingExample');8.R2018b 以降のリリースで作成した sldvData ファイルを読み込みます。
a. [Design Verifier] タブで、[以前の結果の読み込み] をクリックし、R2018b 以降のリリースで生成された sldvData MAT ファイルを参照します。
b. [開く] をクリックします。

9.[Simulink Design Verifier の結果の概要] ウィンドウで、[テストをシミュレートしてモデル カバレッジ レポートを生成] をクリックします。レポートには、sldvexSFunctionHandlingExample モデルが 100% カバレッジを達成したことが示されます。

詳細については、Simulink Design Verifier データ ファイルの管理を参照してください。
古いリリースからの生成コードを使用したモデル カバレッジの拡張
この例では、コード生成ワークフローを使用して、R2015b で作成されたモデルのモデル カバレッジをアップグレードする方法について説明します。
このワークフローには、Simulink Coder™ および Embedded Coder® がなければなりません。
モデル例 sldvCrossReleaseExample には、関係演算子の境界アルゴリズムを実装する手書きの S-Function が含まれています。手書きの S-Function は、ファイル rel_sfcn.c に用意されています。ユーザー ソース コードは、ファイル rel_comp.c に用意されています。
S-Function をインライン化するには、rel_sfcn.tlc ファイルを使用します。詳細については、TLC での S-Function のインライン化 (Embedded Coder)を参照してください。
ディレクトリから例のフォルダーに移動し、モデル例
sldvCrossReleaseExampleと S-Function ファイルrel_sfcn.c、rel_comp.c、およびrel_sfcn.tlcを現在の作業フォルダーにコピーします。ヘッダー ファイルrel_comp.hを現在の作業フォルダーにコピーします。R2015b のモデル例およびサポート ファイルを使用して、リリース間のコード統合 (Embedded Coder)ワークフローを行います。メモ
モデル例
sldvCrossReleaseExampleは、サンプル目的として作成されています。このモデル例を使用してコード生成のワークフローを実行するには、sldvCrossReleaseExampleモデルを 15b にエクスポートします。モデルをsldvCrossReleaseExample_15bとして、現在の作業フォルダーに保存します。詳細については、Export Model to Previous Version of Simulinkを参照してください。MATLAB R2015b で、現在の作業フォルダーから
sldvCrossReleaseExample_15bモデルを開きます。open_system('sldvCrossReleaseExample_15b');
関数
legacy_codeを使用して S-Function をコンパイルします。def = legacy_code('initialize'); def.SFunctionName = 'rel_sfcn'; def.OutputFcnSpec = 'uint8 y1 = relational_bound(uint8 u1)'; def.HeaderFiles = {'rel_comp.h'}; def.SourceFiles = {'rel_comp.c'}; def.IncPaths = {pwd}; def.SrcPaths = {pwd}; def.Options.supportCoverageAndDesignVerifier = true; legacy_code('sfcn_cmex_generate', def); legacy_code('compile', def);
Simulink エディターで [実行] ボタンをクリックして、モデルをシミュレートし、カバレッジ レポートを生成します。Simulink キャンバスでのモデルのカバレッジ結果の表示 (Simulink Coverage)を参照してください。
シミュレーション後、カバレッジ レポートには
sldvCrossReleaseExample_15bモデルが 50% カバレッジを達成したことが示されます。
Embedded Coder を使用してコードを生成するには、[アプリ] タブで [Embedded Coder] を選択します。詳細については、Embedded Coder を使用したコード生成 (Embedded Coder)を参照してください。
[C コード] タブで、[コード生成] をクリックします。
モデルはあらかじめ、次のようにコード生成が設定されています。
set_param(sldvCrossReleaseExample_15b,'SystemTargetFile','ert.tlc'); set_param(sldvCrossReleaseExample_15b,'PortableWordSizes','on'); set_param(sldvCrossReleaseExample_15b,'SupportNonFinite','off'); set_param(sldvCrossReleaseExample_15b,'GenCodeOnly','on'); set_param(sldvCrossReleaseExample_15b,'SolverMode','SingleTasking'); set_param(sldvCrossReleaseExample_15b,'ProdEqTarget','on');
モデルの C コードが生成され、ファイルが既定のフォルダーの場所
<current_folder>\sldvCrossReleaseExample_15b_ert_rtwに保存されます。モデルの構成セット
sldvCrossReleaseExample_15bを MAT ファイルに保存します。このConfigSetは、モデルの構成セットに設定するために、R2018b 以降のリリースで使用されます。config_set = getActiveConfigSet('sldvCrossReleaseExample_15b'); copiedConfig = config_set.copy; save('copiedConfig.mat','copiedConfig');
MATLAB R2018b 以降のリリースで、R2015b からエクスポートされたコンポーネントをインポートします。
コンポーネントを現在のリリースにインポートする前に、フォルダー
<current_folder>\sldvCrossReleaseExample_15b_ert_rtwにあるrtwtypes.hファイルの名前の変更または削除を行います。リリース間のインポート時、MATLAB は同じ名前のファイルを再生成しようとします。ファイルrtwtypes.hの削除または名前の変更を行わない場合、MATLAB はエラーを表示します。R2015b から生成されたコンポーネント コードをソフトウェアインザループ (SIL) ブロックとしてインポートします。
crossReleaseImport('sldvCrossReleaseExample_15b_ert_rtw',... 'sldvCrossReleaseExample_15b', 'SimulationMode','SIL');
関数
crossReleaseImportは、ソフトウェアインザループ (SIL) ブロックsldvCrossReleaseExample_15b_R2015b_silが含まれる無名のモデルを作成します。
sldvCrossReleaseExample_15b_R2015b_silブロックに Inport 端子と Outport 端子を追加し、モデルをsldvCrossReleaseExample_sil_18bとして保存します。
R2015b モデルと同様のモデル構成セットを適用します。
load('copiedConfig.mat'); attachConfigSet('sldvCrossReleaseExample_sil_18b', copiedConfig, true); setActiveConfigSet('sldvCrossReleaseExample_sil_18b', copiedConfig.Name);
シミュレーション モードを
Software-in-the-Loop (SIL)に設定します。モデルをシミュレートするには、ハーネス モデルで [すべて実行] ボタンをクリックします。Embedded Coder で生成されたコード用のテスト ケースを生成するには、[Design Verifier] タブで、[ターゲット] 、 [最上位モデルとして生成されたコード] を選択し、[テストの生成] をクリックします。詳細については、Embedded Coder で生成されたコードのテスト ケースの生成を参照してください。
Simulink Design Verifier の解析後、テスト ケースが生成され、
sldvDataが既定の場所のフォルダー<current_folder>\sldv_output\sldvCrossReleaseExample_sil_18bに保存されます。R2015b でモデルを開きます。
open_system('sldvCrossReleaseExample_15b');sldvDataのsldvData.ModelInfomation.Nameフィールドを、古いリリースのモデルと同じ名前に更新します。たとえば、sldvCrossReleaseExample_15b.slxです。R2018b 以降のリリースで作成した
sldvDataを使用してハーネス モデルを作成します。このデータは、Embedded Coder の生成コードから生成されたテスト ケースで構成されます。dataFileで、sldvCrossReleaseExample_sil_18bモデルに対して生成されたsldvDataの場所を入力します。sldvmakeharness('sldvCrossReleaseExample_15b.slx','dataFile')
すべてのテスト ケースを使用してモデルをシミュレートするには、ハーネス モデルで [すべて実行 (カバレッジ)] ボタンをクリックします。
すべてのテスト ケースがシミュレートされ、カバレッジ レポートが生成されます。レポートには、
sldvCrossReleaseExample_15bモデルが 100% カバレッジを達成したことが示されます。

