ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

S-Function のカバレッジ

この例では、カバレッジとの互換性をもつように、レガシ コード ツールで生成される S-Function を構成する方法を示します。モデル カバレッジ ツールは、次のような S-Function をサポートします。

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

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

  • 関数 slcovmex でコンパイルされる。

モデル例を開く

モデル例 sldemo_lct_bus には、レガシ コード ツールで生成された S-Function が含まれています。この S-Function は、判定カバレッジ、条件カバレッジおよび MCDC カバレッジの対象となる構成をもっています。

sldemo_lct_bus を開く

モデル カバレッジとの互換性をもつように S-Function を構成

ファイル counterbus.h および counterbus.c のレガシ ソース コードは、sldemo_lct_bus/slCounter 内と同じアルゴリズムを実装します。レガシ コード ツールのデータ構造体は次のように定義されます。

load_system('sldemo_lct_bus');
open_system('sldemo_lct_bus/TestCounter');

def = legacy_code('initialize');
def.SFunctionName = 'sldemo_sfun_counterbus';
def.OutputFcnSpec = 'void counterbusFcn(COUNTERBUS u1[1], int32 u2, COUNTERBUS y1[1], int32 y2[1])';
def.HeaderFiles   = {'counterbus.h'};
def.SourceFiles   = {'counterbus.c'};
def.IncPaths      = {'sldemo_lct_src'};
def.SrcPaths      = {'sldemo_lct_src'};

この S-Function にモデル カバレッジとの互換性をもたせるには、次のオプションを有効にします。

def.Options.supportCoverage = true;

関数 legacy_code を使用して S-Function を生成し、コンパイルします。

legacy_code('generate_for_sim', def);
### Start Compiling sldemo_sfun_counterbus
mex -I/mathworks/devel/bat/Bdoc18b/build/matlab/toolbox/simulink/simdemos/simfeatures/sldemo_lct_src -I/tmp/Bdoc18b_931964_4870/tp589fc730 -c /tmp/Bdoc18b_931964_4870/tp6ecb94e3_7924_4c62_b02e_b52e1b1f850f/counterbus.c -outdir /tmp/Bdoc18b_931964_4870/tp76fd654c_cbba_48ff_8a1f_a63cd08b6e5e
Building with 'gcc'.
MEX completed successfully.
mex -I/mathworks/devel/bat/Bdoc18b/build/matlab/toolbox/simulink/simdemos/simfeatures/sldemo_lct_src -I/tmp/Bdoc18b_931964_4870/tp589fc730 /tmp/Bdoc18b_931964_4870/tp6ecb94e3_7924_4c62_b02e_b52e1b1f850f/tpc0c9374e_2ed8_4265_a20b_1baefc91f899.c /tmp/Bdoc18b_931964_4870/tp76fd654c_cbba_48ff_8a1f_a63cd08b6e5e/counterbus.o -L/mathworks/devel/bat/Bdoc18b/build/matlab/bin/glnxa64 -lmwsl_sfcn_cov_bridge -output sldemo_sfun_counterbus
Building with 'gcc'.
MEX completed successfully.
mex -I/mathworks/devel/bat/Bdoc18b/build/matlab/toolbox/simulink/simdemos/simfeatures/sldemo_lct_src -I/tmp/Bdoc18b_931964_4870/tp589fc730 -c /mathworks/devel/bat/Bdoc18b/build/matlab/toolbox/simulink/simdemos/simfeatures/sldemo_lct_src/counterbus.c -outdir /tmp/Bdoc18b_931964_4870/tp76fd654c_cbba_48ff_8a1f_a63cd08b6e5e
Building with 'gcc'.
MEX completed successfully.
mex -I/mathworks/devel/bat/Bdoc18b/build/matlab/toolbox/simulink/simdemos/simfeatures/sldemo_lct_src -I/tmp/Bdoc18b_931964_4870/tp589fc730 /tmp/Bdoc18b_931964_4870/tp6ecb94e3_7924_4c62_b02e_b52e1b1f850f/sldemo_sfun_counterbus.c /tmp/Bdoc18b_931964_4870/tp6ecb94e3_7924_4c62_b02e_b52e1b1f850f/tpaf023848_8c4b_4142_8d8c_bee5a8512982.c /tmp/Bdoc18b_931964_4870/tp6ecb94e3_7924_4c62_b02e_b52e1b1f850f/tp8378ea4d_10e7_4246_bff9_eefbc013e942.c /tmp/Bdoc18b_931964_4870/tp76fd654c_cbba_48ff_8a1f_a63cd08b6e5e/counterbus.o -L/mathworks/devel/bat/Bdoc18b/build/matlab/bin/glnxa64 -lmwsl_sfcn_cov_bridge -output sldemo_sfun_counterbus
Building with 'gcc'.
MEX completed successfully.
### Finish Compiling sldemo_sfun_counterbus
### Exit

S-Function カバレッジの有効化

S-Function のカバレッジ収集を有効にするには、[コンフィギュレーション パラメーター] ダイアログ ボックスの [カバレッジ] ペインで [C/C++ S-Function] を選択します。または、コマンド ラインでオプションを設定します。

set_param('sldemo_lct_bus',...
          'CovMetricSettings', 'dcme',...
          'RecordCoverage', 'on',...
          'CovHtmlReporting', 'on',...
          'CovSFcnEnable', 'on'...
          );

シミュレーションの実行とカバレッジ レポートの生成

カバレッジ データ収集を有効にすると、モデルをシミュレートしたときにカバレッジ情報が自動的に記録されます。シミュレーションの最後に、モデル カバレッジ ツールによってカバレッジ情報の HTML レポートが生成され、組み込みの MATLAB® Web ブラウザーに表示されます。

sim('sldemo_lct_bus', 'StopTime', '20');

カバレッジ データ オブジェクトからの情報の抽出

cvdata オブジェクトを使用すると、他のサポートされているモデル要素と同様に、S-Function のカバレッジ情報を抽出できます。たとえば、decisioninfo コマンドは、ブロック パスまたはブロック ハンドルからカバレッジ情報を抽出します。出力は、単一のモデル オブジェクトの達成された結果と合計結果を含むベクトルです。

cov = decisioninfo(covdata, 'sldemo_lct_bus/TestCounter/sldemo_sfun_counterbus')
cov =

     3     4

次に、このカバレッジ情報を使用して、カバーされているモデル オブジェクトの割合を計算します。

percentCov = 100 * (cov(1)/cov(2))
percentCov =

    75

S-Function カバレッジには、decisioninfoconditioninfo および mcdcinfo などのモデル カバレッジ コマンドとの完全な互換性があります。

クリーン アップ

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

close_system('sldemo_lct_bus',0)