Main Content

テスト ケース生成のための S-Function の構成

この例では、テスト ケース生成のために Simulink® Design Verifier™ と互換性をもつよう S-Function をコンパイルする方法を説明します。Simulink Design Verifier は次の S-Function をサポートします。

  • def.Options.supportCoverageAndDesignVerifiertrue に設定して、レガシ コード ツールで生成される。

  • [S-Function Builder] ダイアログ ボックスの [ビルド情報] タブで [Design Verifier のサポートを有効にする] を選択することで、S-Function Builder によって生成される。または

  • オプション -sldv が関数 slcovmex に渡されてコンパイルされる。

Simulink® Design Verifier™ と互換性をもつよう S-Function をコンパイル

手書きの S-Function がファイル sldvexSFunctionHandlingSFcn.c に用意されています。また、ルックアップ テーブルのユーザー ソース コードが sldvexSFunctionHandlingSource.c ファイルに用意されています。関数 slcovmex を呼び出して C-MEX S-Function をコンパイルし、Simulink® Design Verifier との互換性をもたせます。

slcovmex('-sldv', ...
        '-output', 'sldvexSFunctionHandlingSFcn',...
        ['-I', fullfile(matlabroot, 'toolbox', 'sldv', 'sldvdemos', 'src')], ...
        fullfile(matlabroot, 'toolbox', 'sldv', 'sldvdemos', 'src', 'sldvexSFunctionHandlingSource.c'),...
        fullfile(matlabroot, 'toolbox', 'sldv', 'sldvdemos', 'src', 'sldvexSFunctionHandlingSFcn.c') ...
        );
mex -I/mathworks/devel/bat/Bdoc22a/build/matlab/toolbox/sldv/sldvdemos/src /tmp/Bdoc22a_1864858_161572/tp11784041_5752_4b3a_8a45_301b90e51af5/tpd2c240f9_9957_42b2_92c5_ce40d4e5eb75.c /tmp/Bdoc22a_1864858_161572/tp11784041_5752_4b3a_8a45_301b90e51af5/tp85f76360_355e_46b1_bfcd_a0a4fe3bf57d.c -L/mathworks/devel/bat/Bdoc22a/build/matlab/bin/glnxa64 -lmwsl_sfcn_cov_bridge -output sldvexSFunctionHandlingSFcn
Building with 'gcc'.
MEX completed successfully.
mex -I/mathworks/devel/bat/Bdoc22a/build/matlab/toolbox/sldv/sldvdemos/src /mathworks/devel/bat/Bdoc22a/build/matlab/toolbox/sldv/sldvdemos/src/sldvexSFunctionHandlingSource.c /tmp/Bdoc22a_1864858_161572/tp11784041_5752_4b3a_8a45_301b90e51af5/sldvexSFunctionHandlingSFcn.c /tmp/Bdoc22a_1864858_161572/tp11784041_5752_4b3a_8a45_301b90e51af5/tpe775cb4e_6233_4e9a_a25f_8691f8429166.c /tmp/Bdoc22a_1864858_161572/tp11784041_5752_4b3a_8a45_301b90e51af5/tp8f6efd5d_1626_4272_a077_849570fa160d.c -L/mathworks/devel/bat/Bdoc22a/build/matlab/bin/glnxa64 -lmwsl_sfcn_cov_bridge -output sldvexSFunctionHandlingSFcn
Building with 'gcc'.
MEX completed successfully.

テスト スイートの作成

モデル例 sldvexSFunctionHandlingExample の例には、ルックアップ テーブルのアルゴリズムを実装する手書きの S-Function が含まれています。S-Function ブロックは、1 番目の出力端子で内挿値を返し、2 番目の出力端子で内挿のステータスを返します。2 番目の出力端子は、飽和の下限が発生した場合は値 -1 を、飽和の上限が発生した場合は 1 を、それ以外は 0 を返します。sldvexSFunctionHandlingExample モデルを開き、テスト生成での S-Function のサポートを有効にして解析オプションを構成します。解析を実行すると、Simulink® Design Verifier™ はすべてのカバレッジ オブジェクティブを達成するテスト スイートを返します。

open_system('sldvexSFunctionHandlingExample');

opts = sldvoptions;
opts.Mode = 'TestGeneration';
opts.ModelCoverageObjectives = 'ConditionDecision';
opts.SaveHarnessModel = 'off';
opts.SaveReport = 'off';
opts.SFcnSupport = 'on';

[status, fileNames] = sldvrun('sldvexSFunctionHandlingExample', opts, true);

フル カバレッジの検証

関数 sldvruntest は、テスト スイートがすべてのモデル カバレッジを達成することを検証します。関数 cvhtml は、生成されたテスト ベクトルで 100% の条件カバレッジおよび判定カバレッジが達成されることを示すカバレッジ レポートを生成します。

[~, finalCov] = sldvruntest('sldvexSFunctionHandlingExample', fileNames.DataFile, [], true);
cvhtml('Final Coverage', finalCov);

クリーン アップ

デモを完了するには、すべてのモデルを閉じます。

close_system('sldvexSFunctionHandlingExample', 0);