Lab-4.Calibre –DRC與LVSI•目的:實習六是介紹一個大部分業界所使用的一套佈局驗證的軟體―Calibre(為Mentor公司之產品),Calibre是被世界上大多數的IC設計公司做為sign-off的憑據,適合做大型電路的驗證。
Calibre和Dracula、Diva有許多不同之處。
Calibre是一套類似Diva的驗證軟體,但其嚴謹度與考靠性遠優於Diva,這也是大家為何要使用Dracula的原因,但Dracula的操作不易,且無法做on-line的驗證。
但Calibre改進了這些缺點,不但操作簡易,更可搭配Virtuoso或其他layout軟體做線上的驗證,由於Calibre的已被大多數的公司所採用,因此CIC也將轉向支援Calibre的技術而漸漸取代Dracula。
本實習的目的是要將前一實習的電路,經過Calibre的佈局驗證後,以便能將此Layout送去製造。
而本實習將延續實習四的Layout為實例,藉此介紹整個Dracula的操作流程。
II•DRC(Design Rule Check):1•建立子目錄、拷貝calibre_035.drc檔及撰寫DRC的主要檔案:<i>因為作DRC佈局驗證時會造出非常多檔案,因此在此強烈建議建立一個屬於此Layout作DRC時之新目錄夾,也就是說在你的根目錄下鍵入mkdir 0.35然後再進入0.35的資料夾內,即鍵入cd0.35,再鍵入mkdirdrcnand3,建立一個名為drcnand3的子目錄 。
..<ii>先進入/avanti/Lab610/avanti/Lab/610/test/lab/drc/目錄下再利用filemgr &或拷貝指令cp ,將calibre_035.drc 拷貝至你的工作目錄底下。
<iii>為配合Layout ,因此在作DRC 驗證時必須利用編輯軟體(ex Vi 、textedit….),編輯下面的檔案並存為drc_rules的檔。
2•將Calibre 載入Virtuoso<i>在CIW 視窗中鍵入Load(“/usr/mentor/Calibre_ss/cur/lib/caliber.skl”)或在根目錄下建立一個自動執行檔( 請注意大小寫 ) 並存為.cdsinit Load(“/usr/mentor/Calibre_ss/cur/lib/caliber.skl”)你能你<ii>這樣當我們啟動Virtuoso時工作列便會有caliber的功能3•建立*.gds檔:在CIW中將nand3的layout轉出nand3.gds,並將nand3.gds存放在之前所建立的drcnand3的資料夾中4•執行calibre DRC:<i>點選Virtuoso工作列中的calibre選擇其中的Run DRC便會出現calibre DRC的主視窗<ii>設定Rules:先點選主視窗中Rules,設定之前寫的drc_rules為Calibre-DRC Rules File記得要將Rule載入,再來設定Calibre-DRC Run Directory,如果一切設定皆為正確,字的顏色會變成綠色,相反的若有錯誤則會呈現紅色。
如果drc_rules有問題時可以點View直接修改。
<iii>設定Inputs:將drc_rules Load進去之後layout的路徑將會自動指到nand3.gds<iv>設定Outputs:如果沒有刻意去改變的話,calibre會自動將輸出檔的檔名改成以Primary Cell名字為依據的檔案,但你也可以修改為自己需要的名字。
<v>Run DRC與結果:我們可以點選工作列上的Z去選擇zoom to highlights 這樣當我們點選DRC RVE中的錯誤01 或02時再去點選工作列上的H這樣Virtuoso就會自動Zoom In 到有Error的地方。
d rc_re po r t常常可以提供相當多且容易了解的訊息,所以對於除錯有很大的幫助,所請大家多多利用d rc_re po r t的訊息來幫忙除錯<vi>當我們修改完la yout時在依照上面的流程r un DRC即可不用再轉出n a nd3.gds檔,當你的DRC RVE的圖顯示0 Error時,這就表示你所畫的layout 已經通過DRC的檢驗III•LVS(Layout Versus Schematic):1•建立新的子目錄、拷貝Calibre_035.lvs以及建立一個lvs_rules:<i>同樣地,在執行LVS之前強烈建議先建立一個轉屬於此Layout在執行LVS時所使用的新子目錄,以本實習之實例為例,本實習此處所建立的新子目錄為lvsnand3<ii>將執行LVS中重要的Command File―Calibre_035.lvs (在/home25/train/train25/lab6_calibre 底下)拷貝至此新建立的目錄下。
<iii> 利用textedit建立一個lvs_rules的LVS檔如下圖。
LAYOUT PATH 與 SOURCE PATH最好寫絕對路徑。
呼叫Command Fail<iv>把實習一的list拷貝至你所建立的新目錄下與Calibre_035.lvs和lvs_rules放置在一起,此時要修改list的內容,把原本的list:修改為與Layout相同的model name (pmos=P nmos=N) 及把vdd!與gnd!的驚嘆號刪掉。
2.執行calibre LVS:<i>點選工作列calibre中的Run LVS便會出現calibre LVS的主視窗<ii>選擇lvs_rules為Calibre-LVS Rules File記得將其在載入進去。
<iii>再次確定input 、output與 run control是否有誤,千萬不要勾選input中的Import netlist from schematic viewer如果全部都正確,所有按鈕將呈現綠色,此時按下Run LVS就會開始做LVS。
4.LVS的除錯<i>當我們的LVS有誤時在RVE中我們可以看見錯誤訊息RVE的使用方式就如同windows中的檔案總管<ii>除了RVE之外我們還可以使用lvs.rpt來除錯首先我們會在lvs.rpt中看到一個叉,代表電路有誤,下方Error訊息會列出錯誤大概是哪一方面的錯誤,例如上圖的訊息表示元件的屬性有誤。
我們可以接著往下看,所有的接點皆正確,元件數目也對,只有在PROPERTY ERROR的地方因為M15的l不一樣而造成錯誤。
<iii>當修改完成之後再做一次LVS如果RVE上沒有錯誤訊息,而且在lvs.rpt上出現一個笑臉及勾勾的話就代表你的LVS已經完成了。
IV•LPE(Layout Post Extract):1•建立新的子目錄、拷貝及修改Calibre_035.lvs、lpe.cmd、rules、t035s4ml.res以及建立一個lpe_rules:<i>同樣地,在執行LPE之前強烈建議先建立一個轉屬於此Layout在執行LPE時所使用的新子目錄,以本實習之實例為例,本實習此處所建立的新子目錄為lpenand3<ii>將執行LPE要的Command File - Calibre_035.lvs、lpe.cmd、rules及t035s4ml.res(在/home25/train/train25/ lab6_calibre 底下)拷貝至新建立的目錄底下。
<iii>修改lpe.cmd與建立一個屬於此Layout的lpe_rules修改lpe.cmd呼叫檔案的路徑、改成自己檔案位置的絕對路徑再來利用textedit建立lpe_rules這個在Calibre上做LPE的檔案,如下圖所示。
因為做LPE需要LVS時的檔案所以必須將之前做LVS的檔案呼叫進來。
<iv>把LVS時修改過的的list拷貝至你所建立的新目錄下與Command File放置在一起。
2.執行calibre LPE:<i>點選工作列calibre中的Run PEX便會出現calibre PEX的主視窗<ii>選擇lpe_rules為Calibre-LPE Rules File記得將其在載入進去<iii>Output通常會有誤,因為它會要你選哪些NET不去做LPE,但今天我們每一條線都要取RC,因此不要將這個選項勾選。
<iv>因為LPE會產生一個SPICE的檔案,所以要替你的SPICE檔案命名。
<v>當全部的檔案都設定好之後就可以執行LPE了,按下Run PEX Calibre就會開始做LPE了,做完之後就會產生三個檔案,*.dist *.dist.pex *.dist.NAND3.pxi3.驗證電路特性<i>將*.dist改成*.sp做適當的修改後加上訊號去驗證你的電路特性。
<ii>將.subckt nand3去掉、include 的路徑要設定正確,加上訊號之後(轉出之後節點很多,因此我們找其中一點給訊號即可,例如A點我們及可以找N_A_MM3__2_g來給信號,N_ A_MM3__2_g的節點是指A節點在MM3_2這個的閘極的點),利用HSPI C E去模擬。
<iii>模擬結果在取出RC之後我們發現RC對於電路有一定的影響Homework 6將Homework 2所設計之D-type flip-flop layout,用Calibre的DRC、LVS驗證,最後經過LPE後,再與Homework 2之netlist 所做之模擬比較。
【Time step請盡量設小一些,才能看出不同】。