关于IC验证方向也有很多探讨,什么是核心?
- 通用验证方法学(uvm sv)
- 验证的业务方向,高速接口等ip或者soc集成验证
- 验证思维
- ...
有的认为验证业务方向很重要,有的认为验证思维更重要,有的认为验证的通用代码能力SV UVM更重要。
验证方向
业务方向是指你所涉及的芯片的功能、规格和性能。不同的方向有不同的难度和挑战,从事哪个方向更有利于职业发展,可能没有一个确定的答案,这取决于个人的兴趣、能力和市场需求。
- 高速接口IP是指符合一定标准协议的物理层或链路层接口,它们可以在芯片内部或芯片之间传输高速数据。高速接口IP的验证需要考虑信号完整性、时序、电源、噪声等因素,以及协议的正确性和性能。高速接口(DDR,PCIE)的验证是一个很好方向,这部分属于小众但每个公司多多少少也都需要的方向,做精了很值钱。
- SOC验证是指对片上系统(SOC)的功能和性能进行全面的验证,包括各个IP模块的集成、互连、时序、功耗等方面。SOC验证需要构建复杂的测试平台,生成系统级的测试激励,覆盖各种场景和用例,以及分析和调试结果。NV的A100有SOC验证工程师验证上千个核的互联,51单片机及其外设不也算SOC系统的一种?二者有可比性吗?你想去的那个公司的芯片规模大小决定了SOC DV的难度和高度。
- 低速接口验证是指对一些通用的串行或并行接口进行功能和性能的验证,例如UART、I2C、SPI等。低速接口验证相对简单,不涉及复杂的协议和信号处理,主要关注数据的正确传输和错误处理。当然,我个人不推荐天天折腾低速通用接口uart、i2c、 spi的验证工作,上限低。
一般来说,高速接口IP和SOC验证可能更具挑战性和价值,因为它们涉及更多的技术细节和系统知识,也更能体现验证工程师的专业水平。低速接口或者其他的简单IP验证,比如uart,spi,i2c等,可以作为入门或打基础的方向,都不是一个适合专职的方向。
本质上不能绝对地说哪个方向更好,要视所在公司的情况而定。即关键是看做的事情的复杂度,而不仅仅看业务方向。
- 如果公司有复杂自研IP,这个方向是不错的:modem,ISP等
- 如果公司以买第三方IP为主,那么复杂的高速接口是不错的: USB、PCIE、DDR等
- SOC里面负责各种bus fabric、创建clk & reset和low power等是不错的方向,关键是掌握一套自动化方法。仅使用已有的自动化方法,纯跑testcase的,都不是好的方向。
验证思维
验证思维是指你对验证过程和目标的理解和分析,是一种解决问题的能力,而不是一种技术。
验证思维不仅仅是指你掌握的验证工具、方法和语言,而是指你对验证过程和目标的理解和分析,你需要能够从功能规格、架构规格、设计规格等不同层次提取测试点,明确验证范围和覆盖率,设计有效的测试用例和激励,分析仿真结果和覆盖率报告,定位和解决设计bug等。数字IC验证中验证思维是非常重要的,它是做好验证工作的核心要素:
验证思维的本质就是尽可能找出更多的设计bug,所以你需要有较强的分析能力、系统思维和责任心。
验证思维也需要不断学习和提高,你可以通过阅读相关书籍、文献、博客等获取最新的验证方法学、技术和经验,也可以通过参与不同类型和规模的芯片项目来积累实践经验和教训,也可以通过与其他验证工程师或设计工程师进行交流和讨论来拓展视野和思路。
验证通用技能
话说回来,应届生的前三年,打好基础,熟悉流程语法工具非常重要。
验证技能是指你掌握的验证工具、方法和语言。验证技能是做好验证工作的基本条件,它可以帮助你搭建验证平台、执行验证计划、分析验证结果等。验证技能包括vmm/uvm等验证方法学、sv/sc等验证语言、vcs等验证仿真工具、perl/python等脚本语言等。
总结
数字IC验证中,业务方向、验证思维和验证技能都是重要的,但是它们之间并不是互相独立的,而是相互影响、相互促进的。
Methodology之类的是和你做的东西密切联系的,不可能抛开你的实际业务只看UVM等方法学,换句话说,只有你能在复杂的模块下,才更能体会方法学里面各种方法和内建函数等的意义,从而对方法学理解的更透彻,同时对方法学理解更透彻,也才能更好的将之应用在你所负责的验证模块上。二者相辅相成,不要割裂开去看。
验证方向决定了验证的范围和深度,而验证思维决定了验证的效率和质量。所以,建议先从低速接口或者其他简单的IP开始打好基础,熟悉流程语法工具,然后主攻专门高速接口或者复杂自研IP,同时不断学习和提高你的验证思维和方法学。
无论选择哪个方向,都需要不断学习和积累经验,形成自己的验证思维和方法。另外,如果没有负责过很复杂的验证工作,其实很难总结一套兼具验证质量和效率的方法,上限相对会低。验证工程师一定需要多做项目实践,多阅读文献和标准,多交流和分享经验。