0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

聊一聊所謂的Objection機(jī)制

sanyue7758 ? 來(lái)源:芯片學(xué)堂 ? 2023-06-09 11:16 ? 次閱讀

Objection是UVM框架中用來(lái)同步不同組件的相同phase,以及決定當(dāng)前測(cè)試用例什么時(shí)候結(jié)束(end-of-test)的機(jī)制,這也是用戶在拿到UVM之后最直白的使用場(chǎng)景。本篇文章除了介紹Objection的工作原理和常規(guī)使用方式,還會(huì)介紹Objection的一些非常規(guī)用法。

01 Objection工作原理

為什么把同步phase或者說(shuō)管理仿真結(jié)束的機(jī)制叫做Objection?這是個(gè)沒(méi)有多少實(shí)際意義的問(wèn)題,不過(guò)理清楚之后,也許你再也不會(huì)忘了Objection機(jī)制的用途。

按照UVM reference的介紹:“Objections provide a facility for coordinating status information between two or more participating components, objects, and even module-based IP. ” 這個(gè)描述還是比較抽象,說(shuō)Objection用于協(xié)調(diào)多個(gè)對(duì)象之間的狀態(tài)信息,不過(guò)可以簡(jiǎn)單理解成就是“同步”。

本系列前面的文章【深入Phase機(jī)制,看懂Phase機(jī)制實(shí)現(xiàn)原理】介紹到,基于UVM的仿真程序執(zhí)行嚴(yán)格按照Phase來(lái)執(zhí)行,而每一級(jí)phase都按照UVM定義的狀態(tài)機(jī)做跳轉(zhuǎn),其中有一個(gè)狀態(tài)比較特殊,叫UVM_PHASE_READ_TO_END。

這個(gè)狀態(tài)的特點(diǎn)是:只有當(dāng)同級(jí)phase的所有objection都被撤銷(drop)之后(通過(guò)計(jì)數(shù)器實(shí)現(xiàn)),才會(huì)進(jìn)入該狀態(tài);進(jìn)入該狀態(tài)之后,會(huì)遍歷執(zhí)行驗(yàn)證組件中定義的phase_ready_to_end回調(diào)函數(shù),待執(zhí)行完成之后且沒(méi)有objection被置起(raise),才會(huì)跳轉(zhuǎn)到下一個(gè)狀態(tài)UVM_PHASE_ENDED。

54e20b0e-05e7-11ee-962d-dac502259ad0.png

按照這個(gè)邏輯,以耗時(shí)(time-consuming)phase為例,這里忽略pre_*和post_*的phase,可以得到下面這個(gè)執(zhí)行流圖。圖中從左往右表示執(zhí)行的先后順序,可以看到,相同phase都是在同一時(shí)刻開始往后執(zhí)行,也就實(shí)現(xiàn)了“同步”。

5517994a-05e7-11ee-962d-dac502259ad0.png

最后怎么去理解“Objection”這個(gè)詞?可以這么說(shuō),仿真執(zhí)行過(guò)程中,仿真程序會(huì)不停地問(wèn):“我要進(jìn)入下一個(gè)phase了,還有誰(shuí)有意見(jiàn)?”,那些還沒(méi)有執(zhí)行完的phase線程就會(huì)大喊:“我反對(duì)我反對(duì)!”,于是仿真程序就等在那了,最終只有等到所有人都執(zhí)行完了,才得以退出當(dāng)前phase。Objection也符合“a feeling or expression of disapproval”的釋義了。

02 Objection常規(guī)用法

Objection的常規(guī)用法很簡(jiǎn)單,在很多文章中都會(huì)提到,即raise_objection(),drop_objection() 和 set_drain_time()。這三件套是我們應(yīng)用Objection機(jī)制時(shí)最常用到的方法。

Objection計(jì)數(shù)器在每次調(diào)用raise_objection()和drop_objection()會(huì)進(jìn)行增減。在實(shí)際應(yīng)用中,不建議在很多組件的耗時(shí)phase中都去raise-drop objection,兩個(gè)原因:一個(gè)是objection的控制會(huì)比較分散,不便于objection的管理;另一個(gè)是反復(fù)的調(diào)用會(huì)使得仿真效率比較低。可以考慮在測(cè)試用例頂層和sequence中進(jìn)行objection的控制。示例代碼如下:

552bf732-05e7-11ee-962d-dac502259ad0.png

以上是UVM 1.1對(duì)objection的用法。到了UVM 1.2,棄用了uvm_sequence_base:: starting_phase這個(gè)變量,改用set_starting_phase和get_starting_phase兩個(gè)方法;棄用了raise_objection和drop_objection兩個(gè)方法,改用uvm_sequence_base:: set_automatic_phase_objection。這些改進(jìn)的目的是優(yōu)化objection的使用體驗(yàn),UVM library幫你多省掉了一些代碼和出錯(cuò)的機(jī)會(huì)。示例代碼如下:

