STA是由SDC驅(qū)動(dòng)的,所以SDC的完整性、正確性和一致性直接決定著綜合、布局布線(xiàn)以及STA的有效性。
特別是對(duì)于接口時(shí)序約束,牽涉到標(biāo)準(zhǔn)協(xié)議和異步關(guān)系等,后仿真如果PASS可以讓SDC作者睡得更香甜些。
后仿真一般是驗(yàn)證團(tuán)隊(duì)的職能領(lǐng)域,需要后端提供網(wǎng)表和SDF,不過(guò)后仿真需要后端所提供數(shù)據(jù)的時(shí)序是有要求的,其中hold timing必須干凈,setup timing最好能干凈,實(shí)在不行可以通過(guò)降頻讓setup滿(mǎn)足。由此可見(jiàn),后仿真往往是在項(xiàng)目后期才能夠被執(zhí)行。那我們?cè)陧?xiàng)目前期怎么去驗(yàn)收SDC呢?有了標(biāo)準(zhǔn)就不至于整天提心吊膽。下面以PT為例來(lái)進(jìn)行講解,其它工具會(huì)有些許區(qū)別。
check_timing
check_timing這個(gè)命令是在對(duì)時(shí)序約束做一個(gè)深度的體檢,能檢查時(shí)序約束相關(guān)的各種問(wèn)題,其默認(rèn)檢查項(xiàng)是有下面的這個(gè)變量控制的:
pt_shell > printvar timing_check_defaults
這個(gè)變量的工具默認(rèn)值:
-
generated_clocks
檢查generated_clocks的定義是否合理,有沒(méi)有源時(shí)鐘,是否存在相互循環(huán)定義的情況。
-
generic
檢查是否存在unmapped的cells,這類(lèi)generic cell一般是零延時(shí),影響時(shí)序檢查準(zhǔn)確性。
-
latch_fanout
檢查電平觸發(fā)latch的扇出是不是自身,有沒(méi)有l(wèi)atch級(jí)聯(lián)的情況
-
loops
檢查組合邏輯有沒(méi)有反饋回路,STA對(duì)這種反饋回路是不會(huì)分析的,需要通過(guò)set_disable_timing來(lái)打斷這種反饋回路
-
no_clock
檢查是否有時(shí)序單元的clock pin不在任何時(shí)鐘網(wǎng)絡(luò)上,特別留意中途是不是通過(guò)“set_sense -stop_propagation”之類(lèi)的命令強(qiáng)制切斷了時(shí)鐘的傳播。
-
no_input_delay
檢查Input Port是否有關(guān)聯(lián)的時(shí)鐘,否則相關(guān)IN2REG路徑是unconstrained的。
-
partial_input_delay
檢查在set_input_delay時(shí),是否存在只指定-min或者-max其中之一的情況
-
unconstrained_endpoints
檢查時(shí)序單元數(shù)據(jù)Pins或者Output Ports是否沒(méi)有max delay約束
-
unexpandable_clocks
檢查相關(guān)的clocks之間是否可擴(kuò)展,在跨兩個(gè)不同頻率的時(shí)鐘路徑上計(jì)算時(shí)序時(shí),往往需要擴(kuò)展時(shí)鐘以計(jì)算相應(yīng)的setup timing
-
no_driving_cell
檢查Input Port是否定義了驅(qū)動(dòng)單元,工具只會(huì)在相連的net有寄生參數(shù)存在時(shí)才會(huì)產(chǎn)生Warning信息
-
pulse_clock_non_pulse_clock_merge
檢查pulse clock和normal clock是否共用相同時(shí)鐘網(wǎng)絡(luò)
-
pll_configuration
檢查PLL的配置是否存在問(wèn)題。
對(duì)于check_timing報(bào)告中的Warning和Error,要仔細(xì)地檢查,最好是一個(gè)Warning/Error都沒(méi)有,下面的結(jié)果也挺令人賞心悅目的(僅有2個(gè)Warning需要排查):

需要注意的是,在綜合階段需要先check_design保證設(shè)計(jì)本身沒(méi)有問(wèn)題的情況下,再通過(guò)check_timing進(jìn)行時(shí)序約束的檢查。
report_analysis_coverage
report_analysis_coverage命令可以統(tǒng)計(jì)出有design中需要STA進(jìn)行的檢查有多少項(xiàng),其中有多少滿(mǎn)足(Met),有多少違反(Violated),有多少缺失檢查(Untested),如下圖所示:

