UVM中每個(gè)phase都有一個(gè)內(nèi)置的objection,為components和objects提供了同步方法,指示何時(shí)可以安全地結(jié)束這個(gè)phase,最終結(jié)束整個(gè)test case。
一般來說,由一個(gè)components或sequence在激勵(lì)開始時(shí)raise phase objection,激勵(lì)處理完畢之后drop objection。一旦所有提起的objections被dropped,該phase就終止了。
在仿真中,一個(gè)master agent可能需要在runphase停止之前完成所有的讀寫操作,一個(gè)reactive slave agent不會(huì)drop objection,因?yàn)樗皇且恢北粍?dòng)地處理事務(wù)。對(duì)于sequence來說,有三種可能的方式可以處理phase objection。
a)
class test extends ovm_test; task run_phase(uvm_phase phase); phase.raise_objection(this); seq.start(seqr); phase.drop_objection(this); endtask endclass
b)
class test extends ovm_test; task run_phase (uvm_phase phase); seq.set_starting_phase(phase); seq.start(seqr); endtask endclass class seq extends uvm_sequence #(data_item); task body(); uvm_phase p = get_starting_phase(); if(p) p.raise_objection(this); //some critical logic if(p)p.drop_objection(this); endtask endclass
c)
class test extends ovm_test; task run_phase (uvm_phase phase); seq.set_starting_phase(phase); seq.start(seqr); endtask endclass class seq extends uvm_sequence #(data_item); function new(string name = "seq"); super.new(name); set_automatic_phase_objection(1); endfunction task body(); // Sequence logic with no objection // as it is already handled in the base class endtask endclass
上面的三種方式只需要實(shí)現(xiàn)其中一種即可。
當(dāng)所有objections都被dropped,當(dāng)前運(yùn)行的phase就結(jié)束了。在仿真過程中,可能需要一些額外的cycle來向scoreboard傳輸最后一筆transaction。
為了適配這種情況,可以使用phase_ready_to_end()方法在必要時(shí)刻重新提出phase objection。
另外,也可以設(shè)置一個(gè)drain time,在組件所有objections都被dropped之后注入一個(gè)延遲。一般是在env或者test級(jí)設(shè)置drain time。
審核編輯:劉清
-
仿真器
+關(guān)注
關(guān)注
14文章
1037瀏覽量
85412 -
UVM
+關(guān)注
關(guān)注
0文章
182瀏覽量
19548
原文標(biāo)題:管理test case結(jié)束機(jī)制
文章出處:【微信號(hào):芯片驗(yàn)證工程師,微信公眾號(hào):芯片驗(yàn)證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
基于base test如何來構(gòu)造測試用例
條件(Case)結(jié)構(gòu)的運(yùn)用細(xì)節(jié)
Linux Shell系列教程之(十三)Shell分支語句case … esac教程
如何解決vhdl代碼中的case語句問題?
工作流管理系統(tǒng)柔性機(jī)制
linux內(nèi)存管理機(jī)制淺析

淺析物理內(nèi)存與虛擬內(nèi)存的關(guān)系及其管理機(jī)制

JavaScript定時(shí)器與執(zhí)行機(jī)制介紹
聊一聊所謂的Objection機(jī)制

CASE:創(chuàng)建多路分支

評(píng)論