综合 (Synthesis)

参考: UG901 Vivado Design Suite User Guide : Synthesis

综合设置

约束

  • 物理约束:这些约束定义引脚位置,以及单元如块ram、lut、flip - flop和设备配置设置的绝对或相对位置。

  • 时序约束:这些约束定义了设计的频率要求。在没有时间限制的情况下,Vivado Design Suite仅针对电线长度和放置拥堵进行了优化设计。

综合策略

Default

  • 功能:使用默认设置。
  • 特点:提供一种平衡的优化方案,适合大多数设计需求。

RuntimeOptimized

RuntimeOptimized: Performs fewer timing optimizations and eliminates some RTL optimizations to reduce synthesis run time.

  • 功能:减少时序优化,消除一些RTL优化,以减少综合运行时间。
  • 特点:优先考虑快速运行时间,可能会牺牲一些设计性能。适用于对综合时间要求较高的设计场景。

AreaOptimized_high

Performs general area optimizations including forcing ternary adder implementation, applying new thresholds for use of carry chain in comparators, and implementing area-optimized multiplexers.

  • 功能:进行一般面积优化,包括强制三进制加法器实现,应用新的阈值以在比较器中使用进位链,并实现面积优化的多路复用器。
  • 特点:强调减少设计占用的面积。适用于面积受限的设计。

AreaOptimized_medium

Performs general area optimizations including forcing ternary adder implementation, applying new thresholds for use of carry chain in comparators, and implementing area-optimized multiplexers.

  • 功能:进行一般面积优化,包括改变控制集优化的阈值,强制三进制加法器实现,降低DSP块推断的乘法器阈值,将移位寄存器移入BRAM,应用较低的阈值以在比较器中使用进位链,以及面积优化的多路复用器操作。
  • 特点:平衡面积优化和性能需求。适用于对面积有要求但不希望显著牺牲性能的设计。

AlternateRoutability

  • 功能:一组算法以改善可布线性(减少MUXFs和CARRYs的使用)。
  • 特点:提高设计的可布线性,减少布线拥堵。适用于布线复杂、容易出现拥堵的设计。

AreaMapLargeShiftRegToBRAM

  • 功能:检测大的移位寄存器并使用专用块RAM实现。
  • 特点:减少逻辑单元的使用,节省面积。适用于包含大量移位寄存器的设计。

AreaMultThresholdDSP

  • 功能:降低专用DSP块推断的阈值。
  • 特点:提高DSP块的利用率,减少逻辑单元的使用。适用于包含大量乘法运算的设计。

FewerCarryChains

  • 功能:使用更高的操作数大小阈值,以使用LUT代替进位链。
  • 特点:减少进位链的使用,优化逻辑单元的分配。适用于逻辑密集且希望减少进位链使用的设计。

LogicCompaction

  • 功能:以一种使逻辑更紧凑的方式安排进位链和LUT,使用更少的SLICES。
  • 特点:减少逻辑单元的使用,但可能对时序QoR产生负面影响。适用于对面积有严格要求且能够接受时序性能轻微下降的设计。

PerformanceOptimized

  • 功能:进行一般时序优化,包括降低逻辑级别,以牺牲面积为代价。
  • 特点:优化时序性能,适用于时序要求严格的设计。

PowerOptimized_high

  • 功能:进行一般时序优化,包括增加逻辑级别,以牺牲面积为代价。
  • 特点:强调功耗优化,适用于功耗要求高的设计。

PowerOptimized_medium

  • 功能:通过降低逻辑级别减少来进行一般时序优化,以牺牲面积为代价。
  • 特点:平衡时序和功耗优化,适用于希望在功耗和时序之间取得平衡的设计。

-flatten_hierarchy

  • 确定Vivado合成如何控制层次结构。
  • -full :指示工具将层次结构完全平坦化,只留下顶层。
  • -rebuild:设置后,rebuild允许合成工具平铺层次结构,执行合成,然后基于原始RTL重建层次结构。
    该值允许跨边界优化的QoR优势,最终层次结构与RTL类似,以便于分析。

-retiming

  • 优化电路性能,特别是针对同一时钟域内的顺序路径。具体来说,这个布尔选项可以通过在组合逻辑门或查找表 (LUT) 之间自动移动寄存器(寄存器平衡),来改善电路性能。它保持电路的原始行为和延迟,不需要对RTL(寄存器传输级)源代码进行任何更改。

