仿真验证方法(2)——静态验证

一、静态验证

1.1 概述

        在之前的文章中,我们介绍了动态仿真,但是动态仿真用于百万门以上电路时所需时间极长,而且其功能覆盖率取决于所设计的输入激励向量,很难达到100%,因此静态时序分析和等效性检查这样的静态验证是必须的。静态时序分析比动态仿真快得多,无需输入激励向量,可以穷尽 所有门级电路的时序验证,但无法发现逻辑功能错误,逻辑综合后、布局后和布线后都能做,但后者更为准确而重要。等效性验证用于比较RTL代码与RTL代码之间、RTL代码与网表之间、网表与网表之间的一致性,常用于判断设计递进或修改后(比如加入了扫描链)逻辑是否发生了变化。

1.2 静态时序分析(STA)

        Static Timing Analysis,通过计算电路所有路径上的延迟,判断时序是否满足要求。它的特点是与动态仿真相比,无需激励,可以穷尽所有路径,可识别时序故障类型多,运行速度快,占用内存少,但无法发现逻辑功能上的错误。一般应用于布局布线前(时延参数通过正标得到),布局布线后(时延参数通过反标得到),插入扫描链或时钟树前后等。

        STA可仿真四类时序路径(Timing Path),分别是:(1)引脚到寄存器(从芯片的输入端口到目的寄存器的数据输入端口)(2)寄存器到寄存器(从源寄存器的时钟端口到目的寄存器的数据输入端口)(3)寄存器到引脚(从源寄存器的时钟端口到芯片的输出端口) (4)引脚到引脚(从芯片的输入端口到芯片的输出端口)。

        关于时序路径的详细内容,可以阅读:

FPGA时序分析与约束(5)——时序路径icon-default.png?t=N7T8https://ztzhang.blog.csdn.net/article/details/132641522

1.2.1 最长路径和最短路径

        如果从输入到输出存在多条信号路径,则延迟最长的一条被称为最长路径(Max Path)或者关键路径(Critical Path)或者晚路径,延迟最短的一条被称为最短路径(Min Path)或者早路径。最长路径不一定是途径单元数最多或者互连线最长的路径。

1.2.2 端口检查

        对于静态时序分析来说,最重要的就是检查芯片上所有寄存器的端口,包括输入、输出、置位和复位、其对应检查的内容分别是建立时间、保持时间、恢复时间和移除时间。

  • 建立时间(Setup time):时钟信号变化之前寄存器输入数据保持不变的最短时间。建立时间违例多发生在最慢的PVT条件下,故分析时应使用最坏(WORST)条件下的时序库。因建立时间不够发生的违例,对策是让时钟更晚地到达寄存器(比如增加时钟周期),或者缩短数据路径的延迟
  • 保持时间(Hold time):时钟信号变化之后寄存器输入数据保持不变的最短时间。保持时间违例多发生在最快的PVT条件下,故分析时应使用最好(BEST)条件下的时序库。因保持时间不够而发生的违例,对策是增加数据路径的延迟,或者让时钟更早地到达寄存器(比如缩短时钟周期)
  • 恢复时间(Recovery time)时钟信号变化之前置位或复位信号保持有效的最短时间,应采用最坏情况分析
  • 移除时间(Removal time)时钟信号上升沿与置位或复位信号上升沿之间的时间,应采用最好情况分析
关于这方面的详细内容,可以阅读:
FPGA时序分析与约束(8)——时序引擎icon-default.png?t=N7T8https://ztzhang.blog.csdn.net/article/details/134095643
FPGA时序分析与约束(2)——时序电路时序icon-default.png?t=N7T8https://ztzhang.blog.csdn.net/article/details/132626131

1.2.3 时序违例的可能原因与对策

  • 设计约束不合理 某些设计约束或许根本不能实现,这只能通过更改或修正时序约束文件来解决
  • 线负载模型(WLM)不合理 逻辑综合时使用的WLM产生的网表在物理设计时不可能实现,这需要根据当前的结果去产生新的WLM(CWLM,customized WLM),再次进行逻辑综合(也称物理综合physical synthesis)
  • 布局布线不合理 对于大规模或者复杂的设计,由于初学者经验不足或者有经验者的疏忽而出现时序违例,需要重新对布局布线进行优化

        较小的优化可以不改变网表的逻辑,只是通过改变逻辑单元的尺寸、复制单元或者添加缓冲器来解决,这称为“原地优化(IPO,in-place optimization)”

        反复修改,直至消除全部违例,使时序全部满足要求,称之为时序收敛(Time Closure)。

