XML DOM 獲取節點值
1236
2025-04-04
目錄
1、周期(PERIOD)約束
時鐘周期估計
編輯約束
時鐘偏斜計算
基本時序報告
數字時鐘管理器的周期約束
Clock Phase Period Example
Hold Calculations
先給出總體示意圖:
1、周期(PERIOD)約束
周期約束之前也寫過一篇:時序約束之周期約束
時鐘周期估計
在進行Period約束之前,需要對電路的時鐘周期進行估計,不要過松或過緊的約束。
設計的內部電路所能達到的最高運行頻率取決于同步元件本身的建立保持時間,以及同步元件之間的邏輯和布線延遲。
如下圖的電路及其時鐘周期估計:
編輯約束
對于周期約束可使用Xilinx約束編輯器(Xilinx Constraints Editor),也可以自己編寫約束文檔。
如果自己編寫約束文檔,見博文:時序約束之周期約束
時鐘偏斜計算
時鐘偏斜(clock skew)的具體計算實例,例子中的DCM代表數字時鐘管理器:
基本時序報告
數字時鐘管理器的周期約束
解釋下上面的對時鐘輸入端進行約束的語句:
下面這段話來自于我的另外一篇博文:時序約束之周期約束
先看下TIMESPEC的用法:
用TIMESPEC 約束定義時鐘的方法: 首先在時鐘網絡 clk 上附加 TNM_NET約束,把clk驅動的所有同步元件定義成一個分組,命名為 “sys_clk ”。
NET “clk” TNM_NET = “sys_clk”
TIMESPEC?"TS_sys_clk" = PERIOD "sys_clk" 50ns HIGH 20ns
用TIMESPEC 約束定義的識別符 TS_sys_clk可以被其他時鐘定義引用,這對于需要派生時鐘的場合十分適用。
如果還是不明白,還可以看官方文檔:Constraints Guide
摘出來一段吧:
TIMESPEC Period Method UCF Syntax
The following constraint is defined using the TIMESPEC keyword in conjunction with a TNM constraint attached to the relevant clock net.
語法如下:
TIMESPEC “TSidentifier ”=PERIOD “TNM_reference ” period {HIGH | LOW} [high_or_low_time ] INPUT_JITTER value;
? identifier
A reference identifier that has a unique name.
? TNM_reference
Identifies the group of elements to which the period constraint applies. This is typically the name of a TNM_NET that was attached to a clock net, but it can be any TNM group or user group (TIMEGRP) that contains only synchronous elements.
(TNM_reference 典型的是 TNM_NET后面的標識符命名,例如:NET “clk” TNM_NET = “sys_clk”,那么TNM_reference就可以取 sys_clk)
The following rules apply:
? The variable name period is the required clock period.
? The default units for period are nanoseconds, but the number can be followed by ps, ns, micro, or ms. The period can also be specified as a frequency value, using units of MHz, GHz, or kHZ.
(周期的單位可以指定為頻率單位,例如MHz,GHz,或者 kHz)
? Units may be entered with or without a leading space.
? Units are case-insensitive.
? The HIGH|LOW keyword indicates whether the first pulse in the period is high or low, and the optional high_or_low_time is the polarity of the first pulse. This defines the initial clock edge and is used in the OFFSET constraint. HIGH is the default logic level if the logic level is not specified.
(The HIGH|LOW 關鍵詞指定第一個脈沖是高還是低,如果未指定,默認為高!)
? If an actual time is specified, it must be less than the period.
? If no high_or_low_time is specified the default duty cycle is 50%.
(如果高電平和低電平持續時間沒有指定,那么默認占空比為50%!)
? The default units for high_or_low_time is ns, but the number can be followed by % or by ps, ns, micro, or ms to specify an actual time measurement.
? INPUT_JITTER is the random, peak-to-peak jitter on an input clock. The default units are ns.
Clock Phase Period Example
下面這張圖暫時放著:等我清晰了再解釋。
Hold Calculations
Hold time violation?is a violation of the hold time requirement. If the datasheet says the minimum required hold time is 10 ns and you change the data 5 ns after the clock edge, then you have committed a hold time violation and there is no guarantee which data value will end up on the flipflop output.
如果沒有達到保持時間的要求,就會出現Hold time violation,同理如果沒有滿足建立時間的要求,就會出現Setup time violation。
https://electronics.stackexchange.com/questions/29464/what-is-hold-time-violation
http://www.vlsi-expert.com/2011/04/static-timing-analysis-sta-basic-part3b.html
FPGA
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。