# dv.4 (Compiler & Save) ###### Previous:[dv.3 (Design Environment)](/@C2N2/rk8C-s88xe) ###### Next:[dv.5 (DFT)](/@C2N2/BJcS2yi8ll) --- ## 1. Report Ports 1. **開啟 Report 視窗:==Design== > ==Report Ports==** 2. **設定輸出選項:==設定小數點精度== > ==可以產出輸出文件==** <iframe src="https://drive.google.com/file/d/1CxhxFxYtC-fb7Hq1hOJHxizFHO4MAtEK/preview" height="400"></iframe> ## 2. Compiler ### (1) 使用圖形介面操作 1. **開啟合成視窗:==Design== > ==Compile Design==** 2. **設定合成品質:** > [!Tip] **Map effort** > - **控制 ==映射(mapping)== 的強度** > - **決定 ==RTL -> Gate Level==,合成過程中會嘗試 ==多少種組合==** > - **low:==合成速度快==,但 ==效果較差==** > - **high:==合成速度慢==,但 ==效果較好==** > [!Tip] **Area effort** > - **控制 ==面積(Area) 最小化== 的強度** > - **==縮小面積== 可能會 ==犧牲時間==** > - **low:==不強調縮小面積==,可能是為了 ==提升 Timing==** > - **high:==強調縮小面積==,但可能 ==降低 Timing==** > [!Tip] **Power effort** > - **控制 ==功耗(Power) 最小化== 的強度** > - **high:==強調降低功耗==,可能會 ==影響 Area & Timing==** <iframe src="https://drive.google.com/file/d/1R6xJTgoTy6HZWPNDgMZfDUvduT-UlFQW/preview" height="400"></iframe> 3. **可以 ==檢視電路結構==,會發現電路變成 ==Gate Level==,沒有 ==block==** ### (2) 使用 CMD 操作 > [!Important] **指令** > - **使用自訂 ==合成品質==:** > ```robotframework= > compile -map_effort high -area_effort high > ``` > - **使用預設 ==合成品質==:** > ```robotframework= > compile > ``` ## 3. Report Area & Timing ### (1) 使用圖形介面操作 :::spoiler **Report Area** 1. **開啟 Report 視窗:==Design > Report Area==** 2. **設定輸出選項:==可以產出輸出文件==** <iframe src="https://drive.google.com/file/d/1Ljexj3w8KSo6g0kksevzbIiXK2F6Jz5D/preview" height="400"></iframe> ::: :::spoiler **Report Timing** 1. **開啟 Report 視窗:==Timing > Report Timing Path==** 2. **設定輸出選項:==設定小數點精度 > 可以產出輸出文件==** <iframe src="https://drive.google.com/file/d/1BJrElazK-QERgZYaBkai7ahAtsi6jzRT/preview" height="400"></iframe> ::: ### (2) 使用 CMD 操作 > [!Important] **指令** > - **會 ==輸出文件==:** > ```robotframework= > report_area > area.log > report_timing > timing.log > ``` > - **直接 ==顯示在 CMD== 上** > ```sdc= > report_area > report_timing > ``` ## ● Retiming - **若 ==Timing Report== 的 ==`slack < 0` (為負)==,則需要 ==重新合成==** - **這時候就可以使用 [Retiming 技巧 <i class="ph ph-arrow-square-out"></i>](http://hackmd.io/@C2N2/BJfZCkjIel)** > [!Important] **指令** > ```robotframework= > optimize_registers > ``` ## 4. Save Design ### (1) 使用圖形介面操作 :::spoiler **DDC File** 1. **==File > Save as==** 2. **==輸入檔案名稱 > 選擇 `.ddc` 檔==** <iframe src="https://drive.google.com/file/d/1fRtm9B1GrJKhhR77O2FEJLY4YUsO6toT/preview" height="400"></iframe> ::: :::spoiler **Verilog File** 1. **==File > Save as==** 2. **==輸入檔案名稱 > 選擇 `.v` 檔==** <iframe src="https://drive.google.com/file/d/11VG9-ZWpxOeq9-xnTUhsTlKisVtx8xYj/preview" height="400"></iframe> ::: ### (2) 使用 CMD 操作 > [!Important] **指令** > ```robotframework= > write -format ddc -hierarchy -output "CS_syn.ddc" > write_sdf -version 1.0 -context verilog chip_syn.sdf > write_sdc -version 1.7 CHIP.sdc > write -format verilog -hierarchy -output CS_syn.v > ``` ## 5. Gate Level Simulation ```robotframework= ncverilog testfixture.v CS_compile.v tsmc18.v +access+r ``` --- ## ● Conmand ```sdc= report_port > port.log # compile -map_effort high -area_effort high compile # report_area > area.log report_area # report_timing > timing.log report_timing # optimize_registers write -format ddc -hierarchy -output "CS_syn.ddc" write_sdf -version 1.0 -context verilog chip_syn.sdf write_sdc -version 1.7 CHIP.sdc write -format verilog -hierarchy -output CS_syn.v ``` ---
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up