基於innovus的全加器數字晶元物理實現(step by step)
源自:微信公眾號 「數字晶元實驗室」
環境設置
創建一個單獨的目錄(例如,innovus)。 創建子目錄synth和lib1、 將full_adder_pads_syn.v移動到synth目錄我們可以看出來這是一個綜合後gale-level的verilog門級網表。
2、將osu05_stdcells.lef移動到lib目錄
讀入設計1.在Unix提示符後,鍵入:innovus
2.出現innovus工具窗口時,在菜單欄選擇File->Import Design 讀入設計單擊 [...]讀入Verilog網表文件
1. 單擊「>>」按鈕展開窗口以顯示目錄
選擇文件full_adder_pads_syn.v並單擊Add按鈕將其添加到Netlist文件列表中。
6.對於Top Cell,選擇「Auto Assign」
對於Technology/Physical Libraries,選擇「LEF文件」。 單擊[...]按鈕打開LEF文件
使用與讀入Verilog Netlist文件相同的方法,選擇文件lib/ osu05_stdcells.lef
對於Power,輸入以下內容:
a. Power Nets: vddb. Ground Nets: gnd點擊 OK
保存和恢復設計NOTE:切記要及時保存你的設計選擇File, Save Design
要載入已保存的innovus文件,請執行File, Restore Design。 在「Restore Design」窗口中,選擇數據類型:innovus。 選擇要還原的文件。
Floorplanning在innovus工具菜單欄中,選擇Floorplan,Specify Floorplan
1.在「Basic」選項卡中,選擇以下選項:
Core Margins - 選擇Core to IO Boundary並設置為1002.單擊「OK」Power Planning
在innovus工具菜單欄中,選擇Power,Connect Global Nets以進行全局電源網路連接
1. 在Power Ground Connection中。
a、在Connect區域中,選擇Pin
b、「Scope」區域中,選擇「Apply All」2.對於每個net( vdd和gnd),執行以下操作: a、在以下框中輸入net名稱(vdd或gnd): i. To Global Net ii. Pin Name(s) b、 單擊「Add to List」按鈕3.單擊「Apply」,然後單擊「Cancel」Power Rings在innovus工具菜單欄中,選擇Power->Power Planning->Add Rings
對於Net(s),輸入vdd和gnd,如下所示:
a、單擊[...]框進行Net Selection b、從Possible Nets列中選擇vdd和gnd C。 單擊「Add」以複製到「Chosen Nets」列 d。 單擊OK在Ring Configuration中,選擇metal1作為Top和Bottom,metal2作為Left和Right
a、寬度為8b、間距為1C、Offset為 「Center in channel」
單擊「OK」Power Stripes在innovus工具菜單欄中,選擇Power->Power Planning->Add Stripes
1. Basic對於Net(s),輸入vdd和gnd nets,如下所示:單擊[...]框以獲取「Net Selection」窗口
從Possible Nets列中選擇vdd和gnd單擊「Add」以複製到「Chosen Nets」列單擊OK
在Set Configuration中,選擇Layer metal2和Direction vertical。 寬度應為8、間距為1
在「Set Pattern」中,將「Set-to-set」設置為100在First/Last Stripe中,設置從左到右相對於core或選定區域的距離為20Advanced選項
將Set Snap wire center to routing grid設置為Grid單擊「OK」
將電源連接到Standard Cell Rows
在innovus工具菜單欄中,選擇Route-> Special Route,然後單擊「OK」。 生成power(vdd)和gnd(gnd)給standard cell rows供電。Placing the Standard Cells
在innovus工具菜單欄中,選擇「Place」,「Standard Cells」選擇「Run Full Placement」和「Include Pre-Place Optimization」
單擊「OK」放置Standard Cells後,在innovus窗口中更改為「Physical View」以查看placement結果
Routing
在innovus工具菜單欄中,選擇Route->NanoRoute->Route,點擊Ok
添加Filler Cells現在我們已完成我們設計的placement和routing,我們將添加Filler Cells。 選擇Place->Physical Cell->Add Filler。
在Add Filler窗口中,輸入Cell Name 「FILL」並選中Mark Fixed。 單擊ok。
推薦閱讀: