验证工程师如何使用UVM
要成为一个优秀的IC验证工程师,可以考虑以下几个方面的努力:
-
学习基础知识:掌握数字电路设计和验证的基础知识,包括逻辑门、时序逻辑、寄存器传输级描述等。深入了解如何使用硬件描述语言(如Verilog或VHDL)进行设计和验证。
-
学习验证方法学:学习常用的验证方法学,如模拟仿真、形式验证、断言、代码覆盖率等。了解和掌握常见的验证工具,如ModelSim、VCS等。
-
实践项目经验:尽量参与实际的IC设计项目,积累实践经验。可以通过参与学校的项目或者自己进行一些小型的设计和验证练习来锻炼自己。
-
团队合作能力:IC验证工程师通常需要与其他工程师合作完成项目,因此要具备良好的团队合作能力。学会与团队成员沟通、协调和解决问题。
-
持续学习和创新:IC设计和验证技术在不断发展,要保持学习和追求创新的意识。关注行业最新的技术和趋势,参加相关的培训和研讨会。
-
解决问题的能力:IC验证工程师常常需要解决各种问题和调试工作,要具备良好的问题解决能力。学会分析问题,找到根本原因,并提出解决方案。
-
持续改进和自我评估:不断反思和评估自己的工作,找到自己的不足之处,并采取措施进行改进和提升。
UVM学习及进阶
首先抛出UVM的定义和特点:
UVM(Universal Verification Methodology)是通用验证方法学,它是一个基于SystemVerilog的验证平台开发框架。UVM提供了一套完整的源码库和编程指导,使得验证工程师可以利用其可重用组件构建具有标准化层次结构和接口的功能验证环境。
UVM的主要特点包括:(来自百度,对于新手而言基本概念的答案搜索很重要)
- 标准化的验证平台模板
:UVM提供了一套标准的验证平台模板,使得不同项目之间的验证工作可以共享和重用。
- 受约束的随机激励生成
:UVM支持受约束随机激励的产生,能够根据测试需求生成多样化的激励信号。
- 覆盖率驱动的验证模式
:UVM支持覆盖率驱动的验证模式,通过监测验证过程中的覆盖率来评估验证的完整性和有效性。
- 代码可重用和平台可移植
:UVM的代码可重用性高,平台可移植,使得验证工作可以在不同的硬件平台上进行。
UVM的架构包括以下几个主要组件:
- Testbench
:验证平台的起点,包含多个测试用例(testcase)。
- Environment(env)
:验证平台的最顶层模块,包含Agent和Scoreboard等组件。
- Agent
:代理模块,包含Sequencer、Driver和Monitor,负责产生激励并监控DUT(被测试设备)的状态。
- Sequencer
:产生激励的组件,根据不同的测试需求生成不同的激励信号。
- Driver
:将Sequencer产生的激励转化为驱动信号,驱动DUT。
-
Monitor
:采集DUT的信号,封装为transaction,传输到其他组件进行比较。
1、不会UVM能不能做验证?
能!答案是显而易见的。验证的目的是找出设计中的bug,任何手段,只要能找到所有的bug,都是好方法,好手段。单纯的Verilog也可以编写测试平台,正所谓艺高人胆大,sv、c、python等等语言都可以用来做测试平台的,当然也可以打辅助。目前还有很多公司并没有引入UVM,但这并不妨碍其芯片产品流片以及成功出产品,更不妨碍其公司上市,所以没有UVM之前,芯片的设计和验证就已经可以分成两个独立步骤进行了。
2、UVM是不是最好的验证手段?
芯片验证不仅仅是UVM,如果你要成为一名顶级的验证工程师,那一定要记住,UVM仅仅是验证的手段之一,至于是不是最好的验证手段,分三部分来看。
其一,对于企业而言,我认为UVM对于大多数公司而言一定是最好的验证手段,因为站在企业的角度,将验证思想统一,大家遵循一套验证思维,团队效率会大大提升,验证团队之间交流和互相交接工作会变得非常顺畅,因为UVM的架构是一致的。这也是为什么主流的仿真验证工具都对UVM支持的比较好的原因,甚至三大家要统一这个验证思路的原因,因为EDA的本质就是提升效率。
其二,对于工程师个人而言,UVM会将个人的验证思路定式化,容易忽略验证的本质,而过分追求UVM验证平台的搭建技术,当然不是说这不需要,UVM验证平台的搭建技术非常重要,但验证的思维更重要,因为UVM不是全部验证,仅仅是验证的一种手段。设计的有些特性或许用其他手段保证会效率更高,所以对于个人而言,千万不要放过其他验证思路和验证手段的学习机会。
最后,对于保证芯片验证成功而言,UVM是性价比最高的方式之一,但要保证芯片设计正确,流片功能正确。UVM在大型芯片的系统及验证方面肯定是不足的,另外,因为大量软件模型的采用,对于实际芯片系统功能以及性能的还原程度肯定不如FPGA原型验证,所以芯片在流片前,采用FPGA原型验证已然成为刚需,平台便宜跑的快。当然,如果遇到大型SOC,如果预算足够,上一台硬件加速器,来进行系统级别验证就更好了。
3、UVM会不会被取代?
我的观点是UVM不会被取代,原因是因为目前大多数的验证平台都采用UVM验证方法学,验证工程师统一学习的框架也是UVM验证方法学,主流的EDA厂商支持的也是UVM,以上几点对于整个验证领域而言是非常重要的,如果想要将UVM革命,自立门户重新用更高效的验证方法学,理论上是可以的,但实际推进过程中很难很难。曾经有人跟我探讨过cocotb这种方法,我承认他很好,甚至某些方面的效率要比UVM好,但要挑战UVM在验证领域的地位还是有点难。
4、如何学习UVM?
我推荐三个学习步骤:
第一步,Verilog HDL是一定要会的,建立基本的逻辑电路设计概念和波形仿真概念;
第二步,System Verilog是一定要会的,建立基本的面向对象概念和通过log确认和查看错误的概念;
第三步,UVM验证方法学的学习,学习验证的思路,从激励输入到验证结果输出的全过程,整个数据流在平台中如何流动的闭环思维。从而学UVM的组件以及结构框架。
总之,要成为一个优秀的IC验证工程师,需要全面掌握相关的知识和技能,具备良好的团队合作能力和问题解决能力,并持续学习和自我提升。