當前位置:首頁 > 公眾號精選 > 嵌入式微處理器
[導讀]本文已獲取「知乎」作者授權,請勿二次轉載,請獲取作者授權。 聲明:本公眾號授權轉載本文僅傳播相關知識,無任何盈利和商業(yè)行為,部分內(nèi)容有刪改。 原文地址:https://zhuanlan.zhihu.com/p/137481604 作者:王yifei ▍導言 最近邏輯組任務較多,人力不足,

本文已獲取「知乎」作者授權,請勿二次轉載,請獲取作者授權。

聲明:本公眾號授權轉載本文僅傳播相關知識,無任何盈利和商業(yè)行為,部分內(nèi)容有刪改。

原文地址:https://zhuanlan.zhihu.com/p/137481604

作者:王yifei


▍導言


最近邏輯組任務較多,人力不足,因此招了一些新員工。最近一段時間,也面試了很多人,各個行業(yè)和公司的都有,形形色色的人面試多了,也有一些感觸,另外,年近而立,也需要總結一下。在此記錄下來,與君共勉。

▍關于行業(yè)和公司規(guī)模


關于行業(yè)


面試了幾個月,收到了幾百份簡歷,面試的人也有好幾十?;叵胍幌?,投簡歷的大概有以下幾類:

1、完全不懂邏輯的,比如,有網(wǎng)吧的網(wǎng)管,也投簡歷做邏輯驗證工程師
2、應屆生
3、做視頻、安防相關行業(yè)的
4、做芯片的
5、通信行業(yè)的小公司
6、通信行業(yè)的大公司
7、超聲行業(yè)

其中,第1,2兩類, 肯定是完全不考慮的。

第3類,
做視頻和安防的,面試過幾個,一般這種公司,邏輯的人員規(guī)模都比較小,經(jīng)常有人做個2-3年,就做到邏輯組長了,但是他們一般水平都不高,基本的時序約束都不做,仿真也不做,一般邏輯規(guī)模都比較小,直接上板用signaltap調(diào)試,對整個邏輯研發(fā)的流程也不熟悉。

第4類,
asic工程師,這類工程師,一般代碼水平和仿真水平都還可以,整個設計流程也比較嚴謹,但是純粹的asic工程師,如果沒做過fpga,并不適合我們公司,對fpga內(nèi)部器件不了解,對時序約束的經(jīng)驗也不多,而且asic的工期很長,幾年下來,做不了幾個項目。一般純粹做asic的,都難以通過第一面,有一部分做過asic的fpga驗證的,或者中途轉行,既做過asic,也做過fpga的,水平還可以,其中有幾個進入了二面??傮w而言,asic工程師并不太適合轉作fpga。

第5類,
通信行業(yè)的小公司,也面試過一些。一般通信行業(yè)的小公司,里面都有一些人,之前是在華為、中興做過的,整個公司的邏輯水平,還比較好,因此,這一類的求職者,水平也還可以,不過主要是看個人,有一些知識較全面,也有一些懂得并不多

第6類,
這一類,一般就是華為、中興,最近這兩家公司離職的人也較多,面試的有一半以上,都有華為、中興的工作經(jīng)歷。這一類,一般工作年限3年以上的,水平都比較好,知識面比較全,整個流程也比較清楚,而且流程和文檔做的比我們公司要好。但是缺點就是很多人做的比較窄,基本上只做一個點,雖然知識面還好,基本都懂一些,但是很多方向都沒有自己動手,有一些部門,寫代碼一撥人,編譯工程一撥人,仿真驗證一撥人,查bug又一撥人,導致對整個全局把握較少,另外,這些人原本待遇就比較高,尤其是華為,很多人比我工資都高好多。

第7類,
超聲行業(yè),這一類是比較對口的,但是人很少,只面過幾個,對超聲有一些了解,但是邏輯水平確實比M公司要差一些。

關于公司規(guī)模


好多人在一開始找工作的時候,往往面臨一個選擇,
是去一個大公司,還是去一個小公司。 大公司比較正規(guī),可以學到很多知識,小公司機會比較多,說不定過幾年就成領導了。

以上兩種說法都有道理,但是都不全面。

1、大公司

大公司比較正規(guī),流程等也比較正式、全面,技術積累也比較好,
確實可以學到很多,而且都是正規(guī)套路,比如華為,有非常正式的流程,從方案到設計文檔,每個時間段都有嚴格規(guī)定,等到寫代碼的時候,基本已經(jīng)成竹在胸了。比如中興,新人做一個設計,基本上都有非常全面的文檔來告訴你,怎么做,以前出過哪些問題,基本上一個智商正常的人都可以順利完成。

