Clock - RTL Design Style Guide
目录
时钟
-
将时钟电路集中在一个模块
-
利用时钟树实现时钟均衡
-
时钟门控
-
多时钟系统
1.1 将时钟电路集中在一个模块
[1] 时钟电路应单独作为一个模块
[2] 不要在逻辑综合过程中在时钟线中插入buffer
时钟模块单独作为一个模块
注意
- 时钟相关的电路集中在一个模块便于时钟的分配、约束和DFT实现。
1.2 利用时钟树实现时钟均衡
[1] 除了dummy buffer以外,其他的cell不应该出现在时钟树中。
[2] 连接到时钟树的cell数量应当相同
时钟布线
注意
- 时钟树的布置往往是在芯片中心以H型的方式展开
- 不建议在RTL设计时在时钟线上加入buffer
1.3 时钟门控
[1] 在时钟上应当尽量避免使用非门,或者避免同时使用上升沿和下降沿触发的触发器
[2] 不要将一个触发器的输出作为下一个触发器的时钟
[3] 使用门控来降低功耗
[4] 触发器的输入引脚应当避免和时钟连接(触发器时钟端除外)
[5] 时钟信号不应该连接到blackbox、双向端口和复位线。
[6] 不要使用反沿触发器
注意
- 当时钟信号与触发器D端连接时,综合工具将难以优化电路,并且时序约束也很困难
- 尽量不要使用下降沿触发器,上升沿和下降沿触发的混合电路,生成scan chain会有困难。
1.4 多时钟系统
[1] 每个子模块尽量只有一个时钟
[2] 对于多时钟系统,尽量做到时钟周期的公倍数最小。