首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于SystemVerilog的srand()模拟

用于SystemVerilog的srand()模拟
EN

Stack Overflow用户
提问于 2011-03-23 01:38:59
回答 2查看 1.9K关注 0票数 1

当你这样做时,C rand()srand()函数是非常有用的:

代码语言:javascript
复制
srand(SEED);
for()
{
    //doing something with one thing using rand()
}
srand(SEED);
for()
{
    //doing something with other thing using rand()
}

我可以在SystemVerilog中有这样的东西吗?是的,我知道$urandom(SEED),但问题是它应该扫描一次,然后使用rand()多次

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-23 07:36:30

SystemVerilog IEEE标准(1800-2009)的18.13.3节介绍了srandom函数。第18章有一个代码示例,展示了如何在$urandom中使用它。

票数 2
EN

Stack Overflow用户

发布于 2013-01-01 10:38:41

SystemVerilog中的许多随机化通常是在类中完成的,其中SV具有强大的随机化基础设施。你通常会这样做:

代码语言:javascript
复制
class Foo;
  rand int r_value;
  function void reseed(int seed);
    srandom(seed);
  endfunction
  function void do_something();  
    randomize();
    $display("something: %0d", value);
  endfunction
  function void do_something_else(); 
    randomize();
    $display("something: %0d", value);
  endfunction
endclass

....

Foo foo = new();
foo.reseed(seed);
foo.do_something();
foo.reseed(seed);
foo.do_something_else();

优点是SV对每个对象都有一个单独的随机数生成器,因此当您更改一个对象的种子时,您不会更改环境的其余部分。当然,您还可以向r_value添加约束,使其介于某个范围之间,例如。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5395513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档