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