边界值测试:一个”==”引发的芯片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满标志永远无法拉高。

相关推荐
南檐巷上学4 小时前
基于FPGA的正弦信号发生器、滤波器的设计(DAC输出点数受限条件下的完整正弦波产生器)
fpga开发·数字信号处理·dsp·dds
嵌入式-老费8 小时前
Linux Camera驱动开发(fpga + csi rx/csi tx)
fpga开发
ALINX技术博客20 小时前
【202601芯动态】全球 FPGA 异构热潮,ALINX 高性能异构新品预告
人工智能·fpga开发·gpu算力·fpga
JJRainbow1 天前
SN75176 芯片设计RS-232 转 RS-485 通信模块设计原理图
stm32·单片机·嵌入式硬件·fpga开发·硬件工程
s9123601011 天前
FPGA眼图
fpga开发
北京青翼科技1 天前
【PCIe732】青翼PCIe采集卡-优质光纤卡- PCIe接口-万兆光纤卡
图像处理·人工智能·fpga开发·智能硬件·嵌入式实时数据库
minglie11 天前
verilog信号命名规范
fpga开发
XINVRY-FPGA1 天前
中阶FPGA效能红线重新划定! AMD第2代Kintex UltraScale+登场,记忆体频宽跃升5倍
嵌入式硬件·fpga开发·硬件工程·dsp开发·fpga
这个软件需要设计一下1 天前
ninedata安装磁盘不足问题解决
运维·bug
热爱生活的五柒1 天前
cc-switch安装方法、介绍及遇到的bug
bug·cc-switch