Vivado Implementation Strategy介绍与学习

想深耕嵌入式?这个专辑值得收藏

MCU、FPGA、工控、传感器一站式学习,实战项目直接抄

目录

1.性能优化策略(Performance 系列)

1.Performance_Explore

2. Performance_ExploreWithRemap

3. Performance_ExplorePostRoutePhysOpt

4. Performance_WLBlockPlacement

5. Performance_WLBlockPlacementFanoutOpt

6. Performance_NetDelay_high

7. Performance_NetDelay_low

8. Performance_Retiming

9. Performance_ExtraTimingOpt

10. Performance_RefinePlacement

11. Performance_SpreadSLLs & Performance_BalanceSLLs

2.布线拥塞优化策略(Congestion系列)

1. Congestion_SpreadLogic_high/medium/low

2. Congestion_SpreadLogic_Explore

3. Congestion_SSI_SpreadLogic_high/low/Explore

3.资源优化策略(Area系列)

1. Area_Explore

2. Area_ExploreSequential

3. Area_ExploreWithRemap

4.功耗优化策略(Power 系列)

1. Power_DefaultOpt

2. Power_ExploreArea

5.运行时间优化策略(Flow 系列)

1. Flow_RunPhysOpt

2. Flow_RunPostRoutePhysOpt

3. Flow_RuntimeOptimized

6.总结


     Vivado Implementation Strategy(实现策略)是Xilinx Vivado工具中用于指导FPGA设计实现过程(包括布局、布线、时序优化等)的预设配置。这些策略通过调整底层算法参数,针对不同的设计需求(性能、资源、功耗、运行时间)提供优化方案。

1.性能优化策略(Performance 系列)

1.Performance_Explore

Performance_Explore尝试多种布局布线优化方法,自动探索最适合当前设计的时序优化方案。

工具会尝试不同的布局算法、逻辑分组和布线策略,并评估每种方案的时序结果。

耗时较长,但能在不确定哪种优化方法最有效的情况下找到较优解。

适用场景:

初次实现设计或对设计特性了解不足时,作为性能优化的起点。

对时序要求较高但缺乏明确优化方向的复杂设计。

2. Performance_ExploreWithRemap

Performance_ExploreWithRemap在时序优化的基础上,通过逻辑重映射(Remapping)进一步提升性能。

先应用常规时序优化(如布局调整、关键路径优先布线)。

再对逻辑进行重映射,例如将复杂LUT拆分为多个简单 LUT,或合并相邻逻辑以减少布线延迟。

适用场景:

时序紧张且存在复杂逻辑结构的设计(如多级组合逻辑链)。

标准优化策略无法满足时序要求时。

3. Performance_ExplorePostRoutePhysOpt

Performance_ExplorePostRoutePhysOpt在布线完成后进行物理优化,进一步微调时序。

布线后优化:分析实际布线延迟,对关键路径进行针对性调整(如插入缓冲器、复制逻辑以缩短路径)。

属于 “精细打磨” 阶段,通常与其他性能策略结合使用。

适用场景:

时序违例(Timing Violation)主要集中在布线阶段,且标准优化后仍有少量关键路径不满足要求的设计。

4. Performance_WLBlockPlacement

Performance_WLBlockPlacement优化块级资源(如 BRAM、DSP、时钟网络)的布局,减少长距离布线延迟。

优先将经常交互的块级资源(如 BRAM 与 DSP)放置在物理位置相邻的区域。

减少跨区域布线(如跨越 SLR 边界),降低信号传输延迟。

适用场景:

包含大量块级资源且数据交互频繁的设计(如数据通路密集的信号处理系统)。

对块间通信延迟敏感的设计。

5. Performance_WLBlockPlacementFanoutOpt

Performance_WLBlockPlacementFanoutOpt在块布局优化的基础上,专门处理高扇出(High Fanout)信号的布线。

高扇出信号(驱动多个负载的信号,如时钟、复位、控制信号)易产生较大延迟。

通过树形结构、缓冲器插入等方式优化高扇出网络的布线,降低信号到达各负载的时间差(skew)。

适用场景:

包含大量同步逻辑且依赖全局信号(如系统时钟)的设计。

高扇出信号导致时序问题的设计。

6. Performance_NetDelay_high

Performance_NetDelay_high针对延迟最高的网络(关键路径)进行重点优化,牺牲非关键路径以换取整体性能。

识别并优先优化时序裕量最负的路径(Negative Slack Paths)。

