1.扇出太多引起的時(shí)序問(wèn)題。
信號(hào)驅(qū)動(dòng)非常大,扇出很大,需要增加驅(qū)動(dòng)能力,如果單純考慮驅(qū)動(dòng)能力可以嘗試增加buffer來(lái)解決驅(qū)動(dòng)能力,但在插入buffer的同時(shí)增加了route的延時(shí),容易出現(xiàn)時(shí)序報(bào)告評(píng)分問(wèn)題。
解決該問(wèn)題常用方法為進(jìn)行驅(qū)動(dòng)信號(hào)邏輯復(fù)制,即對(duì)扇出很大的信號(hào)產(chǎn)生邏輯進(jìn)行多次復(fù)制,生成多路同頻同相的信號(hào)去驅(qū)動(dòng)下級(jí)邏輯電路。保證了時(shí)延同時(shí)也增大了驅(qū)動(dòng)能力。但是該方法在使用過(guò)程中可以和buffer一起使用,平衡資源利用率和時(shí)延,防止資源分配不均或者時(shí)序考慮不周。
解決該問(wèn)題常用方法為進(jìn)行驅(qū)動(dòng)信號(hào)邏輯復(fù)制,即對(duì)扇出很大的信號(hào)產(chǎn)生邏輯進(jìn)行多次復(fù)制,生成多路同頻同相的信號(hào)去驅(qū)動(dòng)下級(jí)邏輯電路。保證了時(shí)延同時(shí)也增大了驅(qū)動(dòng)能力。但是該方法在使用過(guò)程中可以和buffer一起使用,平衡資源利用率和時(shí)延,防止資源分配不均或者時(shí)序考慮不周。
2.對(duì)于時(shí)鐘頻率要求較高導(dǎo)致的上升沿下降沿對(duì)不同的寄存器操作的問(wèn)題。
首先分析該問(wèn)題產(chǎn)生原因,如果上升沿下降沿都使用,就相當(dāng)于是電平觸發(fā),電平觸發(fā)比時(shí)鐘沿觸發(fā)更容易受到干擾,所以一般不同時(shí)對(duì)一個(gè)時(shí)鐘的上升沿和下降沿分別對(duì)不同的寄存器操作。
1)將時(shí)鐘通過(guò)MMC或者PLL產(chǎn)生180相移產(chǎn)生新的時(shí)鐘,新的始終的上升沿就是原時(shí)鐘的下降沿,從而實(shí)現(xiàn)都為上升沿觸發(fā)。
2)使用全局時(shí)鐘資源中的INV實(shí)現(xiàn)對(duì)原時(shí)鐘信號(hào)取反,然后新的時(shí)鐘信號(hào)的上升沿就是原時(shí)鐘的下降沿。
另外對(duì)于其他方法要思考,比如對(duì)原時(shí)鐘信號(hào)進(jìn)行倍頻實(shí)現(xiàn)上升沿下降沿均為上升沿,這個(gè)方法直接提升系統(tǒng)時(shí)鐘速率一倍,如果不是時(shí)鐘速度太高這個(gè)上升沿下降沿問(wèn)題也不會(huì)出現(xiàn)了,故,該方法暫不考慮。還有就是對(duì)于時(shí)鐘的使用一定要使用PLL或者M(jìn)MC這些專(zhuān)門(mén)的時(shí)鐘內(nèi)核生成。
另外對(duì)于其他方法要思考,比如對(duì)原時(shí)鐘信號(hào)進(jìn)行倍頻實(shí)現(xiàn)上升沿下降沿均為上升沿,這個(gè)方法直接提升系統(tǒng)時(shí)鐘速率一倍,如果不是時(shí)鐘速度太高這個(gè)上升沿下降沿問(wèn)題也不會(huì)出現(xiàn)了,故,該方法暫不考慮。還有就是對(duì)于時(shí)鐘的使用一定要使用PLL或者M(jìn)MC這些專(zhuān)門(mén)的時(shí)鐘內(nèi)核生成。
3.布局太差導(dǎo)致的布線延遲太高問(wèn)題
布線延遲太高問(wèn)題一般有兩種情況:
1)一種是布線扇出太多導(dǎo)致的問(wèn)題,另外再對(duì)扇出太多補(bǔ)充一點(diǎn),扇出太多而增加buffer提高驅(qū)動(dòng)能力,而普通I/O信號(hào)或片內(nèi)信號(hào)進(jìn)入BUFG到從BUFG輸出,有大約10ns的固定時(shí)延,但是BUFG到片內(nèi)所有單元的延時(shí)可以忽略為0ns。這個(gè)問(wèn)題在上篇中已經(jīng)給出了解決方案,也就是通過(guò)邏輯復(fù)制的方法解決。
2)就是今天要說(shuō)的問(wèn)題,就是本身各種信號(hào)扇出并不多,邏輯時(shí)間也不是很大,但是布線延遲很大,這種問(wèn)題就是布局太差的問(wèn)題。
相應(yīng)的解決方案有:通過(guò)ISE布局工具中調(diào)整布局的努力程度(effort level),特別努力程度(extra effort),MPPR選項(xiàng),實(shí)在不行的話就嘗試使用Flootplanner相對(duì)區(qū)域約束重新對(duì)設(shè)計(jì)進(jìn)行布局規(guī)劃。
4.就是出現(xiàn)邏輯級(jí)數(shù)過(guò)多情況
也就是邏輯計(jì)算時(shí)間比較大,這種情況一般不屬于時(shí)序問(wèn)題,而屬于程序編寫(xiě)問(wèn)題,盡量不要嵌套IF ELSE語(yǔ)句或者CASE語(yǔ)句嵌套,能用CASE語(yǔ)句盡量不用IF ELSE語(yǔ)句,還有就是在使用IF 語(yǔ)句和CASE語(yǔ)句時(shí)注意防止產(chǎn)生不必要的鎖存器。
責(zé)任編輯:haq
-
FPGA
+關(guān)注
關(guān)注
1625文章
21624瀏覽量
601245 -
驅(qū)動(dòng)
+關(guān)注
關(guān)注
12文章
1820瀏覽量
85110 -
時(shí)鐘
+關(guān)注
關(guān)注
10文章
1714瀏覽量
131277
原文標(biāo)題:FPGA時(shí)序問(wèn)題與解決方法
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論