vivado中移位寄存器的优化(二)

移位寄存器优化用于改善移位寄存器单元(SRLs)与其他逻辑单元之间的负裕量路径的时序。如果存在对移位寄存器单元(SRL16E或SRLC32E)的时序违规,优化会从SRL寄存器链的开始或结束位置提取一个寄存器,并将其放置在逻辑结构中,以改善时序。这种优化缩短了原始关键路径的布线长度。
 下图1是由一个LUT构成的最高支持32位移位的移位寄存器SRLC32E结构。图1 32bit移位寄存器配置
 SRLC32E的引脚说明

  • CLK:时钟
  • CE:时钟使能,高电平有效
  • SHIFTIN(D):数据输入
  • A[4:0]:移位长度配置(支持1~32位),需要+1。如9位移位则A[4:0]需配置成1+8(01000)
  • SHIFTOUT:32个长度移位后的数据输出,可用来与其他SRLC32E级联,形成更大长度的移位寄存器
  • OUTPUT(Q):当移位长度被确定后,数据就会出现在Q端

一、移位寄存器优化的条件

移位寄存器的优化仅仅是将寄存器从移位寄存器移动到逻辑结构中,但永远不会将寄存器从逻辑结构移动到移位寄存器,因为后者不会改善时序。
要使此优化发生,必须满足以下条件:
• SRL地址(移位长度)必须为1或更大,以便有寄存器级可以从SRL中移出。
• SRL地址必须是一个常数值,由逻辑1或逻辑0驱动。
• 必须存在从SRL单元开始或结束的时序违规,该SRL单元位于最坏的关键路径中。
某些电路拓扑结构不会被优化:
• 通过链接在一起的SRLC32E形成的更大移位寄存器不会被优化。
• 使用Q31输出引脚的SRLC32E。
• 结合成一个LUT的SRL16E,并且同时使用了O5和O6输出引脚。

二、FDRE单元

从SRLs(Shift Register Lookup Tables)移至逻辑结构中的寄存器通常是FDRE(Flip-Flop D-type with Reset Enable)单元。在移动这些寄存器的同时,FDRE和SRL的INIT属性,以及SRL的地址都会相应地进行调整。
具体来说,当SRL中的寄存器级被提取并放置到逻辑结构中作为独立的FDRE单元时,FDRE的初始状态需要与原来SRL中对应寄存器级的初始状态保持一致。因此,FDRE的INIT属性会根据SRL的原始INIT属性进行设置,以确保数据的一致性和正确性。
同时,由于寄存器级的移除,SRL本身的长度发生了变化,因此SRL的地址也需要进行调整。这是为了确保剩余的寄存器级能够正确地对齐,并且任何依赖于SRL地址的逻辑操作都能够按照预期进行。
这些调整都是自动进行的,通常由FPGA开发工具(如Xilinx的Vivado)在优化过程中完成。工具会分析设计的时序性能,识别出可以进行优化的SRLs,并自动执行寄存器提取、FDRE放置和属性调整等操作,以改善设计的时序性能。
总的来说,从SRLs到逻辑结构的寄存器移动是FPGA优化中的一个关键步骤,它有助于减少信号传输的延迟、优化关键路径的性能,并最终提高整个系统的时序性能。

三、移位寄存器优化步骤

图2是一个从移位寄存器(SRL16E)srl_inst开始的关键路径示例。
图2 从移位寄存器(SRL16E)srl_inst开始的关键路径
当一条关键路径从移位寄存器(SRL16E)srl_inst开始,到逻辑单元logic_cell_out结束,并且存在时序违规时,会触发移位寄存器优化来改善这条路径的时序。假设SRL地址是一个常数值3,优化过程所采取的步骤如下:
1、识别关键路径和时序违规
Vivado工具首先会分析设计,并确定从srl_inst到logic_cell_out的路径为关键路径,且存在时序违规。
2、检查SRL地址和输出
优化器检查srl_inst的SRL地址,确认它是一个常数值3。
3、提取寄存器
根据SRL地址和时序违规的情况,优化器决定从srl_inst的开头或结尾提取一个寄存器。由于地址是3,说明至少有三个寄存器级在SRL内部。优化器会选择提取一个或多个寄存器级,以最短化关键路径的布线长度。
4、将寄存器放置到逻辑结构中
提取出来的寄存器(可能是FDRE单元)会被放置到逻辑结构中,通常是在srl_inst和logic_cell_out之间的某个位置,以改善时序性能。优化器会选择合适的插入点,使得寄存器的加入能够最大程度地减少关键路径上的延迟。
5、调整INIT属性和SRL地址
由于寄存器的移动,可能需要调整SRL的INIT属性,以确保在寄存器被移除后,SRL的初始状态仍然正确。同时,如果优化器移动了多个寄存器阶段,可能还需要调整SRL的地址值,以反映剩余的寄存器阶段数量。
6、重新评估时序
完成上述优化步骤后,Vivado会重新评估设计的时序,以确保时序违规已经被解决或至少得到了显著改善。
请注意,实际的优化步骤和结果可能会根据具体的FPGA架构、设计约束和时序要求而有所不同。因此,在进行此类优化时,建议仔细评估其对整体设计的影响,并确保最终设计满足所有的性能、时序和资源要求。
经过移位寄存器优化后的关键路径示例,如图3所示。
图3移位寄存器优化后的关键路径

