马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
小弟第一次接触sv,写了个generator遇到个问题很困惑,求大佬解答。
如下代码,在generator中声明了transaction成员trans,然后在start方法中使用repeat循环进行例化后随机化并发送给driver,随机化没问题:
- class generator;
- transaction trans;
- mailbox gen2drv;
- int repeat_times;
- event ended;
-
- function new(mailbox gen2drv);
- this.gen2drv=gen2drv;
- endfunction
-
- task start();
- $display("generator starts");
- repeat(repeat_times) begin
- trans = new();
- if(trans.randomize())
- $display("generator's randomize <span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 51); font-family: arial;">success</span>");
复制代码
但后面修改了一下代码,发现如果把trans的例化改到generator的构造函数new中,然后调用start方法中使用repeat循环进行随机化并发送给driver,发现并没有随机化,只能产生一种激励,请问这是怎么回事?
- class generator;
- transaction trans;
- mailbox gen2drv;
- int repeat_times;
- event ended;
- function new(mailbox gen2drv);
- this.gen2drv=gen2drv;
- trans = new();
- endfunction
- task start();
- $display("generator starts");
- repeat(repeat_times) begin
- if(trans.randomize())
- $display("generator's randomize <span style="color: rgb(51, 51, 51); font-family: arial; background-color: rgb(255, 255, 255);">success</span>");
- gen2drv.put(trans);
- end
- ->ended;
- $display("generator ends");
- endtask
- endclass
复制代码
关键是打印的信息也显示随机化正常这是怎么回事。。。
|