時鍾樹綜合的理論知識總結在這里:http://www.cnblogs.com/IClearner/p/6580034.html
下面是實踐環節:使用ICC進行時鍾樹綜合。
這個實驗的目標是:
·設置CTS的選項和例外
·綜合時鍾樹
·生成和分析時鍾樹偏差和時序報告,以確定CTS的QoR
·修復保持時間違例並優化設計以獲得更好的面積
·使用非默認布線規則對時鍾網絡進行布線
·分析布線后的時鍾網絡
在實驗之前需要准備下面的文件:
圈圈那個文件是對標准單元布局好的設計,其他的三個腳本文件如上所述,需要我們進行自己編寫。准備好數據后(庫什么的就不用說了,自己解決),就可以開始實驗了:
·打開設計,檢查時鍾樹
--->打開庫,再打開設計
--->查看時鍾的偏移與一些屬性:report_clock –skew -attributes
--->查看時鍾樹的總體情況:report_clock_tree -summary
--->檢查是否有違規:report_constraint -all
--->通過GUI查看是否有時序例外的端口
·時鍾樹綜合前的准備
1--->把有時序例外的管腳設置為stop_pin:set_clock_tree_exceptions -stop_pins
{I_SDRAM_TOP/I_SDRAM_IF/sd_mux_*/S}
2--->將所有時鍾的時鍾目標偏移設置為0.1。 從默認值0放寬偏斜目標將加快時鍾樹合成:set_clock_tree_options -target_skew 0.1
3--->調整CTS后時序分析和優化的時鍾不確定性指:set_clock_uncertainty 0.1 [all_clocks]
4--->指定在CTS的“DRC緩沖”階段使用的緩沖區:set_clock_tree_references -references {bufbd1 bufbd2 bufbd4 bufbd7 bufbdf}
5--->配置CTS使用非默認布線:
define_routing_rule CLOCK_DOUBLE_SPACING \
-spacings {METAL3 0.42 METAL4 0.63 METAL5 0.82}
report_routing_rule CLOCK_DOUBLE_SPACING
set_clock_tree_options -routing_rule CLOCK_DOUBLE_SPACING \
-layer_list {METAL3 METAL5} -use_default_routing_for_sinks 1
6--->查看檢查報告,驗證已經進行了設置:
v report_clock_tree -settings
7--->進行物理檢查:
check_physical_design -stage pre_clock_opt -display
8--->設置(時鍾樹)延遲計算模式:
set_delay_calculation –clock_arnoldi ;注意,在后面新的版本里面,已經不適合直接使用–clock_arnoldi的選項了,需要進行修改;這么修改可以進行man這個命令
9--->最后再檢查一下:check_clock_tree
·進行時鍾樹綜合
1--->合成所有時鍾樹,無需任何時序優化或布線:
clock_opt –only_cts –no_clock_route
2--->查看CTS之后的全局偏移總結:report_clock_tree -summary
使用clock timing命令生成不同的偏差報告:
report_clock_timing -type skew -significant_digits 3
3--->生成時序報告:v report_timing
4--->生成所有的違規報告,並查看:v report_constraint -all
5--->保存設計:save_mw_cel -as clock_opt_cts
·進行保持時間優化
1--->啟用保持時間修復:set_fix_hold [all_clocks]
2--->查看報告:report_qor
3--->進行面積范圍設置:
set_max_area 0
## Set Area Critical Range
## Typical value: 5 percent of critical clock period
set physopt_area_critical_range 0.2
4--->RC參數的提取:extract_rc
5--->執行CTS后無時鍾布線的時序、面積和掃描鏈優化:
clock_opt -only_psyn -area_recovery -optimize_dft -no_clock_route
6--->查看報告和違規:
report_qor
report_constraint -all
7--->保存設計:save_mw_cel -as clock_opt_psyn
·進行時鍾樹布線
1--->時鍾樹布線:route_zrt_group -all_clock_nets -reuse_existing_global_route true
2--->查看是否違規:report_constraint -all
3--->保持設計:save_mw_cel -as clock_opt_route
4--->查看物理設計:report_design -physical