芯片内部毛刺宽度很小,若小于Cell本身的延迟的话,是否会被滤除掉呢?
“延迟”可以理解为为电容充电,所以毛刺应该是可以去掉的
这个是会被滤掉的,单元都是有阈值电压的
不管是FPGA,还是ASIC。毛刺本身无法消除,只要有组合逻辑就存在竞争冒险(不可能每个组合逻辑都去画卡罗图去消除竞争冒险的)。所以用同步逻辑的原因也在此,因为毛刺很难满足时序逻辑的建立保持时间
同步设计就没有毛刺?
2,3楼差不多是正解,可以滤掉,简单讲就是input还没有使output充放电到vdd或gng就改变了,所以output看起来比较像是个三角波,且波峰/波谷没有达到认为是1或0的值。有点像高频的clock通过一个电容的样子。
之前也是这么认为的,但始终找不到相关的理论支撑。后来用spice仿了一下,毛刺没有被滤掉,就有点矛盾了,也不知道是不是spice环境搞的不对。
同步逻辑只是对毛刺不敏感而已;而组合逻辑之所以要寄存输出,就是怕跨时钟域后被采到,引起功能错误。我现在只是想从电路本身的物理特性来看,毛刺在芯片内部的具体行为。
最初我也是这么认为,但是spice防了一下,毛刺还是过去了。不知道有没有相关的理论
用组合逻辑毛刺会输出去的
不太同意6楼举的时钟通过滤波电容的例子,对数字电路的脉冲而言,通过一个组合逻辑,以buffer为例,个人认1。存在rising_delay和faling_delay关系,以一个正脉冲为例,如果falingdelay< risingdelay,且二者的差大于脉冲宽度,则脉冲就滤掉了。对正脉冲而言,远离相同。从这个角度,毛刺通过组合电路有可能被滤掉,也有可能被展宽。做时钟树的时候,尽量选择risingdelay和falingdelay比较平衡的器件也是这个道理,否则dutycycle会逐渐偏离50%
2。如果脉冲很窄,由于输入负载的原因,脉冲送到器件里面(请注意是在器件里面看)还没有达到翻转阈值就下来了,器件相当于没有监测到变化,自然在输出就没有毛刺了
多说一句,同步设计用setup/hold来保证毛刺那部分不稳定期的附近不会用时钟沿来抓,来滤掉毛刺的影响。或者说,如果触发器抓到毛刺,肯定有timing violation, STA工程师应该被打屁股
