Vivado里如何使用模糊性的位置约束?

描述

提到位置约束,我们会想到手工布局的方式,即画Pblock,将指定模块放入相应Pblock内,这既是面积约束又是位置约束,但显然这种约束是较为具体的位置约束。这种方式需要工程师有一定的经验,有时还需要借鉴参考Vivado之前的布局结果,换言之,我们确定的Pblock位置未必是工具认为的最佳位置。对于特定的底层单元,例如RAMB36K或DSP48,可通过属性LOC指定其具体位置(site的位置),显然这也是非常具体的位置约束。那么是否可以做模糊的位置约束?即希望指定的模块彼此靠得近一些,或一些底层单元在指定区域(无需指定具体site的位置)。答案是肯定的。这里我们就介绍几个属性。

CLOCK_REGION 属性CLOCK_REGION可用于指定时钟缓冲器如BUFG的位置,不同于属性LOC,/CLOCK_REGION仅确定指定时钟缓冲器位于哪个时钟区域,这个区域内会有多个时钟缓冲区可供选择。CLOCK_REGION可以在XDC中使用,方法如下:

Vivado

在大多数情况下,时钟缓冲器由全局时钟管脚、MMCM/PLL或GT*_CHANNELs驱动,这种情况下,Vivado会自动确定时钟缓冲器的位置,无需人工干预。 CLOCK_LOW_FANOUT 如果某个时钟所驱动的负载较小(时钟扇出较低),那么可以对时钟缓冲器输出端所连接的网线施加属性CLOCK_LOW_FANOUT,并将其值设置为TRUE,这样工具将尝试将这些负载放置在一个时钟区域内,但用户无需指定到底是哪个时钟区域。具体使用方法如下:

Vivado

这里需要注意:这个属性的施加对象是网线net,这个net应是时钟缓冲器输出端所连接的net。此外,如果这些负载无法放置在一个时钟区域内(资源不够),那么工具将会忽略此约束。

审核编辑:汤梓红

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

全部0条评论

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

×
20
完善资料,
赚取积分