边界值测试:一个”==”引发的芯片bug

80%的现场bug都出在边界条件上。溢出、极值、临界状态,这些在验证和实验室测试时被漏掉的场景,到了量产后就是灾难。

看一个真实场景:某款芯片的FIFO控制器在流片后被发现,当深度配置为256时会丢数据。问题出在哪?

go 复制代码
parameter FIFO_DEPTH = 256;
reg [7:0] wr_ptr, rd_ptr;
reg [7:0] data_count;

// 写入控制逻辑
always @(posedge clk) begin
    if (wr_en && data_count < FIFO_DEPTH) begin
        fifo_mem[wr_ptr] <= wr_data;
        wr_ptr <= wr_ptr + 1;
        data_count <= data_count + 1;
    end
end

// 满标志
assign fifo_full = (data_count == FIFO_DEPTH);

这段代码的致命问题在于:data_count是8位宽,最大只能表示到255,而FIFO_DEPTH配置的是256 。当FIFO写入第255个数据后,data_count变成255,判断255 < 256成立,允许继续写入。但写入后data_count递增到256,8位寄存器溢出归零,FIFO满标志永远无法拉高。

相关推荐
techdashen20 小时前
从网络栈继续往下:micro:bit、2.4GHz、调制方式,以及一个不太靠谱但很有趣的想法
网络·fpga开发
FPGA小徐20 小时前
FIR 数字滤波器 --verilog设计实现
fpga开发
zlinear数据采集卡20 小时前
从协议解析到波形实时显示:硬核拆解ZLinear采集卡上位机软件的开发架构
arm开发·单片机·嵌入式硬件·fpga开发·架构·开源
pcjiushizhu20 小时前
ModelSim 仿真时 Simulate 无反应或只显示 Loading 的解决方法:网卡问题排查
fpga开发
FPGA小迷弟1 天前
vivado中的AXI Interconnect到底应该怎么用,他的底层原理是什么,一篇文档全部理清楚!!!
网络协议·tcp/ip·fpga开发·verilog·fpga
国科安芯1 天前
ASC4T245S分组双向控制架构深度解析:独立DIR/OE控制、QFN16封装与混合方向总线桥接
单片机·嵌入式硬件·物联网·fpga开发·架构·risc-v
尤老师FPGA2 天前
GT系列2:GT基础架构(二)
fpga开发
想你依然心痛2 天前
电源时序控制:多路电源的上电顺序与监控——复位、看门狗
fpga开发
Eloudy2 天前
hsb fpga/ 目录分析
fpga开发·量子计算
Hello-FPGA2 天前
GPU Direct DMA RDMA 与FPGA 通讯在Jetson 平台的测试表现
fpga开发