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.hqwc.cn/news/616896.html

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

相关文章

LeetCode18: 四数之和

目录 题目&#xff1a; 题解&#xff1a; 代码&#xff1a; 题目&#xff1a; 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元组元…

Ubuntu-22.04安装VMware虚拟机并安装Windows10

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、VMware是什么&#xff1f;二、安装VMware1.注册VMware账号2.下载虚拟机3.编译vmmon&vmnet4.加载module5.安装bundle 三、安装Windows101.基础配置2.进阶…

cog predict docker unknown flag: --file

如图&#xff1a; 使用cog predict -i image“link-to-image” 出现docker unknown flag: --file的问题。 解决方法&#xff08;对我可行&#xff09;&#xff1a;切换cog版本。 这个是我一开始的cog安装命令&#xff08;大概是下的最新版&#xff1f;&#xff09;&#xff1…

记录day1

1.早上 ①协同过滤算法 基于物品基于用户分别是如何实现的 相似度的计算方式 基于用户和基于物品的区别 实时性和新物品这里&#xff1a; 实时性指的是用户有新行为&#xff0c;这样基于物品就好&#xff0c;因为用户新行为了&#xff0c;用户矩阵不会变化&#xff0c;用户…

2023数据要素白皮书(免费下载)

【1】关注本公众号&#xff0c;转发当前文章到微信朋友圈 【2】私信发送 【2023年数据资源入表白皮书】 【3】获取本方案PDF下载链接&#xff0c;直接下载即可。 如需下载本方案PPT原格式&#xff0c;请加入微信扫描以下方案驿站知识星球&#xff0c;获取上万份PPT解决方案&a…

Python | Leetcode Python题解之第19题删除链表的倒数第N个结点

题目&#xff1a; 题解&#xff1a; class Solution:def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:dummy ListNode(0, head)first headsecond dummyfor i in range(n):first first.nextwhile first:first first.nextsecond second.nextsecond.ne…

CSS3 常用样式

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 ✍CSS3 常用样式&#x1f48e;1 CSS3 新增选择器&#x1f339;1.1 属性选择器…

2024年第十五届蓝桥杯C++B组个人解

2024年第十五届蓝桥杯CB组 A: 握手问题&#xff08;5分&#xff09;问题描述思路 B: 小球反弹&#xff08;5分&#xff09;问题描述思路 C: 好数&#xff08;10分&#xff09;问题描述输入格式输出格式样例输入1样例输出1样例输入2样例输出2样例说明评测用例规模与约定思路 博客…

在Vivado Design Suite中运行增量布局布线

Incremental Place and Route&#xff08;增量布局和布线&#xff09;的核心理念是&#xff0c;当项目的某些部分发生变化时&#xff0c;只对这些变化的部分及其相关的依赖项进行重新布局和布线&#xff0c;而不是对整个项目进行全面的重新处理。这种增量式的处理方法可以显著提…

21 标准错误

标准输出重定向关闭无数据 下面的代码&#xff1a; #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>int main() {close(1);i…

《剑指 Offer》专项突破版 - 面试题 108 : 单词演变(C++ 实现)

目录 前言 单向广度优先搜索 双向广度优先搜索 前言 题目链接&#xff1a;单词演变 题目&#xff1a; 输入两个长度相同但内容不同的单词&#xff08;beginWord 和 endWord&#xff09;和一个单词列表&#xff08;wordList&#xff09;&#xff0c;求从 beginWord 到 end…

软考高级架构师:随机函数模型

一、AI 讲解 随机函数模型是理解各种随机过程和算法的一个重要概念&#xff0c;在软件工程、算法设计以及系统分析中有着广泛的应用。简而言之&#xff0c;随机函数模型是一种用于描述具有随机性的系统或过程的数学模型&#xff0c;它能够帮助我们预测和分析在不确定性下的系统…