保留 has_each 作为 Specman 中的列表

问题描述 投票:0回答:2

我正在尝试使用此功能创建一个保留:

extend sys {
    ListA : list of uint;
    keep ListA.size() == 3; // For the example
    keep for each in ListA { // For the example
        it < 10;
    };
    
    ListB : list of uint;
    keep ListB.size() == 8;
};

我想添加一个keep“has_each”,意思是,我想确保ListA的所有成员都在ListB中生成。

我知道如何做到这一点的一种方法如下:

    keep for each in ListB {
        read_only(index < ListA.size()) => it == ListA[index];
    };

此方法的问题是,如果我有某种形式的 keep 已经设置了第一个索引,例如,如果我还需要 keep:

    keep ListB[0] > 10;

在这种情况下会引起矛盾。

我尝试过但行不通的另一个想法是:

keep read_only(ListA) in ListB;

很高兴听到任何建议。 谢谢你

constraints verification specman e
2个回答
1
投票

你可以用这个

  keep for each in ListA {
    it in ListB;
};

0
投票

您的意思是希望 ListA 始终在 ListB 之前生成吗? 除了大小之外,ListB 是否还有其他限制?

© www.soinside.com 2019 - 2024. All rights reserved.