四、移位寄存器优化的优点

在进行了移位寄存器优化后,srl_inst SRL16E的地址被递减,以反映内部寄存器阶段减少了一个。原来的关键路径现在变得更短了,因为srlopt寄存器被放置得更靠近下游的单元,并且FDRE单元具有相对更快的时钟到输出延迟。
这个优化过程中,由于将SRL16E的最后一个寄存器级移出并作为一个独立的FDRE单元放置在逻辑结构中,SRL16E的内部寄存器级数量减少了一个。因此,SRL16E的地址需要相应地递减,以确保后续的读取或写入操作能够正确地定位到剩余寄存器级中的数据。
优化后的设计将FDRE单元放置在更靠近logic_cell_out的位置,从而减少了信号从SRL16E到逻辑输出单元所需经过的物理路径长度。这有助于减少信号传输的延迟,进而改善时序性能。
此外,FDRE单元通常具有比SRL16E内部寄存器阶段更快的时钟到输出延迟。这意味着当信号到达FDRE单元时,它能够更快地将其传递给下游的逻辑单元。这也是优化能够改善时序的一个重要因素。
综上所述,通过递减SRL16E的地址、将寄存器阶段移动到逻辑结构中,并利用FDRE单元较快的时钟到输出延迟,成功地缩短了关键路径的长度,从而改善了设计的时序性能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux学习:gcc编译

编译.c gcc hello.c -o hello 用gcc 这个工具编译 hello.c,并且使之生成一个二进制文件 hello。 其中 –o 的意义是 output,指明要生成的文件的名称,如果不写 –o hello 的话会生成默 认的一个 a.out 文件 获得 C 源程序经过预处理之后的文…

【深度学习】StableDiffusion的组件解析,运行一些基础组件效果

文章目录 前言vaeclipUNetunet训练帮助、问询 前言 看了篇文: https://zhuanlan.zhihu.com/p/617134893 运行一些组件试试效果。 vae 代码: import torch from diffusers import AutoencoderKL import numpy as np from PIL import Image# 加载模型…

【Redis 知识储备】读写分离/主从分离架构 -- 分布系统的演进(4)

读写分离/主从分离架构 简介出现原因架构工作原理技术案例架构优缺点 简介 将数据库读写操作分散到不同的节点上, 数据库服务器搭建主从集群, 一主一从, 一主多从都可以, 数据库主机负责写操作, 从机只负责读操作 出现原因 数据库成为瓶颈, 而互联网应用一般读多写少, 数据库…

zdpdjango_argonadmin Django后台管理系统中的常见功能开发

效果预览 首先&#xff0c;看一下这个项目最开始的样子&#xff1a; 左侧优化 将左侧优化为下面的样子&#xff1a; 代码位置&#xff1a; 代码如下&#xff1a; {% load i18n static admin_argon %}<aside class"sidenav bg-white navbar navbar-vertical na…

SpringCloud Alibaba Sentinel 创建流控规则

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第十四篇&#xff0c;即介绍 SpringCloud Alibaba Sentinel 创建流控规则。 二、基本介绍 我们在 senti…

Golang | Leetcode Golang题解之第16题最接近的三数之和

题目&#xff1a; 题解&#xff1a; func threeSumClosest(nums []int, target int) int {sort.Ints(nums)var (n len(nums)best math.MaxInt32)// 根据差值的绝对值来更新答案update : func(cur int) {if abs(cur - target) < abs(best - target) {best cur}}// 枚举 a…

2024/4/1—力扣—最小高度树

