凡亿教育-小至
凡事用心,一起进步
打开APP
公司名片
凡亿课堂 | 面试指南
当前位置: 首页 面试指南
组合逻辑明明没有写寄存器,综合后却出现Latch:漏写了哪种赋值?
浏览量:31
2026-10-28 20:38:05

FPGA工程师看到综合报告中出现Latch,但设计者只写了一个组合always块,没有显式写存储单元。最常见原因并不是工具出错,而是代码要求信号在某些条件下保持上一次的值。

D锁存器的输入、使能和输出逻辑结构图
图示意了具有使能条件的锁存器。若组合逻辑某分支未给输出赋值,电路就可能需要“记住上次的值”,从而被推断为锁存器。

机制定位遗漏else与不完整case的共同点

组合逻辑应由当前输入唯一决定当前输出。若 if 的某条路径、case 的某个分支没有给信号赋值,综合器为了保留该信号旧值,可能推断电平敏感锁存器。它与边沿触发D触发器不同,在使能有效期间输出可随输入变化。

代码评审如何修正而不改坏原有功能

  • 检查组合过程中的每个输出,是否在所有执行路径上被赋值;优先在过程开头给出有意义的默认值。

  • 对于状态机,确保 next_state 与输出在所有状态分支都有定义,不用随意加入x作为运行时“默认硬件值”。

  • SystemVerilog 中可使用 always_comb 帮助表达组合意图,并结合lint与综合报告检查意外锁存器。

  • 若确实需要存储行为,应明确选择寄存器或受控锁存器结构,而不是依赖遗漏赋值隐式生成。

参考回答解释为什么综合器这样做

“我会先查看组合always块中的if/else和case覆盖是否完整。只要有某条路径要求输出保持旧值,综合器就可能推断Latch。通常通过默认赋值、完整分支覆盖和lint检查来消除非预期存储行为,再跑仿真与综合对照。”


声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。仅供学习交流使用,不构成商业目的。版权归原作者所有,如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时删除。 侵权投诉

相关文章

AC耦合电容在高速串行链路中怎么影响设计与仿真?PCB仿真面试从容值讲到回损

2026-09-13 21:27:14

STM32 DMA传输怎么配置与优化?嵌入式面试从传输模式讲到缓存一致性

2026-08-30 10:53:34

射频收发机架构怎么理解?超外差与零中频接收机怎么选?射频工程师面试

2026-09-10 21:40:58

运放电路怎么设计?虚短虚断是什么?同相反相比例放大怎么算?硬件面试

2026-09-22 08:42:54

嵌入式系统中时钟电路在PCB上怎么布局?嵌入式面试要从起振条件讲到辐射控制

2026-08-05 09:52:26