【问题标题】:How to define a constraint for one bit random variable?如何为一位随机变量定义约束?
【发布时间】:2019-02-10 06:24:11
【问题描述】:

就我而言, 如果位的值为“1”,那么我的约束对“1”的权重较高,如果该位的值为“0”,那么我的约束对“0”的权重较高。如何约束?

我收到这段代码的语法错误

rand bit value;
bit x; // Has either 1 or 0 depending on external signal
constraint constraint_c { value dist { x := 3, ~x := 1};};

请帮助我。谢谢你:)

【问题讨论】:

  • 一个有条件的偏硬币?很可能您需要从两个分布中选择(通过一个多路复用器),一个偏向 1,一个偏向 0。除此之外,我不知道具体细节。

标签: constraints system-verilog


【解决方案1】:

你可以在约束中加入 if-else

rand bit value;
bit x;
constraint c {
    if(x)
       value dist {1 := 3, 0 := 1};
    else
       value dist {1 := 1, 0 := 3};
}

您的权重也可以是变量

int weight0, weight1;
 constraint c {
       value dist {1 := weight1, 0 := weight0};

// set before calling randomize
if (x) begin
    weight1 = 3; weight0 =1;
end else begin
    weight1 = 1; weight0 =3;
end

或表达式

 constraint c {
           value dist {1 := x?3:1, 0 := x?1:3};

【讨论】:

    猜你喜欢
    • 2022-11-27
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多