約束設置與邏輯綜合在SoC設計中的應用

發(fā)布時(shí)間:2010-11-9 20:30    發(fā)布者:techshare
關(guān)鍵詞: SoC , 邏輯綜合 , 約束設置
介紹了約束設置與邏輯綜合在SoC設計中的應用,并以一款SoC芯片ZSU32的設計為例,詳細討論了系統芯片的約束設置與邏輯綜合策略。

系統芯片SoC是目前超大規模集成電路設計的發(fā)展趨勢,其集成度高、功能復雜、時(shí)序要求嚴格。邏輯綜合是SoC設計不可缺少的一環(huán),它是將抽象的以硬件描述語(yǔ)言所構造的模型轉化為具體的門(mén)級電路網(wǎng)表的過(guò)程。邏輯綜合的質(zhì)量直接影響芯片所能達到的性能,因而在綜合過(guò)程中必須根據設計要求在時(shí)序、面積和功耗方面設置正確的約束。

本文針對中山大學(xué)ASIC設計中心自主開(kāi)發(fā)的一款系統芯片ZSU32,以Synopsys公司的Design Compiler為綜合工具,探索了對SoC芯片進(jìn)行綜合的設計流程和方法,特別對綜合過(guò)程的時(shí)序約束進(jìn)行了詳細討論,提出了有效的綜合約束設置方案。

1 時(shí)序約束原理

同步電路是大多數集成電路系統的主流選擇。同步電路具有工作特性簡(jiǎn)單、步調明確、抗干擾能力強等特點(diǎn)。但是,因為所有的時(shí)序元件受控于一個(gè)特定的時(shí)鐘,所以數據的傳播必須滿(mǎn)足一定的約束以便能夠保持與時(shí)鐘信號步調一致。

圖1是一個(gè)典型的局部路徑,它需要滿(mǎn)足兩方面的條件:防止數據太遲到達目的寄存器導致數據不能正確保存;防止新的數據過(guò)早到達導致覆蓋了前一數據。





設置建立時(shí)間(setup time)約束可以滿(mǎn)足第一個(gè)條件:




2 ZSU32系統芯片的結構

ZSU32芯片內置32 bit MIPS體系處理器作為CPU,具備兩路獨立的指令和數據高速緩存,CPU內部有獨立的DSP協(xié)處理器和浮點(diǎn)協(xié)處理器,同時(shí)集成了LCD控制器、MPEG硬件加速器、AC97控制器、SRAM控制器、NAND Flash控制器、SATA高速硬盤(pán)控制器、以太網(wǎng)MAC控制器等,并具有I2C、I2S、SPI、、UART、GPIO等多種接口模塊。圖2是ZSU32的總體結構。





3 ZSU32系統芯片的約束設置與邏輯綜合

采用Design Compiler工具對ZSU32進(jìn)行邏輯綜合的基本流程如圖3所示。





ZSU32系統芯片的綜合采取自底向上的策略,先局部后整體。首先將當前工作層次設置為系統芯片的某個(gè)子模塊,然后對該子模塊添加各項具體約束,接著(zhù)完成子模塊的綜合。依次對各子模塊重復上述綜合流程,當各個(gè)模塊都順利通過(guò)了初次綜合后,通過(guò)set_dont_touch_

network命令將模塊中的關(guān)鍵路徑和時(shí)鐘線(xiàn)網(wǎng)保護起來(lái),然后做一次全局優(yōu)化,檢查是否滿(mǎn)足時(shí)序等各方面的設計要求,達到要求就可以輸出最終的網(wǎng)表和各項綜合報告。

3.1 設定工藝庫和參考庫

設置Design Compiler運行所使用的庫:目標庫(target_library)、鏈接庫(link_library)、可綜合庫(synthetic_library)、符號庫(symbol_library)。其中的目標庫中包含了標準單元庫、RAM單元庫、I/O單元庫、PLL單元庫等,通常是由芯片代工廠(chǎng)家提供。系統芯片ZSU32采用的是中芯國際的0.18 ?滋m CMOS工藝庫,所以在設置時(shí)就把目標庫指向該工藝庫。

#設置目標工藝庫

set target_library SMIC.db

3.2 讀入RTL設計與設置工作環(huán)境

讀入RTL設計通常有自頂向下或者自底向上2種方式。因為ZSU32模塊眾多,所以采用自底向上的讀入方式。首先讀入各個(gè)子模塊,并分別編譯;然后更改層次,編譯上一層的模塊;最后會(huì )合成整個(gè)系統。

讀入設計后,首先設置芯片的工作環(huán)境,根據采用的工藝庫提供的環(huán)境和線(xiàn)網(wǎng)負載模型,可以通過(guò)set_operating_condition和set_wire_load_model命令進(jìn)行設置。以下是ZSU32綜合環(huán)境的頂層環(huán)境設置:

#設置工作環(huán)境

set_operating_condition smic18_typ;

#設置線(xiàn)網(wǎng)負載模型

set_wire_load_model smic18_wl30;

3.3 時(shí)序約束

3.3.1 時(shí)鐘定義

時(shí)鐘是整個(gè)時(shí)序約束的起點(diǎn)。系統芯片ZSU32將外部輸入時(shí)鐘和PLL模塊輸入時(shí)鐘作為源時(shí)鐘:ext_clk_i和pll_clk_i。通過(guò)對這2個(gè)源時(shí)鐘信號的分頻或者倍頻,產(chǎn)生了各個(gè)子模塊的時(shí)鐘信號。

#定義源時(shí)鐘ext_clk,周期16 ns

create_clock-name ext_clk-period\

16 [get_ports {ext_clk_i}];

