組合邏輯生成的時(shí)鐘,在FPGA設(shè)計(jì)中應(yīng)該避免,尤其是該時(shí)鐘扇出很大或者時(shí)鐘頻率較高,即便是該時(shí)鐘通過BUFG進(jìn)入全局時(shí)鐘網(wǎng)絡(luò)。
組合邏輯生成時(shí)鐘的典型特征是在網(wǎng)表中我們能夠看到LUT(查找表)的輸出直接連接或通過BUFG連接到時(shí)序邏輯單元比如觸發(fā)器的時(shí)鐘端口。最直接的危害是組合邏輯可能會(huì)產(chǎn)生毛刺(Glitch),從而導(dǎo)致電路功能錯(cuò)誤??磦€(gè)案例,如下圖所示。由于毛刺的存在,計(jì)數(shù)器多計(jì)數(shù)了一次,導(dǎo)致錯(cuò)誤。
從時(shí)序角度而言,組合邏輯生成的時(shí)鐘會(huì)增加時(shí)鐘線上的延遲,從而導(dǎo)致過大的Clock Skew,最終造成建立時(shí)間和保持時(shí)間違例。此外,如果有毛刺,毛刺通常很窄,很可能無法滿足觸發(fā)器的Pulse Width要求。還有的工程中盡管沒有直接把LUT的輸出當(dāng)作時(shí)鐘,而是將其通過一個(gè)觸發(fā)器之后再用作時(shí)鐘,這可以過濾掉毛刺,但同樣會(huì)增加時(shí)鐘線上的延遲,導(dǎo)致Clock Skew過大。因此,在FPGA設(shè)計(jì)中,要避免此類時(shí)鐘。
拿到一個(gè)網(wǎng)表,如何判定設(shè)計(jì)中是否包含此類時(shí)鐘呢?從上面的描述可以看到,這類時(shí)鐘要么是LUT輸出,要么是觸發(fā)器輸出,這是第一個(gè)特征。第二個(gè)特殊,既然是時(shí)鐘,時(shí)鐘網(wǎng)線的類型就是LOCAL_CLOCK,根據(jù)這兩點(diǎn)就能找到時(shí)鐘管腳,相應(yīng)的Tcl腳本如下圖所示。
代碼第2行是找到所有的時(shí)鐘網(wǎng)線,第3行對(duì)該時(shí)鐘網(wǎng)線進(jìn)行過濾篩選,凡是與網(wǎng)線相連的pin是輸出端口且其REF_PIN_NAME是O(對(duì)應(yīng)LUT輸出)或Q(對(duì)應(yīng)觸發(fā)器輸出)的,即為目標(biāo)時(shí)鐘端口。代碼第4行則是將找到的對(duì)象以圖形界面方式顯示出來。
找到了這類時(shí)鐘,如何優(yōu)化呢?如果這類時(shí)鐘是在MMCM或PLL可生成頻率范圍內(nèi),那么建議用MMCM或PLL生成,尤其是該時(shí)鐘扇出比較大的時(shí)候。如果MMCM或PLL無法生成,且時(shí)鐘頻率很低,例如低于5MHz,而設(shè)計(jì)已經(jīng)到了后期,不太可能大范圍修改,那么嘗試是否可能將該時(shí)鐘驅(qū)動(dòng)的邏輯都放在一個(gè)時(shí)鐘區(qū)域內(nèi),同時(shí)保證時(shí)鐘源也在該時(shí)鐘區(qū)域內(nèi),這可通過手工布局的方式(畫Pblock)實(shí)現(xiàn)。這樣做對(duì)于降低Clock Skew會(huì)有些幫助。
責(zé)任編輯人:CC
-
時(shí)鐘
+關(guān)注
關(guān)注
11文章
1901瀏覽量
133229 -
組合邏輯
+關(guān)注
關(guān)注
0文章
48瀏覽量
10214
原文標(biāo)題:如何快速找到組合邏輯生成的時(shí)鐘
文章出處:【微信號(hào):Lauren_FPGA,微信公眾號(hào):FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
組合邏輯消除競爭
勇敢的芯伴你玩轉(zhuǎn)Altera FPGA連載25:組合邏輯與時(shí)序邏輯
【技巧分享】時(shí)序邏輯和組合邏輯的區(qū)別和使用
在FPGA中何時(shí)用組合邏輯或時(shí)序邏輯
組合邏輯電路的分析與設(shè)計(jì)-邏輯代數(shù)

組合邏輯電路的設(shè)計(jì)

實(shí)現(xiàn)拆分大組合邏輯的方法

組合邏輯電路和時(shí)序邏輯電路比較_組合邏輯電路和時(shí)序邏輯電路有什么區(qū)別

組合邏輯自動(dòng)測試生成的PDF文件免費(fèi)下載

組合邏輯電路中的危害

評(píng)論