1.3 形式验证

  • 作用:判断当前设计与参考设计在逻辑功能上是否相同,不能验证时序
  • 常用方法:等效性检查、模型验证和定量证明等,等效性检查最为常用
  • 常用EDA工具:Synopsys的Formality,Cadence的Encounter Conformal Equivalent Checker

1.4 等效性检查 

        常用于比较修改前后的RTL 代码之间, RTL 代码与逻辑综合生成的门级网表之间,加入扫描链前后或者ECO修正前后的门级网表之间,插入时钟树、扫描链、时序优化前后的设计之间在逻辑上的一致性或等效性。 等效性检查 比功能仿真方法的覆盖率高,所需时间短。

二、小结

        考虑到动态仿真用于百万门以上电路时所需时间极长,而且其功能覆盖率取决于所设计的输入激励向量,很难达到100%,因此静态时序分析和等效性检查这样的静态验证是必须的。本文着重介绍了静态时序分析、形式验证和等效性验证。

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

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

相关文章

强化学习应用(七):基于Q-learning算法的无人车配送路径规划(通过Python代码)

一、Q-learning算法介绍 Q-learning是一种强化学习算法,用于解决基于环境的决策问题。它通过学习一个Q-table来指导智能体在不同状态下采取最优动作。下面是Q-learning算法的基本步骤: 1. 定义环境:确定问题的状态和动作空间,并…

python图像处理总结

等我有时间了,好好总结一下这几个图像处理包,为后面的研究做个铺垫 skimage包 可以用系统自带的图片,不用自己找图片 from skimage.io import imread, imshow from skimage import data image data.astronaut() imshow(image)后面可以拿这…

【MySQL】创建和管理表

文章目录 前置 标识符命名规则一、MySQL数据类型二、创建和管理数据库2.1 创建数据库2.2 使用数据库2.3 修改数据库2.4 删除数据库 三、创建表3.1 创建方式一3.2 创建方式二3.3 查看数据表结构 四、修改表4.1 增加一个列4.2 修改一个列4.3 重命名一个列4.4 删除一个列 五、重命…

简单明了,汽车级LM317系列LM317D2TR4G线性电压稳压器电源设计-参数应用方案分享

低压差线性稳压器(LDO),是指一种具有恒定电流输出电压的装置,主要由输入变压器、整流器、输出变压器三部分构成,工业原理为将输入的交流电压经过整流、滤波后得到直流输出电压,再经过控制元件和开关器件将稳…

132基于matlab的采集信号模极大值以及李氏指数计算

基于matlab的采集信号模极大值以及李氏指数计算, 1)计算信号的小波变换。 2)求出模极大曲线。 3)计算其中两个奇异点的Lipschitz指数,程序已调通,可直接运行。 132matlab模极大曲线Lipschitz (xiaohongshu.com)

MATLAB - 机器人关节空间运动模型

系列文章目录 前言 关节空间运动模型描述了在闭环关节空间位置控制下机械手的运动,在关节空间运动模型(jointSpaceMotionModel)对象和关节空间运动模型块中使用。 机器人机械手是典型的位置控制设备。要进行关节空间控制,需要指…

Flask 小程序菜品搜索

mina/pages/food/index.wxml <!--index.wxml--> <!--1px 750/320 2.34rpx;--> <view class"container"><!--轮播图--><view class"swiper-container"><swiper class"swiper_box" autoplay"{{autoplay}…

直播预告丨看零售场,如何玩转 MaaS

今年&#xff0c;有一个被频繁提及的词是MaaS 这类工具正在帮助千行百业实现大模型落地产业 在零售场&#xff0c;特别是像京东这样拥有超高并发、超复杂协同的电商场内 也沉淀出了一套通用的AI基础设施——九数算法中台 从提升客户服务体验、平台效率出发&#xff0c;训练各…

