FPGA秋招-笔记整理(1)

一、关键路径

关键路径通常是指同步逻辑电路中,组合逻辑时延最大的路径(这里我认为还需要加上布线的延迟),也就是说关键路径是对设计性能起决定性影响的时序路径。也就是静态时序报告中WNS(Worst Nagative Slack)对应的路径。

优化关键路径的方法:

1、在组合逻辑内插入寄存器,进行流水线处理

2、重定时,使寄存器之间的延迟趋近于平衡

3、操作符平衡。加法树、成法树。

4、消除优先级

5、逻辑复制,降低扇出。

6、关键信号后移。

关键输入应该在逻辑最后一级提供,其中关键输入为芯片、Slice、或者LUT提供的时延最大的输入,比如在if…else if…链中,将关键信号放在最低一级。

module if_test(
    input               i_clk                   ,
    input               i_rst                   ,
    input [2:0]         i_a                     ,
    input [2:0]         i_b                     ,
    input               i_c                     ,
    output [2:0]        o_q
);

reg [2:0]        ro_q            ;

assign o_q = ro_q                ;
 
always@(posedge i_clk,posedge i_rst)begin
    if(i_rst)
        ro_q <= 'd0;
    else if(i_a == 2)
        ro_q <= i_a;
    else if(i_b == 4 && i_c )
        ro_q <= i_b + i_a;
    else
        ro_q <= o_q;
     

上图中,ro_q[2]_i_3的LUT作为变量去控制ro_q[2]_i_1,证明了i_a == 2的优先级比i_b == 4 && i_c大,并且i_a == 2经历的路径更长。

二、静态时序分析的作用

参考:什么是STA静态时序分析,有什么作用?【FPGA/数字IC笔试面试】

静态时序分析的作用:

STA静态时序分析(Static Timing Analyse),属于验证的范畴,是从时序上对综合后的网表进行验证,检查电路是否存在建立时间、保持时间等违例。

STA与形式验证不同,STA从时序上验证,形式验证从功能上验证。

STA的工具有Synosys的Prime Time

(1)静态时序分析是一种验证数字集成电路时序是否合格的验证方法;

(2) 静态时序分析的前提是同步逻辑设计(重要!),不能分析异步电路;

(3) 静态时序分析工具计算路径延迟的总和,并比较相对于预定义时钟的延迟

(4) 静态时序分析仅关注时序间的相对关系,而不是评估逻辑功能;

(5) 静态时序分析对所有的时序路径进行错误分析,不需要使用测试向量激活某个路径(与时序仿真的不同点),分析速度比时序仿真工具快几个数量级,克服了动态时序验证的缺陷,适合大规模的电路设计验证,在同步逻辑情况下,能够达到100%的时序路径覆盖;

(6) 静态时序分析的目的是找到隐藏的时序问题,根据时序分析结果优化逻辑或者约束条件,使设计达到时序闭合(Timing Closure);

(7) 静态时序分析能够识别的时序故障:建立时间(Setup)/保持时间(Hold)/恢复时间(Recovery)/移除时间(Removal)检查;最小跳变和最大跳变;时钟脉冲宽度、时钟畸变(Skew、Jitter);总线竞争;不受约束的逻辑通道;关键路径;约束冲突等;

常用时序分析的概念:

setup time:时钟有效沿到来之前,数据必须保持稳定的最短时间,对应的是数据路径的最大延时

与寄存器的时钟有关

hold time:保持时间:时钟有效沿到来之后,数据必须保持稳定的最短时间,对应的是数据路径的最小延时

与寄存器的时钟无关。

建立时间或者保持时间不满足导致数据采样出错,亚稳态 现象。

recovery time:时钟有效沿来临之前,异步复位已经撤销的最小时间(复位已经无效的最小时间,对应于数据的恢复);

即在时钟有效沿来临之前,复位就要撤销,数据就要开始恢复的正常状态的时间。

与寄存器的复位有关。

removal time:时钟有效沿来临之后,异步复位需要保持有效的最小时间,类似时钟的 hold。

STA 的时序路径

STA 四种时序路径:

路径1:输入端口到寄存器的数据输入 D,

