問題:該怎麼確認輸入的最小和最大延遲?同理怎麼確認例外和多週期。
上一節瞭解建立時間和保持時間,其實就是知道fpga的芯片的基本時鐘工作。
接着上一篇瞭解了基本時鐘,以及時鐘路徑之後就需要知道該怎麼設置最大最小時鐘延遲。
關於輸入延遲
關於輸入延遲,我覺得用上面的圖標方式描述比較合適,文字描述還需要去理解路徑,接下來對上述時鐘做一個解釋。
set_input_delay -clock CLKB -max [Tclkd_ext_max + Tco_max + Tbd_max – Tclkd_int_min] [ get_ports DIN ]
Tbd_data 代表這數據傳輸,因爲觸發器需要時鐘驅動數據傳輸,所以Tbd_data代表時鐘驅動下的數據從板子到FPGA的時間。
Tclk_ext,代表着時鐘從板子到FPGA的的時間。
T_co代表着板子驅動板子電路的時鐘。
如果時鐘來自於晶振呢?
針對同源時鐘,需要知道如果時鐘和數據同步,那麼分邊緣對齊和中心對齊。如果是中心對齊,可以通過對數據時鐘添加延遲add_delay,來有效採集數據。
set_input_delay -clock[get_clocks CLKB] -max max_input_delay [get_ports indata]
set_input_delay -clock[get_clocks CLKB] -min min_input_delay [get_ports indata] -add_delay
如果是邊沿採集,就需要對時鐘進行相位延遲採集。
set_input_delay -clock[get_clocks CLKB_90] -min min_input_delay [get_ports indata] -add_delay
另外如果是雙沿採集,就需要對下降沿也進行同樣的約束,原約束默認對上升沿約束。並且需要區分Clock_fall,是對時鐘進行約束。
set_input_delay -clock[get_clocks CLKB] -max max_input_delay [get_ports indata] -clock_fall -add_delay
set_input_delay -clock[get_clocks CLKB] -min min_input_delay [get_ports indata] -clock_fall -add_delay
建立時間=數據所要求的建立時間-數據到達時間
保持鬆弛=測出數據的時間-數據所要求的保持時間
上面叭叭說一堆,但是具體該怎麼用呢?從哪知道要吃時間呢?該怎麼計算呢?
哈哈,開玩笑,計算可以不瞭解。但是確實需要知道時間應該從哪裏找。對於芯片時間來說,最主要的時間參數就是Tco。TCO在各自的芯片手冊上可以找到。
V=C/Er0.5
T=V*L
介紹完輸入延遲和輸出延遲,接下來會對如果利用時鐘和管教約束,優化電路設計。