Vivado使用(6)——增量综合( Incremental Synthesis)

目录

一、概述

1.1 增量综合的工作原理

1.2 增量综合的优点

1.3 注意事项

二、设置增量综合

2.1 Write Incremental Synthesis 复选框

2.2 Incremental Synthesis 选择框     

2.2.1 自动使用上一次运行的检查点(Automatically use the checkpoint from the previous run)

2.2.2 指定设计检查点(Specify design checkpoint:)

2.2.3 禁用增量编译(Disable incremental compile)

三、日志文件解释

四、重新综合整个设计


一、概述

        增量综合(Incremental Synthesis)是一种在 FPGA 设计过程中应用的综合方法,它允许设计者对设计的一部分进行修改和重新综合,而不需要重新综合整个设计。这种方法可以显著减少综合时间,特别是在进行小的修改或迭代开发时。

        Vivado 工具从2019.1版本开始,综合引擎支持增量综合(Incremental Synthesis)。在这种流程中,工具会在生成的 DCP(Design Checkpoint)文件中放置增量综合信息,以便在后续运行中引用。它会检测设计何时发生变化,并且只对设计中发生变化的部分重新运行综合。这种流程的主要优点是,对于只有小改动的设计,运行时间会显著减少。此外,当在 RTL 中插入小改动时,设计的质量结果(Quality of Results,QoR)波动较小。

1.1 增量综合的工作原理

  1. 初始综合:首先,对整个设计进行一次完整的综合,生成一个基线综合结果。

  2. 修改设计:在设计的开发过程中,对设计的某个部分进行修改。

  3. 增量综合:只对修改过的部分以及受影响的相关部分重新进行综合,而保持其他部分不变。

  4. 集成结果:将重新综合的结果与未修改部分的原始综合结果集成,形成最终的综合结果。

1.2 增量综合的优点

  • 提高效率:只综合修改过的部分可以显著减少综合时间,提高开发效率。
  • 减少资源消耗:减少了综合过程中的资源消耗,如计算资源和存储资源。
  • 加速迭代:在迭代开发过程中,可以快速验证修改,加速设计的迭代和优化。

1.3 注意事项

  • 依赖管理:需要确保增量综合正确处理设计中的依赖关系,以避免因遗漏相关更改而导致的错误。
  • 测试和验证:尽管增量综合可以节省时间,但仍需进行充分的测试和验证,确保修改不会引入新的问题。
  • 工具支持:并非所有的综合工具都支持增量综合,需要检查所使用的工具是否提供该功能。
  • 设计变化:增量综合最适合那些只有小部分变化的设计。如果设计变化很大,可能需要完整重新综合以获得最佳结果。
  • 配置和管理:需要正确配置和管理增量综合流程,以确保正确地识别和处理设计变化。

        总之,增量综合是一种有效的方法,可以加速 FPGA 设计过程中的综合步骤,特别适用于大型或复杂设计的迭代开发。

二、设置增量综合

        您可以在“设置”对话框的“综合”页面中使用项目设置“增量综合”:

        在 Vivado 设计套件中,"Write Incremental Synthesis" 复选框和 "Incremental Synthesis" 选择框是用于配置增量综合设置的关键选项。以下是这些设置的具体作用:

2.1 Write Incremental Synthesis 复选框

        当您选中此选项时,Vivado 综合会将增量综合信息写入到综合后的检查点(checkpoint)。这是运行增量综合的必要条件。它使得综合工具能够记录设计的哪些部分在综合过程中已经完成,从而在后续的综合运行中,只对有变动的部分进行处理。

2.2 Incremental Synthesis 选择框     

        在 Vivado 设计套件的项目模式中,以下是可用于增量综合的选项:

2.2.1 自动使用上一次运行的检查点(Automatically use the checkpoint from the previous run)

        这个选项会利用上一次运行的增量信息。使用这个选项时,用户可以继续运行他们的设计,进行小的更改,而无需管理这个流程。使用此选项时,首次运行总是完整综合。

2.2.2 指定设计检查点(Specify design checkpoint:)

        这个选项允许你指定来自特定检查点的信息,这个检查点是在启用“Write Incremental Synthesis”功能时创建的。它使得用户可以选择一个特定的起点,用于增量综合的基础。

2.2.3 禁用增量编译(Disable incremental compile)

        这个选项告诉工具不使用之前生成的任何增量信息。将会对整个设计进行全新的综合。

        选择正确的选项取决于你的综合需求和设计的特定阶段。如果你频繁地进行小修改,并且想要最大化增量综合的效益,自动使用上一次运行的检查点可能是最方便的选择。如果你想要从一个已知的设计状态开始增量综合,可以选择指定设计检查点。如果你需要确保设计的每个部分都是最新综合的,或者在做了大量更改后重新评估整个设计,你可能会选择禁用增量编译。

        重要的是要理解这些设置的用途和如何正确配置它们,以便在设计迭代过程中最大限度地利用增量综合的优势,从而节省时间并保持设计的高质量。如果您的设计经常进行小的迭代更改,配置和使用增量综合可以显著加快综合过程。

