星期三, 1月 16, 2008

羅設 Verilog 心得

趁著記憶猶新, 簡單記錄一下, 這學期在計組所學的東西,拼了幾個晚上,這門課同學的分數都掌握在我的手上,壓力真大呀。

1. 花了大約一週的時間, 學習簡單的verilog 語法, 寫出簡單的原件, Multiplier , Booth , Divider MUX, ALU , 每個大約十幾行而已。
2. 花了大概三四天把 MIPS-Lite, 十幾道的指令, 用之前那週的東西稍做修改, 然後寫成5 階Pipeline 組起來,經自行驗證,beq、jump、 Hazard 等問題都解決了。

從不會Verilog 到, 寫出一個含有1x道指令的 5階 pipeline mips CPU , 花了兩週而已,由此可見,verilog 入門不難( 當然入門是不需要考慮 精簡的問題、Performance的問題 )。

然而從學習的過程來看則不然,老師上課並沒有教導Verilog,以致於須要自己先去研究Verilog寫法,雖然它很簡單( 大概看10分鐘就可以開始寫了 ),不過同學卻很頭大。也許是背景的問題( 我本身有C語言約7年經驗,到目前還是專攻C,在Embedded Linux system上,而且是電子科二專,邏輯的課很早就上過了,也許造成了入門門崁的差異性。)

然而,這門課的考試,我卻很頭大,期末可能只有30分,考的都是我寫的程式,-.- 怎麼會這樣呢??..Code都寫完了,考試時腦袋一片空白,三十幾歲記憶力嚴重退化@@, 深思了一下 "龜究" 幾個原因來推托一下。


1. 老了。( 老了本來記性就不好,考不好是應該的。) 那些考出來的圖, 寫Code 的時候不知到看了幾百遍了,課本都翻爛了,考試時還是一片空白。


2. 寫Code的方式有問題,寫 C 跟寫Verilog,同樣是寫Code, 不過這兩個語言基本上有非常大的差異性。 寫 C這類的語言,很多時候是在腦海裡直接有個想法,然後動動手Key 一下就出來了。
Verilog 不能這樣攪,不知道我還太菜還是怎樣,這有許多時序的問題,而很多地方卻又沒有順序的問題,常導致許多的錯誤。


3. 我們在用的ModelSim 5.7d 版很爛, Compiler非常的濫(難到現在在業界還用5.7?), 有問題的Code 有時不會抓出來。


4. 寫verilog 不是問題,而問題發生在老師所上的課,那些流程圖、方塊圖,那些才是重點,為甚麼呢? 基本上掌握那些圖,把腦袋關起來寫Code 都會動,所以要學的是圖而不是Code( 從我一星期就能寫出 pipeline CPU 發現) 真的都是[按圖施工,保證成功],不過當做到beq, jump, 等Function 時開始就頭痛了,教科書竟然沒有教!!!,這是才是苦命的開始,照著寫C的做法心裡先想好,開始coding、 compile、Run、 !!BUG!! ---> re-coding 、re-compile。


攪了幾天才回頭想到那句名言:[按圖施工,保證成功],亂攪真的很傷腦。

下學期有新的ARM 課程還要教怎樣把IP兜在一起、System Verilog, 看看有沒機會跟公司凹一下,下午來去上課。

沒有留言: