面试了很多人,有些水平高,有些水平低,有一些公司有严格的职级,比如华为,完全可以根据其职级来得知其逻辑水平,而且华为的业务职级和技术职级还是分开的。我们公司也有职级,但是,不同的公司之间,或者说,逻辑工程师,没有一个比较普遍、统一的标准来衡量其水平。 我一直比较困惑于这个问题,原因来自于从小受到的教育和长大后经常看的小说。小时候的学习成绩,是非常容易识别和量化的,分高分低,一比就知。成年以后,看过各种小说,武力高低,也是有非常明确的量化的,一个人完全可以非常清楚的知道,自己的级别。比如《绝世唐门》,用魂力来表征水平,从1-100,每10个级别为一个大的等级,虽然这不能代表真正实力,但是至少让读者可以看到主角的逐步成长。不过,这也只是小说,现实生活中,是没有这个东西的。 鉴于这些困惑,在本章,按照我自己的简单的经历和粗浅的认识,对逻辑工程师的水平做一下初步的划分。 第一阶段:能用 阶段特点:这个阶段,基本上处于刚刚接触到verilog代码一段时间,知道大概的语法,能够把一个需求用代码实现出来,并且能够调试出来。总体而言,处于一个能用的位置,可以实现,但是并不清楚代码与实际器件实现的关系,对逻辑的硬件思维基本没有。 阶段评价:此时,尚且不算一个逻辑工程师,因为只会写代码,没有逻辑思维 提高途径:如果有审美,有需求,自己有内部推动力,将开始进入到第二阶段(我有见过中兴的3年的算法工程师,做了3年只懂算法实现,完全没有逻辑硬件思维,因此,时间长短跟水平并没有直接关系) 第二阶段:可用 阶段 特点:这个阶段,开始关注代码风格,开始把自己的代码写的风格统一,并且开始关注代码的硬件实现,突出标志就是开始关注rtl 视图,可能还不怎么关注器件视图。但是基本知道器件的大概结构,知道FPGA里面有le,ram,dsp,全局等等。比较能明确的区分可综合语句与仿真语句的区别。 阶段评价:这个阶段,基本可以称为是一个逻辑工程师了。能够完成设计实现,仿真,调试,能够做出逻辑设计说明。 提高途径:此时,一般开始负责一个模块,如果该模块在其他项目上复用,并且略有更改,有的人会直接修改,而有些人开始有更多的考虑,由此进入第三阶段 第三阶段:好用 阶段特点:这个阶段,由于上一个阶段已经可以实现设计,在这个阶段,开始考虑设计的复用,开始考虑模块的划分,注重模块接口,平台化等等。 并且,此时对模块内部的代码书写有了更加深刻的认识,模块内部的写法开始更加统一,基本上,模块内部的代码可以直接生成rtl视图。 并且,此时开始关注器件结构,了解fpga的内部架构,时钟网络,route,对时序约束有了基本的了解 阶段评价:这个阶段,可以认为是一个基本成熟的逻辑工程师了,逻辑所需要掌握的知识方向,基本都有所了解,而且,不仅能够完成设计,还能在设计之前做出方案,而且做出的设计,模块的划分比较合理了。 提高途径:此时,一般会开始接手一些比较大的前人的设计,有的人会尽量复用,有些人会有更多的考虑,由此进入第四阶段。 第四阶段:易用 阶段特点:这个阶段,会接手一些比较大的设计,开始有架构的考虑,对于模块的划分,模块接口,模块职责,整体方案的实现,开始有更多的考虑,此时,可以做出比较好的,合理的方案,而且对逻辑的各个方向的知识,都有了比较全面而深入的了解,比如仿真,器件结构,时序约束,模块划分等等 阶段评价:这个阶段,可以认为是一个比较优秀的逻辑工程师了。能够在项目之初给出比较好的逻辑方案,并且能够快速而高效的完成设计,仿真和验证。对应可能发生的时序,等等问题,也有比较好的考虑 提高途径:此时,如果有机会可以带领一个团队,会进入一个不同的领域,能够接触到更多的东西, 第五阶段:逻辑架构师 阶段特点:这个阶段,会负责一个团队,或者一个项目的逻辑设计。开始对整体的逻辑架构有所考虑,并且开始准确的划分逻辑架构,并分配不同的工作任务,由于需要团队协作,因此要求对逻辑方案,逻辑进度,逻辑技术,有非常深刻的认识, 阶段评价:可以给团队制定逻辑代码规范,逻辑设计流程, 可以轻松的完成逻辑整体方案的设计,并且准确识别风险点 可以准确的划分逻辑架构,模块接口,功能划分,工作职责, 可以准确的预估项目的风险,进度 可以准确的做出逻辑的整体方案,仿真方案,调试方案,对于整体的业务流有全面而深刻的认识 对于逻辑的各个知识方向有非常深刻的认识, 熟知各个厂家的各种逻辑器件的内部结构,基本逻辑单元结构,以及由此带来的代码风格的相应的改变 熟知时序约束,并且能够采取各种手段,解决各种时序问题 对于逻辑的布局,数据流走向有深刻的认识, 对仿真有深刻的认识,熟知仿真器原理,并且开始搭建可重用,复用性好合效率高的仿真平台,或者使用高级仿真 此时,基本有10万代码量 提高途径:由于本人仍在此阶段挣扎,因此,尚不知如何提升。也许可以关注一下板卡,向硬件系统方向发展,或者补充验证方法学,向数字部门方向发展,或者整合逻辑、软件、系统,向系统方向发展。在此阶段,逻辑本身相关的技术,也许已经到达一个瓶颈了。 由以上各个阶段的发展可知,一个好的逻辑工程师,一是要有好的环境,可以学到东西,二是要有机遇,可以遇到不同的情景。但是最重要的还是,对自己有要求,有追求,自己内部有不断的推动力,可以使自己不断的学习进步
|