FPGAer升職記!12年工程師從公司、成長(zhǎng)、能力、面試剖析,想入行的必看!
本文已獲取「知乎」作者授權(quán),請(qǐng)勿二次轉(zhuǎn)載,請(qǐng)獲取作者授權(quán)。
聲明:本公眾號(hào)授權(quán)轉(zhuǎn)載本文僅傳播相關(guān)知識(shí),無(wú)任何盈利和商業(yè)行為,部分內(nèi)容有刪改。
原文地址:https://zhuanlan.zhihu.com/p/137481604
作者:王yifei
▍導(dǎo)言
▍關(guān)于行業(yè)和公司規(guī)模
關(guān)于行業(yè)
面試了幾個(gè)月,收到了幾百份簡(jiǎn)歷,面試的人也有好幾十。回想一下,投簡(jiǎn)歷的大概有以下幾類(lèi):
1、完全不懂邏輯的,比如,有網(wǎng)吧的網(wǎng)管,也投簡(jiǎn)歷做邏輯驗(yàn)證工程師
第3類(lèi), 做視頻和安防的,面試過(guò)幾個(gè),一般這種公司,邏輯的人員規(guī)模都比較小,經(jīng)常有人做個(gè)2-3年,就做到邏輯組長(zhǎng)了,但是他們一般水平都不高,基本的時(shí)序約束都不做,仿真也不做,一般邏輯規(guī)模都比較小,直接上板用signaltap調(diào)試,對(duì)整個(gè)邏輯研發(fā)的流程也不熟悉。
第4類(lèi), asic工程師,這類(lèi)工程師,一般代碼水平和仿真水平都還可以,整個(gè)設(shè)計(jì)流程也比較嚴(yán)謹(jǐn),但是純粹的asic工程師,如果沒(méi)做過(guò)fpga,并不適合我們公司,對(duì)fpga內(nèi)部器件不了解,對(duì)時(shí)序約束的經(jīng)驗(yàn)也不多,而且asic的工期很長(zhǎng),幾年下來(lái),做不了幾個(gè)項(xiàng)目。一般純粹做asic的,都難以通過(guò)第一面,有一部分做過(guò)asic的fpga驗(yàn)證的,或者中途轉(zhuǎn)行,既做過(guò)asic,也做過(guò)fpga的,水平還可以,其中有幾個(gè)進(jìn)入了二面。總體而言,asic工程師并不太適合轉(zhuǎn)作fpga。
第5類(lèi), 通信行業(yè)的小公司,也面試過(guò)一些。一般通信行業(yè)的小公司,里面都有一些人,之前是在華為、中興做過(guò)的,整個(gè)公司的邏輯水平,還比較好,因此,這一類(lèi)的求職者,水平也還可以,不過(guò)主要是看個(gè)人,有一些知識(shí)較全面,也有一些懂得并不多
第6類(lèi), 這一類(lèi),一般就是華為、中興,最近這兩家公司離職的人也較多,面試的有一半以上,都有華為、中興的工作經(jīng)歷。這一類(lèi),一般工作年限3年以上的,水平都比較好,知識(shí)面比較全,整個(gè)流程也比較清楚,而且流程和文檔做的比我們公司要好。但是缺點(diǎn)就是很多人做的比較窄,基本上只做一個(gè)點(diǎn),雖然知識(shí)面還好,基本都懂一些,但是很多方向都沒(méi)有自己動(dòng)手,有一些部門(mén),寫(xiě)代碼一撥人,編譯工程一撥人,仿真驗(yàn)證一撥人,查bug又一撥人,導(dǎo)致對(duì)整個(gè)全局把握較少,另外,這些人原本待遇就比較高,尤其是華為,很多人比我工資都高好多。
第7類(lèi), 超聲行業(yè),這一類(lèi)是比較對(duì)口的,但是人很少,只面過(guò)幾個(gè),對(duì)超聲有一些了解,但是邏輯水平確實(shí)比M公司要差一些。
關(guān)于公司規(guī)模
好多人在一開(kāi)始找工作的時(shí)候,往往面臨一個(gè)選擇, 是去一個(gè)大公司,還是去一個(gè)小公司。 大公司比較正規(guī),可以學(xué)到很多知識(shí),小公司機(jī)會(huì)比較多,說(shuō)不定過(guò)幾年就成領(lǐng)導(dǎo)了。
以上兩種說(shuō)法都有道理,但是都不全面。
1、大公司
大公司比較正規(guī),流程等也比較正式、全面,技術(shù)積累也比較好, 確實(shí)可以學(xué)到很多,而且都是正規(guī)套路,比如華為,有非常正式的流程,從方案到設(shè)計(jì)文檔,每個(gè)時(shí)間段都有嚴(yán)格規(guī)定,等到寫(xiě)代碼的時(shí)候,基本已經(jīng)成竹在胸了。比如中興,新人做一個(gè)設(shè)計(jì),基本上都有非常全面的文檔來(lái)告訴你,怎么做,以前出過(guò)哪些問(wèn)題,基本上一個(gè)智商正常的人都可以順利完成。
但是大公司也有一些缺點(diǎn)。 首先,分工太細(xì),不僅僅是設(shè)計(jì)上,也在流程上。比如之前面的一個(gè)人,做了5年,一直在做接口,而且是同一個(gè)接口,這個(gè)地方可能已經(jīng)做的很好了,甚至可以說(shuō)水平在國(guó)內(nèi)都是比較高的了,但是知識(shí)面太窄,其他的不了解。還有一些人,只做代碼,連工程都不需要編譯,這樣,就對(duì)代碼的器件實(shí)現(xiàn)了解不多,實(shí)際工程經(jīng)驗(yàn)也很少。之前面試過(guò)一個(gè)中興的,主做信號(hào)處理,做了3年,基本上完全不知道fpga是啥,只懂信號(hào)處理的verilog代碼實(shí)現(xiàn),連邏輯基本單元由查找表和寄存器組成都不清楚。
另外,大公司一般項(xiàng)目進(jìn)度都比較嚴(yán)謹(jǐn),在多年的經(jīng)驗(yàn)積累中,項(xiàng)目進(jìn)度一般都定的比較準(zhǔn)確,這就意味著你必須每天都在做項(xiàng)目,跟進(jìn)度,很少能留出時(shí)間來(lái)自己學(xué)習(xí),更不用說(shuō)拿幾個(gè)星期出來(lái),改改邏輯架構(gòu),做些自己有興趣的事。不利于個(gè)人的提升。
2、小公司
不過(guò),小公司的缺點(diǎn)也是很明顯的。 除非小公司有技術(shù)很牛的人,否則,一般都難以有很完善的流程,技術(shù)上也很難做到比較精深。很多小公司的,連仿真都不做的,而且只做時(shí)鐘頻率約束,管腳的輸出輸出時(shí)序約束都完全不做。所以,小公司出來(lái)的,一般都不那么正規(guī),而且水平也很難做高。
積累和培訓(xùn)做的不好?;旧希以贛公司被培訓(xùn)到的邏輯知識(shí)比較少,有過(guò)一些培訓(xùn),但是效果并不好,大部分都是在項(xiàng)目實(shí)踐當(dāng)中學(xué)到的。基本就沒(méi)有一個(gè)培訓(xùn)體系,全靠自己悟,自己?jiǎn)枴?/span>
但是M公司還是一個(gè)比較好的起點(diǎn)。首先,邏輯規(guī)模足夠大、足夠多樣、足夠復(fù)雜、更改足夠多。規(guī)模大,就會(huì)有機(jī)會(huì)使用比較大,比較高級(jí)的芯片,而且,規(guī)模大,對(duì)人的掌控能力也有很高的要求。足夠多樣,知識(shí)面就會(huì)比較廣,當(dāng)前的邏輯有各種接口,包括transceiver,pcie,spi,uart,i2c,ddr,lvds,ssram,ccir656,rgb等等各種接口。以及相應(yīng)的各種邏輯。既包括信號(hào)處理相關(guān),也包括各種復(fù)雜控制,還有視頻相關(guān)等。足夠復(fù)雜,對(duì)于提高邏輯水平有很大幫助,當(dāng)前有很多邏輯設(shè)計(jì)都是比較復(fù)雜的,比如數(shù)據(jù)緩存,pcie上傳,xx控制等。更改足夠多,就意味著有很多新東西可以做,而且需求的多樣性更改,才能催生一系列的設(shè)計(jì)思想。軟件就是因?yàn)橐幚砀鞣N復(fù)雜、多變的需求,才衍生出了各種思想,如面向?qū)ο?、設(shè)計(jì)模式等。
每個(gè)人負(fù)責(zé)的邏輯設(shè)計(jì),流程上可以走完整。包括老項(xiàng)目的維護(hù),在研項(xiàng)目的需求、方案、設(shè)計(jì)、仿真、調(diào)試、debug,以及新項(xiàng)目的預(yù)研,都可以全程參與,對(duì)邏輯的整個(gè)流程會(huì)有比較深刻的認(rèn)識(shí)。而且,不僅僅是寫(xiě)代碼,包括設(shè)計(jì)的編譯,調(diào)試,debug等工作,可以對(duì)負(fù)責(zé)的邏輯設(shè)計(jì),有更加深入的認(rèn)識(shí),對(duì)邏輯的可閱讀性、可復(fù)用性、可調(diào)試行等原則有所感觸。
得益于邏輯組一定的流動(dòng)性,可以將邏輯的各個(gè)模塊都做一遍,而不是只能一年一年的只能做同一個(gè)設(shè)計(jì)。我來(lái)公司幾年,做過(guò)的設(shè)計(jì)包括 視頻、電源管理、按鍵板、XX、XX管理、newC、pcie上傳、XX、數(shù)據(jù)緩存、信號(hào)處理、XX控制,基本上,超聲相關(guān)的邏輯,除了xx,其它的,或深或淺的都做過(guò),即使xx,我也曾自己花了2個(gè)星期的時(shí)間企圖重構(gòu)過(guò),對(duì)其設(shè)計(jì)也有一定的理解。這在大公司,是不可能的。
由于我們公司的超聲還沒(méi)到世界領(lǐng)先水平,以及系統(tǒng)組同事無(wú)窮無(wú)盡的新想法,每個(gè)邏輯設(shè)計(jì)的方案,都在不同的項(xiàng)目之中變來(lái)變?nèi)ィ也煌谕ㄐ蓬I(lǐng)域的固定處理方式,我們公司的邏輯基本上是沒(méi)有參考的,完全由做邏輯的人來(lái)確定,有非常大的發(fā)揮空間。
由于我們公司還比較低級(jí)的項(xiàng)目管理水平,項(xiàng)目進(jìn)度的安排并不怎么合理,有些項(xiàng)目中,是有時(shí)間可以做一些事情的,當(dāng)然,最近一兩年幾乎沒(méi)有了。但是前幾年,我曾經(jīng)有幾次,可以抽出幾個(gè)星期的時(shí)間,并行的做一些我感興趣的事情,比如邏輯重構(gòu)。
綜上所述,在職場(chǎng)的起點(diǎn),選擇一家好的公司,是非常重要的。
▍一個(gè)邏輯工程師的成長(zhǎng)之路
面試了很多人,有些水平高,有些水平低,有一些公司有嚴(yán)格的職級(jí),比如華為,完全可以根據(jù)其職級(jí)來(lái)得知其邏輯水平,而且華為的業(yè)務(wù)職級(jí)和技術(shù)職級(jí)還是分開(kāi)的。我們公司也有職級(jí),但是,不同的公司之間,或者說(shuō),邏輯工程師,沒(méi)有一個(gè)比較普遍、統(tǒng)一的標(biāo)準(zhǔn)來(lái)衡量其水平。
我一直比較困惑于這個(gè)問(wèn)題,原因來(lái)自于從小受到的教育和長(zhǎng)大后經(jīng)??吹男≌f(shuō)。小時(shí)候的學(xué)習(xí)成績(jī),是非常容易識(shí)別和量化的,分高分低,一比就知。成年以后,看過(guò)各種小說(shuō),武力高低,也是有非常明確的量化的,一個(gè)人完全可以非常清楚的知道,自己的級(jí)別。比如xxxx,用魂力來(lái)表征水平,從1-100,每10個(gè)級(jí)別為一個(gè)大的等級(jí),雖然這不能代表真正實(shí)力,但是至少讓讀者可以看到主角的逐步成長(zhǎng)。不過(guò),這也只是小說(shuō),現(xiàn)實(shí)生活中,是沒(méi)有這個(gè)東西的。
鑒于這些困惑,在本章,按照我自己的簡(jiǎn)單的經(jīng)歷和粗淺的認(rèn)識(shí),對(duì)邏輯工程師的水平做一下初步的劃分。
階段特點(diǎn):這個(gè)階段,基本上處于剛剛接觸到verilog代碼一段時(shí)間,知道大概的語(yǔ)法,能夠把一個(gè)需求用代碼實(shí)現(xiàn)出來(lái),并且能夠調(diào)試出來(lái)??傮w而言,處于一個(gè)能用的位置,可以實(shí)現(xiàn),但是并不清楚代碼與實(shí)際器件實(shí)現(xiàn)的關(guān)系,對(duì)邏輯的硬件思維基本沒(méi)有。
階段評(píng)價(jià):此時(shí),尚且不算一個(gè)邏輯工程師,因?yàn)橹粫?huì)寫(xiě)代碼,沒(méi)有邏輯思維
提高途徑:如果有審美,有需求,自己有內(nèi)部推動(dòng)力,將開(kāi)始進(jìn)入到第二階段(我有見(jiàn)過(guò)中興的3年的算法工程師,做了3年只懂算法實(shí)現(xiàn),完全沒(méi)有邏輯硬件思維,因此,時(shí)間長(zhǎng)短跟水平并沒(méi)有直接關(guān)系)
階段特點(diǎn):這個(gè)階段,開(kāi)始關(guān)注代碼風(fēng)格,開(kāi)始把自己的代碼寫(xiě)的風(fēng)格統(tǒng)一,并且開(kāi)始關(guān)注代碼的硬件實(shí)現(xiàn),突出標(biāo)志就是開(kāi)始關(guān)注rtl視圖,可能還不怎么關(guān)注器件視圖。但是基本知道器件的大概結(jié)構(gòu),知道fpga里面有l(wèi)e,ram,dsp,全局等等。比較能明確的區(qū)分可綜合語(yǔ)句與仿真語(yǔ)句的區(qū)別。
階段評(píng)價(jià):這個(gè)階段,基本可以稱(chēng)為是一個(gè)邏輯工程師了。能夠完成設(shè)計(jì)實(shí)現(xiàn),仿真,調(diào)試,能夠做出邏輯設(shè)計(jì)說(shuō)明。
提高途徑: 此時(shí),一般開(kāi)始負(fù)責(zé)一個(gè)模塊,如果該模塊在其他項(xiàng)目上復(fù)用,并且略有更改,有的人會(huì)直接修改,而有些人開(kāi)始有更多的考慮,由此進(jìn)入第三階段
階段特點(diǎn):這個(gè)階段,由于上一個(gè)階段已經(jīng)可以實(shí)現(xiàn)設(shè)計(jì),在這個(gè)階段,開(kāi)始考慮設(shè)計(jì)的復(fù)用,開(kāi)始考慮模塊的劃分,注重模塊接口,平臺(tái)化等等。
階段評(píng)價(jià): 這個(gè)階段,可以認(rèn)為是一個(gè)基本成熟的邏輯工程師了,邏輯所需要掌握的知識(shí)方向,基本都有所了解,而且,不僅能夠完成設(shè)計(jì),還能在設(shè)計(jì)之前做出方案,而且做出的設(shè)計(jì),模塊的劃分比較合理了。
提高途徑: 此時(shí),一般會(huì)開(kāi)始接手一些比較大的前人的設(shè)計(jì),有的人會(huì)盡量復(fù)用,有些人會(huì)有更多的考慮,由此進(jìn)入第四階段。
階段特點(diǎn):這個(gè)階段,會(huì)接手一些比較大的設(shè)計(jì),開(kāi)始有架構(gòu)的考慮,對(duì)于模塊的劃分,模塊接口,模塊職責(zé),整體方案的實(shí)現(xiàn),開(kāi)始有更多的考慮,此時(shí),可以做出比較好的,合理的方案,而且對(duì)邏輯的各個(gè)方向的知識(shí),都有了比較全面而深入的了解,比如仿真,器件結(jié)構(gòu),時(shí)序約束,模塊劃分等等
階段評(píng)價(jià):這個(gè)階段,可以認(rèn)為是一個(gè)比較優(yōu)秀的邏輯工程師了。能夠在項(xiàng)目之初給出比較好的邏輯方案,并且能夠快速而高效的完成設(shè)計(jì),仿真和驗(yàn)證。對(duì)應(yīng)可能發(fā)生的時(shí)序,等等問(wèn)題,也有比較好的考慮
提高途徑:此時(shí),如果有機(jī)會(huì)可以帶領(lǐng)一個(gè)團(tuán)隊(duì),會(huì)進(jìn)入一個(gè)不同的領(lǐng)域,能夠接觸到更多的東西,
階段特點(diǎn):這個(gè)階段,會(huì)負(fù)責(zé)一個(gè)團(tuán)隊(duì),或者一個(gè)項(xiàng)目的邏輯設(shè)計(jì)。開(kāi)始對(duì)整體的邏輯架構(gòu)有所考慮,并且開(kāi)始準(zhǔn)確的劃分邏輯架構(gòu),并分配不同的工作任務(wù),由于需要團(tuán)隊(duì)協(xié)作,因此要求對(duì)邏輯方案,邏輯進(jìn)度,邏輯技術(shù),有非常深刻的認(rèn)識(shí),
階段評(píng)價(jià): 可以給團(tuán)隊(duì)制定邏輯代碼規(guī)范,邏輯設(shè)計(jì)流程
提高途徑:由于本人仍在此階段掙扎,因此,尚不知如何提升。也許可以關(guān)注一下板卡,向硬件系統(tǒng)方向發(fā)展,或者補(bǔ)充驗(yàn)證方法學(xué),向數(shù)字部門(mén)方向發(fā)展,或者整合邏輯、軟件、系統(tǒng),向系統(tǒng)方向發(fā)展。在此階段,邏輯本身相關(guān)的技術(shù),也許已經(jīng)到達(dá)一個(gè)瓶頸了。
▍一個(gè)邏輯工程師的成長(zhǎng)之路-實(shí)例篇
上一章的模型,其實(shí)就是我自己的經(jīng)歷,大概套一下吧。
第一階段(2008-2009):能用
在我剛進(jìn)公司時(shí),勉強(qiáng)算是第一階段,嚴(yán)格來(lái)講,我雖然學(xué)過(guò)數(shù)字電路設(shè)計(jì),但是當(dāng)時(shí)用的教材很老,并沒(méi)有講述跟fpga相關(guān)。后來(lái)在實(shí)驗(yàn)室,買(mǎi)了一塊開(kāi)發(fā)板,才慢慢開(kāi)始學(xué)習(xí)fpga。
剛進(jìn)公司的時(shí)候,完全沒(méi)有硬件時(shí)鐘的概念,沒(méi)有時(shí)序約束的概念,剛剛處于能用verilog代碼完成需求的階段。
不過(guò)機(jī)會(huì)很好,當(dāng)時(shí)就趕上了M1項(xiàng)目,負(fù)責(zé)了電源管理和視頻。比較適合新人的兩個(gè)設(shè)計(jì)。
比較順利的完成了代碼和仿真,調(diào)試的時(shí)候,也還比較順利,開(kāi)關(guān)機(jī),屏幕顯示,都按時(shí)完成了。
不過(guò),此時(shí)并不太明確verilog代碼與fpga器件實(shí)現(xiàn)之間的關(guān)系,寫(xiě)代碼時(shí),不是考慮fpga能否實(shí)現(xiàn),而是考慮是否符合verilog代碼的語(yǔ)法。
此時(shí)大概是2008年下半年和2009年初。
這個(gè)階段,寫(xiě)的代碼其實(shí)是比較差的,不管從代碼風(fēng)格,還是從代碼設(shè)計(jì),模塊劃分等。不過(guò)鑒于本人良好的重構(gòu)習(xí)慣和對(duì)代碼風(fēng)格的極致追求,這段時(shí)期寫(xiě)的代碼,基本上都看不到了。
第二階段(2009):可用
2009年這段時(shí)間,做了xx的一塊板子,M3的鍵盤(pán)板,svideo,萬(wàn)能按鍵板等3個(gè)項(xiàng)目。
這段時(shí)間,學(xué)習(xí)了很多關(guān)于綜合,關(guān)于器件結(jié)構(gòu)等的知識(shí),在網(wǎng)上也搜了很多資料,自己也研究了altera的cyclone3的器件。還曾經(jīng)想寫(xiě)一個(gè)ppt,把邏輯中常用的代碼,對(duì)應(yīng)的綜合結(jié)構(gòu)和布局布線結(jié)構(gòu)都搞清楚,后來(lái)做的時(shí)候才發(fā)現(xiàn),跟理論值不一致,才作罷。這個(gè)階段也看了很多關(guān)于時(shí)序約束的內(nèi)容,不過(guò)此時(shí)對(duì)時(shí)序約束的理解還不深入
第三階段(2010-2011):好用
2010年主要做了兩個(gè)設(shè)計(jì),一個(gè)是M2的發(fā)射邏輯,一個(gè)是M4的視頻邏輯。
發(fā)射邏輯是一個(gè)比較典型的例子,當(dāng)時(shí)對(duì)邏輯設(shè)計(jì)有了一定的認(rèn)識(shí),也有了一定的想法。M2的發(fā)射邏輯是基于M1的發(fā)射邏輯的,但是被我完全重構(gòu)了,此時(shí)開(kāi)始考慮邏輯的模塊劃分,接口時(shí)序。
而且由于發(fā)射邏輯扇出較多,開(kāi)始考慮代碼的布局布線與時(shí)序收斂。
同時(shí),對(duì)代碼的書(shū)寫(xiě)開(kāi)始有要求,這個(gè)階段的代碼,應(yīng)該說(shuō)開(kāi)始有了自己的風(fēng)格,而且寫(xiě)的比較好。這部分的代碼,后來(lái)未再修改,還可以在svn上看到。
M2的發(fā)射邏輯是做的比較順利的,在板卡回來(lái)之前1個(gè)月,基本上設(shè)計(jì)和仿真就全部完成了,也有一些時(shí)間來(lái)學(xué)習(xí),后來(lái)調(diào)試也非常順利,發(fā)射幾乎沒(méi)出bug。
由于在M1做了視頻邏輯,M2的視頻由其他人負(fù)責(zé),在做M4的視頻邏輯時(shí),水平有了一定的提高,而且時(shí)間也比較充足,興趣也比較強(qiáng)烈。在M4的視頻邏輯上,做了很多重構(gòu)的工作。
其中,lpc總線模塊,就重構(gòu)過(guò)2次,對(duì)于狀態(tài)機(jī)的寫(xiě)法進(jìn)行了深入研究,svn上可以看到M4的lpc代碼和M1的代碼是不一樣的。
svideo部分的代碼,起初是09年xx寫(xiě)的,后來(lái)我接手后,曾經(jīng)重構(gòu)過(guò)一次,把代碼全部整理了一遍,并徹底搞懂。由于M4的視頻需求更改,由一路svideo變成兩路:svideo和dvr,所以又將這部分代碼再次做了顛覆性的重構(gòu)。
這個(gè)階段,可以說(shuō)對(duì)邏輯的架構(gòu),已經(jīng)有了初步的認(rèn)識(shí)和一定的經(jīng)驗(yàn)。而且視頻大多跟外設(shè)打交道,此時(shí)對(duì)時(shí)序約束已經(jīng)比較清楚了,有些時(shí)序上的問(wèn)題,已經(jīng)可以比較容易的解決了。
此時(shí)寫(xiě)的代碼,不管是代碼風(fēng)格,模塊劃分,接口,邏輯架構(gòu),都已經(jīng)比較好了。
等待的時(shí)間不算太久,10年底到11年初,還做了一個(gè)M4的newc,完全是一個(gè)全新的邏輯,也算是初步了解了信號(hào)處理,而且全部從新的設(shè)計(jì),也增加了架構(gòu)經(jīng)驗(yàn)。11年中,做了任意波的方案,雖然只做了方案,沒(méi)做具體設(shè)計(jì),但是此時(shí)對(duì)于邏輯方案,架構(gòu),已經(jīng)有駕輕就熟的感覺(jué)了。
很快,機(jī)會(huì)就來(lái)到了。
2011年下半年,開(kāi)始做M5的pcie上傳邏輯。
這個(gè)設(shè)計(jì),完全滿足一個(gè)架構(gòu)能力進(jìn)階的要求。
第四階段(2011-2012):易用
上傳邏輯是一個(gè)別人留下的一個(gè)中等的、復(fù)雜的、功能正常的邏輯,對(duì)此做重構(gòu),挑戰(zhàn)還是非常大的。之前對(duì)此完全沒(méi)有了解。不過(guò)svideo的重構(gòu)也為此打好了一定的基礎(chǔ)。
上傳邏輯的重構(gòu),應(yīng)該說(shuō)是做的比較好的,短時(shí)間內(nèi)將一個(gè)復(fù)雜的設(shè)計(jì)重構(gòu),而且設(shè)計(jì)上僅出了1個(gè)bug。后來(lái)該設(shè)計(jì)復(fù)用到后續(xù)所有的項(xiàng)目,M6,M7,M8,M9。
M5的聯(lián)調(diào),也僅用了2個(gè)星期,非常順利。然后各種模式的聯(lián)調(diào),也都非常順利的出了。
上傳相關(guān)的總結(jié),已經(jīng)放在《pcie協(xié)議介紹,ip介紹,上傳邏輯介紹,上傳設(shè)計(jì)經(jīng)驗(yàn)分享.ppt》
這個(gè)項(xiàng)目,是將全部的超聲邏輯,都放入到了一片fpga當(dāng)中,所接觸到的、所能修改的架構(gòu),變得更大。也是一個(gè)非常好的可以提高水平的設(shè)計(jì)。
對(duì)于其中的xx、xx、數(shù)據(jù)緩存、pcie上傳都做了修改。
不過(guò),之前的重構(gòu)之路一直很順利,終于在M6上栽了跟頭。重構(gòu)失敗,最終又退回到老版本。
其中種種,已經(jīng)放在《xx項(xiàng)目總結(jié)-邏輯方向.ppt》
經(jīng)過(guò)兩個(gè)項(xiàng)目的洗禮,對(duì)于邏輯設(shè)計(jì),器件,時(shí)序,架構(gòu)等等的認(rèn)識(shí),更加深入了。
第五階段(2013-):邏輯架構(gòu)師
這個(gè)階段,主要主導(dǎo)完成了M7項(xiàng)目和M8項(xiàng)目。
▍邏輯工程師水平的V模型
第3章講述了一個(gè)邏輯工程師是如何發(fā)展的,并且給出了各個(gè)階段的特征,但是,仍然沒(méi)給出清晰的量化,本章,嘗試對(duì)這個(gè)問(wèn)題給出一個(gè)解決方案。
邏輯工程師應(yīng)該掌握的各種能力
大概設(shè)置了5種能力,每種能力在不同的階段有不同的要求。其中,設(shè)計(jì)完成能力是最基本的要求。
設(shè)計(jì)完成能力
第一階段:可以完成設(shè)計(jì),基本知道verilog的語(yǔ)法,能夠把一個(gè)需求用代碼實(shí)現(xiàn)出來(lái),并且能夠調(diào)試出來(lái),經(jīng)常會(huì)上網(wǎng)搜索現(xiàn)成的模塊,對(duì)邏輯的硬件思維基本沒(méi)有
第二階段:開(kāi)始關(guān)注代碼風(fēng)格,開(kāi)始把自己的代碼寫(xiě)的風(fēng)格統(tǒng)一,并且開(kāi)始關(guān)注代碼的硬件實(shí)現(xiàn),突出標(biāo)志就是開(kāi)始關(guān)注rtl視圖,比較能明確的區(qū)分可綜合語(yǔ)句與仿真語(yǔ)句的區(qū)別
第四階段: 該階段已經(jīng)可以比較輕松的完成一個(gè)邏輯設(shè)計(jì),而且結(jié)構(gòu)合理,易讀,可復(fù)用
第五階段: 可以帶領(lǐng)一個(gè)團(tuán)隊(duì)完成比較大規(guī)模的邏輯設(shè)計(jì),分配不同的工作任務(wù),可以準(zhǔn)確的預(yù)估項(xiàng)目的風(fēng)險(xiǎn),進(jìn)度,可以準(zhǔn)確的做出邏輯的整體方案,仿真方案,調(diào)試方案,對(duì)于整體的業(yè)務(wù)流有全面而深刻的認(rèn)識(shí)
器件能力
第一階段:知道FPGA的意思,但是基本上不知道fpga的內(nèi)部結(jié)構(gòu)
第二階段: 不怎么關(guān)注器件視圖。但是基本知道器件的大概結(jié)構(gòu),知道fpga里面有l(wèi)e,ram,dsp,全局等等,對(duì)邏輯器件有了基本的認(rèn)識(shí)
第三階段: 此時(shí)開(kāi)始關(guān)注器件結(jié)構(gòu),了解fpga的內(nèi)部架構(gòu),時(shí)鐘網(wǎng)絡(luò),route,對(duì)時(shí)序約束有了基本的了解
第四階段: 對(duì)器件結(jié)構(gòu)有了比較深入的認(rèn)識(shí),開(kāi)始認(rèn)識(shí)到不同廠家器件結(jié)構(gòu)的不同
第五階段: 熟知各個(gè)廠家的各種邏輯器件的內(nèi)部結(jié)構(gòu),基本邏輯單元結(jié)構(gòu),以及由此帶來(lái)的代碼風(fēng)格的相應(yīng)的改變
時(shí)序約束能力
第一階段:基本不知道什么是時(shí)序約束
第二階段: 知道時(shí)序約束,會(huì)做時(shí)鐘約束,可以根據(jù)簡(jiǎn)單的公式計(jì)算輸出輸出約束
第三階段: 懂得時(shí)序約束與布線的關(guān)系,熟練掌握最基本的常用約束
第四階段: 對(duì)時(shí)序約束有深刻的認(rèn)識(shí),可以主動(dòng)設(shè)計(jì)整體時(shí)鐘和復(fù)位系統(tǒng)
第五階段: 熟知時(shí)序約束,并且能夠采取各種手段,解決各種時(shí)序問(wèn)題
邏輯架構(gòu)能力
第一階段:無(wú)
第二階段: 有一點(diǎn)點(diǎn)概念,知道大概可以劃分模塊,對(duì)模塊的功能,接口沒(méi)有要求,一般有需要就直接加一個(gè)接口信號(hào),不能在項(xiàng)目開(kāi)始就主動(dòng)設(shè)計(jì)
第三階段: 開(kāi)始考慮設(shè)計(jì)的復(fù)用,開(kāi)始考慮模塊的劃分,注重模塊接口,平臺(tái)化等等
第四階段: 接手一些比較大的設(shè)計(jì),開(kāi)始有架構(gòu)的考慮,對(duì)于模塊的劃分,模塊接口,模塊職責(zé),整體方案的實(shí)現(xiàn),開(kāi)始有更多的考慮,此時(shí),可以做出比較好的,合理的方案
第五階段: 對(duì)整體的邏輯架構(gòu)有所考慮,并且開(kāi)始準(zhǔn)確的劃分邏輯架構(gòu),模塊接口,功能劃分,工作職責(zé),協(xié)同交流
時(shí)序收斂能力
第一階段:無(wú)
第二階段: 無(wú)
第三階段: 開(kāi)始接觸到時(shí)序收斂,有單個(gè)時(shí)序不過(guò)的信號(hào),能夠予以解決
第四階段: 開(kāi)始主動(dòng)設(shè)計(jì)時(shí)序,基本可以完成整個(gè)設(shè)計(jì)的時(shí)序收斂任務(wù)。
第五階段: 對(duì)于邏輯的布局,數(shù)據(jù)流走向有深刻的認(rèn)識(shí),能夠在項(xiàng)目支出就通過(guò)設(shè)計(jì)來(lái)保證時(shí)序收斂。
接口掌握能力
第一階段:開(kāi)始接觸簡(jiǎn)單的接口,
第二階段: 開(kāi)始掌握如串口,spi,i2c等簡(jiǎn)單的外部接口
第三階段: 開(kāi)始接觸ddr,ssram,ad,lpc等等略復(fù)雜的接口
第四階段: 開(kāi)始接觸pcie,transceiver,rapid io,phy,等等復(fù)雜且?guī)f(xié)議的接口
第五階段: 無(wú),此階段,不需要用掌握接口的多少來(lái)衡量
邏輯流程掌握能力
第一階段:基本不知道正規(guī)邏輯流程,基本無(wú)設(shè)計(jì)文檔
第二階段: 能夠根據(jù)已知的流程完成設(shè)計(jì),寫(xiě)出文檔
第三階段: 比較熟練邏輯流程,并且能夠順利完成設(shè)計(jì)文檔
第四階段: 有比較嚴(yán)格的邏輯流程,并且完成各種文檔,對(duì)流程的認(rèn)識(shí)比較深刻
第五階段: 可以根據(jù)現(xiàn)狀,制定合理流程和文檔要求
仿真驗(yàn)證水平
其他
邏輯工程師水平的V模型
根據(jù)以上不同階段對(duì)各種能力的要求,可以完成V模型
社招邏輯工程師筆式題庫(kù)
最近公司招了很多人,不僅僅硬件在招,軟件也在招人,實(shí)際上,我是非常羨慕軟件的面試人員的,因?yàn)樗麄冇泄P試題。不過(guò)是自己出的也好,網(wǎng)上搜的也好,總之軟件的很多知識(shí),是可以通過(guò)一份試卷來(lái)先考察一下的。我經(jīng)??吹杰浖娜税亚舐氄邘У綍?huì)議室,給一份卷子,做完后來(lái)面試一下,也許半個(gè)小時(shí)就面試完了。而我,每次面試都要一兩個(gè)小時(shí)。
我也在網(wǎng)上搜過(guò)邏輯的筆式題,不過(guò),基本都是應(yīng)屆生的,社招的人,看來(lái)早已經(jīng)沒(méi)有興致來(lái)分享一下自己的面經(jīng)了。
其實(shí),我每次面試,有一半的時(shí)間,都是在問(wèn)每個(gè)人同樣的問(wèn)題,暫時(shí)就把這些問(wèn)題,整理一份試卷吧,同時(shí)也參考上一章的V模型。
設(shè)計(jì)完成
以及畫(huà)出的框圖,是否清晰美觀。很多人畫(huà)的框圖,面試完后再看,完全看不出是個(gè)邏輯框圖。
該設(shè)計(jì)有多少代碼,方案、代碼、仿真、調(diào)試,分別用了多久
器件結(jié)構(gòu)
時(shí)序約束
邏輯架構(gòu)
時(shí)序收斂
接口掌握
邏輯流程
其他
注:(重要)
本文禁止二次轉(zhuǎn)載,違者必究,請(qǐng)與作者獲取授權(quán)。
知乎 -《一個(gè)fpga工程師的成長(zhǎng)之路》 - yifei
原文鏈接見(jiàn)“閱讀原文”
-END-
推薦閱讀
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!