vivado 重复使用合成结果、约束冲突

2024-03-22 22:52

本文主要是介绍vivado 重复使用合成结果、约束冲突,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

重复使用合成结果

增量编译的性能可以与合成中的变化量相关联。重复使用的合成结果限制了更改量,从而提高了性能整体增量编译流的一部分。

Vivado合成

Vivado合成可以增量运行,只需很少的设置。这需要一个检查点在合成之前阅读。它是在项目模式下运行时自动设置的,但不是项目模式下,必须将其添加到脚本中。有关更多信息,请参阅Vivado Design Suite用户指南中的增量合成:合成(UG901)。IP和块设计在上下文外模式下自动合成,并将重用缓存结果(如果可用)。有关更多信息,请参阅Vivado Design中的断章取义设计流程Suite用户指南:设计流程概述(UG892)。

Synplify合成

Synplify可以使用编译点流来保存结果。Synplify提供了两种不同的编译点流,它是自动的和手动的。在自动编译点模式中,编译点是根据现有的层次结构和利用率通过合成自动选择的估计。这是一种按钮模式。除了启用流之外,不需要任何操作就你而言。要启用,请选中GUI中的“自动编译点”复选框,或添加以下内容设置为Synplify项目:

set_option -automatic_compile_point 1

手动编译点流提供了更多的灵活性,但需要更多的交互选择编译点。流程包括编译设计,然后使用SCOPE编辑器“编译点”选项卡或define_Compile_point设置。有关编译的更多信息点流,请参阅Synplify联机帮助。

保存重用后检查点

read_checkpoint-incremental之后,将引用检查点应用于当前在设计中,增量重用数据在整个流程中都会保留下来。如果保存了检查点,则在相同或单独的Vivado Design Suite会话中重新加载,它仍处于增量编译中模式请考虑以下命令序列:

opt_design; # optimize the current design
read_checkpoint -incremental reference.dcp; # apply reference data to
current design write_checkpoint incr.dcp; # save a snapshot of the current
design
read_checkpoint incr.dcp
place_design
write_checkpoint top_placed.dcp; # save incremental placement result
route_design

在read_checkpoint incr.dcp时,Vivado工具确定存在增量数据,并且随后的place_ design和route_design命令递增地运行。即使退出并重新启动Vivado Design Suite,也可以按照以下命令序列route_design命令以增量模式运行,使用原始路径中的路由数据引用检查点引用.dcp:

read_checkpoint top_placed.dcp
phys_opt_design
route_design

约束冲突

修订设计的约束可能与参考检查点的物理数据相冲突。当发生冲突时,行为取决于所使用的约束。如所示以下示例。

LOC约束冲突示例

约束为单元cell_A分配固定位置RAMB36_X0Y0。然而,在参考中检查点引用.dcp,单元_A被放置在RAMB36_X0Y1,并且不同的单元单元_B被放置放置在RAMB36_X0Y0处。在运行read_checkpoint-incremental reference.dcp之后,cell_A被放置在X0Y0和单元_ B被取消放置。单元cell_B是在增量放置过程中放置的。

PBlock冲突示例

在引用检查点中没有Pblock,但已将一个Pblock添加到当前运行中。如果存在冲突,则使用来自参考检查点的放置数据。

影响计时性能的因素

有许多因素会影响工具保持或提高性能的能力相对于参考运行。以下列表涵盖了工具可能无法使用的主要原因达到预期性能

•重复使用水平低。当重复使用率较低时,大量预放置细胞可能会限制为新逻辑找到最佳位置的能力。建议在中使用默认流这些案例。

•关键路径的变化。如果路径变得更糟,例如添加更多的单元,则计时无法保持相同的性能。对于这些情况,建议进行审查改变并进一步优化。

•变化发生在模具的堵塞区域。当设计可接受的范围有限时新单元格有时最好使用默认流找到新的解决方案。在里面在这种情况下,用户可以从运行默认流和增量流中获益看看哪种情况下表现最好。

•指令设置。当RuntimeOptimized设置为指令时,工具将不会尝试改进超出参考设置的范围。

影响编译时间改进的因素

影响编译时改进的因素包括:

•时间关键领域的变化量。如果关键路径的放置和布线不能重复使用,需要付出更多的努力来保持时间。此外,如果小的设计更改引入参考设计中不存在的新时序问题、更高的工作量和运行时间可能需要,并且设计可能不符合时间要求。

•地点和路线运行时间的初始化部分。在短距离和路线运行中Vivado放置器和路由器的初始化开销可能会消除递增的地点和路线过程。

孤立路由段

