数字ic设计bug:寄存器翻转错误
bug场景:
寄存器未按指定条件翻转,满足翻转条件,但未翻转
问题描述
always@(posedge clk or negedge rst_n)
if(!rst_n)a <= 1‘d0;
else if(a_condition)a <= 1’b1;
a_condition为1时,寄存器a依然为0,未翻转为1
原因分析:
- 门控时钟信号设置错误,导致clk时钟信号恒为0,未在a_condition为1时产生上升沿;
- rst_n未正常拉起,a_condition为1时,rst_n为0;
- a_condition不与clk同步,a_condition含异步时钟域的信号;
- (大概率)代码和波形不一致,未对齐,需要重新根据最新代码重新跑波形;