latch的产生

避免意外生成锁存器
   使用always块生成组合逻辑电路时,如果变量所有可能的取值没有被考虑完全
   ,那么综合后可能会出现锁存器。如下面代码所示: 

module latch_test
(
 a,b,d,
 c);
input  [1:0]  a,b,d;
output [1:0]  c;
reg  [1:0]  c;
always @ (*)
 begin
  if(a<b)
   c=d;
 end
endmodule
这个例子中,给出了a<b条件为真时c的取值d,没有说明a>b时c取什么值,综合工具会认为a>b时c保持原来的值不变,这样综合后电路出现锁存器。如下图所示。
避免锁存器产生方法是给变量赋初值,或者考虑所有情况。代码如下:
always @ (*)
begin
c=0;
fi(a<b)
c=d;
end
 
原文地址:https://www.cnblogs.com/wangbin0729/p/13618600.html