メインコンテンツ

sldvrun

R2026b

モデルに対して Simulink Design Verifier 解析を実行する

説明

status = sldvrun は、モデルの保存されているコンフィギュレーション設定またはアクティブなコンフィギュレーション セットを使用して、モデルに対して Simulink® Design Verifier™ 解析を実行します。これを使用して、モデル カバレッジ用のテスト ケースを生成したり、反例を生成して設計エラーを特定したり、モデルのプロパティを検証したりします。

例

status = sldvrun(model) は、モデルに保存されている Simulink Design Verifier コンフィギュレーション設定またはアクティブなコンフィギュレーション セットを使用して、指定された model を解析します。

例

status = sldvrun(subsystem) は、Atomic サブシステム subsystem を一時的な Simulink モデルに抽出して解析します。

status = sldvrun(model,options) は、Sldv.Options オブジェクト options で指定された設定を使用して model を解析します。

例

status = sldvrun(subsystem,options) は、指定された解析オプションを使用して Atomic サブシステムを解析します。

[status,filenames,msg] = sldvrun(model,options) は、生成されたすべてのアーティファクトのパスである filenames と、解析中に生成されたエラー メッセージまたは警告メッセージである msg を返します。

例

[status,filenames,msg] = sldvrun(model,options,showUI,startCov) は、showUI に基づいてログ ウィンドウの表示を制御し、startCov に基づいて既存のカバレッジ データを提供することで、カバーされていないオブジェクティブを解析できるようにガイドします。

例

すべて折りたたむ

MCDC テスト生成向けに Simulink® Design Verifier™ のオプションを構成し、モデルを解析します。その後、解析ステータスに基づいて結果を検査します。

sldvdemo_cruise_control モデルを開きます。

open_system("sldvdemo_cruise_control");

Simulink Design Verifier の解析オプションを作成および構成します。

opts = sldvoptions;
opts.Mode = "TestGeneration";
opts.ModelCoverageObjectives = "MCDC";
opts.TestSuiteOptimization = "Auto";
opts.MaxProcessTime = 7200;
opts.SaveHarnessModel = "on";
opts.SaveReport = "on";

解析を実行し、すべての出力を取得します。

[status,files,msg] = sldvrun("sldvdemo_cruise_control",opts);
17-Aug-2026 16:31:57
Checking compatibility for test generation: model 'sldvdemo_cruise_control'
Compiling model...done
Building model representation...done

17-Aug-2026 16:32:00

'sldvdemo_cruise_control' is compatible for test generation with Simulink Design Verifier.
Generating tests...


Generating output files:

    Harness model:
    /tmp/Bdoc26b_3362262_762230/tpe5ff1471/sldv-ex67396824/sldv_output/sldvdemo_cruise_control/sldvdemo_cruise_control_harness.slx

    Report:
    /tmp/Bdoc26b_3362262_762230/tpe5ff1471/sldv-ex67396824/sldv_output/sldvdemo_cruise_control/sldvdemo_cruise_control_report.html

17-Aug-2026 16:32:27
Results generation completed.

    Data file:
    /tmp/Bdoc26b_3362262_762230/tpe5ff1471/sldv-ex67396824/sldv_output/sldvdemo_cruise_control/sldvdemo_cruise_control_sldvdata.mat

解析ステータスに応じて結果を検査します。解析の status が 1 である場合、Simulink Design Verifier では、テスト データ ファイルを使用して sldvruntest が実行され、生成されたテスト ケースの概要と HTML レポートの場所が表示されます。

if status == 1
    outData = sldvruntest("sldvdemo_cruise_control", files.DataFile);
    fprintf("Complete. %d test case(s). Report: %s\n", numel(outData), files.Report);

解析の status が 0 である場合、Simulink Design Verifier では msg 構造体配列にフィルターが適用され、タイプが "Error" のメッセージが示されます。

elseif status == 0
    errMsgs = msg(strcmp({msg.type}, "Error"));
    arrayfun(@(m) fprintf("ERROR: %s\n", m.msg), errMsgs);

status が -1 である場合、Simulink Design Verifier では、構成された最大解析時間制限が解析で超過したことが示されます。

elseif status == -1
    fprintf("Timed out (%ds).\n", opts.MaxProcessTime);
