最近在Debug C家AMBA VIP的過(guò)程中遇到一些問(wèn)題。有兩個(gè)問(wèn)題感覺(jué)值得記錄一下,免得以后忘記了,或者其他朋友也可能遇到類(lèi)似的情況,也許幫助自己的同時(shí)還能順便幫助到別人。第一個(gè)問(wèn)題是關(guān)于AXI VIP的;第二個(gè)問(wèn)題是關(guān)于ace_lite_vip發(fā)送多個(gè)WriteNoSnoop操作相關(guān)的問(wèn)題。
1. AXI VIP通過(guò)調(diào)整latency對(duì)設(shè)計(jì)進(jìn)行反壓
當(dāng)把latency(xx_yy_ready_delay)調(diào)的特別高時(shí),或者是隨機(jī)到比較大的數(shù)值時(shí),C家的VIP就會(huì)報(bào)下面的UVM_WARNING
[CDN_AXI_NONFATAL_WARN_EOS_QUEUE_IS_NOT_EMPTY],仔細(xì)看下面還有ERROR的提示以及建議。最后通過(guò)把latency調(diào)整到比較小的值,就沒(méi)有這個(gè)現(xiàn)象了。

2.ace_lite_vip發(fā)送多個(gè)WriteNoSnoop操作
在sequence中打印log發(fā)現(xiàn),sequence已經(jīng)把transaction發(fā)出了,但是ace_lite_vip的driver卻沒(méi)有將這一筆數(shù)據(jù)驅(qū)動(dòng)到interface,driver后續(xù)也不再往interface上驅(qū)動(dòng)transaction了。如下圖所示,從紅色矩形框往后,總線上就沒(méi)有任何toggle了。

后來(lái)經(jīng)過(guò)仔細(xì)分析trace file(denali.trc,話說(shuō)denali.trc對(duì)分析vip的幫助實(shí)在是太大了,以后結(jié)合具體的例子再深入的研究一下)信息發(fā)現(xiàn),在紅色矩形框后面的某個(gè)時(shí)間點(diǎn),VIP接收到帶有IdTag=xx的transaction,這是個(gè)writeNoSnoop的原子事務(wù),但其帶有的字段”DENALI_CDN_AXI_FLD_Atomic”被設(shè)置為了“DENALI_CDN_AXI_ATOMICTRANSACTION_AtomicLoad_LITTLE_EOR”的枚舉值。因?yàn)榧虞d了這個(gè)原子操作,所以就需要Slave在寫(xiě)入后也響應(yīng)數(shù)據(jù),由于沒(méi)有來(lái)自slave的數(shù)據(jù)響應(yīng),因此這筆原子操作沒(méi)有完成。
這時(shí)候最后一個(gè)transaction來(lái)了,并且和前面分析的那筆transaction擁有相同的IdTag。因?yàn)橹暗哪枪P具有相同ID的原子操作還沒(méi)有完成,因此,VIP放棄了這筆交易,這就是掛起的原因。如果將verbosity registor設(shè)置為FULL,在log中就會(huì)看到這個(gè)消息。
解決方法:
a.將后面的transaction的IdTag設(shè)置為與前面事務(wù)的IdTag都不相同。
b.或者將”DENALI_CDN_AXI_FLD_Atomic”字段設(shè)置為
”DENALI_CDN_AXI_ATOMICTRANSACTION_NonAtomicOperation”。
最后,通過(guò)試驗(yàn)驗(yàn)證了方法a是可行的。
回顧總結(jié)一下,犯這個(gè)錯(cuò)誤的主要原因是,在寫(xiě)sequence的時(shí)候只對(duì)部分字段做了約束,其他字段隨機(jī),而TagID就在隨機(jī)之列。如果運(yùn)氣好,TagID沒(méi)有重復(fù)的話,這個(gè)問(wèn)題還暴露不出來(lái)了呢。所以理解協(xié)議是多么重要呀。換個(gè)角度再想想,你我皆凡人,不踩坑,不看別人踩坑,很難漲知識(shí)呀。你看到了,希望你也能從中受益。查看更多精彩內(nèi)容,請(qǐng)關(guān)注微信公眾號(hào)《芯片驗(yàn)證日記》。
AXI/ACE協(xié)議支持亂序傳輸。他給每一個(gè)通過(guò)接口的事務(wù)一個(gè)IDtag。協(xié)議要求相同ID tag的事務(wù)必須有序完成,而不同ID tag可以亂序完成。
-
AMBA
+關(guān)注
關(guān)注
0文章
70瀏覽量
15355 -
DEBUG
+關(guān)注
關(guān)注
3文章
94瀏覽量
20403
發(fā)布評(píng)論請(qǐng)先 登錄
BF609 SPI flash為空的時(shí)候,為什么不能連續(xù)兩次debug?
如何比較前后兩次輸入值的大小
按兩次才能停下
BF609 SPI flash的為空時(shí)不能連續(xù)兩次debug
EXTI重復(fù)配置兩次導(dǎo)致誤觸發(fā)中斷的問(wèn)題
debug使用s32ds時(shí),如何查看兩次break之間的動(dòng)作時(shí)間?
Synopsys為Arm AMBA CXS的VIP提供EDA驗(yàn)證解決方案
馬斯克:4次新冠病毒檢測(cè) 兩次陰性 兩次陽(yáng)性
愛(ài)立信的兩次“失算”
寧德時(shí)代旗下公司兩次突發(fā)事故
4-AMBA VIP 編程接口

評(píng)論