0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

让同一层次的模块在布局时更紧凑一些的方法

FPGA技术驿站 来源:FPGA技术驿站 2023-06-15 09:23 次阅读

在时序分析时,我们常会碰到的一类现象是:关键路径上的逻辑单元过于分散,导致布线延迟过大,从而造成时序违例。对此,我们可以通过相对位置约束或绝对位置约束来限定相关逻辑的位置关系。就相对位置约束而言,即使芯片型号发生了改变也依然可以继承原有约束;而对于绝对位置约束,一旦芯片型号发生改变就要确认是否要调整相应位置。此外,如果时序违例路径较多,这种方法的有效性将大大降低。

我们还可以采用手工布局的方式,这对于时序违例路径集中在某一个模块或某一个层次内的情形较为适用。使用此方法时需要注意Pblock的大小。Pblock不能太小,否则会增加布局布线的压力;Pblock也不能太大,否则会浪费资源。实际上,Vivado针对Pblock的资源利用率也提供了指导值,该指导值跟整个芯片的资源利用率指导值一致,可通过命令report_failfast查看。

Pblock的形状也是一个重要的因素。通常建议为标准的矩形。不规则的形状如在矩形框中挖掉一个小的矩形形成“回”字形状会严重危害时序性能且导致编译时间增长。Pblock的位置也是一个重要因素。可以先让工具自动布局,在此基础上观察关键模块的分布情况,然后参考此位置确定Pblock的位置。

可以看到,使用Pblock要求工程师有一定的工程经验,需要考虑的因素也较多。如果Pblock的位置不合理,可能会出现顾此失彼的情形(Pblock内的模块时序改善了,而其他模块的时序又恶化了)。Pblock的另一弊端是缺乏灵活性。当芯片型号发生改变时很有可能重新确定Pblock的大小或位置。

好在Vivado提供了一个新的约束属性USER_CLUSTER(要求Vivado版本为2022.2或之后)。该属性的作用是指导工具在布局时将指定层次/模块下的逻辑单元放得更紧凑一些。为便于说明,我们看一个例子。在没有使用该属性时,布局结果如下图所示。可以看到整个设计的资源利用率并不高,但却比较分散。

8a373580-0b10-11ee-962d-dac502259ad0.png

接下来我们使用属性约束USER_CLUSTER。该属性的属性值为用户定义的组名,属性施加的对象为get_cells的返回值,也就是用户通过get_cells指定的模块,如下图所示。

8a630cf0-0b10-11ee-962d-dac502259ad0.png

使用此约束之后,最终的布局结果如下图所示。可以看到,相关资源已经非常紧凑了。

8a81da36-0b10-11ee-962d-dac502259ad0.png

相比于手工布局,USER_CLUSTER更为灵活,更为易用。只是需要用户确认哪些模块下的逻辑单元需要放置得紧凑些。



审核编辑:刘清

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

    关注

    1

    文章

    10

    浏览量

    6577
  • Vivado
    +关注

    关注

    19

    文章

    807

    浏览量

    66312
  • 时序仿真
    +关注

    关注

    0

    文章

    14

    浏览量

    7404
收藏 人收藏

    评论

    相关推荐

    元件库的一些东西放哪一层

    请问做单面板元件库时元件面的丝印和焊接面的丝印分别放在哪一层?一些注解文字放在哪一层?
    发表于 12-13 13:59

    单片机程序设计的十功力,你练到那一层了?

    操作,通常是使用时间系统的时间发生标志。同时在这一层如果能够将WINDOWS程序设计中的一些优秀思想利用起来,则非常好。能够领悟到这一层的,我所知道的前辈高手中少之又少。第六
    发表于 11-01 08:50

    PADS9.5 LAYOUT 设置元件 怎样 可以重叠放置 大的中间小的 同一层的?

    PADS9.5 LAYOUT 设置元件 怎样 可以重叠放置 大的中间小的 同一层的?
    发表于 08-04 15:39

    单片机程序设计的十功力,你练到那一层了?

    的程序是否能够有点实用价值。譬如应用在实际工程项目中。在这一层,应该开始思考如何程序结构简单模块化,如何合理的利用CPU的时间。我曾经写过这一层
    发表于 03-22 11:46

    单片机程序设计的十功力,你练到那一层了?

    的程序是否能够有点实用价值。譬如应用在实际工程项目中。在这一层,应该开始思考如何程序结构简单模块化,如何合理的利用CPU的时间。我曾经写过这一层
    发表于 09-07 10:13

    请问FPGA与DDR3是否必须放置同一层

    请问FPGA与DDR3是否必须在同一层放置,由于现在不在同一层,软件调试的时候图像有抖动,软件说是因为FPGA与DDR3未在同一层,导致时序有问题。
    发表于 12-26 09:37

    请问各位个问题,PCB中不在同一层的布线形成锐角有关系吗?

    PCB中不在同一层的线形成锐角有关系吗?硬件工程师 说不能这样走,但是我的想法是又不在同一层为什么不能?
    发表于 05-21 10:00

    为什么同一层铺动态铜皮有的可以自动避让?

    为什么同一层铺动态铜皮,有的可以自动避让有的就没有呢?
    发表于 07-23 05:35

    如何在ad16层次原理图中查看不同原理图里面的同一网络标号?

    ad16层次原理图里面如何查看不同原理图里面同一网络标号?
    发表于 08-28 04:44

    PCB设计过程中的一些问题和一些技巧分享

    PCB设计过程中的一些问题和一些技巧分享 1、如何利用层次图绘制电路原理图? 答:层次原理是模块
    发表于 09-07 20:08 17次下载

    VICOR模块一些基本应用

      VICOR模块一些基本应用
    发表于 11-24 11:42 17次下载

    一些文本数据量不够大的时候可用的一些实用方法

    在这篇文章中,我将展示一些由我自己开发或是我文章、博客、论坛、Kaggle和其他一些地方发现的方法,看看它们是如何在没有大数据的情况下
    的头像 发表于 11-19 17:39 6710次阅读
    <b class='flag-5'>一些</b><b class='flag-5'>在</b>文本数据量不够大的时候可用的<b class='flag-5'>一些</b>实用<b class='flag-5'>方法</b>

    一些实用的布局、提示和技巧

    本文将为初学者提供一些实用的布局、提示和技巧,可以帮助您避免事故或解决各种问题。该系列将不定期发布。
    的头像 发表于 08-09 16:56 1451次阅读
    <b class='flag-5'>一些</b>实用的<b class='flag-5'>布局</b>、提示和技巧

    介绍一些大功率IGBT模块应用中的一些技术

    PPT主要介绍了大功率IGBT模块应用中的一些技术,包括参数解读、器件选型、驱动技术、保护方法以及失效分析等。
    发表于 09-05 11:36 781次阅读

    如何同一层次模块布局更紧凑一些

    时序分析时,我们常会碰到的类现象是:关键路径上的逻辑单元过于分散,导致布线延迟过大,从而造成时序违例。对此,我们可以通过相对位置约束或绝对位置约束来限定相关逻辑的位置关系。就相对位置约束而言
    的头像 发表于 06-15 09:26 405次阅读
    如何<b class='flag-5'>让</b><b class='flag-5'>同一层次</b>的<b class='flag-5'>模块</b><b class='flag-5'>在</b><b class='flag-5'>布局</b>时<b class='flag-5'>更紧凑</b><b class='flag-5'>一些</b>