如何淺析UVM概念中的raise/dropobjection

如何淺析UVM概念中的raise/drop objection,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

創(chuàng)新互聯(lián)公司是一家網(wǎng)站設(shè)計(jì)公司,集創(chuàng)意、互聯(lián)網(wǎng)應(yīng)用、軟件技術(shù)為一體的創(chuàng)意網(wǎng)站建設(shè)服務(wù)商,主營產(chǎn)品:響應(yīng)式網(wǎng)站建設(shè)、成都品牌網(wǎng)站建設(shè)、營銷型網(wǎng)站。我們專注企業(yè)品牌在網(wǎng)站中的整體樹立,網(wǎng)絡(luò)互動(dòng)的體驗(yàn),以及在手機(jī)等移動(dòng)端的優(yōu)質(zhì)呈現(xiàn)。成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、移動(dòng)互聯(lián)產(chǎn)品、網(wǎng)絡(luò)運(yùn)營、VI設(shè)計(jì)、云產(chǎn)品.運(yùn)維為核心業(yè)務(wù)。為用戶提供一站式解決方案,我們深知市場的競爭激烈,認(rèn)真對(duì)待每位客戶,為客戶提供賞析悅目的作品,網(wǎng)站的價(jià)值服務(wù)。

UVM中,component的task phase是消耗仿真時(shí)間的,各個(gè)components需要在不同層次的task phase中同步信息。

UVM中通過objection mechanism來控制phase的執(zhí)行,通過raise or drop objection來決定phase中事件的開始和停止。

當(dāng)程序根據(jù)phase執(zhí)行順序,進(jìn)入到某一個(gè)phase中時(shí),它會(huì)收集此phase提起的所有的objection(每個(gè)component都可以raiseobjection)

當(dāng)這個(gè)phase中所有的objection都被撤銷(drop)之后,那么這個(gè)phase就執(zhí)行結(jié)束。

components或sequence將在驗(yàn)證行為的開始 raise phase objection,在驗(yàn)證行為完成后drop phase  objection。一旦phase里所有的objection都被dropped,該phase就結(jié)束了。

考慮一個(gè)例子,agent完成讀寫操作。通??梢栽趕equence 或者test中添加raise/drop objection。

Objection in sequence

class wr_rd_seq extends uvm_sequence#(mem_seq_item);  
task pre_body();    
// raise objection if started as a root sequence    
if(starting_phase!= null)      
starting_phase.raise_objection(this);  endtask   task body();    
`uvm_do_with(req,wr_en==1);    
`uvm_do_with(req,rd_en==1);  
endtask   task post_body();    
// drop objection if started as a root sequence    
if(starting_phase!= null)      
starting_phase.drop_objection(this);  
endtaskendclass

在uvm_sequence中有一個(gè)starting_phase成員,它是uvm_phase類型。如果我們通過設(shè)置run phase的default sequence來啟動(dòng)一個(gè)sequence,那么會(huì)默認(rèn)將run phase的phase傳遞給這個(gè)sequence的starting_phase.

Objection in test

如果需要在test中顯式啟動(dòng)sequence,即在test中添加objection。

class wr_rd_test extends uvm_test; ...  
task main_phase(uvm_phase phase);    
phase.raise_objection(); 
//rasing objection      wr_rd_seq.start(mem_agent.sequencer);    
phase.drop_objection();  
//droping objection  endtask     endclass

在test中顯式啟動(dòng)sequence時(shí), starting_phase的值是null。

關(guān)于如何淺析UVM概念中的raise/drop objection問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

網(wǎng)站題目:如何淺析UVM概念中的raise/dropobjection
標(biāo)題來源:http://bm7419.com/article38/igospp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、App開發(fā)、定制開發(fā)企業(yè)建站、Google建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司