?姓名:熊子豪 ?? 學號:19011210143
?轉(zhuǎn)載自? https://blog.csdn.net/qq_31935691/article/details/60370395
【嵌牛導讀】 我前面有篇文章詳細講述了芯片驗證行業(yè)的黃金時間以及到來了桥帆,你如想要從事芯片驗證工作或了解芯片 ? ? ? ? ? ? ? ? ? ? ? 驗證猜憎,那么UVM是一定需要了解的 。
【嵌牛鼻子】 芯片驗證 同廉, UVM 。
【嵌牛提問】 UVM驗證平臺的組成 藤肢?
【嵌牛正文】
UVM:? Universal Verification Methodology(通用驗證方法學)
UVM:是建立在systemverilog平臺上的一個庫窑睁,提供了一系列的接口,讓我們能夠更方便的進行驗證震庭。
驗證平臺組成:
Driver:用來把不同的激勵施加給DUT;
Monitor:用來檢測DUT的輸出你雌;
Scoreboard:專門用來比較期望值與monitor檢測到的DUT輸出器联;
Reference model:輸入跟DUT完全一樣,它的輸出送給scoreboard婿崭。用于和DUT的輸出比較拨拓。
UVM驗證平臺的樹形結(jié)構(gòu):
? ? Driver負責給DUT發(fā)送數(shù)據(jù),sequencer用于產(chǎn)生這些數(shù)據(jù)氓栈,一個sequencer通過啟動一個sequence渣磷,從sequence獲取數(shù)據(jù),并把這些數(shù)據(jù)轉(zhuǎn)交給driver授瘦。
? ? Agent只是簡單的吧driver醋界、monitor、sequencer封裝在一起提完。Agent對應的是物理接口協(xié)議形纺,不同的接口協(xié)議對應不同的agent。在一個驗證平臺中通常會存在多個agent氯葬。
? ? Env相當于一個特大容器挡篓,把所有的uvm_component都包含在其內(nèi)部作為其成員變量婉陷。
實際驗證平臺:
類的定義與實例化:
類的定義:及編輯器寫的:class A;……………….endclass
類的實例化:及A a_inst;a_inst = new();
類的定義相當于通知systemverilog仿真器帚称,可能要用到這樣一個類官研,類的實例化在于通過new(),來通知systemverilog仿真器開辟空間闯睹。一個類戏羽,只定義而不實例化,是沒有任何意義楼吃。
Uvm_component和uvm_object::
Uvm_component特點:在new的時候始花,需要指定一個類型為uvm_component,名字是parent的變量:
Function? new(string name,uvm_component? parent);
在一般使用的時候孩锡,若在類A 中有uvm_component B酷宵,則在A中定義如下:
B=new(“B”,this);
完整UVM樹:
uvm樹根是uvm_top。
Uvm_component的另外一個特點是它具有phase自動執(zhí)行的特性躬窜。
Uvm_component的兩大特性:
1浇垦、? 通過在new的時候指定parent來形成一種樹形的組織結(jié)構(gòu)
2、? 有phase的自動執(zhí)行特點
UVM中常用類的繼承關(guān)系:
除了driver荣挨、monitor男韧、agent、model默垄、scoreboard此虑、env之外全部用uvm_object。
常用的uvm_component:
Uvm_driver:所有driver都要派生uvm_driver口锭。Driver的功能主要就是向sequencer索要sequence_item(transaction)朦前,并把sequence_item里的信息驅(qū)動到DUT的接口上。相當于完成了transaction級別到DUT能夠接受的pin級別信息的轉(zhuǎn)變鹃操。
Uvm_monior:所有monitor都要派生子uvm_monitor况既。Monitor從DUT的pin上接收數(shù)據(jù),并且把接收到的數(shù)據(jù)轉(zhuǎn)換成transaction級別的sequence_item组民,并把轉(zhuǎn)換后的數(shù)據(jù)發(fā)送給scoreboard棒仍,供scoreboard比較。
Uvm_sequencer:所以的sequencer都要派生自uvm_sequencer臭胜。其功能1就是組織管理sequence莫其,當driver要求數(shù)據(jù)時,他就把sequence生成sequence_item轉(zhuǎn)發(fā)給driver耸三。
Uvm_scoreboard:一般的scoreboard都要派生自uvm_scoreboard乱陡。其功能就是比較reference model和monitor分別發(fā)送來的數(shù)據(jù),根據(jù)比較結(jié)果判斷DUT是否正確仪壮。
Reference model:reference model直接派生自uvm_component憨颠。其作用就是模仿DUT,完成與DUT相同的功能,可以直接使用systemverilog的特性爽彤,或者可以通過DPI等接口調(diào)用其它語言來完成與DUT相同功能养盗。
Uvm_agent:所以agent都要派生自uvm_agent。只是把driver和monitor封裝在一起适篙,根據(jù)參數(shù)來決定是只實例化monitor還是要實例化driver和monitor往核。
Uvm_env:所有env都要派生自uvm_env。把驗證平臺固定不變的component封裝在一起嚷节。這樣在要跑不同case時聂儒,只要在case中實例化一個env就可以。
Uvm_test:所有的case都要派生自uvm_test硫痰。Case之間差異很大衩婚,所以從uvm_test派生出來的類各不同。任何一個派生的case都要實例化env效斑,只有這樣才能正常傳數(shù)谅猾。
常用uvm_object:
Uvm_sequence_item:所有的transaction要從uvm_sequence_item派生。
Uvm_sequence:所有的sequence要從uvm_sequenc派生一個鳍悠。Sequence就是sequence_item的組合税娜。Sequence和sequencer直接打交道。當driver向sequencer索要數(shù)據(jù)時藏研,sequencer會轉(zhuǎn)而向sequence要數(shù)據(jù)敬矩,當sequence發(fā)現(xiàn)有sequence_item時,則將數(shù)據(jù)傳輸過來蠢挡。
Config:所有config一般直接從uvm_object派生弧岳。Config的主要功能就是規(guī)范驗證平臺的行為方式。
Uvm_phase:派生自uvm_object业踏,其作用是控制uvm_component的行為方式禽炬。
————————————————
版權(quán)聲明:本文為CSDN博主「南國之邱」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議勤家,轉(zhuǎn)載請附上原文出處鏈接及本聲明腹尖。
原文鏈接:https://blog.csdn.net/qq_31935691/article/details/60370395