使用Vivado Design Suite进行功率优化

news2024/11/23 23:41:45

功率优化是一个可选步骤,它通过使用时钟门控来优化动态功率。它既可以在Project模式下使用,也可以在Non-Project模式下使用,并且可以在逻辑优化之后或布局之后运行,以减少设计中的功率需求。功率优化包括Xilinx的智能时钟门控解决方案,这些解决方案可以在不改变功能的前提下,减少设计中的动态功率。

一、Vivado功率优化工具

Vivado功率优化工具会分析设计的所有部分,包括legacy和第三方IP块。它还会识别出可以将活动变化信号进行时钟门控的机会,因为这些信号并非在每个时钟周期都被读取。这减少了切换活动,进而降低了动态功耗。
1、使用时钟使能(CEs)
Vivado功率优化器充分利用了丰富的时钟使能(CEs)资源。功率优化会创建门控逻辑来驱动寄存器时钟使能,以便寄存器只在相关的时钟周期捕获数据。
在实际的硅芯片中,CEs实际上是用于门控时钟,而不是在D输入和触发器反馈Q输出之间进行选择。这提高了CE输入的性能,同时也降低了时钟功耗。
Vivado工具通过智能地应用时钟门控技术和其他功耗降低策略,帮助设计者创建出功耗更低、效率更高的FPGA设计。这种优化不仅减少了功耗,而且通常不会对设计的性能产生负面影响。
2、智能时钟门控
图1 智能时钟门控
智能时钟门控还可以减少简单双端口或真双端口模式下专用块RAM的功耗,如下图2所示。
这些块包括多个使能信号:
• 数组使能(Array enable)
• 写使能(Write enable)
• 输出寄存器时钟使能(Output register clock enable)
大部分的功耗节省来自于使用数组使能。Vivado功率优化器实现了在没有数据写入且输出未被使用时减少功耗的功能。
通过智能地管理这些使能信号,Vivado工具能够在不需要访问或更新块RAM时关闭相关的时钟和电源,从而显著减少功耗。这种优化特别适用于那些块RAM使用模式不连续或仅在特定时间段内需要访问的设计。
图2 利用块RAM使能
除了数组使能之外,Vivado还会考虑写使能和输出寄存器时钟使能等其他因素,以进一步优化功耗。这些优化策略共同工作,确保在不影响设计功能的前提下最大限度地降低功耗。

二、power_opt_design

power_opt_design 命令用于分析和优化设计。默认情况下,它会分析和优化整个设计。该命令还执行智能时钟门控以优化功耗。
power_opt_design 语法:

power_opt_design [-quiet] [-verbose]

如果不想分析和优化整个设计,可以使用 set_power_opt 命令来配置优化器。还可以使用 set_power_opt 来指定 opt_design 中用于优化的特定块RAM单元。
set_power_opt 的语法如下:

set_power_opt [-include_cells <args>] [-exclude_cells <args>] [-clocks <args>] [-cell_types <args>] [-quiet] [-verbose]

如果使用 opt_design 运行,块RAM功耗优化将被跳过。
建议:如果希望在 opt_design 期间防止对特定块RAM进行块RAM功耗优化,请使用 set_power_opt -exclude_cells [get_cells <bram_insts>]。这允许通过指定要排除的块RAM实例来精确控制哪些块RAM会被包含在功耗优化中。通过这样做,可以确保只有关心的部分进行优化,同时保持其他部分的功耗优化被禁用。
要在 Vivado集成设计环境中通过power_opt_design启用功耗优化,您可以通过选择“Tools”→ “Project Settings”→ “Implementation”→ “Power Opt Design”来检查可用的is_enabled选项,如以下图3所示。启用后,功耗优化将作为Vivado集成设计环境中实现步骤的一部分运行。
图3
功耗优化设计可以在设计流程中的放置前(pre-place)或放置后(post-place)启用,但不能同时在两个地方启用。
在Vivado中启用功耗优化时,务必注意其在设计流程中的位置。放置在前的优化(pre-place)可能在逻辑和布局优化之前进行,而放置在后的优化(post-place)则在布局和布线完成后进行。

三、显示功耗优化报告