三、日志文件解释

        在进行参考运行(Reference Run)时,工具会在执行综合过程中对设计进行分区。然后,在开始增量运行时,工具会将详细设计(Elaborated Design)与参考运行进行比较,识别出已更改的模块。参考运行中的分区在增量运行中被初始化。包含更改模块的分区以及受其影响的分区都会被标记。基于此,工具将对已标记的分区执行综合。关于设计的哪些部分以及哪些部分被重新综合的信息,可以在增量运行后的日志文件中找到。

        这些信息将在“增量综合报告摘要(Incremental Synthesis Report Summary)”中。以下是该报告的一个示例:

 

  1. 模块名称:在设计分区内 RTL 被更改的模块。请注意,一个分区下可能包含不止一个模块。
  2. 复制:所提到模块的实例化总数。复制数取决于直接实例化的数量。
  3. 实例:在 elaboration 阶段之前“rtlRam”下的单元/原语数。在 elaboration 和综合阶段之后,这个数字可能会有所变更。

  4. 变更百分比:RTL 变更/未变更设计总数

  5. 整个设计的大小:整个设计中的单元总数(包括已更改和未更改的设计)

  6. 再综合设计的大小:请注意,如果属于分区的某一个模块中有任何更改,工具即会重新综合整个分区。

        通过解读日志文件中的这些信息,设计者可以了解综合过程中的哪些部分受到了变化的影响,这有助于他们评估增量综合的效果,并决定是否需要进一步的优化或调整。日志文件是了解综合过程的关键工具,它提供了验证和调试设计所需的详细信息。

四、重新综合整个设计

        重新综合整个设计可能会在特定情况或针对某些类型的设计时触发。当发生以下条件之一时,可能会导致工具执行全面重新综合:

  1. 顶层层次结构发生变化时:如果在设计的最顶层进行了修改,这通常会影响整个设计,因此触发全面重新综合。
  2. 综合设置发生变化时:综合过程中使用的任何设置或优化选项的更改都可能需要全新的综合,以确保这些更改被正确应用。
  3. 小型设计包含的分区较少时:如果设计较小,分区数量有限,即使只有几个分区发生变化,也可能需要对整个设计进行重新综合。
  4. 超过 50% 的分区有变化时:如果变化影响到了设计的大部分分区,那么执行增量综合可能不再有效,因此需要全面重新综合。

        此外,异常大的 XDC 文件也可能触发对整个设计的重新综合。在未来的版本中,这一点可能会有所改进。

        需要注意的是,尽管 -mode out_of_context 是一个综合设置,它不会触发全面的重新综合。这意味着,如果你在特定模块上使用了“脱离上下文”模式,它不会导致整个设计需要重新综合,这通常用于IP核或模块级的单独综合。

        在管理和运行综合流程时,了解这些触发全面重新综合的条件是很重要的,以确保综合过程尽可能高效,同时也为了在设计迭代过程中合理安排时间和资源。

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

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

相关文章

Vue(十二):脚手架配置代理,github案例,插槽

