仿真验证方法(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%,因此静态时序分析和等效性检查这样的静态验证是必须的。本文着重介绍了静态时序分析、形式验证和等效性验证。

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

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

相关文章

MySQL篇—自带物理克隆数据工具Clone插件介绍(第一篇,总共三篇)

各位小伙伴,今天我为大家介绍一下MySQL Clone Plugin这个插件,简单来说,就是MySQL 8.0.17版本之后的一个物理克隆数据工具,它能够帮助我们快速、高效地克隆或复制数据库,极大地简化了数据库迁移、备份和恢复的过程&…

老老实实的程序员该如何描述自己的缺点

答辩的时候,晋升的时候,面试的时候,你有没有经常遇到一个问题,那就是你觉得自己有什么缺点吗? 目录 1. 每个人都有缺点 2. 这道题在考什么? 3. 我之前是怎么回答的 4. 你可以这样回答试一试 5. 总结 …

transbigdata笔记:数据栅格化

1 area_to_grid 在边界或形状中生成矩形栅格 1.1 主要使用方法 transbigdata.area_to_grid(location, accuracy500, methodrect, paramsauto) 1.2 主要参数 location (bounds(List) or shape(GeoDataFrame) 生成栅格的位置。 如果边界为 [lon1, lat1&#xff0…

JS中垃圾数据是如何自动回收的

JS中垃圾数据是如何自动回收的 背景垃圾回收机制调用栈中的数据回收堆空间中数据回收垃圾回收器的工作流程副垃圾回收器主垃圾回收器 全停顿 背景 在JS栈和堆:数据是如何存储的一文中提到了 JavaScript 中的数据是如何存储的,并通过示例代码分析了原始数…

MySQL深入——9

如何正确的显示随机信息? 我们来模拟在英语单词app当中随机出现三个英语单词的情况,我们首先创建一张表words,然后给这个表当中插入10000条信息进行量化。 select word from words order by rand() limit 3; order by rand&…

Python - 操作 docx

文章目录 使用库 : python-docx 官方文档:https://python-docx.readthedocs.io 安装 pip install python-docx提取 docx from docx import Documentdoc Document(file_path) text "" for para in doc.paragraphs:text para.text "\n"创建…

gazebo模型库目录(国内源)

这个是比较普遍的,一般用途: GitCode - 开发者的代码家园https://gitcode.com/geniusChinaHN/osrf.gazebo_models/tree/master/ambulance这个主要是车辆: car_demo: osrf汽车模型库https://gitee.com/geniuschinahn/car_demo还有这个是以前…

深入理解 Flink(八)Flink Task 部署初始化和启动详解

JobMaster 部署 Task 核心入口: JobMaster.onStart();部署 Task 链条:JobMaster --> DefaultScheduler --> SchedulingStrategy --> ExecutionVertex --> Execution --> RPC请求 --> TaskExecutor TaskExecutor 处理 JobMaster 的 …

一文玩转Go语言中的面向对象编程~

温故而知新:什么是面向对象 面向对象(Object-Oriented)是一种计算机编程的方法和思想,它将程序中的数据(对象)和操作(方法)组织成一个个相互关联和交互的对象。对象是现实世界中的事…

SpringBoot 配置文件加载优先级

SpringBoot 配置文件加载优先级 前言SpringBoot 配置文件加载优先级 前言 最近在使用k8s部署项目的时候,发现Dockerfile文件中的命令后面跟的参数,无法覆盖nacos中的参数,今天有时间正好来整理一下Springboot配置的加载顺序 SpringBoot 配置文件加载优先级 整理加载顺序第一个肯…

vue中动态给不同表单赋值

这里的业务是通过关联的 id 发送不同的请求获取表单的数据,然后回显到页面中,整个的页面是由多个表单拼接起来的 点击下一步的时候,获取下一个表单的内容。 // 查询getForm(index) {switch (index) {case 0:this.getFromInfo("inputFor…

软件测试之项目立项与需求评审

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢软件测试面试题分享: 1000道软件测试面试题及答案📢软件测试实战项目分享: 纯接口项目-完…

Elasticsearch 快速入门指南【总结记录】

本文将介绍一些基本概念,帮助您快速入门使用Elasticsearch。 一、概述 ES用来解决什么问题?Elasticsearch是解决海量数据(已经存在的数据)全文检索的不二只选。 Elasticsearch是一个基于Java语言开发,建立在开源搜索…

XSS的利用(包含:蓝莲花、beef-xss)

0x00、环境搭建 dvwa靶场 操作指南和最佳实践:使用 DVWA 了解如何防止网站漏洞_dvwa源代码-CSDN博客 xss漏洞接收平台 下载:GitHub - firesunCN/BlueLotus_XSSReceiver 将解压后的BlueLotus_XSSReceiver原代码放置 phpstudy 安装目录的WWW文件夹下 访问平台:http://127…

计算机缺失msvcp120.dll的最新解决方法,实测可以完美修复

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp120.dll丢失”。msvcp120.dll是Microsoft Visual C Redistributable Package的一部分,它是运行许多基于Windows操作系统的应用程序所必需的动态链接库文件之一。如果计算机…

笔试面试题——继承和组合

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、什么是菱形继承?菱形继承的问题是什么?二、什么是菱形虚拟继承&am…

xcode安装及运行源码

抖音教学视频 目录 1、xcode 介绍 2、xcode 下载 3、xocde 运行ios源码 4、快捷键 1、xcode 介绍 Xcode 是运行在操作系统Mac OS X上的集成开发工具(IDE),由Apple Inc开发。Xcode是开发 macOS 和 iOS 应用程序的最快捷的方式。Xcode 具有…

Linux上如何一键安装软件?yum源是什么?Linux如何配置yum源?

这几个问题是Linux操作的入门问题,但是确实也会让刚上手Linux小伙伴头疼一阵,故特有此文,希望能对刚入门的小伙伴有一些帮助~ 众所周知 在linux上在线安装软件需要用到yum命令,经常下述命令来安装 yum install [-y] 包名 #-y的…

Python 全栈体系【四阶】(十三)

第四章 机器学习 十六、模型评估与优化 1. 模型评估 1.1 性能度量 1.1.1 错误率与精度 错误率和精度是分类问题中常用的性能度量指标,既适用于二分类任务,也适用于多分类任务。 错误率(error rate):指分类错误的样…

NowinAndroid—2024 Android现代开发全功能应用

NowinAndroid—2024 Android现代开发全功能应用 现代Android开发全功能示例应用Now-in-Android,它是用Kotlin和Jetpack Compose开发的,功能非常强大。这个应用遵循了安卓设计和开发的最佳方法,旨在给开发者提供实用的参考资料。无论你是新手…