このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Logical Operator のカスケード パターン
この例は、Logical Operator ブロックが他の Logical Operator ブロックの下流に存在している場合に Simulink® Coverage™ によってどのように解析されるかを示します。
モデル例の概要
モデル例には、カスケードされた Logical Operator ブロックのさまざまなパターンが含まれています。この例では、改良条件判定カバレッジ (MCDC) メトリクスのモデル カバレッジ解析の目的で Simulink Coverage が Logical Operator ブロックのカスケードを識別する際の基準について説明します。
モデル例には、Logical Operator ブロックのカスケードのパターンが含まれています。
open_system('slcoverage_mcdc_logic_cascade');
MCDC 用にモデルを解析すると、Simulink Coverage は Logical Operator ブロックのカスケードを検索します。ロジック カスケードは、Logical Operator ブロックが他の Logical Operator ブロックの下流に存在している場合に生じます。Simulink Coverage はロジック カスケードを識別する際、各ブロックを個別に解析するのではなく、ブロックの組み合わせによって表される全体的な式を解析します。Logical Operator ブロックがロジック カスケードの一部でない場合、個別のブロックの MCDC 結果のみが得られます。
以下の条件が満たされている場合にのみ、Logical Operator ブロックはロジック カスケードの一部として MCDC の対象となります。
ブロックの入出力信号がすべてスカラーである。
ブロックの演算が XOR/NXOR でない。
ブロックに複数の入力信号がある (その演算が NOT でない場合)。
入力信号が別の非バーチャル ブロックに分岐していない。
[実行 (カバレッジ)] をクリックしてモデルをシミュレートします。シミュレーションが完了すると、[カバレッジの詳細] ペインが開きます。
sim('slcoverage_mcdc_logic_cascade');
最初のカスケードの表示
And ブロック And_Block
をクリックします。
And_Block
のカバレッジ レポートに 3 つの条件が表示され、各条件には 2 つの可能な結果があります。1 つの結果のみが満たされます。しかし、And_Block
は MCDC 表を表示しません。これは、Simulink Coverage が And_Block
をロジック カスケードの一部として識別しているために起こります。代わりに、レポート内の MCDC 行に、ロジック カスケードのルートを表すブロック Not_Block
へのリンクがあります。リンク [Not_Block
を参照してください] をクリックします。
Not_Block
のカバレッジ レポートに、2 つの可能な結果をもつ 1 つの条件が表示されています。このブロックのカバレッジの詳細には、MCDC 解析表があります。この MCDC の表に、And_Block
および Not_Block
のロジック カスケードの結合された出力のカバレッジ結果が表示されています。And_Block
は、各入力がブール値である論理演算 C1 && C2 && C3
を表しています。Not_Block
がこれを否定しているため、Simulink Coverage は MCDC 解析表で全体的な式 ~(C1 && C2 && C3)
を解析します。シミュレーション時に発生した条件結果は 1 つのみであったため、このカスケードでは達成された MCDC 結果はありません。
2 番目のカスケードの表示
Nor_Block
をクリックします。
And_Block
と同様に、Nor_Block
には 1 つの達成された結果をもつ条件の表が表示されますが、MCDC 解析表は表示されません。レポートの MCDC 行に、Masked Subsystem 内にある Masked_AND_Block
へのリンクがあります。モデルで Masked Subsystem
をクリックします。
2 番目のカスケードへの入力信号でもある最初のカスケードの出力信号は分岐しているため、2 番目のカスケードは最初のカスケードとは別個のものです。信号がバーチャル ブロックにのみ分岐している場合、MCDC カスケードは中断されることなく継続します。信号が非バーチャル ブロックに分岐している場合、Simulink Coverage はそれらを 2 つの別個の論理カスケードとして扱います。
Masked Subsystem
は、Masked_AND_Block
を含むサブシステムです。Masked Subsystem ブロックへの最初の入力は Nor_Block
の出力へのバーチャル接続です。MCDC 表からは、これがカスケードされたロジックの解析を妨げないことがわかります。Nor_Block
は論理式 C1 || C2
を表し、Masked_AND_Block
がその式の出力を 3 番目のブール値 C3
と結合しています。これにより、カスケードされた論理式 ~(C1 || C2) && C3
が得られます。MCDC 表には、カスケードされたロジックを表す式も表示されています。
サポートされていない論理演算
Or_Block
をクリックします。
カバレッジ レポートに条件の表とそのブロックの MCDC 表が表示されています。次に XOR_Block
をクリックします。
カバレッジ レポートにも、両方の解析表が表示されています。これは、カスケードされた MCDC 解析では XOR 演算および NXOR 演算はサポートされていないために発生します。結果として、Simulink Coverage はこれらのブロックの MCDC を個別に解析します。
Vector_AND_Block
をクリックして、このブロックのレポートにも MCDC 解析表が含まれていることを確認します。カスケードされた MCDC 解析では、Logical Operator ブロックへのベクトル入力はサポートされていません。