|  | 
 
| 
小弟第一次接触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
   关键是打印的信息也显示随机化正常这是怎么回事。。。
 
 
 | 
 |