工程師對于有關(guān)FPGA項目的九大感言
1. 要和人配合。以我們做硬件的工程師為例,測試的時(shí)候一般都需要軟件的配合,一個(gè)對硬件來(lái)說(shuō)無(wú)比復雜的工作,可能在軟件工程師看來(lái)就是幾行簡(jiǎn)單的代碼。所以 要和人配合,多聽(tīng)聽(tīng)別人的意見(jiàn),這樣必然可以產(chǎn)生新的 know-how 從而加快測試和開(kāi)發(fā)的速度,退一步講,至少沒(méi)有壞處。
本文引用地址:http://dyxdggzs.com/article/201710/365636.htm2. 測試還是要別人來(lái)做。開(kāi)發(fā)者看待自己的產(chǎn)品有如看待自己,大多是沒(méi)有勇氣去發(fā)現缺點(diǎn)的。一是源自自尊心,二是為了避免額外的工作。所以就算有問(wèn)題,如果不 嚴重就藏著(zhù)掖著(zhù)。但是這對項目來(lái)說(shuō)是不行的,所以測試,verificaTIon,一定要旁人來(lái)做。
3. 多點(diǎn)時(shí)間思考。出現問(wèn)題后,不要急著(zhù)修改。要思考推測可能的原因,想清楚后把這些可能的原因都用debug pin或者chipscope引出來(lái)。
4. 注意復用已有的debug pin。很多時(shí)候,在測試過(guò)程中產(chǎn)生了一大堆測試信號,但是時(shí)間一長(cháng)就忘了復用。實(shí)際上,當一個(gè)問(wèn)題產(chǎn)生的時(shí)候,通過(guò)反復觀(guān)察已有的debug-pin或 許足以發(fā)現問(wèn)題根源,而無(wú)需再引出新的pin,并浪費時(shí)間去綜合和PAR。
5. 仿真加時(shí)序足矣。數字電路在時(shí)鐘同步的設計原則下,其功能通過(guò)simulaTIon就可以驗證。simulaTIon的結果和PAR后產(chǎn)生的FPGA- image完全等價(jià)。當然FPGA也要遵循同樣的設計原則:即時(shí)鐘同步。所以對于PAR的結果首先就要確保其時(shí)鐘同步的特性。體現為寄存器之間的path 必須在一個(gè)時(shí)鐘周期內完成。(當然有其他約束的例外。)同時(shí)要滿(mǎn)足FPGA器件的setup和hold要求。一旦出現TIming-error必須通過(guò)各 種途徑消除error,因為error的存在,意味著(zhù)時(shí)鐘同步的大前提已經(jīng)被破壞,這時(shí),simulation取得的結果和FPGA是不等價(jià)的,繼續測試 也毫無(wú)意義了。
6. 注意不可控的接口部分。FPGA內部的寄存器之間的timing完全可以通過(guò)PAR報告來(lái)確認是否有問(wèn)題。但是和外界的接口部分卻充滿(mǎn)了疑問(wèn)。我們一般通 過(guò)假定的input-delay和output-delay來(lái)對接口部分進(jìn)行約束。由于從一開(kāi)始就施加的是假定的delay,所以即使沒(méi)有timing- error,其結果也存在諸多疑問(wèn)。以我正在進(jìn)行的測試為例,模塊內部loopback測試完全正常,但是一過(guò)cable,傳到對方FPGA,則馬上產(chǎn)生 很多誤碼。由于simulation沒(méi)有問(wèn)題,所以必然是我們的某個(gè)假定出現了問(wèn)題,尤其是時(shí)鐘同步的假定會(huì )得不到滿(mǎn)足。這時(shí)候,就要想盡一切辦法,使接 口也滿(mǎn)足假定的條件,或者調整設計,將不理想的接口adapting成理想的接口。
7. 向直接上司匯報情況,尋求各種可能的許可。懶得向直接上司匯報情況時(shí),萬(wàn)一出現進(jìn)度或者結果不符,所有責任都需要本人承擔。如果提前向上司匯報情況并取得 許可,則一切后果都在可控范圍內。比如,工作繁忙時(shí)又被派給新的任務(wù),則不能一味逆來(lái)順受。應該向上司說(shuō)明困難,并提前想好一個(gè)可行的解決方案供上司參 考。
8. 外部接口是最大障礙。如前所述,FPGA內部如果timing沒(méi)有問(wèn)題的話(huà),一般和仿真結果是一致的,問(wèn)題是外部的接口,包括cable連線(xiàn)等,不在我們 確切控制的范圍內,比如其延時(shí)特性在40Mhz下仍然正常,但是在80Mhz時(shí)可能出現不可預料的情況。所以應該盡量使用經(jīng)過(guò)驗證的cable-- frequency組合?;蛘咄ㄟ^(guò)設備測量并確認外部接口的延時(shí)特性。這樣可以進(jìn)行有針對性的調整。我最近的教訓就是花了整整一個(gè)月調整并測試內部的結 構,但是仍然失敗。結果發(fā)現由于cable的問(wèn)題,80Mhz的信號(數據+使能+others)無(wú)法正常并行傳輸。如果換成40Mhz的信號就通過(guò)了。
9. 綜合PR后的結果要和代碼等價(jià)。前面提到仿真加時(shí)序足矣,這里面的前提是PR的結果和原始代碼要等價(jià)。為了確認這一點(diǎn),就要把握syn和pr過(guò)程中的所有 warning以及error,warning的內容不是完全可以忽略的。要特別關(guān)注綜合報表中的以下內容:unused ports, removal of redundant logic, latch inference,simulation mismatch等等。在報表中輸入關(guān)鍵字查找即可。
評論