导读:作者有幸在中国电子信息领域的排头兵院校“电子科技大学”攻读研究生期间,接触到前沿的数字IC验证知识,旁听到诸如华为海思、清华紫光、联发科技等业界顶尖集成电路相关企业面授课程,对数字IC验证有了一些知识积累和学习心得。为帮助想入门前端IC验证的朋友,思忱一二后,特开此专栏,以期花最短的时间,走最少的弯路,学最多的IC验证技术知识。
文章目录一、专栏内容1.1、概览版1.2、详细版 二、专栏技术栈目标三、数字IC的岗位介绍四、专栏内容规划五、学习要求 - “三多” 一、专栏内容 1.1、概览版 ①、本专栏涵盖数字IC验证工程师必须掌握的核心理论和技能②、Linux操作系统(shell)、gvim文本编辑工具(正则表达,快捷键)、EDA逻辑仿真工具③、Verilog语言、SystemVerilog验证和UVM验证方法学④、SoC芯片设计验证实践项目(MCU)⑤、带随机的随机激励生成,覆盖率驱动的验证策略,逻辑仿真技术,调试技术,断言技术⑥、应用所学验证理论和结论解决数字电路系统中的功能验证问题 1.2、详细版 ①、本专栏涵盖数字IC验证工程师必须掌握的核心理论和技能②、Linux操作系统(shell)、gvim文本编辑工具(正则表达,快捷键)、EDA逻辑仿真工具(Mentor-Questasim和Sysnopsys-VCS是重点)主流EDA厂商及其工具 Cadence: NC-SimMentor: Questasim(Modelsim升级版)synopsys: VCS ③、Verilog语言、SystemVerilog验证和UVM验证方法学C/Matlab --(人工实现算法)–> RTL --(EDA工具实现)–> CMOSDUT:Design under Test 通常用Verilog去完成DUT的RTL代码编写,它会被综合成电路和门级网表,最终流片。需要知道的是,设计工程师编写的RTL代码很难保证逻辑功能是完全正确的,验证工程师就需要去描述各种工作场景,发送激励来验证他的行为是否满足预期! TOM:Time Of Market 上市时间TestBench(验证环境)结构,由DUT决定 DUT简单,TestBench通常使用FLatten结构DUT复杂、芯片迭代TOM(上市时间)要求高、Reusable(可重用)要求,TestBench通常使用Hierarchical结构,由此也就有了验证方法学,汇总成了UVM(Universal Verification Methodology - 通用验证方法学)。“带随机的随机激励生成,覆盖率驱动的验证策略”:属于UVM验证方法学,在RTL设计时会详细介绍
“逻辑仿真技术”:针对简单的逻辑,使用诸如Questasim的EDA工具做一些仿真
“调试技术”:发现BUG,如何分析BUG,有些BUG是DUT的,有些可能是TestBench的。
“断言技术”:TestBench和DUT是上图所示的马蹄形结构,TestBench只能看到DUT的接口,如果要看DUT内部的信号,这个时候就可以使用断言技术了,查看内部行为与预期是否一致!
验证的核心:完备性
I、Design:实现功能点II、Verification:验证功能点①、理解所有的功能点②、验证所有的功能点使用随机激励原因:
I、设计的功能点如果细分下来,可能有上百万之多,验证此时无法做到一一覆盖,此时就有了随机激励的方法学。该种方法,以时间换空间,每天都不停的跑,但是每次跑的用例发出的激励都是不一样的。通过随机种子与时间相关联,时间不一样,随机种子不一样,随机激励不一样。II、使用随机激励,这样人为分析遗漏的地方也可能被涉及到!使用覆盖率驱动原因:
I、激励随机生成发送,那么我的验证达到什么程度才算验证完成?这时就有了:覆盖率驱动。前面灌激励随机,后面收集结果看覆盖率。看验的那些点,是否通过随机给覆盖到了。II、覆盖率分类:①、功能覆盖率:看功能点是否达到。②、代码覆盖率:通过工具分析,激励是否把代码的每一行,每一个分支及其组合都给覆盖到了。【行覆盖、条件覆盖、Toggle覆盖】注:对于前端而言,后续提升途径有:
I、技术角度可走:架构工程师、系统工程师II、管理角度可走:验证Leader、项目经理、部门经理四、专栏内容规划数字IC验证工程师基础理论和技能
LInux操作系统Gvim文本编辑工具经典数字电路的Verilog RTL设计逻辑仿真工具QuestaSim、VCSSystemVerilog验证语言
Questasim(VCS) + Labs(实验)UVM验证方法学
VCS + Labs(实验) 五、学习要求 - “三多” 多写代码多做仿真多做练习