UVM中最基礎(chǔ)西采,也最常用的幾個(gè)知識(shí)點(diǎn)

1.為什么在TOP里面uvm_config_db set的時(shí)候都需要用到uvm_test_top罐呼,它針對(duì)不同的case產(chǎn)生的實(shí)例名字是一樣的嗎鞠柄?

是一樣的。對(duì)于+UVM_TESTNAME=example_case_(0…n)嫉柴,UVM驗(yàn)證平臺(tái)會(huì)創(chuàng)建一個(gè)example_case_(0…n)的實(shí)例厌杜,他們的實(shí)例有一個(gè)共同的名字:uvm_test_top,所以你在top中congig_db的時(shí)候都會(huì)自上而下指定UVM component的路徑计螺,UVM樹的最高就是uvm_test_top

2.怎么可以更好的理解uvm_object,uvm_component,sequence,sequence_item以及config夯尽?

我覺(jué)得zhangqiang寫得《UVM1.1應(yīng)用指南及源代碼分析》一書中比喻的很通俗,原文如下:

uvm_object是一分子登馒,用這個(gè)分子可以搭建成許許多多的東西匙握,如既可以搭建成動(dòng)物,還可以搭建成植物陈轿,更加可以搭建成沒(méi)有生命意識(shí)的巖石圈纺,空氣等秦忿。uvm_component就是由uvm_object搭建成的一種高級(jí)有生命體或者無(wú)生命體,而sequence_item則是由其搭建成的血液或者其他蛾娶,它流通在各個(gè)(uvm_component)之間灯谣,sequence則是眾多sequence_item的組合,config則是由其搭建的用于規(guī)范生命體或者無(wú)生命體(uvm_component)行為方式的準(zhǔn)則蛔琅。

3.new和create一個(gè)類的實(shí)例時(shí)有什么區(qū)別么胎许?

當(dāng)你使用了uvm_component_utils注冊(cè)了之后就可以使用類似于A=example::type_id::create(“a”,this)的形式,create其實(shí)是factory重載了new函數(shù)罗售,是factory方式實(shí)例化;如果你沒(méi)有使用uvm_component_utils去注冊(cè)辜窑,則只能使用systemverilog的new函數(shù)去實(shí)例化了,但是使用create產(chǎn)生的實(shí)例可以使用uvm的很多功能寨躁,比如overide功能(set_type_override_by_type(a1::get_type(),a2::get_type()))谬擦。使用上的區(qū)別可以這樣簡(jiǎn)單理解,但是朽缎,如果覺(jué)得還想深入了解請(qǐng)閱讀uvm factory源碼。

4.UVM常用的phase有哪些?

uvm常用的phase谜悟,其實(shí)我經(jīng)常用到的就是build_phase例化话肖,connect_phase連接,run_phase(main_phase)以及report_phase葡幸,如果你要使用report_phase最筒,那么建議你最好把要report的變量定義為全局類型的。


5.uvm不同components的同一phase的執(zhí)行順序是怎樣的蔚叨?

???uvm中對(duì)于build_phase是自父類到子類的自上而下的方式去執(zhí)行的床蜘,否則你都沒(méi)有執(zhí)行agent的build_phase就去執(zhí)行driver或者monitor的build_phase那會(huì)報(bào)錯(cuò)的,因?yàn)樗麄兌歼€沒(méi)有在agent的build_phase中實(shí)例化蔑水。除了build_phase邢锯,其他的function phase(注意這個(gè)地方)都是自下而上的方式,比如connect_phase搀别,都是先執(zhí)行driver或者monitor的connect_phase再執(zhí)行agent的connect_phase丹擎,以此類推。如果是同一層次的driver和monitor是按照實(shí)例化之后的名字的字典順序執(zhí)行的歇父,比如driver實(shí)例化為“A”蒂培,monitor實(shí)例化為“B”,那么就先執(zhí)行driver的phase榜苫。對(duì)于需要消耗仿真時(shí)間的task phase則是自下而上的啟動(dòng)护戳,同時(shí)在運(yùn)行,不存在“等”的情況存在垂睬。

6.如果一個(gè)component中需要get的變量個(gè)數(shù)比較多時(shí)媳荒,怎么可以減少這種uvm_config_db #(type)::get()的工作量呢抗悍?

可以你只要在你的component中使用field_automation把需要get的變量都要注冊(cè)了factory機(jī)制,在當(dāng)前component的build_phase()中調(diào)用super.build_phase()就可以了肺樟,但是set()中中的第三個(gè)和第四個(gè)變量名需要一致檐春。

比如

class my_driver extends uvm_driver;

??int num_0;

??int num_1;

??`uvm_component_utils_begin(my_driver)

?????`uvm_field_int(num_0,UVM_ALL_ON)

?????`uvm_field_int(num_1,UVM_ALL_ON)

??`uvm_component_utils_end

??function void build_phase(uvm_phase phase)

Super.build_phase(phase)

(此處就不需要一一get()了啊)

endfunction

endclass

7.寄存器訪問(wèn)為什么要有BACKDOOR的存在呢么伯?

因?yàn)橛袝r(shí)候用frontdoor是沒(méi)有辦法改變某些寄存器的值的疟暖。如在DUT中有一個(gè)寫清的計(jì)數(shù)器,當(dāng)DUT內(nèi)部發(fā)生改變時(shí)田柔,這寄存器的值會(huì)一直增加俐巴。對(duì)于用戶來(lái)說(shuō),可以對(duì)此寄存器做兩種操作硬爆,一是通過(guò)總線frontdoor來(lái)讀取這個(gè)寄存器的值欣舵,二是通過(guò)寫操作把這個(gè)寄存器清零,假設(shè)現(xiàn)在要測(cè)試一下這個(gè)寄存器的進(jìn)位功能缀磕,也即要寫入16’hFFFF等值缘圈,此時(shí)只有通過(guò)backdoor的方式來(lái)進(jìn)行。另外袜蚕,backdoor相對(duì)frontdoor來(lái)說(shuō)糟把,是不消耗仿真時(shí)間的(即backdoor前后$time的返回值不會(huì)改變),backdoor的速度比f(wàn)rontdoor也快的多牲剃。

