|

楼主 |
发表于 2017-12-22 22:18:39
|
显示全部楼层
回复 5# my7219
我今天又看了遍 程序,gen模块只有一个吧,一个gen,16个driver,16个receiver,1个scoreboard。
gen模块中定义了16个信箱,这16个信箱送到driver。 我都有点混乱了,如果可以,能麻烦讲一下这个testbench的运行过程吗
gen模块的构造函数:
- function Generator::new(string name);
- if (TRACE_ON) $display("[TRACE]%t %s:%m", $realtime, name);
- this.name = name;
- this.pkt2send = new();
- this.out_box = new[16];
- foreach(this.out_box[i])
- this.out_box[i] = new();
- endfunction: new
复制代码
test模块的:
- initial begin
- sem = new[16];
- drvr = new[16];
- rcvr = new[16];
- gen = new("gen");
- sb = new("sb");
- foreach (sem[i])
- sem[i] = new(1);
- foreach (drvr[i])
- drvr[i] = new($sformatf("drvr[%0d]",i), i, sem, gen.out_box[i], sb.driver_mbox, rtr_io);
- foreach (rcvr[i])
- rcvr[i] = new($sformatf("rcvr[%0d]",i), i, sb.receiver_mbox, rtr_io);
- reset();
- gen.start();
- sb.start();
- foreach (drvr[i]) drvr[i].start();
- foreach (rcvr[i]) rcvr[i].start();
- wait(sb.DONE.triggered);
- end
复制代码 |
|