Specman:如何在考虑列表顺序的情况下查找另一个列表中是否存在字节列表

Specman: How to find if a list of bytes exists in another list taking order of the list into account

我有一个有效负载,它是字节类型列表:

var payload : list of byte;
payload= {1;2;3;4;5;6};

var item1 :list of byte;
item = {3;4;5};


var item2 :list of byte;
item = {1;4};

我想实现一个代码来检查一个列表是否是另一个列表的子列表。使用 "if ..in.." 不太有效,因为它没有考虑项目的顺序或者它们是否连续出现。我想要执行以下操作的东西:

有没有简单的方法可以做到这一点?为此,specman 中必须有一个内置函数。

谢谢

以下代码应该有效:

if (item.size()==0) {return TRUE};
for i from 0 to payload.size()-item.size() {
    if (item == payload[i..i+item.size()-1]) {
        return TRUE;
    };
};
return FALSE;

请注意,这段代码在内存方面非常昂贵(list[a..b] 语法每次都会创建一个新列表),因此如果您有内存方面的考虑,应该修改它。