SystemVerilog并行约束

时间:2017-08-10 06:00:29

标签: system-verilog

在下面的代码中,位'a'在1和0之间平均分配。此外,它使用并行约束约束为1。我最初的猜测是,我们会得到5个1和5个失败的随机化。而不是那样,我们得到10 1。任何人都可以解释其背后的原因吗?

program test1;

    class test;

        rand bit a;

        constraint con1 {a dist {0:=5,1:=5};}

        constraint con2 {a == 1'b1;}

        function display();
            $display(a);
        endfunction

    endclass

    test t;

    initial begin

        t = new();
        repeat(10)
            begin
                assert(t.randomize);
                t.display();
            end

    end

endprogram

1 个答案:

答案 0 :(得分:3)

1800-2012 LRM第18.5.4节

  

没有任何其他约束,表达式的概率   匹配列表中的任何值与其指定的权重成比例。   如果某些表达式有约束导致   这些表达式的分布权重是不可满足的,   实现仅需要满足约束。一个   此规则的例外是权重为零,被视为a   约束

所以它和你写的一样

constraint con1 {a dist {1:=5};}