1.扇出太多引起的時(shí)序問題。
信號(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)分問題。
解決該問題常用方法為進(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)能力。但是該方法在使用過程中可以和buffer一起使用,平衡資源利用率和時(shí)延,防止資源分配不均或者時(shí)序考慮不周。
解決該問題常用方法為進(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)能力。但是該方法在使用過程中可以和buffer一起使用,平衡資源利用率和時(shí)延,防止資源分配不均或者時(shí)序考慮不周。
2.對(duì)于時(shí)鐘頻率要求較高導(dǎo)致的上升沿下降沿對(duì)不同的寄存器操作的問題。
首先分析該問題產(chǎn)生原因,如果上升沿下降沿都使用,就相當(dāng)于是電平觸發(fā),電平觸發(fā)比時(shí)鐘沿觸發(fā)更容易受到干擾,所以一般不同時(shí)對(duì)一個(gè)時(shí)鐘的上升沿和下降沿分別對(duì)不同的寄存器操作。
1)將時(shí)鐘通過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è)上升沿下降沿問題也不會(huì)出現(xiàn)了,故,該方法暫不考慮。還有就是對(duì)于時(shí)鐘的使用一定要使用PLL或者M(jìn)MC這些專門的時(shí)鐘內(nèi)核生成。
另外對(duì)于其他方法要思考,比如對(duì)原時(shí)鐘信號(hào)進(jìn)行倍頻實(shí)現(xiàn)上升沿下降沿均為上升沿,這個(gè)方法直接提升系統(tǒng)時(shí)鐘速率一倍,如果不是時(shí)鐘速度太高這個(gè)上升沿下降沿問題也不會(huì)出現(xiàn)了,故,該方法暫不考慮。還有就是對(duì)于時(shí)鐘的使用一定要使用PLL或者M(jìn)MC這些專門的時(shí)鐘內(nèi)核生成。
3.布局太差導(dǎo)致的布線延遲太高問題
布線延遲太高問題一般有兩種情況:
1)一種是布線扇出太多導(dǎo)致的問題,另外再對(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è)問題在上篇中已經(jīng)給出了解決方案,也就是通過邏輯復(fù)制的方法解決。
2)就是今天要說的問題,就是本身各種信號(hào)扇出并不多,邏輯時(shí)間也不是很大,但是布線延遲很大,這種問題就是布局太差的問題。
相應(yīng)的解決方案有:通過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ù)過多情況
也就是邏輯計(jì)算時(shí)間比較大,這種情況一般不屬于時(shí)序問題,而屬于程序編寫問題,盡量不要嵌套IF ELSE語(yǔ)句或者CASE語(yǔ)句嵌套,能用CASE語(yǔ)句盡量不用IF ELSE語(yǔ)句,還有就是在使用IF 語(yǔ)句和CASE語(yǔ)句時(shí)注意防止產(chǎn)生不必要的鎖存器。
責(zé)任編輯:haq
-
FPGA
+關(guān)注
關(guān)注
1660文章
22415瀏覽量
636547 -
驅(qū)動(dòng)
+關(guān)注
關(guān)注
12文章
1956瀏覽量
88559 -
時(shí)鐘
+關(guān)注
關(guān)注
11文章
1972瀏覽量
135023
原文標(biāo)題:FPGA時(shí)序問題與解決方法
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
扇出型晶圓級(jí)封裝技術(shù)的概念和應(yīng)用
深入解析RC190xx:PCIe Gen5/6高性能扇出緩沖器家族
為什么在FPGA設(shè)計(jì)中使用MicroBlaze V處理器
數(shù)字IC/FPGA設(shè)計(jì)中的時(shí)序優(yōu)化方法
FPGA實(shí)現(xiàn)基于SPI協(xié)議的Flash驅(qū)動(dòng)控制芯片擦除
智多晶EDA工具HqFpga軟件的主要重大進(jìn)展
vivado時(shí)序分析相關(guān)經(jīng)驗(yàn)
FPGA測(cè)試DDR帶寬跑不滿的常見原因及分析方法
?CDC3RL02 低相位噪聲雙通道時(shí)鐘扇出緩沖器總結(jié)
高扇出信號(hào)線優(yōu)化技巧(下)
高扇出信號(hào)線優(yōu)化技巧(上)
ADC和FPGA之間LVDS接口設(shè)計(jì)需要考慮的因素
什么是晶圓級(jí)扇出封裝技術(shù)
FPGA時(shí)序約束之設(shè)置時(shí)鐘組
一文詳解Vivado時(shí)序約束
FPGA扇出太多引起的時(shí)序問題
評(píng)論