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

Incremental Place and Route(增量布局和布线)的核心理念是,当项目的某些部分发生变化时,只对这些变化的部分及其相关的依赖项进行重新布局和布线,而不是对整个项目进行全面的重新处理。这种增量式的处理方法可以显著提高开发效率,减少不必要的编译和集成时间。

一、运行增量布局和布线

Vivado 读取参考检查点之后,会执行以下操作:
• 对增量设计自动执行与参考运行中相同的物理优化。
• 比较增量设计中的网表与参考设计,以识别匹配的单元和网络。
• 重用参考设计检查点中的布局,将匹配的单元放置在增量设计中。
• 布线重用是基于每个负载引脚来路由匹配的网络的。如果由于网表更改导致负载引脚消失,则其布线将被丢弃,否则将重用。因此,可能会存在部分重用的布线。
增量布局和增量布线可能会丢弃单元布局和网络布线而不是重用它们,如果这样做有助于改善网表的布线能力或有助于保持与参考设计相当的性能。
在增量布局完成后,参考设计与当前设计之间不匹配的设计对象将被布局;在增量布线完成后,这些对象将被布线。
需要注意的是,虽然增量实现可以显著提高设计迭代的效率,但它仍然是一个复杂的过程,需要仔细管理以确保设计的一致性和性能。

二、影响运行时间改进的因素

• 时序关键区域的变化量。如果关键路径的布局和布线无法重用,则需要更多的努力来保持时序。此外,如果小的设计更改引入了参考设计中不存在的新时序问题,那么可能需要更高的努力和运行时间,并且设计可能无法满足时序要求。
• 布局和布线运行时间的初始化部分。在短暂的布局和布线运行中,Vivado布局器和路由器的初始化开销可能会消除增量布局和布线过程带来的任何增益。对于运行时间较长的设计,初始化成为运行时间的一小部分。
了解这些因素有助于用户在实施增量流程时做出更明智的决策,以最大限度地提高运行时间的改进效果。通过仔细分析这些因素,用户可以优化流程配置,减少不必要的计算,从而加快设计迭代的速度并提高整体效率。

三、read_checkpoint -incremental

在当前设计加载后,使用read_checkpoint -incremental 命令加载参考设计的检查点。-incremental选项启用了增量编译设计流程,用于后续的布局和布线操作。

1、增量实现控制

如果除了-incremental之外没有指定其他命令参数,工具将尽可能重用参考检查点中的信息。然而,
read_checkpoint -incremental命令可以接受一些参数,允许用户控制哪些信息被重用,哪些不被重用。
①-auto_incremental 选项
启用了在“自动增量”中描述的自动增量流程。
②-reuse_objects 选项
-reuse_objects
接收cells、时钟区域或SLR(Slice Logic Region)作为参数。
当指定cells时,可以使用get_cells命令。在使用get_cells时,可以指定hierarchical或leaf cells,并在使用-filter开关时指定单元类型。
当指定时钟区域(使用get_clock_regions)或SLR(使用get_slrs)进行重用时,如果它们存在于增量运行中,则参考检查点中的该区域中的cells将被重用。
当指定任何参数时,net的重用是基于已识别为重用的cells来推断的。
通过适当地使用这些选项,可以精确地控制增量编译过程中哪些部分的信息被重用,哪些部分被重新计算,从而优化编译时间和设计质量。然而,需要注意的是,不恰当的增量实现控制可能会导致设计不一致或性能下降,因此应该谨慎使用。在设计迭代过程中,定期验证设计的完整性和性能是很重要的。
③-fix_objects 选项
-fix_objects
可以用来锁定cells的子集。这些cells不会被增量布局和布线工具修改。
仅对匹配且被识别为cells重用的单元有效。如果没有指定 -reuse_objects,那么它将作用于整个设计空间;如果指定了 -reuse_objects,则它仅作用于相关联的cells。
示例
以下是 -fix_objects 和相关选项的使用示例:

• 仅重用并固定 Block Memory 的布局:
read_checkpoint -incremental routed.dcp -reuse_objects [all_rams] -fix_objects [all_rams]
• 仅重用并固定 DSP 的布局:
read_checkpoint -incremental routed.dcp -reuse_objects [all_dsps] -fix_objects [all_dsps]
• 重用 Block Memory 和 DSP 的布局,并固定所有指定为重用的单元的布局:read_checkpoint -incremental routed.dcp -reuse_objects [all_rams] \ -reuse_objects [all_dsps] -fix_reuse [current_design]
• 重用指定层次及其以下的所有单元,并允许工具在处理关键区域的变化时具有一定的灵活性(注意:这里 -fix_objects 应该是 -fix_reuse,因为 -fix_objects 用来锁定特定单元,而 -fix_reuse 用来锁定所有重用的单元):read_checkpoint -incremental routed.dcp \ -reuse_objects [get_cells <cell_name>] -fix_reuse [get_cells <cell_name>]

在最后一个示例中,[get_cells <cell_name>] 应该替换为实际的cells名称或用于选择特定cells集的命令。
请注意,-fix_objects 和 -fix_reuse 的使用要谨慎,因为它们会阻止工具对指定的单元进行任何修改。这可能会导致在某些情况下无法优化布局和布线,或者甚至导致设计失败。因此,在决定使用这些选项时,应该确保它们符合设计目标和约束。

2、使用 report_incremental_reuse