但是大公司也有一些缺點。
首先,分工太細,不僅僅是設計上,也在流程上。比如之前面的一個人,做了5年,一直在做接口,而且是同一個接口,這個地方可能已經(jīng)做的很好了,甚至可以說水平在國內(nèi)都是比較高的了,但是知識面太窄,其他的不了解。還有一些人,只做代碼,連工程都不需要編譯,這樣,就對代碼的器件實現(xiàn)了解不多,實際工程經(jīng)驗也很少。之前面試過一個中興的,主做信號處理,做了3年,基本上完全不知道fpga是啥,只懂信號處理的verilog代碼實現(xiàn),連邏輯基本單元由查找表和寄存器組成都不清楚。

另外,大公司一般項目進度都比較嚴謹,在多年的經(jīng)驗積累中,項目進度一般都定的比較準確,這就意味著你必須每天都在做項目,跟進度,很少能留出時間來自己學習,更不用說拿幾個星期出來,改改邏輯架構,做些自己有興趣的事。不利于個人的提升。

2、小公司

對小公司而言,要自由的多,能夠接觸到的也要多一些。 我面試的一些小公司的人,一般都能從頭到尾都接觸到,包括方案,代碼,仿真,調(diào)試,debug。也有一些2-3年就成為邏輯組長的。

不過,小公司的缺點也是很明顯的。
除非小公司有技術很牛的人,否則,一般都難以有很完善的流程,技術上也很難做到比較精深。很多小公司的,連仿真都不做的,而且只做時鐘頻率約束,管腳的輸出輸出時序約束都完全不做。所以,小公司出來的,一般都不那么正規(guī),而且水平也很難做高。

面試過許多人后,再回想一下,應該說,M公司還是提供了一個很好的平臺的。

雖然M公司有種種缺點,比如,流程很簡陋,對文檔的要求比較低,基本上文檔就自己寫寫,然后評審一下,文檔寫的不正規(guī),而且過一段時間,代碼跟文檔都對不上。整個邏輯的配置管理也比較亂,很多項目都說不清楚邏輯是復用了哪個的,又改了些啥。
對代碼的要求也很低,或者說,有要求,但是沒執(zhí)行。每個人都按照自己的習慣來,以至于我不用看說明,隨便從代碼中找出一段看看,就知道這段代碼出自誰手。

積累和培訓做的不好?;旧?,我在M公司被培訓到的邏輯知識比較少,有過一些培訓,但是效果并不好,大部分都是在項目實踐當中學到的?;揪蜎]有一個培訓體系,全靠自己悟,自己問。

但是M公司還是一個比較好的起點。首先,邏輯規(guī)模足夠大、足夠多樣、足夠復雜、更改足夠多。規(guī)模大,就會有機會使用比較大,比較高級的芯片,而且,規(guī)模大,對人的掌控能力也有很高的要求。足夠多樣,知識面就會比較廣,當前的邏輯有各種接口,包括transceiver,pcie,spi,uart,i2c,ddr,lvds,ssram,ccir656,rgb等等各種接口。以及相應的各種邏輯。既包括信號處理相關,也包括各種復雜控制,還有視頻相關等。足夠復雜,對于提高邏輯水平有很大幫助,當前有很多邏輯設計都是比較復雜的,比如數(shù)據(jù)緩存,pcie上傳,xx控制等。更改足夠多,就意味著有很多新東西可以做,而且需求的多樣性更改,才能催生一系列的設計思想。軟件就是因為要處理各種復雜、多變的需求,才衍生出了各種思想,如面向對象、設計模式等。

每個人負責的邏輯設計,流程上可以走完整。包括老項目的維護,在研項目的需求、方案、設計、仿真、調(diào)試、debug,以及新項目的預研,都可以全程參與,對邏輯的整個流程會有比較深刻的認識。而且,不僅僅是寫代碼,包括設計的編譯,調(diào)試,debug等工作,可以對負責的邏輯設計,有更加深入的認識,對邏輯的可閱讀性、可復用性、可調(diào)試行等原則有所感觸。

得益于邏輯組一定的流動性,可以將邏輯的各個模塊都做一遍,而不是只能一年一年的只能做同一個設計。我來公司幾年,做過的設計包括 視頻、電源管理、按鍵板、XX、XX管理、newC、pcie上傳、XX、數(shù)據(jù)緩存、信號處理、XX控制,基本上,超聲相關的邏輯,除了xx,其它的,或深或淺的都做過,即使xx,我也曾自己花了2個星期的時間企圖重構過,對其設計也有一定的理解。這在大公司,是不可能的。

由于我們公司的超聲還沒到世界領先水平,以及系統(tǒng)組同事無窮無盡的新想法,每個邏輯設計的方案,都在不同的項目之中變來變?nèi)?,而且不同于通信領域的固定處理方式,我們公司的邏輯基本上是沒有參考的,完全由做邏輯的人來確定,有非常大的發(fā)揮空間。

