Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Requirements Table ブロックの階層の確立

R2022a 以降

Requirements Table ブロックで要件や仮定を定義する際、一部の要件または仮定を階層内で相互に関連させなければならないことがあります。たとえば、ある要件の前提条件を別の前提条件が有効である場合にのみチェックすることがあります。あるいは、モデルが複数の前提条件を満たさないと事後条件をチェックしない要件もあります。子の行とセマンティック行を使用して階層を確立することができます。

要件および仮定を定義する方法については、Requirements Table ブロックを使用した形式的要件の作成および要件への仮定の追加を参照してください。

子の行の追加

要件と仮定は行にまとめられます。"親""子" の行を作成して、行を階層にまとめることができます。子の行を使用して評価の階層を判定します。たとえば、親要件の前提条件が有効であれば、ブロックは子要件の事後条件をチェックします。それ以外の場合、ブロックは子要件を無視します。

子の行を作成するには、行のインデックスを右クリックし、[子要件の追加] または [子仮定の追加] を選択します。上位または下位の階層レベルに行を移動する場合は、行のインデックスをクリックし、[親にする] または [子にする] を選択します。子の行を削除および変更するには、子の行のインデックスを右クリックし、[要件の削除] または [仮定の削除] をクリックします。

子の行のインデックス番号は、親のインデックスの後に子のインデックスを続けて表されます。各階層レベルに複数の子の行を含めることができ、階層レベルも複数含めることができます。同じ階層レベルで同じ親をもつ行 (親の行がない行も含む) を "兄弟" と呼びます。

モデル例での子の行の使用

この例では、子要件をもつ Requirements Table ブロックを使用します。このモデルは、信号をテストし、モデルの動作が親要件と子要件を満たす場合に 2 つの値を出力します。

Requirements Table ブロックを開き、親要件と子要件を確認します。入力信号が 1 つ目の要件の前提条件を満たす場合、ブロックはアクションを実行し、子要件をテストします。この例では、子要件で出力データ z を制御しています。2 つ目の要件は、入力信号が 1 つ目の要件の前提条件を満たさない場合に実行されます。

シミュレーションを実行し、Scope ブロックを開いてブロックの出力を確認します。

排他的かつ網羅的な要件の作成

排他的かつ網羅的な要件を使用して、オーバーラップしない完全な子要件を作成できます。シミュレーションの実行時、各タイム ステップにおけるアクティブな子要件が厳密に 1 つであることが Requirements Table ブロックでチェックされます。いずれかのタイム ステップにアクティブな子要件が複数あるか 1 つもない場合、ブロックからエラーが返されます。

親要件の子を排他的かつ網羅的にするには、親要件のインデックスを右クリックし、[子の評価][排他的かつ網羅的] を選択します。排他的かつ網羅的な要件は排他性アイコン で示されます。子要件を排他的かつ網羅的として指定すると、選択した親要件の直接の子のみが排他的かつ網羅的になります。下位レベルの要件は排他的かつ網羅的ではありません。

This image shows an expanded parent requirement with exclusive exhaustive child requirements and a second collapsed parent requirement.

セマンティック行の追加

モデルを設計する際に、該当する前提条件が複数ある行を定義しなければならないことがあります。たとえば、前提条件を 1 つだけ満たせばよい要件や、それぞれの前提条件を同時に満たさなければならない要件があります。Requirements Table ブロックでは、このような行を "セマンティック行" を使用して構成できます。セマンティック行は、事後条件をチェックしたり親の行のアクションを実行したりする前に 2 つ以上の前提条件を評価します。

子の前提条件を 1 つだけ満たせば親要件で実行されるセマンティック要件を追加するには、要件のインデックスを右クリックし、[セマンティック要件の追加][任意の子がアクティブ] をクリックします。[仮定テーブル] では、[セマンティック仮定の追加][任意の子がアクティブ] をクリックして同じタスクを実行できます。

それぞれの子要件の前提条件を満たす場合にのみ実行されるセマンティック要件を追加するには、要件のインデックスを右クリックし、[セマンティック要件の追加][すべての子がアクティブ] をクリックします。[仮定テーブル] では、[セマンティック仮定の追加][すべての子がアクティブ] をクリックして同じタスクを実行できます。それぞれの種類のセマンティック行について、テーブルの埋められないセルがグレー表示され、それぞれの親に子で使用されるロジックが示されます。次のテーブルは、各セマンティック要件がどのようになるかを示しています。

This image shows an empty table with multiple line logic blank requirements of each kind.

持続時間は、親にもそれぞれの子にも指定できます。持続時間の詳細については、[持続時間] 列の使用を参照してください。子で持続時間を指定すると、その子にのみ持続時間が適用されます。親に対して持続時間を指定すると、セマンティックを満たす場合にのみブロックで持続時間がチェックされます。

セマンティック行のタイプを切り替える場合は、親の行の前提条件のセルにカーソルを合わせます。セルの下部に、[任意の子がアクティブ][すべての子がアクティブ] を切り替えるオプションが表示されます。

This image shows the switch option that appears when you hover over the parent row precondition cell of a semantic row.

既定の要件の作成

いずれの兄弟の要件も満たさない場合の動作を定義するには、既定の要件を含めます。兄弟の要件のインデックスを右クリックし、[セマンティック要件の追加][既定] をクリックします。

兄弟のグループごとに複数の既定の要件を指定できます。たとえば、次のテーブルでは、2 つの要件のそれぞれに 2 つの子要件と既定の要件があります。既定の要件は、親の前提条件が true で、兄弟が false の場合にのみ実行されます。

The requirements table shows two sets of child requirements, each with a default requirement. The default requirements do not affect the other children models.

モデル例でのセマンティック行の使用

この例では、セマンティック要件をもつ Requirements Table ブロックを使用します。このモデルは、2 つの信号をテストし、モデルの動作がセマンティック要件の前提条件を満たす場合に出力を調整します。

ブロックを開きます。ブロックには、2 つのセマンティック要件と既定の要件があります。

  • 入力 u1 が 1 つ目の子の前提条件を満たし、入力 u2 が 2 つ目の子の前提条件を満たす場合、ブロックは出力 y2 に設定します。

  • それ以外の場合、2 つ目の要件の子の 1 つ目または 2 つ目の前提条件のいずれかが true であれば、ブロックは y1 に設定します。

  • セマンティック要件の前提条件を満たさない場合、ブロックは既定の要件のアクションを実行し、y0 に設定します。

モデルを実行し、Scope ブロックを開いてブロックの出力を確認します。

参考

関連するトピック