????????之前聽說過一句話,沒有修過ECO的人生是不完整的。最近就給我整得再次完整了。。。。。。
????????最近趕項目,RTL freeze之后,后仿發現出了bug(還好攔下來了,不然頭更大),于是做了一次function ECO,記錄下流程。。。。項目還是delay了。。。。。永遠記得checklist一定得過!!!!
RTL freeze就是說,從今天起,大家誰也不能再修改RTL了。RTL freeze是一個分水嶺。在freeze之前,你仿真也好,看代碼也好,FPGA驗證也好,發現的任何bug,都可以通過修改RTL的方式進行直接更正。但是freeze之后,被freeze的RTL將會進行綜合,STA,然后送給后端人員,做floor plan,電源綜合,時鐘綜合,布局布線等等。這些后端流程都是極其耗時的,而且通常不可逆的。
????????閑話扯完了,下面進入正題。
????????Conformal是Cadence家的一款形式驗證驅動的等效、低功耗和ECO解決方案,使用可為用戶提供獨立的等效性檢查解決方案,支持從RTL到P&R的最終網表驗證設計。要做ECO的話需要Conformal ECO XL 或 GXL license。目前主要大廠都用它做ECO。(S家的formality主要是我不知道如何自動生成ECO腳本,不過去年好像出了視頻,年后抽空學習一下。。。。)
? ? ? ? ECO的介紹就不多提了,見:
數字后端——ECO_滄海一升的博客-CSDN博客對ECO(engineering change order)進行簡單介紹https://blog.csdn.net/qq_21842097/article/details/121717450? ? ? ???Conformal支持Flattened ECO Flow和Hierarchical?ECO Flow。這里主要說明Flattened ECO Flow,這也是官方推薦的。Flattened下,工具會將 ECO 分析重點放在從平面比較中確定的非等效關鍵點上,且更容易設置,所有 ECO 補丁都可以用一個命令創建。
? ? ? ? FLOW如下:
????????1、使用 SET ECO OPTION -flat 命令(setup mode)指定運行 FEF 流:
SET FLATTEN MODEL -ECO
SET FLATTEN MODEL -ENABLE_ANALYZE_HIER_COMPARE
????????它還會自動將以下選項添加到 ANALYZE HIER_COMPARE 命令
-CONstraints
-NOEXact_pin_match
-FUNCTION_Pin_mapping
-INPUT_OUTPUT_Pin_equivalence
-THRESHOLD 0 //便于工具確定所有模塊邊界
????????2、為ANALYZE HIER_COMPARE命令增加額外指令。
? ? ? ? 3、使用 ADD COMPARE POINTS -all 和 COMPARE 命令開始flatten設計之間的比較。 這里主要是確定非一致性的關鍵點。
? ? ? ? 4、使用 COMPARE ECO HIERARCHY 命令根據模塊邊界(由步驟 1 確定)將非一致性點(在步驟 2 中確定)分解為其子模塊。
? ? ? ? 5、使用 ANALYZE ECO -hierarchical 命令創建所有必要的patches。
? ? ? ? 6、分別使用 APPLY PATCH 和 OPTIMIZE PATCH 命令應用和優化patches。
? ? ? ? 下面主要說下function ECO(pre-mask)的流程,這次我跑的就是這個,只能說不幸中的萬幸吧。。。?流程如下:
? ? ? ? ?1、將舊 RTL 與舊網表進行比較。應該結果是等價的,這里需要通過添加掃描約束來禁用掃描。
? ? ? ? 2、綜合修改后的RTL。一般來說用與創建舊網表相同的綜合工具、版本和腳本。 盡量減少任何更改。
? ? ? ? 3、將新?RTL 與新網表進行比較。應該結果是等價的。
? ? ? ? 4、將舊 RTL 與新 RTL 進行比較。結果是不等價的。這里需要注意的是,新的RTL讀入為Golden design,舊的RTL讀入為Revised design。
????????5、比較舊網表和新網表。
? ? ? ? 6、使用舊網表和新網表創建 ECO patch文件。在驗證了第 5 步中的所有非等價點都是由功能更改引起的之后,使用 Conformal 為每個非等價模塊創建一個patch文件。?在此步驟中使用的任何 ADD ECO PIN 命令也必須用于第 7 步和第 8 步。如果在創建 ECO patch 文件期間進行了任何展平,則必須對第 7 步和第 8 步執行相同的展平。
? ? ? ? 7、應用patch并寫出 ECO 網表。在分析所有 ECO 模塊后使用patch文件創建 ECO 網表,然后寫出尚未映射或優化的網表。
? ? ? ? 8、優化補丁。這一步有點類似綜合。
? ? ? ? 9、ECO網表進行等價性檢查。一致性檢查必不可少。
? ? ? ? 還是看腳本比較直接。ANALYZE ECO 命令會為每個非等價模塊創建patch文件。 patch文件定義了一個patch模塊并包含將改變設計功能的更改。 patch模塊名稱是附加了 _eco 的原始非等價模塊名稱。我這里主要是對比了兩個網表,然后進行處理:
set log file eco.log -replaceset flatten model -eco
set flatten model -gated_clock
set flatten model -enable_analyze_hier_compareread library xxx.lib -replace -libertyread design r2.v -golden -replace
read design r1.v -revised -replace
//===================================
//等價的寫法
//set x conversion e -both
//read design r1.v -golden -replace
//read design r2.v -revised -replace
//===================================report design data
report black boxuniquify -all -nolibrary -revised
add module attribute mod* -eco_module -noflatten -bothset system mode lec
analyze hier -eco_aware
add compare point -all
compare
compare eco hierarchy
analyze eco patch.v -preserve_clock -replace -hierarchical
//analyze 有-ecopin_dofile選項來增加eco pins,這次沒用到set system mode setup
apply patch -golden -keephierarchy -auto
optimize_patch -workdir <working_directory> \-library <lib_file_list> \-sdc <sdc_filename> \-instancenaming “ECOinst_%d” \-netnaming “ECOnet_%d” \-sequentialnaming “ECOreg_%s” \-synexec “genus” \-verbose
report eco changes -script -file xxx.script -replace
write eco design -newfile eco.v -replace -report ECOprelogics.rpt