end
Complete. 4 test case(s). Report: /tmp/Bdoc26b_3362262_762230/tpe5ff1471/sldv-ex67396824/sldv_output/sldvdemo_cruise_control/sldvdemo_cruise_control_report.html

解析レポートを開いて、生成されたテスト ケースを確認します。

設計エラー検出用に解析を構成し、出力メッセージを検査します。

モデル sldvdemo_flipflop を開きます。

open_system("sldvdemo_flipflop");

設計エラー検出解析用の Simulink® Design Verifier™ オプションを作成して構成します。

opts = sldvoptions;
opts.Mode = "DesignErrorDetection";
opts.DetectIntegerOverflow = "on";
opts.DetectDivisionByZero = "on";
opts.DetectDeadLogic = "on";
opts.MaxProcessTime = 120;
opts.SaveReport = "on";

解析を実行します。

[status,files,msg] = sldvrun("sldvdemo_flipflop",opts);
17-Aug-2026 16:31:35
Checking compatibility for design error detection: model 'sldvdemo_flipflop'
Compiling model...done
Building model representation...done

17-Aug-2026 16:31:37

'sldvdemo_flipflop' is compatible for design error detection with Simulink Design Verifier.
Detecting design errors...


Generating output files:

    Report:
    /tmp/Bdoc26b_3362262_762230/tpe5ff1471/sldv-ex13177216/sldv_output/sldvdemo_flipflop/sldvdemo_flipflop_report.html

17-Aug-2026 16:31:52
Results generation completed.

    Data file:
    /tmp/Bdoc26b_3362262_762230/tpe5ff1471/sldv-ex13177216/sldv_output/sldvdemo_flipflop/sldvdemo_flipflop_sldvdata.mat

解析ステータスに応じて結果を検査します。解析ステータスが 1 である場合、Simulink Design Verifier では生成された HTML レポートのパスが表示されます。

if status == 1
    fprintf("Error detection complete. Report: %s\n", files.Report);
    web(files.Report);

その他のステータスの場合、Simulink Design Verifier ではエラー タイプと共に診断メッセージが表示されます。

else
    fprintf("Analysis returned status=%d.\n", status);
    for k = 1:numel(msg)
        fprintf("  [%s] %s\n", msg(k).type, msg(k).msg);
    end
end
Error detection complete. Report: /tmp/Bdoc26b_3362262_762230/tpe5ff1471/sldv-ex13177216/sldv_output/sldvdemo_flipflop/sldvdemo_flipflop_report.html

MATLAB® HTML ビューアーでレポートを開き、結果を検査します。

入力引数

すべて折りたたむ

解析対象の Simulink モデル。文字ベクトル、string スカラー、または数値モデル ハンドルとして指定します。sldvrun を呼び出す際は、モデルが現在の MATLAB® セッションに読み込まれていなければなりません。

解析対象の Atomic サブシステム。開いている Simulink モデル内にある Atomic サブシステムの絶対パスを表す文字ベクトル、string スカラー、または数値ハンドルとして指定します。サブシステムについて、コンテキスト メニューで [Atomic] チェックが有効になっている必要があります。Simulink Design Verifier はサブシステムを一時的なモデルに抽出して解析し、一時的なモデルを閉じます。

Simulink Design Verifier 解析オプション。Sldv.Options オブジェクトとして指定します。このオブジェクトは、解析モード、カバレッジ オブジェクティブ、タイムアウト、出力ファイルの場所、およびその他の解析オプションを指定します。省略した場合、Simulink Design Verifier 解析では保存されているモデル コンフィギュレーション設定が使用されます。

出力を [結果の概要] ダイアログ ボックスに送るオプション。数値または logical 1 (true) または 0 (false) として指定します。true の場合、診断メッセージは Simulink Design Verifier のログ ウィンドウに表示されます。false (既定の設定) の場合、メッセージは MATLAB コマンド ウィンドウに表示されます。

解析をガイドするための既存のカバレッジ データ。以前のシミュレーションの cvdata (Simulink Coverage) オブジェクトとして指定するか、以前のカバレッジがない場合は [] として指定します。指定した場合、Simulink Design Verifier は以前のカバレッジ データによって達成されていないオブジェクティブを解析します。

