EDA - Memory Compiler === 此篇是在介紹如何在EDA cloud上使用Memory Compiler,並在RTL、SYN、DFT與DRC階段產生所需檔案的步驟 製程:40nm 使用SRAM種類 : Single Port SRAM RTL Level --- 指令範例 : ![image](https://hackmd.io/_uploads/SJdbKHBJA.png =80%x) step 1 : 從資料夾一直往下點看要用的東西在哪,因為用terminal ls 不會出現 step 2 : 在想生出SRAM的資料夾下使用terminal輸入以下指令 ```= /cad/CBDK/CBDK_TN40G_Arm/CBDK_TSMC40_core_Arm_v2.0/CIC/Memory/sram_sp_hde_rvt_hvt_rvt/r11p2/bin/sram_sp_hde_rvt_hvt_rvt & ``` step 3 : 設定SRAM參數 * Instance Name : SRAM的名子 * Number of Words : SRAM的位址數,40nm最少為256 * Number of Bits : 每個位址的bits數 * Frequncy : 預設就是1 * Multiplexer Width : 8 ![image](https://hackmd.io/_uploads/HyCJeHhSC.png =60%x) step 4 : update step 5 : generate 會產生六個不同溫度跟電壓的ps檔 step 6 : 將ps轉成pdf以供閱讀 ``` ps2pdf sram的.ps檔 ``` step 7 : SARM的Utilities -> Generate Menu ![image](https://hackmd.io/_uploads/ry3jOVYR0.png =20%x) step 8 : generate 出要使用的SRAM.v檔 ![image](https://hackmd.io/_uploads/SJqkUwSJC.png =40%x) ::: info 在RTL模擬時要+notimingcheck,SRAM才不會有timing violation錯誤 ::: SYN Level --- 這步驟需要產合成要用的db檔,由RTL階段的lib檔所產生,依照後須需求產所需的db檔就好,我是只產ss與ffg ff:高溫高壓 ss:低溫低壓 ff_g:更強的ff,power會更好 指令範例: ![螢幕擷取畫面 2024-04-09 222503](https://hackmd.io/_uploads/rkU0VZmQA.png) ```= read_lib sram_v_40k_nldm_ff_0p99v_0p99v_125c_syn.lib write_lib -format db USERLIB_nldm_ff_0p99v_0p99v_125c -output sram_128_ff.db USERLIB...複製上一行出來的名稱 ``` DFT Level --- 產TertraMax 所需的tv檔 前面設定需與RTL Level的設定一樣 ![image](https://hackmd.io/_uploads/S10SX197C.png =50%x) APR Level --- 產Stream GDS所需的SRAM的GDS檔 1. 複製這個路徑下的lef2gds.pl和lef2gds.tech到自己sram的資料夾 ![image](https://hackmd.io/_uploads/B1gIEnqp0.png =65%x) 2. 我的SRAM名稱是sram_v_40k與sram_k_35k,分別使用以下指令將lef轉檔成gds檔 `perl lef2gds.pl sram_v_40k.lef` DRC Level --- 產生spec檔 其他設定需與[RTL Level](https://hackmd.io/RAoIane0RqaoftqnlBD0cg?both#RTL-Level)的設定一樣 ![image](https://hackmd.io/_uploads/HksZlB3SR.png =20%x) --- :::info 在整個design流程中會在不同階段需要產SRAM所需的相關檔案,但由於RTL可能會寫著寫著而更動SRAM的尺寸,建議在SRAM的命名上多加注意,並一步一步產生所需檔案,加油! :facepunch: :::