一些单元可能已经从当前设计中删除或在放置期间移动,从参考设计中留下孤立的管段。如果您在Vivado IDE中运行,您可能会看到潜在的问题网络。这些孤立或连接不正确的路由分段在Vivado路由器的增量路由期间被清理。放置过程中会出现以下INFO消息。

INFO: [Place 46-2] During incremental compilation, routing data from the
original checkpoint is applied during place_design. As a result, dangling
route segments and route conflicts may appear in the post place_design
implementation due to changes between the original and incremental
netlists. These routes can be ignored as they will be subsequently resolved
by route_design. This issue will be cleaned up automatically in
place_design in a future software release.

配置增量流

您可以使用config_implementation命令配置增量流。到查看该命令的默认值和当前值,请使用report_config_implementation命令。要更新这些值,请使用config_implementation命令。以下是一个示例:

report_config_implementation
config_implementation { {incr.ignore_user_clock_uncertainty true} }

注意:通过用相同的方法对键值对进行分组,可以一次更新多个元素如上图所示,位于外支架内。您可以配置以下内容:

•自动增量中的小区匹配、网络匹配和WNS的最小阈值流

•当自动增量流量标准时,综合和实施的行为不满足。此检查发生在合成运行开始时和read_checkpoint-用于实现的增量。可以设置为Terminate停止流或切换到退出增量流但继续的DefaultFlow具有默认流量设置。

•流程是否忽略了通常用于过度拉紧放置器并强制更紧密地放置。

这篇关于vivado 重复使用合成结果、约束冲突的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/836380

相关文章

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

poj 3159 (spfa差分约束最短路) poj 1201

poj 3159: 题意: 每次给出b比a多不多于c个糖果,求n最多比1多多少个糖果。 解析: 差分约束。 这个博客讲差分约束讲的比较好: http://www.cnblogs.com/void/archive/2011/08/26/2153928.html 套个spfa。 代码: #include <iostream>#include <cstdio>#i

poj 3169 spfa 差分约束

题意: 给n只牛,这些牛有些关系。 ml个关系:fr 与 to 牛间的距离要小于等于 cost。 md个关系:fr 与 to 牛间的距离要大于等于 cost。 隐含关系: d[ i ] <= d[ i + 1 ] 解析: 用以上关系建图,求1-n间最短路即可。 新学了一种建图的方法。。。。。。 代码: #include <iostream>#include

POJ 1364差分约束

给出n个变量,m个约束公式 Sa + Sa+1 + .... + Sa+b < ki or > ki ,叫你判断是否存在着解满足这m组约束公式。 Sa + Sa+1   +   .+ Sa+b =  Sum[a+b] - Sum[a-1]  . 注意加入源点n+1 。 public class Main {public static void main(Strin

创建表时添加约束

查询表中的约束信息: SHOW KEYS FROM 表名; 示例: 创建depts表包含department_id该列为主键自动增长,department_name列不允许重复,location_id列不允许有空值。 create table depts(department_id int primary key auto_increment,department_name varcha

六、Maven依赖管理、依赖传递和依赖冲突

1.Maven依赖管理 Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题,使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程序或模块中,避免出现版本冲突和依赖缺失等问题。 我们通过定义 POM 文件,Maven 能够自动解析项目的依赖关系,并通过 Maven 仓库自动下载和管理依赖,从而避免了手动

非空约束(Not Null)

修改表添加非空约束 使用DDL语句添加非空约束 ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL; 示例: 向emp表中的salary添加非空约束。 alter table emp modify salary float(8,2) not NULL; 删除非空约束 使用DDL语句删除非空约束 ALTER TABLE 表名 MODIFY 列名 类型 NULL;

[数据结构] 哈希结构的哈希冲突解决哈希冲突

标题:[C++] 哈希结构的哈希冲突 && 解决哈希冲突 @水墨不写bug 目录 一、引言         1.哈希         2.哈希冲突         3.哈希函数  二、解决哈希冲突 1.闭散列  I,线性探测 II,二次探测 2.开散列 正文开始: 一、引言         哈希表是一种非常实用而且好用的关联式容器,如果你刷过不少题,

MyBatis学习——解决字段名与实体类属性名不相同的冲突

转载地址:http://www.cnblogs.com/xdp-gacl/p/4264425.html

解决caffe 编译过程中protobuf版本冲突的问题

在编译caffe python3版本时一直会出现如下错误,(安装caffe python3具体方法可参考:https://blog.csdn.net/tingtie1438/article/details/82085199 ): 通过其错误信息可知是protobuf出了问题,现在网上教程一般都是默认安装的 libprotobuf-dev 和 protobuf-compiler,对于pytho