EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
硬件研发是相对枯燥且繁杂的工作,而这也恰恰是攻城狮们一直苦恼的地方。每个人心中都有这样的想法:世界这么大,总想出去看看。而没有时间和金钱是扼制此想法的根本原因。把枯燥乏味的工作做成兴趣并能够逐步提升成就感的生活方式,就更能难能可贵了。以下这篇文章来自一位在华为工作14年的老鸟,内容中充满了自豪与成就感,干硬件也可以“干一行爱一行”。
华为14年,凡经过我手的单板从没出过问题
2004年加入华为后,我连续做了14年的硬件,还算做了一些让人满意的单板,也有幸参与海思芯片的设计和开发,见证了网络芯片的成长。然而这当中也没什么高深的大招,只有一点一滴的积累。
01 10年整理600多页的“红宝书”
有人说,做硬件很容易,会拧螺丝会连线画原理图就行,但在我看来,这充其量只是连线工程师、画图工程师,不能叫硬件工程师。硬件工程师要懂的东西很多且很杂,PI(电源完整性)、SI(信号完整性)、时序……小到电阻电容,大到协议标准,遇到问题要能够有自己的判断而不是茫然无措。当时我们的老大说过一句话,“只要是看得见的,硬件都要管”,言下之意是硬件工程师要了解和单板硬件相关的所有领域,并对相关的技术问题做出判断,现在看来就是整个大硬件域。
在加入华为前,我已经在广州的一家公司做了两年的硬件了,当时做的单板规模很小、很简单,远不及华为单板的规模和专业性,接触华为单板后发现自己了解的那点硬件知识真不够用,于是就一边硬啃各种文档资料,一边追着专家请教。在工作中逐步学习PI/SI,学习高速设计,学习工艺,学习结构,学习散热,学习可靠性,总之只要和硬件相关的都会去学。虽然不如该领域工程深入,但也能够和对应领域工程师无障碍沟通并共同解决涉及的问题,到后来无论是做单板还是看别人的单板都会游刃有余。
这么多年的工作让我养成了一个习惯,在看器件手册和技术文档时,如果看到一个没见过的技术名词,就会立刻去google一下。即便是看不明白,也会硬着头皮从头到尾读一遍,在后续的工作中再去慢慢揣摩,同时会把在这个过程中看到的相关技术信息摘出来,专门放到两个文档中(一个word文档,信息记录较详细;一个是excel,方便查阅),这样后续查阅就不需要再翻箱倒柜了。新知识、新技术永远在不停地发展,目前我的“红宝书”还在陆续更新中。10年来,我的word文档已经足足有六百多页的干货了,细看下来,除了技术解释,标准摘要外,典型设计、设计中易犯的错误、各种器件的设计注意事项、等等内容也收集在里面。
除了查阅的便利外,这个过程其实也是我个人学习和总结的一个过程,现在只要是我的电脑开着,我的这两个文档就是开着的。我也无偿把红宝书分享给一些有需要的同事,希望也能方便他们的工作。
02 攻关像艺术创作,需要坚持也需要灵感
问题攻关几乎成了我司硬件人员的成长必经之路,既磨练意志也开阔眼界,这十几年我主导和参与过的攻关不计其数。
几年前带领过一个芯片接口误码攻关,这个攻关在我投入前已经攻关了月余,完全是被供应商牵着鼻子走,不断给他们测各种数据,然后等他们答复,反复很多次却没看到任何实质性的进展。
加入并带领攻关后,我先将已有的数据梳理了一下,然后和供应商交流了几次,基于这些数据我判断他们的方向是错误的,但他们却坚持己见,认为是我们提供的参考时钟抖动有问题,但从测量数据上分析抖动是正常的,这样一来攻关便陷入了僵局,于是我决定撇开供应商进行问题攻关。
经过对问题的分析和测试,我们判断DDR控制器的读写采样窗口小导致了这个问题,进一步设计实验发现是“读”方向有问题,但是窗口到底有多大,示波器无法准确的测试。通过和海思交流,我们利用芯片已有的寄存器很巧妙的设计了实验,准确的测定了DDR接口的窗口大小,出问题时的窗口确实很小,可是奇怪的是控制器启动后都会做读写窗口的扫描,理论上不应该出现这个问题。于是我把DDR的手册又啃了一遍,分析了DDR的窗口扫描算法,结合示波器的测试,最后发现是供应商集成的DDR窗口扫描算法太简陋,扫出来的窗口比实际的大很多,并且我们使用的某厂家DDR在高温下窗口会缩小,至此整个问题水落石出。针对此问题供应商的算法已无法修改,因此我们设计了一个巧妙的软件算法对窗口进行补偿,同时更换某厂家最新版本的DDR芯片,彻底解决了这个问题。
在最终问题定位之前,供应商始终认为是我们的问题,如果继续由他们控制整个攻关进程,问题定位结果必然跑偏,因此攻关中要有必要的坚持。
最近一次问题攻关在上个月,单板逻辑的兄弟遇到刷表出错的问题跑来问我,当时由于工作太忙无暇顾及,帮忙出了些点子就放在一边。过了几周正在成研出差突然就被呼到一个电话会上,原来这个问题一直没解决,还愈演愈烈了。第二天和逻辑兄弟走读了一上午的代码没有发现问题,一下进入了死胡同。这一天刚好是周末,实验室很安静,完全没了思路之后决定起来走走,绕着整层楼绕圈,同时在脑子里将这个问题现象串一遍。两种类型的单板,C板A片出问题,X板B片出问题,几乎完全一样的硬件设计,逻辑设计几乎完全一样,差别只是逻辑中状态机判断条件C板B片在前,X板A片在前,问题似乎就在这里,但是代码上却看不出问题,会不会是两块单板上两个芯片接口走线的延时差导致出问题?立刻回去查看PCB图,果然是这样,两颗芯片的延时刚好一个是A片长,一个是B片长,至此彻底打开了攻关思路,经过一周的艰苦攻关彻底解决了这个问题。
攻关最常遇到的情况是感觉好像所有招使尽了却难前进半步了,这种时候需要放松休息一下,攻关和创作艺术品一样,需要灵感。
平时的工作中由于时间关系,对于很多接口协议/硬件标准等了解并不深入,但到了攻关的时候为了解决问题,就必须沉下心来硬啃文档,所以每次攻关结束,都会发现自己在某些领域又深入了很多,或者是对协议标准,或者是工程领域最新的技术或问题,因此虽然过程很艰辛,但对于攻关还是乐此不疲。
03 单板要是做砸了,以后没人敢用你
生活中我是一个特别仔细小心,甚至有点强迫症的人,一件事件经常会反复确认,在工作中也是如此,对于关键问题会反复确认和分析,确保无误。以前跟海思一个项目经理一起做芯片,我从别人那听到他评价我时说,“你别看这个杨勇长得五大三粗的,但心思却非常细!”
硬件绝大部分的问题攻关过程艰辛,但最终的问题根因往往很简单,有的甚至很低级,一分钟犯的错误要用千百倍的时间来解决,一个连线错误就要导致单板花三个月来重新改板,成本巨大。刚入职路由器时,硬件老前辈给我们新人说,“优秀的硬件工程师就是要一根飞线都没有”、“好的单板就是你的品牌,板子要是做砸了,以后是没人敢用你”。因此从做单板以来一直都谨记前辈的教诲,小心翼翼、战战兢兢,用如履薄冰的态度做单板设计,不放过设计中的任何一个细节,有疑问的地方都是多次确认。40Kpin规模单板的原理图和PCB,一遍一遍,一根线一根线地点着看,查完原理图查网表,甚至连原理图设计工具的提示信息也每条都确认。从我的角度来说,要做一个好的单板其实没有捷径,就是每根线都点到,每个器件都看到,每一处设计都分析。
当时我所做的单板是路由器规模最大的一块单板,编译网表时原理图设计工具给出的warning和notes有几千条,我们也坚持每条都点一次确认一下,而且是编译一次点一次,有时感觉看得都有点想吐了,但仍然坚持看完。工作辛苦细致一点,风险就可以小一点,万一这些无效问题中隐藏着一条真正的问题没被看到,那就意味着单板可能要改板。曾经有QA问我如何保证单板质量,我给他开玩笑说“检视,检视,再检视”。
因为看得很仔细,以至于当时原理图设计工具的一些问题都被找了出来,虽然过程很辛苦,但是单板成功了就是对这些辛苦最大的奖励,这块单板是路由器当时最复杂的单板,如今成了路由器发货时间最长,赚钱最多单板之一,前年才终止发货。
我觉得,硬件工程师对待每一块经自己手设计的单板,都要当艺术品一样,设计规范整齐,精益求精。好的单板设计看起来应该给人一种很舒服的感觉,连线整齐,命名规范,标示详细,看一眼网标名称就知道这个信号是什么,从哪来到哪去,方便检视还不容易出错,原理图中详细标注设计细节,这样检视原理图就不用再去翻详细设计报告和数据手册。
这么多年来,但凡经我手的单板从没出过问题。我觉得也许强迫症是硬件工程师的必备素质之一。
04 转战中国芯
作为硬件工程师,除了做单板我还有幸参加了网络芯片的设计和验证工作,见证了网络芯片设计/验证的团队从无到有,从涓涓细流到如太平洋般宽广的成长。 在交付完路由器最复杂的单板之后,我被抽调去参与路由器40G芯片设计,承担40G芯片的硬件和工程需求的梳理及验证方案的设计,工作从单板硬件转到芯片设计有一定的跨度,有很多芯片板级应用方案、需求分析和决策,每天都是忙于各种硬件方案的分析设计,追着产品的SE和芯片SE确认问题,硬啃最新的芯片工程技术,决策芯片的硬件和工程需求。当时加班多到领导都看不下去了,唯一一次过年没有回家就是这次支持40G芯片回片的验证测试。
40G芯片的成功使华为核心路由器有了中国芯,全面具备了赶超世界一流IP芯片的能力,使路由器硬件竞争力显著提升。能有幸参与这种划时代的项目是人生最宝贵的经历。 现在我的工作也是一半单板交付,一半芯片开发,涉及网络产品线的所有网板和大部分芯片,随着技术的发展,芯片的设计和应用已经全面挑战工程技术极限,参与芯片设计让我能够接触到最新的技术,不断更新自己的知识体系。
在华为工作14年大小奖励也获得很多,金牌个人、金牌团队、总裁奖、明日之星等等,现在公司越来越重视专家的价值,在职级岗位等方面都给予了更大的发展空间,我也就更坚定了专家这条路线。公司重视,专家更应该回归到专家应有之道,在具体的技术领域要持续耕耘,做广做深,既能够承担具体的开发工作也能够洞察业界的发展方向。现在的我在做好单板和芯片的同时,也适时地抽身出来学习,期望能站在更高的视角来看待硬件领域,为硬件将来的发展做出更大的贡献。 |