在Vivado中,功耗优化是在Vivado设计流程的opt_design和power_opt_design阶段执行的。这两个阶段都发生在实现过程中,这是在设计被合成之后进行的。
1、 synthesis后生成功耗优化报告
该报告将只包含有关功耗优化特性的信息,这些特性是编码到原始设计中的(例如,使用时钟使能(CE)对块RAM进行门控)。报告不会详细列出工具在实现过程中后来执行的功耗优化。
2、 implementation后生成功耗优化报告
①打开Vivado项目,点击Open Synthesized Design 或 Open Implemented Design。
②点击Reports → Report Power Optimization。
图4
在“Report Power Optimization”对话框中(上图4),可以指定以下选项:
• 结果名称(Results name):指定功耗优化报告在Vivado IDE中的显示名称。这个名称将用于在IDE的报告中标识和引用该报告。
• 导出到文件(Export to file):勾选此选项以在Vivado IDE的功耗优化报告之外,额外生成一个文本报告。需要指定文本报告的文件名和保存位置,并选择文件格式是TXT还是XML。
• 在新标签页中打开(Open in a new tab):勾选此选项以将新的功耗优化报告添加到Vivado IDE中当前显示的其他功耗优化报告中。如果希望保留当前在Vivado中显示的功耗优化报告,请不要勾选此选项,因为新报告将会替换当前显示的报告。
设置完这些选项后,可以点击“OK”或相应的按钮来生成并显示功耗优化报告。
③或者执行相关的Tcl命令:
report_power_opt -name <report_name>
④新的功耗优化报告将显示在IDE的结果窗口区域中。在Vivado IDE中,结果窗口通常用于展示各种设计分析、合成和实现步骤的输出结果。
图5
通用信息(General Information)
包含有关设计、在其中实现设计的AMD设备以及生成此功耗优化报告的Tcl命令的信息。这些信息对于理解报告的背景和上下文非常重要。
摘要(Summary)
列出了在设计中由用户优化以及由功耗优化工具优化的块RAM(Block RAMs)、SRLs(Shift Register Lookups)和Slice寄存器的数量。这提供了一个关于功耗优化所影响的资源类型的概览。
• 推荐(Recommendations)
提供了一些建议,帮助您进一步针对功耗优化您的设计。这些建议可能包括更改设计策略、使用不同的单元类型或配置,或者应用特定的优化技术。
• 层次结构信息(Hierarchical Information)
详细列出了Vivado针对其执行了功耗优化的块RAMs、SRLs和Slice寄存器的信息。这可能包括它们在设计中的位置(层次结构路径)、优化前后的功耗值,以及具体的优化策略或更改。
通过查看这些信息,可以更深入地了解功耗优化工具是如何影响您的设计的,并据此作出进一步的优化决策。这些信息对于设计工程师来说是非常有价值的,因为它们不仅提供了功耗优化的当前状态,还指出了可能进一步降低功耗的潜在领域。
提示:如果在任何层次结构的模块或实例上标记了DONT_TOUCH属性,功耗优化将不会优化这部分逻辑。

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

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

相关文章

git分支-分支工作流

分支工作流 现在已经掌握了分支和合并的基础知识&#xff0c;可以或应该如何使用它们&#xff1f;在本节中&#xff0c;我们将介绍一些常见的工作流程&#xff0c;这种轻量级的分支使得这些工作流程成为可能&#xff0c;因此我们可以决定是否要将它们纳入到自己的开发周期中。…

每天五分钟深度学习:如何理解逻辑回归算法的假设函数?

本文重点 我们在机器学习专栏中已经学习了逻辑回归算法,本次课程我们将重温逻辑回归算法,该算法适用于二分类的问题,本文主要介绍逻辑回归的假设函数。我们在学习线性回归算法的时候,我们已经知道了线性回归算法的假设hθ(x)=θTX(参数θ的转置*X),但是对于逻辑回归而言…

使用wget下载Github代码文件

前言 使用wget无法直接从Github链接直接下载代码文件&#xff0c;下文介绍解决方案。 解决方案 确保要下载的代码文件是公开文件&#xff0c;否则无法通过wget下载。 进入Github并找到要下载的代码文件&#xff0c;例如&#xff1a; 进入文件后&#xff0c;点击文件右侧的…

Windows完全卸载MySQL后再下载安装(附安装包)

目录 友情提醒第一章&#xff1a;如何完全卸载干净mysql教程&#xff08;三个步骤完全卸载&#xff09;1&#xff09;步骤一&#xff1a;卸载程序2&#xff09;步骤二&#xff1a;删除文件3&#xff09;步骤三&#xff1a;删除注册表信息 第二章&#xff1a;下载软件两种方式1&…

R语言数据可视化:ggplot2绘图系统

ggpolt2绘图系统被称为R语言中最高大上的绘图系统&#xff0c;使用ggplot2绘图系统绘图就像是在使用语法创造句子一样&#xff0c;把数据映射到几何客体的美学属性上。因此使用ggplot2绘图系统的核心函数ggplot来绘图必须具备三个条件&#xff0c;数据data&#xff0c;美学属性…

视频插针调研

视频插针 1、评估指标2、准确度3、实时4、视频流处理3、实时RIFE视频插帧测试 1、评估指标 参考&#xff1a;https://blog.csdn.net/weixin_43478836/article/details/104159648 https://blog.csdn.net/weixin_43605641/article/details/118088814 PSNR和SSIM PSNR数值越大表…

【CSS】MDN

一、CSS构建 1.1 CSS选择器 1.1.1 元素选择器 标签不区分大小写 示例&#xff1a; span {background-color: yellow; }1.1.2 通用选择器 选择文档中所有内容&#xff0c;重置样式表中使用较多 鉴于div:first-child&#xff08;代表所有的div元素&#xff0c;并且是第一个…

IT行业网络安全守护者-行云管家云堡垒机

