华为“老司机”亲身经历告诉你,华为硬件究竟是如何开发?

华为“老司机”亲身经历告诉你,华为硬件究竟是如何开发?_第1张图片

在国内提到硬件开发,华为无疑是最优秀的公司。同时,硬件创业者从华为出来的也非常多。这篇文章的原作者正是一名华为的“老司机”,非常详细的介绍了华为硬件开发的流程,华为是怎么做硬件开发的,非常值得其他硬件开发者借鉴。

  

曾经2007年,刚工作2年的时候去一家小公司去面试。当时考题,我感觉我做得很好,面试的时候,对方对我也很认可。但是他当时说:“我需要招一个,在大公司待过的,最好知道硬件开发流程和规范的。虽然你题答得不错,但是我们需要一个有丰富经验的,最好在华为待过的。”

  

当时,我就在想“华为的规范和流程是啥样的”,就一直想去看看。之前对华为的面试一直都不是很感兴趣。之后,就很想有机会去华为看看。2008到了华为。


我能想到的华为硬件开发的几个不一样的点,跟大家分享一下:

  •   文档,评审,设计

  •   华为的硬件领域的人员构成

  •   华为的流程

  •   归一化

  •   专题分析


华为“老司机”亲身经历告诉你,华为硬件究竟是如何开发?_第2张图片


文档,评审,设计


当时刚入职时,三个人做一个电路板。虽然电路复杂一些,还是有一些人力过剩的,所以我就被安排去写一个PCI转UART的逻辑。

  

我当时是新员工,也急于表现自己,利用周末的时间,估计用了一周的时间,就写完代码,开始仿真了。我以为我的导师兼主管会表扬一下,结果没有,他说:“你为什么没有召集大家讨论?然后再写方案,评审?然后再动手写代码?”我当时是没有理解的,觉得我一个人就搞定的事情,为啥要这样劳师动众?


现在回想起来:


第一、 从主管的角度,不知道新员工的个人能力,你能把做的事情讲清楚了,他才放心。

  

第二、 从公司的角度,有一套流程来保证项目的交付。那么则不再太依赖某个人的个人能力,任何一个人的离职,都不会影响项目的交付。这也是华为最了不起的地方,把 复杂的项目拆得非常细碎,这样不需要特别牛的人来交付项目。这是为什么华为的工程师的收入是思科的N分之一。

  

第三、 从效果角度,毕竟一个人的想法是有限的,把想法文档化的过程,就是整理思路的过程;讨论的过程,就是收集你自己没有想到的过程。正式的评审,是大家达成意见的过程。提前讨论,让相关的人都参与到你的设计中,总比你设计完了,被别人指出一个致命的问题要强得多。


就是因为华为把一项工作拆散了,所以沟通,文档,评审,讨论,变得非常重要。这个工作模式的缺点,也是显而易见,沟通成本高,工作效率低。 


华为“老司机”亲身经历告诉你,华为硬件究竟是如何开发?_第3张图片


华为的硬件领域的人员构成


在华为内部里面,人员角色非常多。硬件的人是对产品开发阶段,端到端负责的。


做单板硬件工程师,可以涉猎最多的领域,同时也是工作内容最杂,接触人最多,扯皮的最多的工种。但是也因为有人专门负责画PCB、EMC、电源、逻辑,原本硬件工程师应该做的领域。那么硬件工程师就武功尽废,变成“连连线”。


其实不然,正是由于每个人都是一个小的领域,没有人统领,所以一个好的硬件经理的作用非常的重要,是贯穿所有领域和全部流程的关键角色。

  

正如原来华为内部论坛上有一个人比喻的,硬件工程师更像是处理器里面的“Cache”,是所有环节的中转站。

  

大公司把人的分工分的这么细,也是防止某一拨掌握了太多公司的核心技术,出去单搞了。


华为的流程


其实华为的流程,很多人都知道IPD流程是从IBM来的,同时华为也去咨询过爱立信,爱立信的硬件开发,完全没有流程一说。

  

我个人理解:IPD流程已经在华为变种,结合了中国人的特点,华为的企业特点进行了变通和优化。如果华为僵硬的套用IBM的这套流程,也必定不会这么成功。 


那么概括一下华为的硬件开发流程:


需求分析→总体设计→专题分析→详细设计→逻辑详设→原理图→PCB→检视→粘合逻辑→投板→生产试制→回板调试→单元测试→专业实验→系统联调→小批量试制→硬件稳定→维护。


流程的根本在于,这个环节做好了,再进入下一个环节。所有的环节其实跟其他公司并没有太大的区别,只不过严格把握了进入下一个环节的考核条件。令硬件工程师最纠结的是“没有个节点跟’投板’对应”。


华为支撑IPD流程的系统是PDM(又名爬的慢)


PDM的中文名称为产品数据管理(Product DataManagement)。PDM是一门用来管理所有与产品相关信息(包括零件信息、配置、文档、CAD文件、结构、权限信息等)和所有与产品相关过程(包括过程定义和管理)的技术。

  

