Cell-Based Design Flow === ###### tags: IC_Design 這篇是我讀碩士在完成碩論研究的經過,其中較少理論基礎,大部分是40nm的APR、DRC、LVS與CustomSim的工具操作流程。 若想看更多理論的話可以看我同學的[筆記](https://hackmd.io/@derek8955/BkK2Nb5Jo/https%3A%2F%2Fhackmd.io%2FdpcBlBL8TlShpQ-wSi9Quw)。 --- 下圖為Cell-Based Design Flow,在以下章節會一一的介紹他們。 ![image](https://hackmd.io/_uploads/Hy455YgoA.png) RTL === RTL Design --- 這部分就不贅述了,相信大家都很會coding:+1:,如果設計中想使用到SRAM的話,教學放在[這篇](https://hackmd.io/@linda8832825/H1l8PHS1C)。 RTL Simulation --- 我使用的是VCS(Verilog Compiler Simulation)做模擬,以下是模擬的指令,我通常是存在"run.tcl",在要模擬時執行`source run.tcl`。 ```= Rvcs ../00_TESTBENCH/testfixture.v +define+RTL -full64 -R -debug_access+all +v2k +notimingchecks -v2005 | tee rtl.log ``` 如果還不太會使用nWave可以看[這篇](https://hackmd.io/@linda8832825/HyfecFUAA)。 Logic Synthisis === 這階段是為了將RTL轉換成實際元件,在這個階段使用的tool為Design Compiler,若要學習Design Compiler的GUI介面如何使用可以參照[這篇](https://hackmd.io/@linda8832825/SkrgdRId2),而使用EDA cloud可以參照[這篇](https://hackmd.io/@linda8832825/HJgWJnZo0)。 Gate-Level Simulation === 這個階段是將合成完的netlist檔與testbench比對行為有無一致,在接下來的Pre-Sim、Post-Sim、Custom-Sim以及前面的RTL Simulation都是將電路對同一個testbench比對,以確保電路始終運作正常。 1. 複製使用電壓的.v檔,路徑如下 ![image](https://hackmd.io/_uploads/H1OPv4YAC.png =80%x) 2. 例如合成階段使用lvt版本,則gate-level資料夾下會有這些 ![image](https://hackmd.io/_uploads/ryXSgCURA.png =80%x) 3. 建立一個檔案命名為"run.tcl",此為使用lvt的版本內容如下 ```= Rvcs ../00_TESTBENCH/testfixture.v sc9_cln40g_base_lvt.v sc9_cln40g_base_lvt_udp.v ../../MEM/112/sram_k_35k.v ../../MEM/128/sram_v_40k.v +define+Gate_lvt_hvt -full64 -R +v2k -v2005 -debug_access+all | tee gate.log ``` 4. 執行`source run.tcl` 5. 如果結果是successfully就可以做下一步 DFT === DFT全名是Design for Testability,目的是將合成完的每個D-FF的輸入都接上一個二對一的多工器,如下圖所示,再將所有的SCAN_IN、SCAN_EN與SCAN_OUT各別串接在一起,形成Scan Chain,用來檢測coverage,詳細流程請參照[這篇](https://hackmd.io/@linda8832825/SJxHGbmjA)。 ![image](https://hackmd.io/_uploads/rJKZMZXjR.png) Pre-Layout Simulation === 這個步驟是為了檢查電路將所有DFF換成SCAN DFF後功能有無區別,因此會對加完後的netlist檔做Simulation,我將其命名為top_dft.v,檔案路徑會由+define+PreSim_LVT做指引,指令如下。 ```= Rvcs ../00_TESTBENCH/testfixture.v ../03_GATE_lvt_all/sc9_cln40g_base_lvt.v ../03_GATE_lvt_all/sc9_cln40g_base_lvt_udp.v ../../MEM/112/sram_k_35k.v ../../MEM/128/sram_v_40k.v +define+PreSim_lvt -full64 -R +v2k -v2005 -debug_access+all | tee pre_sim.log ``` APR === APR全名為Automatic Place and Route,用來將前面電路自動佈置到晶片的實體層,EDA的操作流程在[這篇](https://hackmd.io/@linda8832825/r1koDSd3R),想要看更多APR的知識推薦[這篇](https://timsnote.wordpress.com/)。 DRC === 這步是要將檔案丟給TSRI做DRC驗證,會花上一小段時間,詳細流程在[這邊](https://hackmd.io/@linda8832825/Hyyyg35TR)。 LVS === LVS(Layout vs. Schematic)是用來比較晶片設計中的物理佈局和其對應的電氣原理圖(schematic),確保兩者在電氣連接上完全一致,詳細流程放在[這邊](https://hackmd.io/@linda8832825/HymR3126A)。 Post-Layout Simulation === 當前面的DRC與LVS都通過後再來做Layout後的Simulation,詳細流程放在[這邊](https://hackmd.io/@linda8832825/Hy_LzbhaA)。 Power Analysis === 這步驟使用primtime做power分析,詳細流程放在[這邊](https://hackmd.io/@linda8832825/H1KZeegCA)。 Transister Level Simulation === 這步驟我們通常簡稱為CustomSim,會跑兩個軟體,詳細步驟放在[這邊](https://hackmd.io/@linda8832825/SyhkC-npC)。 --- :::info 在APR階段做了兩個版本,分別是有I/O pad跟沒有的,所以後續的DRC、LVS、PostSim也要都做完,再將結果放到論文上。 蠻多步驟可以同時做的,像是後期的power analysis、PostSim、CustomSim,只要硬碟空間夠,產胖胖vcd檔會很佔空間。 要分清楚檔案版本,多存檔外也要清清空間,加油你一定可以的 :facepunch: :::