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单元较快的时钟到输出延迟,成功地缩短了关键路径的长度,从而改善了设计的时序性能。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解数据结构第三弹——二叉树(3)——二叉树的基本结构与操作

二叉树(1):深入理解数据结构第一弹——二叉树(1)——堆-CSDN博客 二叉树(2):深入理解数据结构第二弹——二叉树(2)——堆排序及其时间复杂度-CSDN博客 前言…

面试:HashMap

目录 1、底层数据结构,1.7 与1.8有何不同? 2、为何要用红黑树,为何一上来不树化,树化阈值为何是8,何时会树化,何时会退化为链表? 3、索引如何计算? hashCode都有了,为何还要提供hash()方法?数组容量为…

【Easy云盘 | 第十二篇】分享模块(获取分享信息、校验分享码、获取文件列表)

文章目录 4.4.4获取分享信息4.4.5校验分享码4.4.6获取文件列表 4.4.4获取分享信息 明天做 4.4.5校验分享码 明天做 4.4.6获取文件列表 明天做

Vue3大事件项目1 登录注册

创建项目 引入 element-ui 组件库 登录:注册样式准备之后,配置校验规则(4个条件:一数据、二规则) 1. 校验相关 (1) 给当前表单绑上整个的数据对象:el-form > :model"ruleForm" 绑…

云服务器是不是云盘?

​  云服务器是不是云盘?云服务器和云盘是两个不同的概念,尽管它们都是云计算服务的一部分。云服务器是一种提供计算能力的服务,可以运行各种应用程序和服务,而云盘则是一种提供数据存储和共享服务的工具。 具体来说: 云服务器…

【Qt】事件

目录 一、介绍 二、进入离开事件 三、鼠标事件 3.1 鼠标单击事件 3.2 鼠标释放事件 3.3 鼠标双击事件 3.4 鼠标移动事件 3.5 滚轮事件 四、按键事件 4.1 单个按键 4.2 组合按键 五、定时器 5.1 QTimerEvent类 5.2 QTimer类 5.3 获取系统日期及时间 六、窗口移…

蓝桥杯刷题 前缀和与差分-[NewOJ P1819]推箱子(C++)

题目描述 在一个高度为H的箱子前方,有一个长和高为N的障碍物。 障碍物的每一列存在一个连续的缺口,第i列的缺口从第l各单位到第h个单位(从底部由0开始数)。 现在请你清理出一条高度为H的通道,使得箱子可以直接推出去。…

深度学习理论基础(二)深度神经网络DNN

目录 一、基础知识点Ⅰ 参数部分Ⅱ 模型部分 二、深度神经网络模型搭建1. 准备数据集2. 划分数据集3. 搭建模型4. 训练网络5. 测试网络6. 保存与导入模型 神经网络通过学习大量样本的输入与输出特征之间的关系,以拟合出输入与输出之间的方程,学习完成后&…

每日一题(leetcode31):下一个排列-思维

思路&#xff1a;从后往前找到第一个nums[i-1]>nums[i] 然后从后往前(len-1 -->i(包含))找到第一个大于nums[i-1]的数&#xff0c;与nums[i-1]交换&#xff0c;然后对下标区间为[i,len-1]的元素进行排序。 class Solution { public:void nextPermutation(vector<in…

[深度学习] 无人车环境准备

1. 安装过程基本遵循以下步骤 电脑端环境配置 - OriginBot智能机器人开源套件 需要注意以下两点&#xff1a; 1> 由于深度学习需要的包和镜像体积都比较大&#xff0c;所以虚拟机硬盘大小建议120GB 2> 虚拟机的网络适配器应该设置为桥接模式&#xff0c;如果使用NAT模…

vivado 使用网表插入调试探测流程

