首先,從理論上講,Hold Time違例,是因?yàn)?a href="http://www.www27dydycom.cn/tags/時(shí)鐘/" target="_blank">時(shí)鐘繞的太遠(yuǎn),到達(dá)時(shí)間太晚。而且綜合之后給出的時(shí)序報(bào)告都是估計(jì)值,因此綜合之后可以不考慮Hold Time,只考慮Setup Time;即便此時(shí)Hold Time違例,我們也不需要去理會。在Place Design之后再去看Hold Time,如果此時(shí)Hold Time的違例比較?。ū热?0.05ns),還是不需要理會的,因?yàn)楣ぞ咴诓季€時(shí)會修復(fù)Hold,但如果Slack太大了,無法修復(fù)了,就會犧牲setup來彌補(bǔ)hold。
如果出現(xiàn)了hold的違例,我們首先要分析時(shí)序報(bào)告,看是不是clock的skew太大了,hold違例一般都是時(shí)鐘的skew太大導(dǎo)致,如果skew太大,就要檢查原因了,是不是時(shí)鐘路徑上有buffer導(dǎo)致的,或者是因?yàn)闀r(shí)鐘跨SLR這種路徑太長導(dǎo)致。如果時(shí)鐘路徑上并沒有什么多余的buffer或者邏輯,那使用全局時(shí)鐘網(wǎng)絡(luò)帶來的skew是最小的。
這里補(bǔ)充一下綜合實(shí)現(xiàn)的步驟:
synth_design -> opt_design -> place-design -> phys_opt_design -> route_design
我們可以讓工具在每一步執(zhí)行后都會有時(shí)序報(bào)告,只需要把Report Options的策略選擇為Timing Closure Reports
如果route design之后hold time還是違例,可以使用tcl指令:
phys_opt_design -directive ExploreWithHoldFix
這個(gè)指令會嘗試不同的算法來優(yōu)化hold time違例(其實(shí)就是在數(shù)據(jù)路徑上插入LUT增加延遲)
或者在Implementation的時(shí)候指定,是一樣的效果。
Hold違例解決方法總結(jié)如下:
1. 檢查違例的時(shí)鐘是否是在全局時(shí)鐘網(wǎng)絡(luò)上,最好是讓時(shí)鐘走全局時(shí)鐘網(wǎng)絡(luò),減小skew
2. 檢查時(shí)序路徑上,避免有時(shí)鐘BUFFER的級聯(lián)
3. 插入延遲邏輯,在數(shù)據(jù)路徑上增加邏輯延遲(可以使用ExploreWithHoldFix讓工具自動(dòng)插入,也可以手動(dòng)修改代碼插入)
審核編輯:劉清
-
時(shí)鐘
+關(guān)注
關(guān)注
11文章
1901瀏覽量
133238
原文標(biāo)題:Hold Time違例,該如何解決
文章出處:【微信號:傅里葉的貓,微信公眾號:傅里葉的貓】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
Setup/Hold Time Problem
【FPGA經(jīng)典試題】電路模塊的setup-time和hold-time是正值還是負(fù)值
解釋下setup和hold time
請問AD80370中hold up time為負(fù)值是為什么?
2018年IC設(shè)計(jì)企業(yè)筆試題01英偉達(dá)Nvidia
出現(xiàn)時(shí)序違例的原因及解決辦法
什么是Setup和Hold時(shí)間
怎么解釋setup time和hold time的定義和在時(shí)鐘信號延遲時(shí)的變化呢?
Timing收斂 – 如何消除Hold Timing違例

建立時(shí)間和保持時(shí)間(setup time 和 hold time)
Vivado時(shí)序案例分析之解脈沖寬度違例

為什么setup檢查下一個(gè)沿而hold檢查當(dāng)前沿
通過解剖一個(gè)邊沿觸發(fā)器簡要說明setup和hold產(chǎn)生原因

評論