在編寫(xiě)測(cè)試平時(shí),經(jīng)常會(huì)用到$monitor和$strobe監(jiān)測(cè)某些信號(hào),并且使用格式上與$display比較類(lèi)似,但是它們之間還是存在差異的,它們?cè)诋?dāng)前仿真時(shí)間槽(time-slot)中被執(zhí)行的區(qū)間是不同的。$display發(fā)生在Active區(qū),而$monitor和$strobe發(fā)生在當(dāng)前仿真的最后時(shí)刻,即post-pone區(qū),并且一個(gè)time-slot是存在很多區(qū)域的,因此,它們?cè)谟^(guān)測(cè)具體信號(hào)值時(shí)是存在一定差異的。
【示例】
【仿真結(jié)果】
出現(xiàn)示例中的結(jié)果,是因?yàn)榉亲枞x值的LHS更新發(fā)生在Non-Active區(qū),而此時(shí)的$display已經(jīng)執(zhí)行完畢,所以$display觀(guān)測(cè)不到sig更新后的值,但是$monitor發(fā)生在Post-pone區(qū),晚于Non-Active區(qū)執(zhí)行,所以可以觀(guān)測(cè)到sig更新后的值。因此,$display和$monitor觀(guān)測(cè)到sig的值不同。在實(shí)際使用過(guò)程中,具體使用哪一種監(jiān)測(cè)方式則根據(jù)兩種監(jiān)測(cè)執(zhí)行的區(qū)間特點(diǎn)自行選擇,$strobe與$monitor在本例中監(jiān)測(cè)到的結(jié)果是一樣都發(fā)生在Post-pone區(qū),執(zhí)行類(lèi)似,在此不贅述。那么既然$strobe和$monitor執(zhí)行效果一樣,都發(fā)生在Post-pone區(qū),那么為什么還要同時(shí)存在呢??jī)烧咧g有些什么差異呢?下面我們就兩者之間的一些差異進(jìn)行示例說(shuō)明。
1 $strobe的執(zhí)行
$strobe只有在被調(diào)用時(shí)才會(huì)對(duì)其中的參數(shù)進(jìn)行監(jiān)測(cè),此時(shí)的參數(shù)所具有的值可以認(rèn)為是其所在當(dāng)前時(shí)間槽(time-slot)中的最終值。另外,$strobe在設(shè)計(jì)中可以多次被調(diào)用,且多次調(diào)用相互之間不產(chǎn)生任何影響。
【示例】
【仿真結(jié)果】
示例中,在always過(guò)程塊中,當(dāng)敏感時(shí)間列表中的信號(hào)發(fā)生一次變化,always過(guò)程塊中的$strobe就會(huì)執(zhí)行一次,并且輸出此次執(zhí)行時(shí)對(duì)應(yīng)參數(shù)的穩(wěn)定值。在initial過(guò)程塊中,等待4個(gè)時(shí)間單位后$strobe執(zhí)行,并且輸出此時(shí)對(duì)應(yīng)參數(shù)的穩(wěn)定值,而在sig變化的其他時(shí)刻,該語(yǔ)句并未執(zhí)行(因?yàn)閕nitial塊只執(zhí)行了一次,并且完成了他的歷史使命)。可見(jiàn)$strobe的執(zhí)行取決于對(duì)其的調(diào)用,它的執(zhí)行并不取決于其中參數(shù)的變化,同時(shí)可見(jiàn)該語(yǔ)句在代碼中可以被多次調(diào)用,并且多次調(diào)用之間不會(huì)產(chǎn)生相互影響。
2 $monitor的執(zhí)行
$monitor和$strobe雖然它們監(jiān)測(cè)的參數(shù)都是當(dāng)前時(shí)間槽該參數(shù)最后的穩(wěn)定值,但兩者在具體執(zhí)行上還是有一定差別的,下面通過(guò)示例說(shuō)明$monitor的用法。
【示例】
【仿真結(jié)果】
示例中,$monitor位于過(guò)程塊中,sig從0時(shí)刻開(kāi)始,每發(fā)生一次變化,$monitor就會(huì)執(zhí)行一次,可見(jiàn)$monitor會(huì)持續(xù)監(jiān)測(cè)其中參數(shù)的變化,只要其中參數(shù)發(fā)生變化,$monitor就會(huì)執(zhí)行。那么是不是其中的任何參數(shù)的變化都會(huì)觸發(fā)$monitor的執(zhí)行,例如,可不可以使用$monitor監(jiān)測(cè)時(shí)間的變化呢?
【示例】
【仿真結(jié)果】
示例中,隨著仿真時(shí)間的推進(jìn),$monitor僅執(zhí)行了一次。這主要是因?yàn)樵?monitor中,如果監(jiān)測(cè)的參數(shù)是$time、$stime和$realtime這些系統(tǒng)函數(shù)的返回值,$monitor對(duì)這些時(shí)間參數(shù)的變化并不敏感。
另外,當(dāng)$monitor中具有多個(gè)參數(shù)同時(shí)發(fā)生變化時(shí),這是因?yàn)檫@些參數(shù)在當(dāng)前時(shí)間槽中調(diào)用$monitor時(shí)都已經(jīng)處于穩(wěn)定狀態(tài)了,所以此時(shí)$monitor只調(diào)用一次,如下所示。
【示例】
【仿真結(jié)果】
那么,我們可不可以使用多個(gè)$monitor監(jiān)測(cè)信號(hào)的變化呢?此時(shí)$monitor會(huì)如何執(zhí)行呢?我們看看下面的示例。
【示例】
【仿真結(jié)果】
示例中,使用了兩個(gè)$monitor分別檢測(cè)sig1和sig2信號(hào)的變化,但是仿真結(jié)果僅有一個(gè)$monitor執(zhí)行。這主要是因?yàn)?monitor執(zhí)行上的一個(gè)特點(diǎn),在任意仿真時(shí)刻,只有一個(gè)$monitor系統(tǒng)任務(wù)處于激活執(zhí)行狀態(tài),至于多個(gè)$monitor執(zhí)行的順序,一般則取決于哪一個(gè)$monitor最近一次被調(diào)用。除此之外,$nonitor還提供了其他的配置系統(tǒng)任務(wù),可以通過(guò)這些系統(tǒng)任務(wù)實(shí)現(xiàn)對(duì)于$monitor執(zhí)行的控制。
【示例】
【仿真結(jié)果】
示例中,$monitoroff和$monitoron之間sig的變化并沒(méi)有觸發(fā)$monitor系統(tǒng)任務(wù)的執(zhí)行。這主要是因?yàn)?monitoroff會(huì)不使能當(dāng)前所有激活的$monitor任務(wù)對(duì)于其中參數(shù)的監(jiān)測(cè),所以在$monitoroff之后,$monitor監(jiān)測(cè)的參數(shù)如果發(fā)生變化,將不會(huì)觸發(fā)$monitor的執(zhí)行。$monitoron的效果與$monitoroff剛好相反,主要用于再次啟動(dòng)激活$monitor任務(wù),在$monitoron執(zhí)行后,如果$monitor監(jiān)測(cè)的參數(shù)發(fā)生變化,則會(huì)觸發(fā)$monitor的執(zhí)行。
綜上所述,$strobe和$monitor執(zhí)行的主要特定如下:
?$strobe和$monitor監(jiān)測(cè)的相關(guān)變量的值,都是這些變量在當(dāng)前時(shí)間槽中的最終穩(wěn)定值;
?$strobe只有在被調(diào)用時(shí)才會(huì)對(duì)其中的參數(shù)進(jìn)行監(jiān)測(cè),而$monitor只要監(jiān)測(cè)的參數(shù)發(fā)生變化,$monitor就會(huì)執(zhí)行;
?代碼中可以存在多個(gè)$strobe,并且多個(gè)$strobe的調(diào)用相互之間不影響;
?在$strobe和$monitorr中,如果監(jiān)測(cè)的參數(shù)是$time、$stime和$realtime這些系統(tǒng)函數(shù)的返回值,$strobe和$monitor對(duì)這些時(shí)間參數(shù)的變化并不敏感
?在任意仿真時(shí)刻,只有一個(gè)$monitor系統(tǒng)任務(wù)處于激活執(zhí)行狀態(tài),至于多個(gè)$monitor執(zhí)行的順序,一般則取決于哪一個(gè)$monitor最近一次被調(diào)用;
?可以通過(guò)$monitoroff和$monitoron對(duì)$monitor的執(zhí)行進(jìn)行監(jiān)測(cè);
審核編輯:黃飛
-
Monitor
+關(guān)注
關(guān)注
1文章
63瀏覽量
28472 -
配置系統(tǒng)
+關(guān)注
關(guān)注
0文章
7瀏覽量
6524 -
Strobe
+關(guān)注
關(guān)注
0文章
2瀏覽量
6383
原文標(biāo)題:$monitor和$strobe都看的是啥
文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
請(qǐng)問(wèn)2538和2530的性能差異有哪些?特別的,在收發(fā)數(shù)據(jù)的帶寬上有何差別?
單端信號(hào)和差分信號(hào)有何差異?
數(shù)碼調(diào)變技術(shù)與多工技術(shù)有何差異?
DVB-H和韓國(guó)T-DMB地面數(shù)字廣播電視技術(shù)有何差異?
無(wú)刷直流電機(jī)(BLDC)與永磁同步電機(jī)(PMSM)結(jié)構(gòu)及其物理特性有何差異?
基于寄存器與基于固件庫(kù)的stm32 LED流水燈編程方式有何差異
基于標(biāo)準(zhǔn)庫(kù)函數(shù)與基于HAL庫(kù)函數(shù)的stm32編程方式有何差異
Qt ECG Monitor是什么?有何功能
CCTV MOnitor與PC Monitor的差異及區(qū)別
陶瓷電容溫度系數(shù)淺析:1類(lèi)和2類(lèi)電容有何差異?如何標(biāo)識(shí)?

評(píng)論