细数EDA动态仿真验证的七宗罪

2023-10-09 00:59

本文主要是介绍细数EDA动态仿真验证的七宗罪,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

令人意外的是,7nm->5nm->3nm->2nm,摩尔定律还在前进。但从验证的角度来看,这并非好事。

因为单位面积能够容纳更多的复杂逻辑,从而提高了整个芯片在硅后发生功能BUG的可能性。

验证是整个芯片研发过程中非常关键或者说瓶颈的一环。没有验证,就像是足球队没有守门员。与此同时,对于芯片的上市时间(time to market)要求越来越短,因为市场上的竞争压力越来越大需要尽快将产品投入到市场获得更多的利润。可以说,目前芯片想要做到完备的验证是一件非常困难的事情

 

使用EDA动态验证方法进行验证主要包括以下内容:

•针对待测设计(DUT)创建一个测试平台(testbench)。

•编写定向或者随机的测试用例,以激励待测设计的输入、检查待测设计的输出,同时统计待测设计测试点覆盖的情况。

•执行所有的测试用例。在此期间会不停地调试待测设计和测试平台,最终使得验证sign off。

但是,这种EDA动态验证方法方法有许多缺点,也就是这个标题党文章的标题所述,EDA动态仿真验证的十宗罪:

 

•Testbench的开发可能是一个漫长的过程,通常复杂设计的验证平台开发需要几个月

•Testbench开发非常容易出错,通常测试平台中的BUG数量会多于待测RTL设计中的BUG数量

•执行测试用例非常昂贵—需要持续地利用服务器资源/硬件加速器/FPGA进行回归,直到芯片最终tape out。

•测试用例本身可能包含一些错误,这些错误可能会误报或者漏报RTL中的BUG

•调试Fail的测试用例会消耗大量的精力,会是占据验证工作最多的组成部分,因为报出Fail的地方和实际BUG的根因可能离得很远,很难定位,就跟洋葱去皮的过程一模一样。

•很难说执行了多少测试用例才能证明设计是没有BUG的,即EDA动态仿真只能证伪。

•一些BUG可能是data-dependent,即触发条件非常苛刻,几乎无法在RTL模型上使用随机测试覆盖到。即使是覆盖率驱动的随机测试也做不到完备验证,不然Intel CPU怎么会有BUG,是因为对芯片验证不够重视?

这篇关于细数EDA动态仿真验证的七宗罪的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/169201

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

easyui同时验证账户格式和ajax是否存在

accountName: {validator: function (value, param) {if (!/^[a-zA-Z][a-zA-Z0-9_]{3,15}$/i.test(value)) {$.fn.validatebox.defaults.rules.accountName.message = '账户名称不合法(字母开头,允许4-16字节,允许字母数字下划线)';return fal

easyui 验证下拉菜单select

validatebox.js中添加以下方法: selectRequired: {validator: function (value) {if (value == "" || value.indexOf('请选择') >= 0 || value.indexOf('全部') >= 0) {return false;}else {return true;}},message: '该下拉框为必选项'}

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