首页 > 解决方案 > 如果verilog中的模拟具有随机值,如何每次都有不同的结果?

问题描述

我想在每次运行时生成相同代码的不同输出,因为它具有分配给某些变量的随机值。有没有办法做到这一点,例如time在 C 中使用 as 播种?

包含随机化的示例代码:

class ABC;

    rand bit [4 : 0] arr []; // dynamic array
    constraint arr_size{

        arr.size() >= 2;
        arr.size() <= 6;

    }


endclass 



module constraint_array_randomization();

ABC test_class;

initial begin 


    test_class = new();
    test_class.randomize();
    $display("The array has the value = %p ", test_class.arr);



end



endmodule








标签: randomverilogsystem-verilog

解决方案


我这可能取决于正在使用的工具。例如来自 cadence 的 xcelium 支持(我认为是xrun -seed some_seedQuesta )。-sv_seed some_seed我确信所有工具都支持类似的东西。寻找模拟工具参考/手册/指南/帮助,它可能支持每次模拟运行的随机种子。

不确定这是否可以从模拟内部进行。


正如 Questa 的评论中提到的那样,-sv_seed random应该可以解决问题。


推荐阅读