55609898-05e7-11ee-962d-dac502259ad0.png

set_drain_time()方法的使用場(chǎng)景是在objection都撤銷了之后,往后延長(zhǎng)仿真結(jié)束的時(shí)間。這么做的目的是讓DUT有多余的時(shí)間去完成動(dòng)作,使其完整響應(yīng)我們輸入的測(cè)試激勵(lì)。

除了set_drain_time()方法可以解決這個(gè)問(wèn)題,我們還可以在撤銷objection之前去做一些有意義的條件判斷,也可以在test的phase_ready_to_end回調(diào)函數(shù)中去實(shí)現(xiàn)一些檢查邏輯。不過(guò)還是set_drain_time()用的多。

03 Objection非常規(guī)用法

非常規(guī)用法指的是平時(shí)不怎么用得到的使用場(chǎng)景,但這些使用方法在有些場(chǎng)景下會(huì)有用,比如調(diào)試。

追蹤Objection狀態(tài)用的命令行參數(shù)+UVM_OBJECTION_TRACE。當(dāng)仿真命令加上該參數(shù),就可以在仿真日志中看到誰(shuí)誰(shuí)誰(shuí)置起了objection,誰(shuí)誰(shuí)誰(shuí)撤銷了objection,以及objection計(jì)數(shù)器的數(shù)值等等。

另外我們可以通過(guò)phase.get_objection()拿到負(fù)責(zé)同步當(dāng)前phase的objection句柄,之后就可以調(diào)用該句柄有的一些方法。比如get_drain_time()方法可以返回當(dāng)前objection對(duì)象的排空時(shí)間(drain time);clear()方法可以直接清零當(dāng)前objection對(duì)象的計(jì)數(shù)器,且釋放對(duì)當(dāng)前phase的同步;display_objections()方法可以打印該objection對(duì)象的具體信息等。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 比較器
    +關(guān)注

    關(guān)注

    14

    文章

    1614

    瀏覽量

    106831
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2241

    瀏覽量

    93969
  • UVM
    UVM
    +關(guān)注

    關(guān)注

    0

    文章

    181

    瀏覽量

    19085
  • DUT
    DUT
    +關(guān)注

    關(guān)注

    0

    文章

    188

    瀏覽量

    12189

原文標(biāo)題:SystemVerilog | UVM | 使用Objection管理仿真結(jié)束

