Lab 8: DRC and LVS 1 These Labs are in the CIC standard flow 2 在今天的 Lab 中, 我們會練習到 2.1 Stream In GDS with Virtuoso 2.2 Design Rule Check (DRC) 2.3 Layout Versus Schematic (LVS) 3 先複製並解壓縮 Calibre Lab 的檔案 : tar xvzf ~cvsd/cur/calibre/calibrelab.tar.gz 4 同學請將自己於前面實驗完成的 CHIP.v 和 CHIP.gds 替換到 design_data 目錄裡, 繼續完成下面的驗證 但如果前面實驗還沒有完成, 或是自己的檔案有驗證錯誤, 可以使用我們提供的 CHIP.v 和 CHIP.gds 檔案就好
Lab 8 1: Virtuoso 1 目的 : 使用 Virtuoso Layout Editor 檢查自己的設計, 熟悉 Virtuoso Layout Editor 的使用者介面 2 進入 Lab8 1 % cd Lab8 1 3 檢查目關的檔案是否齊全 3.1 GDS File:CHIP.gds ( 前面實驗產生, 或由 Calibre Lab 路徑複製 ) 3.2 Virtuoso Technology File:0.18um_Virtuoso4.4.tf 和 display.drf 3.3 Initial File:.cdsinit 3.4 上述檔案中的 GDS File 是由 SOCEncounter 產生的,Virtuoso Technology File 會隨著所使用的製程不同而改變,Initial File 則是 Virtuoso 的初始環境設定檔 3.5 檢查.cdsinit 的內容 % vi.cdsinit 裡面 skill file 的路徑會隨著使用環境不同而改變, 如果要在 Virtuoso 執行 Calibre 的話要注意這點,CAD 工作站底下正確路徑應為 : /usr/mentor/calibre/cur/shared/pkgs/icv/tools/queryskl 4 執行 icfb % icfb & 5 Stream In Design 5.1 在 icfb 視窗裡, 執行 File >Import >Stream 會跳出一個新視窗, 在 Input File 欄位輸入 CHIP.gds,Top Cell Name 欄位輸入 CHIP,Library Name 欄位輸入 CHIP,ASCII Technology File Name 欄位輸入 0.18um_Virtuoso4.4.tf, 最後選 OK, 成功的話會出現如下訊息表示沒有 Error 發生
5.2 在 icfb 視窗裡, 執行 Tools >Library Manager 會跳出 Library Manager 視窗, 先執行 View >Refresh 更新欄位內容, 然後在 Library 欄位選擇 CHIP, Cell 欄位選擇 CHIP,View 欄位選擇 layout, 並在其上面按右鍵, 選 Open 來打開 CHIP/CHIP/layout 這個 cell view, 打開後按下 shift+f 展開所有 cell, 如下圖 6 熟悉 Virtuoso Layout Editor 的使用者介面 6.1 這時候操作的視窗主要有兩個, 一個是顯示 layout 的 Virtuoso Layout Editor, 另外一個是長條型的 LSW 6.2 LSW 主要用來控制各 layer 的顯示與否, 例如 是指 是否顯示 Metal1 的 layer, 在上面按滑鼠中鍵圖示會變成, 回去 Layout Editor 那邊按 ctrl+r 把畫面 redraw, Metal1 layer 便沒有再顯示在畫面中 6.3 Virtuoso Layout Editor 是用來對 layout 進行一些操作, 所以用的功能如 視窗左邊的圖案所示, 例如改變 Metal 的位置, 延伸或縮短 Metal
長度等, 主要是用來解決 DRC/LVS Error 用 下面的快捷鍵可以幫助使用者觀察 layout Zoom In ctrl + z Zoom Out shift + z Fit f Display All Hierarchy shift + f Display Top Hierarchy ctrl + f Edit Instance Property q 7 檢查自己的設計 7.1 在 Display All Hierarchy 時, 在四個 corner pad 的外側會看到兩條 L 的形狀, 可以用來確定 corner 擺放的方向有沒有問題 7.2 在之前用 SOCEncounter 進行 P&R 時不用為 memory 加入 block ring, 是因為它本身就已經有包含, 在這邊只有 Zoom In 到 memory 的位置便可以看到 7.3 到之前加 IOVDD 和 IOVSS 的位置把 label 找出來, 按 q 可以檢查 label 所在的 metal layer 是否跟之前設定的一樣 8 Stream Out 8.1 在 icfb 視窗執行 File >Export >Stream, 在 Stream Out Form 中的 Library Name 欄位填入 CHIP,Top Cell Name 欄位填入 CHIP, 在 View Name 欄位填入 layout,output File 欄位填入 CHIP.gds2, 最後按 OK 開始進行 stream out 的動作, 成功的話會出現如下訊息表示沒有 Error 發生 9 關閉 icfb 9.1 在 icfb 視窗選擇 File >Exit, 按 YES 即可離開 10 Lab8 1 結束 Check: 完成 Virtuso Layout Editor 的開啟並 output stream CHIP.gds2
Lab 8 2(a): Design Rule Check 1 Lab 目的 : 學習如何進行 Design Rule Check (DRC) 2 進入 Lab8 2 % cd Lab8 2 3 複製相關的檔案 3.1 GDS 檔案 :CHIP.gds ( 前面實驗產生, 或由 Calibre Lab 路徑複製 ) 4 進入 DRC 目錄 4.1 % cd DRC 5 編輯 Calibre DRC runset 檔案 5.1 對 CLM18_LM16_6M.28a_m.drc 修改以下幾個項目 ( 約在第 618 行 ), 如紅字部份所示 : LAYOUT PATH../../design_data/CHIP.gds LAYOUT PRIMARY CHIP 5.2 存檔並離開 6 執行 Calibre DRC 6.1 % source /usr/mentor/cic/calibre.cshrc 6.2 % calibre drc CLM18_LM16_6M.28a_m.drc 7 觀看 DRC 結果 7.1 打開檔案 DRC.rep, 檢查 RULECHECK RESULT STATISTIC 中 Result Count 不等於 0 的部份即為 DRC Error 7.2 % grep ^RULECHECK DRC.rep grep v 0$ 7.3 如果用預設的 GDS 檔應該會看到幾個 DRC Error, 像 UTM20KR.1.,Mx.R.1, PO.R.3 等, 其中 Mx.R.1 指的是 metal density 不夠, 這是因為設計最外圈的 bounding pad 佔的比例太大, 而 dummy metal 沒有加到 core 外面的區域, 所以整體 density 不夠 其餘錯誤指的是 poly 和 oxide 的 density 不足, 這是因為我們所使用的 standard cell layout 並不是完整的, 裡面沒有 poly 和 oxide, 所以 density 不夠是正常的 這幾個 DRC Error 都不用理會 8 Lab8 2(a) 結束
Lab 8 2(b): Layout vs. Schematic 1 Lab 目的 : 學習如何進行 Layout Versus Schematic (LVS) 2 進入 Lab8 2 % cd Lab8 2 3 複製相關的檔案 3.1 GDS 檔案 :CHIP.gds ( 前面實驗產生, 或由 Calibre Lab 路徑複製 ) 3.2 Netlist 檔案 :CHIP.v ( 前面實驗產生, 或由 Calibre Lab 路徑複製 ) 4 進入 LVS 目錄 4.1 % cd LVS 5 編輯 Calibre LVS runset 檔案 5.1 對 LVS_Calibre_0.18um_MIX_1p6m_1.8v+3.3v.15d.lvs 修改以下幾個項目 ( 約在第 153 行 ), 如紅字部份所示 : LAYOUT PRIMARY CHIP LAYOUT PATH../../design_data/CHIP.gds LAYOUT CASE YES SOURCE PRIMARY CHIP SOURCE PATH source.spi SOURCE CASE YES 其中加入的兩個 CASE YES 表示 layout netlist 和 source netlist 都是 case sensitivity 5.2 最後還要把 LVS BOX 中的 power pad,corner pad,bonding pad 都註解掉, 如 : //LVS BOX FILL1 //LVS BOX FILL16 //LVS BOX FILL2 //LVS BOX FILL32 //LVS BOX FILL4 //LVS BOX FILL64 //LVS BOX FILL8 //LVS BOX PADIZ40 //LVS BOX PADOZ40 //LVS BOX PCORNERDG //LVS BOX PCORNERDG_L //LVS BOX PFEED01 //LVS BOX PFEED10 //LVS BOX PFEED1
//LVS BOX PFEED20 //LVS BOX PFEED2 //LVS BOX PFEED22 //LVS BOX PFEED35 //LVS BOX PFEED50 //LVS BOX PFEED5 //LVS BOX PVDD1DGZ //LVS BOX PVDD2DGZ //LVS BOX PVSS1DGZ //LVS BOX PVSS2DGZ //LVS BOX PVSS3DGZ 原因是因為在 verilog netlist 中這些 cell 都不存在, 可是 layout 有, 所以 希望不要把這些 cell 當成是黑盒子 5.3 存檔並離開 6 6.1 編輯 tsmc18_lvs.v 檔案 6.2 加入以下對於 antenna 的描述 : module ANTENNA ( A ); input A ; endmodule 7 編輯 tsmc18_lvs.spi 檔案 7.1 將 1776 行改成如下 :.SUBCKT ANTENNA A VDD VSS 8 檢查 LVS 的目錄, 我們發現目前還沒有 source.spi, 因此必須先把 CHIP.v 轉換 成 SPICE 格式輸入 : 8.1 % source /usr/mentor/cic/calibre.cshrc 8.2 % v2lvs v../../design_data/chip.v l tsmc18_lvs.v o source.spi s tsmc18_lvs.spi s1 VDD s0 VSS 8.3 ( 備註 ) 如果未來要加入其他檔案 ( 例如 Memory RF2SH64x16.v) 則打成 : % v2lvs v../../design_data/chip.v l tsmc18_lvs.v l RF2SH64x16.v o source.spi s tsmc18_lvs.spi s RF2SH64x16.spi s1 VDD s0 VSS 8.4 成功的話會產生 source.spi 9 執行 Calibre LVS 9.1 % calibre lvs spice layout.spi hier auto LVS_Calibre_0.18um_MIX_1p6m_1.8v+3.3v.15d ( 同一行 ) 10 觀看 LVS 結果 10.1 打開檔案 lvs.rep, 檢查 OVERALL COMPARISON RESULT 的部份是不是出 現笑臉與大勾, 如果是的話便表示設計有通過 LVS 了
11 Lab8 2(b) 結束 Check: 完成 DRC, 截取 count 不等於 0 的部份 ; 完成 LVS 並出現笑臉