FPGA 时钟拓扑结构建议
时钟拓扑结构建议
赛灵思建议使用简单的时钟树拓扑结构,因其设计所需的时钟缓存数量最少。使用额外的时钟缓存需要更多的布线轨
道,这可能导致在时钟布线要求高并且接近最大容量的时钟区域中的布局错误或布线冲突。
以下是针对
BUFGCE/BUFGCTRL/BUFGCE_DIV
连接的时钟拓扑结构建议。
并行时钟缓存
使用并行时钟缓存来实现以下目的:
•
确保跨实现运行的可预测的展示位置
当并行时钟缓存由相同的输入时钟端口
MMCM
,
PLL
或
GT*_CHANNEL
直接驱动时,无论网表变化或逻辑布局变
化如何,缓存始终置于与其驱动器相同的时钟区域中。
•
匹配时钟树的并行分支之间的插入延迟
赛灵思推荐并行缓存通过级联时钟缓存,特别是在分支之间存在同步路径时。当使用级联缓存时,即使使用
CLOCK_DELAY_GROUP
或
USER_CLOCK_ROOT
约束,时钟插入延迟在时钟树的分支之间将不匹配。这可能导致高
时钟偏移,将导致时序收敛难度增加,甚至无法实现。
下图显示了由
MMCM CLKOUT0
端口驱动的三个并行
BUFGCE
缓存。
级联时钟缓存
一般来说,赛灵思不建议使用级联缓存人为地增加延迟并减少不相关的时钟树分支之间的偏差。与
BUFGCTRL
之间的
连接不同,其他时钟缓存连接在架构中没有专用路径。因此,时钟缓存的相对布局是不可预测的,并且所有布局规则
优先于布局无约束级联缓存。
但是,可以使用级联时钟缓存来实现以下功能:
•
将时钟布线到位于不同时钟区域中的另一个时钟缓存
当将时钟多路复用器用于由位于不同时钟区域中的
MMCM
生成的时钟时,该方法较为普遍。虽然一个
MMCM
可
以直接驱动
BUFGCTRL (BUFGMUX)
,但是另一个
MMCM
需要中间时钟缓存来将时钟信号布线到其他区域。下图显
示了一个示例。
•
在这些分支之间存在同步路径时,平衡时钟树分支上的时钟缓存级别数
例如,一个名为
clk0
的
MMCM
时钟驱动组
A
(通过位于不同时钟区域中的
BUFGCTRL
驱动的顺序单元)和组
B
(顺序单元)。为了更好地匹配分支之间的延迟,为组
B
插入一个
BUFGCE
,并将它布局在与
BUFGCTRL
相同的时
钟区域中。这确保组
A
和组
B
之间的同步路径具有受控的偏差量。下图显示了一个示例。
注释:
Vivado
逻辑优化命令
opt_design
不能感知时序时钟和时钟网络分支间的时序关系。因此,
opt_design
可以尽可能多地消除级联或冗余的时钟缓存。在本例中,除非您基于其上设置
DONT_TOUCH="TRUE"
属性,否则
opt_design
可移除
BUFGCE_inst_1
。如果在时钟树分支之间仅存在异步路径,则只要在接收时钟域上存在适当
的同步电路,分支就不需要被平衡。
•
如
“
时钟多路复用
”
所述,构建时钟多路复用器。
当使用级联时钟缓存时,为了减少插入延迟和偏移的变化,赛灵思建议如下:
•
将级联缓存保持在相同或相邻的时钟区域中。
•
当时钟树分支平衡时,将相同级别的所有时钟缓存分配给相同的时钟区域。
注释:
如果绝对需要,赛灵思建议使用两个级联
BUFGCTRL
而不是级联
BUFGCE
。使用专用布线,当两个
BUFGCTRL
位于相同的时钟区域内时,可以以最小的延迟级联两个相邻的
BUFGCTRL
。