-keep_equ_reg

  • 防止合并具有相同输入逻辑的寄存器。并相同输入逻辑的寄存器可以带来资源节省和功耗降低,但可能带来的时序问题和对调试的影响。

-resource_sharing

  • 设置不同信号之间算术运算符的共享。
  • auto:根据设计的时序情况自动决定是否进行资源共享。如果设计时序允许,工具会自动启用资源共享,以便在不影响时序的前提下,优化资源利用。
  • on:强制启用算术运算符的资源共享,不考虑时序要求。通过共享资源来减少算术运算符的数量,从而节省芯片面积和功耗。
  • off:不进行资源共享。每个信号保留独立的算术运算符,不共享资源,可能会导致更高的资源使用和功耗,但可以避免潜在的时序问题。

-no_lc

  • 选中此选项时,关闭LUT合并。
  • 关闭LUT组合可能会导致更多的LUT被使用,从而增加资源消耗。在某些情况下,关闭LUT组合可能会影响时序,因为组合LUT通常可以减少逻辑级数,改善时序路径。对于某些设计者来说,关闭LUT组合可以提供更高的设计可控性,使他们能够更精细地控制电路行为。

-no_timing_driven

  • 不考虑时序影响,减少综合时间在早期设计阶段,快速生成原型以进行功能验证时,可以使用此选项来加快合成速度。
  • 可以快速估算资源利用情况。在某些调试和验证阶段,可以暂时禁用时序驱动合成,以便快速迭代测试设计修改。

-sfcu

  • 在单文件编译单元模式下运行合成。单文件编译单元模式可能提供更多的全局优化机会,因为综合工具可以看到所有源文件中的全部设计内容,从而进行更有效的优化。处理整个设计的综合可能会需要更多的电脑内存以及编译时间。

布局布线 (Implementation)

参考: UG904 Vivado Design Suite User Guide : Implementation

Opt Design

优化逻辑设计,使其更容易适应目标Xilinx设备。

-directive

  1. Explore
  • 功能:运行多次优化过程。
  • 特点:进行多次迭代优化,以全面提升设计性能和质量。适用于需要全面优化的设计。
  1. ExploreArea
  • 功能:运行多次优化过程,重点在于减少组合逻辑。
  • 特点:通过多次优化迭代,减少组合逻辑的使用,以节省芯片面积。适用于对面积有严格要求的设计。
  1. AddRemap
  • 功能:运行默认逻辑优化流程,并包括LUT重新映射以减少逻辑级别。
  • 特点:通过LUT重新映射,减少逻辑级别,优化设计的时序性能和面积。适用于需要优化逻辑级别的设计。
  1. ExploreSequentialArea
  • 功能:运行多次优化过程,重点在于减少寄存器和相关的组合逻辑。
  • 特点:通过减少寄存器和相关的组合逻辑,优化面积和功耗。适用于包含大量寄存器的设计。
  1. RuntimeOptimized
  • 功能:运行最少的优化过程,以更快的运行时间换取较低的设计性能。
  • 特点:优先考虑快速运行时间,可能会牺牲一些设计性能。适用于时间紧迫的项目。
  1. NoBramPowerOpt
  • 功能:运行所有默认的opt_design优化,但不包括块RAM功耗优化。
  • 特点:保持所有默认优化,但省略块RAM功耗优化,可能会影响功耗表现。适用于对功耗优化要求不高的设计。
  1. ExploreWithRemap
  • 功能:与Explore指令相同,但包括重新映射优化。
  • 特点:通过多次优化迭代和重新映射优化,提高设计性能和质量。适用于需要全面优化和逻辑重新映射的设计。
  1. Default
  • 功能:运行opt_design默认设置。
  • 特点:使用工具的默认优化设置,适用于不需要特殊优化的设计。提供一个平衡的优化方案,适合大多数设计需求。

从指令表上看 ExploreSequentialArea 最为优化最为全面和激进,其他选项是专门优化某方面的。

Power Opt Design (optional):

优化设计元素,降低目标赛灵思器件的功耗需求。

Place Design

将设计放置到目标Xilinx设备上,并执行扇出复制以改善时序

