Vivado綜合設置選項分析:-flatten_hierarchy
- 2019 年 10 月 31 日
- 筆記

-flatten_hierarchy有三個可選值,每個值的具體含義如下表所示。通常來講,-flatten_hierarchy為none時,工具做的優化最少,因而消耗的資源也最多,但層次保留也最為完整。相反,當其為full時,工具做的優化最多,因而消耗的資源也最少,但層次完全被打平(只看到頂層)。從這個角度來說,-flatten_hierarchy的這三個值其實就體現了工具對設計層次完整性和優化力度兩者的折中。通常情況下,使用默認值rebuilt即可。
-flatten_hierarchy是一個全局設置(凡是出現在綜合選項設置菜單的均為全局設置),意味著對設計中的所有模組均生效。如果期望對設計中某個層次使用與-flatten_hierarchy的值不同的層次優化方式,就要用到綜合屬性(Synthesis Attributes)KEEP_HIERARCHY,它只能在RTL程式碼中使用,其優先順序高於-flatten_hierarchy。具體使用方法如下:
Verilog版本:
(* KEEP_HIERARCHY = 「yes」 *) module uart_r();
VHDL版本:
作用於entity:
attribute KEEP_HIERARCHY : string;
attribute KEEP_HIERARCHY of uart_rx : enityis 「yes」;
作用於Instance:
attribute KEEP_HIERARCHY : string;
attribute KEEP_HIERARCHY of uart_rx_u0 :label is 「yes」;
註:uart_rx_u0是實例化的名字。
結論:
1. 對於-flatten_hierarchy,通常使用默認值rebuilt即可。Rebuilt的一個明顯的好處是在使用Vivado Logic Analyzer (ISE時代的ChipScope)時,可快速根據層次找到待觀測訊號;
2. KEEP_HIERARCHY優先順序高於-flatten_hierarchy。因此,可根據設計需求靈活對某些層次設定此屬性。