时序优化的常见

news2024/9/21 0:48:09

本期求职笔试题目来源大疆硬件逻辑岗,共2道题,涉及知识点包含:时序约束中异步时钟的设置、典型时序优化方法。

33、根据约束关系set_clock_groups -async -group {CLK1CLK3}{CLK2},下图哪些路径会进行时序检查( )(多选题)

A Path4 B Path2C Path3 D Path1 解析:本题目主要考察了时序约束中异步时钟的设置看到这一串英文大家不禁会联想到中讲过输入延迟约束,没错它们都是用Tcl命令所做的时序约束。而今天这道题目涉及到的是对异步时钟的约束,和set_false_path设置成伪路径的功能类似。我们要想明白题意就要明白set_clock_groups -async -group {CLK1CLK3}{CLK2}这句约束的意思,set_clock_groups是设置禁用识别的时钟组之间的时序分析命令;-async用于指定时钟之间的异步关系,让时序分析工具忽略异步时钟之间的路径;-group后面紧跟指定要忽略时钟之间路径的异步时钟的名字。因为图中CLK1、CLK2、CLK3三个时钟之间彼此都是异步的关系,所以这句话的意思也就很明确了,就是设置CLK1、CLK2、CLK3相互异步的三个时钟之间的路径不进行时序检查。那么我们很快就可以从图中得到答案,PATH2和PATH3路径是不同时钟所作用的两个寄存器,所以PATH2和PATH3路径不会进行时序检查;而PATH1和PATH4路径是同一时钟所作用的两个寄存器,所以PATH1和PATH4路径会进行时序检查,答案选择A和D

既然和set_false_path和set_clock_groups的功能类似,那我们就来看看它们各自的特点。set_false_path的优势是:灵活、针对性好、便于时序分析和调试。劣势是:①逐条约束会占用大量时间来调试和分析,效率低下。②时序例外的优先级比较复杂,多种时序例外约束共存的情况下,很容易产生意想不到的冲突,进一步增加调试时间,降低效率。③这么做极容易产生臃肿的XDC约束文件,而且时序例外的执行更耗内存,直接导致工具运行时间变长。而set_clock_groups的优势是:简单、快速、执行效率高。劣势是:会掩盖时序报告中所有的跨时钟域路径,容易误伤,不利于时序分析。所以我们不能盲目的只用其中的一种,要具体问题具体分析。set_clock_groups还可以用于解决重叠(单点多个)时钟的问题。重叠时钟是指多个时钟共享完全相同的时钟传输网络,例如两个时钟经过一个MUX选择后输出的时钟,在有多种运行模式的设计中很常见。

34、FPGA相对于ASIC,优势是灵活可编程,不足是可实现的最高频率有限。请介绍一下在FPGA开发中典型的时序优化方法。(问答题)解析:本题目主要考察了时序优化的方法该题目的第一句话完全就是科普,和问题没有什么关系。问题是在第二句话中表达的,我们要思考该从什么角度去找FPGA典型的时序优化方法。1)根据时序分析理论公式优化优化时序的目的是什么?其目的就是为了满足系统正常运行时所需要的建立、保持时间,最终得出两个关键的公式:Sslack(建立时间的余量)= [T_cycle –(Tco + Tdata)+ △T] – T_setup ≥ 0Hslack(保持时间的余量)= [(Tco + Tdata)–△T] – T_hold ≥ 0根据公式可以看出同一系统内的建立时间余量和保持时间余量是一对矛盾体,如果建立时间余量大了,保持时间余量必定会缩小,反之亦然。我们需要做的就是让建立保持时间余量和保持时间余量尽量保持平衡。如果建立时间余量较小或者不满足要求,我们就可以根据公式来分析满足建立时间的要求。我们可以在建立时间余量公式中增加时钟的周期T_cycle,也就是减小时钟T_cycle的频率,但是一般系统时钟在设计之初都是确定的,后期不能修改,所以这个方法不可取。我们可以在建立时间余量公式中减小Tco,但是Tco作为寄存器的固有属性往往都是固定好的,不能改变。我们可以在建立时间余量公式中减小Tdata,怎么减小Tdata呢?我们知道Tdata是寄存器之间路径所造成的延时,其中又包括布线延时和组合逻辑延时,所以我们要尽量减小布线延时和组合逻辑延时,如何降低布线延时和组合逻辑延时呢?(1)减小扇出Fanout,扇出指模块直接调用的下级模块的个数,如果这个数值过大的话,在FPGA直接表现为Net Delay较大,不利于时序收敛。减小扇出的方法有:①寄存器复制,寄存器复制是解决高扇出问题最常用的方法之一,通过复制几个相同的寄存器来分担由原先一个寄存器驱动所有模块的任务,继而达到减小扇出的目的。②Max_Fanout属性,在代码中可以设置信号属性,将对应信号的Max_Fanout属性设置成一个合理的值,当实际的设计中该信号的Fanout超过了这个值,综合器就会自动对该信号采用优化手段,常用的手段其实就是寄存器复制。但最好不要在综合设置中指定,过低的扇出限制会造成设计堵塞反而不利于时序收敛,最好的方法是根据设计中时序最差路径的扇出进行针对性的优化。③BUFG,通常BUFG是用于全局时钟的资源,可以解决信号因为高扇出产生的问题。但是其一般用于时钟或者复位之类扇出超级大的信号,此类信号涉及的逻辑遍布整个芯片,而BUFG可以从全局的角度优化布线。如果不是关键时序路径,而且高扇出网络直接连接到触发器,对扇出超过25K的Net插入BUFG。(2)减小逻辑级数Logic Level,一个Logic Level的延迟对应的是一个LUT和一个Net的延迟,对于不同的器件,不同频率的设计能容纳的Logic Level是不同的,否则会造成时序收敛困难。Logic Levell太大的处理方法就是重定时(Retiming),典型的重定时方法就是流水线,将过于冗长的组合逻辑增加寄存器进行打拍。对于时钟偏斜△T来说因为不确定正负,其对建立时间和保持时间的影响是相反的,所以我们希望|△T|尽可能的小,所以尽量不要用生成时钟,而采用全局时钟,这样才会有更小的|△T|。在实践中,我发现保持时间的问题往往是异步问题产生的。对于一个信号的跨时钟域问题,一般使用双寄存器法(对于慢采快的结绳法这里不讨论)。为了降低MTBF(Mean Time Between Failures,平均无障碍时间),这两个寄存器最好位于同一个Slice中。

