南京观海微电子---如何减少时序报告中的逻辑延迟

1. 引言

在FPGA逻辑电路设计中,FPGA设计能达到的最高性能往往由以下因素决定:

▪ 工作时钟偏移和时钟不确定性;

▪ 逻辑延迟:在一个时钟周期内信号经过的逻辑量;

▪ 网络或路径延迟:Vivado布局布线后引入的延迟量。

Vivado软件完成布局布线后,我们可以打开时序分析报告,来查看时序没有过的路径是由哪些因素导致的时序违规。Vivado会通过列表形式展示每条时序违规路径的信息,如下图所示。

双击上面表中的其中一条路径,会展开关于该路径更详细的时序报告,如下图:

图片

上图这个时序违例的例子,可以看到,该路径逻辑延迟贡献了11.934%的延迟量、路径延迟贡献了88.066%延迟量。该路径逻辑级数为5,经过了2个CARRY4、1个LUT4和2个LUT6。

2. 降低逻辑延迟的方法

如果逻辑延迟大,我们需要查看该路径是不是只包含CLB器件,还是说该路径还经过了如DSP、RAMB、URAM、FIFO或GT等器件。

2.1 路径只包含CLB器件

常规布线路径是在寄存器(FD*)或移位寄存器(SRL*)之间的路径,它们经过一些 LUT、MUXF 和 CARRY 元件。通常会遇到以下几种情形导致逻辑延迟过大:

(1)较高逻辑层数(logic levels)的组合电路。用户在两个寄存器之间插入的组合逻辑过于复杂,级联了过多的LUT、CARRY等元件,导致逻辑延迟过高时序过不了。如下图中,两个寄存器之间有一个logic levels为5层的组合逻辑。

图片

建议的解决方案:在设计的早期阶段,通过TCL命令“report_qor_assessment”,早些识别出逻辑层数较高组合逻辑,通过代码优化手段来降低逻辑层次。或者,在综合的时候,将“-retiming”全局变量勾选上。

(2)路径上有很多小的级联LUT(LUT1-LUT4)。这些多个小的级联查找表是可以被合并成数量更少的LUT的。阻止这些级联LUT合并的原因可能如下:

  • 有些小的LUT表存在一些扇出(扇出为10,或者更高);

  • 用户使用了一些properties语法,比如:KEEP、KEEP_HIERARCHY、DON’T_TOUCH或MARK_DEBUG。

建议的解决方案:移除掉这些properties语法,重新编译综合工程。

(3)路径上有单个CARRY(非级联)限制了LUT的优化,导致vivado布局也不是最优。

建议的解决方案:在综合的时候,使用“FewerCarryChains”综合指令。或者对该CELL在opt_design阶段设置CARRY_REMAP属性。(具体使用方法可以查看UG904)

2.2 路径包含其他复杂器件(DSPRAM等)

如果时序路径上会经过宏原语元件(macro primitives)如DSP、RAM、URAM、FIFO或GT_CHANNEL等元件,布局布线的难度会加大,也会导致更高的布局布线延迟。降低这些路径的逻辑延迟方法如下:

(1)在进出宏原语元件电路周围,增加额外的流水结构。比如:

  • 原设计是用的一个大位宽RAM缓存数据,把这个大位宽RAM拆分成多个并行的小位宽RAM实现相同的功能。

  • 原设计乘法器为2级流水乘法器,把它改为2级以上的流水乘法器。

  • 数据进出宏原语元件时,都用寄存器打一拍等。

(2)在包含宏原语元件的路径上减少逻辑层数,这点对改善整个设计的性能提升很明显。

Tips: 在修改RTL之前,可以尝试把DSP、RAM、URAM的自带流水寄存器使能都打开,然后重新编译工程,看时序是否能有改善。比如将下面这条路径:

图片

设置如下属性:

set_property -dict {DOA_REG 1 DOB REG 1} [get_cells xx/ramb18_inst]

