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 Coverage)に渡されてコンパイルされる。

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

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

slcovmex('-sldv', ...
        '-output', 'sldvexSFunctionHandlingSFcn',...
        'sldvexSFunctionHandlingSource.c','sldvexSFunctionHandlingSFcn.c');
mex /tmp/Bdoc24a_2528353_1741016/tp3365f366_95eb_4bc0_bd7a_6ebe4e379b81/tp5a52d0b2_c39e_487e_8de1_d7182a72347e.c /tmp/Bdoc24a_2528353_1741016/tp3365f366_95eb_4bc0_bd7a_6ebe4e379b81/tp0fa2f42b_6f9d_4021_91c0_b7d52a4138dc.c -L/mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2528353/build/matlab/bin/glnxa64 -lmwsl_sfcn_cov_bridge -output sldvexSFunctionHandlingSFcn
Building with 'gcc'.
MEX completed successfully.
mex sldvexSFunctionHandlingSource.c /tmp/Bdoc24a_2528353_1741016/tp3365f366_95eb_4bc0_bd7a_6ebe4e379b81/sldvexSFunctionHandlingSFcn.c /tmp/Bdoc24a_2528353_1741016/tp3365f366_95eb_4bc0_bd7a_6ebe4e379b81/tp65b3b1d5_12d3_45c2_9f5d_2627ce22d300.c /tmp/Bdoc24a_2528353_1741016/tp3365f366_95eb_4bc0_bd7a_6ebe4e379b81/tp703f0f77_3d30_45f7_994c_95ad703f49f5.c -L/mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2528353/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 (Simulink Coverage)は、生成されたテスト ベクトルで 100% の条件カバレッジおよび判定カバレッジが達成されることを示すカバレッジ レポートを生成します。

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

クリーン アップ

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

close_system('sldvexSFunctionHandlingExample', 0);