出力引数

すべて折りたたむ

解析の完了ステータス。次のいずれかの値として返されます。

  • 1 — 解析が完了するまで実行され、結果が保存されました。

  • 0 — 解析でエラーが発生し、完了しませんでした。詳細については、msg を検査してください。

  • -1 — 解析がタイムアウトしました。回避方法については、大規模で複雑なモデルの解析の実行を参照してください。

データ型: double

生成されたアーティファクトのパス。次のフィールドをもつ構造体として返されます。

フィールド生成される条件説明

DataFile

常時 (status == 1 の場合)

解析結果を含む MAT ファイル。さらに処理を行うには、この MAT ファイルを sldvruntest、sldvmakeharness、または sldvreport に渡します。

HarnessModel

opts.SaveHarnessModel == "on" の場合

Simulink ハーネス モデル。

Report

opts.SaveReport == "on" の場合

HTML 解析レポート。

ExtractedModel

サブシステムを解析する場合

サブシステムから抽出された Simulink モデル。

BlockReplacementModel

opts.BlockReplacement == "on" の場合

サポートされていないブロックがスタブに置換された Simulink モデル。

空のフィールドは、対応するアーティファクトが生成されなかったことを示します。データ ファイルを使用する前に isempty(filenames.DataFile) をチェックします。

解析ステータス メッセージ。次のフィールドをもつ構造体配列として返されます。

フィールド説明

sourceFullName

メッセージの原因となったモデル要素の絶対階層パス。

objH

メッセージの原因となったモデル オブジェクトへのハンドル。open_system(msg.objH) を使用してそこに移動します。

reportedBy

メッセージを生成したコンポーネントの名前。

msg

人間が判読可能なメッセージ テキスト。

msgid

メッセージ識別子 (フィルターの適用や既知の問題の検索に使用)。

msgargs

メッセージ テキストを構成するために使用された引数。

type

メッセージ重大度: "Error"、"Warning"、または "Info"。

制限

  • スティッフな ODE ソルバー (ode15s など) を使用する連続時間モデルでは、解析を可能にするためにソルバーの再構成またはサブシステムの抽出が必要になる場合があります。解析では固定ステップ ソルバー構成のみがサポートされています。

  • 可変サイズの信号を含むモデルはサポートされていないため、関数では status として 0 が返されます。可変サイズの信号を生成するブロックをスタブ化するためにブロック置換を使用するか、モデルを再構成してください。サポートされていないブロックの完全なリストについては、解析でサポートされていない Simulink ブロックを参照してください。

  • TLC ファイルがない S-Function、またはブロック置換ルールが登録されていない S-Function は、非互換としてフラグが立てられます。置換ルールを設定して opts.BlockReplacement == "on" を使用するか、sldvextract を使用して解析スコープを隔離してください。

詳細については、Simulink ソフトウェア機能に対する Simulink Design Verifier の制限事項を参照してください。

詳細

すべて折りたたむ

ヒント

  • 大規模なモデルおよび複雑なモデルの場合は、sldvrun を呼び出す前に sldvcompat を実行してください。互換性のないモデルで sldvrun を実行すると、ソルバーの時間が無駄になり、対処に役立ちにくいエラーが生成されます。

  • sldvrun を呼び出す前に、モデルが Simulink で開かれていなければなりません。モデルが読み込まれていない場合、エラーが発生します。

  • opts.TestSuiteOptimization が "Auto" に設定されたままにします。実際には、"IndividualObjectives" などの他の値では通常、判定されるオブジェクティブの数が少なくなります。

  • sldvrun は、元のモデルの構造やパラメーターを変更しません。解析アーティファクトは、opts.OutputDir で指定されたディレクトリ (既定の設定: sldv_output/$ModelName$) に書き込まれます。

代替方法

Simulink Design Verifier で解析を実行するには、[Design Verifier] タブの [モード] セクションで以下のいずれかのオプションを使用します。

  • [設計エラー検出] を選択し、[設計エラーの検出] をクリックします。

  • [テスト生成] を選択し、[テストの生成] をクリックします。

  • [プロパティ証明] を選択し、[プロパティの証明] をクリックします。

バージョン履歴

R2007a で導入

すべて展開する