Main Content

コマンド ライン関数を使用したパラメーターの変更のサポート

この例では、Simulink® Design Verifier™ のコマンド ライン関数を使用して、さまざまなパラメーター値を含むテスト データを生成する方法を説明します。

調整可能なパラメーターをもつコントローラー モデル

このモデル例は、1 つのパラメーターをもつ単純なコントローラーです。定数パラメーター 'control_mode' は 1 または 2 の値をとります。このパラメーターは、フル カバレッジを達成するためテスト ケースで両方の値を受け入れなければなりません。この値により、スイッチ ブロックの出力と実行する有効なサブシステムが決まります。

open_system('sldvdemo_param_controller');

解析のパラメーター値の指定

Simulink Design Verifier はパラメーター値を識別しません。このツールは、テスト生成とプロパティ証明に対する解析の開始時にパラメーター値を使用します。異なる値で解析を繰り返すと、変化するパラメーター値を強制的にツールに組み込むことができます。

Design Verifier の最初の反復では、control_mode=1 を使用します。

control_mode = 1;

Simulink® Design Verifier™ のオプション

Simulink Design Verifier 関数は、関数 sldvoptions で作成されたオプション オブジェクトを使用して、解析および出力のすべてを制御します。

この例では、テスト生成モードで最大 300 秒間 Simulink Design Verifier を実行し、ハーネス モデルを生成します。レポート生成は無効にします。

残りのオプションの既定値は、テストが生成されるように正しく設定されています。get コマンドを使用して、すべてのオプションおよび値を表示できます。

opts = sldvoptions;
opts.Mode = 'TestGeneration';
opts.MaxProcessTime = 300;
opts.SaveHarnessModel = 'on';
opts.SaveReport = 'off';
opts.HarnessModelFileName = '$ModelName$_harness.slx';

テストの生成とカバレッジの収集

関数 sldvgencov はテスト スイートとモデル カバレッジを同時に生成します。現在のパラメーター値で生成できるすべてのテストはハーネス モデルに収集され、結果のカバレッジはカバレッジ データ オブジェクトに返されます。

[status,coverageData,files] = sldvgencov('sldvdemo_param_controller',opts);
13-Feb-2024 01:00:21
Checking compatibility for test generation: model 'sldvdemo_param_controller'
Compiling model...done
Building model representation...done

13-Feb-2024 01:00:25

'sldvdemo_param_controller' is compatible for test generation with Simulink Design Verifier.

Generating tests using model representation from 13-Feb-2024 01:00:25...

..............
13-Feb-2024 01:00:35

Completed normally.

Generating output files:

    Harness model:
    /tmp/Bdoc24a_2528353_1741016/tp0f7301d6/sldv-ex05697027/sldv_output/sldvdemo_param_controller/sldvdemo_param_controller_harness.slx

13-Feb-2024 01:00:43
Results generation completed.

    Data file:
    /tmp/Bdoc24a_2528353_1741016/tp0f7301d6/sldv-ex05697027/sldv_output/sldvdemo_param_controller/sldvdemo_param_controller_sldvdata.mat

テスト ハーネスへのパラメーター初期化の統合

生成されたテスト ケースは、解析時に使用されたパラメーター値と同じ値で実行しなければなりません。初期化コマンドにより、テスト ケースのシミュレーション時の値を設定します。関数 sldvmergeharness は初期化コマンドをテスト ハーネスに組み込みます。

initCmdStr = 'control_mode=1;'
[path,modelName] = fileparts(files.HarnessModel);
sldvmergeharness(modelName,modelName,initCmdStr);
initCmdStr =

    'control_mode=1;'

パラメーターの変更とテスト生成の反復

パラメーター値を変更して、テスト生成を追加することができます。カバレッジ データ オブジェクトを 3 番目の入力として sldvgencov に渡すと、この関数は既にモデル カバレッジが達成されているすべてのテスト オブジェクティブを無視します。ここでは、sldvgencov の以前の呼び出しにより返されたカバレッジ データを使用して、達成されていないテスト オブジェクティブにテスト生成を制限します。

control_mode=2;
[status,newCov,newFiles] = sldvgencov('sldvdemo_param_controller',opts,false,coverageData);
13-Feb-2024 01:00:48
Validating cached model representation from 13-Feb-2024 01:00:25...change detected

13-Feb-2024 01:00:48
Checking compatibility for test generation: model 'sldvdemo_param_controller'
Compiling model...done
Building model representation...done

13-Feb-2024 01:00:52

'sldvdemo_param_controller' is compatible for test generation with Simulink Design Verifier.

Generating tests using model representation from 13-Feb-2024 01:00:52...

..............
13-Feb-2024 01:00:57

Completed normally.

Generating output files:

    Harness model:
    /tmp/Bdoc24a_2528353_1741016/tp0f7301d6/sldv-ex05697027/sldv_output/sldvdemo_param_controller/sldvdemo_param_controller_harness1.slx

13-Feb-2024 01:01:04
Results generation completed.

    Data file:
    /tmp/Bdoc24a_2528353_1741016/tp0f7301d6/sldv-ex05697027/sldv_output/sldvdemo_param_controller/sldvdemo_param_controller_sldvdata1.mat

テスト ハーネスの単一モデルへのマージ

sldvharnessmerge を再度呼び出し、新しいハーネスからのテスト データとその初期化コマンドを既存のハーネス モデルにマージします。

newInitCmd = 'control_mode=2;'
[path,newModelName] = fileparts(newFiles.HarnessModel);
sldvmergeharness(modelName,newModelName,newInitCmd);
newInitCmd =

    'control_mode=2;'

ハーネス モデルのテストの実行

テスト ケースは最初のハーネス モデルにマージされているので、作成された 2 番目のハーネス モデルを閉じます。信号エディターで [すべて実行] ボタンをクリックしてテスト スイートを実行できます。

close_system(newModelName,0);
sldvdemo_playall(modelName);

クリーン アップ

モデルを閉じて生成されたファイルを削除し、例を完了します。

close_system(modelName,0);
close_system('sldvdemo_param_controller',0);
delete(files.HarnessModel);
delete(newFiles.HarnessModel);