學習Fusion_Compiler_FE19: OCV(On-Chip Variation)相關(guān)
掃描二維碼
隨時隨地手機看文章
OCV(On-Chip Variation)對時序的影響:
? 晶片上的PVT變化,或者說“芯片內(nèi)變異”(OCV),會引起時序變化。
? 如果在分析和優(yōu)化過程中未考慮OCV,可能會導致實際的時序違規(guī)被遺漏——考慮以下極端示例:
■ 工藝變異本質(zhì)上是隨機的,
? 可能因晶體管而異。
■ 電壓和溫度變異則是系統(tǒng)性的,
? 并且隨著相關(guān)單元之間距離的增加而增大。
芯片的每個部分并不具有完全相同的PVT參數(shù)。晶體管間可能存在隨機的工藝變異(P),這會導致延遲差異。溫度(T)可能根據(jù)布置的單元間不同的功率密度或靠近散熱片的程度而在芯片上有所變化。電壓(V)也可能根據(jù)沿電源網(wǎng)格的IR降而有所不同。電壓和溫度的變異是系統(tǒng)的——潛在的變異會隨距離的增加而增加。術(shù)語“芯片內(nèi)變異”(OCV)用來描述這些隨機和系統(tǒng)的變異。
為什么這很重要?
在上面的例子中,如果你正在分析在“最慢”角點下FF1與FF2間的建立時間,并且假設(shè)所有單元,包括U5和U6緩沖器,都在同一個“最慢”的PVT角點(1.2/0.9V/125°C)中,你可能會錯過一個實際的建立時間違規(guī)情況。由于U5和U6緩沖器實際上放置在芯片上一個“不太慢”或更快的區(qū)域(1.1/0.96V/107°C),相比于分析所假設(shè)的時間,F(xiàn)F1和FF2之間的實際建立時間其實稍微短一些。如果建立時間剛好滿足,這是基于所有單元都處于同一最慢角點的樂觀假設(shè),那么你將錯過一個真實的違規(guī)情況!
傳統(tǒng)用于建模OCV的時序降額方法
通常每個SLOW或FAST角點只提供一個庫
-> 應(yīng)用估計的降額來模擬PVT變化的綜合影響
-
EARLY降額:加快捕捉路徑上的建立時間分析,以及保持時間分析中的啟動路徑
set_timing_derate -late 1.04 -
可以專注于數(shù)據(jù)或時鐘邏輯、網(wǎng)絡(luò)或單元延遲等
set_timing_derate -early 0.92
對于建立時間檢查,啟動路徑延遲乘以晚期(-late)降額因子(>1),而捕獲路徑延遲乘以早期(-early)降額因子(<1)。對于保持時間檢查,則相反:(啟動路徑延遲) x (-early因子); (捕獲路徑延遲) x (-late因子)。
如果沒有指定對象列表,默認情況下會對當前設(shè)計的單元和網(wǎng)絡(luò)延遲(但不包括單元檢查)進行降額。使用 -cell_delay、-net_delay 和 -cell_check 選項僅對指定的時序弧應(yīng)用降額;-cell_check 對寄存器的建立/保持和恢復/移除時序弧進行降額(在早期與晚期降額中被視為“啟動路徑”的一部分)。保持或移除弧的降額是通過(2 - early_factor)來模擬保持/移除時間相應(yīng)的增加,例如:-early值為0.88模擬了12%的速度提升。由于保持/移除時序弧被視為啟動路徑的一部分,遵循上述第一段的規(guī)則,這些弧應(yīng)該乘以早期因子0.88,但這會使保持檢查變得過于樂觀。相反,這些保持檢查乘以2-0.88=1.12,這模擬了12%的相應(yīng)減速,以便進行更保守的時序分析。
時序約束(輸入延遲、輸出延遲、理想時鐘網(wǎng)絡(luò)延遲)不會進行降額。
-data選項表示降額值僅應(yīng)用于數(shù)據(jù)單元。-clock選項表示降額值僅應(yīng)用于時鐘樹單元。數(shù)據(jù)單元與時鐘單元在上圖中進行了說明。如果不指定任一選項,則降額值將應(yīng)用于兩種單元。
使用report_timing_derate命令驗證設(shè)置。
使用reset_timing_derate命令恢復到默認的、未經(jīng)降額的時序設(shè)置。
Derate Factor in Timing Report
set_timing_derate -early 0.92
set_timing_derate -late 1.04
report_timing -path full_clock -derate
可以應(yīng)用增量時序降額:如果設(shè)計中已有不想修改的降額設(shè)置,但又有必要應(yīng)用額外的降額時,可以使用以下命令來控制這一操作:
1set_timing_derate -increment ... 2reset_timing_derate -increment ... 3report_timing_derate -increment ...
需要注意的是,write_sdc命令不會寫入增量降額信息,而write_script命令則會。
總降額因子會根據(jù)所選的降額方法進行計算:
-
簡單降額法:
總降額因子 = 基礎(chǔ)降額因子 + 增量降額因子 -
AOCVM(Advanced On-Chip Variation Modeling):
總降額因子 = (aocvmGuardband * aocvmDerate) + 增量降額 -
POCVM(Per-Instance On-Chip Variation Modeling):
總降額因子 = (pocvmGuardband * pocvmDistanceDerate) + 增量降額
隨機變異的參數(shù)化芯片內(nèi)變異建模(POCV)
? POCV 對單個單元延遲采用了高斯分布模型。
-
每個單元都有一個標稱或平均(m)延遲及一個標準差(σ)延遲值(σ也被稱為敏感度)。
? 一條路徑的累積延遲是通過對每一級延遲分布進行統(tǒng)計疊加來確定的。
統(tǒng)計合并每一級的延遲分布比簡單相加每級的最壞情況值更為精確。由此得到的延遲和松弛時間值比通過簡單最小-最大相加法計算出的值更加真實,也更少悲觀。
POCV輸入數(shù)據(jù):標準差(σ)- 兩種格式
POCV系數(shù)的特點是針對每個庫單元特定的輸入轉(zhuǎn)換和輸出負載定義的(σ= C* m):
■ 不依賴于輸入轉(zhuǎn)換和輸出負載的延遲變化
LVF(Load Variance Function):單元延遲變化量σ(時間單位)是作為每個時序弧的輸入轉(zhuǎn)換和輸出負載的函數(shù)來建模的。
■ 對于更精細的幾何尺寸(≤20nm)和低電壓,延遲變化強烈依賴于輸入斜率和輸出負載。