首页 > 其他分享 >【xilinx】用流水线分析和重定时实现尽可能高的频率

【xilinx】用流水线分析和重定时实现尽可能高的频率

时间:2024-05-24 16:55:15浏览次数:24  
标签:环路 FMAX 路径 前馈 寄存器 xilinx 流水线 定时

        随着性能需求增加,架构级权衡产生的影响远比工具选项或简单的设计修改大。这种权衡通过插入流水线寄存器级把最长的关键路径切割成较小的、更快速的工作段,牺牲时延来提升时钟频率。
        Vivado Design Suite 的流水线分析特性 ( report_pipeline_analysis)通过增加流水线寄存
器,独特而深入地洞察出设计瓶颈与机遇,以便提升设计的 FMAX。因为流水线会改变设计的顺序行为,需要特别关注验证,因此会把重点放在提供准确的指引而非自动插入流水线级。
        通过如下三步可充分发挥这一功能的作用

1. report_pipeline_analysis 特性用于分析设计并给出总结。在内部该设计被细分为多个反馈和前馈部分,流水线分析只对前馈段开展。
2. 细分完成后,就会制作一份设计的副本供探索使用。接着把时延级添加到前馈部分的探索模式中,每次迭代后产生新的、更快的关键路径。
最终直到因为新的关键路径已经足够快,插入流水线寄存器不能增加 FMAX,或者因为新的关键路径构成反馈环路的一部分,无法进一步提升性能为止。流水线分析功能还会考虑可能的最大工作时钟频率。如果会造成 FMAX 远远超出器件能力范围,则不建议插入寄存器。在图 5 的示例报告中,通过添加两个流水线级,结果共有 107 个寄存器添加到设计的特定前馈路径中 (即列出端点的地方), FMAX 可从 295 MHz 提高到 710 MHz。在本例中,反馈环路明显比前馈路径快,不会制约通过流水线实现的性能提升。流水线分析在添加两级时延后停止。插入第三级很可能让估计的FMAX 超出最慢环路和器件最大 FMAX 能力的极限。

3. 设计人员根据报告建议修改 HDL 代码,在路径的端点上添加两个流水线寄存器级。在启用新的重定时优化后重新运行综合。这些新的寄存器级被自动重定时到前馈逻辑锥中,用于平衡关键路径。图 6 所示的是这些增添的流水线寄存器 (以绿色高亮显示)重定时到两个端点之间的关键路径上(以蓝色高亮显示)。
 

 因为流水线寄存器被有效插在 LUT 之间,对布局布线的总体影响极小。如图 7 所示,每个 LUT 在架构上与两个寄存器配对,让 LUT 的输出直接路由到寄存器,不用任何代价。此外使用时间借用或有益歪斜技术,该寄存器驱动的走线段引起的延迟也会降低。与这些技术相比,备选方法需要在互联架构上添加数百万个寄存器,不但不能带来明显好处,而且还会增大面积占用、复杂性和功耗。


在顺序反馈环路中插入流水线级相当复杂,由于对此前周期数据的依存性,这样做会改变设计的功
能。对反馈环路进行流水线操作的成功概率极低,而且即便成功,也会显著增大占位面积,大幅降低系统吞吐量。小环路有时可以手动转换,但大环路往往不能进行流水线操作。通过流水线分析,可发现环路及其规模,以帮助设计人员评估转换它们的可操作性。参见: 图 8。

标签:环路,FMAX,路径,前馈,寄存器,xilinx,流水线,定时
From: https://blog.csdn.net/sqqwm/article/details/139126879

相关文章

  • 定时器组件设计方案
    层级时间轮实现高性能定时器此篇介绍时间轮,它的时间复杂度是最优的,插入、查找(最小)、删除都是O(1),很恐怖的性能这里示例一个三层时间轮,模拟时钟表盘的运作方式,便于理解且性能不低设计思路:1.根据定时任务的超时时间,按超时时间范围存入不同的链表中,处于同一个链表的任务的超......
  • Linux 开启定时任务执行脚本
    接到领导一个需求,要把压缩包放到当天日期的目录下,所以需要每天生成一个当前日期的文件夹1、创建sh文件,我这边命名为zip.sh#!/bin/bashtime=$(date"+%Y-%m-%d")##获取当前时间并且格式化时间##切换到这个目录下cd/root/app/bankcard/zip/mkdir"${time}"##创建以时......
  • SpringBoot动态定时任务
    其实SchedulingConfigurer实现方法很简单,只需要实现SchedulingConfigurer并重写configureTasks方法,在启动类必须加上@EnableScheduling注解即可。@Configuration@EnableScheduling@Slf4jpublicclassRuleTaskimplementsSchedulingConfigurer{privatevolatileSch......
  • Unity制作一个定时器Timer
    Timer和TimerManager代码usingSystem.Collections;usingUnityEngine;publicclassTimer:MonoBehaviour{publicdelegatevoidNotifier();publicNotifieronTimer;publicNotifieronTimerReset;publicNotifieronTimerComplete;publicfl......
  • spring boot中的定时任务
    SpringBoot中的定时任务主要通过@Scheduled注解以及SchedulingConfigurer接口实现。@Scheduled注解是Spring提供的一个注解,用于标记方法作为定时任务执行:配置方法在指定的时间间隔或时间点执行,实现各种定时任务需求。//在你需要定时的方法上加上@Scheduled注解,并用corn表达......
  • flutter 定时器
    Timer?_timer;varperiodicTime="".obs;initTimer({requiredintcreateTime,requiredintduration})async{_timer=Timer.periodic(constDuration(seconds:1),(timer)async{DateTimecurrentTime=DateTime.now();varnow=(currentT......
  • 如何自动(定时/间隔/重复)执行 同步文件、备份打包加密压缩文件
    首先,需要用到的这个工具:度娘网盘提取码:qwu2蓝奏云提取码:2r1z 参考下列两个之前发布的教程结合使用即可:《快捷自由定时重启、注销、关机》《如何从多个文件夹内转移全部文件(忽略文件夹的结构)(进行复制)(再打包)》就是先设定好勾选对'来源路径’Zip打包,并且勾选备份模式备份......
  • 如何定时关闭程序
    首先,需要用到的这个工具:度娘网盘提取码:qwu2蓝奏云提取码:2r1z 前几步的流程参考之前发过的文章:《快捷自由定时重启、注销、关机》 只不过最后的地方,选择关闭程序,再填写程序名称即可补充:如何找出程序名称常规方法:从C、D、E等盘里面去找从任务管理器找:1、任务栏右键......
  • 让你的电脑准时“打个盹”:Win10定时休眠
    哈喽,大家好,我是木头左!一、Windows10任务计划程序在快节奏的工作生活中,常常需要让电脑在特定时间执行某些任务,而Windows10的任务计划程序就是为此而生的神器。它不仅可以自动更新系统、备份文件,甚至还能帮你管理休息时间。想象一下,工作到深夜,电脑突然自己进入休眠状态,这不仅......
  • jenkinsfile流水线
     参考:https://blog.csdn.net/wx17343624830/article/details/136906665参考:https://blog.csdn.net/Step_By_XXX/article/details/131470414pipeline{agentanytools{maven'Maven-3.9.6'}parameters{gitParameterbranchFilter:......