2)通过代码风格优化,好的代码风格会更利于时序的优化。(2)时钟管理单元尽量放在顶层,有助于以共享逻辑从而提高性能降低功耗。(3)如果并不需要优先级,尽量将If语句转化为case语句。(4)尽量不要使用Don't Touch这类语句。如今Vivado综合工具已经很完善了,除非代码有问题或者手动复制寄存器,否则一般不会发生电路被综合掉的现象。使用这些语句会覆盖Vivado综合设置,导致电路没有得到充分的优化,给时序收敛造成困难。3)使用EDA开发工具的综合策略优化(1)Vivado综合实现本质是时序驱动的,因此再也没有ISE那种用随机种子综合实现满足时序收敛的工具。通过Vivado在布局布线方面提供了几种不同的策略(directive)组合可以产生上千种不同的布局布线结果.(2)使用Tcl脚本自定义布局布线过程,足以满足需求。Vivado可支持同时运行多个Implementation,为这种“设计时间换取性能”的方法提供了工具上的便利。(3)Implementation里Post-place Phys Opt Design和Post-route Phys Opt Design是没有使能的,工程后期使能这两个配置也能在一定程度上改善时序收敛

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

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

相关文章

三、电路知识笔记

三、电路知识 3.1 单位换算 1 英寸2.54 厘米25.4mm 1mil (即毫英寸)1/1000inch0.0254mm 普通杜邦线的间距为2.54mm即0.1英寸(inch) 3.2 贴片元件焊接 中温焊锡膏使用吹风枪焊接时,参考参数: 300度 风速4 (可焊接贴片…

CtfShow中的misc17解法

第一步: 首先拿随波逐流打开看看,没发现啥突破点,很正常 第二步:使用kali中的binwalk命令,解析出一个文件夹,打开压缩包后发现没什么东西 第三步:结合题目给的提示,使用tweakpng打开…

前端【CSDN创作优化3】CSDN自定义模块:解决保存CSDN自定义模块时显示fail

【CSDN创作优化3】CSDN自定义模块:解决保存CSDN自定义模块时显示fail 写在最前面遇到的问题:保存CSDN自定义模块时显示fail1.符号问题:删除所有符号2.超出字符长度限制:压缩保存3.li模块不见了:小窗口正常显示元素 &am…

你以为AI只能写代码?来看看最新的AI工具,一句话让AI直接生成一个应用程序!

AI写代码是目前大家熟知的能力,无论是告诉GPT、kimi、Claude还是通义千问他们都能迅速生成出长串的代码。 但是AI在软件工程领域的能力仅限于此吗? “我想开发一个小游戏,你可以帮我开发出来吗” 想必大家肯定在GPT或者是国内大模型上问过…

【Bug】Ubuntu22.04英伟达驱动安装失败,重启后服务器卡在进入系统/grub的页面

目录 报错内容1、安装英伟达驱动:Failed to initialize NVML: Driver/library version mismatch2、重启后卡在系统页面3、在解决完问题2后,尝试继续解决问题1,还是失败4、能ping通服务器但是无法ssh连接 解决方案1、重启后卡在系统页面&#…

全球1km分辨率人口分布栅格数据

我们在《全国省市县三级“七普”人口数据分享》一文中,为你分享过全国人口数据。 现在再为你分享全球1km分辨率人口分布栅格数据,你可以在文末查看该数据的领取方法。 全球1km分辨率人口分布 人口空间分布数据是在各项研究中经常使用的数据&#xff0…

UXR0134A Infiniium UXR 系列示波器:13 GHz,4 通道

新利通 UXR0134A Infiniium UXR系列示波器 ——13 GHz,4 通道—— 简述 UXR0134A 是 Infiniium UXR 系列实时示波器之一,拥有 13 GHz 带宽和 4 个通道。 功能特点 主要特点 ⚫13 GHz 带宽 ⚫4 个全带宽通道 ⚫10 位 ADC ⚫所有通道都提供 128 …

ArcGIS Pro 3.1下载分享

在使用了很长一段时间ArcGIS Pro 3.0之后,终于迎来了ArcGIS Pro 3.1的更新,这里为你分享一下ArcGIS Pro 3.1的安装步骤。 软件介绍 ArcGIS Pro 3.1 是由Esri发布的地理信息系统 (GIS) 软件的较新版本,作为 ArcGIS 桌面应用程序家族中的核心…

【13年12月CCF计算机软件能力认证】:出现次数最多的数、ISBN号码、最大的矩形、有趣的数、I‘m stuck!

题目概括出现次数最多的数暴力枚举,非常简单ISBN号码直接模拟,非常简单最大的矩形用到双指针(优化枚举),非常简单有趣的数用到了数学知识排列组合,有一定思维难度I’m stuck!我用到了两个dfs来解决&#xf…

JavaScript学习文档(12):什么是正则表达式、语法、元字符、修饰符

目录 一、正则表达式 1、什么是正则表达式 2、语法 3、元字符 (1)边界符 (2)量词 (3)字符类: (4)用户名验证案例 4、修饰符 (1)过滤敏感…

数据解读——基于《择偶偏好中的性别差异和社会阶层异质性——基于选择实验法的探索》

原始文章:《择偶偏好中的性别差异和社会阶层异质性——基于选择实验法的探索》 参考文章:条件Logistic回归模型 这是一篇关于研究不同性别,不同阶层(城乡户口;受教育程度)在择偶偏好上的差异的文章,择偶偏好包含以下6…

实际开发中git在IDEA中的使用

相信搜索这个的同学代码都已经拉取到本地了,并且已经在idea中打开了。 1.一般我们从远程colone下来的代码默认是在主分支下的,也就是说我们从远程的主分支拉取的代码并且在本地创建了一个主分支。 2.一般主分支是不允许修改的,所以我们可以基…

Guitar Pro v8.1最新图文安装教程

在音乐的世界里,GuitarPro 8无疑是一款让人眼前一亮的神器。它不仅为吉他爱好者提供了前所未有的便捷,更以其强大的功能和实用性,成为了音乐创作与学习不可或缺的工具。这篇文章将深度解析GuitarPro 8的独特之处,探讨它如何改变音…

测试:TestGRPCDiscovery

目录 测试:TestGRPCDiscovery 类定义 方法 async def asyncSetUp(self): async def asyncTearDown(self): async def test_discovery(self): 总结 这是一个关于算力共享中环形结构通讯机制的项目图的功能模型解释。以下是根据所给信息对项目功能的概述: 项目结构: 项…

使用deekpseek v2开发中国象棋游戏

使用AI可以完成简单程序(如:五子棋),甚至都不要调试即可以运行,但逻辑规则复杂的程序就需要反复的调整,修改运行BUG,优化运行性能。(如:中国象棋,支持提示目标…

NVIDIA H200与AMD MI300X:前者高利润率是否合理?

近年来,人工智能芯片巨头NVIDIA与AMD的竞争愈发激烈。尽管NVIDIA在AI计算解决方案市场占据主导地位,但在2023年末,AMD推出号称全球最快的AI芯片Instinct MI300X后,开始对NVIDIA构成了挑战。然而,经过一段时间的市场检验…

Sevenstar CS200A使用简明教程(485通信类型变送器)

该文章仅供参考,编写人不对任何实验设备、人员及测量结果负责!!! 文章主要介绍流量计的硬件连接、软件配置、数据读写以及流量计气体计算。 1 硬件连接 2 软件配置 将流量计硬件部分正确连接后: 打开“CS200单台控…

scrapy 爬取微博(一)【最新超详细解析】:创建微博爬取工程

本项目属于个人学习记录,爬取的数据会于12小时内销毁,且不可用于商用。 1 初始化环境 首先我们需要有python环境,先安装一下python,然后配置环境变量,这边给出windows的配置: 我这边的安装目录是D:\pyt…

逆向工程核心原理 Chapter 21 | Windows消息钩取

开始DLL注入章节的学习。 知识点学习 消息钩子 这里主要是要弄明白Windows GUI程序的工作模式/流程。 GUI以事件驱动方式工作。核心概念:message queue 最具代表性的:MS提供的spy SetWindowsHookEX() SetWindowsHookExA 函数 (winuser.h) - Win32 a…

基于图片识别的摄影作品展示平台

一、项目概述 Hi,大家好,今天分享的项目是《基于图片识别的摄影作品展示平台》。 摄影作品展示平台为用户提供了一个实践和应用所学摄影知识的机会,通过这个平台,用户可以上传摄影作品,平台能根据用户上传的图片自动…