FPGA流水线考虑因素

news2025/1/5 8:51:03
流水线考虑因素
另一种提升性能的方法是对拥有多个逻辑级数的长数据路径进行重新组织,并将其分配在多个时钟周期上。这种方法
以时延和流水线开销逻辑管理为代价,来达到加快时钟周期和提高数据吞吐量的目的。
由于 FPGA 器件带有大量的寄存器,额外的寄存器和开销逻辑通常不是问题。但是,数据路径跨多个周期,您必须对
设计的其余部分进行特殊注意,以考虑所添加的路径时延。
考虑 SSI 器件的流水线
在对需要 SLR 边界交汇的高性能寄存器间连接进行设计时,必须在 HDL 代码中描述正确的流水线,同时在综合中加以
控制。这样可以确保移位寄存器 LUT (SRL) 推断和其它优化工作不会发生在必须跨 SLR 边界的逻辑路径上。以这种方式
修改代码加上适当使用 Pblock 可以设定 SLR 边界交汇发生的位置。
预先考虑流水线
预先而不是滞后考虑流水线可以降低时序收敛的难度。在较晚阶段对特定路径添加流水线常常会跨越电路传输时延差
异。这样一个看似微小的修改可能需要对部分代码进行大规模的重新设计。
在设计中尽早发现需要使用流水线的地方往往可以大幅度提升时序收敛、实现运行时间 (因时序问题更容易解决)和
器件功耗 (因逻辑转换数量下降)。
检查推断的逻辑
在对您的设计进行编码时,应注意正在推断的逻辑。在想要添加流水线时,应注意下列条件:
带有大扇入的逻辑椎
例如,需要大量总线或多个组合信号来计算输出的代码
具有布局限制、输出相对于时钟时延 (clock-to-out) 更短或大量建立要求的块
例如,没有输出寄存器的块 RAM 或没有正确流水线化的算术代码
强制布局导致长布线
例如一个管脚强制一条跨越芯片的布线,可能需要流水线来实现高速运行
包括大型 XOR 函数的逻辑
大型 XOR 函数通常具有会造成大量动态功耗的高转换速率。流水线化函数能减少转换,从而对所述电路的功耗产
生积极影响。
下图中,时钟速度受下列因素限制:
源触发器的时钟到输出时间;
贯穿四个逻辑级数的逻辑延迟;
四个函数发生器的相关布线;
目的地寄存器的建立时间。
。由于触发器与函数发生器位于相同的 slice 中,时钟速度受源触发器的输出相
对于 clock-to-out 延迟、贯穿一个逻辑级数的逻辑延迟、一个布线延迟和目的地寄存器的建立时间限制。在这个例子
中,流水线化后的系统时钟的运行速度明显高于流水线化之前。
确定是否需要管道
常用的流水线技术可以识别大的组合逻辑路径,将其分成较小的路径,并在这些路径之间引入寄存器级,理想地平衡
每个流水线级。
要确定设计是否需要流水线,请确时序钟的频率和分布在每个时钟组中的逻辑数量。您可以使用
report_design_analysis Tcl 命令与 -logic_level_distribution 选择来确定每个时钟组的逻辑级分布。
提示: 设计分析报告还突出显示具有零逻辑层的路径数,您可以使用这些路径确定在代码中进行修改的位置。
平衡时延
要通过添加流水线级来平衡时延,请将该级添加到控制路径而不是数据路径。数据路径包括更宽的总线,这增加了所
使用的触发器和寄存器资源的数量。
例如,如果您有 128 位数据路径, 2 级寄存器,并且需要 5 个周期的时延,则可以插入 3 个寄存器级: 3 x 128 = 384
触发器。或者,您可以使用寄存器来控制逻辑使能数据路径。使用 5 级单比特寄存器来控制数据路径触发器的使能信
号,进而相应地控制多周期路径时序例外。
注释: 此示例仅适用于某些设计。例如,在存在来自中间数据路径触发器的扇出的情况下,仅具有 2 个级不工作。
建议: FPGA 中的最佳 LUT FF 比为 1 1 。具有显着更多 FF 的设计将增加不相关的逻辑打包成片,这将增加布线复杂
性并且可以降低 QoR
平衡管线深度和 SRL 使用
如果存在深度寄存器流水线,应将尽可能多的寄存器映射在 SRL 中,以避免寄存器利用率的显著增加。例如, 9 层深
的流水线 (对于 32 的数据宽度)导致每个比特的 9 个寄存器,使用 32×9 = 288 个寄存器。将相同的结构映射到 SRL
使用 32 SRL 。每个 SRL 都连接到 5’b01000 的地址引脚 (A4A3A2A1A0) ,以实现 9 级深度。
在综合期间推断 SRL 有多种方法,包括以下:
• SRL
• REG -> SRL
• SRL -> REG
• REG -> SRL -> REG
您可以使用 RTL 代码中的 srl_style 属性创建这些结构,如下所示:
• (* srl_style = “srl” *)
• (* srl_style = “reg_srl” *)
• (* srl_style = “srl_reg” *)
• (* srl_style = “reg_srl_reg” *)
常见的错误是在较深的流水线阶段使用不同的使能 / 复位控制信号。下面是在 9 深度流水线级中使用的复位的示例,其
中复位连接到第三,第五和第八流水线级。使用这种结构,工具只将流水线级映射到寄存器,因为 SRL 原语有一个复
位引脚。
FF->FF->FF(reset) -> FF->FF(reset)->FF->FF->FF(reset)->FF
利用 SRL 推断:
确保没有用于流水线级的复位。
分析是否真的需要复位。
在一个触发器上使用复位 (例如,在管道的第一级或最后一级)。
避免不必要的流水线
对于高度利用的设计,太多的流水线可能导致次优的结果。例如,不必要的流水线级增加了触发器和布线资源的数量,
如果利用率高,这可能限制布局和布线算法。
注释: 如果有许多具有 0/1 逻辑级别的路径,请检查以确保这是有意这么做的。
考虑流水线宏原语
基于目标架构,如果使用足够的流水线,专用原语 (如块 RAM DSP )可在 500 MHz 以的上的频率范围工作。对于
高频设计,赛灵思建议使用这些块中的所有流水线。

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

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

