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