-directive

  1. Explore
  • 功能:在详细放置和后放置优化中投入更高的放置器努力。
  • 特点:在详细放置阶段投入更多资源和算法,提高放置精度。在后放置优化阶段进一步优化设计,提高整体性能。
  1. WLDrivenBlockPlacement
  • 功能:基于连线长度驱动的RAM和DSP块放置。通过减少块之间的连线距离来替代时序驱动放置。
  • 特点:通过最小化RAM和DSP块连接的距离,改善块之间的时序。适用于需要优化RAM和DSP块时序的设计。
  1. EarlyBlockPlacement
  • 功能:基于时序驱动的RAM和DSP块放置。在放置过程的早期确定这些块的位置,并用作放置剩余逻辑的锚点。
  • 特点:提早确定RAM和DSP块位置,作为其他逻辑单元放置的参考点。改善整体设计的时序性能和布局稳定性。
  1. ExtraNetDelay_high & ExtraNetDelay_low
  • 功能:增加高扇出和长距离网络的估计延迟。
  • 特点:提高对高扇出和长距离网络的延迟估计,从而优化关键路径时序。高级别(high):应用最高程度的悲观估计,适用于时序非常严格的设计。低级别(low):应用最低程度的悲观估计,适用于稍微宽松的设计。
  1. SSI_SpreadLogic_high & SSI_SpreadLogic_low
  • 功能:在SSI设备中分散逻辑单元以避免拥堵区域。
  • 特点:高级别(high):实现最高程度的逻辑分散,适用于严重拥堵的设计。低级别(low):实现最小程度的逻辑分散,适用于轻微拥堵的设计。
  1. AltSpreadLogic_high & AltSpreadLogic_medium & AltSpreadLogic_low
  • 功能:在整个设备中分散逻辑单元以避免拥堵区域。
  • 特点:高级别(high):实现最高程度的逻辑分散。中级别(medium):实现中等程度的逻辑分散。低级别(low):实现最小程度的逻辑分散。
  1. ExtraPostPlacementOpt
  • 功能:在后放置优化中投入更高的放置器努力。
  • 特点:进一步优化放置后的设计,提高整体性能。
  1. ExtraTimingOpt
  • 功能:在后期阶段使用一套替代算法进行时序驱动的放置。
  • 特点:提高时序驱动放置的效果,优化关键路径时序。
  1. SSI_SpreadSLLs & SSI_BalanceSLLs & SSI_BalanceSLRs & SSI_HighUtilSLRs
  • 功能:针对SSI设备的不同放置策略。
  • 特点:
    • SSI_SpreadSLLs:跨SLR分区,并为高连通性区域分配额外面积。
    • SSI_BalanceSLLs:跨SLR分区,尝试平衡SLR之间的SLL。
    • SSI_BalanceSLRs:跨SLR分区,平衡SLR之间的单元数量。
    • SSI_HighUtilSLRs:强制放置器尝试将逻辑单元放置得更紧密。
  1. RuntimeOptimized
  • 功能:运行最少的迭代次数,以更快的运行时间换取较低的设计性能。
  • 特点:
    • 优先考虑快速运行时间,可能会牺牲一些性能。
  1. Quick
  • 功能:绝对最快的运行时间,非时序驱动,只执行使设计合法所需的最小操作。
  • 特点:非常快速的编译,但不考虑时序优化,适用于对时序要求不高的设计或快速原型开发。
  1. Default
  • 功能:使用默认设置运行place_design。
  • 特点:提供一个平衡的优化方案,适合大多数设计需求。

More Options

  1. -post_place_opt

    Post placement optimization is a placement optimization that can potentially improve critical
    path timing at the expense of additional run time. The optimization is performed on a fully placed
    design with timing violations. For each of the top few critical paths, the placer tries moving
    critical cells to improve delay and commits new cell placements if they improve estimated delay.
    For designs with longer run times and relatively more critical paths, these placement passes
    might further improve timing.

选项post_place_opt是一种放置优化,它可以以额外的运行时间为代价,潜在地改善关键路径计时。优化是在有时间冲突的完全放置设计上进行的。对于前几个关键路径中的每一个,放置器尝试移动关键单元以改善延迟,如果它们改善了估计延迟,则提交新的单元放置。
对于具有较长运行时间和相对更关键路径的设计,这些放置通道可能会进一步改善时间。

Phys Opt Design (optional)

在放置后模式中,优化基于基于单元放置的时间估计。
物理优化会自动合并由于逻辑优化而产生的网表更改,并根据需要放置单元。
在后路由模式下,根据实际的路由延迟进行优化。除了根据逻辑变化和放置单元自动更新网表外,物理优化还可以根据需要自动更新路由。

-directive

  1. Explore
  • 功能:运行不同算法进行多次优化。
  • 特性:包括对高扇出网络的复制。SLR(Super Logic Region)跨越优化。最后阶段称为关键路径优化(Critical Path Optimization),在所有端点时钟的顶部关键路径上运行一部分物理优化,无论时序裕量如何。
  1. ExploreWithHoldFix
  • 功能:运行不同算法进行多次优化。
  • 特性:包括保持违规修复。SLR跨越优化。对高扇出网络的复制。
  1. ExploreWithAggressiveHoldFix
  • 功能:运行不同算法进行多次优化。
  • 特性:包括激进的保持违规修复。SLR跨越优化。对高扇出网络的复制。
  1. AggressiveExplore
  • 功能:与Explore类似,但使用不同的优化算法并设定更激进的目标。
  • 特性:包括一个允许降低WNS(Worst Negative Slack)的SLR跨越优化阶段,之后在后续优化算法中恢复。包括一个保持违规修复优化。
  1. AlternateReplication
  • 功能:使用不同的算法执行关键单元复制。
  1. AggressiveFanoutOpt
  • 功能:使用不同的算法进行扇出相关优化,目标更激进。
  1. AddRetime
  • 功能:执行默认的物理优化设计流程,并添加寄存器重定时。
  1. AlternateFlowWithRetiming
  • 功能:执行更激进的复制、DSP和块RAM优化,并启用寄存器重定时

Route Design

将设计路由到目标Xilinx设备。

-directive

  1. Explore
  • 功能:允许路由器在初始路由之后探索不同的关键路径放置。
  • 特点:提供了更多的优化机会,以改善关键路径的时序性能。
  1. AggressiveExplore
  • 功能:引导路由器进一步扩展其对关键路径的探索,同时保持原有的时序预算。
  • 特点:路由器运行时间可能显著增加,因为路由器使用更激进的优化阈值来尝试满足时序约束。适用于对时序要求非常严格的设计。
  1. NoTimingRelaxation
  • 功能:防止路由器通过放松时序来完成布线。
  • 特点:如果路由器难以满足时序,它会花更长时间尝试满足原始的时序约束。确保设计严格符合时序要求,但可能会增加运行时间。
  1. MoreGlobalIterations
  • 功能:在所有阶段使用详细的时序分析,而不仅仅是在最后阶段,并且即使时序只略有改善,也会运行更多的全局迭代。
  • 特点:通过反复迭代和详细分析来优化时序性能。适用于需要细致时序优化的设计。
  1. HigherDelayCost
  • 功能:调整路由器的内部成本函数,以强调延迟而非迭代次数,从而允许通过增加运行时间来换取更好的性能。
  • 特点:在性能和运行时间之间做出权衡,以实现更好的时序表现。适用于愿意增加运行时间以获得最佳性能的设计。
  1. RuntimeOptimized
  • 功能:运行最少的迭代次数,以更快的运行时间换取较低的设计性能。
  • 特点:优先考虑快速编译时间,但可能会牺牲一些性能。适用于时间紧迫的项目。
  1. AlternateCLBRouting
  • 功能:选择需要额外运行时间但可能有助于解决布线拥堵的替代路由算法。
  • 特点:适用于存在布线拥堵问题的设计,通过替代算法可能改善布线质量。
  1. Quick
  • 功能:绝对最快的编译时间,非时序驱动,仅执行使设计合法所需的最小操作。
  • 特点:非常快速的编译,但不考虑时序优化。适用于对时序要求不高的设计或快速原型开发。

Write Bitstream

生成用于Xilinx设备配置的比特流。

[toc]

约束

时序约束

主时钟

主时钟是通过输入端口或千兆收发器输出引脚(例如,恢复时钟)进入设计的板时钟。主时钟只能通过create_clock命令定义。

物理约束


施工中….