逻辑优化约束
逻辑保护
Vivado设计套件在逻辑优化过程中尊重DONT_TOUCH属性。确实如此不优化具有这些特性的离开网或单元。为了加快网络选择过程,网络具有DONT_TOUCH的属性被预过滤并且不被考虑用于物理优化。对于有关详细信息,请参阅《Vivado Design Suite用户指南:合成》中的“合成属性”一节(UG901)。通常会将DONT_TOUCH属性应用于叶单元,以防止它们优化。分层单元格上的DONT_TOUCH保留了单元格边界,但进行了优化可能仍然发生在单元内,并且常数仍然可以跨越边界传播。到保留分层网络,使用将DONT_TOUCH属性应用于所有网段-get_nets的segments选项。工具会自动将值为TRUE的DONT_TOUCH属性添加到具有值为TRUE的MARK_DEBUG属性。
这样做是为了在整个实现流程,以便可以在任何设计阶段对其进行探索。这是推荐的MARK_DEBUG的使用。然而,在极少数情况下,DONT_TOUCH可能过于严格可能会阻止诸如恒定传播、扫描或重映射之类的优化,从而导致更多关闭时机困难。在这种情况下,可以将DONT_TOUCH设置为FALSE值,而保持MARK_DEBUG为真。这样做的风险在于,带有MARK_DEBUG的网络可能优化后不再探测。
基于属性的逻辑优化
某些优化可以在特定对象上执行,而不是在整个设计上执行。这些优化是由对象属性触发的。逻辑优化检测存在这些属性,并自动运行必要的优化阶段。这适用于除移位寄存器优化属性之外的所有属性,这些属性需要-shift_register_opt选项。以下是属性摘要
功率优化
功率优化是使用时钟门控优化动态功率的可选步骤。可以是用于项目模式和非项目模式,可以在逻辑优化或以减少设计中的功率需求。功率优化包括AMD智能时钟门控解决方案,可以在不改变的情况下降低设计中的动态功耗功能。有关更多信息,请参阅Vivado Design Suite用户指南:功率分析和优化(UG907)。
Vivado Tools电源优化
Vivado电源优化分析了设计的所有部分,包括传统和第三方IP块。它还确定了主动变化信号可以被时钟门控的机会因为它们不是每个时钟周期都被读取的。这减少了切换活动,而切换活动又反过来降低了动态功率。
使用时钟使能(CE)
Vivado功率优化器利用了时钟使能(CE)的丰富供应。功率优化创建门控逻辑以驱动寄存器时钟使能,从而仅寄存器捕获相关时钟周期上的数据。请注意,在实际的硅中,CE实际上是选通时钟,而不是在D之间进行选择触发器的输入和反馈Q输出。这提高了CE输入的性能,但是还降低了时钟功率。
智能时钟门控
智能时钟门控还降低了简单双端口中专用块RAM的功耗或真正的双端口模式,如下图所示。这些块包括几个启用项:
•阵列启用
•写入启用
•输出寄存器时钟启用
大部分节能来自于使用阵列启用。Vivado功率优化器实现了在没有写入数据和输出为没有被使用。
power_opt_design
power_opt_design命令可以分析和优化设计。它分析和默认情况下优化整个设计。该命令还对执行智能时钟门控优化功率。
power_opt_design语法
如果您不想分析和优化整个设计,请使用配置优化器set_power_opt。这使您可以指定适当的单元类型或层次结构以包括或排除在优化中。也可以使用set_power_opt指定特定的块opt_design中用于优化的RAM单元。
set_power_opt的语法为:
注意:如果使用opt_design运行块RAM功率优化,则会跳过它。
建议:如果您想在opt_design,使用set_power_opt-exclude_cells[get_cells<bram_insts>]。