热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

芯动力——硬件加速设计方法学习笔记7.静态时序分析1

静态时序分析为何要进行静态时序分析?在综合阶段,我们需要已经进行了时序约束,也会产生一个时序分析的报告,但是当时也提到,由于我们没有生成时钟树,也没有进行布局布线的操作,所以这个时




静态时序分析

为何要进行静态时序分析?

在综合阶段,我们需要已经进行了时序约束,也会产生一个时序分析的报告,但是当时也提到,由于我们没有生成时钟树,也没有进行布局布线的操作,所以这个时序分析的结果是不精确的,所以在我们的后端的各个其他环节中,均需要进行静态时序分析来判断时序是否满足约束。

那么静态时序分析的特点是什么呢?主要有以下几点:


  1. 速度快。静态时序分析仅仅针对寄存器,检查寄存器的翻转时间满足时序约束的要求即可,不需要看到每个寄存器的行为和波形,所以速度很快。
  2. 不需要测试向量。不用进行仿真。
  3. 只针对同步电路。异步电路由于没有时钟和寄存器,无法进行静态时序分析。

所以,其实静态时序分析理论上也是一种仿真的手段,只是他检查的功能点很特殊。所以如果动态的仿真(包括前仿和后仿)已经非常理想的覆盖了所有的应用场景和功能点,我们是可以不用进行静态时序分析的。但是这种情况非常理想,基本在实际中不会出现。


静态时序分析的基本概念


Setup Time

image-20210326184338907

时钟上升沿之前数据必须保持稳定的时间


Hold Time

image-20210326184439558

时钟上升沿之后数据依然保持稳定的时间


Time Slack

主要用来表示实际数据到达时间和setup time与hold time之间的差,裕量大于0就说明满足时序约束,数据能够被正确采样。


静态时序分析的四种路径

image-20210326190651317

path1:输入到寄存器

path2:寄存器到寄存器

path3:寄存器到输出

path4:输入到输出


reg2reg的建立时间的检查

image-20210409164436911

上面是一个典型的寄存器到寄存器的时序模型。





T



l


a


u


n


c


h





T_{launch}


Tlaunch​一般称为发射时间,是指时钟到第一个寄存器的延时,





T



c


a


p


t


u


r


e





T_{capture}


Tcapture​称为捕获时间,是指时钟到第二个寄存器的延时,他们之间的差值,一般称为





T



s


k


e


w





T_{skew}


Tskew​。





T



c


k


2


q





T_{ck2q}


Tck2q​是指第一个寄存器的CK到Q端的延时,





T



d


p





T_{dp}


Tdp​是两个寄存器之间的组合逻辑的延时,





T



s


e


t


u


p





T_{setup}


Tsetup​就是指建立时间。

image-20210409171910643

那么,由上面这幅图就可以分析得出,寄存器到寄存器间的建立时间需要满足的公式:






T



l


a


u


n


c


h




+



T



c


k


2


q




+



T



d


p




<



T



c


a


p


t


u


r


e




+



T



c


y


c


l


e








T



s


e


t


u


p





T_{launch}+T_{ck2q}+T_{dp}

Tlaunch​+Tck2q​+Tdp​ 左边的部分,就是第一个寄存器的延时总和,右边的部分前两项是数据被第二个寄存器捕获的延时值。

下面我们来看一个真实的时序分析的报告:

image-20210428211943982

这幅图对应发射路径,可以看到,时序检查的起点是UFF0,终点是UFF1,路径归属的时钟组为CLKM,一般来说,工具将时序检查的终点的时钟作为路径归属时钟组。

Path Type这一项标记为max,这是说在setup time检查中,由于可变的项基本只有





T



d


p





T_{dp}


Tdp​,也就是两个寄存器之间的组合逻辑延时,所以,在所有器件延时最大时,setup time仍然能够满足,就说明时间裕量是足够的。

反过来说,Path Type为max就是对setup time进行检查,为min就是对hold time进行检查。

image-20210428212016889

下面这张图可以看到最终的slack是9.41,是大于0的,所以这个时序是满足要求的,从这个时序报告中,我们也能找到我们上面公式所讲的所有延时值。第一幅图,就对应公式的左边,称为data arrival time,第二幅图,对应公式的右边,称为data required time,这两个值相减大于0,就说明建立时间满足时序要求。

arrival time,第二幅图,对应公式的右边,称为data required time,这两个值相减大于0,就说明建立时间满足时序要求。



推荐阅读
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 本文介绍如何调整Element UI组件的边框样式,以确保内容与边框之间有足够的间距,并展示如何通过CSS实现更好的布局效果。 ... [详细]
  • 本文介绍如何使用MFC和ADO技术调用SQL Server中的存储过程,以查询指定小区在特定时间段内的通话统计数据。通过用户界面选择小区ID、开始时间和结束时间,系统将计算并展示小时级的通话量、拥塞率及半速率通话比例。 ... [详细]
  • 本文探讨了如何通过预处理器开关选择不同的类实现,并解决在特定情况下遇到的链接器错误。 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • 本文详细介绍了如何使用 HTML 和 CSS 创建一个功能齐全的联系我们表单,包括布局和样式设计。 ... [详细]
  • 树莓派摄像头配置与应用指南
    本文详细介绍了如何在树莓派上配置和使用摄像头,包括启用摄像头接口、简单的图片和视频捕捉方法以及如何通过网络实时传输视频流。 ... [详细]
  • 本文详细介绍了Linux内核中misc设备驱动框架的实现原理及应用方法,包括misc设备的基本概念、驱动框架的初始化过程、数据结构分析以及设备的注册与注销流程。 ... [详细]
  • 深入解析8086 CPU的转移指令
    本文详细介绍了8086 CPU中的转移指令,包括无条件转移、条件转移、循环指令及过程调用等,同时探讨了offset操作符的功能及其应用实例。 ... [详细]
  • 本文介绍了如何在WildFly 10中配置MySQL数据源时遇到的服务依赖问题及其解决方案。 ... [详细]
  • 随着技术社区的发展,越来越多的技术爱好者选择通过撰写博客来分享自己的学习经验和项目进展。本文将介绍一个具体案例,即将一套原本运行于Windows平台的代码成功移植到Linux(Redhat)环境下的过程与挑战。 ... [详细]
  • 华硕主板BIOS更新指南(图文)
    本文详细介绍了如何安全有效地更新华硕主板的BIOS,包括准备工作、具体步骤以及注意事项。BIOS是计算机基本输入输出系统的关键组成部分,负责初始化硬件并加载操作系统,定期更新BIOS可以增强系统的稳定性和兼容性。 ... [详细]
  • 本文介绍了用于监控数据库运行状态的SQL查询,包括重做日志切换频率及PGA和SGA内存使用情况的检查方法。 ... [详细]
  • 古月居课程四足机器人控制与仿真入门笔记,视频链接:link四足机器人足端轨迹规划--摆线摆线定义模型表示matlab程序摆线定义摆线,又称 ... [详细]
  • Spring Security核心概念与应用实践
    本文详细介绍了Spring Security的核心机制,包括其作为一系列过滤器的工作原理,如何实现用户认证与授权,以及常见的配置方法和高级特性如CSRF防护。 ... [详细]
author-avatar
mobiledu2502920413
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有