標籤:style blog http color os io strong ar for
本部分內容參考ug612 《Timing Closure User Guide 》,主要是對第二章內容的整理和翻譯。
在一個有效設計中,產生工具必須要瞭解每一條路徑上的時序約束。時序需求可以被分為幾個大類,最通用的類型包括:
?Input paths
? Register-to-register paths
? Output paths
? Path specific exceptions
指定約束應該從全域約束開始,然後添加局部路徑的例外。也就是說,全域的約束優先順序是最低的。
1.輸入時序約束
The input timing constraints cover the data path from the external pin or pad of the package of the FPGA device to the internal synchronous element or register that captures that data.
輸入時序約束控制外部引腳到內部模組的路徑。採用OFFSET IN來指出input timing constraints。(The OFFSET IN constraint defines the relationship between the data and the clock edge used to capture that data at the pin or pads of the FPGA device.)也就是說OFFSET IN定義了時鐘沿河被採集資料的關係(相位)。輸入模式分為兩類,分別如下。
System Synchronous inputs
系統同步輸入,指由同一時鐘傳輸和捕獲資料,如所示
1.時鐘上升沿傳輸
2.下一個上升沿捕獲
那麼global constraint 是OFFSET = IN value VALID value BEFORE clock;
例子:(理想情況)
NET "SysClk" TNM_NET = "SysClk";
TIMESPEC "TS_SysClk" = PERIOD "SysClk" 5 ns HIGH 50%;
OFFSET = IN 5 ns VALID 5 ns BEFORE "SysClk";
Source synchronous inputs
In a source synchronous input interface, a clock is regenerated and transmitted along with the data from the source device along similar board traces. This clock captures the data in the FPGA device.
The board trace delays and board skew no longer limit the operating frequency of the interface. The higher frequency also results in the source synchronous input interface typically being a dual data rate (DDR) application.
即一個刻度傳兩組資料,上升沿和下降沿均採集資料,在傳輸資料的同時傳輸時鐘,利用重建的時鐘捕獲資料(DDR取代SDR)
在這種情況下約束如下
OFFSET = IN valueVALID valueBEFORE clockRISING;
OFFSET = IN valueVALID valueBEFORE clockFALLING;
例子: (理想情況)
NET "SysClk" TNM_NET = "SysClk";
TIMESPEC "TS_SysClk" = PERIOD "SysClk" 5 ns HIGH 50%;
OFFSET = IN 1.25 ns VALID 2.5 ns BEFORE "SysClk" RISING;
OFFSET = IN 1.25 ns VALID 2.5 ns BEFORE "SysClk" FALLING;
在實際情況下,不可能像上面的例子那樣理想,IN後面跟的是INPUT的開始時間(相對clock的提前量),VALID是資料的有效時間。
2.寄存器-寄存器的時序約束
寄存器-寄存器的約束,在同步時序電路中,就是周期的約束,具體分為以下幾類
自動相關同步時鐘域
手動相關同步時鐘域
非同步時鐘域
自動相關同步時鐘域(DLL,DCM,PLL,MMCM)
因為它是自動的,所以基本不用管,當時我們要寫輸入到DCM的訊號的時序約束。例如
NET “ClkIn” TNM_NET = “ClkIn”;
TIMESPEC “TS_ClkIn” = PERIOD “ClkIn” 5 ns HIGH 50%;
手動相關同步時鐘域
如果說,輸入的同步時鐘是從不同的引腳引入的,那麼DCM就用不了了,我們需要手動的定義一個主時鐘,並以之為參考,定義相對的約束。文法如下:
NET “PrimaryClock” TNM_NET = “TNM_Primary”;
NET “RelatedClock” TNM_NET = “TNM_Related”;
TIMESPEC “TS_primary” = PERIOD “TNM_Primary” PeriodValue HIGH
HighValue%;
TIMESPEC TS_related” = PERIOD “TNM_Related” TS_Primary_relation PHASE
value;
非同步時鐘域
xilinx無法分析,也可以用,具體參考ug612。
3.輸出時序約束
輸出就是輸入的逆
SDR
例子:NET "ClkIn" TNM_NET = "ClkIn";
OFFSET = OUT 5 ns AFTER "ClkIn";
DDR(一般來說不給約束就可以)
例子:NET “ClkIn” TNM_NET = “ClkIn”;
OFFSET = OUT AFTER “ClkIn” REFERENCE_PIN “ClkOut” RISING;
OFFSET = OUT AFTER “ClkIn” REFERENCE_PIN “ClkOut” FALLING;
沒看懂的:
False Paths 移除不需要(不對)的約束
Multi-cycle Paths 這兩個都是放鬆約束的手段
……待續
時序收斂-基本方法論