電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>一個IC設(shè)計工程師需要具備的知識架構(gòu)資料下載

一個IC設(shè)計工程師需要具備的知識架構(gòu)資料下載

2021-04-20 | pdf | 305.21KB | 次下載 | 5積分

資料介紹

剛畢業(yè)的時候,我年少輕狂,以為自己已經(jīng)可以獨當一面,廟堂之上所學已經(jīng)足以應(yīng)付業(yè)界需要。然而在后來的工作過程中,我認識了很多牛人,也從他們身上學到了很多,從中總結(jié)了一個IC設(shè)計工程師需要具備的知識架構(gòu),想跟大家分享一下。 技能清單 作為一個真正合格的數(shù)字IC設(shè)計工程師,你永遠都需要去不斷學習更加先進的知識和技術(shù)。因此,這里列出來的技能永遠都不會是完整的。我盡量每年都對這個列表進行一次更新。如果你覺得這個清單不全面,可以在本文下留言,我會盡可能把它補充完整。 語言類:Verilog-2001/ VHDL ,SystemVerilog/ SystemC,Makefile/ Perl/ Python/ Shell,Tcl 工具類:NCVerilog/ VCS/ ModelSim,SimVision/ DVE/ Verdi,Vim/ Emacs,SVN/ CVS/ Git,Microsoft Office 平臺類:Windows,Linux,OS X 其他加分項目:MATLAB,ISE/ Synplify/ Vivado/ Quartus,LEC/Formality,VMM/ UVM,ESL,ZeBu Server,JIRA/ Confluence,C/ Assembly Language,Computer Architecture/ ARM Architecture/ MIPS Architecture 為什么 & 怎么辦 A) Verilog-2001/ VHDL 這里之所以強調(diào)Verilog-2001而不是Verilog-1995,是因為在Verilog-2001中規(guī)定了很多新特性,因此可以產(chǎn)生更好的代碼風格。 我曾經(jīng)在什么是良好的Verilog代碼風格一文中對新版的接口語法進行過詳細的舉例說明。這種新的接口方式修改起來更加簡單,例化模塊的時候使用也更加方便,不像舊版的接口語法由于一個接口需要分3次描述,無端端增加了代碼行數(shù)而且閱讀和改動都很困難,尤其是當一個模塊的接口數(shù)目超過一個屏幕的顯示范圍時Verilog-2001的這種優(yōu)勢更加突出。 學習Verilog最大的問題就是:很多國內(nèi)的書寫得都很不好,書中的很多例子都是為了說明語法特征而存在的,沒有任何實用價值,甚至很多代碼都是錯誤的(這里錯誤的意思并不是說他語法錯誤,而是說他是不可綜合的,無法用數(shù)字電路來對等實現(xiàn)的)。 所以,對于學習Verilog,我的建議是,隨便找一本類似語法手冊的書籍,匆匆把基本語法看過一遍,搞清楚模塊定義,接口定義,模塊例化,寄存器定義,線定義,always塊怎么寫這些基本內(nèi)容后,就開始到OpenCores網(wǎng)站上去下載已經(jīng)經(jīng)過FPGA驗證的完整開源項目代碼進行學習。先做到看懂別人寫的代碼,然后再嘗試自己去模仿,有不懂的問題再有針對性地去網(wǎng)上搜索答案。 Verilog語言與軟件語言最大的區(qū)別就是,因為它是用于描述電路的,因此它的寫法是非常固定的,因為電路的變化是非常有限的。學習Verilog的時候,很多時候我們并不是在學習這門語言本身,而是學習其對應(yīng)的電路特征,以及如何對這個電路進行描述。 如果心中沒有電路,那么你是不可能寫好Verilog的。從基礎(chǔ)開始,一點點積累類似計時器,譯碼器這樣的小型電路描述方法是非常重要的。Verilog鼓勵在電路中進行創(chuàng)新,而不是在描述方法上進行創(chuàng)新。因此,即使是世界上最牛的Verilog高手,他寫出來的Verilog代碼語法也都是很普通的,而他的創(chuàng)意則在于如何去組合這些基本的小型電路。 VHDL雖然我并不是太了解,但是目前在歐洲很多國家,VHDL還是主流的RTL設(shè)計語言。VHDL語言的嚴謹性比Verilog要好,不像Verilog中一樣存在大量符合語法卻永遠無法綜合的語句,容易對新人造成誤導(仿真通過的代碼卻在FPGA綜合時報錯,或者FPGA實現(xiàn)結(jié)果與仿真不一致)。而VHDL和Verilog雖然可以相互轉(zhuǎn)化,但是轉(zhuǎn)化過程中仍然存在很多問題,無法做到完全的自動化。關(guān)于這一點我之前寫過一篇專題進行探討:如何將VHDL轉(zhuǎn)化為Verilog。有興趣的同學可以去看看。 B) SystemVerilog/ SystemC 這兩種語言都是為了驗證而存在的。作為IC設(shè)計工程師,驗證知識不是必須的,但是掌握基本的驗證方法學有助于提高自己的debug效率和結(jié)果。我曾經(jīng)在如何快速搭建模塊驗證平臺一文中詳細介紹過一種我自己總結(jié)的驗證方法,這種方法就是基于SystemVerilog語法實現(xiàn)的。由于SystemVerilog對Verilog完全兼容,就像C 對C語言的兼容一樣,所以SystemVerilog(或SV)學起來其實并不算難。 SystemVerilog是一種面向?qū)ο蟮恼Z言,其設(shè)計的本意是用于搭建驗證平臺,主流的VMM/UVM方法也都是基于SystemVerilog實現(xiàn)的,所以立志成為IC驗證工程師的同學,SystemVerilog的深入學習和流行方法論的學習都是必不可少的。 而對于那些只想做IC設(shè)計的同學而言,SystemVerilog同樣也是值得學習的。且不說本文前面提到的用于提高驗證效率的debug方法,即使只是為了做好設(shè)計,SystemVerilog也是大有用武之地。在歐美很多發(fā)達國家,很多世界頂級的IC設(shè)計公司內(nèi)部都已經(jīng)開始使用SystemVerilog進行RTL設(shè)計了。 由于在SystemVerilog中加入了很多類似always_ff、always_comb等用于顯式表明綜合電路意圖的新語法,代碼的可讀性更高,綜合過程中也減少了歧義,盡可能地保證了綜合結(jié)果與設(shè)計意圖的一致性。從另一個角度來說,asserTIon的加入也極大地提高了代碼的debug效率,非常有助于在大規(guī)模的數(shù)據(jù)交互過程中定位到出錯的初始點,沒有掌握的同學可以多花一些時間研究一下。 C) Makefile/ Perl/ Python/ Shell 以上四種都是IC設(shè)計工程師們常用的腳本語言,看起來似乎它們都跟IC設(shè)計的專業(yè)能力沒有絲毫關(guān)系,但是由于本行業(yè)的專業(yè)工具價格非常昂貴,項目需求差異極大,因此掌握一門得心應(yīng)手的腳本語言將對你工作效率的提升幫助極大。如果你還沒有嘗試過編寫自己的腳本語言,那么問問你自己,有沒有曾經(jīng)為了完成一批仿真用例熬到深夜?有沒有曾經(jīng)因為要比對幾萬個數(shù)據(jù)搞到眼瞎?有沒有曾經(jīng)因為要修改一個全局信號的比特位寬而無比抓狂?要把一個hex類型數(shù)據(jù)文件轉(zhuǎn)換為memory模型需要的特殊格式怎么辦?沒錯,如果你掌握了腳本語言,以上這些奇奇怪怪的需求都不是事兒,重復而細致的體力勞動就交給計算機來完成吧。我一向信奉的口號就是:但凡做過一次的事情,就沒有必要重復第二次。 如果你已經(jīng)在工作中使用過其它工程師開發(fā)的平臺或者腳本,那么它很可能是用這4種語言寫成的。如果執(zhí)行腳本的方式是make run,那么很可能你用到的是一個Makefile腳本;如果執(zhí)行方式是source run,那么這應(yīng)該是一個Shell語言寫成的腳本;如果是其它情況,那么就得看具體這個腳本首行是怎么寫的了。 Makefile和Shell語言比Perl/Python要更容易上手,寫起來也更加簡單,比較適合滿足一些非常簡單的批量任務(wù)需求。Perl的強項則在于它強大的文本處理能力和無所不能的CPAN庫,隨時可以滿足你的各種任性需求。Python的優(yōu)點則是較好的可維護性。 關(guān)于腳本語言的重要性,大家可以到這里看看相關(guān)討論:Perl等腳本語言在IC設(shè)計中有哪些用處?。 D) Tcl 嚴格來說,Tcl是一門非常單純而簡單的語言,而它的學習難點在于,只是掌握它的語法是遠遠不夠的。這種情況有點類似javascript,如果你用js來開發(fā)網(wǎng)頁,那么你必須深入了解DOM和HTML;如果你用js來開發(fā)游戲,那么你必須深入了解Unity3D引擎的各種知識;如果你用js來開發(fā)Web App,那么你必須會用node.js的各種庫和常見的服務(wù)端框架。 語言永遠只是工具,這句話放在Tcl上再合適不過了。在IC設(shè)計這個領(lǐng)域中,Tcl是一門非常常見的語言。他可以用于描述時序和管腳約束文件,UPF信息,也可以用來搭建簡單的工作平臺。它既是很多IC領(lǐng)域EDA工具默認支持的腳本語言,也是這些工具配置和輸出的文件格式。因此,能夠讀懂Tcl,掌握Tcl語言的基本語法,就可以幫助你更好的使用EDA工具,真可謂是Tcl在手,天下我有! 但是,成也蕭何敗蕭何,正如前文一開始提到的,僅僅掌握了Tcl的語法還遠遠不是全部。不同的EDA工具對Tcl腳本提供的命令和參數(shù)支持都是不一樣的,每當你需要為一種新工具編寫Tcl腳本時,都必須要熟讀官方給出的用戶手冊,了解這種工具支持的Tcl命令結(jié)構(gòu),才能確保寫出的腳本是可以被正確執(zhí)行的。 E) NCVerilog/ VCS/ ModelSim/ iVerilog 以上三種都是比較業(yè)界比較主流的仿真工具,其中NCVerilog和VCS都只支持Linux平臺,而ModelSim貌似是同時支持Linux平臺和Windows平臺的。但是不管哪一種,我都希望大家能意識到兩件事: 第一,仿真器和波形查看器是兩回事,本條目介紹的只是仿真器,仿真器的工作原理跟波形查看器是有天差地別的,同時由于IEEE對標準波形文件*.vcd格式的規(guī)范,任意仿真器都是可以和任意波形查看器組合使用的。 第二,仿真器通常是沒有圖形界面的,為了更好地使用仿真器,你要熟讀自己常用仿真器的用戶手冊,了解一些常見需求的命令行參數(shù),至少要做到了解如下內(nèi)容:如何指定編譯的文件類型,如何指定編譯文件清單,如何指定索引目錄,如何指定仿真精度,如何指定臨時的宏變量,如何指定語法檢查的嚴苛等級,如何混合編譯由多種語言寫成的工程,如何調(diào)用不同波形生成工具的pli接口,如何配合SDF反標進行后仿等等。 不同仿真器的功能其實都大同小異,但是是不是只掌握一種仿真器就可以打遍天下無敵手了呢?當然不是。在實際的工程中,我們經(jīng)常用到第三方IP核,有時候出于保密的需要,第三方IP核會以加密二進制文件的方式提供,加密二進制文件長啥樣呢? 它們一般以“*.vp”格式命名,文件的開頭部分就是標準的Verilog語法,但是在一行注釋之后就全部變成了亂碼。通常亂碼之前的那行注釋會指定該加密二進制文件支持的仿真器類型。所以你看,如果你是一個重度VCS使用者,而有一天項目經(jīng)理突然塞給你一個只支持NCVerilog的加密文件,你內(nèi)心一定會有千萬只***呼嘯而過。 F) SimVision/ DVE/ Verdi/ ModelSim/ gtkWave 與上面的仿真器相對應(yīng),以上三種也是業(yè)界比較主流的波形查看工具。所有的波形查看器都必須支持標準波形文件*.vcd格式,但是由于*.vcd格式的存儲性能并不好,冗余信息過多,所以各家波形查看工具都紛紛推出了自己獨家支持的波形文件格式,如DVE的*.vpd,Verdi的*.fsdb,ModelSim的*.wlf, SimVision的*.shm等。通常波形查看工具獨家支持的文件格式都具有較高的壓縮率。 舉例來說的話,通常1G左右的*.vcd格式波形轉(zhuǎn)換為*.vpd格式后只有40MB左右,而轉(zhuǎn)換為*.fsdb后通常會更小,因此將標準波形文件*.vcd轉(zhuǎn)換為其他壓縮格式更加有利于數(shù)據(jù)備份。 如果希望在仿真過程中不生產(chǎn)*.vcd,而是直接生成壓縮率更高的其他波形查看器專用格式,則需要調(diào)用對應(yīng)工具提供的pli接口,同時配合測試平臺代碼中的系統(tǒng)函數(shù)調(diào)用(如$fsdbDumpOn等)來完成。 G) Vim/ Emacs 經(jīng)??吹揭恍¬erilog新人提出這樣一個讓人啼笑皆非的問題:“請問一般Verilog編程用什么樣的軟件? 首先,Verilog是一種電路描述語言,它本質(zhì)上可能跟電路圖的血緣還更近一些,至少不應(yīng)該把這個描述過程說成是“編程”。 其次,寫Verilog其實并沒有什么專門的軟件,大部分業(yè)界的工程師都是用Vim或Emacs這樣原始粗獷的文本編輯器來寫Verilog代碼的,如果你愿意的話用Notepad或Texteditor來寫也未嘗不可,只是如果你有深入了解過Vim或Emacs的話,自然就會明白這么多人選擇它們的原因所在——提高效率。 1、你是否曾經(jīng)在代碼寫完之后被老大臭罵一頓原因是你沒有把所有的reg和wire定義都放到文件的統(tǒng)一位置(如第38行)?如果使用Vim編輯器的話,只需要使用:g%^\s*reg\s*%m 38加上:g%^\s*wire\s*%m 38就可以了。 2、你是否曾經(jīng)被要求刪除某個文件中所有的注釋?只需要:%s%//.*$%%g就可以了。
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費