仿真验证方法(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 删除一个列 五、重命…

DCIM市场竞品分析报告

DCIM(Data Center Infrastructure Management) 市场竞品分析报告 一、引言 随着随着全球数字化转型的加速,数据中心基础架构管理(DCIM)行业正在快速发展。DCIM系统市场的增长为新的参与者提供了机会,对于新进入者如我们公司&am…

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

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

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

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

traceId:SkyWalking的traceId生成策略

废话不多说,咱们直接上代码讲解 /*** SkyWalking的traceId生成策略* traceId 是用于唯一标识一个跟踪操作(trace)的标识符*/ public class SkyWalkingTraceIdGenerator {// 生成一个唯一的进程ID,使用UUID去除横杠private static…

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

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

安卓MediaRecorder(3)音频采集编码写入详细源码分析

文章目录 前言音频采集音频初始化AudioRecord 分析AudioSource 采集到音频 音频编码音频编码后数据处理MPEG4Writer写入音频编码后数据到文件MPEG4Writer::Track 取编码后的音频编数据结语 本文首发地址 https://blog.csdn.net/CSqingchen/article/details/134896808 最新更新地…

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;训练各…

Vue:调用浏览器数据库

在前一段时间写项目的时候&#xff0c;需要本地存储大量数据&#xff0c;需要在客户端进行数据存储、离线访问以及数据同步等&#xff0c;对本地数据的储存和管理非常重要。因此考虑使用了IndexedDB&#xff0c;但是接使用 IndexedDB API &#xff0c;非常麻烦&#xff0c;需要…

学习笔记-python文件基本操作

1.文件的基本操作 open()打开函数 语法 : open(name,mode) name&#xff1a;是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。 mode&#xff1a;设置打开文件的模式(访问模式)&#xff1a;只读、写入、追加等。 # 打开文件open(): 如果报FileNotFoundError,文件路…

【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…

【MySQL】巧用 Dense_Rank 窗口函数

力扣题 1、题目地址 2084. 为订单类型为 0 的客户删除类型为 1 的订单 2、模拟表 活动表&#xff1a;Orders Column NameTypeorder_idintcustomer_idintorder_typeint order_id是此表的主键列。此表的每一行都表示订单的ID、订购该订单的客户的ID以及订单类型。订单可以是…