由于我們公司還比較低級的項目管理水平,項目進度的安排并不怎么合理,有些項目中,是有時間可以做一些事情的,當然,最近一兩年幾乎沒有了。但是前幾年,我曾經(jīng)有幾次,可以抽出幾個星期的時間,并行的做一些我感興趣的事情,比如邏輯重構。

綜上所述,在職場的起點,選擇一家好的公司,是非常重要的。

▍一個邏輯工程師的成長之路


面試了很多人,有些水平高,有些水平低,有一些公司有嚴格的職級,比如華為,完全可以根據(jù)其職級來得知其邏輯水平,而且華為的業(yè)務職級和技術職級還是分開的。我們公司也有職級,但是,不同的公司之間,或者說,邏輯工程師,沒有一個比較普遍、統(tǒng)一的標準來衡量其水平。

我一直比較困惑于這個問題,原因來自于從小受到的教育和長大后經(jīng)??吹男≌f。小時候的學習成績,是非常容易識別和量化的,分高分低,一比就知。成年以后,看過各種小說,武力高低,也是有非常明確的量化的,一個人完全可以非常清楚的知道,自己的級別。比如xxxx,用魂力來表征水平,從1-100,每10個級別為一個大的等級,雖然這不能代表真正實力,但是至少讓讀者可以看到主角的逐步成長。不過,這也只是小說,現(xiàn)實生活中,是沒有這個東西的。

鑒于這些困惑,在本章,按照我自己的簡單的經(jīng)歷和粗淺的認識,對邏輯工程師的水平做一下初步的劃分。

第一階段:能用

階段特點:這個階段,基本上處于剛剛接觸到verilog代碼一段時間,知道大概的語法,能夠把一個需求用代碼實現(xiàn)出來,并且能夠調(diào)試出來??傮w而言,處于一個能用的位置,可以實現(xiàn),但是并不清楚代碼與實際器件實現(xiàn)的關系,對邏輯的硬件思維基本沒有。

階段評價:此時,尚且不算一個邏輯工程師,因為只會寫代碼,沒有邏輯思維

提高途徑:如果有審美,有需求,自己有內(nèi)部推動力,將開始進入到第二階段(我有見過中興的3年的算法工程師,做了3年只懂算法實現(xiàn),完全沒有邏輯硬件思維,因此,時間長短跟水平并沒有直接關系)

第二階段:可用

階段特點:這個階段,開始關注代碼風格,開始把自己的代碼寫的風格統(tǒng)一,并且開始關注代碼的硬件實現(xiàn),突出標志就是開始關注rtl視圖,可能還不怎么關注器件視圖。但是基本知道器件的大概結構,知道fpga里面有l(wèi)e,ram,dsp,全局等等。比較能明確的區(qū)分可綜合語句與仿真語句的區(qū)別。

階段評價:這個階段,基本可以稱為是一個邏輯工程師了。能夠完成設計實現(xiàn),仿真,調(diào)試,能夠做出邏輯設計說明。

提高途徑:
此時,一般開始負責一個模塊,如果該模塊在其他項目上復用,并且略有更改,有的人會直接修改,而有些人開始有更多的考慮,由此進入第三階段

第三階段:好用

階段特點:這個階段,由于上一個階段已經(jīng)可以實現(xiàn)設計,在這個階段,開始考慮設計的復用,開始考慮模塊的劃分,注重模塊接口,平臺化等等。
并且,此時對模塊內(nèi)部的代碼書寫有了更加深刻的認識,模塊內(nèi)部的寫法開始更加統(tǒng)一,基本上,模塊內(nèi)部的代碼可以直接生成rtl視圖。
并且,此時開始關注器件結構,了解fpga的內(nèi)部架構,時鐘網(wǎng)絡,route,對時序約束有了基本的了解

階段評價:
這個階段,可以認為是一個基本成熟的邏輯工程師了,邏輯所需要掌握的知識方向,基本都有所了解,而且,不僅能夠完成設計,還能在設計之前做出方案,而且做出的設計,模塊的劃分比較合理了。

提高途徑:
此時,一般會開始接手一些比較大的前人的設計,有的人會盡量復用,有些人會有更多的考慮,由此進入第四階段。

第四階段:易用

階段特點:這個階段,會接手一些比較大的設計,開始有架構的考慮,對于模塊的劃分,模塊接口,模塊職責,整體方案的實現(xiàn),開始有更多的考慮,此時,可以做出比較好的,合理的方案,而且對邏輯的各個方向的知識,都有了比較全面而深入的了解,比如仿真,器件結構,時序約束,模塊劃分等等

