1、保持約束
????????????????keep:當編譯器在對FPGA設計進行映射時,一些線網將會被吸收到邏輯塊中。
(* KEEP = "{TRUE | FALSE}" *)
? ? ? ? ? ? ? ? ?keep_hierarchy:vivado默認會把設計變成一級一級模塊化的調用轉換為一個沒有子模塊的超大模塊。這個約束會保留部分層級關系。
(* KEEP_HIERARCHY = " { TRUE | FALSE | SOFT } " *)
????????TRUE:保留層級關系并保留到實現(可以實現三模冗余)
? ? ? ? FALSE:不保留層級關系
????????SOFT:保留層級關系不保留到后續
2、乘法器相關約束
? ? ? ? use_dsp48:
(* use_dsp48 = " { auto | yes | no } " *)
? ? ? ?mult_style:?
3、存儲器相關約束
? ? ? ? ram_extract:檢測code中是否有RAM等效功能并轉換為RAM
(* ram_extract = " { yes | no } " *)
? ? ? ? ram_style?:
(* ram_style = " { auto | block | distributed | pipe_distributed } " *)
? ? ? ? ?????????????????distributed:lut實現
? ? ? ? ? ? ? ? ? ? ? ? ?pipe_distributed:消耗大量寄存器
????????rom_extract:檢測code中是否有RAM等效功能并轉換為RAM
(* rom_extract = " { yes | no } " *)
????????? rom_style?:
(* rom_style = " { auto | block | distributed | pipe_distributed } " *)
?
4、寄存器相關約束
? ? ? ? IOB:
(* IOB = " { TRUE | FALSE | AUTO } " *)
5、狀態機相關約束
?????????fsm_extract:他會決定狀態機的存在
(* fsm_extract = " { yes | no } " *)
? ? ? ? fsm_style:決定是基于 LUT 還是 BRAM 實現有限狀態機?
(* fsm_style = " { lut | bram } " *)
? ? ? ? fsm_encoding:決定狀態機的編碼方式
(* fsm_encoding = " { auto | one-hot | compact | sequential | gray | johnsin | speed1 | user } " *)
? ? ? ???safe_implementation:編譯器是否采用安全模式來實現狀態機
(* safe_implementation = " { yes | no } " *)
? ? ? ? ?
????????safe_recovery_state?:非法時默認狀態名
(* safe_recovery_state = " <value> " *)