APR - Clock Tree Synthesis(CTS) === 在CTS這個階段有兩個Timing分析,分別在CTS的前跟後,接下來會說明他們的步驟。 Pre-CTS --- 需要在CTS前做Timing分析 1. Timing->Report Timing ![image](https://hackmd.io/_uploads/HkpftLtpR.png =20%x) ![image](https://hackmd.io/_uploads/ryimKUKpA.png =50%x) 2. 結果 ![image](https://hackmd.io/_uploads/rJndUJYCA.png =70%x) 3. 如果沒過的話可以Optimize 4. ECO->Optimize Design ![image](https://hackmd.io/_uploads/SkDKtLYT0.png =20%x) 5. Apply ![image](https://hackmd.io/_uploads/B1hqYIKTC.png =50%x) 6. 如果這個步驟Slack只有負一點點的話可以做下一步試試看,還是很糟的話再回到前面看是改變I/O順序、SRAM位址或core大小以增加繞線空間。 CTS --- 1. 將合成階段的sdc檔複製一份到APR資料夾,重新命名為CHIP_cts.sdc,並刪掉以下這三行 ![image](https://hackmd.io/_uploads/Hk2SjLF60.png) 2. 建立一個檔案,命名為"createCTS.tcl",內容如下 ```=1 update_constraint_mode -name func_mode -sdc_files ./CHIP_cts.sdc create_ccopt_clock_tree_spec -file ./ccopt.spec source ./ccopt.spec ccopt_design -cts ``` 4. 執行`source createCTS.tcl`,這步會很久記得開高CPU上限 5. Clock->CCOpt Clock Tree Debugger ![image](https://hackmd.io/_uploads/rkwYpIFTC.png =20%x) ![image](https://hackmd.io/_uploads/Byf5pUF6R.png) 6. Clock Tree盡量長平均比較好 ![image](https://hackmd.io/_uploads/ry2e08tTR.png) 7. 可以看這個清單去思考為什麼這條路徑會delay很嚴重,再去修改io順序或是SRAM位址 ![image](https://hackmd.io/_uploads/S1swR8FT0.png) Post-CTS --- 在CTS完後做Timing分析。 1. Timing->Report Timing ![image](https://hackmd.io/_uploads/HkpftLtpR.png =20%x) 2. Setup跟Hold time都要做 ![image](https://hackmd.io/_uploads/BJdwJvYaR.png) 3. 如果沒過的話可以Optimize 4. ECO->Optimize Design ![image](https://hackmd.io/_uploads/SkDKtLYT0.png =20%x) 5. Apply ![image](https://hackmd.io/_uploads/BJsTkDKpR.png) --- :::danger 如果我有哪裡寫錯或是做不好的請告訴我 :woman-bowing: 完成之後小休一下回到前面進行[下一步](https://hackmd.io/3R8wxZE4QdG0k99m57vIaA?both#Routing),你超棒的:facepunch: :::