module fifo_top #(parameter DSIZE=8, parameter ADDRISE=4) (fifoPorts.DUT itf);
fifo1 #(.DSIZE(DSIZE), .ASIZE(ADDRSIZE)) i0( // 实例化一个名为i0的FIFO模块,并传入参数DSIZE和ADDRSIZE
.rdata(itf.rdata), // 读数据端口连接到itf接口的rdata信号
.wfull(itf.wfull), // 写满标志端口连接到itf接口的wfull信号
.rempty(itf.rempty), // 读空标志端口连接到itf接口的rempty信号
.wdata(itf.wdata), // 写数据端口连接到itf接口的wdata信号
.winc(itf.winc), // 写指针增加信号连接到itf接口的winc信号
.wclk(itf.wclk), // 写时钟端口连接到itf接口的wclk信号
.wrst_n(itf.wrst_n), // 写复位端口连接到itf接口的wrst_n信号
.rinc (itf.rinc), // 读指针增加信号连接到itf接口的rinc信号
.rclk (itf.rclk), // 读时钟端口连接到itf接口的rclk信号
.rrst_n(itf.rrst_n) // 读复位端口连接到itf接口的rrst_n信号
);
always @(posedge itf.wclk) begin // 每当写时钟上升沿触发
check_wfull_write: assert(itf.winc && itf.wfull) $fatal ("Error: fifo full_write occurred!"); // 检查写指针增加和FIFO写满信号,如果条件成立则触发fatal错误
end
always @(posedge itf.rclk) begin // 每当读时钟上升沿触发
check_rempty_read: assert(itf.rinc && itf.rempty) $fatal ("Error: fifo empty_read occurred!"); // 检查读指针增加和FIFO读空信号,如果条件成立则触发fatal错误
end
endmodule // 模块定义结束
fifo_top.sv_assert
最新推荐文章于 2024-09-30 13:22:45 发布