【知乎】verilog相關知識雜談

就是一看到verilog 就知道被綜合成什麼電路,通過什麼方法訓練多久能達到這樣的水平?或者至少一些基本的電路能看出來,各位有資料推薦嗎?

作者:Podes
鏈接:https://www.zhihu.com/question/27579255/answer/39585837
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

不看代碼都知道,一定是:組合邏輯+時序邏輯。
例外:沒有電路概念或者基礎的初級ICer偶爾會出現組合邏輯環或者不期望的鎖存器的情況。這些錯誤工具都可以幫你找出來。

你可能要說,這不是屁話麼?不是屁話,IC前端工程師絕大多數情況下只關心到這個層次。
例外:全定製設計或者模擬/RF工程師寫的很小電路,可能會需要更深入,組合邏輯內部結構會影響速度。

IC前端工程師需要關注的是面積,速度和功耗這些因素。因爲你的老大不會讓你設計一個模塊而無任何約束。一般情況下,代碼寫完了一綜合,哦,速度達不到老闆的要求,回頭重改! 改了之後,哦,面積又不行了,再改!
折騰久了,你在啪啦啪啦敲代碼的同時,內心就會多一雙眼睛。我搞這麼大這麼複雜的一個組合邏輯,會不會速度起不來啊? 我把邏輯拆分這麼細,隨手就定義一個64bit的寄存器,會不會面積超過預算? 這部分邏輯信號是否可以在idle時約束到固定值,節省動態功耗?

==========================================================
菜鳥到碼神的進階之路
==========================================================
心中無電路,代碼無電路
這個估計就是第一天學硬件描述語言的情形。或者是一個軟件專業的工程師轉行來做電路設計時的窘態。
建議:好好上課,認真聽講吧。

心中有電路,代碼無電路
我想設計一個交通燈控制邏輯,邏輯關係圖都畫好了,腦袋裏已經把各個轉換條件都想通透了,但就是不知道代碼怎麼下手哇。這是沒有掌握語言工具的情形。
建議:死磕語言語法。

心中有電路,代碼有電路
剛畢業加入職場,上級分配一些小規模的模塊給你。這怎麼搞哇,腦容量不夠,無法完整地想象出電路的結構。好吧,先在稿紙上研究。三天奮戰後,幾張A4紙上已經是滿滿的電路。藍圖繪就,只待轉碼。這個算是生硬的直譯。
建議:多加班,少玩知乎。

心中無電路,代碼有電路
經過幾年的碼農生活歷練,收穫白髮的同時也成IC編碼老鳥了。拿到設計需求,花半個小時通讀SPEC,就直接開始編碼了。語言工具爛熟於胸,文思如泉涌,一切信手拈來。代碼一看就有美感,assign,always錯落有致,時序層次清晰,組合邏輯大小合適。光看代碼就知道這個電路結構。武林高手就此誕生!
建議:多跑主管辦公室,漲薪水。

心中無電路,代碼無電路
經過多少次將寫好的代碼推倒重構,經過多少次否定之否定的哲學沉思,你從此走上了碼農到碼神的修煉之路!
一切數字邏輯,小至1bit的寄存器,大至一個CPU內核,難道不可以歸一化爲一個FSM?
一個FSM難道不就是一個組合邏輯雲後面加一組寄存器做時序定序?
一個組合邏輯雲不就是一個算法描述嗎?
一個無時序算法描述跟C程序不一樣嗎?
FSM本質上就是算法描述,跟電路結構無關。從FSM代碼去想背後的電路結構毫無意義。
FSM代碼就是直觀的算法描述,一看就懂,最容易被人懂。
直觀的算法描述跟功能SPEC最接近。我可以把文字的spec直接翻譯成算法的代碼描述!
Okay,既然上升到形而上的高度,你已經是碼神了。即便一個帶復位和使能的觸發器設計,你也有慾望把他寫成FSM,而不用always,if-else這種語法結構。這樣纔是一代碼神的風範!
建議:你在這一行的路已經走到頭,絕世高手一般都是退隱江湖的。

至此,我們又回到了心中無電路代碼無電路的境界,一個循環結束。回到起點你的感覺如何? 開個小飯館?水吧?或者咖啡店? 反正好歹我是再不幹這個了,大家都這樣想。

人在江湖,豈能輕易上岸?金盆洗手一般都是癡心妄想!電影裏面都是這樣描述的。


作者:Forever snow
鏈接:https://www.zhihu.com/question/27579255/answer/37196173
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

初學者容易有這方面的困惑,但是這個問題的層次還不夠深入。儘管VerilogHDL是數字IC入門的基礎和工程師的基本技能,但是還是需要掌握一定的知識後才能精通,注意是“精通”。“精通”應該達到什麼樣的能力呢?
1、看到電路功能需求後知道何種電路結構是最優的。
2、設計出電路結構後,知道如何使用VerilogHDL進行描述。
3、設計電路和使用VerilogHDL 描述的時候能夠從性能、面積、功耗、可測性等方面去考慮。
4、能夠精確理解“RTL”的含義。VerilogHDL和電路是相通的,看到代碼之後能夠知道電路結構是怎麼樣的?包含多少個寄存器?
5、在第4條的基礎上,看到VerilogHDL代碼後能夠大致推斷出電路的性能、功耗、面積等,包括關鍵路徑在何處、關鍵路徑大約包含多少級邏輯鏈路、那部分對功耗、面積、性能等影響最大(當然,這些在設計電路結構的時候就應該考慮好,從verilog反推也應該能達到這樣的能力)。
(大概是這些吧,想到了其他項再補充。)
先來看Synopsys公司的一個tool:LEDA。LEDA在做coding style審查時,主要包括Synthesis、simulation、DFT、design style等等很多個方面,這些都是對設計人員書寫VerilogHDL的全面約束和指導,從而在項目初始就保證Verilog code在style方面是有一定質量保證的。這些約束和上面說到的5條技能是息息相關和一一對應的。從上面的技能要求可知,達到精通VerilogHDL需要有以下的基礎知識(默認以學過VerilogHDL基本語法):
1、VerilogHDL與電路結構的一一對應:
Synopsys DesignCompiler的workshop和關於HDL Compiler for Verilog User Guide。
2、VerilogHDL與電路性能等一一對應:
這方面涉及到的知識比較多,主要包括Standard Cell Library、STA等,參考書有(1)Static Timing Analysis forNanometer Designs: A Practical Approach. J. Bhasker, Rakesh Chadha. SpringerScience Business Media, LLC 2009. (2)DC和PT手冊中關於timing的 User Guide。
同步學習1-2理論基礎的同時,需要學習、熟悉、精通相對應的EDA tool,即:LEDA、DC、PT、Primepower等。
學習以上知識之前,應該具備數字集成電路基本知識,這樣才能對以上的知識有更深入的理解。除了基礎知識外,還需一定項目開發的歷練,即可達到“精通”的目的了。

待續


發佈了41 篇原創文章 · 獲贊 70 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章