华为所有的器件资料,产品部件,工具,文档,原理图,PCB,逻辑代码等都存在这个系统上。但是系统过于庞杂,其实比较难使用,跟服务器归档、SVN归档、也容易搞混淆。


有朋友感慨,说他感受到了“精细化流程管理,让每个人都是螺丝钉”;也有前同事感慨“团队开发是战无不胜的;也有朋友说“信息安全啊”。

归一化


华为“老司机”亲身经历告诉你,华为硬件究竟是如何开发?_第4张图片


器件归一化


硬件工程师一般都能够理解,在一个板子上面的,尽可能的选择成本更低的器件,选择更少种类的器件,便于集中采购,同时也便于加工。但是其他公司可能没有对器件归一化的工作做得那么细致和严格。 


第一, 由于华为整个公司使用的器件种类非常的多,所以如果减小一个器件编码,带来的收益是十万人民币到几百万,而其他公司可能达不到这个高的收益。所以如果能减少一个编码,宁愿选择可能成本更高的器件。但是这个也需要按照每年的器件直接成本收益*器件发货数量,与编码成本+加工成本差异,进行对比的。


不过器件归一化之后,器件的价格又可以跟供应商重新谈价格,这个收益是迭代的。所以,有时即使是成本占优,也会倾向去器件归一化的结论。例如,逐步去除了5%精度的电阻,归一化到1%。 


第二, 器件归一化,都是需要进行专题分析的。因为也有工程师为了归一化,对电路原理没有充分分析,导致的归一化带来“问题引入”。


所以,当时我的部门当时有一个表格,“器件归一化分析.xls”的excel表格,把每个器件,原来选型,归一化的选型,更改的原因,都做好记录和原因分析。一是让每个做归一化的员工都充分考虑分析,二是问题都有记录,便于评审,三是出了问题,好打板子。  


单板归一化


除了器件归一化,更高一个层次的归一化,就是单板归一化。(单板这个概念,我稍微澄清一下,我刚到华为的时候,也觉得这个词很奇怪。因为通信设备,都是机框,背板,加各个功能模块的电路板,各个功能模块的电路就叫做“单板”,硬件工程师,一般也叫做“单板硬件”) 


单板归一化带来的好处,首先是电路的种类少,电路的种类少的好处有两个:一是生产成本降低,二是硬件维护成本降低,三是软件开发和维护的成本降低。


第一、单板归一化的先决条件首先是处理器归一化。其实,华为的有的产品这点做得其实不好,X86、MIPS、ARM、PPC全部都用个遍,所以一个硬件平台,需要配备各种软件人员,操作系统搞N套,VxWorks和Linux,BIOS各种配套。

  

第二、单板的归一化,要注意产品的衍生。第一个版本的机框上的单板所实现的功能,如果后续的产品可以使用,应该直接可以用,不需要再开发。如果不注意这点,第一个版本的单板,到第二版本时,发现不能相互借用。反过来,再修改第一个版本的电路板,来适应新版本。有时问题更糟糕,就是完全不能兼容,只好重新开发。单板的规划显得非常重要。

  

第三、单板归一化时,虽然电路部分兼容了,但是结构件不兼容。对于市场人员的配置来说,仍然是两种配置。一样是失败的。


平台归一化


那么如果发现不同的硬件平台的架构雷同,功能类似。那么机框也可以归一化。只需要制作不同的电路功能模块,就可以实现不同的功能需求。

  

但是不同的硬件形态都是有他存在的意义的,如果强行归一,市场未必会接受这种事情的发生。例如用一个运营商的平台去归一一个企业应用或者家庭应用的产品,可能就未必能够成功。


网络架构归一化


这个说法是我自己想的,早在08年的时候,华为就在讨论“云管端战略”了,当时不是很理解。当我们一个运营商平台部门,跟“服务器”的部门合并的时候,似乎理解了点什么。


当X86处理器足够强大的时候,所有的运算,不管是否性价比最高,都送到云端进行处理,那么所有中间的存储和计算都显得不重要了。那么整个网络的结构,就是终端+管道+云存储和云计算。

  

既然计算和存储设备都是一样的,那作为运算和存储的设备,也就不需要那么多样化了。这时网络存储设备,和服务器就显得尤为重要。

  

这也是华为成立IT产品线,做重点战略投资的重要原因。所以现在也就不需要那么多网络节点和网络平台了,只需要超强的处理和存储能力和宽广的通道,多样的终端。

 

专题分析


“专题分析”是设计硬件最核心的工作,而不是画原理图。因为今天是周末,写点轻松点的,先说个故事,传说哈,大家当笑话听。

  

早期,我大中华自研的潜艇,都是海蓝色的,跟军舰一样颜色“蓝灰色”。后来我大海军去参观前苏联的军事演习,发现俄国人的潜艇不是蓝色的,是黑色的。于是 回来大讨论,为啥俄国人的潜艇是黑色的。


