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

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

3天内不再提示

如何给每个RM添加约束?

FPGA技术驿站 来源:FPGA技术驿站 2023-08-17 09:23 次阅读

在常规非DFX(DynamicFunction eXchange)的Vivado设计中,我们可能会碰到给某一个指定的模块添加特定的约束。这时一个简单的方法就是将这些约束单独写在一个.xdc或.tcl文件中,然后将其添加到Vivado工程中,并将该约束文件的属性SCOPE_TO_CELLS设定为目标模块。如果该模块在设计中被多次实例化,不管这些实例化模块在设计中的层次如何,此时可设置该约束文件的属性SCOPE_TO_REF,如下图所示。这里我们就能理解对于一个cell其属性NAME和REF_NAME的区别:前者是实例化后的名字,后者为引用名(可以理解为Verilog的module name或VHDL的entityname)。另外,需要特别注意的是使用上述方法时,在.xdc或.tcl文件中的约束其施加的对象是以该指定模块作为顶层的而不是以实际工程的顶层作为顶层。如果采用Non-Project模式,那么可以通过read_xdc读入约束文件,然后通过set_property命令指定约束文件的属性SCOPE_TO_CELLS或者SCOPE_TO_REF。

2a0138ba-3c92-11ee-ac96-dac502259ad0.png

在DFX设计中,我们也会碰到类似的情形,即给同一个RP(Reconfigurable Partition)下的不同RM(Reconfigurable Module)添加不同的约束。这时要考虑几个因素:同一个RP下不管有几个RM,在设计中均对应同一个实例化的名字。这意味着不能仅仅通过SCOPE_TO_CELLS将这些约束对应到不同的RM上。另外,每个RM只有在自身对应的configuration上才有效,所以要保证在这个configuration上对应的RM的约束也要有效。从下图可以看到,当前这个DFX设计中有一个RP,名字为图中红色方框所示,该RP下有两个RM,分别为rp1rm1和rp1rm2。

2a176a72-3c92-11ee-ac96-dac502259ad0.png

基于上图所示DFX设计,现在我们要分别对rp1rm1和rp1rm2添加不同的约束。这里我们先介绍一下DFX设计的约束管理模式。在DFX设计中,约束是按configuration分组的。这是因为不同的configuration对应不同的RM。但不管有几个configuration,都会有主约束,也就是ParentRun对应的约束,默认在constrs_1下。主约束包括:顶层IO约束(管脚分配/电平设置/input delay/output delay)、全局时钟周期约束和每个RP的Pblock信息。主约束在运行Parent Run时生效,并在运行结束之后锁定静态区时一同被锁定,因此,后续的ChildRun会直接获得这些约束信息不需要重写一遍。默认情况下,Child Run并没有单独的ConstraintSet,也就没有单独的约束文件。如果要针对RM施加约束,而RM又出现在Child Run,就要建立新的Constraint Set,这需要如下几个步骤完成。

第一步:创建与指定RM相关的约束,这些约束应放在单独的.xdc文件中。

第二步:创建新的Constraint Set,并将第一步创建的约束文件添加到该Constraint Set下。

除了Parent Run之外,有几个ChildRun,如果这些Child Run里的RM又需要单独约束,那么就要创建几个Constraint Set。创建ConstraintSet的方法如下图所示。

2a385ab6-3c92-11ee-ac96-dac502259ad0.png

第三步:运行DFX Wizard到EditConfiguration Runs界面,如下图所示。在对应的Constraints列选择相应的Constraint Set,如图中红色方框所示。

2a53e57e-3c92-11ee-ac96-dac502259ad0.png

2a73b8f4-3c92-11ee-ac96-dac502259ad0.png

在Design Run窗口中就能看到相应的ChildRun对应的Constraint Set,如下图中的红色方框所示。如果没生效,要确保ChildRun的Property APPLY_CONSTRSET被勾选。

2a9dd36e-3c92-11ee-ac96-dac502259ad0.png

2ab68260-3c92-11ee-ac96-dac502259ad0.png

上述过程针对的是Vivado Project模式。在Non-Project模式下,当运行rp1rm2对应的Configuration时,要先打开锁定静态区布线信息的dcp(在这个dcp中,RP均为黑盒子),然后加载对rp1rm2OOC综合生成的dcp,这个过程结束之后即可通过read_xdc读入针对rp1rm2的约束文件。

针对RM的约束文件,通常要设定以下几个属性:PROCESSING_ORDER,SCOPED_TO_CELLS和USED_IN,如图中红色方框所示。

2ae3aaf6-3c92-11ee-ac96-dac502259ad0.png

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

    关注

    1

    文章

    540

    浏览量

    24402
  • 命令
    +关注

    关注

    5

    文章

    638

    浏览量

    21849
  • 约束
    +关注

    关注

    0

    文章

    82

    浏览量

    12637
  • Vivado
    +关注

    关注

    18

    文章

    790

    浏览量

    65100
收藏 人收藏

    评论

    相关推荐

    FPGA主时钟约束详解 Vivado添加时序约束方法

    在FPGA设计中,时序约束的设置对于电路性能和可靠性都至关重要。在上一篇的文章中,已经详细介绍了FPGA时序约束的基础知识。
    发表于 06-06 18:27 7045次阅读
    FPGA主时钟<b class='flag-5'>约束</b>详解 Vivado<b class='flag-5'>添加</b>时序<b class='flag-5'>约束</b>方法

    如何给每个RM添加约束?对RM添加约束的步骤有哪些呢?

    在常规非DFX(Dynamic Function eXchange)的Vivado设计中,我们可能会碰到给某一个指定的模块添加特定的约束
    的头像 发表于 08-17 09:22 482次阅读
    如何给<b class='flag-5'>每个</b><b class='flag-5'>RM</b><b class='flag-5'>添加</b><b class='flag-5'>约束</b>?对<b class='flag-5'>RM</b><b class='flag-5'>添加</b><b class='flag-5'>约束</b>的步骤有哪些呢?

    时序约束

    那位高人指点一下啊,怎么差分时钟添加时序约束
    发表于 08-08 20:58

    FPGA时序分析如何添加其他约束

    你好: 现在我使用xilinx FPGA进行设计。遇到问题。我不知道FPGA设计是否符合时序要求。我在设计中添加了“时钟”时序约束。我不知道如何添加其他约束。一句话,我不知道哪条路径应
    发表于 03-18 13:37

    如何使用ucf约束文件为输入数据添加一个小延迟?

    如何使用ucf约束文件为输入数据添加一个小延迟?我试图为来自名为“chana_rd”的引脚的输入数据添加一个小延迟,如何添加此延迟?另外,我对chana_rd有一个
    发表于 03-28 12:03

    怎么才能删除自动添加的时序约束

    我使用时钟发生器ip来生成几个时钟。但是当我生成比特流时,XPS会产生错误:错误:未满足3个约束。通过读取Timing约束,可以自动添加一些constainsts有没有人告诉我如何解决这个问题?谢谢。
    发表于 11-04 08:44

    FPGA上设计系统应该添加任何约束吗?

    我的原理图中,我检查了所有子模块的时钟都没有缓冲区。图中的蓝线是我的时钟。我应该添加任何约束吗?我为所有顶级模块的输入和输出添加了时序约束
    发表于 05-22 09:22

    怎样FPGA逻辑电路添加约束标签呢

    :如代码中所述,我们在这里mem添加约束属性ram_style,要求在实现时用uram来实现。对应生成的Verilog文件如下所示:在生成的Verilog代码里我们可以看到,memCtrl_mem
    发表于 07-22 14:28

    FPGA开发之时序约束(周期约束

    时序约束可以使得布线的成功率的提高,减少ISE布局布线时间。这时候用到的全局约束就有周期约束和偏移约束。周期约束就是根据时钟频率的不同划分为
    发表于 02-09 02:56 612次阅读

    添加时序约束的技巧分析

    一般来讲,添加约束的原则为先附加全局约束,再补充局部约束,而且局部约束比较宽松。其目的是在可能的地方尽量放松
    发表于 11-25 09:14 2386次阅读

    混合搜索的含逻辑“与”“或”的RM优化算法

    相对于标准约束优化问题,广义约束优化问题(或称析取优化问题1的等式或不等式约束条件中不仅包含逻辑与关系,还含有逻辑或关系.单调速率(RM)优化问题是广义
    发表于 12-25 17:13 0次下载
    混合搜索的含逻辑“与”“或”的<b class='flag-5'>RM</b>优化算法

    如何理解和使用做FPGA设计时的过约束

    。 什么是过约束(overconstraint) 所谓过约束,就是给目标时钟一个超过其设定运行频率的约束。比如实际运行的时钟频率是100MHz,我们在给这个时钟添加
    的头像 发表于 03-29 11:56 4581次阅读
    如何理解和使用做FPGA设计时的过<b class='flag-5'>约束</b>?

    Vivado设计约束功能概述

    XDC约束可以用一个或多个XDC文件,也可以用Tcl脚本实现;XDC文件或Tcl脚本都要加入到工程的某个约束集(set)中;虽然一个约束集可以同时添加两种类型
    的头像 发表于 06-30 11:27 2979次阅读

    如何在Vivado中添加时序约束

    前面几篇文章已经详细介绍了FPGA时序约束基础知识以及常用的时序约束命令,相信大家已经基本掌握了时序约束的方法。
    的头像 发表于 06-23 17:44 1392次阅读
    如何在Vivado中<b class='flag-5'>添加</b>时序<b class='flag-5'>约束</b>

    如何在Vivado中添加时序约束呢?

    今天介绍一下,如何在Vivado中添加时序约束,Vivado添加约束的方法有3种:xdc文件、时序约束向导(Constraints Wiza
    的头像 发表于 06-26 15:21 2233次阅读
    如何在Vivado中<b class='flag-5'>添加</b>时序<b class='flag-5'>约束</b>呢?