FPGA时序优化技术之重定时(Retiming)

news2024/9/19 21:08:51

介绍

        重定时(Retiming)是一个智能过程,通过组合延迟路径向后和/或向前移动和平衡寄存器以获得最佳定时,同时保持电路的功能行为。重定时算法可以在不考虑互连延迟的情 况下,在同一边沿上由一个时钟对电路进行定时时找到时钟周期的最佳解决方案。触发器可以从组合组件 的每个输入边移动到组件的每个输出边。这样的举动可以减少与触发器相关的关键路径延迟。但是,它每 次只能移动一个组合组件,因此该算法提供的时序改进非常有限。对于每种特定的 FPGA 架构技术,互连 延迟和打包规则也有许多限制。 当今的 FPGA 综合工具开发的当前重定时算法正在努力解决和增强这些限 制以获得更好的定时性能。

        流水线(Pipelining)是另一种优化技术,涉及将逻辑划分为多个阶段,以便第一阶段可以开始处理新输入,而最后一个 阶段正在完成先前的输入。这确保了更好的吞吐量和更快的电路性能。对于流水线,一些综合工具实际上 可能会在从主要输入到主要输出引脚的周期或延迟路径中引入更多寄存器,从而为设计增加时钟延迟周期。

FPGA综合工具如何实现和利用重定时功能?

        重定时和流水线是强大的技术,广泛应用于当今的 FPGA 综合工具中,以提高时序电路的时序性能。流水 线可以智能地用于平衡寄存器并将其从主 I/O 移动到分区逻辑中,而不会给原始设计引入任何额外的时钟 延迟。通过在重定时和流水线之间进行深思熟虑的集成过程,它可以证明是 FPGA 综合工具获得最佳时序 性能的一种非常有效和高效的技术。其中一些术语常用于重定时。

        前向重定时是跨组合路径向前移动寄存器的过程。在图 1.0 中,前向重定时将 REG_IN 向前移动到任一组合运算符,具体取决于时序松弛和约束。

        向后重定时正好与前向重定时相反,前向重定时是跨组合路径向后移动寄存器的过程。在图 1.0 中, REG_PL1 将根据时序松弛和约束向后移动到任一组合运算符。

        在图 1.0 中,可以通过将 REG_PL1 和 REG_PL2 手动编码到 RTL 行为中来对电路进行流水线处理。将流水线寄存器手动编码为加法器或减法器运算符可能是可行的,但不适用于乘法器。

        即使,如果它们都可以手工编码,让工具自动执行这项工作仍然会更有效率。第一种场景,如果重定时引擎只能进行前向重定时;原来的电路可以改善 5 ns(从 15 到 10 ns)。第二种情况,如果重定时引擎能够向前和向后移动寄存器,则时序可以改进 10 ns(从 15 ns 到 5 ns)。关键在于,根据重定时引擎的能力,最终的时序结果可能相当可观。

        对于一个好的重定时引擎,图 1.0 中的原始电路将转换为图 1.1 中的电路。在确保原始 I/O 行为的同时, 时序改进了 10 ns(15 至 5 ns)。人们甚至可以对图 1.1 进行进一步改进。这可以通过在其中一个操作 员内部而不是在它们之间进行切割来增强。

        由于 FPGA 提供了这种寄存器丰富的架构,因此利用重定时技术来提高时序电路的时序性能更加合适和适 用。最近由 FPGA 综合工具实现的一些重定时技术提高了使更多时序电路元件符合重定时功能的能力。根 据某些 FPGA 综合工具的不同,一些当前不合格的用于重定时的时序电路可能会有所不同。通常,具有不 同时钟启用 (CE) 线的寄存器、具有不常见的设置/复位信号的寄存器或具有复杂控制信号的寄存器不符合 重定时条件。

        由 Klaus Echl、Jean Christophe Madre、Peter Zepter 和 Christian Legl [2] 提出的称为多类重定时 的新方法的一些技术可以在当今的 FPGA 综合工具中非常有效地实现和实施。如图 1.2 所示,将不符合重 定时条件的寄存器转换为可以重定时的寄存器是正在考虑的技术之一。

        在当今的大多数 FPGA 架构中,延迟路径可以来自组合电路等资源,这些资源基本上映射到 LUT(查找 表),也可以来自存储器、乘法器和任何非时序单元等专用资源。具有 K 输入和单个输出的查找表能够 实现任意定义的 K 输入布尔函数。大多数组合电路都是使用这些 LUT 功能实现的。通常为快速算术运算提供专用的快速先行进位逻辑。

        FPGA 综合工具对由这些不同逻辑块组成的路径进行重定时的有效性和效率完全取决于其重定时算法。这就 是重定时挑战真正呈现给综合工具的地方。如前所述,最终结果可能非常重要,具体取决于重定时算法的 实施情况。

        在 FPGA 综合工具中,可以仅使用 LUT 或基于进位逻辑的 LUT 或使用专用资源(例如块乘法器或专用 DSP 块)来实现算术运算符。

        在图 1.3 中,假设 OPERATOR_1 映射到仅 LUT 逻辑,OPERATOR_2 映射到 LUT 和进位逻辑,OPERATOR_3 映射到指定的块乘法器。从这个简单的图示中,最有效的重定时位置是在 OPERATOR _2 和 OPERATOR _3 之间,这会将寄存器到寄存器的时序从 10 ns 减少到 5 ns。在第一种情况下,如果综合工具不具备跨运 算符重定时的功能,则该电路根本不会重定时。在第二种情况下,如果综合工具无法对任何由 LUT 和进位 逻辑实现的运算符进行重定时,则 OPERATOR _2 将被排除在重定时之外。重定时引擎必须针对每种特定技 术最大化和扩展其合格电路。重定时引擎必须具备的另一个重要特性是准确可靠的时序表征例程。否则, 重定时可能会恶化原始电路的性能。 如图 1.3 所示,理想的重定时会将寄存器到寄存器的时序提高 100%, 前提是输入和输出延迟约束均大于 5 ns。  