代码实现&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ struct TreeNode* buildTree(int *nums, int l, int r) {if (l > r) {return NULL; // 递归出口}struct…

加州大学欧文分校英语基础语法专项课程01:Word Forms and Simple Present Tense 学习笔记

Word Forms and Simple Present Tense Course Certificate 本文是学习Coursera上 Word Forms and Simple Present Tense 这门课程的学习笔记。 文章目录 Word Forms and Simple Present TenseWeek 01: Introduction & BE VerbLearning Objectives Word FormsWord Forms (P…

云原生安全当前的挑战与解决办法

云原生安全作为一种新兴的安全理念&#xff0c;不仅解决云计算普及带来的安全问题&#xff0c;更强调以原生的思维构建云上安全建设、部署与应用&#xff0c;推动安全与云计算深度融合。所以现在云原生安全在云安全领域越来受到重视&#xff0c;云安全厂商在这块的投入也是越来…

工业网络自动化控制赛项分析

时间过去很久了,我突然想起来这篇文章还没写… 设备 它实际上是一个药盒装盖然后再进行一个归类码垛 左侧是供料,主要将盒子推出然后传送带送至中间工作站 中间工作站进行对料盒进行钢珠装填 再通过图像处理,判断大小,然后将数据传送到云服务器,最后通过伺服电机进行分类 …

飞书文档如何在不同账号间迁移

今天由于个人需要新建了一个飞书账号&#xff0c;遇到个需求就是需要把老帐号里面的文档迁移到新的账号里面。在网上搜了一通&#xff0c;发现关于此的内容似乎不多&#xff0c;只好自己动手解决&#xff0c;记录一下过程以便分享&#xff0c;主要有以下几个步骤。 1. 添加新账…

蓝桥杯 历届真题 双向排序【第十二届】【省赛】【C组】

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 改了半天只有60分&#xff0c;还是超时&#xff0c;还不知道怎么写&#xff0c;后面再看吧┭┮﹏┭┮ #include<bits/stdc.h> …

Java | Leetcode Java题解之第16题最接近的三数之和

题目&#xff1a; 题解&#xff1a; class Solution {public int threeSumClosest(int[] nums, int target) {Arrays.sort(nums);int n nums.length;int best 10000000;// 枚举 afor (int i 0; i < n; i) {// 保证和上一次枚举的元素不相等if (i > 0 && nums…

YoloV8改进策略:Neck改进改进|ELA

摘要 本文使用最新的ELA注意力机制改进YoloV8&#xff0c;实现涨点&#xff01;改进方式简单易用&#xff0c;涨点明显&#xff01;欢迎大家使用。 大家在订阅专栏后&#xff0c;记着加QQ群啊&#xff01;有些改进方法确实有难度&#xff0c;大家在改进的过程中遇到问题&#…

【QT+QGIS跨平台编译】063:【qca-softstore+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、qca-softstore介绍二、QCA下载三、文件分析四、pro文件五、编译实践5.1 windows下编译5.2 linux下编译5.3 macos下编译一、qca-softstore介绍 QCA-Softstore 是一个软件证书存储插件,它是为 QCA 框架设计的。这个插件提供了一个简单的持久化证书…

SAP 资产管理中如何调整折旧(摊销)金额

在资产管理的日常中可能涉及资产折旧金额的调整&#xff08;或者需要调增折旧&#xff0c;或者调减折旧额&#xff09;。这是需要使用到事务代码ABAA或者ABMA。在SAP中&#xff0c;ABAA和ABMA是两个不同的事务代码&#xff0c;它们都与固定资产折旧相关&#xff0c;但用途和处理…

分表?分库?分库分表?实践详谈 ShardingSphere-JDBC

如果有不是很了解ShardingSphere的可以先看一下这个文章&#xff1a; 《ShardingSphere JDBC?Sharding JDBC&#xff1f;》基本小白脱坑问题 阿丹&#xff1a; 在很多开发场景下面&#xff0c;很多的技术难题都是出自于&#xff0c;大数据量级或者并发的场景下面的。这里就出…

【二分查找】Leetcode 搜索插入位置

题目解析 35. 搜索插入位置 这道题就是寻找target的目标位置&#xff0c;如果nums中包含target直接返回索引&#xff1b;如果不包含&#xff0c;需要返回target存放的合适位置 注意这道题有一个细节地方需要注意&#xff1a;如果现在target没有在nums中出现&#xff0c;并且目…

lua学习笔记9(字典的学习)

print("********************字典的学习***********************") a{["凌少"]"傻逼",["我"]"天才",["age"]24,["daihao"]114514,["8848"]20000} --访问单个变量 print(a["凌少"])…

华为海思2024春招数字芯片岗机试题(共9套)

huawei海思2024春招数字芯片岗机试题(共9套&#xff09;&#xff08;WX:didadidadidida313&#xff0c;加我备注&#xff1a;CSDN huawei数字题目&#xff0c;谢绝白嫖哈&#xff09; 题目包含数字集成电路、System Verilog、Verilog2001、半导体制造技术、高级ASIC芯片综合、…