fpga項目開(kāi)發(fà)除了(le)技術(shù)过(guò)硬(yìng)之外(wài),還(huán)需要(yào)一(yī)些合作的(de)心(xīn)态去(qù)看(kàn)待項目,下(xià)面(miàn)是(shì)我(wǒ)操刀(dāo)过(guò)这(zhè)麼(me)多(duō)的(de)fpga項目外(wài)包(bāo)服(fú)务的(de)體(tǐ)会(huì):
1. 要(yào)和(hé)人(rén)配合。
以(yǐ)我(wǒ)们(men)做硬(yìng)件(jiàn)的(de)工程师(shī)为(wèi)例,测試的(de)时(shí)候一(yī)般都需要(yào)软(ruǎn)件(jiàn)的(de)配合,一(yī)个(gè)对(duì)硬(yìng)件(jiàn)来(lái)说(shuō)无比複雜的(de)工作,可(kě)能(néng)在(zài)软(ruǎn)件(jiàn)工程师(shī)看(kàn)来(lái)就(jiù)是(shì)幾(jǐ)行簡單的(de)代(dài)碼。
所(suǒ)以(yǐ)要(yào)和(hé)人(rén)配合,多(duō)听(tīng)听(tīng)别人(rén)的(de)意(yì)見(jiàn),这(zhè)樣(yàng)必然可(kě)以(yǐ)産生(shēng)新的(de) know-how 從而(ér)加快(kuài)测試和(hé)開(kāi)發(fà)的(de)速度(dù),退(tuì)一(yī)步講,至(zhì)少(shǎo)沒(méi)有(yǒu)壞处。
開(kāi)發(fà)者(zhě)看(kàn)待自(zì)己的(de)産品有(yǒu)如(rú)看(kàn)待自(zì)己,大多(duō)是(shì)沒(méi)有(yǒu)勇气(qì)去(qù)發(fà)現(xiàn)缺點(diǎn)的(de)。一(yī)是(shì)源自(zì)自(zì)尊(zūn)心(xīn),二(èr)是(shì)为(wèi)了(le)避免額外(wài)的(de)工作。
所(suǒ)以(yǐ)就(jiù)算有(yǒu)問(wèn)題(tí),如(rú)果(guǒ)不(bù)嚴重(zhòng)就(jiù)藏着掖着。但是(shì)这(zhè)对(duì)項目来(lái)说(shuō)是(shì)不(bù)行的(de),所(suǒ)以(yǐ)测試,verification,一(yī)定(dìng)要(yào)旁人(rén)来(lái)做。
出(chū)現(xiàn)問(wèn)題(tí)後(hòu),不(bù)要(yào)急着修改。要(yào)思(sī)考推测可(kě)能(néng)的(de)原因(yīn),想(xiǎng)清(qīng)楚後(hòu)把这(zhè)些可(kě)能(néng)的(de)原因(yīn)都用(yòng)debug pin或(huò)者(zhě)chipscope引出(chū)来(lái)。
4. 注意(yì)複用(yòng)已有(yǒu)的(de)debug pin。
很多(duō)时(shí)候,在(zài)测試过(guò)程中(zhōng)産生(shēng)了(le)一(yī)大堆(duī)测試信(xìn)号(hào),但是(shì)时(shí)間(jiān)一(yī)长就(jiù)忘了(le)複用(yòng)。
实際上(shàng),當一(yī)个(gè)問(wèn)題(tí)産生(shēng)的(de)时(shí)候,通(tòng)过(guò)反(fǎn)複观察已有(yǒu)的(de)debug-pin或(huò)许足以(yǐ)發(fà)現(xiàn)問(wèn)題(tí)根(gēn)源,而(ér)无需再引出(chū)新的(de)pin,并浪費时(shí)間(jiān)去(qù)綜合和(hé)PAR。
5. 仿真(zhēn)加时(shí)序足矣。
數字(zì)電(diàn)路(lù)在(zài)时(shí)鐘(zhōng)同(tóng)步的(de)設計(jì)原則下(xià),其功能(néng)通(tòng)过(guò)simulation就(jiù)可(kě)以(yǐ)验(yàn)證。simulation的(de)結果(guǒ)和(hé)PAR後(hòu)産生(shēng)的(de)FPGA-image完全(quán)等價。
當然FPGA也(yě)要(yào)遵循同(tóng)樣(yàng)的(de)設計(jì)原則:即时(shí)鐘(zhōng)同(tóng)步。所(suǒ)以(yǐ)对(duì)于(yú)PAR的(de)結果(guǒ)首先(xiān)就(jiù)要(yào)确保其时(shí)鐘(zhōng)同(tóng)步的(de)特(tè)性(xìng)。體(tǐ)現(xiàn)为(wèi)寄存器之間(jiān)的(de)path必須在(zài)一(yī)个(gè)时(shí)鐘(zhōng)周期(qī)內(nèi)完成(chéng)(當然有(yǒu)其他(tā)約束(shù)的(de)例外(wài))。
同(tóng)时(shí)要(yào)滿足FPGA器件(jiàn)的(de)setup和(hé)hold要(yào)求。一(yī)旦出(chū)現(xiàn)timing-error必須通(tòng)过(guò)各(gè)種(zhǒng)途徑消除error,因(yīn)为(wèi)error的(de)存在(zài),意(yì)味着时(shí)鐘(zhōng)同(tóng)步的(de)大前(qián)提(tí)已經(jīng)被(bèi)破壞,这(zhè)时(shí),simulation取(qǔ)得的(de)結果(guǒ)和(hé)FPGA是(shì)不(bù)等價的(de),繼續测試也(yě)毫(háo)无意(yì)義了(le)。
FPGA內(nèi)部(bù)的(de)寄存器之間(jiān)的(de)timing完全(quán)可(kě)以(yǐ)通(tòng)过(guò)PAR報告来(lái)确認是(shì)否有(yǒu)問(wèn)題(tí)。但是(shì)和(hé)外(wài)界的(de)接口(kǒu)部(bù)分(fēn)卻充滿了(le)疑問(wèn)。
我(wǒ)们(men)一(yī)般通(tòng)过(guò)假定(dìng)的(de)input-delay和(hé)output-delay来(lái)对(duì)接口(kǒu)部(bù)分(fēn)進(jìn)行約束(shù)。由(yóu)于(yú)從一(yī)開(kāi)始就(jiù)施加的(de)是(shì)假定(dìng)的(de)delay,所(suǒ)以(yǐ)即使沒(méi)有(yǒu)timing-error,其結果(guǒ)也(yě)存在(zài)诸多(duō)疑問(wèn)。
以(yǐ)我(wǒ)正(zhèng)在(zài)進(jìn)行的(de)测試为(wèi)例,模块(kuài)內(nèi)部(bù)loopback测試完全(quán)正(zhèng)常,但是(shì)一(yī)过(guò)cable,傳到(dào)对(duì)方(fāng)FPGA,則马上(shàng)産生(shēng)很多(duō)誤碼。
由(yóu)于(yú)simulation沒(méi)有(yǒu)問(wèn)題(tí),所(suǒ)以(yǐ)必然是(shì)我(wǒ)们(men)的(de)某个(gè)假定(dìng)出(chū)現(xiàn)了(le)問(wèn)題(tí),尤其是(shì)时(shí)鐘(zhōng)同(tóng)步的(de)假定(dìng)会(huì)得不(bù)到(dào)滿足。这(zhè)时(shí)候,就(jiù)要(yào)想(xiǎng)盡一(yī)切(qiè)辦(bàn)法,使接口(kǒu)也(yě)滿足假定(dìng)的(de)条(tiáo)件(jiàn),或(huò)者(zhě)調整設計(jì),将不(bù)理想(xiǎng)的(de)接口(kǒu)adapting成(chéng)理想(xiǎng)的(de)接口(kǒu)。
懒得向(xiàng)直(zhí)接上(shàng)司彙報情(qíng)況时(shí),万(wàn)一(yī)出(chū)現(xiàn)進(jìn)度(dù)或(huò)者(zhě)結果(guǒ)不(bù)符,所(suǒ)有(yǒu)責任都需要(yào)本(běn)人(rén)承担。
如(rú)果(guǒ)提(tí)前(qián)向(xiàng)上(shàng)司彙報情(qíng)況并取(qǔ)得许可(kě),則一(yī)切(qiè)後(hòu)果(guǒ)都在(zài)可(kě)控範圍內(nèi)。比如(rú),工作繁忙时(shí)又被(bèi)派給(gěi)新的(de)任务,則不(bù)能(néng)一(yī)味逆来(lái)順受。應(yìng)該向(xiàng)上(shàng)司说(shuō)明(míng)困難,并提(tí)前(qián)想(xiǎng)好(hǎo)一(yī)个(gè)可(kě)行的(de)解(jiě)決方(fāng)案(àn)供上(shàng)司參考。
前(qián)面(miàn)提(tí)到(dào)仿真(zhēn)加时(shí)序足矣,这(zhè)里(lǐ)面(miàn)的(de)前(qián)提(tí)是(shì)PR的(de)結果(guǒ)和(hé)原始代(dài)碼要(yào)等價。为(wèi)了(le)确認这(zhè)一(yī)點(diǎn),就(jiù)要(yào)把握syn和(hé)pr过(guò)程中(zhōng)的(de)所(suǒ)有(yǒu)warning以(yǐ)及(jí)error,warning的(de)內(nèi)容不(bù)是(shì)完全(quán)可(kě)以(yǐ)忽略的(de)。要(yào)特(tè)别關(guān)注綜合報表(biǎo)中(zhōng)的(de)以(yǐ)下(xià)內(nèi)容:unused ports, removal of redundant logic, latch inference,simulation mismatch等等。在(zài)報表(biǎo)中(zhōng)輸入(rù)關(guān)鍵字(zì)查找(zhǎo)即可(kě)。
温(wēn)馨提(tí)示:明(míng)德揚除了(le)培訓学習還(huán)有(yǒu)項目承接業务,擅长的(de)項目主(zhǔ)要(yào)包(bāo)括的(de)方(fāng)向(xiàng)有(yǒu)以(yǐ)下(xià)幾(jǐ)个(gè)方(fāng)面(miàn):
1. MIPI視頻拼接
2. SLVS-EC轉(zhuǎn)MIPI接口(kǒu)(IMX472 IMX492)
3. PCIE采集系(xì)統
4. 图(tú)像項目
5. 高(gāo)速多(duō)通(tòng)道(dào)ADDA系(xì)統
6. 基于(yú)FPGA板卡(kǎ)研發(fà)
7. 多(duō)通(tòng)道(dào)高(gāo)靈敏電(diàn)荷放(fàng)大器
8.射頻前(qián)端
http://old.mdy-edu.com/xmucjie/2023/0201/1865.html
(點(diǎn)擊→了(le)解(jiě)項目承接業务詳情(qíng)☝)








