| |
FPGA设计一条原则是尽量使用同步逻辑,即尽量整个设计中使用一个clock,而且该clock尽量走全局时钟线,也就是不要在clock path上加上逻辑,不要用“受控时钟”。但是在有些情况下,“受控时钟”难以避免,例如在用FPGA进行验证asic设计时,因为ASIC为了low power的要求,通常会使用逻辑控制时钟的开关。
如果对“受控时钟”不加以任何变换,其负面作用通常是通常会有hold timing冲突。hold timing问题不像setup timing问题,不能靠依靠降低时钟频率解决;在ASIC设计时解决hold timing问题通常靠工具自动增加时钟树分支延迟,使时钟到目标寄存器的时间在建立-保持时间窗内。
在FPGA阶段,通常有几种办法:
1. 不理会hold timing问题,这样可能有时编译出来的系统可以正常工作,有时候又不能工作,
比较飘逸;
2. 手工将gate clock等系统“异步”时钟改成同步时钟,办法就是将clock path上的逻辑合并到寄存器的数据输入端。
3. 使用synplify将gate clock转换为non-gate clock
4. altera quartus8.0以上有转换gate clock的功能,可以使用。
FPGA时序分析之Gated Clock1.pdf
(2009-02-26 19:00:00, Size: 317 KB, Downloads: 9)