一、顶层代码
(1) 接口Interface代码router_io.sv 与LAB1保持一致。
(2) 顶层代码 router_test_top.sv 与LAB1保持一致。
后篇同理,将不在赘述,快速传送链接 https://blog.csdn.net/ShiAokai/article/details/99639366
二、驱动代码 test.sv
2.1 定义发送参数
bit[3:0] sa;
bit[3:0] da;
//定义8位的队列,即一个字节
logic[7:0] payload[$];
int run_for_n_packets;
2.2 驱动代码
相比LAB1,在reset()之后加入了 gen()、send();前者用来产生数据,后者用来按时序将数据发出。
initial begin
$vcdpluson;
reset();
run_for_n_packets = 21;
repeat(run_for_n_packets) begin
gen();
send();
end
repeat(10) @(rtr_io.cb);
end
2.2.1 gen() 产生数据
这里产生一个包,为从端口3输入,从输出端口7输出;然后随机往数据队列放入2~4个数据,对应在驱动书需要n*8个周期(因为一个数据8位)。