如何淺析UVM概念中的raise/drop objection,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。
創(chuàng)新互聯(lián)公司是一家網(wǎng)站設(shè)計(jì)公司,集創(chuàng)意、互聯(lián)網(wǎng)應(yīng)用、軟件技術(shù)為一體的創(chuàng)意網(wǎng)站建設(shè)服務(wù)商,主營(yíng)產(chǎn)品:響應(yīng)式網(wǎng)站建設(shè)、成都品牌網(wǎng)站建設(shè)、營(yíng)銷型網(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)營(yíng)、VI設(shè)計(jì)、云產(chǎn)品.運(yùn)維為核心業(yè)務(wù)。為用戶提供一站式解決方案,我們深知市場(chǎng)的競(jìng)爭(zhēng)激烈,認(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完成讀寫操作。通常可以在sequence 或者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://jinyejixie.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)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)