四:TB设计
1.思路:端口数据类型申明 —> RTL module实例化 —> 产生时钟信号clk —> 初始化数据 —> 给写信号和写使能 —> 定义写信号的激励(task实现)—> 检测读出操作(task比较预期 值和实际读出值)—> 结束
`timescale 1ns/10ps
//声明端口数据类型
module test#(
parameter AW=3,
parameter DW=8
);
reg clk;
reg rstn;
reg wr_en;
reg[DW-1:0] wr_data;
reg rd_en;
wire[DW-1:0] rd_data;
wire full;
wire empty;
//RTL module实例化
sync_fifo u_sync_fifo#(
.AW=3,
.DW=8
)(
.clk(clk),
.rstn(rstn),
.wr_en(wr_en),
.wr_data(wr_data),
.rd_en(rd_en),
.rd_data(rd_data),
.full(full),
.empty(empty)
);
//产生时钟clk
always #5 clk = ~clk;
reg[DW-1:0] tempdata;
//初始化数据
initial begin
clk=0;
rstn=0;
wr_en=0;
rd_en=0;
@(posedge clk);
rstn=1;
push(10);
push(20);
po