当前位置:首页 > 新闻资讯 > FPGA之家动态 >

IC咖啡学堂课堂纪要:System Verilog的学习之旅——验证篇

时间:2024-08-10      来源:网络搜集 关于我们 0

家好,欢迎大家参加IC咖啡学堂之模拟混合信号验证微课堂!

本次跟大家分享的主题是:System Verilog的学习之旅——验证篇。

System Verilog已经替代Verilog成为IC数字验证的基础语言,所以System Verilog的学习也变成了一件相当重要的事情。下面分享的都是我的个人经历以及感悟,希望能给大家带来一些灵感,也欢迎大家的批评指正。

看一下我们的目录设计,第一个自我介绍就不多说了,入门、书读薄、扩展,这三部分,也是现在相当流行的守破离理论,守:掌握夯实基础会做,破:扩展其他知识,看能不能有其他的形式做好,离:形成自己的体系做精。

入门会做:我个人是在2011年接触System Verilog,在接触它之前几乎就是0基础,计算机1级考了两次才过,计算机一级也就是基本文本操作,看着其他同学二级三级四级的考,我也是深深叹一口气,觉得自己跟这行无缘。11年考入研究生,老师说要想从事验证必须看一下这本书,我就看吧,这一看倒好,整整半年,我只看了前四章,而且没看懂,心中一万某某某呼啸而过。什么是面向对象,怎么用,Interface又是一个什么鬼玩意。后来进入公司实习随着做的越来越多,对System Verilog也有了初步的了解,用很长的时间达到了会做的地步。

入门:让我们来说一下刻意学习。10000小时理论,也是很火的一个理论,我最早接触是看一个NBA巨星说自己不停练习成就了自己,所以到我们语言学习也是一样的,不停的进行练习,不能说我会写了一个task就是学会了,里面许多种的技巧我们需要不断的练习,也需要我们不断的跨越学会一点东西的满足感的舒适区避免沉沦。初始的学习没有捷径,就是一个字练,孰能生巧。

书读薄做好:把学过的东西组织整理,反复推敲,融会贯通,抓住了要点,我们开始写程序一般是丑陋不堪的,随着学习的推进我们用了各种高级的技巧使得写出来的东西也不是那么的难看,我们可以熟练的使用书中的各种语言特性,也能明确的知道在什么时候用什么方法更合适,这个时候语言就是你的了,同时应该已经总结出了一套方法体系。

做精:System Verilog是一门面向对象的语言,这里先介绍下面向对象是个什么东西,抽象到具象的过程,人种是个抽象概念,我们能提炼的出来的是一个人,肯定具有人的所有功能,具象就是白人黄种人,黑种人,具象是在人的基础上加入了皮肤颜色的特殊化定制。面向对象让我们比较容易对事物进行分类,找到共同点。面向对象想要用好也不是一个简单的过程,还好软件的前辈们给我们留下了丰富的资源,设计模式就是他们多年经验的总结,我们可以作为参考。

以点及面:我们完成了System Verilog语言的学习,有了那么痛苦是经历,肯定要给我们相应的回报啊,回报就是我们在进行其他语言的学习我们将System Verilog语言学习得到的这套理论方法套用到新语言学习上,发现不合适的反过来又会让我们进一步修改理论方法,我们的理论就有了升级,去掉了特性,变成了共性,反过来我们又可以用共性去进行新的语言学习,反复迭代。

个人Python学习

从其它领域中学习:其实我们ic验证语言也可以像软件语言一样形成那么丰富的体系,只是我们从业人员较少,相应的丰富程度也会较低,跟物种的进化有点相似,基数少就不会衍生出太多的多样性。但是我们可以借鉴软甲的发展经验,软件的架构去丰富我们的学习,进而提高我们的能力。同样建筑学、心理学,哲学这些古老的学科有那么久远的历史必定会有我们可以学习的地方。曾经经济学上一个概念跨维攻击就对我产生不小的影响,也是我们后面会说的,讲的是我们拿发达国家的发展经验可以推算出发展中国家经历的阶段,进而可以提前预测并进行相应的决策。也就是说我们的理论体系越繁杂越丰富就越能提前预知事情的发生。

知识体系扩充:知识体系是我们做事情的方法论,方法论不断的完善就会指引我们越来越顺手的做一些更复杂的事情,当我们发现在我们的理论体系中存在缺陷的时候就需要去补足这块缺陷,使得方法体系更加完整。