IT行业即信息技术行业&#xff0c;是一个涵盖广泛的行业领域&#xff0c;主要涉及与信息的处理、存储、传输和应用相关的技术。对于IT行业而言&#xff0c;保障数据安全以及网络安全至关重要&#xff0c;一不小心就容易造成数据泄露事件。今天我们小编就给大家介绍一下IT行业网…

Docker 搭建私有镜像仓库

一、镜像仓库简介 Docker的镜像仓库是一个用于存储和管理Docker镜像的中央位置。镜像仓库的主要作用是提供一个集中的地方&#xff0c;让用户可以上传、下载、删除和共享Docker镜像。镜像仓库又可以分为公共镜像仓库和私有仓库镜像仓库&#xff1a; 公共镜像仓库 Docker Hub 是…

ZStack Cloud 5.0.0正式发布——Vhost主存储、隔离PVLAN网络、云平台报警优化、灰度升级增强四大亮点简析

近日&#xff0c;ZStack Cloud 5.0.0正式发布&#xff0c;推出了包含Vhost主存储、隔离PVLAN网络、云平台报警优化、灰度升级增强在内的一系列重要功能。云主机管理、物理机运维、密评合规、灾备服务等诸多使用场景和功能模块均有更新&#xff0c;为您带来更完善的平台服务、更…

OJ 进制转换 判断进制【C】

进制转换 好久没写C&#xff0c;太生疏了&#xff0c;记一下我卡住的几个点 1.C没有字符串这种数据类型&#xff0c;要实现读入一个未知长度的字符串比较简单的方法 建立一个一定比这个字符串长的数组&#xff0c;而字符串在数组中的存储是会自动以\0结尾的&#xff0c;所以遍…

macOS制作C/C++ app

C/C制作macOS .app 一、 .app APP其实是一个文件夹结构&#xff0c;只不过mac的界面中让它看起来像一个单独的文件。 在shell终端或者右键查看包结构即可看到APP的目录结构。 通常的app目录结构如下&#xff1a; _CodeSignature, CodeResources 一般为Mac APP Store上架程序…

三极管结构难?——秒了

前边我们已经学完了PN结&#xff0c;二极管&#xff0c;在分析了二极管后&#xff0c;我们对这些东西有了一定深度的了解&#xff0c;但是只给我们一个二极管去研究&#xff0c;这玩意好像真的没啥大用&#xff0c;其实我们追求的是用半导体材料去代替电子管的放大作用&#xf…

51单片机入门_江协科技_21.2_74HC595 在Proteus中模拟8x8点阵屏环境搭建

1. 为了在proteus中模拟学习江协科技51单片机教程&#xff0c;需要在proteus中搭建74HC595驱动8x8点阵屏的仿真环境&#xff1b; 1.1. 因为连接单片机P0口作为点阵屏负极&#xff08;行选&#xff09;&#xff0c;所以需要先在P0口上接上上拉电阻RESPACK 8&#xff0c;1k欧姆阻…

K8S哲学 - kubectl

Kubectl is the Kubernetes cli version of a swiss army knife, and can do many things. Kubernetes coordinates a highly available cluster of computers that are connected to work as a single unit k8s production-ready. 概念 kubectl 和 Kubernetes API 区别

【前端】学习路线

1、基础 1.1 HTML 菜鸟教程-主页&#xff1a;https://www.runoob.com/ 可以学习&#xff1a;HTML、CSS、Bootstrap等 1.2 CSS 《通用 CSS 笔记、建议与指导》 1.3 JavaScript 1&#xff09;入门&#xff1a;JavaScript 的基本语法 2&#xff09;进阶&#xff1a;现代 …

react-静态组件,动态组件

react09- 组件 静态组件 动态组件 静态组件&#xff1a; 函数组件&#xff0c;在第一次渲染完成后&#xff0c;组件中的内容&#xff0c;不会根据组件内的某些操作再次进行更新&#xff0c;页面并不会跟着改变 过程&#xff1a; 第一次渲染时&#xff0c;执行函数方法&#x…

二、Docker部署Jenckins(详细步骤)

Docker部署Jenckins、初始化&#xff08;详细步骤&#xff09; 一、拉取镜像二、启动Jenkins三、访问Jenkins四、安装插件1.配置源2.插件安装 一、拉取镜像 docker安装教程&#xff1a;https://qingsi.blog.csdn.net/article/details/131270071 - 查询镜像 docker search jen…

【配电网故障定位】基于二进制蝗虫优化算法的配电网故障定位 12节点配电系统故障定位【Matlab代码#75】

文章目录 【获取资源请见文章第5节&#xff1a;资源获取】1. 配电网故障定位2. 二进制蝗虫优化算法3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节&#xff1a;资源获取】 1. 配电网故障定位 配电系统故障定位&#xff0c;即在配电网络发生故障的时候&am…

python基础——python包【创建和导入,下载第三方包】

&#x1f4dd;前言&#xff1a; 在上一篇文章python基础——模块中&#xff0c;我们讲解了有关python模块的相关知识&#xff0c;这篇文章我们进一步讲解用于储存多个模块文件的python包&#xff1a; 1&#xff0c;什么是python包 2&#xff0c;如何创建和导入python包 3&#…