prog_linenum

顯示具有 IC Layout-Verify-DRC 標籤的文章。 顯示所有文章
顯示具有 IC Layout-Verify-DRC 標籤的文章。 顯示所有文章

2021年6月17日 星期四

DRC(Design Rule Check)

 在我們的layout(佈局圖)驗證環節中,通常我們Floorplan完(也就是Device擺放完)第一步就會先驗證DRC,先了解Layout(佈局圖)是否有違反製程規則,違反的部分會先看看能不能清除,直到剩下無法解乾淨的Rule才會進行Route(拉線),最後走完線,再進行DRC驗證,確定走線部分的Rule也沒有問題,才會進行LVS驗證。

那我們首先來看DRC的驗證流程,以下介紹為使用Calibre nmDRC

Calibre nmDRC Data Flow(擷取自Calibre® Verification User’s Manual)
首先我們會需要rule file(command file),這個文件通常會由Foundry(製程廠)提供的PDK(Process Design Kit)裡取得,依照各家Design House內部長久累積的製程經驗,可能會修改或添加rule進去,所以rule file的內容主要就是利用SVRF(Standard Verification Rule Format)去對DRC作一個描述運算,來讓Calibre nmDRC讀的懂規則,接下來就是給它layout database,也就是我們佈局圖透過Stream Out轉出的檔案,格式為GDSII or OASIS,那我們就可以來進行驗證,驗證結束後會轉出所謂的results database跟summary report等驗證報告。

那驗證方式大致上可以分為兩種型式,一種為Command Line,就是在Terminal上打上指令進行驗證,另一種為GUI(Graphical User Interface),比較人性化的介面驗證。

一.Command Line 

    1.使用vim or gvim(文字編輯器)去修改我們的rule file,找到以下4行

        LAYOUT PATH "/tapeout/gds/test.gds"(存放GDS檔案的路徑)

        LAYOUT PRIMARY "test"(待驗證的cell name)

        DRC RESULTS DATABASE "./test.db" ASCII (需使用Calibre RVE開啟的檔案)

        DRC SUMMARY REPORT "./test.sum" (文字檔報告)

輸入
        
輸出

    2.下指令執行Calibre nmDRC
        $ calibre -drc rule.file

二.GUI介面操作
    1.在Termial打開Calibre Interactive
        $ calibre -gui &





    2.點擊nmDRC
        


    3.如果有儲存runset就可以load 之前的設定,第一次操作就先關掉

    4.填入DRC Rules File,並點擊一下Load

    5.Inputs填入gds位置與Top Cell Name
    6.Outputs調整Database輸出跟Summary輸出
   
    7.點擊Run DRC,就會開始跑了

個人比較喜歡使用command line的方式去做驗證,因為可以寫一些Shell script讓資料比較好整理,VIM用習慣,感覺上操作效率會比GUI快很多,不過還是推薦兩種都要會,把核心觀念了解,其實非常簡單,新手常常會覺得gui操作比較容易,但其實command line 用熟,比較好理解
DRC整個流程的觀念。

2021年5月21日 星期五

IC layout工作心得介紹

關於這個工作的介紹,我覺得彼得先生的影片介紹的淺顯易懂

文組也能學 半年就上班 晶片佈局工程師

我蠻喜歡"建築師跟建築工人"的這個比喻
有興趣可以先去看看彼得先生的影片了解

以下為我個人工作兩年的菜雞發言😂
其實白話一點我們的工作內容主要就是配合R&D(research & development) 產出電路佈局圖並驗證是否正確,所謂的R&D在我們這邊指的就是電路設計者。
實際上只需要:
1.能看懂電路元件,了解元件需要哪些的layer(圖層)
2.佈局設計規則的了解
3.按照R&D需求擺放元件並完成接線
雖然工作內容簡單,但實際上對於非理工背景的人要學的東西也是不少
不過我們不必害怕這些學科概念,只要願意花點時間去了解其實並不沒有那麼艱深
只要想想投資報酬率,這真的是一份CP值蠻高的工作

我認為對於一份工作的熱情,來源在於了解自己為何而戰
對於IC layout來說當然就要知道我們在整個晶片的生產到實際產出產品的過程中,自己扮演了什麼樣的角色。(什麼是晶片?晶片設計到生產的過程)