注意,由于使能这些寄存器后,逻辑时序会有变动,此时的RTL功能和你原先设计是有出入的,所以不用生成bitstream,这样操作的目的只是为了看时序能如何改善。

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

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

相关文章

取出list中指定数量数据操作,操作完了删除这些数据

直接看代码吧,有注释 package com.ep.crm.task;import java.util.ArrayList; import java.util.List; import java.util.Random;public class Test {public static void main(String[] args) {List<String> list new ArrayList<String>();// 生成随机整数Random …

element-ui button 组件源码分享

element-ui button 源码分享&#xff0c;基于对源码的理解&#xff0c;编写一个简单的 demo&#xff0c;主要分三个模块来分享&#xff1a; 一、button 组件的方法。 1.1 在方法这块&#xff0c;button 组件内部通过暴露 click 方法实现&#xff0c;具体如下&#xff1a; 二、…

智睦云打印:无代码开发,API集成,助力电商平台运营

无缝连接&#xff1a;智睦云打印的跨平台兼容性 智睦云打印是一款创新型的打印管理软件&#xff0c;通过云共享打印和设备管控功能&#xff0c;能实现不同架构的跨平台兼容性。无论是X86/64&#xff0c;ARM&#xff0c;MIPS还是国产龙芯系统&#xff0c;智睦云打印都能提供稳定…

如何使用 Supabase Auth 在您的应用程序中设置身份验证

在本文中&#xff0c;您将学习基本的关键概念&#xff0c;这些概念将帮助您掌握身份验证和授权的工作原理。 您将首先了解什么是身份验证和授权&#xff0c;然后了解如何使用 Supabase auth 在应用程序中实现身份验证。 &#xff08;本文内容参考&#xff1a;java567.com&…

Open CASCADE学习|球面上曲线长度计算

球和球面是数学和物理学中非常重要的概念&#xff0c;它们在许多领域都有广泛的应用。 球面是指所有与固定点等距离的点的集合&#xff0c;这个固定点被称为球心&#xff0c;而这个等距离的长度就是球的半径。球面是一个二维曲面&#xff0c;它是三维空间中点与距离之间关系的…

二分(聪明的质检员)

[NOIP2011 提高组] 聪明的质监员 题目描述 小T 是一名质量监督员&#xff0c;最近负责检验一批矿产的质量。这批矿产共有 n n n 个矿石&#xff0c;从 1 1 1 到 n n n 逐一编号&#xff0c;每个矿石都有自己的重量 w i w_i wi​ 以及价值 v i v_i vi​ 。检验矿产的流程…

Docker容器引擎(5)

目录 一.docker-compose docker-compose的三大概念&#xff1a; yaml文件格式&#xff1a; json文件格式&#xff1a; docker-compose 配置模板文件常用的字段&#xff1a; 二.Docker Compose 环境安装&#xff1a; 查看版本&#xff1a; 准备好nginx 的dockerfile的文…

Vue中的插槽Slot如何使用

在Vue中&#xff0c;插槽&#xff08;Slot&#xff09;允许你在组件的模板中定义一些可变内容&#xff0c;以便在使用组件时进行替换或传递额外的内容。插槽是Vue中组件化开发的一个重要特性&#xff0c;它使得组件更加灵活和可复用。 以下是使用插槽的步骤&#xff1a; 在组件…

AS-V1000产品介绍:支持GA/T1400视图库标准(可通过GA/T1400接入海康、华为、大华等图传前端设备,实现图传功能)

目 录 一、概述 二、AS-V1000视频监控管理平台的特点 二、视频监控平台通过GA/T1400接入前端设备 &#xff08;一&#xff09;接入华为GA/T1400前端设备 &#xff08;二&#xff09;接入大华GA/T1400前端设备 &#xff08;三&#xff09;接入海康威视GA/…

杂题——试题-算法训练-P0602

分析&#xff1a; 把要重排序的数字转成数组对数组进行排序&#xff0c;从小到大排序数组转成字符串&#xff0c;字符串转成数字&#xff0c;得到最小数再把最小数的字符串反转&#xff0c;得到最大数注意&#xff1a; 在java语言中&#xff0c;如果使用Arrays.toString(digits…

EasyExcel根据对应的实体类模板完成多个sheet的写入与读取

1.展示模板一的实体类 import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; import com.alibaba.excel.annotation.write.style.HeadRowH…

问题:第十三届全国人民代表大会第四次会议召开的时间是()。 #经验分享#知识分享#媒体

问题&#xff1a;第十三届全国人民代表大会第四次会议召开的时间是&#xff08;&#xff09;。 A. 2018年3月3日至3月11日 B. 2019年3月5日至3月11日 C. 2020年3月5日至3月11日 D. 2021年3月5日至3月11日 参考答案如图所示 问题&#xff1a;顾客满意是顾客对一件产品满足…

失物招领|基于Springboot的校园失物招领系统设计与实现(源码+数据库+文档)

校园失物招领系统目录 目录 基于Springboot的校园失物招领系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、 管理员功能实现 (1) 失物招领管理 (2) 寻物启事管理 (3) 公告管理 (4) 公告类型管理 2、用户功能实现 (1) 失物招领 (2) 寻物启事 (3) 公告 …

[ARC145E] Adjacent XOR 题解

推荐在 cnblogs 上阅读。 [ARC145E] Adjacent XOR 题解 这道题真的是道神仙题&#xff0c;是那种考场想不出来、补题也补得十分艰难的题。可能我还是太菜了。 看了 APJ 大神的题解&#xff0c;琢磨很久才懂。为了帮助像我一样的同学&#xff0c;特地写一篇题解。 这是 2 月…

Centos7环境安装PHP8

一、安装必要的模块 yum install -y bzip2-devel libcurl-devel libxml2-devel sqlite-devel oniguruma oniguruma-devel libxml2 libxml2-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel zstd libzstd-devel curl libcurl-devel libpng libpng-devel …

AI大模型开发架构设计(8)——从 AI 编程助手到 AI Agent 应用实战

文章目录 从 AI 编程助手到 AI Agent 应用实战1 AI Agent是什么?和AI编程如何协同?AI Agent是什么?AI Agent 案例AI Agent 三种范式AI Agent 和 AI 编程如何协同?2 AGI/LLM/Lightweight AI Agent剖析AGI AgentsLightweight AI Agents3 Lightweight AI Agent技术剖析技术架构…

【日常总结】宝塔中 Gitlab服务器 forbidden

一、场景 二、问题 三、原因 四、解决方案 五、实战 Stage 1&#xff1a;打开 /etc/gitlab/gitlab.rb&#xff0c;并编辑 Stage 2&#xff1a;重启gitlab服务 Stage 3&#xff1a;测试&#xff08;打开girlab网页&#xff09; 六、后续 一、场景 公司更换新电脑 服务…

使⽤COCO数据集训练YOLOX

注意&#xff1a; 训练的时候&#xff0c;如果GPU不够&#xff0c;可以修改batchsize大小。 (yolox) xuefeif123:/mnt/d/BaiduNetdiskDownload/CV/YOLOX$ ls LICENSE README.md assets checkpoints demo exps requirements.txt setup.py tools yolox M…

C语言——P/文件操作

一、为什么使用文件&#xff1f; 如果没有⽂件&#xff0c;我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失了&#xff0c;等再次运⾏程序&#xff0c;是看不到上次程序的数据的&#xff0c;如果要将数据进⾏持久…

[Git版本控制系统]

Git是一种版本控制系统&#xff0c;用于跟踪和控制计算机文件的更改。它具有以下几个基本概念&#xff1a; 仓库&#xff08;Repository&#xff09;&#xff1a;Git使用仓库来存储项目的所有文件和历史记录。仓库可以分为本地仓库和远程仓库。本地仓库存在于本地计算机上&…