階段評價:這個階段,可以認為是一個比較優(yōu)秀的邏輯工程師了。能夠在項目之初給出比較好的邏輯方案,并且能夠快速而高效的完成設計,仿真和驗證。對應可能發(fā)生的時序,等等問題,也有比較好的考慮

提高途徑:此時,如果有機會可以帶領一個團隊,會進入一個不同的領域,能夠接觸到更多的東西,

第五階段:邏輯架構師

階段特點:這個階段,會負責一個團隊,或者一個項目的邏輯設計。開始對整體的邏輯架構有所考慮,并且開始準確的劃分邏輯架構,并分配不同的工作任務,由于需要團隊協(xié)作,因此要求對邏輯方案,邏輯進度,邏輯技術,有非常深刻的認識,

階段評價:
可以給團隊制定邏輯代碼規(guī)范,邏輯設計流程
可以輕松的完成邏輯整體方案的設計,并且準確識別風險點
可以準確的劃分邏輯架構,模塊接口,功能劃分,工作職責
可以準確的預估項目的風險,進度
可以準確的做出邏輯的整體方案,仿真方案,調(diào)試方案,對于整體的業(yè)務流有全面而深刻的認識
對于邏輯的各個知識方向有非常深刻的認識,
熟知各個廠家的各種邏輯器件的內(nèi)部結構,基本邏輯單元結構,以及由此帶來的代碼風格的相應的改變
熟知時序約束,并且能夠采取各種手段,解決各種時序問題
對于邏輯的布局,數(shù)據(jù)流走向有深刻的認識,
對仿真有深刻的認識,熟知仿真器原理,并且開始搭建可重用,復用性好合效率高的仿真平臺,或者使用高級仿真
此時,基本有10萬代碼量

提高途徑:由于本人仍在此階段掙扎,因此,尚不知如何提升。也許可以關注一下板卡,向硬件系統(tǒng)方向發(fā)展,或者補充驗證方法學,向數(shù)字部門方向發(fā)展,或者整合邏輯、軟件、系統(tǒng),向系統(tǒng)方向發(fā)展。在此階段,邏輯本身相關的技術,也許已經(jīng)到達一個瓶頸了。

由以上各個階段的發(fā)展可知,一個好的邏輯工程師,一是要有好的環(huán)境,可以學到東西,二是要有機遇,可以遇到不同的情景。但是最重要的還是,對自己有要求,有追求,自己內(nèi)部有不斷的推動力,可以使自己不斷的學習進步

▍一個邏輯工程師的成長之路-實例篇


上一章的模型,其實就是我自己的經(jīng)歷,大概套一下吧。

第一階段(2008-2009):能用


在我剛進公司時,勉強算是第一階段,嚴格來講,我雖然學過數(shù)字電路設計,但是當時用的教材很老,并沒有講述跟fpga相關。后來在實驗室,買了一塊開發(fā)板,才慢慢開始學習fpga。

剛進公司的時候,完全沒有硬件時鐘的概念,沒有時序約束的概念,剛剛處于能用verilog代碼完成需求的階段。

不過機會很好,當時就趕上了M1項目,負責了電源管理和視頻。比較適合新人的兩個設計。

比較順利的完成了代碼和仿真,調(diào)試的時候,也還比較順利,開關機,屏幕顯示,都按時完成了。

不過,此時并不太明確verilog代碼與fpga器件實現(xiàn)之間的關系,寫代碼時,不是考慮fpga能否實現(xiàn),而是考慮是否符合verilog代碼的語法。

此時大概是2008年下半年和2009年初。

這個階段,寫的代碼其實是比較差的,不管從代碼風格,還是從代碼設計,模塊劃分等。不過鑒于本人良好的重構習慣和對代碼風格的極致追求,這段時期寫的代碼,基本上都看不到了。

后來做完M1之后,在做M2(2010)之前,大概有1年的時間,這段時間內(nèi),項目進度沒有那么緊,有一些時間可以學習,開始進入第二階段。

第二階段(2009):可用


2009年這段時間,做了xx的一塊板子,M3的鍵盤板,svideo,萬能按鍵板等3個項目。

時間比較充足,加之本人的習慣,喜歡對一個事情追根究底,希望可以弄明白,想清楚。

這段時間,學習了很多關于綜合,關于器件結構等的知識,在網(wǎng)上也搜了很多資料,自己也研究了altera的cyclone3的器件。還曾經(jīng)想寫一個ppt,把邏輯中常用的代碼,對應的綜合結構和布局布線結構都搞清楚,后來做的時候才發(fā)現(xiàn),跟理論值不一致,才作罷。這個階段也看了很多關于時序約束的內(nèi)容,不過此時對時序約束的理解還不深入
而且隨著做的項目的增加,debug經(jīng)驗的豐富,水平開始逐步提高,能算得上是一個合格的邏輯工程師了。

2010年,開始做M2項目和M4項目。涉及到了xx邏輯的重構和svideo視頻的重構,開始進入第三階段。

第三階段(2010-2011):好用


2010年主要做了兩個設計,一個是M2的發(fā)射邏輯,一個是M4的視頻邏輯。

發(fā)射邏輯是一個比較典型的例子,當時對邏輯設計有了一定的認識,也有了一定的想法。M2的發(fā)射邏輯是基于M1的發(fā)射邏輯的,但是被我完全重構了,此時開始考慮邏輯的模塊劃分,接口時序。

而且由于發(fā)射邏輯扇出較多,開始考慮代碼的布局布線與時序收斂。

同時,對代碼的書寫開始有要求,這個階段的代碼,應該說開始有了自己的風格,而且寫的比較好。這部分的代碼,后來未再修改,還可以在svn上看到。

M2的發(fā)射邏輯是做的比較順利的,在板卡回來之前1個月,基本上設計和仿真就全部完成了,也有一些時間來學習,后來調(diào)試也非常順利,發(fā)射幾乎沒出bug。

下半年做視頻邏輯。

由于在M1做了視頻邏輯,M2的視頻由其他人負責,在做M4的視頻邏輯時,水平有了一定的提高,而且時間也比較充足,興趣也比較強烈。在M4的視頻邏輯上,做了很多重構的工作。

其中,lpc總線模塊,就重構過2次,對于狀態(tài)機的寫法進行了深入研究,svn上可以看到M4的lpc代碼和M1的代碼是不一樣的。

svideo部分的代碼,起初是09年xx寫的,后來我接手后,曾經(jīng)重構過一次,把代碼全部整理了一遍,并徹底搞懂。由于M4的視頻需求更改,由一路svideo變成兩路:svideo和dvr,所以又將這部分代碼再次做了顛覆性的重構。

這個階段,可以說對邏輯的架構,已經(jīng)有了初步的認識和一定的經(jīng)驗。而且視頻大多跟外設打交道,此時對時序約束已經(jīng)比較清楚了,有些時序上的問題,已經(jīng)可以比較容易的解決了。

此時寫的代碼,不管是代碼風格,模塊劃分,接口,邏輯架構,都已經(jīng)比較好了。

不過,此時多是在折騰自己的代碼,比較熟悉的代碼。(svideo算是一個中小的,別人寫的代碼)。真正考驗邏輯架構能力的,是對別人留下的一個中等的、復雜的、功能正常的邏輯做重構,變成一個架構合理、簡單易用的邏輯,而且整個過程還要盡量少出bug。

等待的時間不算太久,10年底到11年初,還做了一個M4的newc,完全是一個全新的邏輯,也算是初步了解了信號處理,而且全部從新的設計,也增加了架構經(jīng)驗。11年中,做了任意波的方案,雖然只做了方案,沒做具體設計,但是此時對于邏輯方案,架構,已經(jīng)有駕輕就熟的感覺了。

很快,機會就來到了。

2011年下半年,開始做M5的pcie上傳邏輯。

這個設計,完全滿足一個架構能力進階的要求。

第四階段(2011-2012):易用


從2011年下半年的M5,到2012年的M6,是屬于第四階段的。

上傳邏輯是一個別人留下的一個中等的、復雜的、功能正常的邏輯,對此做重構,挑戰(zhàn)還是非常大的。之前對此完全沒有了解。不過svideo的重構也為此打好了一定的基礎。
這段時間是進公司以來積極性比較高的階段,不停的在學習,幾乎將整本《PCIE系統(tǒng)體系結構標準教材》全部翻完。而且每天都在消化,修改代碼。由于這段時間白天很多雜事,經(jīng)常晚上工作到半夜。

上傳邏輯的重構,應該說是做的比較好的,短時間內(nèi)將一個復雜的設計重構,而且設計上僅出了1個bug。后來該設計復用到后續(xù)所有的項目,M6,M7,M8,M9。

M5的聯(lián)調(diào),也僅用了2個星期,非常順利。然后各種模式的聯(lián)調(diào),也都非常順利的出了。

上傳相關的總結,已經(jīng)放在《pcie協(xié)議介紹,ip介紹,上傳邏輯介紹,上傳設計經(jīng)驗分享.ppt》

2012年.開始做M6項目。

這個項目,是將全部的超聲邏輯,都放入到了一片fpga當中,所接觸到的、所能修改的架構,變得更大。也是一個非常好的可以提高水平的設計。

對于其中的xx、xx、數(shù)據(jù)緩存、pcie上傳都做了修改。

不過,之前的重構之路一直很順利,終于在M6上栽了跟頭。重構失敗,最終又退回到老版本。

其中種種,已經(jīng)放在《xx項目總結-邏輯方向.ppt》