在 FPGA 综合流程中集成重定时

        重定时引擎可以在不同阶段集成到 FPGA 综合工具中,具体取决于重定时算法的实现方式。从图 1.5 的选项 1 中,重定时是通过使用详细的网表执行的。一些综合工具已经使用此选项流程开发 和集成了它们的重定时引擎。由于每个 FPGA 供应商的专有映射和打包规则,对于 FPGA 架构技术 来说效率不是很高。使用这个精心设计的网表的另一大优势是时序特征可以通过设计到达映射阶段 的时序而发生相当大的变化。

        另一方面,选项 2 在 FPGA 综合工具中很常见,因为重定时是在设计优化和映射之后执行的。重 定时引擎可以利用映射的网表并根据需要执行重定时。它可以在可能的情况下充分利用逻辑和物 理重定时算法。由于特定目标技术已经映射了网表,此阶段的时序表征要准确得多。

概括

        重定时已被证明是在确保设计行为的同时提高时序性能的最有效和最可靠的技术之一。由于其寄存器丰富 的架构和其他通用特性,可以合理地得出结论,FPGA 设计可以从重定时例程中受益匪浅。

        由于 FPGA 设计可能是技术特定的,重定时算法引擎面临着许多具有挑战性的任务。尽管存在所有这些具 有挑战性的障碍,重定时开发仍在继续非常有效地向前推进。

        每个重定时算法都可以提供不同质量的结果,具体取决于它的开发和实现方式。 Mentor Graphics 的 Precision RTL Synthesis 和 Precision Physical Synthesis 工具具有显着先进的专利重定时引擎,该 引擎结合了寄存器复制、流水线和重定时(向后、向前、跨运算符和运算符之间)的优化技术,以帮助设 计人员实现更好的结果设计性能,对设计周期时间的影响最小。

 

 

 

 

 

 

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

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

相关文章

【Linux vim】vim的基本使用,命令模式的指令集

目录 1.yum相当于手机的应用商店 2.vim的3种常用的模式 3.vim的基本使用(写出一个hello vim的代码) 4. 命令模式的指令集 1.yum相当于手机的应用商店 1.1查找 [rootVM-24-5-centos ~]# yum list #查找所有的安装包 但是查找结果太多了,可…

神州战神笔记本清灰+换硅脂-记录

文章目录Introduction拆清灰涂抹硅脂安装开机测试Introduction 笔记本购买于2020年4月份左右,至今已使用2年半时间。CPU是i7-9750H,基准频率是2.6GHz, 用control center 3.0开静音模式CPU会自动降频到1.5~2.6之间,日常办公都有些卡顿&#x…

docker配置阿里云镜像加速

一、快速使用-docker配置阿里云镜像 1、安装/升级Docker客户端 推荐安装1.10.0以上版本的Docker客户端,参考文档docker-ce 2. 配置镜像加速器 针对Docker客户端版本大于 1.10.0 的用户 您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加…

架构师必读 —— 逻辑模型(2)

用三角逻辑阐明观点: 通常用三角逻辑来表示逻辑的三大要素之间的关系。所谓三角逻辑,就是“观点” “论据” “数据”之间保持协调一致。观 点是指,话题的结论、提案或意见、推论。论据是指,佐证观点 的原理、原则、规律、普遍倾向…

阿里云-数据仓库-数据分析开发神器-ODPS

一、 ODPS 基本面-F10 1、什么是ODPS? 1、开发数据处理服务(Open Data Processing Service,简称ODPS),2016年后更名MaxComputer。ODPS是一种由阿里云自主研发,针对TB/PB级数据、实时性要求不高的分布式处理服务。主要服务于批量结…

NoSQL数据库原理与应用综合项目——MongoDB篇

NoSQL数据库原理与应用综合项目——MongoDB篇 文章目录NoSQL数据库原理与应用综合项目——MongoDB篇0、 写在前面1、本地数据或HDFS数据导入到MongoDB2、MongoDB数据库表操作2.1 Java API 连接MongoDB2.2 查询数据2.3 插入数据2.4 修改数据2.5 删除数据3、MongoDB数据库表进行数…

Prettier系列之配置

文章の目录一、在文件目录中创建一个.prettierrc文件二、添加规则1、Print Width2、Tab Width3、Tabs4、Semicolons4.1、true----在每个语句的末尾添加一个分号。4.2、false----只在可能导致ASI失败的行开头添加分号。5、Quotes6、Quote Props6.1、as-needed6.2、consistent6.3…

Compose挑灯夜看 - 照亮手机屏幕里面的书本内容

一、前言 上一篇文章 Compose回忆童年 - 手拉灯绳-开灯/关灯里面82年钨丝灯,让我又有了新的想法,我们怎么照亮手机里面的文本内容呢? 我们会在上一篇文章的基础上来实现“挑灯夜看”的功能,怎么下手呢?往下看&#x…

小程序01/小程序 全局配置 tabBar 介绍、小程序模板语法数据绑定 wxml渲染

一.全局配置 tabBar 介绍 tabBar说明: tabBar是配置全局 页面底部导航 tabBar内包含 页面底部导航 背景 按钮 文字 文字颜色 注意: tabBar内list 最多是 5 项 ,最少是 2 项 二.小程序模板语法数据绑定 说明: index.js文件data内定义属性 在index.wxml内渲染 in…

靠steam搬砖项目,傻瓜式操作单日500+,可放大操作

在分享干货之前,作为一个从15年开始创业的过来人,先教大家怎么分辨网络上的项目靠不靠谱,以后擦亮眼睛再做,切记!!!!! 1、回本周期性我这个人比较俗,创业就是…

我的世界(MC) forge 1.19.3 开服教程

Debian系统使用MCSManager9面板搭建Minecraft Java版MOD服务器的教程,本教程用的forge1.19.3服务端,用其他服务端的也可以参考一下。 其他版本我的世界服务器搭建教程:https://blog.zeruns.tech/tag/mc/各种Minecraft服务端介绍和下载&#…

双线性变换法MATLAB实现巴特沃斯低通滤波器

实验名称 数字信号处理实验4 实验(实习)日期 12.13 得分 指导老师 学院 电信院 专业 电子信息工程 年级 2020 班次 姓名 学号 20208327 1.实验目的 掌握利用MATLAB求滤波器阶数和自然截至频率&#…

手把手带你理解TPS趋势分析

在性能分析中,前端的性能工具,我们只需要关注几条曲线就够了:TPS、响应时间和错误率。这是我经常强调的。 但是关注 TPS 到底应该关注什么内容,如何判断趋势,判断了趋势之后,又该如何做出调整,调整之后如何定位原因,这才是我们关注 TPS 的一系列动作。 今天,我们就通…

SSM闲置物品

14-13开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字):基于s5m闲置物品交易系统 网站前台:关于我们、联系我们、公告信息、闲置物品、求购信息 管理员功能&…

SQL语句练习06

目录 一、建表 二、SQL语句练习 一、建表 一、建立如下学生表(命名格式“姓名拼音_三位学号_week8student”,如LBJ_023_week8student) create table LYL_116_week8student(SNO int primary key, SNAME char(8) not null unique,SEX char(2), DEPTNO i…

初学Nodejs(7):mysql模块的简单使用

文章目录Nodejsmysql模块1、在项目中操作数据库的步骤1.1 安装操作mysql数据库的第三方模块(mysql)1.2 通过mysql模块连接到mysql数据库,并进行必要配置1.3 通过mysql模块执行sql语句1.3.1 查询数据1.3.2 插入数据插入数据的快捷方式1.3.3 更…

43_读写内部Flash实验

目录 STM32的内部FLASH简介 内部FLASH的构成 主存储器 系统存储区 对内部FLASH的写入过程 解锁 擦除扇区 写入数据 操作内部FLASH的库函数 FLASH解锁、上锁函数 设置操作位数及擦除扇区 写入数据 实验源码 STM32的内部FLASH简介 在STM32芯片内部有一个FLASH(nor …

vTESTstudio入门到精通 - vTESTstudio工具栏介绍_ Traceability Documentation Environment

由于Traceability & Documentation和Environment的两块内容较少,所以就合并起来介绍,单独的功能介绍略少,就不分开了,vTESTstudio工具栏介绍这块内容主要也是给大家做个普及,大家也是主要做个了解,方便…

可信启动、安全启动:SGX、TrustZone、SecureEnclave

最近在公众号上看到了一篇文章,算是又丰富了自己的安全方面的眼界。 最近看公众号取代了小视频、知乎这些东西。以前是真的不喜欢碎片化的东西,看什么学什么总是要找到书籍。但是这样的做法太过的极端,因为有时候有些事是两面性的。比如像安全…

SD nand与SD卡 SPI模式驱动

SD nand 与 SD卡的SPI模式驱动 文章目录SD nand 与 SD卡的SPI模式驱动1. 概述2. SPI接口模式与SD接口模式区别2.1 接口模式区别2.2 硬件引脚2.3 注意事项3. SD接口协议3.1 命令3.1.1 命令格式3.1.2 命令类型3.2 响应3.2.1 响应格式4. SD nand(SD卡)结构描…