第2章:时钟和复位
1.经验表明对ASIC的时域控制最安全的方法就是同步设计。
2.易发生时序错误的情况(不推荐使用):
(1)避免使用行波计数器,使用触发器输出做时钟输入端,会引发延时。
(2)门控时钟会导致时钟偏移,并且综合时容易出错。(clk_in = en & clk)
(3)双边沿或混合边沿触发时钟,对同步复位,DFT,关键路径确定带来难度。
(4)用触发器驱动另一个触发器额异步复位端,第二个触发器输出不仅仅受到时钟边沿的影响。
3.推荐的设计技术:
(1)避免产生组合环路
当组合环路产生时综合工具会报错,由于某信号进过组合逻辑或者算术表达式左边等于右边时,就会形成组合环路。
会产生无休止的环形运算。
改为插入一个DFF,打断直接通路
(2)避免数字设计中的延迟链
使用两个或多个带有单扇入和单扇出的连续节点产生延迟时,就会形成延迟链。在设计中,使用延迟链会带来各种问题,尽量避免。
(3)避免使用异步脉冲产生器
两种常用的方法产生异步脉冲:
一、将同一个触发信号街道两输入与门或或门,其中一个取反或加入延迟链。产生脉冲的宽度取决于两组信号的相对延迟。
二、寄存器输出信号经过一定延迟驱动同意寄存器的异步复位端。
异步产生的脉宽常常为综合和布局布线带来难题,因为难以确定具体的脉宽,验证工作很难进行
推荐使用同步脉冲产生器:
(4)避免使用锁存器
静态时序分析、DFT、自动测试程序生成器,均不能很好的处理锁存器,设计中应尽量避免。
来源:意料之外的锁存器一般来自不完整的if else语句(语句覆盖率),产生意外的锁存器,如下:
应当极力避免如FPGA某些架构产生的组合反馈电路,可能违背建立保持时间,会造成比锁存器更多的问题。
(5)避免使用双边沿(DDR使用该技术)
双边沿触发:指在时钟的上升沿和下降沿都传输数据,使得数据吞吐量翻倍。
缺点:1.当时钟非对称占空比时会违反建立保持时间;
2.关键路径很难确定;
3.很难插入扫描连,对DFT不利。
优点:1.当提高时钟频率的方案不可行时(大多由于接口的电气特性跟不上),使用双边沿很有效;
2.只需用更低的时钟频率,这意味着更低的工功耗。
总结:只有当单边沿等效电路无法满足功能需求时,才会考虑双边沿触发。
4.时钟方案
(1)内部产生时钟
应当避免内部产生时钟,当操作不当,会引起设计功能和时序问题。
一、使用组合逻辑产生时钟
易产生毛刺信号
在添加一个DFF后,可改善毛刺的现象
组合逻辑的时钟延迟也会影响到建立保持时间的窗口
(2)分频时钟
要保证大多数时钟都来自于PLL,可以避免许多异步时钟分频带来的问题。
对主时钟分频时,应时钟使用同步技术器或状态机。
(3)行波计数器
避免使用,会在STA和综合阶段带来麻烦。
多用于较高功耗的系统中,可大量降低功耗。
(4)多路时钟
多用于使用同一功能具有不同的时钟(多频率标准的通信应用)
但是也存在很多难题,比如切换时钟时会产生错误的状态,使用需要需满足:
1)初始化配置后,多路时钟逻辑不变;
2)测试时,设计会绕过该模块,选择普通时钟;
3)时钟切换,寄存器处于复位转态;
4)切换时的短暂错误转态,没有负面影响
(6)同步时钟使能和门控时钟
使用门控时钟是减少功耗的有力手段,会使始终网络和寄存器完全停止翻转。
但是由于并非同步设计,会导致设计和验证工作量的增加,并且会对毛刺敏感,产生危险性。
同步化门控时钟后,实际功耗并没有下降,但可以通过一些方法使得某些寄存器失效,达到降低功耗的目的。