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

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

3天内不再提示

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

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

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

我们还可以采用手工布局的方式,这对于时序违例路径集中在某一个模块或某一个层次内的情形较为适用。使用此方法时需要注意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更为灵活,更为易用。只是需要用户确认哪些模块下的逻辑单元需要放置得紧凑些。

审核编辑:汤梓红

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

    关注

    447

    文章

    47820

    浏览量

    409193
  • 模块
    +关注

    关注

    7

    文章

    2486

    浏览量

    46543
  • 时序分析
    +关注

    关注

    2

    文章

    126

    浏览量

    22473
  • Vivado
    +关注

    关注

    18

    文章

    790

    浏览量

    65107

原文标题:如何让同一层次的模块在布局时更紧凑一些

文章出处:【微信号:Lauren_FPGA,微信公众号:FPGA技术驿站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

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

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

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

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

    阻抗控制与层叠设计的几个层次

    说起阻抗控制,很多人都是脸的轻描淡写:这么简单,我刚入行就会了。深入了解行业设计中进行阻抗控制的方法之后,我总结了4个层次。第0层次
    发表于 07-25 18:33

    为什么2812的板子比同一层次28335的板子还要贵

    为什么同一个档次的DSP学习板中,2812反而比28335的更贵呢,不是说28335功能更加强大吗?对比了几家买板子的(南京傅里叶、研旭等)2812都比28335贵,纠结到底学哪
    发表于 11-06 20:11

    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

    层次结构设计是否意味着将个大模块分成几个子模块

    我总是看到提到的“层次设计”的培训文件,这我有点困惑。我有以下问题;1.层次结构设计是否意味着将个大模块分成几个子
    发表于 03-21 12:42

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

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

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

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

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

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

    如何添加一层机械

    请问如何添加一层机械?谢谢
    发表于 09-17 02:56

    嵌入式一些日常小技巧分享

    杂记–算法学习日志+关于实验室部门架构的思考+嵌入式一些日常小技巧分享算法学习日志因为从初中到现在直是学习嵌入式程序的开发和研究,并没有面向对象的程序上有很大的研究和进展,近期发
    发表于 12-21 08:07

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

    在时序分析时,我们常会碰到的一类现象是:关键路径上的逻辑单元过于分散,导致布线延迟过大,从而造成时序违例。
    的头像 发表于 06-15 09:23 915次阅读
    让<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>的方法