8.寄存器模型是怎么去操作的frontdoor的遣疯?

說(shuō)白了,其實(shí)是通過(guò)default_map去進(jìn)行frontdoor操作的

9.常用操作對(duì)register model的鏡像值和期望值的影響有哪些凿傅?

? read&write:使用BACKDOOR或FRONTDOOR的方式從DUT中讀取或者寫入指定寄存器的值缠犀,當(dāng)操作完成后,會(huì)根據(jù)讀寫的結(jié)果更新register model中的渴望值和鏡像值(二者相等)聪舒。

peek&poke:peek幾乎等同于使用BACKDOOR方式的read,poke幾乎等同于BACKDOOR方式的write辨液,與read和write的區(qū)別是peek和poke不會(huì)模仿寄存器的行為。如對(duì)于一個(gè)讀清的寄存器來(lái)說(shuō)箱残,進(jìn)行read操作室梅,那么無(wú)論BACKDOOR還是FRONTDOOR,那么DUT中寄存器的值依然保持不變疚宇。peek和poke操作之后亡鼠,register model中的渴望值和鏡像值都會(huì)更新(二者一致)。

get&set:這兩個(gè)操作都是只針對(duì)渴望值的敷待。只有渴望值會(huì)改變间涵,鏡像值不會(huì)改變。

? randomize:randomize之后榜揖,渴望值將會(huì)隨機(jī)出來(lái)的數(shù)值勾哩,鏡像值不會(huì)改變抗蠢。

? update:這個(gè)操作會(huì)檢查寄存器的渴望值和鏡像值是否一致,如果不一致就會(huì)把渴望值寫入到DUT中思劳,并且更新新鏡像值迅矛,使其與渴望值一致。每個(gè)由uvm_reg派生出來(lái)的類都會(huì)有update操作潜叛。另外秽褒,每個(gè)由uvm_reg_block派生出來(lái)的類也有update操作,它將會(huì)調(diào)用加入到此block中的所有寄存器的update威兜。

mirror:它將會(huì)讀取DUT销斟,并且更新鏡像值和渴望值。讀取的方式可以選擇BACKDOOR或者FRONTDOOR椒舵。與update類似蚂踊,每個(gè)uvm_reg派生來(lái)的類都有mirror操作,每個(gè)由uvm_reg_blcok派生出來(lái)的類也有mirror操作笔宿。mirror操作可以指定是否報(bào)告DUT中寄存器的值與register model中鏡像值不一樣犁钟。如果選擇了這一項(xiàng),那么就可以檢查某些計(jì)數(shù)器的值是否DUT中相應(yīng)計(jì)數(shù)器的值一致泼橘。

predict:它將會(huì)把register model中的鏡像值和渴望值都更新為要設(shè)置的值涝动。它與set的區(qū)別是后者只更新渴望值而不更新鏡像值。這個(gè)操作非常有用侥加。假如DUT中有一個(gè)寄存器用于統(tǒng)計(jì)包的數(shù)量,當(dāng)收到一個(gè)包時(shí)粪躬,DUT中寄存器的數(shù)值加1担败,而驗(yàn)證平臺(tái)中要想同步的更新register model中相關(guān)寄存器的值就要用到predict操作。

10.如果我們的環(huán)境不在Makefile腳本里面設(shè)置打印級(jí)別镰官,那么默認(rèn)的打印severity是什么?

如果我們的環(huán)境中不設(shè)置打印級(jí)別提前,那么將會(huì)直接返回m_max_verbosity_level,它是int整型變量,系統(tǒng)在初始化的時(shí)候設(shè)置為UVM_MEDIUM泳唠。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末狈网,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子笨腥,更是在濱河造成了極大的恐慌拓哺,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脖母,死亡現(xiàn)場(chǎng)離奇詭異士鸥,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)谆级,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門烤礁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)讼积,“玉大人,你說(shuō)我怎么就攤上這事脚仔∏谥冢” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵鲤脏,是天一觀的道長(zhǎng)们颜。 經(jīng)常有香客問(wèn)我,道長(zhǎng)凑兰,這世上最難降的妖魔是什么掌桩? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮姑食,結(jié)果婚禮上波岛,老公的妹妹穿的比我還像新娘。我一直安慰自己音半,他們只是感情好则拷,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著曹鸠,像睡著了一般煌茬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上彻桃,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天坛善,我揣著相機(jī)與錄音,去河邊找鬼邻眷。 笑死眠屎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的肆饶。 我是一名探鬼主播改衩,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼驯镊!你這毒婦竟也來(lái)了葫督?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤板惑,失蹤者是張志新(化名)和其女友劉穎橄镜,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冯乘,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛉鹿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了往湿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妖异。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惋戏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出他膳,到底是詐尸還是另有隱情响逢,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布棕孙,位于F島的核電站舔亭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蟀俊。R本人自食惡果不足惜钦铺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肢预。 院中可真熱鬧矛洞,春花似錦、人聲如沸烫映。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)锭沟。三九已至抽兆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間族淮,已是汗流浹背辫红。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留祝辣,地道東北人贴妻。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像较幌,于是被迫代替她去往敵國(guó)和親揍瑟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子白翻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容