經(jīng)過兩個項目的洗禮,對于邏輯設計,器件,時序,架構等等的認識,更加深入了。

此時,對于xx控制邏輯的重構,也有濃厚的興趣。M5做完,M6開始之前,還曾花了3周看xx代碼,只是當時已近年關,效率較低,年后即投入M6,xx重構未在進行下去。不過xx控制的重構后來倒是做了。

此時,應該算是一個比較優(yōu)秀的邏輯工程師了。
對于器件和時序的認識,比較深刻。例如給出了《FPGA的管腳分配指南-時序相關.doc》

2012年中,成為邏輯leader,不過由于M6事物繁忙,直到大概9,10月份,才開始著手管理團隊。

第五階段(2013-):邏輯架構師


之所以認為,要進入第五階段,必須要成為邏輯相關管理人員,是因為此時需要操作的代碼和設計是非常多和復雜的,所以需要一個團隊來共同完成。而且,開始更多的從整體開始考慮。

這個階段,主要主導完成了M7項目和M8項目。

開始對整體的邏輯架構有所考慮,并分配不同的工作任務。

對于整個項目的邏輯設計開始負責,完成整體方案,識別風險點,保證時間節(jié)點,并且熟悉整個業(yè)務流。

由于這2個項目換用了全新的fpga,因此再次加深了對器件和時序的認識。例如M8的管腳時序約束的風險解決。

并且開始搭建可重用,復用性好合效率高的仿真平臺。

M7項目7周出圖,但是基本相同的工作量和參與人員,M8只用了2周出圖。對于項目整體的把握,有了提高。

此時,已經(jīng)寫過11萬代碼。

目前,仍處于本階段之中。

邏輯工程師水平的V模型


第3章講述了一個邏輯工程師是如何發(fā)展的,并且給出了各個階段的特征,但是,仍然沒給出清晰的量化,本章,嘗試對這個問題給出一個解決方案。


邏輯工程師應該掌握的各種能力


大概設置了5種能力,每種能力在不同的階段有不同的要求。其中,設計完成能力是最基本的要求。


設計完成能力


第一階段:可以完成設計,基本知道verilog的語法,能夠把一個需求用代碼實現(xiàn)出來,并且能夠調(diào)試出來,經(jīng)常會上網(wǎng)搜索現(xiàn)成的模塊,對邏輯的硬件思維基本沒有

第二階段:開始關注代碼風格,開始把自己的代碼寫的風格統(tǒng)一,并且開始關注代碼的硬件實現(xiàn),突出標志就是開始關注rtl視圖,比較能明確的區(qū)分可綜合語句與仿真語句的區(qū)別

第三階段: 在這個階段,對模塊內(nèi)部的代碼書寫有了更加深刻的認識,模塊內(nèi)部的寫法開始更加統(tǒng)一,基本上,模塊內(nèi)部的代碼可以直接生成rtl視圖。而且,開始考慮設計的復用,開始考慮模塊的劃分,注重模塊接口,平臺化等等

第四階段:
該階段已經(jīng)可以比較輕松的完成一個邏輯設計,而且結構合理,易讀,可復用

第五階段:
可以帶領一個團隊完成比較大規(guī)模的邏輯設計,分配不同的工作任務,可以準確的預估項目的風險,進度,可以準確的做出邏輯的整體方案,仿真方案,調(diào)試方案,對于整體的業(yè)務流有全面而深刻的認識

器件能力


第一階段:知道FPGA的意思,但是基本上不知道fpga的內(nèi)部結構

第二階段:
不怎么關注器件視圖。但是基本知道器件的大概結構,知道fpga里面有l(wèi)e,ram,dsp,全局等等,對邏輯器件有了基本的認識

第三階段:
此時開始關注器件結構,了解fpga的內(nèi)部架構,時鐘網(wǎng)絡,route,對時序約束有了基本的了解

第四階段:
對器件結構有了比較深入的認識,開始認識到不同廠家器件結構的不同

第五階段:
熟知各個廠家的各種邏輯器件的內(nèi)部結構,基本邏輯單元結構,以及由此帶來的代碼風格的相應的改變

時序約束能力


第一階段:基本不知道什么是時序約束

第二階段:
知道時序約束,會做時鐘約束,可以根據(jù)簡單的公式計算輸出輸出約束

第三階段:
懂得時序約束與布線的關系,熟練掌握最基本的常用約束

第四階段:
對時序約束有深刻的認識,可以主動設計整體時鐘和復位系統(tǒng)

第五階段:
熟知時序約束,并且能夠采取各種手段,解決各種時序問題

邏輯架構能力


第一階段:

第二階段:
有一點點概念,知道大概可以劃分模塊,對模塊的功能,接口沒有要求,一般有需要就直接加一個接口信號,不能在項目開始就主動設計

第三階段:
開始考慮設計的復用,開始考慮模塊的劃分,注重模塊接口,平臺化等等

第四階段:
接手一些比較大的設計,開始有架構的考慮,對于模塊的劃分,模塊接口,模塊職責,整體方案的實現(xiàn),開始有更多的考慮,此時,可以做出比較好的,合理的方案

第五階段:
對整體的邏輯架構有所考慮,并且開始準確的劃分邏輯架構,模塊接口,功能劃分,工作職責,協(xié)同交流

時序收斂能力


第一階段:

第二階段:

第三階段:
開始接觸到時序收斂,有單個時序不過的信號,能夠予以解決

第四階段:
開始主動設計時序,基本可以完成整個設計的時序收斂任務。

第五階段:
對于邏輯的布局,數(shù)據(jù)流走向有深刻的認識,能夠在項目支出就通過設計來保證時序收斂。

接口掌握能力


第一階段:開始接觸簡單的接口,

第二階段:
開始掌握如串口,spi,i2c等簡單的外部接口

第三階段:
開始接觸ddr,ssram,ad,lpc等等略復雜的接口

第四階段:
開始接觸pcie,transceiver,rapid io,phy,等等復雜且?guī)f(xié)議的接口

第五階段: 無,此階段,不需要用掌握接口的多少來衡量

邏輯流程掌握能力


第一階段:基本不知道正規(guī)邏輯流程,基本無設計文檔

第二階段:
能夠根據(jù)已知的流程完成設計,寫出文檔

第三階段:
比較熟練邏輯流程,并且能夠順利完成設計文檔

第四階段:
有比較嚴格的邏輯流程,并且完成各種文檔,對流程的認識比較深刻

第五階段:
可以根據(jù)現(xiàn)狀,制定合理流程和文檔要求

仿真驗證水平


其他


邏輯工程師水平的V模型


根據(jù)以上不同階段對各種能力的要求,可以完成V模型



其中,完成設計是最基本、核心的要求,隨著水平的增長,對其他能力的要求也隨之變高。

社招邏輯工程師筆式題庫


最近公司招了很多人,不僅僅硬件在招,軟件也在招人,實際上,我是非常羨慕軟件的面試人員的,因為他們有筆試題。不過是自己出的也好,網(wǎng)上搜的也好,總之軟件的很多知識,是可以通過一份試卷來先考察一下的。我經(jīng)??吹杰浖娜税亚舐氄邘У綍h室,給一份卷子,做完后來面試一下,也許半個小時就面試完了。而我,每次面試都要一兩個小時。

我也在網(wǎng)上搜過邏輯的筆式題,不過,基本都是應屆生的,社招的人,看來早已經(jīng)沒有興致來分享一下自己的面經(jīng)了。

其實,我每次面試,有一半的時間,都是在問每個人同樣的問題,暫時就把這些問題,整理一份試卷吧,同時也參考上一章的V模型。

設計完成

主要針對簡歷中的設計提問。

請畫一下該設計的硬件系統(tǒng)框圖
主要考察對整個系統(tǒng)的了解,不僅僅要了解自己所做的部分,而且要了解跟自己像個的部分,積極主動、多思考多學習的人進步更快

針對fpga外圍接口繼續(xù)發(fā)問:
請畫一下該接口/該模塊的信號,時序圖
邏輯工程師必須對外圍接口信號,時序,有非常清晰的認識。

常用的邏輯電平有哪些

請畫一下該設計的邏輯框圖
主要考察其對自己所做邏輯的了解,以及講述是否清晰,是否可以抓住重點,而不是糾結于細節(jié)。

以及畫出的框圖,是否清晰美觀。很多人畫的框圖,面試完后再看,完全看不出是個邏輯框圖。

該設計使用了多少邏輯資源
整個設計是用哪個芯片實現(xiàn)的,占了該芯片的多少資源,編譯軟件版本是多少,編譯一次要多久

該設計有多少代碼,方案、代碼、仿真、調(diào)試,分別用了多久

請畫一下該設計的時鐘域
主要考察對邏輯的整體把握??梢岳^續(xù)發(fā)問時鐘域轉換的速率匹配等。
跨時鐘域有哪些類型,分別應該如何處理

請畫一下該設計的數(shù)據(jù)流
主要考察是否對整個設計非常了解。

實際設計考察
有一個設計,外部有一個ad芯片,lvds輸入到fpga,其中有幀時鐘,位時鐘,數(shù)據(jù)有8根。上下沿采樣,每個幀時鐘里面有14個數(shù)據(jù)。幀時鐘為40M。

請問在altera的器件上實現(xiàn),你會如何做。
如果用cyclone3/4器件,io可以實現(xiàn)上下沿采樣么。arriv系列呢。
位時鐘要上全局么,為什么

如果在xilinx器件上實現(xiàn),你會如何做。
如果用spartan6器件,位時鐘需要上全局么
如果用kintex7實現(xiàn),位時鐘需要上那種資源,為什么,這幾種時鐘有什么區(qū)別

管腳分配時,需要考慮哪些
如果時序不過,有哪些手段,需要做位置約束么,需要將第一級寄存器放入iob么
管腳的時序約束如何做
數(shù)據(jù)采好后,跟內(nèi)部時鐘域怎么切換

器件結構

請寫出任意一款使用過的fpga的型號全稱

請解釋該型號的每個字母段的意義

請分別寫出xilinx和altera的低、中、高三個系列的名稱

請畫出任意一款fpga芯片的基本邏輯單元的框圖。如altera的le結構,xilinx的slice結構。
針對該問題的進階問題:(如果畫的圖跟datasheet的比較像,不過我至今沒碰到過)
請畫出移位寄存器是如何實現(xiàn)的
請畫出組合邏輯級聯(lián)是如何實現(xiàn)的

請畫出任意一款fpga芯片的結構,包括內(nèi)部邏輯要素結構,時鐘樹結構。
大概畫出內(nèi)部有ram,dsp等,ram和dsp是如何分布的。
時鐘樹必須畫全
針對該問題的進階問題:
請問該fpga有多少個全局時鐘線
分別分布在哪里
有哪些信號可以上全局
pll的輸入有哪些信號可以上
pll的輸出是否要上全局,是否可以不上全局
pll有多少種模式,分別是什么意思
全局時鐘線的延時大概為多少

請畫出任意一款fpga芯片的內(nèi)部路由示意圖

請畫出任意一款fpga芯片的io模塊示意圖

在fpga內(nèi)部,下降沿采樣時如何實現(xiàn)的

為什么xiliinx不建議使用異步復位

xilinx和altera的器件有什么區(qū)別。軟件有什么區(qū)別

時序約束

一個完整的邏輯設計,應該包括那些時序約束

請畫圖解釋tco_max=2ns,tco_min=1ns的意義

針對一個具體的管腳,做一個輸入時序約束,輸出時序約束

請畫圖解釋multi_cycle

請問clk_group有什么作用

邏輯架構

邏輯模塊劃分的原則是什么,請舉例說明

如何讓一個模塊的可復用性更好

如何讓一個設計可以在不同的fpga芯片上實現(xiàn)

是否有代碼重構的經(jīng)歷,為什么,新舊代碼的區(qū)別在哪里

如何評價一個邏輯設計的優(yōu)劣

時序收斂

在cyclone4的-8的器件上,160M時鐘下,組合邏輯級聯(lián)最多可以做多少級
請講解一個遇到過的時序收斂的實例

如何保證一個設計的時序收斂

如何規(guī)劃整個fpga內(nèi)部的模塊位置,以及外部的管腳分配,數(shù)據(jù)流應該遵循哪些原則

接口掌握

請畫出i2c的時序

請畫出spi的時序

請畫出ddr用戶端的時序。

請畫出pcie的基本協(xié)議

請畫出Transceiver的內(nèi)部結構

邏輯流程

邏輯設計的整個流程包括那些

每個階段占的時間大概有多少

與其他方向的交互都發(fā)生在哪些階段

需要有哪些輸入輸出文檔

邏輯的詳細設計文檔一般包括哪些內(nèi)容

對于邏輯進度是如何評估的,在整個項目周期中,平均每天的代碼量是多少

對于設計質(zhì)量,是如何評價的,每千行代碼,允許的bug數(shù)目在多少

邏輯工程師的水平是如何劃分和評價的,主要有哪些方面,不同等級的要求是怎樣的

其他

你做過的,認為最好的一個設計是什么,為什么

你對于以后的職業(yè)規(guī)劃師如何考慮的

你覺得你的邏輯設計水平處于什么階段,有哪些還需要提高

注:(重要)

本文禁止二次轉載,違者必究,請與作者獲取授權。
知乎 -《一個fpga工程師的成長之路》 - yifei
原文鏈接見“閱讀原文”


-END-




推薦閱讀



【01】FPGA 電源管理不簡單,這幾點要素要牢記
【02】硬貨!拉普拉斯算子的FPGA實現(xiàn)方法
【03】FPGA硬核和軟核處理器的區(qū)別
【04】FPGA開發(fā)之GPIO配置,以ZYNQ為例
【05】幾組實用FPGA原理設計圖


免責聲明:整理文章為傳播相關技術,版權歸原作者所有,如有侵權,請聯(lián)系刪除

免責聲明:本文內(nèi)容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

嵌入式ARM

掃描二維碼,關注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