在SoC芯片內部,子模塊的時(shí)鐘實(shí)際是經(jīng)過(guò)源時(shí)鐘分頻或者倍頻得到的,使用create_generated_clock命令來(lái)建立子模塊時(shí)鐘。

#設置一個(gè)2倍頻時(shí)鐘clk_main,

#其源時(shí)鐘是pll_clk_i

create_generated_clock -name clk_main\

-multiply_by 2 -source pll_clk_i;

3.3.2 多時(shí)鐘域約束

時(shí)序檢查默認以一個(gè)時(shí)鐘周期為界,但對于ZSU32系統芯片,存在著(zhù)一些多周期路徑,在這些路徑上,數據不需要在單時(shí)鐘周期內到達終點(diǎn)。例如,clk30mhz和clk10mhz是同源的同步時(shí)鐘,前者頻率是后者的3倍,對從clk10mhz時(shí)鐘域向clk30mhz時(shí)鐘域傳輸數據的路徑,采用如下命令:

#按照3個(gè)周期(clk30mhz)進(jìn)行

#建立時(shí)間約束

set_multicycle_path 3 -setup -start \

-from clk10mhz -to clk30mhz;

對于異步時(shí)鐘域之間的路徑,不用進(jìn)行同步的時(shí)序檢驗,應該將其定義為偽路徑(false path),這樣在邏輯綜合時(shí)就不必浪費資源去優(yōu)化。

#將異步時(shí)鐘e_clk和p_clk 之間的路徑設置為偽路徑

set_false_path -from e_clk –to p_clk;

set_false_path -from p_clk -to e_clk;

3.3.3 時(shí)鐘偏移

芯片中時(shí)鐘經(jīng)過(guò)不同的傳輸路徑,由于每條路經(jīng)延時(shí)不一,導致從時(shí)鐘源到達各個(gè)寄存器的始終輸入端的相位差。這種由于空間分布而產(chǎn)生的偏差叫做時(shí)鐘傾斜(clock skew)。此外,由于溫漂、電子漂移的隨機性,使時(shí)鐘信號的邊沿可能超前也可能滯后。這種具有時(shí)間不確定性的偏移稱(chēng)為時(shí)鐘抖動(dòng)(clock jitter)。偏移導致時(shí)鐘信號到達各個(gè)觸發(fā)器的時(shí)鐘引腳的時(shí)間不一致,需要給予約束。

#設置時(shí)鐘偏移為0.4 ns

set_clock_uncertainty 0.4 [all_clocks];

3.4 端口約束

SoC芯片通過(guò)大量輸入和輸出端口與外界進(jìn)行信息的傳輸,端口約束主要用于約束頂層端口相連的片內組合邏輯,包括確定輸入延時(shí)、輸出延時(shí)、輸出負載、輸出扇出負載、輸入信號躍遷時(shí)間等。

3.4.1 端口延時(shí)

輸入延時(shí)是指外部邏輯到電路輸入端口的路徑延時(shí)。輸出延時(shí)是指輸出端口到外部寄存器的路徑延時(shí)。圖4是輸入輸出延時(shí)示意圖。





設置范例如下:

#設置端口pci_ad13的輸入延時(shí)為4.8 ns

set_input_delay 4.8 -clock clk_main \

[get_ports {pci_ad13}];

#設置端口pci_ad16的輸出延時(shí)為3.6 ns

set_output_delay 3.6 -clock clk_main \

[get_ports{pci_ad16};

3.4.2 端口的驅動(dòng)與負載

端口的驅動(dòng)和負載特性通過(guò)設置輸入驅動(dòng)單元、輸入輸出負載值以及信號躍遷時(shí)間等來(lái)描述。范例如下:

#設置端口a7的驅動(dòng)單元是BUFX2

set_drive_cell -lib_cell BUFX2 -pin \

[get_ports {a7}];

#設置端口d17的負載值為20 pf

set_load -pin_load 20 [get_ports {d17}];

#設置端口d0的輸入信號上升時(shí)間是0.5 ns

set_input_transition -rise -min 0.5 \

[get_ports {d0}];

3.5 面積和功耗約束

Design Compiler的綜合以時(shí)序優(yōu)先,即優(yōu)化完約束后才根據約束優(yōu)化面積和功耗。初次綜合時(shí)很難對面積進(jìn)行評估,所以在第一次綜合時(shí)設置優(yōu)化目標為0,表示在滿(mǎn)足時(shí)序約束的情況下最大努力地減小面積。待綜合報告出來(lái)之后,根據初步的面積和功耗報告,修改數值,從而進(jìn)一步優(yōu)化。

#面積設置

set_max_area 0;

#功耗的約束做類(lèi)似的處理:

set_max_total_power 0;

3.6 綜合結果

根據上述綜合流程和約束設置,ZSU32系統芯片在邏輯綜合后滿(mǎn)足了時(shí)序約束,同時(shí)為后續物理設計提供了較好的起點(diǎn)。圖5是ZSU32時(shí)序分析報告的一部分。




從報告中看到,該路徑起點(diǎn)是i_ZSU32_top/i_eth2_top/miim1/clkgen/U42/Y,終點(diǎn)是i_ZSU32_top/i_eth2_top/miim1/shftrg/ShiftReg_reg_1_,路徑的時(shí)序裕量是2.96 ns。

ZSU32采用中芯國際0.18 μm CMOS標準單元庫進(jìn)行了邏輯綜合和版圖設計實(shí)現,6層金屬布線(xiàn),已成功流片。電路綜合規模為200萬(wàn)門(mén),所有cell的面積為19 195 460 μm2,芯片總面積小于5 mm×5 mm。
本文地址:http://selenalain.com/thread-37830-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页