最近使用S家的I2C VIP驗(yàn)證芯片的外圍I2C、SMBus總線,作為同樣由SCL和SDA兩根線支撐起的串行總線,協(xié)議相似,因此該I2C VIP也可以配置成SMBus總線使用。只需要更改其最上層的configuration即可,這一點(diǎn)User Guide寫的很清楚,很方便。
具體到SMBus模式的使用場(chǎng)景,我需要在發(fā)送完一筆數(shù)據(jù)后,修改數(shù)據(jù)中的command值,即第一筆數(shù)據(jù)和第二筆數(shù)據(jù)使用的command相同,但需要修改command對(duì)應(yīng)的值。該command在_agent_configuration中聲明,VIP提供了reconfigure_via_task( )來(lái)更改該command。
我參考VIP中提供的示例編寫了sequence,其中更改command的代碼如下:
smbus_cfg.master_cfg[0].xxx_cmd = 'hxx; env.system_env.master[0].reconfigure_via_task(smbus_cfg.master_cfg[0]);
但遇到了問(wèn)題,數(shù)據(jù)包發(fā)送不完,仿真會(huì)掛死在某個(gè)地方,波形上也會(huì)變成一條直線,但run.log暗示數(shù)據(jù)的確是產(chǎn)生了。隨后,根據(jù)VIP提供的另一個(gè)示例,嘗試在調(diào)用完reconfigure_via_task( )后,通過(guò)調(diào)用start( )的方式重新啟動(dòng)sequence,但情況沒(méi)有發(fā)生改變。至此,基本定位到了問(wèn)題出在調(diào)用reconfigure_via_task( )這行代碼上。
重新看run.log,發(fā)現(xiàn)調(diào)用完該task后,VIP的master_agent[0]會(huì)被重新配置成默認(rèn)標(biāo)準(zhǔn)的I2C模式上,這樣問(wèn)題就合理了,I2C standard模式的確發(fā)不了SMBus fast模式的數(shù)據(jù),這也證實(shí)了run.log中現(xiàn)實(shí)數(shù)據(jù)產(chǎn)生了,但總線上沒(méi)有數(shù)據(jù)的情況。
因此,解決的辦法也很簡(jiǎn)單,在調(diào)用reconfigure_via_task( )之前,將SMBus相關(guān)的配置重新配置上即可。

run.log中藏著debug的信息,在出現(xiàn)bug時(shí)一定要仔細(xì)閱讀run.log,經(jīng)驗(yàn)+1。
這個(gè)問(wèn)題也和config_db跨層傳參失誤有關(guān),后面再寫~
審核編輯:劉清
-
芯片
+關(guān)注
關(guān)注
463文章
54007瀏覽量
465949 -
I2C總線
+關(guān)注
關(guān)注
8文章
417瀏覽量
63353 -
SMBus
+關(guān)注
關(guān)注
1文章
130瀏覽量
23203 -
SCL
+關(guān)注
關(guān)注
1文章
244瀏覽量
18016
原文標(biāo)題:日常 - I2C VIP 配置小問(wèn)題
文章出處:【微信號(hào):小杜的芯片驗(yàn)證日記,微信公眾號(hào):小杜的芯片驗(yàn)證日記】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
I2C 為什么只要兩根線就能搞定通信?
P82B715:I2C總線擴(kuò)展的得力助手
基于FPGA的I2C控制模塊設(shè)計(jì)
深入解析 TCA9539:低電壓 16 位 I2C 和 SMBus I/O 擴(kuò)展器
NXP NTAG I2C plus:解鎖NFC連接新可能
深入解析TCA9617B:I2C總線中繼器的卓越之選
AS32X601的I2C模塊操作EEPROM詳解
OPTIGA? TPM SLB 9673 RaspberryPi?評(píng)估板:I2C TPM HAT的深度解析
ISO164x熱插拔雙向I2C隔離器:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)
I2C死鎖的問(wèn)題
深入剖析I2C協(xié)議
第十六章 一文淺談I2C
記錄一下使用I2C VIP驗(yàn)證芯片的一個(gè)bug
評(píng)論