可能增加非关键路径的延迟,但确保关键功能满足时序要求。

适用场景:

设计中存在少量关键路径(如高频数据通路、关键控制逻辑),且路径时序紧张的情况。

7. Performance_NetDelay_low

Performance_NetDelay_low优化整体网络延迟,提升设计的平均时序性能。

不聚焦于特定路径,而是通过全局优化(如均衡布线资源、调整布局密度)降低所有路径的延迟。

适合对整体时序一致性要求较高的设计。

适用场景:

多时钟域设计,需要各时钟域内路径延迟相对均衡。

对数据吞吐量要求高但无明确 “关键路径” 的设计(如并行处理架构)。

8. Performance_Retiming

Performance_Retiming通过重新分配寄存器位置(Retiming)优化时序,平衡组合逻辑延迟。

在保持功能不变的前提下,将寄存器从路径的起点移至中间或终点,分割长组合逻辑链。

无需增加额外资源即可提升时序性能,但可能影响设计的物理实现(如布线复杂度)。

适用场景:

存在长组合逻辑路径(如多级加法器、状态机复杂判断逻辑)的设计。

资源受限但需要提升频率的设计。

9. Performance_ExtraTimingOpt

Performance_ExtraTimingOpt在标准时序优化基础上,增加额外的迭代优化步骤,进一步挖掘性能潜力。

延长优化时间,增加布局布线的迭代次数,尝试更多优化方案。

通常作为“最后手段”,用于时序极度紧张的设计。

适用场景:

设计必须运行在极高频率(如超过FPGA标称最高频率的80%)。

标准优化策略无法满足时序要求时。

10. Performance_RefinePlacement

Performance_RefinePlacement在布局完成后,通过微调逻辑单元的位置进一步减少延迟。

基于初始布局结果,分析相邻逻辑单元间的通信密度,将频繁交互的单元拉近。

属于局部优化,不改变整体布局结构,适合精细调整。

适用场景:

布局基本合理,但仍存在局部高延迟路径的设计。

对时序要求苛刻且已完成初步优化的设计。

11. Performance_SpreadSLLs & Performance_BalanceSLLs

优化SLR(Super Logic Region)内部的SLL(Slr-Local Lines)资源使用。

SpreadSLLs:将使用SLL资源的逻辑分散布局,避免局部拥塞。

BalanceSLLs:均衡各SLL资源的负载,防止某些 SLL 路径过载导致延迟增加。

适用场景:

大型FPGA(如UltraScale+系列)中跨SLR通信密集的设计。

发现SLL资源成为时序瓶颈的设计。

2.布线拥塞优化策略(Congestion系列)

这类策略通过调整逻辑分布和布线算法,解决FPGA内部布线资源不足导致的拥塞问题。

1. Congestion_SpreadLogic_high/medium/low

通过分散逻辑资源减少布线拥塞,级别越高分散程度越大。

将密集分布的逻辑单元分散到更大的物理区域,降低局部布线压力。

high:最大程度分散,适合严重拥塞场景,但可能增加关键路径长度;

medium:平衡拥塞缓解和时序损失;

low:轻度分散,优先保持性能。

适用场景:

high:布线利用率超过 90% 且出现大量时序违例的设计;
medium:中等拥塞(利用率 70%-90%)的设计;
low:轻度拥塞但需预防拥塞恶化的设计。

2. Congestion_SpreadLogic_Explore

尝试多种逻辑分散方法,自动寻找最适合当前设计的拥塞解决方案。

类似Performance_Explore,但聚焦于拥塞优化。

工具会尝试不同的分散算法(如随机分散、基于通信密度的智能分散),并评估结果。

适用场景:

不确定哪种分散策略最有效的拥塞场景。
复杂设计(如多时钟域、大量跨区域通信)的初始拥塞评估。

3. Congestion_SSI_SpreadLogic_high/low/Explore

针对SSI(Stacked Silicon Interconnect)多芯片堆叠FPGA优化逻辑分布,减少跨芯片互连的拥塞。

SSI芯片中,跨die通信(如通过Silicon Interconnect Fabric)延迟高且易拥塞。

high:高度分散跨 die 通信的逻辑;

low:轻度分散,优先保持性能;

Explore:尝试多种分散方法。

适用场景:

使用SSI技术的高端FPGA(如Virtex UltraScale+)中跨die通信密集的设计。

3.资源优化策略(Area系列)

这类策略聚焦于减少FPGA资源占用,提高资源利用率。

