首页 > 其他分享 >Jerry曾找了一晚上的IC验证bug,你可以一分钟看出来吗?

Jerry曾找了一晚上的IC验证bug,你可以一分钟看出来吗?

时间:2024-01-19 19:13:41浏览次数:26  
标签:这个 sequence 代码 验证 jerry Jerry IC bug

事情是这样的,在某个验证环境中,有一个接口信号叫jerry_face_score,jerry很自然的想到通过driver组件给这个信号新的值,于是他通过transaction定义一个同名变量,在sequence中给其约束,在base_test中启动这个sequence,从而改变这个变量。

改成多少呢?他照了一下镜子决定按照《国际颜值协会颜值百分制评分标准》,将jerry_face_score约束为10000.

当他开心的等到跑完的结果,打开波形一看,这个jerry_face_score信号竟然一直保持默认值0 ?!

你敢信?

这是验证平台瞎了眼了吗?

即使Jerry不动手去约束这个信号,但凡一个正直的高尚的有审美能力的验证平台也一定会自己默默的把这个值改成一个高分,但是眼前竟然是0?

于是他为了世间真理,正义与爱,踏上了长达一晚上的debug之路。为了节省各位有志之士的时间,在此选取了平台中部分主要代码如下,未写出的代码,默认是正确的,自行脑补。

大家先不要看后面的解释,好好捋一下什么原因,还jerry一个公道!

如下是tranaction部分代码:

如下是sequence部分代码:

如下是sequencer部分代码:

如下是base_test部分代码:

大家好好看代码,先不要看答案哦~

 

想出来了吗?再想会儿??

果然!!关注杰瑞IC验证的都是天才!没错!就是这样!我们下次再见~

 

 

算了,还是再说两句。这个bug确实就是你想的这个原因!

如下图“default_sequence”这个单词拼错了!!

大家不要嘘不要嘘,请放下手中的鸡蛋听我说~

 

这个bug为什么值得一提?其最阴险的地方就是:这个拼写错误它是不会在编译或运行的时候报出来的!!!

今天只有几行代码,而在实际中非常复杂的验证平台,这个问题你也许会从约束的源头、driver等组件一路追查,增加更多debug打印信息等待仿真、好长时间才能断定你的sequence其实根本没有成功启动!

接着定位到这句话,而即使定位到了这句话,不仔细看的情况下你往往不一定注意到是拼写问题!

因为你会天真的以为你的平台善良可爱拼写错了它会给你说,你错了!!

这个“default_sequence”字符串是UVM内部的约定:当你所指定的组件运行到你指定的phase时,看到有default_sequence这个约定就会启动这个sequence,对不上暗号当然也就不会启动,但这个暗号其实也不能算是语法错误,所以也就不会报出。

其实这里不光是拼写错了,就是多一个空格都会出现问题,所以这个小小的一个单词千万要心存敬畏,遇到类似的bug也不要忘记多看一眼这里有没有手抖了一下下哦~

标签:这个,sequence,代码,验证,jerry,Jerry,IC,bug
From: https://www.cnblogs.com/NoviceVerifer/p/17975394

相关文章

  • Elasticesearch集群概念
    分布式集群单节点集群我们在包含一个空节点的集群内创建名为users的索引,为了演示目的,我们将分配3个主分片和一份副本(每个主分片拥有一个副本分片)//PUT请求:http://localhost:1001/users//请求体{"settings":{"number_of_shards":3,//创建三个主分片"number_......
  • IC验证中$test$plusargs(),$value$plusargs()怎么用?有什么坑?
    各位朋友,在SystemVerilog中有两个函数作用很大,他们是:$test$plusargs(string)$value$plusargs(user_string,variable) 01 怎么用?相信从这首诗中大家已经很清楚的知道这两个函数什么作用了!没错!我们在仿真运行过程中可以“+”很多的命令字符串,而这两个函数就是与这些......
  • toMap - bug
    原因:AttachmentInfoRespnse::getAssociateKeyId作为键重复了,代码没有指定如何处理//Duplicatekey:错误代码finalMap<Long,String>keyIdWithPathMap=attachmentInfoResponse.stream().collect(Collections.toMap(AttachmentInfoRespnse::getAssociateKeyId,item->Optional......
  • SpringBoot+dynamic-datasource实现多数据源(msyql、sqlserver、postgresql)手动切换
    场景SpringBoot+MybatisPlus+dynamic-datasources实现连接Postgresql和mysql多数据源:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/135653227上面实现通过注解和配置文件的方式去进行多数据源操作。如果业务需求,比如查询第三方接口时提供的是sqlserver的视图连......
  • 在Navicat中创建oracle用户并授权
    1.创建oracle连接用户用system,密码为安装数据库时所填的口令服务名忘记的可通过命令查看当前运行的服务与实例lsnrctlstatus2.创建表空间创建成功后会在相应路径中有数据文件3.创建用户注意用户名需大写,默认表空间选择刚刚创建的表空间4.授权5.然后就可以建表啦......
  • istio-虚拟服务(VirtualService)
     在istion中,虚拟服务(Virtualservice)和目标规则(destinationrule)是流量路由功能的关键组成部分。在Istio所提供的基本连接和发现基础上,通过虚拟服务,能够将请求路由到Istio网格中的特定服务。每个虚拟服务由一组路由规则组成,这些路由规则使Istio能够将虚拟服务的每个给定请求匹配......
  • elasticsearch学习笔记2 - logstash jdbc 同步MYSQL到ES
    logstash是一个管道工具input输入output输出filter过滤条件咋们初级先了解到这些再说比较优秀的教程文档作为基础知识需要了解:https://blog.csdn.net/qq_19283249/article/details/130839158?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170564710516800215......
  • 使用 Docker 安装 Elasticsearch (本地环境 M1 Mac)
    Elasticsearch+kibana下载安装dockerpullelasticsearch:7.16.2dockerrun--namees-d-eES_JAVA_OPTS=“-Xms512m-Xmx512m”-e“discovery.type=single-node”-p9200:9200-p9300:9300elasticsearch:7.16.2dockerpullkibana:7.16.2dockerrun--namekibana-eELAST......
  • Windows 10调用 Microsoft Edge 展台模式功能
    使用展台模式功能可以使用以下数字/交互式标牌和公共浏览的命令行选项Windows10调用MicrosoftEdge展台模式功能。展台模式数字/交互式标牌复制 msedge.exe--kioskwww.contoso.com--edge-kiosk-type=fullscreen展台模式公共浏览复制 msedge.exe--kiosk......
  • CVE-2022-44268 imageMagick LFI
    ImageMagick TheImageMagickisthetoolmodifythepicture.ThefunctionofImageMagickisELFfilenamedmagick.ThevulnerabilityversionofImageMagickis7.1.0-49ExploitItwilluseImageMagicktoresizetheimage,weneedtocreateamaliciousima......