More Website Templates @ Templates.com!
技術(shù)優(yōu)勢(shì)
Latch up rule 難點(diǎn):
- 在 IC設(shè)計(jì)規(guī)則中,我們經(jīng)常遇到有關(guān)Latch up rule的描述,這些規(guī)則由于不太容易在DRC Code中實(shí)現(xiàn),因此,大部分Foundry給設(shè)計(jì)工程師的建議是:通過“目視”的手段來手工檢查這些規(guī)則,這給設(shè)計(jì)留下了一些隱患。
- Latch up Rule最常見的規(guī)則是“隔離”或者“擋住”問題,如下:

- 該規(guī)則要求在IO區(qū)域到內(nèi)部區(qū)域必須有一個(gè)完整的Guard Ring隔離開,上圖中左邊圖形是符合設(shè)計(jì)規(guī)則的,而右邊圖形是不符合設(shè)計(jì)規(guī)則的?雌饋硭坪鹾芎唵,但是,由于通用的DRC工具只支持2個(gè)layer的相互關(guān)系檢查,不支持3個(gè)layer的幾何操作,而隔離問題一般都是要求layer A與layer B之間必須有l(wèi)ayer C的隔離,它是一個(gè)典型的3 layer操作,該如何解決呢?除了正對(duì)方向的隔離問題,斜線方向的隔離也是常見的規(guī)則,如下:

- 上圖中,從IO區(qū)域到內(nèi)部區(qū)域不是正對(duì)的方向,而是斜線的方向,規(guī)則要求二者之間也要有Guard Ring隔離。可以看到,豎向的隔離層把虛線斜線區(qū)域全部隔離開了,符合規(guī)則。而橫向的隔離層圖形長度不夠長,沒有完全把IO到內(nèi)部區(qū)域隔離,需要報(bào)錯(cuò)。那么,斜線的隔離檢查又該如何做呢?除了IO區(qū)域與內(nèi)部區(qū)域是否有Guard Ring隔離的問題,同時(shí)隔離的Guard Ring還有順序的問題,如下:

- 左邊圖示從IO區(qū)域到內(nèi)部區(qū)域是先P Guard Ring,后N Guard Ring,其順序是正確的,而右邊圖形順序反了,是不符合規(guī)則的。順序問題該如何檢查呢?不僅是IO區(qū)域到內(nèi)部區(qū)域需要有隔離規(guī)則,內(nèi)部區(qū)域的mos管如果total width比較大,同樣也需要有隔離規(guī)則,如下:

- 左圖是一個(gè)total width超過了一定范圍的NMOS管,它右側(cè)首先保證有一個(gè)Guard Ring把它與pmos管隔開,同時(shí)規(guī)則還要求pmos左邊還要有一個(gè)VDD contact的pickup把其與Guard Ring隔離。右側(cè)圖形,VDD contact的位置不對(duì),沒有位于pmos管與Nch之間,因此不符合設(shè)計(jì)規(guī)則。總結(jié)這些規(guī)則的共同點(diǎn),“隔離”或者“擋住”問題是Latch up最基本的檢查,所謂擋住就是指在layerA, LayerB之間檢查是否有l(wèi)ayer C的圖形擋住。
- 需求:提供一個(gè)三layer輸入的基本命令。
- 常用的DRC工具只提供1個(gè)layer或者2個(gè)layer的檢查命令,不提供三layer輸入的檢查命令。 如果利用DRC的多個(gè)命令組合來生成上述命令,由于普通的DRC命令會(huì)將不同圖形的結(jié)果連成一片,會(huì)導(dǎo)致報(bào)錯(cuò)結(jié)果無法區(qū)分具體的區(qū)域,失去了檢查的意義。如下圖所示:

- 上圖中,黃色圖形是IO區(qū)域,紅色圖形是內(nèi)部區(qū)域的mos管,要檢查在黃色圖形與綠色圖形之間在200um范圍內(nèi)是否有一個(gè)綠色的圖形被隔離開。
- 普通的DRC命令方法是:首先把紅色圖形和黃色圖形做一個(gè)間距為200um的檢查,把左右的報(bào)錯(cuò)結(jié)果組合成一個(gè)或多個(gè)多邊形圖形,然后判斷這個(gè)多邊形圖形是否被綠色圖形隔斷了。
- 上述方法的問題是: 當(dāng)綠色圖形只要位于200um的范圍內(nèi)隔離了某幾個(gè)mos管,就會(huì)被判定為把所有的mos管都隔離開了。上圖中的綠色圖形與黃色圖形之間還有幾個(gè)紅色mos管沒有被實(shí)際隔離,但是DRC Code的間距檢查由于把結(jié)果連接成了一個(gè)大片的圖形,它無法判斷方位,只能判斷這個(gè)大片的圖形是否有被綠色圖形切開,因此出現(xiàn)了誤判。
- 有些DRC工具的間距檢查提供了Shield的選項(xiàng),試圖只把最近的間距圖形報(bào)錯(cuò),不去把所有符合間距錯(cuò)誤的圖形都報(bào)錯(cuò)出來,試圖避免這個(gè)問題。但是,Shield的選項(xiàng)是專門為了2層圖形的檢查設(shè)計(jì)的,它不是為了3層圖形檢查設(shè)計(jì)的。因此2層圖形檢查的結(jié)果輸出是“邊”,而不是圖形。作為“邊”是無法參與后續(xù)的3層圖形操作的。如果把“邊”再轉(zhuǎn)換為很細(xì)的小圖形去做后續(xù)的運(yùn)算,則又陷入了“邊”形成圖形后連接成一片大的圖形,無法區(qū)分方位和具體位置的問題,從而出現(xiàn)誤判。
- 因此,必須尋找一種方法:它可以把2個(gè)layer之間被隔離的圖形準(zhǔn)確找到。這個(gè)方法實(shí)現(xiàn)困難嗎?為什么大部分Foundry沒有提供這樣的檢查?國內(nèi)只有個(gè)別Foundry給用戶提供了該問題的解決方案,他們的方案為什么采用了helmet的設(shè)計(jì)思路?該思路可以推廣到其它Foundry嗎?如果某些Foundry不提供該方案,IC設(shè)計(jì)公司可以自行寫DRC Code實(shí)現(xiàn)嗎?如何實(shí)現(xiàn)?
- 上面我們提到:為了解決Latch up rule中的隔離或者擋住問題,必須尋找一種方法:它可以把2個(gè)layer之間被隔離的圖形準(zhǔn)確找到。

- 如上圖所示,在左上的Nch Transistor W > 200um的大管子與坐下的Pch小管子之間必須有一個(gè)N+ Guard Ring將二者隔離。
- 前文還曾經(jīng)提到,目前通用的DRC工具暫時(shí)不提供類似的檢查命令,為了解決該問題,我們自定義了一套與Latch up rule檢查相關(guān)的命令,該命令就是helmet系統(tǒng)的主要功能。Helmet系統(tǒng)可以嵌于主流的DRC工具中運(yùn)行,結(jié)果報(bào)錯(cuò)形式也與主流DRC工具兼容。

- 上圖中黃色圖形是total width大于200微米的N型大管子,紅色圖形是p型小管子,要檢查它們之間是否被綠色的N+ Guard Ring阻擋。
- 系統(tǒng)首先定義了一個(gè)關(guān)鍵字:
- a. 隔離命令檢查關(guān)鍵字: FindClosestRegion
- – 格式:FindClosestRegion LayerA LayerB Distance
- 1. LayerA, LayerB: 圖形層
- 2. Distance: 兩層圖形間的最小檢查距離
- b. 功能: 尋找LayerA與LayerB的最近的圖形之間的垂直投影區(qū)域,如果LayerA與LayerB之間有多個(gè)圖形,只尋找最近的圖形。輸出他們之間的區(qū)域。
- 如上圖所示,F(xiàn)indClosestRegion的結(jié)果就是圖中的黑色虛線,它的特點(diǎn)是:任意2個(gè)虛線都沒有交叉,虛線僅僅是layerA與layerB的最近的投影區(qū)域,即使在Distance范圍內(nèi)有多個(gè)圖形,也僅僅找到相鄰圖形區(qū)域即可。
- 一旦得到了FindClosestRegion的結(jié)果,下一步的操作就比較簡單了:為了判斷FindClosesestRegion的區(qū)域是否被擋住,用這個(gè)區(qū)域的結(jié)果減去擋住圖形,如果擋住圖形被割斷成2個(gè)圖形,表明被擋住了,如果仍舊為一個(gè)圖形,就說明沒有被完全擋住。
- 第一步: 找到最近的FindClosestRegion
- WideClosestPGateRegion {
- FindClosestRegion pGate WideNGateExtent < EsdDistance
- }
- 第二步: 用第一步的結(jié)果減去阻擋層
- rule4_first {
- RemainRegion = WideGateClosestNGateRegion NOT nwell_contact_sz
- WideGateClosestNGateRegion Enclose RemainRegion < 2
- }
- 下面是一個(gè)典型的報(bào)錯(cuò)實(shí)例:

- 其中中間的是一個(gè)N型的大管子,上下各有幾個(gè)P型的小管子,要檢查它們是否被nwell contact的ring阻擋。
放大上方的報(bào)錯(cuò)圖形,可以看到:

- 其中紫紅色報(bào)錯(cuò)區(qū)域顯示,上方的pmos沒有被一個(gè)N+ Guard Ring隔離,因此報(bào)錯(cuò)。
另外一個(gè)報(bào)錯(cuò)是:
- 上圖中的灰色高亮報(bào)錯(cuò)原因是:pmos管雖然被N+ Guard Ring隔離,但是由于N+ Guard Ring的nwell圖形沒有與pmos公用一個(gè)nwell,因此不符合要求,也要報(bào)錯(cuò)。 上邊還有2個(gè)pmos,它們沒有報(bào)錯(cuò),原因是:它們的N+ Guard Ring都與pmos共用了一個(gè)nwell,符合要求。 除了正對(duì)的隔離要求外,Latch up Rule還要求在斜線方向也要有隔離阻擋。
- 如上圖所示,需要判斷綠色與紅色圖形之間是否被藍(lán)色圖形在斜線方向隔離。 為了實(shí)現(xiàn)斜線隔離阻擋檢查命令,Helmet系統(tǒng)通過2條組合命令來實(shí)現(xiàn):
- 步驟1 : SeparateRing nwell_contact > 0 記錄阻擋用圖形的坐標(biāo),供下一條命令使用
- 步驟2: SlantSeparate pGate WideNGateExtent < EsdDistance 檢查在兩個(gè)Layer之間是否有斜線阻擋圖形存在
- 這2個(gè)關(guān)鍵字的核心思想是:每個(gè)斜線圖形是獨(dú)立的“邊”,不要讓斜線圖形生成圖形,否則圖形連接成一片大的區(qū)域后,就無法判斷到底哪個(gè)斜線沒有被阻擋了。

- 上圖是一個(gè)典型的斜線隔離報(bào)錯(cuò),白色線段是報(bào)錯(cuò)圖形,它顯示N+ Guard Ring沒有完全把pmos包圍起來,留出了一個(gè)小缺口,因此報(bào)錯(cuò)。
下面是另外一個(gè)報(bào)錯(cuò)圖示:

- 它顯示:N+ Guard Ring只有橫向的隔離,沒有加縱向的隔離,導(dǎo)致在斜線方向上沒有完全被隔離,因此報(bào)錯(cuò)。
通過以上分析,可以看到,helmet系統(tǒng)通過添加新的關(guān)鍵字,實(shí)現(xiàn)了主流DRC工具沒有解決的正對(duì)阻擋和斜線阻擋的問題。
再看幾個(gè)典型的報(bào)錯(cuò)圖示:

- 上圖是ESD器件都內(nèi)部器件之間本來需要2個(gè)Guard Ring,結(jié)果只出現(xiàn)了一個(gè)Guard Ring,因此報(bào)錯(cuò)。

- 上圖是:由于Guard Ring中間有好多小缺口,導(dǎo)致在斜線方向的阻擋不滿足要求,報(bào)錯(cuò)。

- 上圖是: 要求從ESD器件到內(nèi)部器件的 Guard Ring 應(yīng)該是先P型Ring,后N型Ring,但是目前的圖形畫反了,因此報(bào)錯(cuò)。 除了上述常見的Latch up Rule以外,我們?cè)贓SD/Latch up檢查中還經(jīng)常遇到以下幾類約束,該如何實(shí)現(xiàn)呢?
- 下面我們?cè)倬唧w談?wù)凞RC中的隔離(阻擋)檢查
- 所謂隔離(阻擋)檢查就是檢查在 layer1和layer2之間必須有l(wèi)ayer3將其隔離(或阻擋)。如下圖所示:
- 中間的圖形是一個(gè)layer,上下的圖形是另外一個(gè)layer,這2個(gè)layer必須被某個(gè)layer隔離或者阻擋才符合DRC規(guī)則。
- 當(dāng)時(shí),我們建議觀眾用最簡單的實(shí)現(xiàn)方法:
- 第一步: 找到layer1, layer2距離最近的區(qū)域:FindClosestRegion
- region1 {
- FindClosestRegion layer1 layer2 < Dis
- }
- 第二步: 用第一步的結(jié)果減去layer3,看是否被切割成2個(gè)區(qū)域
- check {
- RemainRegion = region1 NOT layer3
- region1 Enclose RemainRegion < 2
- }
- 不過,也有觀眾提出:我沒有helmet工具,因此無法用你提到的關(guān)鍵字:FindCloestRegion,是否可以直接用主流工具的命令呢?
- 回答是:可以通過比較復(fù)雜的Drc Code操作間接地近似實(shí)現(xiàn)。
- 我們首先先了解Drc Code一個(gè)命令: DFM Space。其用法是:
- DFM Space layer1 layer2 < dis COUNT ==4
- 它的含義是:檢查layer1和layer2的距離是否小于dis,其中COUNT == 4的含義是:如果layer1 , layer2圖形在dis距離范圍內(nèi)出現(xiàn)了Shield的特點(diǎn),則把Shield以外的圖形忽略。
- 上圖中,layer1是A邊,layer2是B邊,藍(lán)色的S是layer1的另外一個(gè)邊,S邊就是Shield圖形,它把間距檢查的某些區(qū)域擋住了,報(bào)錯(cuò)時(shí),被Shield的區(qū)域不被輸出,從而大大減少了報(bào)錯(cuò)個(gè)數(shù),并且為后續(xù)的進(jìn)一步操作留下了空間。
- 利用上述概念,我們可以如下實(shí)現(xiàn)layer1, layer2被layer3阻擋的操作:
- 第一步:
- edge1 {
- X = DFM Space [layer1] layer2 < dis COUNT ==4
- Y = DFM Space layer1 [layer2] < dis COUNT ==4
- }
- 第一步的結(jié)果是把layer1, layer2的最近距離圖形找到,與helmet工具的findCloesestRregion類似,唯一的區(qū)別是:該命令輸出的結(jié)果是邊,而不是圖形。由于結(jié)果是邊,就需要做額外的操作把它變成圖形。
- 第二步:
- region1 {
- regionx = EXPAND EDGE X outside by 0.001
- regiony = EXPAND EDGE Y outside by 0.001
- }
- 第二步的結(jié)果是把邊擴(kuò)展為一個(gè)很細(xì)的矩形。準(zhǔn)備檢查在x與y的矩形之間是否有l(wèi)ayer3被隔離開。
- 第三步:
- no_layer2 = BULK not layer2
- no_laeyr1 = BULK not layer1
- region2 {
- region2 = SIZE regionx by dis INSIDE OF LAYER no_layer2 step 0.03
- }
- 第3步的含義是: 把layer1的邊向外擴(kuò)充dis的距離,但是在擴(kuò)充過程中如果遇到layer2的邊阻擋,就停下來不要再擴(kuò)了。step 0.03的值是layer2圖形寬度的一半。這個(gè)size step的操作就是我們?cè)谇懊嫖恼轮卸啻翁岬降摹皩O悟空跳不出如來佛手心”的操作。
- 第四步: 用第三步的結(jié)果減去layer3,看是否被切割成2個(gè)區(qū)域
- check {
- RemainRegion = region2 NOT layer3
- region2 Enclose RemainRegion < 2
- }
- 看起來,通過上述四個(gè)步驟實(shí)現(xiàn)了helmet工具的FindCloesestRegion的命令,不過,這個(gè)操作隱含著一些問題:如下:

- 上圖中綠色圖形是layer1,黃色圖形是layer2,紅色圖形是layer3。直觀地看,layer1, layer2確實(shí)被layer3隔離開了。
- 但是,在第三步做size操作時(shí),由于綠色圖形的2條邊對(duì)外做size擴(kuò)充后上下2個(gè)圖形連接成了一個(gè)圖形,導(dǎo)致最后做第四步減去layer3時(shí),其結(jié)果還是連接場(chǎng)一片的一個(gè)圖形,不是被分割成2個(gè)圖形,從而報(bào)錯(cuò),出現(xiàn)了偽錯(cuò)。 遇到上述問題,該如何解決呢?
- 一種解決辦法是:畢竟通過上述檢查已經(jīng)能夠查出絕大多數(shù)問題了,剩余的問題由人工來分析,工作量也不是很大。
- 另外一種辦法就是:把上圖中l(wèi)ayer1的豎向的邊分解成很多短邊,每個(gè)短邊中間被一個(gè)0.001的很細(xì)的距離隔斷,即縱向邊的短邊都是沒有相鄰的邊,這樣第三步做size操作時(shí),就不會(huì)把多個(gè)區(qū)域連在一起了。這種方法實(shí)現(xiàn)起來比較麻煩,有興趣的讀者可以自己分析來寫出具體代碼。
- 總結(jié):隔離檢查是DRC檢查中經(jīng)常遇到的問題,由于普通的DRC命令不支持該檢查,用戶需要寫復(fù)雜的組合命令來實(shí)現(xiàn)該功能。用戶經(jīng)常的問題是:為什么幾大EDA公司的工具明明知道有該需求,就是不通過一條簡潔的命令來實(shí)現(xiàn)呢?
- 答案是:任何自動(dòng)化的功能都是需要權(quán)衡實(shí)現(xiàn)代價(jià)和帶來的收益的。EDA公司經(jīng)過仔細(xì)分析發(fā)現(xiàn):實(shí)現(xiàn)該命令的工作量和難度遠(yuǎn)遠(yuǎn)大于預(yù)期獲得的收益,因此留給用戶自己通過命令組合來實(shí)現(xiàn)。
- 難道用戶就沒有辦法使用簡單命令實(shí)現(xiàn)上述需求嗎?幸運(yùn)的是,有一個(gè)EDA公司提供了該命令的簡單實(shí)現(xiàn),這就是天津藍(lán)海微公司提供的helmet工具。更加幸運(yùn)的是,針對(duì)國內(nèi)的Fabless設(shè)計(jì)公司,helmet工具提供了為期3個(gè)月的免費(fèi)使用期,具體日期為:2018年10月1日至2018年12月31日。
DRC中的隔離(阻擋)檢查: