1. 驗(yàn)證的主流語言為什么是System Verilog語言?

一個(gè)掌握Verilog語言的工程師初次看SystemVerilog都會(huì)有這樣的感受,這就是Verilog啊,很容易啊,So easy啊。沒錯(cuò),確實(shí)是這樣,System Verilog的產(chǎn)生就是因?yàn)樾酒O(shè)計(jì)規(guī)模不斷增長,功能日趨復(fù)雜,單純的用Verilog和VHDL等硬件語言已經(jīng)無法滿足驗(yàn)證的需求,結(jié)合C,C++等軟件語言,又顯得難度太大,不容易掌握,因此產(chǎn)生了SystemVerilog,當(dāng)然也產(chǎn)生了其他驗(yàn)證語言,比如Vera和e語言,但因?yàn)镾ystemVerilog結(jié)合了來自 Verilog、VHDL、C++的概念,還有驗(yàn)證平臺(tái)語言(OpenVera和e語言)和斷言語言(OVA和PSL),使得SystemVerilog在驗(yàn)證界坐穩(wěn)了第一的寶座。它將硬件描述語言(HDL)與現(xiàn)代的高層級(jí)驗(yàn)證語言(HVL)結(jié)合了起來。使其對于進(jìn)行當(dāng)今高度復(fù)雜的設(shè)計(jì)驗(yàn)證的驗(yàn)證工程師具有相當(dāng)大的吸引力。這些都使得SystemVerilog在一個(gè)更高的抽象層次上提高了設(shè)計(jì)建模的能力。隨著不斷地發(fā)展,System Verilog擁有芯片設(shè)計(jì)及驗(yàn)證工程師所需的全部結(jié)構(gòu),它集成了面向?qū)ο?a target="_blank">編程、動(dòng)態(tài)線程和線程間通信等特性,作為一種工業(yè)標(biāo)準(zhǔn)語言,SV全面綜合了RTL設(shè)計(jì)、測試平臺(tái)、斷言和覆蓋率,為系統(tǒng)級(jí)的設(shè)計(jì)及驗(yàn)證提供強(qiáng)大的支持作用。另一方面,驗(yàn)證方法學(xué)(VMM、OVM、AVM和UVM等)的推動(dòng)也功不可沒,System Verilog能夠和芯片驗(yàn)證方法學(xué)結(jié)合在一起,即作為實(shí)現(xiàn)方法學(xué)的一種語言工具。使用驗(yàn)證方法學(xué)可以大大增強(qiáng)模塊復(fù)用性、提高芯片開發(fā)效率,縮短開發(fā)周期。
2.出鏡率較高的數(shù)據(jù)類型
邏輯(logic)類型。
四狀態(tài)類型:interger,reg,logic,time,wire,tri
雙狀態(tài)數(shù)據(jù)類型(更好的性能,更低的內(nèi)存消耗)。
二狀態(tài)類型:bit,int,byte,shortint,longint
隊(duì)列,動(dòng)態(tài)和關(guān)聯(lián)數(shù)組(自帶搜索和分類功能)
隊(duì)列和數(shù)組的操作,常常用在reference model建?;蛘遚hecker的數(shù)據(jù)比對過程中。隊(duì)列的操作包括常用函數(shù):insert,delete,push_back, pop_back, push_front, push_back等;數(shù)組的操作(min最小值,max最大值,unique排除重復(fù),find索引相關(guān),sum求和,sort升序,rsort降序,reverse倒序,shuffle亂序等。
關(guān)聯(lián)數(shù)組(對于非常大的尋址空間存儲(chǔ)建模,我們只需要訪問邊界值,以及中間個(gè)別一些空間進(jìn)行驗(yàn)證,關(guān)聯(lián)數(shù)組提供保存稀疏矩陣的元素)。

枚舉類型
類似于宏定義,或者使用參數(shù)。
typedef enum{WAIT, DECODE, READY}fsmstate_e;
fsmstate_e pstate,nstate;

結(jié)構(gòu)體(支持抽象數(shù)據(jù)結(jié)構(gòu))用struct建語句創(chuàng)建數(shù)據(jù)結(jié)構(gòu)。
typedef struct{bit[7:0] r, g, b} pixel_s;
pixel_s my_pixel;

fork...join塊可以指定一條或多條語句,每一條語句都應(yīng)該作為并發(fā)進(jìn)程執(zhí)行。
| 選項(xiàng) | 描述 |
| join | 父進(jìn)程會(huì)阻塞直到這個(gè)分支產(chǎn)生的所有進(jìn)程結(jié)束。 |
| join_any | 父進(jìn)程會(huì)阻塞直到這個(gè)分支產(chǎn)生的任意一個(gè)進(jìn)程結(jié)束。 |
| join_none | 父進(jìn)程會(huì)繼續(xù)與這個(gè)分支產(chǎn)生的所有進(jìn)程并發(fā)執(zhí)行。在父線程執(zhí)行一條阻塞語句之前,產(chǎn)生的進(jìn)程不會(huì)啟動(dòng)執(zhí)行。 |

Function和Task
function執(zhí)行不消耗時(shí)間,帶時(shí)間的操作如#100ns,@,wait等都不能出現(xiàn)在function。所以一般而言,function是不能調(diào)用task的,但是在fork……join_none中例外。函數(shù)可以有返回值。
消耗時(shí)間的操作用task,比如driver里面對信號(hào)的驅(qū)動(dòng)過程,一般來講是在task中完成,但是具體的算法是由function完成的,所以,task中調(diào)用function。task沒有返回值。
3. System Verilog的Interface

這是一個(gè)比較新的概念,Interface封裝了連接性:接口可以作為單個(gè)項(xiàng)目通過端口傳遞,從而用單個(gè)名稱替換一組名稱。這減少了建模端口連接所需的代碼量,并提高了端口連接的可維護(hù)性和可讀性。封裝功能,與通過接口連接的模塊隔離。因此,通信協(xié)議的抽象級(jí)別和粒度可以完全獨(dú)立于模塊進(jìn)行細(xì)化。
可以包含參數(shù)、常量、變量、函數(shù)和任務(wù)、流程和連續(xù)分配,這對于系統(tǒng)級(jí)建模和測試應(yīng)用程序都很有用。
可以幫助構(gòu)建功能覆蓋記錄和報(bào)告、協(xié)議檢查和斷言等應(yīng)用程序。
可以用于無端口訪問:接口可以作為模塊中的靜態(tài)數(shù)據(jù)對象直接實(shí)例化。因此,可以從設(shè)計(jì)中的不同點(diǎn)調(diào)用用于訪問接口內(nèi)部狀態(tài)信息的方法來共享信息。
靈活性:接口可以像模塊一樣參數(shù)化。此外,可以使用未指定的接口實(shí)例化(稱為泛型接口)創(chuàng)建模塊頭。這個(gè)接口可以在稍后實(shí)例化模塊時(shí)指定。
4. System Verilog的面向?qū)ο螅∣OP)
面向?qū)ο笫褂脩裟軌騽?chuàng)建復(fù)雜的數(shù)據(jù)類型,并且將它們跟使用這些數(shù)據(jù)類型的程序緊密的結(jié)合在一起。用戶可以在更加抽象的平臺(tái)上建立測試模型,通過調(diào)用函數(shù)改變信號(hào),而不是直接改變電平信號(hào)。

