經過遠程的事故回放,可以說情況是非常明確的,這個代碼的互連結構就是這么個典型結構:
如果用代碼表示呢,大概其就是這樣:
assign vid_in = u_tx_if.valid;
assign data_in = u_tx_if.data;
initial begin
force vid_in = 1'b0;
end
然后肇事者做個了什么操作呢,他去對RTL的接口進行了force。說句題外話,講真的其實個人是不太理解在環境與RTL進行互連的時候為什么會有force操作的,在我看來assign是完成能夠互連任務的。
唯一一種我能想到的場景就是RTL分別例化在BT和SST環境時,為了省力氣不想重新做互連結構所以通過force的方式進行驅動,除此之外不太能理解force的出現了。
還有一個原因讓我一直避免force,剛畢業的時候有大佬和我講,force、callback和宏是驗證環境里的三口“毒品”,用起來雖然很爽能快速的達到目的但是無異于飲鴆止渴,給環境帶來了很大的不確定和不可控風險。
扯遠了,回到剛剛的問題,肇事者對RTL的接口進行了force,而后出現的現象就是,monitor通過u_tx_if采樣時還是采樣到了1也就是driver驅動的數值而不是force在接口上的數值。
為什么還會采樣到1呢?顯然這里犯了一個形而上學的bug,仿真工具只是在模擬真實電路的行為,不是真的在內部搭了一個電路,不是說通過assign a = b之后a和b就真的通過一根線給連在一起綁在一艘船上了!仿真時只會把assign等號右邊的值u_tx_if.valid賦值給左邊,不會把左邊的vid_in賦值給右邊啊:
那你mon連接的是u_tx_if,必然能夠采樣到drv本身驅動到interface上的值啊!
-
模擬電路
+關注
關注
125文章
1588瀏覽量
103488 -
SST
+關注
關注
0文章
69瀏覽量
35525 -
RTL
+關注
關注
1文章
388瀏覽量
60489 -
DRV
+關注
關注
0文章
18瀏覽量
20757
發布評論請先 登錄
相關推薦
關于tb中force signal的問題?
關于ti控制程序的問題,force angle freq和 IQ
swp2加入到vlan100其pvid功能也沒生效求解答
CubeMxSetting配置參數在rt-thread studio生效之后,提示文件不存在的原因是什么?
Design of Crimp force Monitor
MAC Mode Atomic Force Microsco
Application of Atomic Force Mi
Force Spectroscopy with the At
Advanced Atomic Force Microsco
Force/Sense DAC Applications

Force/Sense DAC Applications

模組采樣線短路之后會怎樣?

如何設置采樣頻率才合理呢?

評論