相关文章

关于 PCB线路板细节锣槽问题 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/144783817 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…

SQL创建和操纵表

本文介绍创建、更改和删除表的基本知识。 1. 创建表 SQL 不仅用于表数据操纵,而且还用来执行数据库和表的所有操作,包括表本身的创建和处理。一般有两种创建表的方法: 多数DBMS 都具有交互式创建和管理数据库表的工具;表也可以…

RPA系列-uipath 学习笔记4

使用Uipath 处理hover的问题 备注:使用uipath stversion:2024.10.6,所有学习来源自uipath Academy 首先,打开uipath给我们提供的一个网站 ACME,这个网站呢,需要提前注册一下的哈。 今天呢,就是记录一下,怎…

Unity编译Android apk包进度奇慢或gradle报错的解决方案

最近遇到Unity编译Android apk进度卡在"Calling IPostGenerateGradleAndroidProject callbacks"进度一直不变,如下图: 最后提示编译失败,类似错误如下: Picked up JAVA_TOOL_OPTIONS: -Dfile.encodingUTF-8FAILURE: Bu…

探究音频丢字位置和丢字时间对pesq分数的影响

丢字的本质 丢字的本质是在一段音频中一小段数据变为0 丢字对主观感受的影响 1. 丢字位置 丢字的位置对感知效果有很大影响。如果丢字发生在音频信号的静音部分或低能量部分,感知可能不明显;而如果丢字发生在高能量部分或关键音素上,感知…

CAT3D: Create Anything in 3D with Multi-View Diffusion Models 论文解读

24年5月的论文,上一版就是ReconFusion 目录 一、概述 二、相关工作 1、2D先验 2、相机条件下的2D先验 3、多视角先验 4、视频先验 5、前馈方法 三、Method 1、多视角扩散模型 2、新视角生成 3、3D重建 一、概述 该论文提出一种CAT3D方法,实现…

模型工作流:自动化的模型内部三角面剔除

1. 关于自动减面 1.1 自动减面的重要性及现状 三维模型是游戏、三维家居设计、数字孪生、VR/AR等几乎所有三维软件的核心资产,模型的质量和性能从根本上决定了三维软件的画面效果和渲染性能。其中,模型减面工作是同时关乎质量和性能这两个要素的重要工…

黑马程序员Java笔记整理(day08)

1.代码块 静态代码块 实例代码块 2.内部类 成员内部类 静态内部类 局部内部类 匿名内部类 认识 常见使用形式 应用场景 简化版本 另一个应用场景 3.函数式编程 Lambda 函数简化 方法引用 4.常用API String ArrayList 5.GUI编程 快速认识 事件处理 三种常用写法 第一种 第二…

redis延迟队列

Redis延迟队列 Redis延迟队列是基于Redis构建的消息队列,用来处理需延迟执行的任务。 基本原理 它借助Redis的有序集合(Sorted Set)数据结构达成目的。会把任务及其执行时间分别当成成员与分值存进有序集合,由于执行时间作为分值&…

爱思唯尔word模板

爱思唯尔word模板 有时候并不一定非得latex https://download.csdn.net/download/qq_38998213/90199214 参考文献书签链接

【JDBC】入门增删改查

JDBC JDBC概述 JDBC(Java DataBase Connectivity, java数据库连接)是一种用于执行SQL语句的Java API。JDBC是Java访问数据库的标准规范,可以为不同的关系型数据库提供统一访问,它由一组用Java语言编写的接口和类组成。 XML方式…

Java开发-后端请求成功,前端显示失败

文章目录 报错解决方案1. 后端未配置跨域支持2. 后端响应的 Content-Type 或 CORS 配置问题3. 前端 request 配置问题4. 浏览器缓存或代理问题5. 后端端口未被正确映射 报错 如下图,后端显示请求成功,前端显示失败 解决方案 1. 后端未配置跨域支持 …

Dify服务器部署教程

Dify的github地址: https://github.com/langgenius/dify 服务器要求:2c4g 1、克隆仓库 可以通过命令或者下载zip解压后上传服务器都行 git clone https://github.com/langgenius/dify.git 2、docker启动 cd dify/dockercp .env.example .envdocker compose up -d…

砝码称重(2021年蓝桥杯)

【问题描述】 你有一架天平和N个砝码,这N个砝码的重量依次是w1,w2,……,wn。(1~n为下标) 请你计算利用N个砝码一共可以称出多少种不同的重量? 【注意】砝码可以放在天平的两边 【输入格式】 第一行包含一个整数N。 第二行包含N个…

KaiOS 4.0 | DataCall and setupData implemention

相关文档 1、KaiOS 3.1 系统介绍 KaiOS 系统框架和应用结构(APP界面逻辑)文章浏览阅读842次,点赞17次,收藏5次。对于Java开发者而言,理解JS的逻辑调用是有点困难的。而KaiOS webapp开发又不同于现代的web开发,更像chrome浏览器内嵌模式。在这里梳理一下kaios平台web应用…

ArcGIS Pro地形图四至角图经纬度标注与格网标注

今天来看看ArcGIS Pro 如何在地形图上设置四至角点的经纬度。方里网标注。如下图的地形图左下角经纬度标注。 如下图方里网的标注 如下为本期要介绍的例图,如下: 图片可点击放大 接下来我们来介绍一下 推荐学习:GIS入门模型构建器Arcpy批量…

win系统B站播放8k视频启用HEVC编码

下载HEVC插件 点击 HEVC Video Extension 2.2.20.0 latest downloads,根据教程下载安装 安装 Random User-Agent 点击 Random User-Agent 安装 配置 Random User-Agent 在youtube中会导致视频无法播放,我选择直接屏蔽了 B站设置

mysql锁机制以及隔离级别下保证并发安全的方式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 mysql锁机制以及隔离级别下保证并发安全的方式 多事务并发执行可能出现的问题mysql有那些锁全局锁表级锁行锁 在不同的隔离级别下mysql保证并发安全的方式RU隔离级别RC隔离级…

qwenvl 以及qwenvl 2 模型架构理解

qwenvl 模型理解: 参考资料: https://qwenlm.github.io/zh/blog/qwen2-vl/ https://github.com/QwenLM/Qwen2-VL?tabreadme-ov-file https://qwenlm.github.io/zh/blog/qwen2-vl/ 论文: qwenvl https://arxiv.org/abs/2308.12966 Qwen2-VL …

高效使用AI完成编程项目任务的指南:从需求分析到功能实现

随着人工智能工具的普及,即便是零编程基础或基础薄弱的用户,也可以借助AI完成许多技术任务。然而,要高效地使用AI完成编程任务,关键在于如何清晰表达需求,并逐步引导AI实现目标。 在本文中,我们将通过开发…