文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    從焊接角度,設(shè)計(jì)PCB的5個(gè)建議

    完成個(gè)電路板,需要PCB工程師、焊接工藝、焊接工人等諸多環(huán)節(jié)的把控。今天通過(guò)定位孔、MARK點(diǎn)、留邊、焊盤過(guò)孔、輔助工具這五個(gè)方面從畫板的角度跟大家PCB設(shè)計(jì)。
    的頭像 發(fā)表于 02-06 10:31 ?1892次閱讀
    從焊接角度<b class='flag-5'>聊</b><b class='flag-5'>一</b><b class='flag-5'>聊</b>,設(shè)計(jì)PCB的5個(gè)建議

    消息隊(duì)列技術(shù)選型的7種消息場(chǎng)景

    我們?cè)谧鱿㈥?duì)列的技術(shù)選型時(shí),往往會(huì)結(jié)合業(yè)務(wù)場(chǎng)景進(jìn)行考慮。今天來(lái)消息隊(duì)列可能會(huì)用到的 7 種消息場(chǎng)景。
    的頭像 發(fā)表于 12-09 17:50 ?1149次閱讀
    <b class='flag-5'>聊</b><b class='flag-5'>一</b><b class='flag-5'>聊</b>消息隊(duì)列技術(shù)選型的7種消息場(chǎng)景

    IC驗(yàn)證“UVM驗(yàn)證平臺(tái)加入objection機(jī)制和virtual interface機(jī)制“(七)

    在上節(jié)中,**《IC驗(yàn)證"UVM驗(yàn)證平臺(tái)加入factory機(jī)制"(六)》**雖然輸出了“main_phase is called”,但是“data is drived”并沒(méi)有
    發(fā)表于 12-09 18:28

    來(lái)Altium中Fill,Polygon Pour,Plane的區(qū)別和用法

    Fill會(huì)造成短路,為什么還用它呢?來(lái)Altium中Fill,Polygon Pour,Plane的區(qū)別和用法
    發(fā)表于 04-25 06:29

    stm32的低功耗調(diào)試

    前言:物聯(lián)網(wǎng)的大部分設(shè)備都是電池供電的,設(shè)備本身低功耗對(duì)延長(zhǎng)設(shè)備使用至關(guān)重要,今天就實(shí)際調(diào)試總結(jié)stm32的低功耗調(diào)試。1、stm32在運(yùn)行狀態(tài)下的功耗上圖截圖自stm32l15x手冊(cè)
    發(fā)表于 08-11 08:18

    7系列FPGA的供電部分

    前幾篇咱們說(shuō)了FPGA內(nèi)部邏輯,本篇咱們?cè)倭?b class='flag-5'>一7系列FPGA的供電部分。首先咱們說(shuō)spartan7系列,通常咱們需要使用以下電源軌:1,VCCINTFPGA內(nèi)部核心電壓。其不損壞FPGA器件的范圍
    發(fā)表于 11-11 09:27

    平衡小車代碼的實(shí)現(xiàn)

    前言今天代碼,只有直立功能的代碼。代碼總體思路給定個(gè)目標(biāo)值,單片機(jī)通過(guò)IIC和mpu6050通信,得知數(shù)據(jù)后,根據(jù)角度環(huán)計(jì)算出個(gè)P
    發(fā)表于 01-14 08:29

    FPGA的片內(nèi)資源相關(guān)知識(shí)

    大家好,到了每日學(xué)習(xí)的時(shí)間了。今天我們來(lái)FPGA的片內(nèi)資源相關(guān)知識(shí)。 主流的FPGA仍是基于查找表技術(shù)的,已經(jīng)遠(yuǎn)遠(yuǎn)超出了先前版本的基本性能,并且整合了常用功能(如RAM、DCM和DSP)的硬核
    的頭像 發(fā)表于 05-25 14:11 ?8800次閱讀
    <b class='flag-5'>聊</b><b class='flag-5'>一</b><b class='flag-5'>聊</b>FPGA的片內(nèi)資源相關(guān)知識(shí)

    IIC總線設(shè)計(jì)

    大家好,又到了每日學(xué)習(xí)的時(shí)間了,今天咱們來(lái) IIC 總線設(shè)計(jì)。 、概述: IIC 是Inter-Integrated Circuit的縮寫,發(fā)音為eye-squared cee
    的頭像 發(fā)表于 06-22 10:32 ?9185次閱讀

    小米米2月19日停止服務(wù) 米宣布關(guān)閉服務(wù)器

    v8.8.70 及以上版本支持批量導(dǎo)出。 2010年12月10日,反應(yīng)迅速的小米僅僅用了不到2個(gè)月的時(shí)間,發(fā)布了中國(guó)第款模仿kik的產(chǎn)品——米。Kik是款基于手機(jī)通信錄的社交軟件,用戶可以免費(fèi)短信聊天。 2012年5月,
    的頭像 發(fā)表于 01-20 05:43 ?6561次閱讀

    復(fù)活了 能維持多久?

    2021年2月19日,米宣布停服,2021年2月26日,米重新上線。不過(guò)這次,米卻是以全新的面貌與大家相見(jiàn)。
    發(fā)表于 03-08 16:32 ?1117次閱讀

    FPGA中的彩色轉(zhuǎn)灰度的算法

    大家好,又到了每日學(xué)習(xí)的時(shí)間了,今天我們來(lái)FPGA學(xué)習(xí)中可以遇到的些算法,今天就
    的頭像 發(fā)表于 04-15 15:47 ?1860次閱讀

    【職場(chǎng)雜談】與嵌入式物聯(lián)網(wǎng)架構(gòu)師幾個(gè)話題

    【職場(chǎng)雜談】與嵌入式物聯(lián)網(wǎng)架構(gòu)師幾個(gè)話題
    的頭像 發(fā)表于 08-23 09:19 ?1210次閱讀
    【職場(chǎng)雜談】與嵌入式物聯(lián)網(wǎng)架構(gòu)師<b class='flag-5'>聊</b><b class='flag-5'>一</b><b class='flag-5'>聊</b>幾個(gè)話題

    簡(jiǎn)單DPT技術(shù)-double pattern technology

    今天想來(lái)簡(jiǎn)單DPT技術(shù)-double pattern technology,也就是雙層掩模版技術(shù),在目前先進(jìn)工藝下,這項(xiàng)技術(shù)已經(jīng)應(yīng)用的很普遍了。
    的頭像 發(fā)表于 12-05 14:26 ?1024次閱讀

    芯片設(shè)計(jì)的NDR是什么?

    今天突然想route相關(guān)的問(wèn)題,講講NDR是什么,我也梳理總結(jié)下我對(duì)NDR的認(rèn)識(shí)。
    的頭像 發(fā)表于 12-06 15:14 ?1358次閱讀