輸入偏移約束最常用的一種形式是OFFSET IN BEFORE,它定義的是數(shù)據(jù)先于采樣時(shí)鐘多長(zhǎng)時(shí)間有效;另一個(gè)參數(shù)是數(shù)據(jù)有效窗口,也稱“眼寬”,如圖1所示。因?yàn)閿?shù)據(jù)何時(shí)無效對(duì)保持時(shí)間分析至關(guān)重要,所以VALID這個(gè)參數(shù)對(duì)保持時(shí)間分析是必需的。對(duì)建立時(shí)間的分析,如果不加這個(gè)參數(shù),則默認(rèn)用OFFSET。當(dāng)進(jìn)行保持時(shí)間分析時(shí)如果不加這個(gè)參數(shù),工具會(huì)用TRCE_fastpaths來報(bào)告保持時(shí)間。但是不會(huì)分析路徑,也不會(huì)檢查是否違規(guī)。
輸入偏移約束是全局約束,默認(rèn)參數(shù)會(huì)應(yīng)用于所有用該時(shí)鐘作為采樣的輸入數(shù)據(jù)引腳。但有時(shí)某些引腳會(huì)有不同的約束要求,這種情況下可以將這些引腳分組并分別做不同的約束。圖2所示為相同時(shí)鐘,但需采用不同輸入偏移約束的范例。SysClk驅(qū)動(dòng)了4個(gè)寄存器,但是SRAMData[1∶0]和FPGAData[1∶0]卻有各自不同的OFFSET IN要求。
圖1 輸入偏移約束
圖2 相同時(shí)鐘、不同輸入偏移范例
可以用這樣的UCF生成PAD分組。
用戶約束文件(UCF)范例:
TIMEGRP "SRAMGroup" = PADS( "SRAMData(1)" "SRAMData(0)");
OFFSET IN<time><unit>VALID<time><unit>BEE○RE<clk>TIMEGRP SRAMGroup ;
現(xiàn)在對(duì)輸入時(shí)序分析有了基本的認(rèn)識(shí),可以進(jìn)一步分析一個(gè)常用的輸入接口標(biāo)準(zhǔn)——系統(tǒng)同步接口。系統(tǒng)同步接口是指源頭和目的器件的內(nèi)部寄存器都使用同一個(gè)全局時(shí)鐘。對(duì)于如圖3所示的設(shè)計(jì),板級(jí)的時(shí)鐘偏斜和數(shù)據(jù)延時(shí)限制了系統(tǒng)速度性能。因?yàn)閺脑炊似骷l(fā)出的數(shù)據(jù)必須在一個(gè)時(shí)鐘周期內(nèi)到達(dá)目的器件,所以這種系統(tǒng)同步接口適合于較低速度的單數(shù)據(jù)率應(yīng)用。
圖3 板間或器件之間的互連約束
來源:ks990次