付費限定

[Verilog] STA分析 - hold time violation如何處理 ? (原創)

閱讀時間約 8 分鐘

上一篇內容提到說,

hold time violation的成因是因為訊號源在clk trigger edge後太快就開始要變化成新的value,

導致reg在還沒完全把data取樣下來時他的input端口就開始震動,

可能會導致reg在抓data時出現問題,雖然預期要鎖到1但是最後卻因為input端太早變化導致output又變回原本的0


那對於hold time violation我們又有幾種解法呢?

這邊來探討一下


raw-image


data在clk trigger後所需維持最短的時間為hold time (上圖藍色區域),

因此以reg1為例要如何解他的hold time,

這裡大致也像setup time 一樣有4種解法

1.從data端解決

2.從clk端解決

3.從製程端解決

4.從apr tool解

raw-image


hold time check的時間點是當reg 收到clk trigger的那一剎那開始算

reg0收到clk trigger的時間是1+1個▷

reg1收到clk trigger的時間是1+5個▷

Q0端在reg0收到clk trigger後把新的vaule傳到D1的時間是2個▷


對於data端來解的話,

發生violation代表 Q0 -> comb. (2* ▷)-> D1這段path傳輸得太快

導致Q0一旦開始變化就會去trigger comb變化2個▷後就帶動D1看到新的value,

到D1變動總共花4*▷

但此時clk根本還沒經過6*▷的時間傳到reg1叫開始抓data,

還須持續keep data 2個▷的時間才能動避免hold time violation


因此最直接的解法就是增加comb的深度或複雜度,讓訊號在comb.裡面流動久一點再傳到D1的點上 (e.g. comb= 4*▷) ,

電流在流動時像是水在水管裡流動,一旦水管變長的從Q0到D1就會來的久一點,

只要水管的長度撐過最短的限制就可以成功解掉hold time violation,

那增加水管長度對於在電路上最簡單的時做就是在comb中間多插一些buffer增加delay time


對於clk端來說

其實和Data端解是一個相對的概念

以拍照來舉例,

data端就像是拍照時需要物體靜止不動讓快門Trigger後可以有足夠的時間來抓取物體,

假如物體是一隻在飛的鳥我不可能讓他在空中停留下來不動,每次按下快門後鳥就飛出了觀景窗

我唯一的解法就是先預判等一下鳥會飛到哪個位置比他早到一步然後按下快門,

對於電路來說就是縮短clk->reg1(6*▷)的時間,

想像上是我的data維持一樣的速度行走(2*▷),D1看到變化共1+1+2個▷

因此我把clk->reg1縮短成1+3個▷,

就可以剛好配合data的抵達時間抓取訊號


以製程解來說,

同一個cell都會提供不同特性的cell type,

大致分成幾個種類,

HVT , SVT , LVT , ULVT

HVT : High Voltage Threshold

SVT : Standard Voltage Threshold

LVT : Low Voltage Threshold

ULVT : Ultra Low Voltage Threshold

raw-image


特色是大家的leakage power和cell delay不同

這是天秤兩邊的tradeoff,

想要得到低延遲所需的代價就是漏電量很大,

想要漏電小就必須拿速度來換

速度快慢是 ULVT > LVT > SVT >HVT

漏電大小是 ULVT >LVT > SVT >HVT

ULVT的速度最快同時漏電也最大

HVT則速度慢但漏電小


因此在碰到hold time violation時代表combinational logic的電路速度太快,

不仿換顆速度慢的cell同時還可以得到low leakage的好處

setup time violation亦有一樣的解法

拿leakage power 去換cell運算速度


對於第四種解法apr tool解來說

很特別的關鍵是這裡寫的不是synthesis tool解,

和setup time解法說的不同,

這邊又要帶出一個hold time check很重要的觀念,

前面提到說hold time violation可能是因為combinational logic太簡單,

所以多加幾個buffer來增加delay,

或是因為clk流到Reg0和clk流到Reg1的時間差太多,所以縮短兩段path的差異

但是實際上這些步驟都不會在rtl的內部做任何的改動,

和Setup time violation不同,可以從rtl端下手從源頭把violation修掉(e.g.敲pipe)

通常在修hold time的步驟是留到APR的階段才執行的,

原因是因為hold time violation和clk tree及cell擺放的位置強相關,

rtl level沒有clk tree的概念,也就是clk->reg0和clk->reg1時間相差多少是未知的,

直到apr階段長好clk tree才定案,

因此可以藉由apr tool來重長新的clk tree或是重擺cell的位置分布來達到修正hold time violation的問題

這也是大家提到說synthesis階段大部分可以忽略hold time violation,只需專注於解setup time violation的原因



那來思考一下

上面說hold time violation要到apr長完clk tree後才能得知,

因為會跟cell的擺放和clk tree的走向有關,

那這點會不會對我們在synthesis時專注的Setup time check有影響?

以行動支持創作者!付費即可解鎖
本篇內容共 2923 字、0 則留言,僅發佈於IC面試專班你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
數位IC設計第一品牌 從0到1用嘴做IC 觀念大權
留言0
查看全部
發表第一個留言支持創作者!
上一篇內容提到說register取樣時需要刻意地維持訊號源的stable, 才不會讓register取樣時出現問題, 那如果我真的發生了上述的violation要怎麼處理呢? setup time violation和hold time violation的解法一致? 在這邊詳細的說明一
clk skew 和 clk jitter差別是甚麼? clk skew 指的是兩顆reg 因為clk 到達的時間不同 導致雖然後是屬於於同一個cycle的行為 卻會有先到後到的問題 通常成因為 wire length cell delay clock distribution
sync rst 和 async rst reg 在rtl上只有差在always block的condition不同,但是在合成上卻是兩種不同type的register,有著不同的優缺 sync reset reg : always @ (postedge clk) begin if (!rs
上一篇內容提到說register取樣時需要刻意地維持訊號源的stable, 才不會讓register取樣時出現問題, 那如果我真的發生了上述的violation要怎麼處理呢? setup time violation和hold time violation的解法一致? 在這邊詳細的說明一
clk skew 和 clk jitter差別是甚麼? clk skew 指的是兩顆reg 因為clk 到達的時間不同 導致雖然後是屬於於同一個cycle的行為 卻會有先到後到的問題 通常成因為 wire length cell delay clock distribution
sync rst 和 async rst reg 在rtl上只有差在always block的condition不同,但是在合成上卻是兩種不同type的register,有著不同的優缺 sync reset reg : always @ (postedge clk) begin if (!rs
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
  自從之前發現被對岸網站盜文,就決定在文章中間或末端加上一些文字聲明。由於我連載的平台有好幾個,所以花了一些時間,把每一個平台的每一篇文全都加上聲明,想藉此查看盜文都是從哪個連載平台盜的﹙雖然本來我心裡就有底了,但總要有證據嘛﹚。   而且,因為怕盜文時設有自動屏蔽、替換功能,我還特地將文字聲明
Thumbnail
本文介紹如何對 Telegram 憑證監控機器人的代碼進行優化,包括新增指令、讀取變數、提高可讀性和可維護性。
Thumbnail
設定討論方向到情報操作者不想要的方向,可以卡住情報操作者想引導人們相信的事、辯解的藉口。 以 #兩兆錢坑 法案來講,情報操作者的論述大概是用「時候未到所以不一定」的原理來欺瞞逃脫質疑。這時可以設定的討論方向是: 1雖然未發生,但是法規有限制比較有保障 2討論「空白授權」可能的危害 例如:
Thumbnail
大數據時代下,Log的多元應用至關重要。Log生成龐大,格式各異,特別金融業需合規。探討Log廣泛應用、資訊安全、IT管理和商業決策。建立Log管理系統核心深入法規,強化IT治理、權限控管。一站式Log管理平台,確保資訊安全合規。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
  自從之前發現被對岸網站盜文,就決定在文章中間或末端加上一些文字聲明。由於我連載的平台有好幾個,所以花了一些時間,把每一個平台的每一篇文全都加上聲明,想藉此查看盜文都是從哪個連載平台盜的﹙雖然本來我心裡就有底了,但總要有證據嘛﹚。   而且,因為怕盜文時設有自動屏蔽、替換功能,我還特地將文字聲明
Thumbnail
本文介紹如何對 Telegram 憑證監控機器人的代碼進行優化,包括新增指令、讀取變數、提高可讀性和可維護性。
Thumbnail
設定討論方向到情報操作者不想要的方向,可以卡住情報操作者想引導人們相信的事、辯解的藉口。 以 #兩兆錢坑 法案來講,情報操作者的論述大概是用「時候未到所以不一定」的原理來欺瞞逃脫質疑。這時可以設定的討論方向是: 1雖然未發生,但是法規有限制比較有保障 2討論「空白授權」可能的危害 例如:
Thumbnail
大數據時代下,Log的多元應用至關重要。Log生成龐大,格式各異,特別金融業需合規。探討Log廣泛應用、資訊安全、IT管理和商業決策。建立Log管理系統核心深入法規,強化IT治理、權限控管。一站式Log管理平台,確保資訊安全合規。