1. 什么是Glitch Violation?
在数字电路设计中,glitch violation(毛刺违规)是指信号在稳定状态转换过程中出现的短暂、非预期的脉冲信号。这种信号异常通常发生在组合逻辑电路中,当输入信号变化路径存在不同的延迟时,就会产生这种短暂的"假信号"。
我刚入行时曾在一个时钟分频电路项目中遇到过典型的glitch问题。当时用示波器观察输出信号时,发现本该是干净的50%占空比方波,却在每个上升沿和下降沿附近出现了持续时间约200ps的窄脉冲。这些脉冲虽然短暂,但足以导致后续触发器误触发,造成系统功能异常。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Glitch的产生机理与危害
2.1 产生原因深度解析
Glitch产生的根本原因是信号在组合逻辑中传播时存在不同的路径延迟。具体来说:
- 路径延迟差异:当多个输入信号同时变化时,由于各信号经过的逻辑门数量和类型不同,到达输出端的时间会有差异
- 竞争条件:快速变化的信号与慢速变化的信号在某个逻辑门"竞争",导致输出出现短暂的不稳定状态
- 冒险现象:当输入信号变化导致输出本应保持不变,但由于延迟差异而出现短暂变化
以一个简单的与门电路为例:
code复制A ────┐
AND─── Out
B ────┘
当A从1→0,B从0→1同时变化时,如果A的变化比B快,会在输出端先出现0(A=0与任何值=0),然后当B到达1时输出才稳定为0。但如果B比A快,输出会先保持原值1(因为A还未变0),然后当A变为0时才输出0,这个过程中就可能产生glitch。
2.2 实际危害案例
在我参与的一个图像处理ASIC项目中,glitch导致了严重的功能错误:
- 场景:像素处理流水线中的使能信号生成逻辑
- 现象:每处理1000个像素左右就会出现一次像素丢失
- 根源:使能信号生成逻辑中存在一个3输入或门,当三个输入信号几乎同时变化时产生了约150ps的glitch
- 影响:这个短暂的glitch被后续触发器捕获,导致一个像素周期的使能信号被意外关闭
- 解决成本:项目因此延迟2周,需要重新流片验证
3. Glitch的检测方法与工具
3.1 静态时序分析(STA)中的Glitch检查
现代STA工具
