以下描述fpga約束,與asic可能有少量差異。
1)基準時鐘create_clock -add 多個晶振驅動一個時鐘輸入腳
2)虛擬時鐘 create_clock
作用:
用於約束input 和output。虛擬時鐘,它爲外部寄存器提供時鐘驅動源,對fpga內部不起作用。它的頻率設置和fpga內部基準時鐘一樣的頻率。
寫法和create_clock一樣,只是沒有get_ports。
3)隨路時鐘約束
隨路時鐘,因爲fpga內部接口使用的時鐘和隨路時鐘,是一個。所以約束不能再使用虛擬時鐘。否則,可能導致timing ,launch 和latch 不能正確識別。
4)pll 約束
creat_generated_clocks 和drive_pll_clocks 兩種方法
create_generated_clocks -source 可以使用pll輸入的pins 或輸入基準時鐘(使用get_ports clk)。
使用pll的輸入pins
約束中可以使用get_registers。設計中存在LVDS or serdes 時,altera推薦使用drive_pll_clocks。
drive_pll_clocks
或 drive_pll_clocks create_based_clocks
5)drive_clocks
自動約束。timequest檢測到設計沒約束時,會自動約束。但項目完畢後最好不要使用該命令。因爲設計中存在多個時鐘時,drive_clocks會將多個時鐘約束成同一個頻率。
6)set_clock_groups -exclusive 或asynchronous
timequest默認所有時鐘是相關的,除非說明。
多個時鐘源驅動同一個引腳,-exclusive 表示:兩個時鐘源不會同時有效。