想当屌炸天的IC设计工程师,就需要这样牛

刚毕业的时候,我年少轻狂,以为自己已经可以独当一面,庙堂之上所学已经足以应付业界需要。然而在后来的工作过程中,我认识了很多牛人,也从他们身上学到了很多,从中总结了一个IC设计工程师需要具备的知识架构,想跟大家分享一下。

技能清单

作为一个真正合格的数字IC设计工程师,你永远都需要去不断学习更加先进的知识和技术。因此,这里列出来的技能永远都不会是完整的。我尽量每年都对这个列表进行一次更新。如果你觉得这个清单不全面,可以在本文下留言,我会尽可能把它补充完整。

语言类:Verilog-/VHDL,SystemVerilog/SystemC,Makefile/Perl/Python/Shell,Tcl

工具类:NCVerilog/VCS/ModelSim,SimVision/DVE/Verdi,Vim/Emacs,SVN/CVS/Git,MicrosoftOffice

平台类:Windows,Linux,OSX

其他加分项目:MATLAB,ISE/Synplify/Vivado/Quartus,LEC/Formality,VMM/UVM,ESL,ZeBuServer,JIRA/Confluence,C/AssemblyLanguage,ComputerArchitecture/ARMArchitecture/MIPSArchitecture

为什么怎么办

A)Verilog-/VHDL

这里之所以强调Verilog-而不是Verilog-,是因为在Verilog-中规定了很多新特性,因此可以产生更好的代码风格。

我曾经在什么是良好的Verilog代码风格一文中对新版的接口语法进行过详细的举例说明。这种新的接口方式修改起来更加简单,例化模块的时候使用也更加方便,不像旧版的接口语法由于一个接口需要分3次描述,无端端增加了代码行数而且阅读和改动都很困难,尤其是当一个模块的接口数目超过一个屏幕的显示范围时Verilog-的这种优势更加突出。

学习Verilog最大的问题就是:很多国内的书写得都很不好,书中的很多例子都是为了说明语法特征而存在的,没有任何实用价值,甚至很多代码都是错误的(这里错误的意思并不是说他语法错误,而是说他是不可综合的,无法用数字电路来对等实现的)。

所以,对于学习Verilog,我的建议是,随便找一本类似语法手册的书籍,匆匆把基本语法看过一遍,搞清楚模块定义,接口定义,模块例化,寄存器定义,线定义,always块怎么写这些基本内容后,就开始到OpenCores网站上去下载已经经过FPGA验证的完整开源项目代码进行学习。先做到看懂别人写的代码,然后再尝试自己去模仿,有不懂的问题再有针对性地去网上搜索答案。

Verilog语言与软件语言最大的区别就是,因为它是用于描述电路的,因此它的写法是非常固定的,因为电路的变化是非常有限的。学习Verilog的时候,很多时候我们并不是在学习这门语言本身,而是学习其对应的电路特征,以及如何对这个电路进行描述。

如果心中没有电路,那么你是不可能写好Verilog的。从基础开始,一点点积累类似计时器,译码器这样的小型电路描述方法是非常重要的。Verilog鼓励在电路中进行创新,而不是在描述方法上进行创新。因此,即使是世界上最牛的Verilog高手,他写出来的Verilog代码语法也都是很普通的,而他的创意则在于如何去组合这些基本的小型电路。

VHDL虽然我并不是太了解,但是目前在欧洲很多国家,VHDL还是主流的RTL设计语言。VHDL语言的严谨性比Verilog要好,不像Verilog中一样存在大量符合语法却永远无法综合的语句,容易对新人造成误导(仿真通过的代码却在FPGA综合时报错,或者FPGA实现结果与仿真不一致)。而VHDL和Verilog虽然可以相互转化,但是转化过程中仍然存在很多问题,无法做到完全的自动化。关于这一点我之前写过一篇专题进行探讨:如何将VHDL转化为Verilog。有兴趣的同学可以去看看。

B)SystemVerilog/SystemC

这两种语言都是为了验证而存在的。作为IC设计工程师,验证知识不是必须的,但是掌握基本的验证方法学有助于提高自己的debug效率和结果。我曾经在如何快速搭建模块验证平台一文中详细介绍过一种我自己总结的验证方法,这种方法就是基于SystemVerilog语法实现的。由于SystemVerilog对Verilog完全兼容,就像C++对C语言的兼容一样,所以SystemVerilog(或SV)学起来其实并不算难。

SystemVerilog是一种面向对象的语言,其设计的本意是用于搭建验证平台,主流的VMM/UVM方法也都是基于SystemVerilog实现的,所以立志成为IC验证工程师的同学,SystemVerilog的深入学习和流行方法论的学习都是必不可少的。

而对于那些只想做IC设计的同学而言,SystemVerilog同样也是值得学习的。且不说本文前面提到的用于提高验证效率的debug方法,即使只是为了做好设计,SystemVerilog也是大有用武之地。在欧美很多发达国家,很多世界顶级的IC设计公司内部都已经开始使用SystemVerilog进行RTL设计了。由于在SystemVerilog中加入了很多类似always_ff、always_







































澶師鐧界櫆椋庝笓绉戝尰闄?
鏃╂湡鐧界櫆椋庢不鐨勫ソ鍚?



转载请注明:http://www.92nongye.com/tlfc/204618836.html