路径2:内部寄存器的时钟输入端到下一个寄存器的数据输入 D,

路径3:内部寄存器的时钟输入端到输出端口;

路径4:输入端口到输出端口。

每条时序路径包含 1 个起点和 1 个终点,

起点只能是设计的基本输入端口或内部寄存器的时钟输入端,

终点只能是内部寄存器的数据输入端或设计的基本输出端口。

图片

对于路径 3,分析根据寄存器的 Tco 延迟和组合路径延迟等分析 setup 和 hold 是否满足。

对于路径 1 和 3,可以加入 input delay 和 output delay 来分析,来满足寄存器的建立/保持时间要求。

三、形式验证

参考:什么是STA静态时序分析,有什么作用?【FPGA/数字IC笔试面试】

形式验证,属于验证范畴,从功能上对综合后的网表进行验证,常用的是等价性检验,以功能验证后的HDL设计为参考,对比综合后的网表功能,检验是否在功能上存在等价性,保证综合后没有改变原先HDL描述的功能。

形式验证的工具:Synopsys 的Formality

STA :时序路径覆盖率 100%,穷尽所有时序路径,验证时序;

形式验证:验证功能;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Git 核心概念与实操

这里写目录标题 1 版本回退2 工作区、暂存区、本地仓库、远程仓库 1 版本回退 原文链接&#xff1a;https://www.liaoxuefeng.com/wiki/896043488029600/897013573512192 首先 git log 查看提交记录 在Git中&#xff0c;用 HEAD 表示当前版本 上一个版本就是 HEAD^ &#xff…

Linux-进程间通信:System V消息队列

目录 System V IPC概述标识符与IPC Key System V消息队列创建或打开一个消息队列发送消息接收消息控制消息队列1、IPC_STAT2、IPC_SET3、IPC_RMID 查看系统当前的消息队列代码示例 System V IPC&#xff08;Inter-Process Communication&#xff09;是一组用于在 Unix-like 操作…

【C语言】手撕二叉树

标题&#xff1a;【C语言】手撕二叉树 水墨不写bug 正文开始&#xff1a; 二叉树是一种基本的树形数据结构&#xff0c;对于初学者学习树形结构而言较容易接受。二叉树作为一种数据结构&#xff0c;在单纯存储数据方面没有 顺序表&#xff0c;链表&#xff0c;队列等线性结构…

sklearn 笔记 metrics

1 分类 1.1 accuracy_score 分类准确率得分 在多标签分类中&#xff0c;此函数计算子集准确率&#xff1a;y_pred的标签集必须与 y_true 中的相应标签集完全匹配。 1.1.1 参数 y_true真实&#xff08;正确&#xff09;标签y_pred由分类器返回的预测标签normalize 默认为 Tr…

Linux:Win10平台上,用VMware安装Centos7.x及系统初始化关键的相关配置(分步骤操作,详细,一篇足以)

VMware安装Centos7.x镜像的详细步骤&#xff1a;VMWare安装Centos系统&#xff08;无桌面模式&#xff09; 我这里是为了安装Hadoop集群&#xff0c;所以&#xff0c;以下这些步骤是必须进行的 如果你是学习Linux&#xff0c;可以跳过非必须的那些配置项 我安装的版本是&…

前端实现将二进制文件流,并下载为excel文件

目录 一、关于二进制流二、项目实践三、常见问题及解决 一、关于二进制流 含义&#xff1a;二进制流是一种计算机文件格式&#xff0c;它的数据以二进制形式存储&#xff0c;与文本文件不同。 二进制文件可以包含任意类型的数据&#xff0c;例如&#xff1a;图像、音频、视频…

智慧园区引领产业智慧化:深入探索智慧技术如何点亮园区创新发展之路,构建未来产业生态圈,驱动区域经济持续升级

目录 一、引言 二、智慧园区的内涵与特征 三、智慧技术点亮园区创新发展之路 1、智慧技术推动产业转型升级 2、智慧技术促进新兴产业发展 3、智慧技术提升园区创新能力 四、智慧园区在产业智慧化中的作用与价值 1、优化资源配置&#xff0c;提高经济效益 2、提升服务品…

Kibana安装部署(Linux)