什麼是晶片?圖片擷取自國家實驗研究院一文內圖
晶片中心開發之系統晶片(中間為裸晶,外圍為打線封裝)


在現代生活中,我們早就離不開晶片,幾乎所有電子產品都有使用到,依照功能及需求會使用不同種類的製程技術去完成我們的晶片,所以做為一個IC layout,我們可能會因為所處的公司或部門不同,而需要使用不同的製程完成晶片佈局,所以我們對於製程也要具有一定程度的了解,像是"薄膜→光阻→顯影→蝕刻→光阻去除"這種利用我們的layout圖轉換為光罩,再將光罩上的圖案顯影在晶圓上的技術,那了解了layout圖最後會變成我們的晶片,那我們畫的品質好不好,其實就會反應在這上面,當然這當中會透過很多層驗證把關,所以如果真的畫得很爛,驗證也是不會過的。
layout的工作主要就是協助電路設計者完成佈局跟這些驗證,也就是說我們是提供佈局的服務,而不是反客為主,對於電路設計有過多的意見,當然我們可以提供一些自己的想法給R&D參考,但真正設計這個晶片功能的不是我們,那不屬於我們的工作範圍,一個好的layout可以按照R&D的要求,設計出符合特性的佈局,但這些需要慢慢累積的經驗,前期我們都是需要多多跟R&D討論佈局跟走線方式,才有辦法產出Layout,而且即便是類似的電路也有可能因為不同的考量而產生不同的佈局方式,這些都需要R&D去決定,然後由我們實現,所以跟R&D的溝通非常重要。

那我們會需要具備那些知識呢?
1.V=IR,從小聽到大,大家一定都聽過的歐姆定理
2.了解電路基本元件原理,例如:電阻,電容,電感,二極體,BJT(bipolar junction transistor),MOS(bipolar junction transistor),了解原理才能理解layout圖為何是長這樣。
3.看懂電路,基本上只要看的懂元件符號,還有一些接線的表示法就可以了
4.熟悉我們吃飯的工具
    作業系統 : Linux,通常我們的tool都會安裝在這套系統底下
    文字編輯器: VIM,多學一點功能,工作效率翻倍
    layout tool: Cadence Virtuoso 或 Synosys Laker,不管新手時期學哪一套,最終其實兩套都應該要會使用
    verify tool; Mentor Calibre,有很多輔助驗證的功能
5.良好的溝通能力,最主要是要聽得懂RD的要求,最好能直接用layout跟R&D討論問題
以上五點,通常有去上過自強或是經濟部工業局的課都會知道

如果還想要更精進自己,我們可以分三個方向
1.學科概念
    懂得越多越能理解電路佈局原因,而且能改善跟R&D溝通的障礙,所以這方面有空可以多累積
2.Tool功能
    相信即便上完半年的課程,你也不可能百分之百用到每個功能,其實還有很多你意想不到好用的功能等著你去發現,加上科技日新月異,我們的EDA(Electronic design automation)開發工具也無時無刻在進步,基本上這方面的能力,直接的等於我們的做事效率,當然這邊不限於Layout工具,包含作業系統,VIM甚至去學習一些程式語言,都能對工作上幫助很多。
3.實作應用
    基本上這方面的能力,只能透過實務經驗,跟前輩或網路上的一些討論區,去多看多聽多學,慢慢就會越來越好。
我認為這個工作只要你肯學,就會有你的一個位置,學習態度上只要有聽不懂的專有名詞,就馬上問,問不到人就問google,一定有你要的答案,當這些東西積累的越來越多,你就能跟其他人做出差距,不然請仔細想想一個簡單的問題,如果做一年跟做三年以上的layout能力都差不多,那老闆為什麼不用新人就好,便宜又耐操,雖然這工作門檻低,但也不是隨便就能做的工作,但若肯投資自己多點時間學習,就會在面試或調薪的時候回報你。

那以上就是我自己的一點工作心得介紹,如果有哪邊講的不夠清楚或不對的地方也歡迎留言討論,日後還會在這邊發布一些工作上學到的一些技巧筆記,謝謝看到最後~