約束設置與邏輯綜合在SoC設計中的應用
3.1 設定工藝庫和參考庫
設置Design Compiler運行所使用的庫:目標庫(target_library)、鏈接庫(link_library)、可綜合庫(synthetic_library)、符號庫(symbol_library)。其中的目標庫中包含了標準單元庫、RAM單元庫、I/O單元庫、PLL單元庫等,通常是由芯片代工廠家提供。系統芯片ZSU32采用的是中芯國際的0.18 ?滋m CMOS工藝庫,所以在設置時就把目標庫指向該工藝庫。
#設置目標工藝庫
set target_library SMIC.db
3.2 讀入RTL設計與設置工作環境
讀入RTL設計通常有自頂向下或者自底向上2種方式。因為ZSU32模塊眾多,所以采用自底向上的讀入方式。首先讀入各個子模塊,并分別編譯;然后更改層次,編譯上一層的模塊;最后會合成整個系統。
讀入設計后,首先設置芯片的工作環境,根據采用的工藝庫提供的環境和線網負載模型,可以通過set_operating_condition和set_wire_load_model命令進行設置。以下是ZSU32綜合環境的頂層環境設置:
#設置工作環境
set_operating_condition smic18_typ;
#設置線網負載模型
set_wire_load_model smic18_wl30;
3.3 時序約束
3.3.1 時鐘定義
時鐘是整個時序約束的起點。系統芯片ZSU32將外部輸入時鐘和PLL模塊輸入時鐘作為源時鐘:ext_clk_i和pll_clk_i。通過對這2個源時鐘信號的分頻或者倍頻,產生了各個子模塊的時鐘信號。
#定義源時鐘ext_clk,周期16 ns
create_clock-name ext_clk-period
16 [get_ports {ext_clk_i}];
在SoC芯片內部,子模塊的時鐘實際是經過源時鐘分頻或者倍頻得到的,使用create_generated_clock命令來建立子模塊時鐘。
#設置一個2倍頻時鐘clk_main,
#其源時鐘是pll_clk_i
create_generated_clock -name clk_main
-multiply_by 2 -source pll_clk_i;
評論