Kibana是Elasticsearch的开源可视化工具&#xff0c;与存储在Elasticsearch中的数据进行交互。 1. 下载软件 这里使用的Elasticsearch的版本是7.12.0&#xff0c;所以kibana选择同样的7.12.0版本。 官网下载地址&#xff1a;https://www.elastic.co/cn/downloads/past-releas…

【全网首发】Mogdb 5.0.6新特性:CM双网卡生产落地方案

在写这篇文章的时候&#xff0c;刚刚加班结束&#xff0c;顺手写了这篇文章。 前言 某大型全国性行业核心系统数据库需要A、B两个物理隔离的双网卡架构方案&#xff0c;已成为行业标准。而最新发布的MogDB 5.0.6的CM新增支持流复制双网段部署&#xff0c;用于网卡级高可用容灾(…

Meta 向第三方开放 MR 操作系统;黄仁勋:人形机器人成本可能比人们预期要低得多丨 RTE 开发者日报 Vol.190

开发者朋友们大家好&#xff1a; 这里是「RTE 开发者日报」&#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有…

大厂产品专家是做晋升述职的?

在大厂里,晋升都是需要述职的。与年终述职不同,晋升述职要求严格很多。这种情况下,如何完美表达自己才是适合晋升的人选?这篇文章,值得即将晋升和准备晋升的各位看看。 之前学姐写了一篇文章,讲怎么做年度述职,反响还不错~有兴趣的童鞋可以戳这里复习。今天学姐来讲一个…

25计算机考研院校数据分析 | 上海交通大学

上海交通大学电子信息与电气工程学院成立于2001年12月&#xff0c;其前身可湖源至百年前的电机专科&#xff0c;具有中国电气工程师“摇篮”之美称。50年代根据学科发展需要分为电工与计算机科学系(三系)和电子工程系(四系)。1985年&#xff0c;三系和四系合并&#xff0c;成立…

【LeetCode:216. 组合总和 III + 递归】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

类之间的关系

文章目录 一、横向关系复合&#xff08;组合&#xff09;委托&#xff08;聚合&#xff09;依赖关联 二、纵向关系&#xff08;继承&#xff09;继承下构造析构执行的顺序继承方法继承中的作用域多重继承 总结 一、横向关系 复合&#xff08;组合&#xff09; 包含与被包含黑色…

跟着野火从零开始手搓FreeRTOS(6)多优先级的配置

在 FreeRTOS 中&#xff0c;数字优先级越小&#xff0c;逻辑优先级也越小。 之前提过&#xff0c;就绪列表其实就是一个数组&#xff0c; 里面存的是就绪任务的TCB&#xff08;准确来说是 TCB 里面的 xStateListItem 节点&#xff09;&#xff0c;数组的下标对应任务的优先级&a…

mmclassification 训练自己的数据集

文章目录 从源码安装数据集准备config文件训练附录 从源码安装 git clone https://github.com/open-mmlab/mmpretrain.git cd mmpretrain pip install -U openmim && mim install -e .下面是我使用的版本 /media/xp/data/pydoc/mmlab/mmpretrain$ pip show mmcv mmpr…

npm install 卡在still idealTree buildDeps不动

前言 再使用npm install 安装包依赖时 发现一直卡住 停留在 观察node_cache下的_logs文件 发现一直在拉取包 37 silly idealTree buildDeps 38 silly fetch manifest riophae/vue-treeselect0.4.0尝试解决 尝试设置了taobao镜像源 依然如此 获取已经设置的镜像源 确实是ta…

6.3 实现Session 共享

1. Session 共享配置 2. Nginx 负载均衡 3. 测试请求分发 经过如上步骤 ,就完成了利用 Redis 实现 Session 共享的功能. 基本上不需要额外配置&#xff0c;开箱即用

【SpringBoot】-MyBatis详解+单表操作

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【Framework】 主要内容&#xff1a;什么是MyBatis框架&#xff1f;MyBatis框架有什么用&#xff1f;MyBatis实现查询步骤详解。MyBatis实现单表的增删查改。MyBatis模糊查询&…

LeetCode刷题实战4:寻找两个正序数组的中位数

题目内容 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,3], nums2 [2] 输出&#xff1a;2.0…