Vivado 布局布线约束之pblock

对于某些特殊的FPGA工程,可能会存在部分对于布局布线有较为精确要求的模块。此时,将这些逻辑约束在FPGA的特定位置上是一个较好的解决方案。

关于pblock的使用可以参考文章布局约束Pblock设置方法_evlpr8的博客-CSDN博客,这篇写得相当详细。这里说两个我实际使用pblock时遇到的问题。

一. pblock 和 LOC 的优先级问题

由于项目中存在部分需要用BEL和LOC的进行布局约束的逻辑资源,这些资源分布于工程的各个模块中。如果将该部分资源与pblock约束的逻辑资源交叉的部分分离开来,即使是使用GUI而非修改xdc,也会显得十分麻烦。

而在实现工程时,在对pblock的约束语句中,可以将所有二级模块都放到该pblock中,随后对于需要使用BEL和LOC进行约束的逻辑资源,再额外添加相应的约束语句。目前看来BEL和LOC执行的优先级是高于pblock的add_cells_to_pblock命令的。

        这一操作会在message里留下warning:[DRC LOCE-1] Pblock ranges contradict LOC constraints on logic assigned to the Pblock: Pblock pblock_1's ranges fail to contain LOC constraints on assigned instance block3/XLXI_1/XLXI_8/XLXI_1/XLXI_1 (and 1516 other instances). 但是实现结果是符合预期的。

二. pblock的IS_SOFT属性

        在将模块逻辑资源的布局布线全部约束在给定的pblock区域之后,有时候会发现部分未被约束的逻辑资源被放置到了pblock之外的位置上,即使pblock内部的逻辑资源是充足的。这可能是VIVADO在pblock约束和最小时序违例中进行均衡的结果。通过使用以下语句:

        set_property IS_SOFT FALSE [get_pblocks pblock_1]

        可以修改pblock的 IS_SOFT 属性,该属性为FALSE时,所有的逻辑资源都不会被放置在pblock之外,除了使用BEL和LOC进行约束的部分。

        

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值