用上帝视角创造价值:学习System Verilog原因是我不能在工作中用上帝视角解决问题,需要用10000小时理论去学习,学习后发现在其他的语言中同样不能,这个时候两个选择,单纯学习另一种语言,将两种语言进行融合,形成自己独特的见解,让我们我们对不同语言可以站在一个上帝视角成为可能,自己的体系不断的丰富,当我们在越来越大的体系中可以用上帝视角去解决问题我们的能力跟地位也在不断的提升。

问答互动

S*

Q: 多谢大牛分享!我有个疑问,能具体分享一下构建体系时候的方法和技巧么?或者回顾一下您是怎么一步一步的逐步搭建起来的?例如是每天做笔记回顾么?

A:这里说的方法的话,可能就是我之前提到的“首扩理论”,首先我们能把事情做好, 第二个扩充自己的知识,第三个要形成我们的体系。同时在我们形成体系的时候,要不断的反思。将反思的结果融入到我们的体系中。这个过程就很漫长了,我们要不断的反思,一天的反思,一周的反思,一个项目的反思,甚至一年的反思,等我们老了的时候,反思我们这一辈子。

我见过好多的人,都是按照别人既有的流程在做。这种方式其实挺不好的,我们是在做重复的工作,而且是重复的机械工作。当在某一个时间段,如果说在合适人的指引下的话,这些部分可能是会被自动化工具所取代的。当我们有一天,我们说,咦,怎么机器抢了我们的工作的时候,我们是否也应该反思,我们的工作是否有意义,是不是对我们有一定的帮助,是否让我们有一些成就感。

J*

Q:问个菜鸟问题。现在网络上System Verilog的教材太多了,能否给推荐一两个比较有代表性的教程?

A1:System Verilog这个书,其实就两个就够了,第一个是System Verilog本身的绿皮书,见下图;另外一个是它的User guide,大家可以到Mentor的官网去下载。

A2:推荐这本: System Verilog for Verification,中文版翻译的不是太好。其实你会Java的话,随便翻一下就会了。

W*

Q:是不是部分牛×的公司也用它写rtl?

A1:这里你说的写的rtl设计的话,我因为本身是做验证的,所以说对设计这块不是特别了解。我现在能知道的话,设计就是一本User guide那上面会描述的比较清楚。但是User guide 有它本身的问题,它把设计和验证融合到一起了。从我这方面,没有看到一个专门介绍设计的、system Verilog方面的书。

A2:也可以写RTL,还有一本书,叫做 System Verilog for design。让你的代码可以综合。

Q: 可否分享一下这些书的电子版

A1: 我说的这两本搜一下就有,带上 pdf就行

A2: 推荐一本书,UVM cookbook。

Z*

Q:请问SV相对于我们熟知的Verilog,扩展了哪些特性更方便(难学),多谢。

A:我知道的一些可综合的语法变多了, System Verilog相对于Verilog。例如, 一些for循环,它可以变成可综合的,在一些特定的情况下。还有我们的位宽,它有一个$bit, 在一定情况下,好像也是可综合的。

W*

Q:有个观点希望得到确认:System Verilog主要用于IC验证中,使用其搭建test bench完成电路的验证。由于FPGA可重复擦除,因此FPGA几乎不需要验证,直接烧录到芯片进行验证。但是对于集成电路IC来说,一次流片会花费大量资金和人力,因此需要搭建环境验证电路是否正确,这个时候就需要System Verilog。当今主流的IC验证语言是System Verilog,方法学是UVM。

A1:嗯,这里有一个观点我不是太同意啊,就是说“FPGA几乎不需要验证”。 我中间有一段工作经验其实是在爱立信的,他们的FPGA是做的4G,5G。 到芯片大到一定的规模之后,FPGA的验证已经是很复杂了。如果说, 它没有一些验证在里面的话,很多的东西是几乎没有办法查的。我用两个月的工作去查一个Bug;但是在我的验证上,我一天就可以找得到。这个东西,可能是很多人还没有了解到,或者他们芯片没有大到一定规模,所以说他们不去考虑这件事情。

A2:FPGA公司也有很多验证职位,验证到处骗饭吃。

Q:那就是说,逻辑是理想的,可FPGA终究是实现的,理想与实现是有差距的,所以需要验证。仿真分为逻辑仿真与功能仿真,逻辑仿真确定设计逻辑是对的,即理论思路是对的。功能仿真才是反应实现问题。

A3:刚才那个问题,我自己分享一点点浅薄的数字验证的感觉哈:FPGA本身运行很快,但是信号速度慢,黑盒子,debug不容易。SV用Simulator跑,耗费运行时间,但是信号可以很快,而且保存内部节点,debug容易。

A:FPGA的问题在于我没办法看到结果全凭猜测,即使有工具能看到也是有限的,所以需要验证的存在。他们不用还有一方面是因为成本太高了,开不起。一个好的验证工程师在40万左右,FPGA公司很少会给到这么多。验证经理级别的就更多了。

Q:我是不是应当把我们的猎头拉过来 ? 哈哈

A:  FPGA验证的招聘其实很难的,从业人员的偏见以及工资都要考虑。

A4:Xilinx和Altera也缺

A5:现在有了加速器

Q:嗯嗯,号称综合了两者优点,不过我没有用过;不知道有人用过不?感觉如何

Q:今天不是讲语言吗?!

A:题目跑偏了哈哈

Q:谢谢嘉琪帅哥分享。

A:FPGA准备时间有点多还要可综合,整个过程有点冗杂。

S*

Q:请问怎么保证在大规模芯片验证的正确性,和效率等。例如有何比较好的流程,或者Check Point么?

A:关于验证如何做Check这块的话,我觉得大家可以去参考一下,吴彬的,叫“IPO”的一个验证方法。他主要介绍的是,我需要在输入、输出上进行验证,以及需要在中间的处理流程上进行验证。其实这个东西业内暂时还没有整理出一套特别规范的流程,能够适应各种各样的情形。这个可能需要我们集体的、IC人的共同努力。

L*

Q:请问SV的仿真器免费的吗,哪个是免费的?

A:仿真器都需要钱的,除非盗版/破解版。 大公司不用正版不怕赔死。

Q:ModelSim都支持吗?

A: 都支持的,只是好用和难用的区别。

Q:现在有多少人用Model Sim啊?

A:有的。

A:明导比另外两家vendor不值一提啊,工具不好用,support也不给力。

Q:因为我没亲手用MS仿过SV

A:哈哈 用过的都不想再用。

A2:Modelsim是wondonws版本,正经用的叫Questasim

Q:一个 -fast开关的问题折腾了至少3个月,从台北到Fremont到北京,就是说波形文件里总是好多信号找不到,我实在是良心发现才告诉他们;找不到是因为选项的问题。

Y*

Q:您提到的爱立信的大芯片,数字设计人员,和验证人员的配比是大概多少?1:2么?

A: 理论配比1:2,爱立信的配比1:1,但是由于一些原因没有招到足够的人。我们过去的时候他们还是没有验证的,刚起步所以发展的缓慢了一点。

Q: 望京那个吗?FPGA部门还存在吗?

A: 是的,都在的。感觉他们啥都想做但是啥也做不出。

Q:而且听说加班很厉害?

A:对于设计加班挺多的,特别到后期更多

A1:嗯嗯,听很多人说现在设计验证配比都是1:2了?

A2: 1:2是梦想1:1是期盼

A3: 很多人都觉得设计好玩,其实验证这个职位更重要。

A4:是的,现在很多东西都ip化,一个芯片,就说7个ip,每个ip 理论上90% fit 目前应用,但是0.9的7次方之后,成功率就降低很多,或者说整体芯片成功率就不到50%了。所以验证需求更大了。

A3:是的,现在购买IP的公司很多,一是因为节省大量时间,而是比较成熟。

V*

Q:SV兜不起来multimillion gate吗?

A:为啥子不能阿?

Q:UVM现在是个啥现状啊?另外再往抽象层上走又要步入C++面向对象的领地了吧?

A:面相对象是一种方法不是谁的特有。sv虽然有面相对象的属性,不过我们经常是把它当成面相过程在写。

Q:这么多class,怎么还面向过程?

A:用了class了就是面相对象了?只不过是另一个module罢了。

Q:那什么是对象?

A:我们的class都没有功能划分吧,更多的是过程的集合。

Q:Create的transaction难道不是吗?怎么不划分功能?

A:面相对象是一种理论不是用了什么就是面相对象。每个component都是不同功能。那是UVM帮助划分的,不是我们自己。

A:SV就是面向对象,UVM只是一个库而已,也可以用其他验证方法。

Q:啥叫面向过程?

A:面相对象是看待事物的一种方法,不针对任何语言。再说了sv是面相对象,设计的人在用什么呢?

Q:C语言也可以面向对象喽?

A:Perl都可以,C为什么不行?可以的。

讲师介绍

刘嘉琪,高级数字验证工程师。分享一段在大学时期立志不学习任何编程语言、到现在验证入门的神奇之旅。


注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

用户登陆

    未注册用户登录后会自动为您创建账号

提交留言