lwjsdu的个人空间 https://blog.eetop.cn/994742 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

我对验证的一些理解1(转)

已有 1557 次阅读| 2015-11-15 21:55 |个人分类:Verification Experience

原帖:http://bbs.eetop.cn/thread-318775-1-1.html


下面这些问题和回答是基于我个人对验证(主要是动态仿真验证)的理解,可能有理解的不到位、理解有偏差的地方,欢迎大家指正。

我是synopsys用户,所以下面描述的大多是针对synopsys的工具。

欢迎发邮件到lshj98115@sohu.com和我讨论验证的问题。

Q:验证的目的?

A发现Bug,发现所有的Bug,或者证明没有Bug(转自夏晶的帖子)

Q:对验证工程师的要求?

Hacker mentality Organized testing Tool automation

       如何做更多的testcase、如何覆盖更多的测试点、如何充分的利用服务器、如何尽可能最大化的自动比对

       强调一下:“注重细节”是验证工程师一个非常非常好的工作习惯。

Q:语言、方法学有多重要?

A:我的观点是:这两个都不重要。做事情的是验证工程师,来源是Spec,所以Testplan(全覆盖testplan)最重要。重要的是验证的意识,愿不愿意去实现H-O-T,即使一开始做的“土”一些也没关系。比如tb里经常要做的“自动比对功能”:1)维护queue,然后foreach的比较2)利用file-operationfopen fread fwrite fscanf)来做文件比对3)直接$system(diff a b > c)以后看c文件大小。上述三种方法都可以(虽然2)会导致比较多的文件IO,硬盘读写会影响仿真速度,3)不能做实时的比对。不必拘泥于方法,关键是有这个意识。

QEDA行业对验证的支持?

A:个人感觉虽然(动态)验证这些年在理论方面的突破不大(静态验证一直是热点),但是EDA行业一直都很重视,实现类的工具主要是在做算法优化,这些年突破不大。但是验证方向上的点工具一直在不停的出(虽然最终可能也没有几个好使的工具),但是说明EDA行业一直在致力于寻求在验证上的突破。而且由于现在做SoC的太多,IP又太多,大家都是越来越重视验证,很多上规模的公司里验证人员较设计人员多不少。个人觉得这可能也是EDA重视验证的一个原因(用牛工具替代掉一些人LL)。

Q:如何跟踪缺陷?

A:可以考虑bug-zillar这类的工具---- 自动跟踪问题。

Q:作业提交系统(lsfgrid-engine

A:充分和合理的利用计算资源。

Q:环境变量的管理?

A:个人推荐使用Module 工具。很多公司都是用这个免费的工具

QTestbench用到的编程语言?

A:我觉得tbsystemverilogverilog是可以互相替换(当然了,systemverilog特有的内容用verilog来实现会很复杂),所以推荐tb基于systemverilog来搭建,一些仿真模型可以用verilogC除了Cmodel以外,firmware也会用C和汇编写。

基本上我做过的项目里用到的语言:

脚本:perlmakefileshellperl用的很多,其他用的很少)

Tb(包括vmm的组件):基本是systemverilog

仿真模型:systemverilogverilog混着用

Cmodel CC++

Firmware :汇编和C

Q:验证工程师需要掌握的基本技术

A:分享一份我做的基本培训内容安排,供参考


PerlMakefileAMBA介绍,SVTB.pdf sva,几种用到的编程语言的File operation Low-power C-pointerCshell-AWK+SED,体系结构相关的一些内容,SV-1Day training VMM_source_code ,Arm的嵌入式编程的基本概念

Q:自动化必须吗?

A:不是必须的,但是应该尽量去实现自动化。总之是多让机器跑。如果人均License太少的话,要尽量做到白天debug、晚上让机器跑。“比对”这种事情太机械了,所以尽量让机器做,做这种事情机器的效率比人高太多。把精力放在构造testcasetestbenchcoverage以及debug和分析上。

QTestplan如何做?

A:形式不重要,xls可以、word也可以、txt的也可以。但是来源于Spectestplan里除了要罗列function-test-piont,还应该有error-injection  random-test-point以及cover-pointassertion

需要和各个team仔细逐条review testplan,有些针对具体实现的coverpoint可能只有designer能提出来,需要尽早提出。Tb搭建之前,要充分的review testplan,因为Testplan的较大修改有可能会导致整个testbench的架构调整,effort较大。Testplan是一个需要不停增加,不停迭代、不停review的东西。

Error injection要和RTL-designer逐条review,一个是看看RTL-designer是不是没有想到,一个是设计是不是本身就不允许、或者架构上本身不可能出现。Error-injection应该往深里去好好挖掘。例如:内存控制器长时间不回数据(这里本身是一个随机点)à由于长时间不回数据是否产生错误中断à产生错误中断以后如何响应à响应不过来如何恢复à必须用software reset做恢复的话,对software的时机是否有要求àsoftware前需要遵守什么要求和步骤

虽然现在有一些工具可以根据规范化描述的testplan自动生成cover-pointassertion,不过我觉得自然语言描述的testplan应该是最“自然”的。

Q:哪些地方做随机?

A1)随机配置(一般都想得到的),但是对于一个封闭的系统常常是最不重要的,因为firmware可以自己开发,从而控制配置的流程和数值


2
)随机激励数据(很重要)


3
)随机时序(通常容易被忘记)

       但是有一点要明确:随机不是全随机,是约束随机,是在合理的范围内尽量充分的随机。

Q:写约束随机哪些地方要注意?

A:推荐看snug paper(over-constraint导致测试不完全,欠约束导致不必要的debug和资源的浪费)约束的效率:写的不好会导致随机失败

QCoverage如何做?

Acode-coveragefunction-coveragecovergroup, assertion coverage)。对于constraint-random的地方用covergroup做,对于一些时序的coverage可以用assertion-coverage


点赞

发表评论 评论 (2 个评论)

回复 lihui_140601 2015-11-22 14:06
不错!

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 2

    粉丝
  • 1

    好友
  • 0

    获赞
  • 3

    评论
  • 390

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-20 19:36 , Processed in 0.030052 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部