SystemVerilog培訓課程
『壹』 systemverilog 中的virtual都是什麼意思
有時候會定義virtual interface, virtual task, virtual function, virtual class...都是什麼意思?
smy05 (2011-9-27 13:04:04)
由virtual所聲明的內容可理解為一個模板,後續的例化和引用可在這個模板上進行增加或修改,這樣就呈現出特定的內容或特性。不同的引用或修改實現不同的對象、介面和方法。
這樣就很方便的實現了面向對象的特性,即多態實現隨繼承對象的不同而不同。
TommyGG (2011-9-28 09:20:10)
說明:
1、virtual interface:定義一個interface,且實例化多個後,如果沒有定義virtual,則在任何一個實例中修改了某個信號值,在其他實例中都會受到影響。如果定義了virtual,則每個實例獨立。
2、virtual function/task:用於OOP思想的繼承使用。當定義了virtual時,在子類中調用某function/task,會先查找在子類中是否定義該function/task,如果沒有定義該function/task,則在父類中查找。未定義virtual時,只在子類中查找,沒有定義就是編譯錯誤。
3、virtual class:從未用過,等待牛人解答
用法:
1、virtual interface:如果該interface只有一個實例,可用可不用virtual,有多個實例,需要virtual。更好的辦法是,都加上virtual。
2、virtual function/task:如果該class不會被繼承,則所有的function/task都不需要加virtual。如果該class會被繼承,則用戶定義的function/task(除了new()/randomized()/per_randomize()/pose_randomize()以外),都應該加上virtual。更簡單的做法是,在用戶定義的function/task都加上virtual是不會錯的。
3、virtual class:期待牛人解答
rice973 (2011-9-28 17:51:22)
多謝解答!
taoleite (2011-9-29 15:32:14)
解答的很清楚。。。多謝
ljxpjpjljx (2011-9-30 09:34:57)
virtual 還是很有用的,是面向對象思想的一個重要特性!
loglong (2011-10-12 13:46:17)
QUOTE:
說明:
1、virtual interface:定義一個interface,且實例化多個後,如果沒有定義virtual,則在任何一個實 ...
TommyGG 發表於 2011-9-28 09:20
1、virtual interface:
interface 和 mole是一樣的, 都是靜態的變數, 也就是在程序開始時, 內存中就有了其實例. 但virtual interface只是申明一個handle, 就好像一個指針一樣, 可以再程序進行中進行construct, 所以class里必須是virtual interface.
2、virtual function/task:
你的意思是不是用classname::taskname()調用時, 有virtual, 但是子類中沒重載的話, 不會報錯?
一般申明了virtual, 就可以重載, 這也是new為什麼不能virtual的原因, 否則被子類重載了, 那用父類的handle new的時候, new出來是啥啊???
3、virtual class:
虛類只用來定義類的格式, 和成員的名字, 參數, 不能被實例話, 只能被重載, 用於在項目中定義一些標準的類, 例如driver類, 這樣大家extend出來的driver的基本的格式都是一樣的, 易讀易理解. 在virtual class里的方法最好使用 pure virtual 修飾, 叫做純虛方法, 也是用來定義方法的名字和參數列表的, 方便大家統一名字.
xiao19821022 (2011-10-13 16:12:23)
解釋得很清楚
wangxuede220 (2012-4-07 12:19:35)
非常的謝謝!
飛揚紫百合 (2012-4-13 07:05:49)
3樓說的還算明白,多實踐就知道了
gfshen (2012-4-21 00:33:37)
回復 1# rice973
明白了啊。。。
deepblue0036 (2012-6-29 15:02:51)
明白了。。
tjuyfb (2012-7-21 23:25:37)
學習一下
jumphigh1987 (2012-8-12 10:40:58)
解釋的非常清楚,受教了
uvmer (2013-6-18 15:56:05)
[i=s] 本帖最後由 uvmer 於 2013-6-18 16:15 編輯
請採納
如果你認可我的回答,敬請及時採納,
~如果你認可我的回答,請及時點擊【採納為滿意回答】按鈕
~~手機提問的朋友在客戶端右上角評價點【滿意】即可。
~你的採納是我前進的動力
~~O(∩_∩)O,記得好評和採納,互相幫助
『貳』 systemverilog 怎麼獲得bits類型的長度
DPI對參數傳遞控制非常嚴格,C中的long long對應SV中的longint。必須如此。否則出錯後果自負。其他對應關系如下,僅供你參考,沒事多看點資料吧。
SV<------->C
byte<------->char
shortint<------->short int
int<------->int(32 bit)
longint<------->long long
real<------->double
shortreal<------->float
chandle<------->void*
『叄』 systemverilog assertion怎麼學
做好的方法是看看驗證同事寫過的,再對照著斷言紅寶書書看看,自己多寫小demo,這樣學起來會很快
『肆』 systemverilog 和verilog有什麼區別
systemverilog 其實就是 verilog 一個更新的版本, 發布於21世紀初。 其中增加了一些新的語內句,特點。
systemverilog 可以直接寫容RTL代碼, 如果代碼里都是組合邏輯的話(always_comb), 就是可綜合的
『伍』 有入門System Verilog書推薦
特權同學(吳厚航)寫的東西值得一讀,很少廢話,適合入門。它的配版套光碟里有每個實驗的權代碼,樓主可以好好看看親手調調。但是fpga入門除了了解fpga的架構外,更重要的是掌握HDL語言,目前比較流行的是VHDL和verilog,當然國外已經開始流行systemverilog了,從就業等多方面因素考慮,建議樓主學習verilog,北航夏宇聞的那本《verilog》尚且可以一看。最後,弄塊板子練練手才是入門的關鍵呵。
『陸』 systemverilog驗證方法學 怎麼樣
1、就來這本書來說,內容是很自詳細,但文本邏輯結構不太好,用這本書入門會遇到些困難
2、就基於system verilog的驗證方法來說,這是一種流行的驗證方法,比傳統的方法可復用的部分更多,驗證也更嚴謹,覆蓋率更大。目前來說,基於SV的驗證方法通常都會與UVM一起用
『柒』 systemverilog哪本書比較好
我也是最近才看的,我感覺鍾文楓的SystemVerilog與功能驗證適合剛入門的朋友看,同時也可以結合小綠書,我主要是看這兩本書。
『捌』 systemverilog設計哪方面的,學習要具備哪方面的基礎知識啊
你要學SV的話,要確保你首先VerilogHDL語言要有一定功底,如果你VerilogHDL很熟,那其實SV並不難,如果說VerilogHDL等同於C語言的話,那麼SV就等同於C++。
再者就是要看你學習SV時選擇的方向,是測試方向還是綜合方向,我用SV是寫可綜合程序的,在可綜合的方面,SV與VerilogHDL的不同之處在於:1.對部分原有的語法進行了擴充;2.增加了新的語法結構。
SV中常用的有包(package),變數細分為對象類型和數據類型,automatic關鍵字,enum,結構體,三種alwyas結構,unique和priority關鍵字,還有interface介面等,其實還有類(class)的應用,但這是不能綜合的。
如果你對VerilogHDL很熟的話,我推薦給你兩本書:
可綜合方向的:
《SystemVerilog硬體設計及建模》
作者:[英]Stuart Sutherland, [英]Simon Davidmann, [英]Peter Flake 著;
於敦山, 韓臨, 何進, 李瑩, 路衛軍 譯
模擬測試方向的:
《SystemVerilog驗證——測試平台編寫指南》
作者:(美)克里斯·斯皮爾,
張春 譯
這兩本書翻譯的都是不錯的,但我建議看英文原版,這樣更好的理解原作者在字里行間所表述的意思。看書是一方面,但只看不做練習,白扯,《SystemVerilog硬體設計及建模》書中列出的網站可下載SV的源碼,下載下來,看懂練會,然後用SV重寫很容易找到的VerilogHDL的實例,做模擬,時間長了你就會了。
『玖』 如何快速學習SystemVerilog語言
如果搞FPGA開發verilog必然要精通。
如果沒有數字電路基礎的話建議首先學一些基本的數字回電路知識。
然後看書,《答Verilog HDL數字設計與綜合》,一定注意只要看能夠綜合的代碼,那些不能綜合的東西可以一帶而過。
實踐!實踐!實踐!光看書絕對學不會。如果你有開發板當然好,如果沒有至少也要寫程序模擬。當時我學的時候買了個幾千塊的開發板。這個東西不練絕對學不會。
總之,先看書,把基本的數電搞懂。然後最好學一點練一點。一個很有用的方法,就是對著書或者自己想一些代碼,然後看看編出的電路是什麼樣子的。
FPGA和C語言等軟體語言相比,非常難以調試。一定要保證學的扎實些。
verilog是硬體描述語言,歸根結底你設計的是電路,而不是軟體,不能那C語言等軟體語言硬套。
『拾』 如何快速學習SystemVerilog語言
如果搞FPGA開發verilog必然要精通。
如果沒有數字電路基礎的話建議首先學一些版基本的數字電路權知識。
然後看書,《Verilog HDL數字設計與綜合》,一定注意只要看能夠綜合的代碼,那些不能綜合的東西可以一帶而過。
實踐!實踐!實踐!光看書絕對學不會。如果你有開發板當然好,如果沒有至少也要寫程序模擬。當時我學的時候買了個幾千塊的開發板。這個東西不練絕對學不會。
總之,先看書,把基本的數電搞懂。然後最好學一點練一點。一個很有用的方法,就是對著書或者自己想一些代碼,然後看看編出的電路是什麼樣子的。
FPGA和C語言等軟體語言相比,非常難以調試。一定要保證學的扎實些。
verilog是硬體描述語言,歸根結底你設計的是電路,而不是軟體,不能那C語言等軟體語言硬套。