上圖是 Innovus foundation flow user guide 中的流程圖,涵蓋了整個(gè) PR 過程,今兒從 PR 對(duì)輸入的要求開始,PR 對(duì)輸入數(shù)據(jù)的要求跟綜合大同小異,關(guān)鍵的部分有:
Timing libraries: Innovus 支持 NLDM, ECSM, CCS 三種庫格式,65nm 之后最好用 ECSM 或 CCS, 模型更精確,沒有 NLDM 那么悲觀,悲觀度可減少 5%~10%;通常 PR 都要 Multi mode Multi corner 同時(shí)優(yōu)化,要保證不同 view 之間庫的一致性;
Physical libraries: Innovus 支持 LEF 跟 OA <OpenAccess> 兩種物理信息描述格式,到目前為止,老驢只用過 LEF 還未接觸過 OA, PR 工具對(duì)物理庫的要求要比綜合工具更嚴(yán)苛,在 Genus 中如果某個(gè)邏輯庫單元沒有對(duì)應(yīng)的物理庫單元,工具會(huì)自動(dòng)將對(duì)應(yīng)的邏輯庫單元設(shè)為 dont use, 而在 Innovus 中如果缺了某個(gè)物理庫單元工具會(huì)報(bào)錯(cuò)。同時(shí)要為 Routing 定義 Non-Default Rules <NDRs>, NDR 可以在 LEF 中定義也可以用 Innovus 的命令 add_ndr 在流程中定義。跟綜合一樣在讀入 LEF 時(shí),要先讀入 technology lef 再讀入其他 LEF, 要跟 library vendor 或 foundry 確定拿到的 LEF 是最新的,在 Tech-lef 中要有 routing 用到的所有 VIA 的定義,如果沒有,可以用 innovus 的命令 setGenerateViaMode 來產(chǎn)生。
netlist: Innovus 要求輸入的 netlist 是 uniquified 的,如果 netlist 沒有做 uniquify 在讀 netlist 之前可以將變量"init_design_uniquify" 設(shè)成 1, 工具會(huì)在解析 netlist 時(shí)候自動(dòng)做 uniquify. 對(duì)于 master/clone partitioning 需要特別處理。有些客戶基于特別需求要求輸入的 netlist 不能有 assign 語句,可以在 Genus 中用命令:remove_assign_without_optimization 加對(duì)應(yīng)的 option 將 assign 刪掉,如果 netlist 有 assign 沒有被刪掉,可以在 innovus 中用命令 remove_assigns 將其刪掉,默認(rèn)該命令會(huì)把 assign 換成一條 net, 但是有些 assign 直連了兩個(gè) port 如果不加 buffer 無法將其刪掉,對(duì)于這種情況建議用"remove_assigns -buffering" 將其替換成 buffer;?其實(shí)在 Innouvs 優(yōu)化過程中也會(huì)引入新的 assign, 如果不讓 innovus 加入新的 assign 可以加變量:set init_remove_assigns 1.?
約束:包括 SDC 跟用戶對(duì)設(shè)計(jì)的約束,如果用的是綜合寫出來的 SDC 且在綜合時(shí)做了過約,在讀入 SDC 之前需要修改過約值,另外對(duì)于 SDC 中的 ideal network 跟 dont touch network 也要修改,如在綜合時(shí)可能沒修某些 DFT 或 reset 信號(hào),但在 PR 時(shí)需要對(duì)這些信號(hào)做 buffering 就需要將對(duì)應(yīng)的 ideal 或 dont touch 屬性去掉,如果在 init_design 之后加額外約束需要先執(zhí)行:set_interactive_constraint_modes [all_constraint_modes -active] 再加對(duì)應(yīng)的命令。除了 SDC 命令之外,還有一些約束如 dont use 跟 dont touch, 這些命令不是 SDC 的命令是針對(duì) design 中 object 設(shè)的命令,加的時(shí)候不需要設(shè) interactive_constraint_modes.?
Extraction: QRC 文件?<Quantus technology file> 用于 RC 抽取,65nm 之前的工藝用 Captable 文件即可,但是到了 65nm 之后 Captable 的精確度已經(jīng)不夠,所以強(qiáng)烈推薦用 QRC 文件,在 Innovus 的不同階段會(huì)用不同的 RC 抽取引擎來抽 RC 如 TQuantus, IQuantus 等。
Signal Intergrity?Libs:?在 innovus 優(yōu)化過程中需要對(duì) SI 引起的 delay?跟 glitch 進(jìn)行分析跟優(yōu)化,這就需要讀入 Noise Models, 如 ECSMN 和 CCSN?library,?或者讀入 cdB library.
ViewDefinition:?定義 multi-Mode Multi-corner, 需要定義 library_set, operation condition, timing condition, rc_corner, delay_corner, constraint_mode, analysis_view, ?相互關(guān)系如下圖所示:
Innovus 輸入所需要的文件,跟輸入端的設(shè)置可以總結(jié)為: