星期三, 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, 看看有沒機會跟公司凹一下,下午來去上課。

4 則留言:

小綠 提到...

這位大大您好:
我是無意間瀏覽到這篇您打的網誌
我是verilog的新手
我很想看一下您這篇有關計組方面
用verilog所寫的pipeline的code
不知道這位大大是否可提供給小弟當作學習和思考的方向呢??

e-mail:barbenq@msn.com

Jack 提到...

嗯,這是一個好問題

第一:要回頭找一下

第二:雖然我目前沒有持續性的繼續寫Verilog Code,不過回頭看之前所寫的,整個是會動沒錯,也沒甚麼錯誤,整個Code雖不龐大,但也不小,如不參照正確的流程圖,其實我想也是看不懂的,故不建議參考。

第三:新手,也許這樣會影響到你的根本。當初我是以C 程式邏輯下去寫的,因此也碰了很多DEBUG的釘子,也沒看過正規的寫法,只是知道幾個基本指令及其用法概念就下去寫的,光Coding->Debug->Coding->Debug...就不知道幾次了,因為在Linux下寫C,很常這樣的printf,但在Verilog下,這樣的方式太龜了。

第四:其實只要有正確的圖,只要按圖寫Code接線,十幾道命令的Pipeline MIPS,按圖施工,一個晚上就可以寫好,圖才是真正的重點,其實我也是自己動手寫Code時才發現,我們學校那個朱老師叫學生背圖也是有目地的,在寫Code的時後真的有很大的幫助,不可能邊寫Code邊看圖,如果很熟整個流程,其實邊寫腦袋也會有一張圖,相輔相成。

若你真的需要我再找給你吧。

Jack 提到...

The source code has been sent to you.

Please reference below link for the document of datapath。

Welcome any feedback.

http://g9677606.blogspot.com/2010/10/pipelined-mips-lite-cpu.html

小綠 提到...

大大您好:
我現在還是沒收到您寄的e-mail
我現在正在閱讀您reference的那篇文章
晚一點再看看會不會收到您寄的e-mail
先在這跟您說聲謝謝

e-mail: barbenq@msn.com 或
s98323546@ncnu.edu.tw