ICC_lab總結——ICC_lab2:設計規划


PS:字丑,禁止轉載!!!

首先先寫出大概的流程,然后是一些教材的理論知識總結,最后是進行lab2的一些流程概述。

教材的理論知識總結主要是:數字集成電路物理設計學習總結——布圖規划和布局

-->數據准備(設置)、加載設計並切換到floorplan模式

--> 創建拐角(Corner)和電源地(P/G)單元並定義他們pad的位置

-->創建floorplan

-->在電源/接地信號和I / O焊盤,宏和標准單元的所有電源/接地引腳之間建立“邏輯”連接

-->創建pad的電源環,保存電源環創建后的設計

-->驗證當前虛擬平面放置策略選項是否具有默認設置

-->設置sliver 的尺寸,防止標准單元放置在宏單元之間的狹窄通道

-->使用“無層次結構重力”(選項)來執行  時序驅動的虛擬平台放置

-->進行宏單元布局約束

-->檢查設置

-->所有宏單元周圍設置10微米的硬限制邊距

-->再次進行宏單元布局,鎖定所有的宏,保存IO、宏單元布局規划后的設計

-->在宏單元周圍創建P/G環

-->電源網絡綜合:對核心電源環、宏單元環、垂直以及水平環帶進行約束、提交電源計划、連接所有宏單元上的電源引腳,並創建標准單元電源軌道(power rail)、保存這一階段的設計

-->檢查時序

-->寫出DEF文件

-->為布局做准備而創建第二遍(布局規划)設計

 

 

 

 

上面是理論知識,下面是lab實踐:

首先就進行數據設置,數據建立(設置)之后,保存為orca_setup

數據設置的過程在lab2實驗中是沒有詳細敘述的,也就是說只給出了數據建立的結果:orca_setup

本次workshop實驗需要准備/用到的數據為:

需要說明的是,圈圈的文件,在數據設置階段就已經准備好了,其他方框的則是本次實驗需要准備的。

下面就是正式過程了:

 

一、加載設計

啟動ICC后,加載orca_setup這數據設置階段產生的階段設計,然后執行時序優化的控制腳本:

source scripts/opt_ctrl.tcl

然后在layout窗口中切換到design planning模式下:

 File  --> Task  --->Design Planning

 

 

二、初始化平面圖(floorplan),也是創建布局規划

1、創建拐角(Corner)和電源地(P/G)單元並定義他們pad的位置:

因為邏輯綜合的網表里面沒有上面的這些物理單元,我們需要自己創建,才能進行放置他們的位置,創建只要執行下面的腳本:

source –echo scripts/pad_cell_cons.tcl

pad_cell_cons.tcl腳本里面的內容主要是:

·創建Corners  pad和power/group pads

·定義Corner pad 的位置

·定義signal pad 和 power pad的位置(主要是分為左邊、右邊、頂層和底層)

 

2、初始化floorplan

需要注意的是,icc2013.3以后(包括),初始化floorplan不能用initial_floorplan,而是用create_floorplan(也就是進行布局規划).

 

3、插入pad fillers,填充pad之間的間隙

執行命令:

 source  ./scripts/insert_pad_filler.tcl

這個腳本文件主要定義要插入的filler cells

 

4、在電源/接地信號和I / O焊盤,宏和標准單元的所有電源/接地引腳之間建立“邏輯”連接(無物理布線),也就是執行前面數據設置中沒有進行的第6步:

source –echo scripts/connect_pg.tcl

 

 

5、創建pad的電源環:

create_pad_rings

   

6、保存電源環創建后的設計

save_mw_cel –as  floorplan_init

 

三、將連接到IOpad的宏單元進行預布置(也就是布置好宏單元到核心區)

這里可以通過手動,也可以用腳本進行:

source –echo scripts/preplace_macros.tcl

這個腳本就是進行對三個宏單元的位置進行規划

 

四、執行虛擬平面放置

1、驗證當前虛擬平面放置策略選項是否具有默認設置:

report_fp_placement_strategy (個人理解也就是查看各種放置默認信息)

 

2、設置sliver 的尺寸,防止標准單元放置在宏單元之間的狹窄通道(sliver size <10)中:

set_fp_placement_strategy    -sliver_size   10

 

3、使用“無層次結構重力”(選項)來執行  時序驅動的虛擬平台放置(以確保“邏輯層次結構”不會影響此非層次結構或平面布局的放置):

create_fp_placement –timing_driven  -no_hierarchy_gravity

 

上面的這個命令的效果就是把宏單元的位置放好(在核心區域上)

 

4、把一些宏轉換成數組,電源和接地帶和宏單元環的布線可以更容易。將宏單元置於盡可能接近芯片的邊緣,將宏盡可能多地組合在一起、打開虛擬IPO以模仿時序優化(並防止不必要的布局優化)、限制某些RAM的合法布局方向,上面的四個操作通過執行腳本完成:(宏單元布局約束腳本)

source –echo scripts/macro_place_cons.tcl

 

5、檢查設置:

report_fp_placement_strategy

report_fp_macro_options

 

