在DFX设计中,我们也会碰到类似的情形,即给同一个RP(Reconfigurable Partition)下的不同RM(Reconfigurable Module)添加不同的约束。这时要考虑几个因素:同一个RP下不管有几个RM,在设计中均对应同一个实例化的名字。这意味着不能仅仅通过SCOPE_TO_CELLS将这些约束对应到不同的RM上。另外,每个RM只有在自身对应的configuration上才有效,所以要保证在这个configuration上对应的RM的约束也要有效。从下图可以看到,当前这个DFX设计中有一个RP,名字为图中红色方框所示,该RP下有两个RM,分别为rp1rm1和rp1rm2。
基于上图所示DFX设计,现在我们要分别对rp1rm1和rp1rm2添加不同的约束。这里我们先介绍一下DFX设计的约束管理模式。在DFX设计中,约束是按configuration分组的。这是因为不同的configuration对应不同的RM。但不管有几个configuration,都会有主约束,也就是Parent Run对应的约束,默认在constrs_1下。主约束包括:顶层IO约束(管脚分配/电平设置/input delay/output delay)、全局时钟周期约束和每个RP的Pblock信息。主约束在运行Parent Run时生效,并在运行结束之后锁定静态区时一同被锁定,因此,后续的Child Run会直接获得这些约束信息不需要重写一遍。默认情况下,Child Run并没有单独的Constraint Set,也就没有单独的约束文件。如果要针对RM施加约束,而RM又出现在Child Run,就要建立新的Constraint Set,这需要如下几个步骤完成。
第一步:创建与指定RM相关的约束,这些约束应放在单独的.xdc文件中。
第二步:创建新的Constraint Set,并将第一步创建的约束文件添加到该Constraint Set下。
除了Parent Run之外,有几个Child Run,如果这些Child Run里的RM又需要单独约束,那么就要创建几个Constraint Set。创建Constraint Set的方法如下图所示。
第三步:运行DFX Wizard到Edit Configuration Runs界面,如下图所示。在对应的Constraints列选择相应的Constraint Set,如图中红色方框所示。
在Design Run窗口中就能看到相应的Child Run对应的Constraint Set,如下图中的红色方框所示。如果没生效,要确保Child Run的Property APPLY_CONSTRSET被勾选。
上述过程针对的是Vivado Project模式。在Non-Project模式下,当运行rp1rm2对应的Configuration时,要先打开锁定静态区布线信息的dcp(在这个dcp中,RP均为黑盒子),然后加载对rp1rm2 OOC综合生成的dcp,这个过程结束之后即可通过read_xdc读入针对rp1rm2的约束文件。
针对RM的约束文件,通常要设定以下几个属性:PROCESSING_ORDER,SCOPED_TO_CELLS和USED_IN,如图中红色方框所示。
转载事宜请私信 | 获得授权后方可转载
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有