華為“老司機(jī)”這樣說(shuō)華為硬件開(kāi)發(fā),解密到底哪里不一樣
在國(guó)內(nèi)提到硬件開(kāi)發(fā),華為無(wú)疑是最優(yōu)秀的公司。所以,硬件創(chuàng)業(yè)者從華為出來(lái)的也非常多。這篇文章非常詳細(xì)的介紹了華為硬件開(kāi)發(fā)的流程,非常值得其他硬件開(kāi)發(fā)者借鑒。
本文引用地址:http://m.butianyuan.cn/article/201802/375520.htm很多朋友咨詢一些硬件問(wèn)題,發(fā)現(xiàn)朋友們沒(méi)有仔細(xì)的看datasheet,也沒(méi)有好好的做電路分析。我講一講華為是怎么做硬件開(kāi)發(fā)的,給正在做硬件開(kāi)發(fā)的朋友一些啟示。說(shuō)的不對(duì)的地方,大家批評(píng)指正。
曾經(jīng)2007年,剛工作2年的時(shí)候去一家小公司去面試。當(dāng)時(shí)考題,我感覺(jué)我做得很好,面試的時(shí)候,對(duì)方對(duì)我也很認(rèn)可。但是他當(dāng)時(shí)說(shuō):“我需要招一個(gè),在大公司待過(guò)的,最好知道硬件開(kāi)發(fā)流程和規(guī)范的。雖然你題答得不錯(cuò),但是我們需要一個(gè)有豐富經(jīng)驗(yàn)的,最好在華為待過(guò)的?!?/p>
當(dāng)時(shí),我就在想“華為的規(guī)范和流程是啥樣的”,就一直想去看看。之前對(duì)華為的面試一直都不是很感興趣。之后,就很想有機(jī)會(huì)去華為看看。2008到了華為。
我能想到的華為硬件開(kāi)發(fā)的幾個(gè)不一樣的點(diǎn),跟大家分享一下,想到哪寫(xiě)到哪,歡迎大家批評(píng)指正。
1、 文檔,評(píng)審,設(shè)計(jì)。
2、 華為的硬件領(lǐng)域的人員構(gòu)成:
3、 華為的流程
4、歸一化
5、專(zhuān)題分析
6、器件選型
7、白板講解
8、問(wèn)題攻關(guān)
1、文檔,評(píng)審,設(shè)計(jì)。
當(dāng)時(shí)剛?cè)肼殨r(shí),三個(gè)人做一個(gè)電路板。雖然電路復(fù)雜一些,還是有一些人力過(guò)剩的。所以,我就被安排去寫(xiě)一個(gè)PCI轉(zhuǎn)UART的邏輯。
我當(dāng)時(shí)是新員工,也急于表現(xiàn)自己,利用周末的時(shí)間,估計(jì)用了一周的時(shí)間,就寫(xiě)完代碼,開(kāi)始仿真了。我以為我的導(dǎo)師兼主管會(huì)表?yè)P(yáng)一下,結(jié)果沒(méi)有,他說(shuō):“你 為什么沒(méi)有召集大家討論?然后再寫(xiě)方案,評(píng)審?然后再動(dòng)手寫(xiě)代碼?”我當(dāng)時(shí)是沒(méi)有理解的,覺(jué)得我一個(gè)人就搞定的事情,為啥要這樣勞師動(dòng)眾?
現(xiàn)在反思:
第一、 從主管的角度,不知道新員工的個(gè)人能力,你能把做的事情講清楚了,他才放心。
第二、 從公司的角度,有一套流程來(lái)保證項(xiàng)目的交付。那么則不再太依賴(lài)某個(gè)人的個(gè)人能力,任何一個(gè)人的離職,都不會(huì)影響項(xiàng)目的交付。這也是華為最了不起的地方,把 復(fù)雜的項(xiàng)目拆得非常細(xì)碎,這樣不需要特別牛的人來(lái)交付項(xiàng)目。這是為什么華為的工程師的收入是思科的N分之一。
第三、 從效果角度,畢竟一個(gè)人的想法是有限的,把想法文檔化的過(guò)程,就是整理思路的過(guò)程;討論的過(guò)程,就是收集你自己沒(méi)有想到的過(guò)程。正式的評(píng)審,是大家達(dá)成意見(jiàn)的過(guò)程。提前討論,讓相關(guān)的人都參與到你的設(shè)計(jì)中,總比你設(shè)計(jì)完了,被別人指出一個(gè)致命的問(wèn)題要強(qiáng)得多。
就是因?yàn)槿A為把一項(xiàng)工作拆散了,所以溝通,文檔,評(píng)審,討論,變得非常重要。
這個(gè)工作模式的缺點(diǎn),也是顯而易見(jiàn),溝通成本高,工作效率低。
2、華為的硬件領(lǐng)域的人員構(gòu)成:
在華為內(nèi)部里面,人員角色非常多。硬件的人是對(duì)產(chǎn)品開(kāi)發(fā)階段,端到端負(fù)責(zé)的。
做單板硬件工程師,可以涉獵最多的領(lǐng)域,同時(shí)也是工作內(nèi)容最雜,接觸人最多,扯皮的最多的工種。
華為的硬件領(lǐng)域的人員構(gòu)成
但是也因?yàn)橛腥藢?zhuān)門(mén)負(fù)責(zé)畫(huà)PCB、EMC、電源、邏輯,原本硬件工程師應(yīng)該做的領(lǐng)域。那么硬件工程師就武功盡廢,變成“連連線”。
其實(shí)不然,正是由于每個(gè)人都是一個(gè)小的領(lǐng)域,沒(méi)有人統(tǒng)領(lǐng),所以一個(gè)好的硬件經(jīng)理的作用非常的重要,是貫穿所有領(lǐng)域和全部流程的關(guān)鍵角色。
正如原來(lái)華為內(nèi)部論壇上有一個(gè)人比喻的,硬件工程師更像是處理器里面的“Cache”,是所有環(huán)節(jié)的中轉(zhuǎn)站。
大公司把人的分工分的這么細(xì),也是防止某一撥掌握了太多公司的核心技術(shù),出去單搞了。
3、華為的流程
其實(shí)華為的流程,很多人都知道IPD流程是從IBM來(lái)的,同時(shí)華為也去咨詢過(guò)愛(ài)立信,愛(ài)立信的硬件開(kāi)發(fā),完全沒(méi)有流程一說(shuō)。
我個(gè)人理解:IPD流程已經(jīng)在華為變種,結(jié)合了中國(guó)人的特點(diǎn),華為的企業(yè)特點(diǎn)進(jìn)行了變通和優(yōu)化。如果華為僵硬的套用IBM的這套流程,也必定不會(huì)這么成功。
那么概括一下華為的硬件開(kāi)發(fā)流程:
需求分析→總體設(shè)計(jì)→專(zhuān)題分析→詳細(xì)設(shè)計(jì)→邏輯詳設(shè)→原理圖→PCB→檢視→粘合邏輯→投板→生產(chǎn)試制→回板調(diào)試→單元測(cè)試→專(zhuān)業(yè)實(shí)驗(yàn)→系統(tǒng)聯(lián)調(diào)→小批量試制→硬件穩(wěn)定→維護(hù)。
流程的根本在于,這個(gè)環(huán)節(jié)做好了,再進(jìn)入下一個(gè)環(huán)節(jié)。所有的環(huán)節(jié)其實(shí)跟其他公司并沒(méi)有太大的區(qū)別,只不過(guò)嚴(yán)格把握了進(jìn)入下一個(gè)環(huán)節(jié)的考核條件。令硬件工程師最糾結(jié)的是“沒(méi)有個(gè)節(jié)點(diǎn)跟’投板’對(duì)應(yīng)”。
華為支撐IPD流程的系統(tǒng)是PDM(又名爬的慢)
PDM的中文名稱(chēng)為產(chǎn)品數(shù)據(jù)管理(Product DataManagement)。PDM是一門(mén)用來(lái)管理所有與產(chǎn)品相關(guān)信息(包括零件信息、配置、文檔、CAD文件、結(jié)構(gòu)、權(quán)限信息等)和所有與產(chǎn)品相關(guān)過(guò)程(包括過(guò)程定義和管理)的技術(shù)。
華為所有的器件資料,產(chǎn)品部件,工具,文檔,原理圖,PCB,邏輯代碼等都存在這個(gè)系統(tǒng)上。
但是系統(tǒng)過(guò)于龐雜,其實(shí)比較難使用,跟服務(wù)器歸檔、SVN歸檔、也容易搞混淆。
有朋友感慨,說(shuō)他感受到了“精細(xì)化流程管理,讓每個(gè)人都是螺絲釘”;也有前同事感慨“團(tuán)隊(duì)開(kāi)發(fā)是戰(zhàn)無(wú)不勝的”;也有朋友說(shuō)“信息安全啊”。哈哈哈。
我現(xiàn)在也不是華為員工了,其中也不涉及華為的文檔,更多是個(gè)人的感悟,沒(méi)有透露華為的什么機(jī)密;就算是機(jī)密也是我腦子里面的內(nèi)容;何況這些內(nèi)容,也沒(méi)啥好機(jī)密的; 我只是想幫助到更多工作在硬件崗位的朋友,也想大家看了能在公眾賬號(hào)給我一些反饋,大家探討一下。
4、歸一化
器件歸一化
硬件工程師一般都能夠理解,在一個(gè)板子上面的,盡可能的選擇成本更低的器件,選擇更少種類(lèi)的器件,便于集中采購(gòu),同時(shí)也便于加工。但是其他公司可能沒(méi)有對(duì)器件歸一化的工作做得那么細(xì)致和嚴(yán)格。
第一, 由于華為整個(gè)公司使用的器件種類(lèi)非常的多,所以如果減小一個(gè)器件編碼,帶來(lái)的收益是十萬(wàn)人民幣到幾百萬(wàn),而其他公司可能達(dá)不到這個(gè)高的收益。所以如果能減 少一個(gè)編碼,寧愿選擇可能成本更高的器件。但是這個(gè)也需要按照每年的器件直接成本收益*器件發(fā)貨數(shù)量,與編碼成本+加工成本差異,進(jìn)行對(duì)比的。不過(guò)器件歸 一化之后,器件的價(jià)格又可以跟供應(yīng)商重新談價(jià)格,這個(gè)收益是迭代的。所以,有時(shí)即使是成本占優(yōu),也會(huì)傾向去器件歸一化的結(jié)論。例如,逐步去除了5%精度的 電阻,歸一化到1%。
第二, 器件歸一化,都是需要進(jìn)行專(zhuān)題分析的。因?yàn)橐灿泄こ處煘榱藲w一化,對(duì)電路原理沒(méi)有充分分析,導(dǎo)致的歸一化帶來(lái)“問(wèn)題引入”。所以,當(dāng)時(shí)我的部門(mén)當(dāng)時(shí)有一個(gè) 表格,“器件歸一化分析.xls”的excel表格,把每個(gè)器件,原來(lái)選型,歸一化的選型,更改的原因,都做好記錄和原因分析。一是讓每個(gè)做歸一化的員工 都充分考慮分析,二是問(wèn)題都有記錄,便于評(píng)審,三是出了問(wèn)題,好打板子。
單板歸一化
除了器件歸一化,更高一個(gè)層次的歸一化,就是單板歸一化。(單板這個(gè)概念,我稍微澄清一下,我剛到華為的時(shí)候,也覺(jué)得這個(gè)詞很奇怪。因?yàn)橥ㄐ旁O(shè)備,都是機(jī)框,背板,加各個(gè)功能模塊的電路板,各個(gè)功能模塊的電路就叫做“單板”,硬件工程師,一般也叫做“單板硬件”)
單板歸一化帶來(lái)的好處,首先是電路的種類(lèi)少,電路的種類(lèi)少的好處有兩個(gè):一是生產(chǎn)成本降低,二是硬件維護(hù)成本降低,三是軟件開(kāi)發(fā)和維護(hù)的成本降低。
第一、單板歸一化的先決條件首先是處理器歸一化。其實(shí),華為的有的產(chǎn)品這點(diǎn)做得其實(shí)不好,X86、MIPS、ARM、PPC全部都用個(gè)遍,所以一個(gè)硬件平臺(tái),需要配備各種軟件人員,操作系統(tǒng)搞N套,VxWorks和Linux,BIOS各種配套。
第二、單板的歸一化,要注意產(chǎn)品的衍生。第一個(gè)版本的機(jī)框上的單板所實(shí)現(xiàn)的功能,如果后續(xù)的產(chǎn)品可以使用,應(yīng)該直接可以用,不需要再開(kāi)發(fā)。如果不注意這 點(diǎn),第一個(gè)版本的單板,到第二版本時(shí),發(fā)現(xiàn)不能相互借用。反過(guò)來(lái),再修改第一個(gè)版本的電路板,來(lái)適應(yīng)新版本。有時(shí)問(wèn)題更糟糕,就是完全不能兼容,只好重新 開(kāi)發(fā)。單板的規(guī)劃顯得非常重要。
第三、單板歸一化時(shí),雖然電路部分兼容了,但是結(jié)構(gòu)件不兼容。對(duì)于市場(chǎng)人員的配置來(lái)說(shuō),仍然是兩種配置。一樣是失敗的。
平臺(tái)歸一化
那么如果發(fā)現(xiàn)不同的硬件平臺(tái)的架構(gòu)雷同,功能類(lèi)似。那么機(jī)框也可以歸一化。只需要制作不同的電路功能模塊,就可以實(shí)現(xiàn)不同的功能需求。
但是不同的硬件形態(tài)都是有他存在的意義的,如果強(qiáng)行歸一,市場(chǎng)未必會(huì)接受這種事情的發(fā)生。例如用一個(gè)運(yùn)營(yíng)商的平臺(tái)去歸一一個(gè)企業(yè)應(yīng)用或者家庭應(yīng)用的產(chǎn)品,可能就未必能夠成功。
網(wǎng)絡(luò)架構(gòu)歸一化
這個(gè)說(shuō)法是我自己想的,早在08年的時(shí)候,華為就在討論“云管端戰(zhàn)略”了,當(dāng)時(shí)不是很理解。當(dāng)我們一個(gè)運(yùn)營(yíng)商平臺(tái)部門(mén),跟“服務(wù)器”的部門(mén)合并的時(shí)候,似乎理解了點(diǎn)什么。
當(dāng)X86處理器足夠強(qiáng)大的時(shí)候,所有的運(yùn)算,不管是否性價(jià)比最高,都送到云端進(jìn)行處理,那么所有中間的存儲(chǔ)和計(jì)算都顯得不重要了。那么整個(gè)網(wǎng)絡(luò)的結(jié)構(gòu),就是終端+管道+云存儲(chǔ)和云計(jì)算
網(wǎng)絡(luò)架構(gòu)歸一化
既然計(jì)算和存儲(chǔ)設(shè)備都是一樣的,那作為運(yùn)算和存儲(chǔ)的設(shè)備,也就不需要那么多樣化了。這時(shí)網(wǎng)絡(luò)存儲(chǔ)設(shè)備,和服務(wù)器就顯得尤為重要。
這也是華為成立IT產(chǎn)品線,做重點(diǎn)戰(zhàn)略投資的重要原因。
所以現(xiàn)在也就不需要那么多網(wǎng)絡(luò)節(jié)點(diǎn)和網(wǎng)絡(luò)平臺(tái)了,只需要超強(qiáng)的處理和存儲(chǔ)能力和寬廣的通道,多樣的終端。
5,“專(zhuān)題分析”是設(shè)計(jì)硬件最核心的工作,而不是畫(huà)原理圖
因?yàn)榻裉焓侵苣瑢?xiě)點(diǎn)輕松點(diǎn)的。
先說(shuō)個(gè)故事,傳說(shuō)哈,大家當(dāng)笑話聽(tīng)。
早期,我大中華自研的潛艇,都是海藍(lán)色的,跟軍艦一樣顏色“藍(lán)灰色”。后來(lái)我大海軍去參觀前蘇聯(lián)的軍事演習(xí),發(fā)現(xiàn)俄國(guó)人的潛艇不是藍(lán)色的,是黑色的。于是 回來(lái)大討論,為啥俄國(guó)人的潛艇是黑色的。猜想:一定是黑色在夜里面不容易被發(fā)現(xiàn),所以油漆成黑色的。于是全國(guó)油漆大運(yùn)動(dòng)。后來(lái)才知道,原來(lái)俄國(guó)人的黑色不 是油漆,是黑色的橡膠,消聲瓦。于是我們也貼橡膠,可是我們貼了橡膠之后就潛艇跑不動(dòng)了,因?yàn)槲覀兊臐撏У膭?dòng)力不如別人。(以上故事純屬虛構(gòu),如有雷同, 請(qǐng)把發(fā)生時(shí)間改為清朝。)
為啥在這里說(shuō)這個(gè)照葫蘆畫(huà)瓢失敗的故事呢。我覺(jué)得很多硬件工程師有個(gè)誤區(qū),覺(jué)得自己的核心競(jìng)爭(zhēng)力是在于會(huì)使用幾個(gè)軟件(cadence、Protel), 畫(huà)畫(huà)原理圖,畫(huà)畫(huà)PCB。我早期的一份工作就這樣,最大的本事就是照葫蘆畫(huà)瓢,抄Demo板,抄以前成熟的電路,如果碰到了新的電路設(shè)計(jì),一般是按照參考 電路先畫(huà)出電路,再通過(guò)調(diào)試,去嘗試,碰到問(wèn)題,再去解決問(wèn)題。
硬件工程師工作流程
那么我現(xiàn)在的觀念是,硬件工程師最值錢(qián)的地方是在于懂硬件原理,懂得電路分析,模電數(shù)電原理,電磁場(chǎng)理論,而不是會(huì)使用畫(huà)圖軟件。
那么華為是怎樣做電路設(shè)計(jì)的呢?為什么會(huì)有專(zhuān)題分析的說(shuō)法呢?為什么電路設(shè)計(jì)的時(shí)候要做專(zhuān)題分析?
第一、 例行的,每個(gè)電路一般都會(huì)做幾個(gè)必選的專(zhuān)題:電源、時(shí)鐘、小系統(tǒng);把每個(gè)管腳怎么用,怎么接,對(duì)接的管腳的電平是否滿足要求,都需要文檔化,分析清楚。在 選用新器件的話,對(duì)應(yīng)硬件工程師的工作量還是比較大的。但是如果是其他公司,直接按照推薦電路設(shè)計(jì)就完事了。電源專(zhuān)題,需要分析電源需求,每種電源的電壓 范圍,電流需求,動(dòng)態(tài)響應(yīng),上電時(shí)序;時(shí)鐘專(zhuān)題,針對(duì)每個(gè)時(shí)鐘的輸入的電平標(biāo)準(zhǔn),頻率,抖動(dòng)等參數(shù),時(shí)鐘時(shí)序,并按照各種時(shí)鐘解決方案進(jìn)行優(yōu)化;
第二、 當(dāng)電路設(shè)計(jì)過(guò)程中,碰到一些新的問(wèn)題,之前團(tuán)隊(duì)中沒(méi)有接觸過(guò)的問(wèn)題,或者認(rèn)為是重點(diǎn),難點(diǎn)的內(nèi)容,會(huì)專(zhuān)門(mén)做這個(gè)問(wèn)題點(diǎn)的專(zhuān)題分析:例如我們做過(guò)的一些雙 BIOS啟動(dòng),攝像頭的紅外LED的驅(qū)動(dòng),主備倒換啊,之類(lèi)的,就會(huì)把一個(gè)問(wèn)題點(diǎn)分析透,然后再動(dòng)手做畫(huà)原理圖。
第三、 那么在開(kāi)發(fā)硬件的時(shí)候,Demo只是作為參考,每一個(gè)依據(jù)都是來(lái)自于datasheet,除了看芯片的數(shù)據(jù)手冊(cè)之外,還要仔細(xì)查看數(shù)據(jù)手冊(cè)的勘誤表 errata,核對(duì)datasheet與Demo的差一點(diǎn),如果器件有checklist還得核對(duì)checklist。曾經(jīng)開(kāi)發(fā)AMD的時(shí) 候,datasheet、Demo、checklist,三個(gè)文檔對(duì)不上的情況。也出現(xiàn)過(guò),一個(gè)比較難復(fù)現(xiàn)的問(wèn)題,后來(lái)查看了Errata,發(fā)現(xiàn)是廠家芯 片升級(jí)了,修正了bug,而我們還在采購(gòu)老版本的芯片。
第四、 由于項(xiàng)目本身有交付時(shí)間要求,那么在有限時(shí)間內(nèi)其實(shí)不可能做到每個(gè)問(wèn)題點(diǎn)都做得深入透徹。那么問(wèn)題來(lái)了:
是怎么做到的呢?首先,每個(gè)項(xiàng)目都有《問(wèn)題跟蹤表》,而硬件團(tuán)隊(duì)由于事情非常的雜,所以把這個(gè)表要用的非常好,不然丟東拉西很正常。我曾經(jīng)把這個(gè)表應(yīng)用到 家里裝修。這個(gè)表的原理很簡(jiǎn)單,就是記錄,問(wèn)題內(nèi)容,責(zé)任人,完成狀態(tài),完成時(shí)間。但是只要你堅(jiān)持用,你會(huì)發(fā)現(xiàn),你問(wèn)題不會(huì)跟蹤丟,做事情會(huì)比較有條理, 而且會(huì)有成就感。用了這個(gè)表以后,發(fā)現(xiàn)問(wèn)題之后,先記錄下來(lái),即使現(xiàn)在不解決,那么也會(huì)識(shí)別他要不要解決,什么時(shí)候解決。其次、問(wèn)題分優(yōu)先級(jí),任何項(xiàng)目都 是帶著風(fēng)險(xiǎn)前進(jìn)的,那么識(shí)別出高風(fēng)險(xiǎn)的問(wèn)題,優(yōu)先解決高風(fēng)險(xiǎn)的問(wèn)題,帶著低風(fēng)險(xiǎn)的問(wèn)題繼續(xù)走。這也是華為電路設(shè)計(jì)中“0歐姆”電阻用的比較多的有一個(gè)原 因,識(shí)別出風(fēng)險(xiǎn)之后,但是又分析不清楚,或者來(lái)不及分析,只好做兼容設(shè)計(jì)。這里不得不感慨一句,在你的設(shè)計(jì)過(guò)程中,你馬虎對(duì)待,沒(méi)有分析清楚的問(wèn)題,最后 一定會(huì)暴露出來(lái)。
所以,在“菊花廠”做硬件工程師,“專(zhuān)題分析”是設(shè)計(jì)硬件最核心的工作,而不是畫(huà)原理圖。
通過(guò)這個(gè)方法,用1~2個(gè)月做電路分析,而用1~2周時(shí)間畫(huà)原理圖,取代了,畫(huà)圖,調(diào)試,改版,再調(diào)試,在改版的形式。
多快好省,是不可能同時(shí)實(shí)現(xiàn)的,那么硬件工程師有責(zé)任做很好的折衷和權(quán)衡。
評(píng)論