猜想:一定是黑色在夜里面不容易被发现,所以油漆成黑色的。于是全国油漆大运动。后来才知道,原来俄国人的黑色不 是油漆,是黑色的橡胶,消声瓦。于是我们也贴橡胶,可是我们贴了橡胶之后就潜艇跑不动了,因为我们的潜艇的动力不如别人。(以上故事纯属虚构,如有雷同, 请把发生时间改为清朝。)

  

为啥在这里说这个照葫芦画瓢失败的故事呢。我觉得很多硬件工程师有个误区,觉得自己的核心竞争力是在于会使用几个软件(cadence、Protel), 画画原理图,画画PCB。我早期的一份工作就这样,最大的本事就是照葫芦画瓢,抄Demo板,抄以前成熟的电路,如果碰到了新的电路设计,一般是按照参考 电路先画出电路,再通过调试,去尝试,碰到问题,再去解决问题。 


那么我现在的观念是,硬件工程师最值钱的地方是在于懂硬件原理,懂得电路分析,模电数电原理,电磁场理论,而不是会使用画图软件。

  

那么华为是怎样做电路设计的呢?为什么会有专题分析的说法呢?为什么电路设计的时候要做专题分析?

 

第一、 例行的,每个电路一般都会做几个必选的专题:电源、时钟、小系统;把每个管脚怎么用,怎么接,对接的管脚的电平是否满足要求,都需要文档化,分析清楚。在选用新器件的话,对应硬件工程师的工作量还是比较大的。但是如果是其他公司,直接按照推荐电路设计就完事了。


电源专题,需要分析电源需求,每种电源的电压范围,电流需求,动态响应,上电时序;时钟专题,针对每个时钟的输入的电平标准,频率,抖动等参数,时钟时序,并按照各种时钟解决方案进行优化;

  

第二、 当电路设计过程中,碰到一些新的问题,之前团队中没有接触过的问题,或者认为是重点,难点的内容,会专门做这个问题点的专题分析:例如我们做过的一些双 BIOS启动,摄像头的红外LED的驱动,主备倒换啊,之类的,就会把一个问题点分析透,然后再动手做画原理图。

  

第三、 那么在开发硬件的时候,Demo只是作为参考,每一个依据都是来自于datasheet,除了看芯片的数据手册之外,还要仔细查看数据手册的勘误表 errata,核对datasheet与Demo的差一点,如果器件有checklist还得核对checklist。


曾经开发AMD的时候,datasheet、Demo、checklist,三个文档对不上的情况。也出现过,一个比较难复现的问题,后来查看了Errata,发现是厂家芯 片升级了,修正了bug,而我们还在采购老版本的芯片。


第四、 由于项目本身有交付时间要求,那么在有限时间内其实不可能做到每个问题点都做得深入透彻。


那么问题来了:是怎么做到的呢?首先,每个项目都有《问题跟踪表》,而硬件团队由于事情非常的杂,所以把这个表要用的非常好,不然丢东拉西很正常。我曾经把这个表应用到家里装修。


这个表的原理很简单,就是记录,问题内容,责任人,完成状态,完成时间。但是只要你坚持用,你会发现,你问题不会跟踪丢,做事情会比较有条理, 而且会有成就感。用了这个表以后,发现问题之后,先记录下来,即使现在不解决,那么也会识别他要不要解决,什么时候解决。


其次、问题分优先级,任何项目都 是带着风险前进的,那么识别出高风险的问题,优先解决高风险的问题,带着低风险的问题继续走。这也是华为电路设计中“0欧姆”电阻用的比较多的有一个原因,识别出风险之后,但是又分析不清楚,或者来不及分析,只好做兼容设计。这里不得不感慨一句,在你的设计过程中,你马虎对待,没有分析清楚的问题,最后一定会暴露出来。

  

所以,在“菊花厂”做硬件工程师,“专题分析”是设计硬件最核心的工作,而不是画原理图。通过这个方法,用1~2个月做电路分析,而用1~2周时间画原理图,取代了,画图,调试,改版,再调试,在改版的形式。多快好省,是不可能同时实现的,那么硬件工程师有责任做很好的折衷和权衡。(转自电子发烧友)

640?

1.2018年第2期《单片机与嵌入式系统应用》电子刊新鲜出炉!

2.硬件高深莫测?这些基础知识要掌握

3.从三大焦虑看电动汽车发展的艰难历程!

4.中国工程师技术寿命短的原因:“大龄工程师”等同于行业失败者?

5.嵌入式产业度过芯片企业调整期后,2018年将蓬勃发展!

6.与 C 语言长别离

华为“老司机”亲身经历告诉你,华为硬件究竟是如何开发?_第5张图片

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。

你可能感兴趣的:(华为“老司机”亲身经历告诉你,华为硬件究竟是如何开发?)