1. Area_Explore

尝试多种优化方法,自动探索最节省资源的实现方案。

类似Performance_Explore,但目标是最小化LUT、FF、BRAM等资源使用。

工具会尝试逻辑复用、资源共享、表达式简化等多种方法。

适用场景:

资源受限的小型FPGA设计。
需在有限资源内容纳更多功能的设计。

2. Area_ExploreSequential

专门优化时序逻辑(如寄存器、状态机)的资源占用。

分析时序逻辑的结构,合并冗余状态、优化状态编码,减少触发器使用。

对组合逻辑(如查找表)的优化力度较小。

适用场景:

时序逻辑占比高的设计(如复杂状态机、流水线架构)。
寄存器资源接近饱和的设计。

3. Area_ExploreWithRemap

在资源优化基础上,通过逻辑重映射进一步减少资源使用。

先应用常规资源优化(如逻辑复用),再通过重映射(如将多个小LUT合并为一个大LUT)减少资源碎片。

适用场景:

资源紧张且存在大量小逻辑单元的设计。
需进一步挖掘资源优化潜力的设计。

4.功耗优化策略(Power 系列)

这类策略通过调整电路活动率、时钟网络等方式降低FPGA功耗。

1. Power_DefaultOpt

使用默认的功耗优化方法,在不显著影响性能和资源的前提下降低功耗。

启用基本的功耗优化(如时钟门控、静态时序分析时考虑功耗因素)。

对设计修改最小,适合轻度功耗优化需求。

适用场景:

对功耗有一定要求但非首要目标的设计。
快速验证功耗优化效果的初步尝试。

2. Power_ExploreArea

同时优化功耗和资源利用率,寻找两者的平衡点。

结合功耗优化(如减少信号翻转率)和资源优化(如逻辑复用)。

可能通过减少总资源使用间接降低功耗(如关闭闲置模块)。

适用场景:

资源和功耗均受限的设计(如电池供电的嵌入式FPGA系统)。
需在两者间权衡的折中场景。

5.运行时间优化策略(Flow 系列)

这类策略通过简化优化流程、减少迭代次数等方式缩短实现过程的运行时间。

1. Flow_RunPhysOpt

加速物理优化阶段,减少布局布线时间。

简化物理优化算法(如减少迭代次数、降低布线分析精度)。

可能牺牲部分时序或资源优化效果,但显著缩短运行时间。

适用场景:

设计迭代频繁的阶段(如功能调试),需快速生成可测试的比特流。
对时序要求不高的初步验证。

2. Flow_RunPostRoutePhysOpt

在布线后进行快速物理优化,平衡时序和运行时间。

仅在布线完成后执行必要的物理优化(如关键路径缓冲器插入)。

跳过非关键优化步骤,缩短整体实现时间。

适用场景:

时序紧张但需快速迭代的设计。
已完成大部分优化,仅需微调关键路径的场景。

3. Flow_RuntimeOptimized

全面优化实现过程的运行时间,牺牲部分优化效果。

简化整个实现流程(包括综合、布局、布线),减少计算量。

适合快速验证设计功能,不追求极致性能或资源利用率。

适用场景:

大型设计的初期原型开发。
需频繁修改代码并快速测试的阶段。

6.总结

优先考虑性能:

关键路径明确 → Performance_NetDelay_high;
块级资源密集 → Performance_WLBlockPlacement;
时序极度紧张 → Performance_ExtraTimingOpt + Performance_ExplorePostRoutePhysOpt。

优先解决拥塞:

严重拥塞 → Congestion_SpreadLogic_high;
SSI 芯片 → Congestion_SSI_SpreadLogic_high;
不确定最佳方法 → Congestion_SpreadLogic_Explore。

优先优化资源:

通用场景 → Area_Explore;
时序逻辑占比高 → Area_ExploreSequential。

优先降低功耗:

轻度优化 → Power_DefaultOpt;
资源与功耗平衡 → Power_ExploreArea。

优先缩短运行时间:

快速迭代 → Flow_RuntimeOptimized;
布线后微调 → Flow_RunPostRoutePhysOpt。

       实际应用中,建议先使用默认策略(如Performance_Explore)评估设计特性,再根据结果针对性选择策略。同时,可通过Vivado 的 Report Utilization和Report Timing工具分析瓶颈,辅助策略选择。

想深耕嵌入式?这个专辑值得收藏

MCU、FPGA、工控、传感器一站式学习,实战项目直接抄

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值