使用网表插入调试探测流程 在 Vivado 工具中插入调试核的过程以分层方式来演示 &#xff0c; 以应对多样化的 Vivado 用户组的不同需求 &#xff1a; • 最高层是根据选定调试的一组信号线来自动创建并配置 Integrated Logic Analyzer (ILA) 核的简单向导。 • 下一层是“…

File,IO流,递归详解

File类 介绍 java.io.File类是Java语言提供了用来描述文件和目录(文件夹)的 构造 方法 注意&#xff1a; 构造方法中通常用的是第一个方法文件和目录可以通过File封装成对象File封装的对象仅仅是一个路径名&#xff0c;它是可以存在的&#xff0c;也可以不存在 绝对路径…

【二分查找】Leetcode x 的平方根

题目解析 69. x 的平方根 这道题表面是没有顺序性&#xff0c;但是我们可以发现如果使用枚举策略&#xff0c;它是包含顺序性质的&#xff0c;因此我们将枚举算法改进成二分算法 算法讲解 我们让left指针指向1&#xff0c; right指针指向x 如果当前的mid计算出来的平方 &g…

什么是商家转账到零钱

商家转账到零钱是什么&#xff1f; 通过商家转账到零钱这个功能&#xff0c;如果我们系统需要对用户支付费用&#xff0c;比如发放佣金、提成、退款之类的&#xff0c;可以直接转账到用户的微信零钱。 【商家转账到零钱】是【企业付款到零钱】的升级版&#xff0c;2022年5月1…

怀俄明探空站数据解算PWV和Tm

1. Matlab 获取代码可关注公众号WZZHHH回复&#xff08;怀俄明探空站数据解算PWV和Tm&#xff09;&#xff0c;或者咸鱼关注&#xff1a;WZZHHH123 怀俄明探空站数据解算PWV和Tm&#xff1a; 有关 Matlab 获取代码可关注公众号WZZHHH回复&#xff08;怀俄明多线程下载&#…

语音助手背后的魔法:一文揭秘NLP在智能助手中的应用

自然语言处理&#xff08;NLP&#xff09;正逐渐渗透到我们生活的每一个角落。在今天的大盘点中&#xff0c;我们将深入探索NLP在实际生活场景中的多样化应用&#xff0c;以及它在各个案例中所展现出的强大能力。 NLP技术如今已成为智能生活的关键驱动力&#xff0c;它让机器能…

wordpress全站开发指南-面向开发者及深度用户(全中文实操)--php数组与基本循环

php数组与基本循环 <?php$myName"xixi";$namesarray(xixi1,xixi2,xixi3); ?> <p> Hi ,my name is <?php echo $myName; ?> </p> <p> Hi,my name is <?php echo $names[0] ?> </p> <p> Hi,my name is <?…

Open CASCADE学习|放样建模

在CAD软件中&#xff0c;Loft&#xff08;放样&#xff09;功能则是用于创建三维实体或曲面的重要工具。通过选取两个或多个横截面&#xff0c;并沿这些横截面进行放样&#xff0c;可以生成复杂的三维模型。在CAD放样功能的操作中&#xff0c;用户可以选择不同的选项来定制放样…

创新数智化全场景福利解决方案,打造极致员工体验

众所周知&#xff0c;企业面临两个市场&#xff0c;一个是前端的产品&#xff08;服务&#xff09;市场&#xff0c;面对的是客户&#xff0c;另一个便是后端市场&#xff0c;即愈来愈烈的人才市场。在风云变幻、人潮涌动的知识经济时代&#xff0c;员工已成为企业未来的竞争关…

Linux_进程通信_管道_system V共享内存_6

文章目录 一、进程通信分类二、管道1.什么是管道1.原理2.管道的特点 2.匿名管道3.命名管道1.创建命名管道文件 - mkfifo (命令)2.创建命名管道文件 - mkfifo (函数) 三、system V共享内存1.原理2.共享内存函数1.fotk2.shmget1.如何知道有哪些IPC资源 - ipcs &#xff08;命令&a…