nWave拷貝

  今天升上碩班一年級,開始練習寫verilog,然後老師給cic的比賽題目練習,雖然知道成大也有人寫,但是找不到資料阿~~~~

看了幾本verilog的書感覺都很不是好學,應該說上手跟c還是有所差別.....總之趁現在寫完這一題來打個心得......

裡面一定有很多錯誤,還有一些目前了解的心得.....看看就好

初試題目就寫了很久,這下該怎麼辦啊................

更慘的是看參考解答還看不懂最佳解答是怎麼寫得如此精簡,真是太強悍了.......


 

先介紹一下這一題的題目內容

給8*8的xy座標軸和3點座標,要求計算出3點座標連線成三角形內的整數座標值

正緣clk觸發、po==1 && busy==1時輸出、輸出順序由最低y值,x依序輸出。

題目交代:x1=x3,y1<y2<y3。   利用斜率公式做判斷。  

(X3,X2)那一條是不是RIGHT還是LEFT有點忘了....不敢確定

 圖片1

ncverilog compile

用指令ncverilog testfixture.v triangle.v +access+r +FSDB 跑出來的結果終於通過了.........

我的作法是先把架構弄出來,輸出先用計數器把答案的值全部先自己給,因為每次只要一錯誤就會造成程式迴圈跑不完

答案自己給當然會對,接下來是判斷式和計算,當利用斜率做判斷式通過時xo和yo給值,之後確定給的值都對了之後再利用暫存輸出

但是後來發現暫存輸出不知道怎麼寫,所以改多寫一個always判斷只要變動就輸出。沒想到就過了.........

寫程式所花時間大概有超過30小時吧.....第二次寫真是麻煩呢............


 

 

其中是用nWave進行除錯,當初一直跑不完導致程式一直跑不動,所以才想到用先把答案全給之後再繼續寫

畢竟也要有波型才能debug阿..........

不過參考答案裡面的波型好像不太一樣?

參考答案真的非常厲害,除了行數少之外,所花時間也超少,看結果報告他的程式跑5個測試只花10000ns左右

我跑兩個就花了127000ns,差了超過10倍以上的時間,說實在我的程式只能符合這兩個測試

看了之後3個測試給的座標,我沒有信心可以跑過,畢竟在判斷式上面我總覺得有點bug

nWave拷貝


 

 

最後波型也過了就改用nLint做合成前的compile的測試

一堆錯誤........雖然是確定可以合成拉,但是老師要求要把錯誤都改掉,夭壽= = 

我還要再想想怎麼消掉,主要是在判斷式那邊造成非常多的錯誤,912個...........

nLint compile


最後附上我的.v檔,雖然一點屁用都沒有,真正有參考價值的應該是參考解答吧= =  triangle.v

以下是我做到現在碰到的問題,順便做個筆記

FAQ:

問0:nWave 開不了出現License的問題

A:經過學長的交叉測試,似乎是source的license有問題,複製好的.cshrc貼上或改license路徑,似乎是程式的license有互相衝突

 

問1:.fsdb因程式而結束不了而無法產生檔案

A:其實還是有寫到FSDB檔裡面,但nWave會顯示說波型太長無法開啟。可以在testfixture.v檔裡面加.VCD的語法產生.VCD的波型檔

  雖然檔案會比較大....用nWave右下加入檔案有個filter改成*.vcd就可以開.vcd的波型檔了

  其實後來測試fsdb還是開得起來= = 

 

問2:快速刷新Reload nWave 波型

A:shift+L

 

問3:一些語法規則

A:always內不能有wire和assign的port,而兩個always不能改同一個reg資料,會造成衝突

  所以通常另一個是放判斷吧?

 

問4:if(條件式),條件式可運算

A:  我用if(xx<=(cond2*(yy-y1)+x1) 可以過,應該可以。還可以多個判斷呢

 

問5:verilog、ncverilog不同?

A:我用verilog testfixture.v triangle.v語法和ncverilog testfixture.v triangle.v +access+r +FSDB

   似乎好像會不一樣,雖然最後我是用NCVERILOG了,用verilog compile很快 ncverilog比較慢

   但是ncverilog會過= = 

 

問6:DEBUG心得

A: 這次碰到蠢事,當所有邏輯都對,但波型卻錯,最後發現原來是暫存器的bit數社的不夠,難怪一直數值錯誤...

 

問7:VERILOG 語法

A:  不能有小數和負數,要用別的方式去算,畢竟硬體合不出來。若有負值變成正值或錯誤數值。

     還有這一題其實是考除法器,但我不知道怎麼用= =   硬體做不出除法器.......

     除法基本上用位移,這題的參考解答是用查表斜率達到超快速解的目的

 

問8:合成的東東

A:.ddc合成後的電路圖文字資料   .sdf   delay的資料給dft用    .sdc  constraint file 合成指令

 

 

 收工。

 

  

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 hotdoghotgo 的頭像
    hotdoghotgo

    熱狗的碎念...

    hotdoghotgo 發表在 痞客邦 留言(0) 人氣()