【Python】数据可视化--基于TMDB_5000_Movie数据集

一、数据准备 tmdb_5000_movie数据集下载 二、数据预处理 观察数据集合情况 import pandas as pd import ast import warnings warnings.filterwarnings(ignore) # 加载数据集 df pd.read_csv(tmdb_5000_movies.csv) # 查看数据集信息 print(df.info()) 由于原数据集包含的…

Jenkins集成Sonar Qube

下载插件 重启Jenkins 容器 sonarqube 使用令牌 Jenkins 配置 重新构建

小程序基础学习(多插槽)

先创建插槽 定义多插槽的每一个插槽的属性 在js文件中启用多插槽 在页面使用多插槽 组件代码 <!--components/my-slots/my-slots.wxml--><view class"container"><view class"left"> <slot name"left" ></slot>&…

YOLOv8改进 | 注意力篇 | 实现级联群体注意力机制CGAttention (全网首发)

一、本文介绍 本文给大家带来的改进机制是实现级联群体注意力机制CascadedGroupAttention,其主要思想为增强输入到注意力头的特征的多样性。与以前的自注意力不同,它为每个头提供不同的输入分割,并跨头级联输出特征。这种方法不仅减少了多头注意力中的计算冗余,而且通过增…

八爪鱼拉拉手

欢迎来到程序小院 八爪鱼拉拉手 玩法&#xff1a;点击鼠标左键拖动移动八爪鱼&#xff0c;当他的手很忙的时候他会很高兴&#xff0c; 不同关卡不同的八爪鱼的位置摆放&#xff0c;快去闯关吧^^。开始游戏https://www.ormcc.com/play/gameStart/248 html <div id"gam…

GCC工具源码编译

文章目录 背景一、下载源码二、编译前依赖准备2.1 相关工具依赖2.2 相关lib&#xff08;gmp/ mpfr /mpc&#xff09;依赖2.2.1 lib源码下载2.2.2 lib源码编译 三、编译GCC3.1 编译3.2 链接 四、报错处理 背景 日常可能涉及到系统里自带GCC版本与被编译源码存在不兼容&#xff…

大模型背景下计算机视觉年终思考小结(一)

1. 引言 在过去的十年里&#xff0c;出现了许多涉及计算机视觉的项目&#xff0c;举例如下&#xff1a; 使用射线图像和其他医学图像领域的医学诊断应用使用卫星图像分析建筑物和土地利用率相关应用各种环境下的目标检测和跟踪&#xff0c;如交通流统计、自然环境垃圾检测估计…

【SSM框架】初识Spring

初识Spring Spring家族 Spring发展到今天已经形成了一种开发的生态圈&#xff0c;Spring提供了若千个项目&#xff0c;每个项目用于完成特定的功能 ✅Spring Framework&#xff08;底层框架&#xff09;Spring Boot&#xff08;提高开发速度&#xff09;Spring Cloud&#xf…

第1课 ROS 系统介绍

1.ROS操作系统介绍 在学习ROS 系统前&#xff0c;我们需要先了解操作系统的定义。操作系统&#xff0c;顾名思义&#xff0c;即提供部分软件和硬件的接口&#xff0c;以供用户直接使用。因此&#xff0c;针对不同的平台、不同的功能&#xff0c;需要采用不同的操作系统来完成底…

智能导诊-医院信息化建设标准

智能导诊系统主要依赖于自然语言处理和机器学习等技术。患者可以通过语音、文字等方式描述病情&#xff0c;系统通过自然语言处理技术对病情进行语义分析和理解。随后&#xff0c;机器学习算法对患者的症状和病情进行推理&#xff0c;结合已有的疾病知识库&#xff0c;为患者提…

canvas设置图形图案、文字图案

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

强化学习应用(二):基于Q-learning的物流配送路径规划研究(提供Python代码)

一、Q-learning算法简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于马尔可夫决策过程&#xff08;MDP&#xff09;的问题。它通过学习一个值函数来指导智能体在环境中做出决策&#xff0c;以最大化累积奖励。 Q-learning算法的核心思想是使用一个Q值函数来估计每…