6、 所有宏單元周圍設置10微米的硬限制邊距。 這樣容易在宏單元周圍創建P / G環,並避免擁塞以及宏單元周圍的信號布線DRC錯誤:

source -echo scripts/keepout.tcl

 

7、再次進行宏單元布局:

create_fp_placement   -timing_driven   -no_hierarchy_gravity

可以進行擁塞分析

 

8、鎖定所有的宏:

set_dont_touch_placement   [all_macro_cells]

 

9、保存IO、宏單元布局規划后的設計:

save_mw_cel -as floorplan_placed

 

 

五、在宏單元周圍創建P/G環

P/G環的創建方式(或者依據內容)主要有

·定義包含一組宏的粗略“區域”

·定義block  ring  layers,寬度和偏移量

·創建(提交)金屬布線

通過執行腳本創建宏單元的P/G環:

source   ./scripts/macro_pg_rir ngs.tcl

 

六、電源網絡綜合

1、對核心電源環、宏單元環、垂直以及水平環帶進行約束

·電源帶約束

·對核心的電源帶約束

·為沒有電源環的PLL定義宏單元環

·進行全局約束

執行腳本:

scripts / pns.tcl

2、提交電源計划:

commit_fp_rail

 

3、連接所有宏單元上的電源引腳,並創建標准單元電源軌道(power rail):

preroute_instances

preroute_standard_cells –fill_empty_rows \

-remove_floating_pieces

 

創建完之后,可以進行IR drop分析

 

4、保存這一階段的設計

save_mw_cel   -as   floorplan_pns

 

七、檢查時序

1、PNS在METAL4和METAL5上產生了許多電源帶,這些帶放在標准單元上。可以有利地防止標簽單元放置在帶下 - 這降低了沿帶的擁塞的可能性,並且減少了對電源網絡的串擾影響。 在帶上應用“完整”電源網(pnet)阻塞,然后再次運行虛擬平面放置以考慮pnet設置:

set_pnet_options -complete "METAL4 METAL5"

create_fp_placement  -timing_driven  -no_hierarcI hy_gravity

 

2、通過執行實際布線進行檢查時序:

route_zrt_global

 

3、使用“view,查看”過程生成最大延遲(建立時間)時序報告(更新時序和生成報告需要幾秒鍾):

v report_timing

如果有時序違規,則可以重新進行優化布線:

optimize_fp_timing –fix_design_rule

 

4、保存設計

save_mw_cel -as floorplan_complete

 

八、寫出DEF文件

刪除所有放置的標准單元,然后以DEF格式寫出floorplan文件。這個DEF平面規划文件將被Design Compiler Topographical  使用來再次綜合;然后在ICC再次讀入再次綜合后的網表后,再用ICC進行布局規划:

下面是刪除所有放置的標准單元,然后以DEF格式寫出floorplan文件:

remove_placement -object_type standard_cell

 

 

九、為布局做准備而創建第二遍(布局規划)設計

假裝這個設計是從RTL代碼使用DC的拓撲模式重新綜合的,重新綜合的過程使用上一步生成的DEF文件。這是我們得到第二遍網表ORCA_2.v以及更新后的約束文件ORCA_2.sdc。

1、使用新的ORCA網表和約束執行數據設置:

source -echo scripts/2nd_pass_setup.tcl

這個腳本進行了標准的數據設置准備。

 

2、讀入上一個步驟寫出的def文件:

read_def design_data/ORCA.def

 

3、新應用的電源網絡合成后應用的pnet選項。這些設置不在DEF文件中定義:

set_pnet_options -complete "METAL4 METAL5"

4、將設計保存為ready_for_placement:

save_mw_cel   -as   ready_for_placement

 

ICC的設計規划實驗大概流程就是這樣了,其中主要跑腳本,腳本的內容才是設計規划的內容,要把腳本的內容參透才真正把這個實驗的內容參透。時間問題,這里就不仔細去看了,主要學習流程.

-->數據准備(設置)、加載設計並切換到floorplan模式

--> 創建拐角(Corner)和電源地(P/G)單元並定義他們pad的位置

-->創建floorplan

-->在電源/接地信號和I / O焊盤,宏和標准單元的所有電源/接地引腳之間建立“邏輯”連接

-->創建pad的電源環,保存電源環創建后的設計

-->驗證當前虛擬平面放置策略選項是否具有默認設置

-->設置sliver 的尺寸,防止標准單元放置在宏單元之間的狹窄通道

-->使用“無層次結構重力”(選項)來執行  時序驅動的虛擬平台放置

-->進行宏單元布局約束

-->檢查設置

-->所有宏單元周圍設置10微米的硬限制邊距

-->再次進行宏單元布局,鎖定所有的宏,保存IO、宏單元布局規划后的設計

-->在宏單元周圍創建P/G環

-->電源網絡綜合:對核心電源環、宏單元環、垂直以及水平環帶進行約束、提交電源計划、連接所有宏單元上的電源引腳,並創建標准單元電源軌道(power rail)、保存這一階段的設計

-->檢查時序

-->寫出DEF文件

-->為布局做准備而創建第二遍(布局規划)設計

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM