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代码片段仅用于说明低复用模式的概念,实际使用时可能需要更复杂的逻辑和错误处理。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

粒子群优化算法PSO与鹈鹕优化算法(POA)求解无人机三维路径规划(MATLAB代码)

一、无人机路径规划模型介绍 二、算法介绍 close all clear clc dbstop if all error warning (off) global model model CreateModel(); % 创建模型 FF1; [Xmin,Xmax,dim,fobj] fun_info(F);%获取函数信息 pop100;%种群大小(可以自己修改) maxgen100;%最大迭代次数(可以自己…

成功转行Python工程师,年薪30W+,经验总结都在这!

都说郎怕入错行&#xff0c;行业对职场人的影响不言而喻。我们身边有很多和自己起点差不多的人&#xff0c;读了差不多的高中&#xff0c;差不多的大学&#xff0c;但是有的人突然一飞冲天&#xff0c;大House、移民、海外置业、全球旅行成了最常见的话题&#xff0c;出入私立医…

LeetCode18: 四数之和

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

【C++】STL学习之vector的使用

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 前言一、默认成员函数1.1 默认构造1.2 拷贝构造1.3 析构函数1.4 赋值重载 二、迭…

【STK】手把手教你利用STK进行导弹和反导仿真04 - STK/MMT模块04 导弹飞行工具应用案例

【STK】手把手教你利用STK进行导弹和反导仿真04 - STK/MMT模块04 导弹飞行工具应用案例 这个案例将把范围轮廓导出到STK,以此来分析如何放置发射点和落点位置,然后使用它们来定义MFT中的飞行导弹。最后将生成的轨迹导出到STK进行显示和分析。 (1)第一步启动STK并创建新场景。…

LeetCode-705. 设计哈希集合【设计 数组 哈希表 链表 哈希函数】

LeetCode-705. 设计哈希集合【设计 数组 哈希表 链表 哈希函数】 题目描述&#xff1a;解题思路一&#xff1a;超大数组解题思路二&#xff1a;拉链法解题思路三&#xff1a;定长拉链数组 题目描述&#xff1a; 不使用任何内建的哈希表库设计一个哈希集合&#xff08;HashSet&…

算法设计与分析实验报告c++实现(最近点对问题、循环赛日程安排问题、排序问题、棋盘覆盖问题)

一、实验目的 1&#xff0e;加深学生对分治法算法设计方法的基本思想、基本步骤、基本方法的理解与掌握&#xff1b; 2&#xff0e;提高学生利用课堂所学知识解决实际问题的能力&#xff1b; 3&#xff0e;提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 1、 最…

leetCode刷题 27. 移除元素

目录 1.思路&#xff1a; 2.解题方法&#xff1a; 3.复杂度&#xff1a; 4.Code 题目&#xff1a; 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须…

设备树的概念、设备树如何变成device、与driver的匹配

在平台总线驱动模型中资源和驱动已经从逻辑上和代码组织上进行了分离&#xff0c;但每次调整资源还是会涉及到内核&#xff0c;所以现在更加流行的是设备树方式。设备树的好处是通过独立于内核存在&#xff0c;这样如果设备上外设功能启用与否以及位置变动的话很多时候不用修改…

【论文速读】| 基于大语言模型的模糊测试技术

本次分享论文为&#xff1a;Large Language Models Based Fuzzing Techniques: A Survey 基本信息 原文作者&#xff1a;Linghan Huang, Peizhou Zhao, Huaming Chen, Lei Ma 作者单位&#xff1a;悉尼大学&#xff1b;东京大学&#xff1b;阿尔伯塔大学 关键词&#xff1a;…

8. Spring Boot 配置文件

源码地址&#xff1a;SpringBoot_demo 本篇文章内容源码位于上述地址的com/chenshu/springboot_demo/config包下 1. 配置文件是什么 上节说到&#xff0c;Spring Boot的项目分为三个部分&#xff1a;源代码目录、资源目录、单元测试目录。 而配置文件的位置就位于资源目录res…

Python-VBA函数之旅-delattr函数

目录 1、 delattr函数&#xff1a; 1-1、Python: 1-2、VBA&#xff1a; 2、相关文章&#xff1a; 个人主页&#xff1a;https://blog.csdn.net/ygb_1024?spm1010.2135.3001.5421 delattr函数在Python中具有广泛的应用场景&#xff0c;主要用于动态地管理对象的属性。常用…

Python十大最佳实践:高效Python编程的十个关键方法

在当今的软件开发世界中&#xff0c;Python是一种极其重要且广泛使用的编程语言。以下是Python编程的十大最佳实践&#xff0c;这些实践将帮助你提升编程效率&#xff0c;优化代码质量&#xff0c;以及更好地应用Python的强大功能。 1.理解Pythonic的方式 “Pythonic”是指遵循…

傲基科技冲刺上市:依赖单一产品,元气未恢复,有股东提前退出

近日&#xff0c;傲基科技股份有限公司&#xff08;下称“傲基科技”&#xff09;递交招股书&#xff0c;准备在港交所主板上市&#xff0c;华泰证券为其独家保荐人。 据招股书介绍&#xff0c;傲基科技是一家提供家具家居类产品的品牌运营商及出口物流服务商。傲基科技在招股…

Java+vue2+springboot智慧班牌系统源码,支持PC端、移动客户端、电子班牌端,SaaS模式部署

智慧班牌作为一个班级的标识&#xff0c;也是班级空间日常管理的载体&#xff0c;作为班级文化展示交流窗口与学科教学、德育管理&#xff0c;以及学校信息収布等有机结合起来&#xff0c;作为学生展示的平台&#xff0c;又可应用于普及教育安全知识和科学文化&#xff0c;拓展…

Python爬虫:requests模块的基本使用

学习目标&#xff1a; 了解 requests模块的介绍掌握 requests的基本使用掌握 response常见的属性掌握 requests.text和content的区别掌握 解决网页的解码问题掌握 requests模块发送带headers的请求掌握 requests模块发送带参数的get请求 1 为什么要重点学习requests模块&…

shell-将密码输入错误超过4次的IP地址通过firewalld防火墙阻止访问

应用场景&#xff1a;防止恶意IP尝试ssh登录 脚本说明&#xff1a;将密码输入错误超过四次得ip地址通过iptable防火墙访问。 分析&#xff1a; 首先&#xff0c;需要知道ssh远程访问记录在哪一个文件中 /var/log/secure 其次&#xff0c;模拟远程访问输错密码&#xff0c;查…

2024 十五届蓝桥杯省赛Python B组

以下仅是我的答案&#xff0c;仅供参考&#xff0c;欢迎讨论。 A&#xff1a;穿越时空之门 二进制、四进制转换。答案&#xff1a;63。 B&#xff1a;数字串个数 排除0&#xff0c;总的方案数9^10000,减去不存在3和不存在7的2*8^10000&#xff0c;再加上同时不存在3和7的7^…

MYSQL09_行格式概述、变长字段、NULL值、记录头信息、真实数据、内部结构

文章目录 ①. InnoDB - 行格式概述②. 变长字段长度列表 ③. NULL值列表④. 记录头信息5字节⑤. 记录的真实数据⑥. Compact行记录的内部结构⑦. Dynamic和Compressed行格式 ①. InnoDB - 行格式概述 ①. 我们平时的数据以行为单位来向表中插入数据,这些记录在磁盘上的存放方式…

【C语言基础】:编译和链接(计算机中的翻译官)

文章目录 一、翻译环境和运行环境1. 翻译环境1.1 编译1.1.1 预处理1.1.2 编译1.1.3 汇编 1.2 链接 2. 运行环境 一、翻译环境和运行环境 我们在Visual Studio上写的C语言代码其实都是一些文本信息&#xff0c;计算机是不能够直接执行他们的&#xff0c;计算机只能够执行二进制…