一、脚手架配置代理 老师讲的主要有两种方法: 但是我的没有proxy,只有proxyTable,之前一直不成功,现在我是这样配置的: config文件夹下的index.js: App.vue: 然后就成功了:(我真服了,之前在这…

jdbc连SQL server,显示1433端口连接失败解决方法

Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“connect timed out。请验证连接属性。确保 SQL Server 的实例正在主机上运行,且在此端口接受 TCP/IP 连接…

零基础入门实战深度学习Pytorch课程下载

本课程旨在帮助零基础学员掌握PyTorch深度学习框架。通过实战项目,学员将学习神经网络基础、模型训练和调优技巧。逐步掌握深度学习核心概念,为未来在人工智能领域打下坚实基础。 课程大小:2.6G 课程下载:https://download.csdn.net/downlo…

【战略前沿】与中国达成生产协议后,飞行汽车即将起飞

【原文】Flying cars edge towards takeoff after Chinese production deal 【作者】Thomas Macaulay 斯洛伐克公司KleinVision签署了一项协议,将大规模生产AirCar。 一辆获得航空认证的飞行汽车向商业化又迈出了一大步。 空中汽车的创造者KleinVision今天宣布出售…

【经验分享】Ubuntu下如何解决问题arm-linux-gcc:未找到命令

【经验分享】Ubuntu下如何解决问题arm-linux-gcc:未找到命令 前言问题分析解决方法 前言 在编译过程中发现一个问题,明明之前安装了gcc-4.6版本,版本信息都是正常显示的,刚安装上去的时候也是可以用的。但不知道什么原因突然不能…

HUAWEI 华为交换机 配置 Eth-Trunk 接口流量本地优先转发示例(堆叠)

组网需求 说明 S5720I-10X-PWH-SI-AC 和 S5720I-6X-PWH-SI-AC 不支持此配置。 如 图 3-23 所示,为了增加设备的容量采用设备堆叠技术,将 Switch3 和 Switch4通过专用的堆叠电缆链接起来,对外呈现为一台逻辑交换机。为了实现设备间的备份、…

Windows基线安全检测-安全配置检测

Windows基线安全检测-安全配置检测 前言 Windows在生产环境中是使用最多的一个系统,大部分为客户端,少部分为服务端; 然而其实很多用户对windows系统不是很了解,安全配置更是如此; 因此我们安全人员要定期对员工的主…

中科驭数DPU技术开放日秀“肌肉”:云原生网络、RDMA、安全加速、低延时网络等方案组团亮相

2024年3月29日,中科驭数以“DPU构建高性能云算力底座”为主题的线上技术开放日活动成功举办。在开放日上,中科驭数集中展现了其在低时延网络、云原生网络及智算中心网络三大关键场景下的技术成果与五大核心DPU解决方案,凸显了中科驭数在高性能…

RabbitMQ安装及Springboot 集成RabbitMQ实现消息过期发送到死信队列

死信队列 RabbitMQ 的死信队列(Dead-Letter-Exchanges,简称 DLX)是一个强大的特性,它允许在消息在队列中无法被正常消费(例如,消息被拒绝并且没有设置重新入队,或者消息过期)时&…

1236. 递增三元组:做题笔记

目录 暴力 代码 二分 代码 前缀和 代码 推荐视频讲解 暴力 这道题说的是有三个元素数量相同的数组,想知道有多少个三元组满足:三个数分别来自 A B C数组且呈现递增。 我想的是既然要求递增,那就先把数组数据都排一下序,…

springCloudAlibaba集成gateWay实战(详解)

一、初识网关? 1、网关介绍 ​ 在微服务架构中,一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去调用。这样的话…

【opencv】教程代码 —features2D(8)AKAZE 特征点匹配和图像拼接

graf1.png graf3.png <?xml version"1.0"?> <opencv_storage> <H13 type_id"opencv-matrix"><rows>3</rows><cols>3</cols><dt>d</dt><data>7.6285898e-01 -2.9922929e-01 2.2567123e02…

matlab碰撞检测

文章目录 碰撞对象collisionCylindercollisionBoxcollisionMeshcollisionSpherecollisionCapsulecheckCollisionfitCollisionCapsuleshowCollisionArraycapsuleApproximationaddCapsuleremoveCapsuleconvertToCollisionMesh碰撞对象 函数功能checkCollision检测两几何体是否存在…

前端之CSS——网页的皮肤!!

目录 一、CSS简单介绍 二、css内容 2.1 css的编写方式 2.2 css选择器 2.3 样式属性 2.4 css包围盒 2.5 css中的display 2.6 css中的定位 2.7 css中的浮动与清除 2.7 弹性容器 2.8 字体图标 2.9 …

1.5编写一个程序,输入梯形的上底,下底和高,输出梯形的面积。

1、编写一个程序,输入梯形的上底,下底和高,输出梯形的面积。 package com.kangning.web.controller.system;import java.util.Scanner;/*** 编写一个程序,输入梯形的上底,下底和高,输出梯形的面积。*/ public class CountArea {public static void main(String[] args) …

面向对象编程中的StringBuffer类详解

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…

【Linux 驱动基础】设备树驱动

# 前置知识 在图中&#xff0c;树的主干就是系统总线&#xff0c; IIC 控制器、 SPI 控制器等都是接到系统主线上的分支。其中 IIC1 上接了 AT24C02这个 IIC 设备&#xff0c; DTS 文件的主要功能就是按照图所示的结构来描述板子上的设备信息。 1. Device格式 DTS文件格式 …

【论文阅读】ELA: Efficient Local Attention for Deep Convolutional Neural Networks

&#xff08;ELA&#xff09;Efficient Local Attention for Deep Convolutional Neural Networks 论文链接&#xff1a;ELA: Efficient Local Attention for Deep Convolutional Neural Networks (arxiv.org) 作者&#xff1a;Wei Xu, Yi Wan 单位&#xff1a;兰州大学信息…

基于架构的软件开发方法_1.概述和相关概念及术语

1.体系结构的设计方法概述 基于体系结构的软件设计&#xff08;Architecture-Based Software Design&#xff0c;ABSD&#xff09;方法。ABSD方法是由体系结构驱动的&#xff0c;即指由构成体系结构的商业、质量和功能需求的组合驱动的。 使用ABSD方法&#xff0c;设计活动可以…

C++项目——集群聊天服务器项目(十一)服务器异常退出与添加好友业务

本节来实现C集群聊天服务器项目中的服务器异常退出与添加好友业务&#xff0c;一起来试试吧 一、服务器异常退出 在Linux环境下&#xff0c;我们在服务器端使用CTRLC结束程序执行&#xff0c;即使用CTRLC让服务器异常退出&#xff0c;这样的后果是本应登录服务器的用户在数据库…