组合逻辑明明没有写寄存器,综合后却出现Latch:漏写了哪种赋值?

浏览量:19
时间: 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检查来消除非预期存储行为,再跑仿真与综合对照。”


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

本文概述串扰是高速PCB信号完整性的三大核心问题(反射、串扰、电源完整性)之一,也是PCB仿真工程师面试的高频考点。本文从互容和互感耦合的物理原理出发,系统讲解... 详情>>

2026-08-28 15:10:11
FPGA时序约束只改时钟周期,为什么Hold违例还是没有消失?

建立时间和保持时间约束的是触发沿前后不同的稳定窗口;它们不是一项指标的正反面。先读时序图|Ts、Th分别约束什么建立时间(Tsu)要求触发沿前数据保持稳定;保持... 详情>>

2026-10-27 17:08:23
EMC面试:干扰到底怎么耦合进来?传导、容性、感性和辐射四条路径怎么快速判断

EMC排查如果只会“加磁珠、加电容、加屏蔽”,很容易陷入试错。更专业的思路是先判断能量从哪里产生、经过什么耦合路径、最后落到哪个敏感电路,再决定整改手段。判断思... 详情>>

2026-10-20 14:03:42
嵌入式工程师面试项目经验怎么讲?3种表达结构

分类:嵌入式工程师面试准备经验要求:新手-中级难度:基础题型:面试表达📖 本文概述嵌入式工程师面试中,项目经验的表达方式直接影响面试官的评价。本文提供STAR... 详情>>

2026-08-04 16:02:26
硬件面试:芯片结温怎么估算?只看环境温度和芯片表面温度够不够?

硬件面试:芯片结温怎么估算?只看环境温度和芯片表面温度够不够?芯片外壳摸起来不烫,不代表结温一定安全;环境温度不高,也不代表芯片内部没有过热。结温估算要把功耗、... 详情>>

2026-10-19 15:52:11
开班信息