2012年5月11日星期五

《反思RTL工程师的培养之路》

2012年的5月4日,我受邀去了一趟UIUC(university of Illinois at Urbana Champaign),并会见了电子与计算机工程系(Electrical and Computer Engineering简称 ECE)主管研究生、本科生的领导以及多个教授与行政人员。

众所周知,ECE@UIUC在美国电子与计算机工程的排名在2-4名左右,一起竞争的学校也就三个:Stanford,Berkeley和MIT。该系名人辈出,譬如,唯一一个两次获得诺贝尔物理奖的 John Barteen(发明了晶体管和超导理论),Jack Killby (平面集成电路),目前主管美国205M USD、面向下一代computer architecture研究的 Wen-Mei Hwu教授,信息领域的牛人 Thomas Huang教授等等。站在ECE的主楼门口,看着名人堂里的画像,自己倍感羞愧,已经奔向40岁的人,竟一事无成,四处漂泊流浪,形同乞丐…..

系里面主管实验室的一个manager叫Dan Mast,带领我参观了所有的ECE lab。其中一个实验室引起了我的注意。这个实验室用来给四年级本科生教学ECE385,主题内容是RTL design。实验室采用了Altera的QII FPGA和VHDL。Dan Mast还告诉我:通常他们会把不同厂商的类似产品放到同一个实验室。譬如,他们把Tek和Agilent设计的逻辑分析仪随机的放在不同的实验平台上,这样实验课上,有的学生会用Tek的仪器,有的学生会用Agilent的仪器。然而遗憾的是:FPGA他们仅仅采用了Altera。这门课的目的和我们国内的培训机构真是很像:就是希望学生在走出校门之前,能够懂得一些基本的硬件设计知识,能够较好的应对RTL工程师面试人员的提问,为日后做一名合格的硬件工程师做准备。

我和ECE的几位老师、行政人员谈论了几个小时,收获颇丰。返回家的路程上,在芝加哥转机,由于天下暴雨,不幸在机场滞留了几个小时。这次旅行让我思考了很多的问题。由于和Xilinx XUP,Digilent,国内的一些培训机构打过很多的交道,这些公司都希望基于Xilinx的FPGA平台培养FPGA或者RTL人才,但是在参观了ECE@UIUC之后,我有了一些困惑的问题:

(1)ECE@UIUC,全美国最为出色的电子工程师培养摇篮,可是Xilinx却在这个殿堂里面没有声音,倒是非常令我吃惊。这令我反思了两个问题:第一,在学校和企业里面,Altera和Xilinx,究竟谁的占有率高?具体数据没有,但是我知道去年Altera被评为了增长最快个一个Fabless公司,相信市场对Xilinx是不利的,从股票市场上也可以看到一些端倪,此外美国著名网站GlassDoor对xilinx的新任CEO带来的Xilinx环境变化,也有较多负面信息。第二,无论是Altera还是Xilinx,他们倡导的University Program是否对该公司的产品销售有重要贡献?如果有贡献,这些program的代价有多少?一个显而易见的问题是:公司的hiring manager 基本上不关心你究竟是懂得Verilog和Xilinx,还是懂得VHDL和Altera的编程环境。因为只要你懂得一种,从一门语言转换到另外一门语言,从一种工具转到另外一种工具,是非常容易的事情。So, No Bodoy Care! 我想对这些基本问题的研究,应该是University Program的一个重要内容。

(2)这个世界真小,你所碰到的难题,地球的另外一端也在上演着同样的问题。无论是Xilinx XUP,还是Digilent,都想通过提供教育服务,解决本科生学习RTL设计或者学习FPGA的困难,使得他们毕业之后能够成为一个初级的RTL、FPGA工程师,但是思路很好,现实很困难。美国的ECE @UIUC也面临了同样的困难。ECE 385 也想通过强化的、project式的训练,强化学生的RTLdesign能力,他们提供了一系列的项目供学生选择,譬如一些类似Digilent超级玛丽、吉他英雄的case,但是学生很痛苦,培养效果不理想。这就促使我们思考:要想培养一个合格的RTL初级工程师,我们应该选择哪个level的学生作为培养对象。国内的某些培训公司招聘一些大专、二本、三本、一本的一些本科生进行培养,希望成为RTl工程师的摇篮,我想这个想法挺好,但是不现实。在美国,RTL工程师或者招聘刚刚毕业的硕士生,或者是5-10年工作经验的高级工程师,本科生基本没戏。为什么这样?原因也很简单,RTL设计本身很复杂,本科生的课程对RTL的很多设计理论都没有touch到,譬如如何设计低功耗的RTL,如果解决on chip variation的问题,如何在sub65nm的设计中尽量减轻后端流程的设计难度与收敛时间,等等,这些topic我觉得应该在硕士阶段进行解决,对于四年的本科生来讲,还有一个台阶需要迈上去。一名硕士生如果完成了理论课程,写过一些RTL,他、她能否成功通过面试成为一名初级的RTL工程师呢?我觉得:很难。还需要进一步的加工,也就是培训。

(3)什么样的培训才可以让硕士毕业生顺利进入RTL 团队呢?我觉得需要两步走:第一步,可以采用一些XUP或者Digilen提供的一些小案例,这些小案例主要是提供硕士生对verilog代码读写能力、编程调试环境、仿真综合验证有个熟练的操作。第二步,是关键的一步,也是目前市场上最为缺乏的:有10年左右经验的人,针对几个难点,对你进行有效的调教与点播。这个世界什么都是要钱的,谁来调教呢?如何解决。我一直在思考这个问题。从UIUC返回之后,我去youtube,facebook,linkedin,等等网站检索,希望能够找到一些有用的内容,但是没有。那我就来create这些内容。

没有评论: