2

我有需要以这种方式限制的多个字段:

struct my_struct {
    a : uint;
    b : uint;
    c : uint;
    d : uint;
    keep 3*a + 4*b + 5*c + 6*d == 206 and a + b + c + d == 50;

    my_method() @clk_event is {
        while (TRUE) {
            if (ctr == 0) {
                gen a;
                gen b;
                gen c;
                gen d;
            };
            if (ctr == 50) {
                ctr = 0;
            } else {
                ctr += 1;
            };
            wait cycle;
        };
    };
};

a我基本上想为、bcd定期生成一组新值。上面的代码不起作用,因为它们的值在我的模拟中没有改变。知道怎么做吗?

4

1 回答 1

2

当您生成一个字段时,其他字段无法更改其值,它们是约束的输入。鉴于您的限制,如果其他三个不能更改,则一个字段只能有一个正确的值。

您可能需要修改设计并将具有约束的字段放在结构下,并具有此结构类型的字段。因此,您将只有一个,而不是四个独立的 gen,它会正确地完成工作。

于 2017-01-25T09:00:29.743 回答