一、顶层代码
(1) 接口Interface代码router_io.sv 与LAB1保持一致。
(2) 顶层代码 router_test_top.sv 与LAB1保持一致。
后篇同理,将不在赘述,快速传送链接 https://blog.youkuaiyun.com/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位)。
task gen();
sa = 3

本文详细介绍了SV_LAB的第二部分——LAB2的驱动代码实现,包括定义发送参数、驱动代码gen()和send()的功能及工作原理,并提供了传输时序图。gen()函数用于生成数据,send()负责按特定时序发送数据,模拟完整帧的发送过程。
最低0.47元/天 解锁文章
1518

被折叠的 条评论
为什么被折叠?



