1 Star 0 Fork 0

大浪淘沙/sv_tb_router

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Environment.sv 1.99 KB
一键复制 编辑 原始数据 按行查看 历史
大浪淘沙 提交于 2022-02-11 21:56 +08:00 . init
`ifndef _ENVIRONMENT_SV_
`define _ENVIRONMENT_SV_
class Environment;
// data or class properties
string name;
virtual router_io.tb rt_io;
rand int pkt_cnt;
constraint valid{
pkt_cnt inside {[1500:2500]};
}
pkt_mbx drv_mbx[16], sb_in_mbx, sb_out_mbx;
semaphore sem[16];
Driver drv[16];
Receiver recv[16];
Generator gen;
Scoreboard sb;
// initialization
function new(string name, virtual router_io.tb rt_io);
this.name = name;
this.rt_io = rt_io;
endfunction : new
extern virtual task run();
extern virtual task configure();
extern virtual task build();
extern virtual task start();
extern virtual task wait_for_end();
extern virtual task reset();
endclass : Environment
task Environment::run();
build();
reset();
start();
wait_for_end();
endtask: run
task Environment::configure();
if (!this.randomize) begin
$display("randomize failed!");
$finish;
end
endtask: configure
task Environment::build();
foreach (drv_mbx[i]) begin
drv_mbx[i] = new();
end
sb_in_mbx = new();
sb_out_mbx = new();
//-----------------
gen = new("gen", drv_mbx, pkt_cnt);
sb = new("sb", sb_in_mbx, sb_out_mbx);
foreach (sem[i]) begin
sem[i] = new(1);
end
foreach (drv[i]) begin
drv[i] = new($sformatf("drv[%0d]", i), drv_mbx[i], sb_in_mbx, sem, rt_io);
recv[i] = new($sformatf("recv[%0d]", i), i, sb_out_mbx, rt_io);
end
endtask: build
task Environment::reset();
this.rt_io.reset_n <= 1'b0;
this.rt_io.cb.frame_n <= '1;
this.rt_io.cb.valid_n <= '1;
##2 this.rt_io.cb.reset_n <= 1'b1;
repeat(15) @(this.rt_io.cb);
endtask: reset
task Environment::wait_for_end();
wait(sb.DONE.triggered);
endtask: wait_for_end
task Environment::start();
gen.start();
sb.start();
foreach (drv[i]) begin
drv[i].start();
end
foreach (recv[i]) begin
recv[i].start();
end
endtask: start
`endif
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/bai-mengwei/sv_tb_router.git
git@gitee.com:bai-mengwei/sv_tb_router.git
bai-mengwei
sv_tb_router
sv_tb_router
master

搜索帮助