<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 應用EDA仿真技術(shù)解決FPGA設計開(kāi)發(fā)中故障的方法

應用EDA仿真技術(shù)解決FPGA設計開(kāi)發(fā)中故障的方法

作者: 時(shí)間:2010-11-14 來(lái)源:網(wǎng)絡(luò ) 收藏

  本文針對實(shí)際開(kāi)發(fā)過(guò)程中,出現故障后定位困難、反復修改代碼編譯時(shí)間過(guò)長(cháng)、上板后故障解決無(wú)法確認的問(wèn)題,提出了一種采用仿真的方法來(lái)定位、解決故障并驗證故障解決方案??梢源蟠蟮墓澕s開(kāi)發(fā)時(shí)間,提高開(kāi)發(fā)效率。

  近年來(lái)在越來(lái)越多的領(lǐng)域中應用,很多大通信系統(如通信基站等)都用其做核心數據的處理。但是過(guò)長(cháng)的編譯時(shí)間,在研發(fā)過(guò)程中使得解決故障的環(huán)節非常令人頭痛。本文介紹的就是一種用仿真方法解決故障從而減少研發(fā)過(guò)程中的編譯次數,最終達到準確定位故障、縮短解決故障時(shí)間的目的。文例所用到的軟件開(kāi)發(fā)平臺為Altera公司的Quartus II,仿真工具為ModelSim。

  問(wèn)題的提出

  系統開(kāi)發(fā)在上板調試過(guò)程中,有時(shí)候出現的bug是很極端的情況或很少出現的情況,而現在通常的做法是:在故障出現的時(shí)候通過(guò)SignalTap 把信號抓出來(lái)查找其問(wèn)題的所在、修改程序;在改完版本后,先要對整個(gè)工程進(jìn)行重新編譯,然后再上板跑版本進(jìn)行驗證,看看故障是否解決。

  這樣就會(huì )出現三個(gè)問(wèn)題:

 ?、儆袝r(shí)候故障很難定位,只知道哪個(gè)模塊出錯,很難定位到具體的信號上,給抓信號帶來(lái)麻煩。如果故障定位不準確,漏抓了關(guān)鍵信號,則需要重新在 SignalTap里添加信號、編譯版本并再次上板定位故障,浪費時(shí)間。

 ?、诠收隙ㄎ缓?,修改代碼還需要再編譯一次產(chǎn)生新版本的下載文件,修改后若還有問(wèn)題則要重復這一過(guò)程,這樣從故障定位到修改完成需要很多次編譯。

 ?、凵习逯匦逻M(jìn)行驗證時(shí),如果這個(gè)bug的出現的幾率很小,短時(shí)間內不再復現,并不能說(shuō)明在極端情況下的故障真的被解決了。

  舉例說(shuō)明:

  例如在一個(gè)基帶系統的邏輯版本中,輸出模塊調用了一個(gè)異步FIFO,某一時(shí)刻FIFO已空的情況下多讀了一個(gè)數據,產(chǎn)生了bug,如圖1所示。

應用EDA仿真技術(shù)解決FPGA設計開(kāi)發(fā)中故障的方法

  圖1 SignalTap抓出的bug出現時(shí)的數據

  該輸出模塊的功能是判斷FIFO中是否有大于4個(gè)數據可讀出,若大于則連續輸出4個(gè)數據作為一組。系統中采用異步FIFO的內部讀數據指針來(lái)做判斷,而異步FIFO讀寫(xiě)數據需要跨時(shí)鐘域,需要至少2個(gè)時(shí)鐘周期的握手時(shí)間,導致數據指針不準確。在判斷的時(shí)鐘沿,雖然顯示有超過(guò)4個(gè)的數據可讀,但是因為握手時(shí)間的延遲實(shí)際上FIFO中可能只有3個(gè)數據。

  圖1中rdreq為FIFO的讀使能信號,在4個(gè)時(shí)鐘周期內有效,但是只讀出了3個(gè)數(數據0D2086C9F被讀了兩次),因為FIFO在第 4個(gè)時(shí)鐘周期已經(jīng)讀空。這里應該改成同步FIFO,由于同步FIFO數據的讀寫(xiě)只在一個(gè)時(shí)鐘域內進(jìn)行,就沒(méi)有這個(gè)握手時(shí)間延遲的問(wèn)題了。

  定位這個(gè)故障的時(shí)候我們可以很容易知道是哪個(gè)模塊出了問(wèn)題,但是具體是其內部的哪個(gè)信號還需要下些功夫,如果出錯信號隱藏的很深,很難一次就抓到需要的信號;而且即使我們抓到了正確的信號,如果故障在改完之后沒(méi)有解決,則還需要重新修改、再進(jìn)行編譯,耗費時(shí)間;即使改過(guò)之后故障不再復現,也有可能是因為bug出現的條件苛刻,無(wú)法證明故障真的解決了。


上一頁(yè) 1 2 3 4 下一頁(yè)

關(guān)鍵詞: FPGA EDA仿真

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>