学习完数字集成电路之后,学习芯片验证是一个很好的提高方向,接着可以并行地学习芯片设计,这就需要掌握计算机结构,指令集,操作系统等硬骨头。在此之前,学习芯片验证可以是个好过度,但是UVM这种通用验证方法学还是有一定门槛的,找了好多资料才满满摸到门道,这篇文章就来做个回顾和展望。

大概循序渐进的流程是:先Verilog,后System Verilog,最后UVM。

硬件模块和测试模块

学这种语言首先非常重要的一点是,Verilog作为硬件描述语言,它一方面是描述硬件的行为,也就是它只是把脑中的硬件结构用这种语言描述,之后通过综合工具可以生成电路结构,最后转化为真实硬件,这一点不同于纯软件语言如C,Java等,所以在编写硬件模块时要做到心中有“硬件”。

另外一点要特别注意:描述完硬件后,怎么知道它功能正确呢?总不能流片之后再检测吧,所以Verilog语言还要能够写外部激励、比较的模块,而这部分的代码更接近软件,因为我们在一个模拟环境下测试硬件代码是否正确,用软件写法更灵活,更能全面测试硬件的性能好坏。

System Verilog就是为了提高测试模块的效率,所以在学习时你会看到很多数组、类、变量等和C++很像的语法,它们的目的都是为了更好地测试我们最先设计硬件模块,所以看书时一定要先分清他在介绍“测试模块”还是“硬件模块”,区分这点之后,看起书来会更清晰。

仿真环境

Q1、写好的verilog的硬件模块要如何转化为实际电路呢? 可以用Quarturs或Vivado软件烧写到FPGA开发板。 Q2、Verilog的测试模块哪里运行呢? 可以用明导公司的Questa Sim或modelsim,推荐前者,因为它对System Verilog更友好,功能更齐全。

Verilog

学完数字电路,有一些C的基础就可以上手Verilog了,夏宇闻的《Verliog数字系统设计教程》是很好的入门教程,尽量自己动手仿照里面的案例。

如果有条件可以买一个FPGA开发板,它可以将你写的硬件电路在板子上连好,甚至可以写一个CPU,然后可以直接查看板子来观察设计的电路对不对。某宝还会附带完整的学习资料,我最初的入门也是跟着里面的案例学习的。

再推荐一个网站,上面有从易到难的Verilog编程题目,用它练练手能快速熟悉这种语言。HDLBits(有时登不上)

System Verilog

System Verilog 主要目的是希望更高效地测试硬件模块,因为现在的芯片集成度越来越高,许多模块都想集成到一起来降低成本,就是所谓的片上系统SOC。硬件模块越复杂,功能验证就越复杂,单纯用Verilog写testbench非常复杂,比如输入信号需要随机数,需要发送多种类型的数据等。System Verilog 借鉴了软件语言的特点,能够更加方便地为待测硬件提供激励、检测和结果比对,这三项也是芯片验证的基本模块,所有其他东西都是围绕这三方面展开的。再次提醒一下,

" 验证模块"的代码倾向于软件,"硬件模块"的代码描述硬件。

System Verilog的入门一般是“绿皮书”,斯皮尔写的《System Verilog验证——测试平台编写指南》,里面有丰富的语法案例。

还有红皮书,路桑写的《芯片验证漫游指南》,配合他“腾讯课堂”V0公开课里的实战案例《大象装进冰箱系列》,可以对验证有一个基本的框架。

另外钟文枫写的《System Verilog于功能验证》也提供了入门素材。

如果上面资料还是很生硬,那么可以看看B站的课程SV语法入门,验证平台搭建打基础。

特别提醒,这些资料可以并行地看,理论和实战相结合,我是先完成一部分《大象装进冰箱系列》的三个实验,对整个验证平台有实践上的认识,然后发现语法不懂的地方后,看B站视频,回顾Verilog验证部分。接着再模仿绿皮书的案例,最后继续完系列实验。

UVM

System Verilog搭建验证平台耗时较长,如果每一个测试都搭建新平台,效率还是不高,因此UVM把一些常用的平台函数或类封装了,以面向对象的方式给用户调取,省事不少。因此要学UVM,首先要打下System Verilog的基础,不然真的要看天书了!

UVM的经典入门书有《The UVM Primer》,国内还有张强的《UVM实战》和《UVM应用指南》。

希望有志芯片设计的朋友一起努力,资料分享: 链接:https://pan.baidu.com/s/1vb0Zbslrml2tTRTm0ntKiQ 提取码:y3lr

标签: 验证

添加新评论