需要特別注意的是Untested一欄,造成的原因可以有以下幾類(lèi):
-
false_paths
set_false_path 或者asynchronous/exclusive clock groups
-
user_disabled
timing check被用戶(hù)禁用了,例如set_disable_timing
-
constant_disabled
set_case_analysis或者實(shí)際Signal已經(jīng)接電源或地(Tie High/Low)
-
no_paths
路徑不存在或被切斷,造成原因也可能是set_disable_timing
-
mode_disabled
特定mode相關(guān)時(shí)序約束,在其他mode下不會(huì)檢查
-
no_endpoint_clock
endpoint沒(méi)有時(shí)鐘
-
no_startpoint_clock
startpoint沒(méi)有時(shí)鐘
-
no_constrained_clock
針對(duì)skew和clock separation檢查,沒(méi)有約束時(shí)鐘
-
no_ref_clok
針對(duì)skew和clock separation檢查,沒(méi)有參考時(shí)鐘
-
no_clock
針對(duì)min_pulse_width和min_period檢查,沒(méi)有時(shí)鐘定義
-
unknown
其它未知原因
具體可以通過(guò)以下命令來(lái)debug:
pt_shell > report_analysis_coverage -status_detail untested -check setup
需要特別強(qiáng)調(diào) :對(duì)于異步路徑,比如false_path,case_analysis,set_disable_timing等等,每一條SDC語(yǔ)句都需要designer仔細(xì)review確認(rèn),簽字畫(huà)押。
一致性和CDC檢查
對(duì)于Top,往往還需要檢查T(mén)op和Block的約束的一致性,以及跨時(shí)鐘域檢查。這里常用兩個(gè)工具:一個(gè)是PT的GCA,適合門(mén)級(jí)網(wǎng)表的分析。另一個(gè)是SpyGlass,常用在RTL級(jí)別。
下圖是GCA一般流程:

如果要進(jìn)行Top和Block約束的一致性檢查,可以參考以下命令:
ptc_shell > read_verilog ./top.v
ptc_shell > link_design top
ptc_shell > source top_constraints.tcl
ptc_shell > link_design -add block1
ptc_shell > source block1_constraints.tcl
ptc_shell > set out_dir /user/abc/compare_top
ptc_shell > compare_block_to_top -block_design block1
GCA中也可以打印出跨時(shí)鐘域信息,通過(guò)以下命令:
ptc_shell > report_clock_crossing
需要強(qiáng)調(diào) ,在RTL交付前,跨時(shí)鐘域的檢查是非常關(guān)鍵的,利用SpyGlass等工具檢查其是否存在時(shí)鐘同步單元(synchronizer),并在需要時(shí)添加必要的約束控制跨時(shí)鐘路徑,避免功能錯(cuò)誤。另外,SpyGlass也能夠進(jìn)行約束一致性檢查,有興趣的可以查看其用戶(hù)手冊(cè)。
-
RTL
+關(guān)注
關(guān)注
1文章
394瀏覽量
62647 -
STA
+關(guān)注
關(guān)注
0文章
52瀏覽量
19570 -
SDC
+關(guān)注
關(guān)注
0文章
50瀏覽量
16254 -
PLL電路
+關(guān)注
關(guān)注
0文章
94瀏覽量
7088
發(fā)布評(píng)論請(qǐng)先 登錄
時(shí)序分析的設(shè)計(jì)約束(SDC)
霍爾開(kāi)關(guān)SDC1211,SDC1215,SDC1177,SDC1181,SDC1182,SDC1183應(yīng)用于TWS,筋模槍?zhuān)髁總鞲衅鳎_(kāi)關(guān)門(mén)檢測(cè)等
介紹系統(tǒng)接口sdc
SDC1742 12位自整角機(jī)數(shù)字轉(zhuǎn)換器
SDC1740 14位自整角機(jī)數(shù)字轉(zhuǎn)換器
SDC1741 12位自整角機(jī)數(shù)字轉(zhuǎn)換器
SDC1700/SDC1702:低調(diào)自整角機(jī)/旋轉(zhuǎn)變壓器-數(shù)字轉(zhuǎn)換器過(guò)時(shí)數(shù)據(jù)表
時(shí)序分析的設(shè)計(jì)約束SDC怎么寫(xiě)呢?
時(shí)序分析基本概念—SDC概述
探討一下SDC的各種語(yǔ)法構(gòu)成和整體結(jié)構(gòu)
SDC是如何煉成的?怎么去驗(yàn)收SDC呢?
評(píng)論