從結(jié)構(gòu)體開始:程序設(shè)計(jì)=數(shù)據(jù)結(jié)構(gòu)+算法實(shí)現(xiàn)

定義一個(gè)類
類將結(jié)構(gòu)體和它相應(yīng)的函數(shù)集合在一起,成為一種新的數(shù)據(jù)組織形式。在這種新的數(shù)據(jù)組織形式中,有兩種成分,一種是來自結(jié)構(gòu)體的數(shù)據(jù)變量,在類中被稱為成員變量;另外一種來自與結(jié)構(gòu)體相對應(yīng)的函數(shù),被稱為一個(gè)類的接口。

繼承一個(gè)類
分析所要解決的問題,并找出其中的共性,用這些共性構(gòu)建一個(gè)基類(或者父類);在此基礎(chǔ)上,將問題分類,不同的分類具有各自的共性,使用這些分類的共性構(gòu)建一個(gè)派生類(或者子類)。

多態(tài):多個(gè)程序使用一個(gè)共同的名字的現(xiàn)象。

靜態(tài)變量和方法
一個(gè)類的所有實(shí)例都共享變量的一個(gè)版本,也就是說所有實(shí)例都共享同一個(gè)copy,該變量對所有實(shí)例都是可見并相同的。使用關(guān)鍵字static產(chǎn)生。

類的參數(shù)化定義


審核編輯 :李倩
-
Verilog
+關(guān)注
關(guān)注
30文章
1369瀏覽量
113822 -
C++
+關(guān)注
關(guān)注
22文章
2120瀏覽量
76577 -
芯片驗(yàn)證
+關(guān)注
關(guān)注
5文章
40瀏覽量
47849
原文標(biāo)題:學(xué)會(huì)這些System Verilog方法,芯片驗(yàn)證入門沒問題
文章出處:【微信號(hào):于博士Jacky,微信公眾號(hào):于博士Jacky】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
為什么我選擇VHDL入門
Veloce Primo補(bǔ)全完整的SoC驗(yàn)證環(huán)境
超大規(guī)模芯片驗(yàn)證:基于AMD VP1902的S8-100原型驗(yàn)證系統(tǒng)實(shí)測性能翻倍
“System Level EOS Testing Method”可以翻譯為: “系統(tǒng)級(jí)電性過應(yīng)力測試方法”
CAN芯片邏輯響應(yīng)驗(yàn)證測試
FPGA Verilog HDL語法之編譯預(yù)處理
新思科技推出基于AMD芯片的新一代原型驗(yàn)證系統(tǒng)
淺談Verilog和VHDL的區(qū)別

學(xué)會(huì)這些System Verilog方法,芯片驗(yàn)證入門沒問題
評(píng)論