Vivado Design Suite中的增量实现和增量模式

Vivado Incremental(增量)是Xilinx FPGA设计工具中的一种功能,它允许对设计的一部分进行修改和重新编译,而不需要对整个设计进行重新编译。这种增量式的方法可以显著减少编译时间,特别是在进行小的修改或迭代开发时。

一、Incremental Implementation(增量实现)

增量实现是指增量编译设计流程中的实现阶段,它具有以下特点:
• 通过重用参考设计的先前布局和布线来保持质量和性能(QoR)的可预测性。
• 加快布局和路由的运行时间,或尝试在最后阶段实现时序闭合。
以下图中提供了增量实现设计流程的示意图。
在这里插入图片描述
1、Incremental Implementation Flow Designs(增量实现流程设计)
增量实现流程设计允许在现有设计的基础上进行修改和扩展,可以针对特定的设计目标或约束进行局部优化,而不是从头开始重新进行整个设计流程。通过重用先前的布局和布线信息,增量实现可以显著提高设计效率,减少设计周期,并有助于保持设计的质量和性能。这对于需要频繁迭代和修改的设计项目来说尤为有用。
如图2-31所示,增量运行需要一个参考检查点(checkpoint)作为起点来启动增量布局和布线。使用read_checkpoint -incremental .dcp命令可以启动增量流程,并且必须在place_design之前执行。
2、参考设计
参考设计通常是一个来自先前迭代或增量设计的不同变体的完全路由检查点。如果使用不同的变体或设计,重要的是确保参考设计中的层次结构名称与增量设计相匹配。当需要较低级别的重用时,例如仅重用RAM和DSP块的布局,参考检查点中只需包含这些单元的布局信息即可。参考设计必须与设备匹配。虽然建议工具版本也匹配,但这并不是必须的。
3、增量设计
增量设计是要通过实现工具运行的更新设计。它可以包括RTL更改、网表更改或两者都有。
允许更改约束,但一般来说,约束的收紧会对布局和布线产生重大影响,因此最好在增量流程之外进行更改。在增量实现流程中,如果约束过于严格,可能会导致布局和布线失败或性能下降。因此,在添加新的约束之前,应该仔细评估其对设计的影响,并在必要时进行适当的权衡和调整。
4、增量指令
控制增量流程行为的指令有三种。增量指令通过以下命令设置:

read_checkpoint -directive <directiveName> <reference>.dcp

①RuntimeOptimized
试图尽可能重用参考运行中的布局和布线信息。时序目标将与参考运行相同。如果参考运行的WNS(Worst Negative Slack,最差负裕量)为-0.050,那么增量运行将不会尝试在此设计上关闭时序,而是也将目标设为-0.050。这仅影响建立时间。当未指定任何指令时,这是默认行为。
②TimingClosure
将重用参考设计中的布局和布线,但会拆除不满足时序的路径并尝试关闭它们。为了尽可能获得时序改进,会运行一些运行时间密集型的算法,但由于布局在很大程度上是预先给出的,因此增益有限。这种技术对于参考WNS大于-0.250 ns的设计可能有效。
为了进一步提高时序闭合的可能性,可以运行report_qor_suggestions来生成自动设计增强建议。
③Quick
它在布局和布线过程中不调用计时器,而是使用相关逻辑的布局作为指导。这是最快的模式,但不适用于大多数设计。要使Quick模式有效,设计的WNS(最差负裕量)需要大于1.000 ns。这通常适用于ASIC仿真或原型设计。
注意:在2019.1及更早的版本中,通过在place_design和route_design中使用指令映射可以实现相同的行为。Explore指令映射到TimingClosure,Quick映射到Quick,其他指令映射到RuntimeOptimized。
2019.1及更早版本升级的用户,如果在place_design中指定了Explore或Quick指令,需要在2020.1中指定增量指令,以实现相同的功能。

二、Incremental Modes(增量模式)

通常情况下,增量实现工作在三种模式之一:自动模式、高复用模式或低复用模式。
1、自动增量
实现允许用户激活增量实现流程,但在发出read_checkpoint -auto_incremental命令时,由Vivado决定是使用默认算法还是增量算法。这个决定基于参考检查点的质量。
为了接受参考检查点,必须满足以下标准:
• 94% cell matching
• 90% net matching
• WNS > -0.250
通过保证了一个良好的参考检查点,增量流程可以获得良好的QoR(质量优化结果),而当检查点质量较差时,则会寻找新的布局和路由解决方案。
在project 模式下,检查点的更新也由系统管理,并遵循上述标准。在non-project模式下,用户可以控制是否更新检查点。
该流程通过以下命令激活:

read_checkpoint -incremental -auto_incremental <reference>.dcp

在更新检查点时,值得检查以确保WNS(最差负裕量)没有降低到不可接受的限度之外。这可以通过在实现流程的末尾运行以下命令来完成:

if {[get_property SLACK [get_timing_path]] > -0.250} { file copy -force <postroute>.dcp <reference>.dcp }

2、高复用模式
如果单元复用率高于75%,则运行增量实现。当单元复用率低于此值时,布局信息不会被复用,流程将继续使用默认算法。目标WNS由参考检查点和指令共同确定。
对于高复用模式,当place_design开始后,日志文件将打印以下消息:

INFO: [Place 46-42] Incremental Compile is being run in High Reuse Mode.

注意:上述TCL代码中的.dcp和.dcp是占位符,实际使用时需要替换为具体的检查点文件名。同样,.dcp和.dcp需要根据用户的项目实际情况来命名和生成。此外,上述TCL代码片段仅用于说明增量实现的检查点更新和高复用模式的概念,实际使用时可能需要更复杂的逻辑和错误处理。
3、低复用模式
复用由read_checkpoint -reuse_object -incremental .dcp开关确定。在这种模式下:
• 用户可以指定要复用的单元类型、层次化单元、时钟区域和SLR(Slice Logic Region,切片逻辑区域)。
• 目标WNS(最差负裕量)始终为0。
• 增量指令将被忽略,而使用默认布局和路由算法的指令。
低复用模式在设计的特定区域对布局和路由有挑战时最为有效。
使用场景示例包括:
• 从一次成功的运行中复用块存储器或DSP(数字信号处理)的布局,可以提高每次布局和路由迭代中成功运行的总次数。
• 复用间歇性满足时序的特定层次级别。
要确定工具是否处于低复用模式,可以在place_design开始后检查日志文件,查找以下消息:

INFO: [Place 46-42] Incremental Compile is being run in Low Reuse Mode.

请注意,上述TCL代码中的和.dcp是占位符,实际使用时需要替换为具体的对象列表和参考检查点文件名。同样,.dcp需要根据用户的项目实际情况来命名和生成。此外,上述TCL代码片段仅用于说明低复用模式的概念,实际使用时可能需要更复杂的逻辑和错误处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/815575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

std::stringstream

std::stringstream 是 C 标准库中的一个类&#xff0c;用于对字符串进行输入输出操作&#xff0c;类似于文件流&#xff08;std::ifstream 和 std::ofstream&#xff09;。它允许你像使用 std::cin 和 std::cout 一样使用字符串。 std::stringstream 可以将字符串作为输入源&am…

ThreadPoolExecutor线程池解析

ThreadPoolExecutor线程池解析 一、ThreadPoolExecutor常见参数 jdk中Executors提供了几种常用的线程池&#xff0c;底层都是ThreadPoolExecutor。 public ThreadPoolExecutor(int corePoolSize,//核心线程数int maximumPoolSize,// 最大线程数long keepAliveTime,//非核心线程…

大数据产品有哪些分类?各类里知名大数据产品都有哪些?

随着互联网技术的持续进步和全球数字化转型的推进&#xff0c;我们正处于一个数据爆炸的时代。在这样的大背景下&#xff0c;大数据已经逐渐崭露头角&#xff0c;成为了推动各行各业发展的关键因素和核心资源。大数据不仅仅是指数据的规模巨大&#xff0c;更重要的是它蕴含的价…

安卓手机APP开发的媒体内容部分__重中之重的内容变现渠道___插入广告

安卓手机APP开发的媒体内容部分__重中之重的内容变现渠道___插入广告 目录 客户端的插入广告 声明式的广告的支持 有广告的播放列表 ExoPlayer IMA库 用户界面上的考虑 伴随广告 独立广告 使用第三方的广告SDK 服务器端的插入广告 ExoPlayer IMA库 用户界面上的考虑…

spring-aop的使用(注解 +配置类的方式)(多个增强类的优先级问题)

spring-aop 首先&#xff0c;准备一个接口以及其实现类 Calculator接口&#xff1a;src/main/java/com.atguigu.service/Calculator接口 package com.atguigu.service;public interface Calculator {int add(int i, int j);int sub(int i, int j);int mul(int i, int j);int…

docker 容器指定utf-8编码

在运行 Docker 容器的时候&#xff0c;如果容器内应用需要使用 UTF-8 编码来正常处理中文&#xff0c;你可以通过设置环境变量来指定编码。 可以使用 -e 或者 --env 标志来设置环境变量。比如&#xff0c;设置 LANG 和 LC_ALL 环境变量为 C.UTF-8 或者 en_US.UTF-8&#xff1a…

量子信息产业生态研究(一):关于《量子技术公司营销指南(2023)》的讨论

写在前面。量子行业媒体量子内参&#xff08;Quantum Insider&#xff09;编制的《量子技术公司营销指南》是一本实用的英文手册&#xff0c;它旨在帮助量子科技公司建立有效的营销策略&#xff0c;同时了解如何将自己定位成各自的行业专家。本文对这篇指南的主要内容进行了翻译…

ubuntu上安装截图工具-Flameshot及其使用步骤说明

Flameshot 火焰截图-推荐 安装命令&#xff1a; sudo apt install flameshot 操作方式&#xff1a; 1&#xff09;打开 2&#xff09;右上角弹窗 3&#xff09;点击后弹出 选择进行截图 4&#xff09;截图后再选择分享 5&#xff09;再重新选择区域&#xff0c;出现编辑…

【蓝桥杯】2024年第15届真题题目

试题 A: 握手问题 本题总分&#xff1a; 5 分 【问题描述】 小蓝组织了一场算法交流会议&#xff0c;总共有 50 人参加了本次会议。在会议上&#xff0c; 大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进 行一次握手&#xff08;且仅有一次&a…

Android bug Unresolved reference: BR

新建项目后 导入viewBinding 编译后提示 Unresolved reference: BR 解决办法 app 目录下 build.gradle 中 plugins 节点 添加 id kotlin-kapt参考 https://stackoverflow.com/questions/77409050/could-not-find-androidx-corecore-ktx1-8-10

npm包管理工具升降级

一、npm降级 1.接大版本号&#xff0c;降级到大版本最新的小版本 npm install npm5 -g 2.接指定版本号 npm install npm5.01.01 -g 二、npm升级 升级到最新版本 npm install npm -g 详细参考&#xff1a;nodejs与npm版本对应关系以及使用nvm管理node版本以及降npm版本-CSDN博…

CMD 汉字乱码处理

windows 11 cmd汉字乱码问题处理 一 查看CMD编码 win R 输入 cmd 输入 chcp 查看回显信息 “936”代表的意思就是 GBK (汉字内码扩展规范)&#xff0c;通常情况下GBK也是cmd的默认编码。 解决乱码需要把编码改为 utf-8 二 临时修改 在 终端中输入 chcp 65001 三 永久修改…

蓝桥杯嵌入式第十五届省赛真题题目

蓝桥杯昨天也考完了&#xff0c;大家可以看看题目 客观题题目 程序题题目

【复读EffectiveC++17】条款17:以独立语句将newed对象置入智能指针

条款17&#xff1a;以独立语句将newed对象置入智能指针 此条款&#xff0c;依然是针对智能指针的补充&#xff0c;内容分为两个部分&#xff1a; 有什么问题怎么解决 一、有什么问题 取原书的例子&#xff1a; 写一个函数&#xff0c;用来揭示程序处理的优先权。 再写一个函…

Opencv图像 ROI 与 mask 掩膜(找到感兴趣的区域)

在OpenCV中&#xff0c;可以使用ROI&#xff08;Region of Interest&#xff09;技术来处理图像中的感兴趣区域。ROI是指图像中的一个子区域&#xff0c;它可以是矩形、多边形或其他形状。使用ROI技术可以在不影响图像其他部分的情况下&#xff0c;对图像的某个区域进行操作。 …

【Python函数和类4/6】递归与匿名函数

目录 目标 匿名函数 多个形参 匿名函数的局限性 递归 语言例子 数学例子 递归的实现 递归代码 练习 总结 目标 在之前的博客中&#xff0c;我们学习了定义函数、调用函数以及设置函数的参数。在今天&#xff0c;我们会补充函数的两个常见的知识点&#xff0c;一个是匿…

学浪视频怎么缓存?

缓存学浪视频轻而易举&#xff01;推荐使用“小浪助手”&#xff0c;一款便捷的工具&#xff0c;助你轻松实现。工具已经预先打包好&#xff0c;需要的朋友可以自行下载。快试试&#xff0c;畅享学习吧&#xff01; 学浪下载器链接&#xff1a;https://pan.baidu.com/s/1y7vcq…

spring容器

spring容器 实现方式 spring中提供了各式各样的IOC容器的实现供用户选择和使用&#xff0c;使用什么样的容器取决于用户的需要 BeanFactory 该接口是最简单的容器&#xff0c;提供了基本的DI支持。最常用的BeanFactory实现是XmlBeanFactory类&#xff0c;根据XML文件中的定义加…

STL--什么是迭代器的失效

迭代器失效指的是当容器发生变化时&#xff0c;之前获取的迭代器不再指向有效的元素或者不再有意义&#xff0c;这种情况在 C STL 编程中比较常见。迭代器失效主要发生在以下几种情况&#xff1a; 1.元素被删除或修改: 如果你删除了某个迭代器所指向的元素&#xff0c;那么这个…

RetinalNet论文笔记

RetinalNet 概述1. 引言2. 相关工作3. 焦点损失4. RetinaNet Detector 检测器5. 实验6. 结论 3. Focal loss3.1. 平衡交叉熵3.2. 焦点损失定义3.3. 类别不平衡和模型初始化3.4. 类别不平衡和两阶段检测器 4. RetinaNet Detector特征金字塔网络骨干&#xff08;Feature Pyramid …