首页 文章

带有Design Verifier的Matlab功能块

提问于
浏览
0

例如,我的simulink模型中有一个Matlab功能块,如下所示:

function define_tests(row rowValues)
    for i=1:length(rowValues)
        sldv.test(row == rowValues(i));

每次调用 sldv.test 时,设计验证程序都不会生成测试 . 它最后一次调用时只生成一个测试 .

有关生成 length(rowValues) 测试的可能解决方案的任何想法?谢谢

1 回答

  • 1

    它说help page for sldv.test

    此功能没有输出,也没有影响其父节点功能

    假设 sldv.test 在函数中本身不一定是"executed"或"called",而是仅仅作为表示SLDV在分析函数时使用所需行为的方式 . 我知道 sldv.test 实际上并没有't intended to be intermixed with control flow in your function, because SLDV isn'执行这个控制流程 .

    另外,考虑一下这样一个事实,即如果要为函数 exclusively 添加新的控制逻辑(例如for循环或if语句)以指定如何定义 sldv.test ,那么这也会无意中添加无关的覆盖目标(例如,您的for循环将具有与之关联的Decision coverage目标) . (不确定是否's relevant to your situation, but figured I' d扔掉那个以防万一)

    我认为你最好的选择是避免在for循环中使用 sldv.test 并尝试向量化测试表达式 . 使用您的示例,看起来像这样:

    function define_tests(row, rowValues)
        sldv.test(all(row == rowValues));
    

    这应该具有指定rowValues的所有元素等于行的期望行为 .

    这是一个关于vectorization in MATLAB的更多信息的链接 .

相关问题