验证高手行走江湖的八种武器 - - humann的感悟
时间:10-02
整理:3721RD
点击:
读21楼的 zhangwei_it的贴子有感:
>>验证人员的素质很重要,甚至超过设计人员,要求对所负责的测试模块非常熟悉,但可惜很多情况做不到,
>>导致验证效率低下.所以个人很反对随便找个人进行验证,最好验证人员的工作方向相对固定.
很多公司有个误解,认为第一流的硬件设计师做设计,第二流的硬件设计师做验证。这是个十分有害的想法。硬件设计和硬件验证是两项截然不同的技能。硬件设计是电路(VERILIOG 只是描述语言),硬件验证是编程。就是一流的硬件设计师也干不好验证(因为思维方式不一样),何况2流的。
>>验证人员工作能力的全面也很重要,很多事情可以交给机器做,这就需要掌握很多工具,软件的硬件的,这
>>样才能从大量的琐碎工作解脱出来,集中精力分析\查错
我在工作中觉得很有用的能力:
1 对硬件的理解能力。就是读spec里理解硬件工作方式的能力。
2 对硬件设计的熟悉。对于比较复杂硬件的验证,必须把一个大模块切割成几个小模块来简化验证的工作量。所以验证工程师应该对硬件的内部设计有所了解,才能有效的把大模块分成小模块。
3构架通用测试环境的能力。现在主要是在vmm 或 ovm 上进行二次开发,针对本公司的设计特点构架一个高效,可复用的测试环境。这方面主要是OOP 和 design pattern 的能力。我们公司有一个职位 Verification Architecture就是,专门干这个事情的。
4写测试用例的能力。其实就是面向硬件的用HDL编程能力。
5 初步进行debug的能力,起码要locate出问题模块,帮助设计人员在高度复杂的测试环境下进行debug.
6. 构建自动化测试的能力。主要是: 写makefile, 用 tcl 控制各种编译工具 (dve, vcs) ,用 PERL, AWK, GREP, SED parse运行的 log 文件, 生成测试报告, 把结果写入数据库
7. 根据数据库里的历史数据,分析整个流程,找出薄弱环节,逐步改善的能力
8. 和其他人配合,协调的能力。我主要打交道的人是:
- digital design engineer, 有了错误要和他们讨论。主要的问题是 ,他们都比较骄傲,以为我们什么都不懂。需要很长的时间才能得到相互的理解和尊重。
- 产品经理。要对他们汇报产品的进度,评估tape out的风险。主要的问题是他们不是技术人员,有些问题我觉得已经很清楚了,可是他们就是不懂。而且,他们主要从商业的角度来考虑问题,和我平常的思路不一样。
> 高层规划人员必须注意设计的可重用性,毕竟验证人员也是技术人员啊,设计随便一动害惨很多人.另外验
>证流程,自动激励生成,结果自动比较等都应该想办法标准化,流程化,工具话,验证工作中很多工作还是很枯
>燥的
我以前工作的时候只管验证,不管设计。现在明白design 是根,verification 只是补救措施。desgin 出了问题,verification 累死了效果也不大。所以我现在慢慢的"强行"涉入设计了。从验证的角度来说,"any designshould be verifiable", 现在我要求design engineer 必须要考虑设计的可验证性。关键点有:
>>验证人员的素质很重要,甚至超过设计人员,要求对所负责的测试模块非常熟悉,但可惜很多情况做不到,
>>导致验证效率低下.所以个人很反对随便找个人进行验证,最好验证人员的工作方向相对固定.
很多公司有个误解,认为第一流的硬件设计师做设计,第二流的硬件设计师做验证。这是个十分有害的想法。硬件设计和硬件验证是两项截然不同的技能。硬件设计是电路(VERILIOG 只是描述语言),硬件验证是编程。就是一流的硬件设计师也干不好验证(因为思维方式不一样),何况2流的。
>>验证人员工作能力的全面也很重要,很多事情可以交给机器做,这就需要掌握很多工具,软件的硬件的,这
>>样才能从大量的琐碎工作解脱出来,集中精力分析\查错
我在工作中觉得很有用的能力:
1 对硬件的理解能力。就是读spec里理解硬件工作方式的能力。
2 对硬件设计的熟悉。对于比较复杂硬件的验证,必须把一个大模块切割成几个小模块来简化验证的工作量。所以验证工程师应该对硬件的内部设计有所了解,才能有效的把大模块分成小模块。
3构架通用测试环境的能力。现在主要是在vmm 或 ovm 上进行二次开发,针对本公司的设计特点构架一个高效,可复用的测试环境。这方面主要是OOP 和 design pattern 的能力。我们公司有一个职位 Verification Architecture就是,专门干这个事情的。
4写测试用例的能力。其实就是面向硬件的用HDL编程能力。
5 初步进行debug的能力,起码要locate出问题模块,帮助设计人员在高度复杂的测试环境下进行debug.
6. 构建自动化测试的能力。主要是: 写makefile, 用 tcl 控制各种编译工具 (dve, vcs) ,用 PERL, AWK, GREP, SED parse运行的 log 文件, 生成测试报告, 把结果写入数据库
7. 根据数据库里的历史数据,分析整个流程,找出薄弱环节,逐步改善的能力
8. 和其他人配合,协调的能力。我主要打交道的人是:
- digital design engineer, 有了错误要和他们讨论。主要的问题是 ,他们都比较骄傲,以为我们什么都不懂。需要很长的时间才能得到相互的理解和尊重。
- 产品经理。要对他们汇报产品的进度,评估tape out的风险。主要的问题是他们不是技术人员,有些问题我觉得已经很清楚了,可是他们就是不懂。而且,他们主要从商业的角度来考虑问题,和我平常的思路不一样。
> 高层规划人员必须注意设计的可重用性,毕竟验证人员也是技术人员啊,设计随便一动害惨很多人.另外验
>证流程,自动激励生成,结果自动比较等都应该想办法标准化,流程化,工具话,验证工作中很多工作还是很枯
>燥的
我以前工作的时候只管验证,不管设计。现在明白design 是根,verification 只是补救措施。desgin 出了问题,verification 累死了效果也不大。所以我现在慢慢的"强行"涉入设计了。从验证的角度来说,"any designshould be verifiable", 现在我要求design engineer 必须要考虑设计的可验证性。关键点有:
- 必须使用统一的内部接口
- 必须遵守一定的代码规则,使eda工具可以自动的生成 测试"coverage"
- 必要时提供stuatus register 或者 debug signal, 直接告诉verification engineer 硬件的状态,不要我们费九牛二虎之力去编程了。
说的有道理啊
顶一下
说得很好啊,一起努力做好验证!
LZ也是牛人啊……
軟件再強還是得靠人來維護, 自身也得好好研究才行
eetop
ding
说得非常好!感觉验证就是个费力不讨好的活!
不错,顶顶顶!
不错啊,我顶了!
小编是高手阿。多谢分享
"必要时提供stuatus register 或者 debug signal, 直接告诉verification engineer 硬件的状态,不要我们费九牛二虎之力去编程了"
呵呵,表示怀疑:)
顶一个!~~~~
说得太对了。强烈支持。
可惜国内很多企业公司都不重视验证的。
在国内做验证工程师太辛苦了,难度大,知识面要求广,工作量大。而外行人还总觉得我们是干的助手工作。……
dingding
学习了。
说的好啊,验证太重要了
ddddddddddddddd
etop说的很好,很有道理,
设计是如此重要。
设计验证都要学精
ding ding!
ding ding !
受益匪浅啊!
美国西门子电子器材(厦门)有限公司
同感!顶
美国信达威科技(厦门)有限公司
我也很支持。如果涉及水平高,几乎不要验证, 只要验证功能,但是我们大多时候都会出错。所以 不得不 严谨 。个人感觉