對IC Flow的反思
博士期間已經經歷過三次流片了,由於基本上沒人帶著走過流片的flow,很多事情自己第一次上手時主打一個誤打誤撞。所以每次流片結束之後,做覆盤與反思就顯得尤為重要。
這裡還是對一些重要的個人認為的原則做一下記錄,姑且當作checklist。
設計階段
- 必須明確了設計目標,功能模組以及相互之間的介面後再開始設計。
- 必須拿到不熟悉工藝的PDK,先檢查檔案是否齊全。
- 必須每個主要模組都要有儘可能詳細的文件。
- 必須儘可能完整的歸檔和保留工程檔案。
- 應當透過git進行專案的版本管理。
- 應當儘可能的使用可靠的開源IP(如Github,OpenCores等網站),以減少造輪子的工作量。
- 應當儘可能的使用成熟且穩定的電路結構,除了工作的主要創新點。
- 絕對要堅毅而狠心的進度管理,在目標上合理做減法,當斷不斷必受其亂。
驗證階段
- 必須提前做好驗證規劃,確保覆蓋到每一條設計功能都有對應的驗證條目。
- 必須對每一個驗證條目有儘可能詳細的文件記錄。
- 必須儘可能完整地將驗證所用檔案工程與設計工程一併進行保留和歸檔。
- 應當採用UVM設計方法學進行驗證。
- 應當對重要功能電路做多工藝角和蒙特卡洛模擬。
- 應當對有軟硬體協同需求的專案提前搭建參考模型,例如採用SystemC。
- 應當採用多方位的驗證手段,包括前模擬,後模擬,一致性檢驗,數模混合模擬,FPGA上板驗證等。
- 絕對要將驗證成功作為進度的里程碑,未經過完整驗證前設計不要往前亂推。
流片階段
- 必須對全片做完整的DRC,LVS,ANT檢查並確保Clean,並保留和歸檔report。
- 必須準確的Layer by Layer的核對Foundry的流片檢查表格,確保沒有用錯/用多/用少Layer。
- 必須謹慎的進行JDV檢查,避免出現錯層/錯位等重大問題。
- 必須提前和Foundry瞭解需要使用的DRC規則版本,並核對確保option不出錯。
- 應當給晶片新增LOGO,以方便bonding時確定正方向。
- 應當提前預留Foundry做Dry Run的時間。
- 應當對流片提交過程中的所有GDS檔案進行checksum檢查,避免傳輸過程中的損壞/出錯。
- 絕對要在流片這一步慎之又慎,任何檢查上的疏漏,都有可能使得大筆的錢以及團隊之前數月的努力付之東流。
測試階段
- 必須仔細核對bonding板與晶片引腳的對應關係,並確保絲印的正確性。
- 必須提前做好測試規劃,包括要測試的功能,測試方案,預期激勵,預期響應,實際激勵,實際響應等。
- 必須要撰寫儘可能詳細的測試記錄。
- 必須要儘可能完整地將測試工程和設計/驗證工程一併歸檔和保留。
- 應當提前在驗證階段時以VCD波形的形式保留關鍵的激勵-響應對,並在測試階段時準確核對。
- 應當有效的利用驗證階段時的參考模型與FPGA上板驗證工程,提前進行測試工作的準備。
- 應當在設計階段時就對測試做出規劃,並預留好重要的除錯介面,如JTAG等。
- 絕對要將測試時可能會碰到的情況預先考慮結合到設計和驗證階段,包括好不好提供輸入檢測輸出,如果某個功能模組掛了其他功能模組如何測試等。
本人只是個純IC萌新,僅僅是將自己目前所經歷過的問題,踩過的坑做了簡單的反思和總結。在IC做的越久越感覺學海無涯,只有不斷積累不斷進步才是唯一的正途。