1. 程式人生 > >DC生成.lib的步驟以及相關命令

DC生成.lib的步驟以及相關命令

  • 首先需要澄清一點的是,.lib不是library的縮寫,而是liberty檔案的縮寫,關於liberty檔案,可以參考另外一篇筆記ELC工具的使用.md中關於liberty格式檔案的說明。

  • 另外需要說明的是,需要區分兩個Encounter工具,第一個是SOC Encounter,這個是拿來做佈局佈線的,而我們這裡生成.lib的Encounter,全名叫做Encounter library characterizer,縮寫ELC,當然,具體的資訊也可以參考上面引用的另外一篇筆記的內容

  • 目前,我們是使用ELC來生成liberty,然後用dc來進行.lib到.db的轉換操作,最終dc綜合還是後面的pt時序分析都是直接使用的.db檔案

1.Encounter生成liberty檔案

在ELC工具的使用筆記中,已經對ELC生成liberty檔案的指令碼以及流程都做了詳細的說明,這篇文章主要針對一個大致的流程進行說明,不進行細節的討論。

1.1 準備

假如Encounter執行報錯,則首先需要執行一下以下命令:

source /tool/etc/usersetup/cadence_temp.csh

### 1.1.1 所有cell的寄生引數

1.1.1 所有cell的表徵網標

首先,我們有三個檔案totalcell.spi.max,totalcell.spi.typ,totalcell.spi.min,分別對應worst typic以及best,這三個檔案的被稱作表徵網表,詳細的資訊可以參考 ELC筆記。這個是生成.lib檔案的基礎,目前使用的是Calibre xRC來提取

抽取。

Calibre xRC是Mentor Graphics公司著名的驗證工具Calibre的寄生引數提取模組,它具有豐富的輸出格式,支援數字、模擬、射頻及混合電路的寄生引數提取。Calibre xRC被主流foundry所支援,具有良好的精確性,特別是對於模擬和射頻電路,輸出能夠反標回主流的模擬工具中,滿足不同的設計流程。使用Calibre xRC進行寄生參量提取時,選擇calibreview的輸出形式,可以非常方便的在Virtuoso的ADE中直接進行後模擬,以及進行前後模擬結果的比較。對於習慣Virtuoso圖形化介面進行模擬的使用者,採用Calibre view的輸出可以讓版圖,後模擬非常平滑的連線在一起,讓設計流程更順暢。Calibre xRC還提供XCELL的特殊提取形式能夠避免採用Design Kit方式設計的器件(比如PCELL、RF)內部寄生參量重複提取,確保模擬結果準確無誤,降低設計流片失敗的風險,提高晶片的良率。

具體的表徵網表提取這裡不進行討論,詳細的可以參考Calibre xRC抽取表徵網表的筆記以及以下兩個百度文庫 :

1.1.2 初始寄生引數網表的修改

最開始提供的寄生引數網表需要進行一定的修改才可以使用,修改內容以及步驟如下:
  • 註釋掉include打頭的行
%s/include///include/g
  • 移動```ends cell_name到帶有simulator lang …行的之前

  • 註釋掉ANTENNA2_GT50相關的內容

1.1.3 修改setup.ss檔案

現在,要針對不同的process corner修改setup.ss中的PVT引數,關於工藝角process corner以及pvt的簡介可以參考另外一篇筆記工藝角,PVT, TT,SS,FF,FS,SF.md的說明。

因為GT5230需要三個工作電壓段分別進行STA才能PASS,因此它的setup.ss有三個,但是一般的design只有一個setup.ss,它的設定大致如下 針對GT5232,其工作電壓範圍為1.75.5,溫度範圍為-40125

  • process typical
vlotage = 3.0;
temp    =  25;
Corner  =  TT;
  • Process worst
voltage = 1.5;
temp    = 130;
Corner  =  SS;
  • Process best
voltage = 6.0;
temp    = 130;
Corner  =  FF;

GT5230的設定如下: best : 4.0V5.0V6.0V worst : 1.5V2.2V3.0V typic : 2.25V3.3V5.0V

最終測試出來1.5V雖然針對SPI來說速度是最慢的5M,但是實際上的worst的corner。只要這個corner的STA過了之後,其他的都可以PASS了。因此可以看出這裡的worst corner設定的還是有道理的,不能僅僅看頻率最高就是worst的。

在PVT上,只需要設定10%左右的margin即可。

1.1.2 開始生成liberty檔案

啟動檔案autorun的內容如下:
cp totalcell.spi.max totalcell.spi
cp model_worst.sp model.sp
rm -fr worst.ipdb
elc -S setp2_worst
alf2lib -alf worst.alf -lib worst5230.lib

首先,這是一個生成worst的library的autorun指令碼,如果要生成best的lib的話,需要對本指令碼進行修改。第一二行都是在進行檔案備份,第三行刪除臨時檔案,第4,5行開始執行library的生成工作。 分析啟動檔案autorun可知, 環境設定包含以下幾個檔案,需要針對實際的design需求對其進行修改: 啟動檔案autorun的細節參考ELC工具的使用說明,在修改完所有的檔案

1.2 開始生成library

修改完setup.ss之後,基本的準備工作就做完了,然後使用autorun就可以直接生成.lib檔案了,當然,要生成worst,typical,best的lib,需要分別執行三次autorun。

1.3 後續工作

1.3.1 新增實際的area屬性

生成好的liberty的每個cell是沒有對應的area的,所以生成完之後需要執行add_area的指令碼來為相應的lib新增area資訊。

2.使用DC生成db檔案

為每個cell增加area引數後,.lib的生成工作也就完成了。現在需要使用DC來生成相應的.db檔案,以供後續使用。執行以下指令碼即可生成db檔案:

#1.開啟dc_shell
dc_shell

#2.在dc_shell下輸入以下指令碼,其中*_name是根據實際design進行修改
read_lib lib_name.lib
write_lib -f db worst -output db_name.db

當生成best的corner的db時,將上述中的worst改為best即可,typical類似。

3.其他

寄生產生採用spectre格式,生成的lib也是此格式,有時候模擬需要對應spice格式,因此,下面對