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

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

3天内不再提示

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

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

在常规非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.png2a73b8f4-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

    文章

    79

    浏览量

    13091
  • 时钟约束
    +关注

    关注

    0

    文章

    15

    浏览量

    5990
  • Verilog语言
    +关注

    关注

    0

    文章

    113

    浏览量

    8160
  • dfx设计
    +关注

    关注

    0

    文章

    6

    浏览量

    65

原文标题:如何给每个RM添加约束?

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

收藏 人收藏

    评论

    相关推荐

    时序约束实操

    添加约束的目的是为了告诉FPGA你的设计指标及运行情况。在上面的生成约束之后,在Result àxx.sdc中提供约束参考(请注意该文件不能直接添加
    的头像 发表于 04-28 18:36 565次阅读
    时序<b class='flag-5'>约束</b>实操

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

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

    嗨,我是初学者,在FPGA上设计系统。我检查了我的输出没有生成,所以我想要。我5个子模块,它们具有来自相同输入的时钟。据我所知,考虑到不同金属与时钟输入的不同延迟,应对每个子模块进行时钟缓冲。但在
    发表于 05-22 09:22

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

    布线时的动作,当切换到SpinalHDL来描述电路时,身为一门优秀的HDL,怎能不支持这种约束标签的添加约束语法在SpinalHDL里,为方便给RTL
    发表于 07-22 14:28

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

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

    添加时序约束的技巧分析

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

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

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

    浅谈FPGA的时序约束四大步骤

    很多读者对于怎么进行约束约束步骤过程有哪些等,不是很清楚。明德扬根据以往项目的经验,把时序约束步骤,概括分成四大步
    的头像 发表于 07-02 10:56 5068次阅读
    浅谈FPGA的时序<b class='flag-5'>约束</b>四大<b class='flag-5'>步骤</b>

    如何在Vivado中添加时序约束

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

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

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

    如何给每个RM添加约束

    在常规非DFX(DynamicFunction eXchange)的Vivado设计中,我们可能会碰到给某一个指定的模块添加特定的约束。这时一个简单的方法就是将这些约束单独写在一个.xdc或.tcl
    的头像 发表于 08-17 09:23 335次阅读
    如何给<b class='flag-5'>每个</b><b class='flag-5'>RM</b><b class='flag-5'>添加</b><b class='flag-5'>约束</b>?