FPGA里几种产生Latch的情况
Latch的危害
- 对毛刺敏感。
- 不能异步复位。
- 复杂的静态时序分析。
- 占用更多的逻辑资源。
- 额外的延时。
几种产生Latch的情况
- 组合逻辑中,if-else语句缺少else语句。
always @(*)
if(in == 1'b0)
out = in;
// else
// out = ~in;
- 组合逻辑中,case条件分支语句条件未完全列举,且缺少default语句。
always @(*)
case(in)
1'b0 : out = in;
// 1'b1 : out = ~in;
// default : out = in;
- 组合逻辑中输出变量赋值给自己。
always @(*)
if(in == 1'b0)
in = in;
// else
// out = ~in;
always @(*)
if(in == 1'b0)
in = in;
// else
// out = ~in;