针对UltraScale/UltraScale+芯片DFX应考虑的因素有哪些(2)

描述

UltraScale/UltraScale+芯片开始支持BUFG_*、PLL和MMCM出现在动态区,在7系列FPGA中这些时钟资源只能在静态区。当这些时钟资源出现在动态区时应遵循如下规则:

动态区的Pblock

动态区的Pblock形状最好是标准的矩形。如果这个Pblock是由多个矩形共同构成,那么最高的那个矩形应和时钟区域边界对齐。避免出现U形或H形Pblock。U形Pblock如下图所示。这会增大布线难度。

FPGA

类似地,在动态区中间出现小的静态区,如下图所示,I/O列位于动态区Pblock夹缝中,这是允许的,但仍然要尽量避免,因为在角落处容易出现布线拥塞。

FPGA

如下图所示的这种楼梯形状的Pblock也要避免,同样会在拐角处导致布线拥塞。

还需要注意的是同一个时钟区域只可以存在一个RP对应的Pblock,换言之,不支持时钟区域被多个RP共享,即使Pblock并未发生重叠。

FPGA

CLOCK_ROOT

当Pblock是由多个矩形构成时,工具会自动将RM内时钟的CLOCK_ROOT放置在最高的矩形对应的Pblock所在的时钟区域内。

但是,如果用户通过属性USER_CLOCK_ROOT提前约束了该时钟的CLOCK_ROOT,工具就会遵循这个约束值。

这就可能出现USER_CLOCK_ROOT的值不合理的情形即不是最高矩形Pblock所在的时钟区域内,这就很容易导致布线失败。

如下图所示,如果USER_CLOCK_ROOT的值为X2Y2,对应Pblock左上角的时钟区域,那么时钟布线是无法到达Pblock

右下角即X3Y1时钟区域的。相反,如果USER_CLOCK_ROOT设定为X3Y1或X3Y2,那么就不会出现布线失败的问题。

FPGA

当动态区的时钟是由BUFG_GT驱动(显然BUFG_GT的输入来自于高速收发器的输出)时,需要注意BUFG_GT驱动的时钟要求其CLOCK_ROOT和BUFG_GT在同一个时钟区域内。

如果该时钟区域不是最高的Pblock对应的时钟区域,同样会出现布线失败。

这时解决方案是:复制BUFG_GT,一个和GT连接给GT逻辑用,一个给用户逻辑用,这样每个时钟就可以单独设置自己的CLOCK_ROOT。

全局时钟使用规则

如果时钟源在RM(RP1)内,那么该时钟既可以驱动静态区的逻辑,也可以驱动其他RM(RP2)内的逻辑。

但需要注意:因为时钟源是在RP1对应的RM内,因此RP1下的所有RM时钟拓扑结构必须保持一致,即如果RP1/RM1使用的是MMCM+BUFGCE的结构,那么RP1/RM2也必须使用此结构,这样时钟走线才能保持一致。但可以允许RP1/RM1和RP1/RM2内MMCM的参数不同,以支持不同的输出频率。

因为时钟源在动态区,如果动态区产生的时钟要驱动静态区的逻辑,那么对该时钟也要做隔离。常规信号可采用2:1的MUX进行隔离,但对于高扇出的时钟信号是不能采用此隔离方案的。这时可使用BUFGMUX,或者在重配置时将静态区的逻辑置于复位状态。







审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分