report_incremental_reuse 命令在 read_checkpoint -incremental 使用后的流程的任何阶段都可用。这个报告允许用户比较参考设计和当前设计运行之间的以下方面:
• 检查当前运行中cells、net、I/O和引脚的重用情况
• 运行时间
• 流程每个阶段的时序WNS(最差负时序裕量)
• 工具选项
• 工具版本
• Iphys_opt_design replaying优化
• 应用于增量流程的QoR(质量优化结果)建议
通过检查cells重用和上述其他因素,用户可以确定增量流程的有效性。如果判断流程无效,用户通常会更新检查点到设计的较新版本或调整工具流程。
该报告分为七个部分:
①Flow Summary
报告了当前整个增量流程的一般信息。它可能包含关于流程的开始和结束时间、使用的工具版本、以及可能涉及的主要步骤或阶段的概述。
在这里插入图片描述
②Reuse Summary
提供了关于重用的cells、net、引脚和端口的概述。它会显示重用了哪些元素,以及它们各自的重用程度,这有助于用户了解增量编译中哪些部分被有效地重用了。
在这里插入图片描述
③. Reference Checkpoint Information
包含关于参考检查点的信息。例如:
• 生成它的Vivado版本
• 实现的阶段
• 记录的最差负时序裕量(WNS)和最差正时序裕量(WHS)
• 参考运行和增量运行的速度文件版本信息
这些信息有助于了解参考设计的状态以及它与当前增量设计之间的比较基础。
在这里插入图片描述
④ Comparison with Reference Run
包含了与参考运行进行比较的有用指标。
• 运行时间信息
• 流程每个阶段的最差负时序裕量(WNS)
• 流程每个阶段的工具选项
通过比较这些指标,用户可以了解增量流程是否有效地利用了之前的工作,以及它在哪些方面可能还有改进的空间。
在这里插入图片描述
⑤ Optimization Comparison With Reference Run
包含了从参考DCP(Design Checkpoint)中检索到的iphys_opt_design重放信息,以及在当前增量流程中生成和应用的RQS(质量优化结果)建议。这些信息有助于用户了解优化策略在增量流程中的应用效果,以及这些策略如何影响最终的设计质量。
在这里插入图片描述
在这里插入图片描述
⑥Command Comparison with Reference Run
包含了用于流程命令比较的已执行命令。通过比较参考运行和增量运行中的命令,用户可以了解哪些命令被重复执行,哪些是新添加的,从而更深入地了解增量流程的执行细节。
在这里插入图片描述
⑦Non-reuse Information
包含了关于哪些部分没有被重用以及原因的度量指标。这些信息有助于用户识别流程中可能存在的问题,从而采取相应的措施来提高重用率,进而优化增量流程。
在这里插入图片描述

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

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

相关文章

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;它能够帮助我们预测和分析在不确定性下的系统…

一起学习python——基础篇(19)

今天来说一下python的如何修改文件名称、获取文件大小、读取文中指定的某一行内容。 1、修改文件名称&#xff1a; import os testPath"D:/pythonFile/test.txt" testPath2"D:/pythonFile/test2.txt" #修改文件名称使用rename方法&#xff0c; #第一个参…

数字中台建设全套方案资料(ppt+word)

数据中台业务方案及详细技术方案资料&#xff1a; 1. 数据中台解决方案PPT&#xff08;本篇内容&#xff09; 2. 数字中台建设指南详细技术方案 数字中台建设指南Word版原件技术方案&#xff1a;进入文章 软件开发全资料获取通道①&#xff1a;软件项目开发全套文档下载_软件开…

基于spring boot的留守儿童爱心管理系统

基于spring boot的留守儿童爱心管理系统设计与实现 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开…

Java | Leetcode Java题解之第25题K个一组翻转链表

题目&#xff1a; 题解&#xff1a; class Solution {public ListNode reverseKGroup(ListNode head, int k) {ListNode hair new ListNode(0);hair.next head;ListNode pre hair;while (head ! null) {ListNode tail pre;// 查看剩余部分长度是否大于等于 kfor (int i 0…

万字长文深入理解Docker镜像分层原理、容器数据卷、网络通信架构(Docker系列第2章,共3章)

镜像分层的简单直观体现 在执行docker pull时&#xff0c;会发现多个Pull complete 字样&#xff0c;就能体现分层&#xff0c;如果是一个文件&#xff0c;只会有一个Pull complete 。 docker pull redis Using default tag: latest latest: Pulling from library/redis a2ab…

03 Git 之 远程仓库 + IDEA 集成使用 GitHub

1. 远程仓库 origin&#xff1a;即远程仓库 url 的指代。 从网上随意 clone 一个仓库&#xff0c;进入 .git/config 文件, 即可编辑远程仓库的 url&#xff0c;也可以自定义想要指代该 url 的名词。 1.1 本地仓库绑定远程仓库 并 推送、拉取 git remote add 【想要起的指代…

Golang | Leetcode Golang题解之第27题移除元素

题目&#xff1a; 题解&#xff1a; func removeElement(nums []int, val int) int {left, right : 0, len(nums)for left < right {if nums[left] val {nums[left] nums[right-1]right--} else {left}}return left }

连接参数a和b operator.concat(a, b)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 连接参数a和b operator.concat(a, b) [太阳]选择题 以下关于operator.concat()的功能和作用说法正确的是&#xff1a; import operator print("【执行】operator.concat(Hello, World)&q…

ES6: promise对象与回调地狱

ES6&#xff1a; promise对象与回调地狱 一、回调地狱二、Promise概述三、Promise的组成四、用函数封装Promise读取文件操作 一、回调地狱 在js中大量使用回调函数进行异步操作&#xff0c;而异步操作什么时候返回结果是不可控的&#xff0c;所以希望一段程序按我们制定的顺序执…