發表文章

xRC / xACT 如何抽出對不同ground 的寄生電容?

圖片
 xRC 對地的寄生電容, default 只會計算導體層對substrate 的寄生電容. 所以預設的ground 節點名稱為 "0". 但是如果designer 做的是multi ground 的design, 會希望看到net 對不同的ground 之間的寄生的電容. 這時候就要使用 PEX GROUND LAYER 這個指令. PEX GROUND LAYER  後面放的是WELL layer 或SUBSTRATE layer. 依據LVS中所定義的CONNECT,xRC 會自動取得這個WELL layer 所連接到的net name. 如下圖 : 1. Default xRC 抽出 net A 對 0 5f 2. 如果設定 PEX GROUND LAYER NWELL PSUB     A 對 0 的電容會被轉換成:     cc1 A AVSS 2f       => 透過PSUB 計算     cc2 A DVSS 3f       => 透過 NWELL 計算 重點是 total 的電容 還是5f 

為什麼xRC 會抽出帶有NOXREF的net?

圖片
 NOXREF 的意思是no cross reference, 也就是layout 與souce沒有對應的net. 通常就是layout 上有,但是source netlist 找不到的net. 例如 source netlist 定義了 2 歐姆的電阻: 頭尾接 A B 兩個net. 但是Layout 畫了兩顆1 歐姆的電阻串聯. 兩顆電阻的連接點,就是layout 有 而source 沒有的net. 另外如果 layout 上有一些dummy device, 雖然在LVS 比對時是過濾掉的. 但是xRC 抽出來時, 還是會寫出來,就有可能帶有NOXREF 的相關net . 想要控制xRC "不要"寫出NOXREF 可以用, PEX NETLIST NOXREF NET NAMES NO

xRC 或 xACT 抽出來的電阻太小時如何debug?

電阻太小如何debug? 這裡所討論的xRC或xACT 抽出來的電阻太小. 是指0.0幾歐姆小的那種電阻太小. 通常一堆metal 並聯加上via array, 就會降低電阻值. 不過有時候desiger 會發現,例如VDD PAD到每一個MOS 的bulk pin 電阻值都一樣,分不出遠近的MOS. 而且電阻值很小. 就是我們今天要討論的 A) 1. 在xRC 的 -pdb 加上 -pdb_info 2. 查看log file 有沒有IDEAL connection 3. 檢查LVS rule 中的CONNECT 定義 IDEAL connection 是一種LVS 沒問題, 但是會影響xRC 抽電阻的定義 例如: PTAP = COPY TPDIFF CONNECT TPDIFF PTAP 然而在xRC rule 中定義了 TPDIFF 要抽電阻 這時候抽出來的電阻,就會因為PTAP 又全部short 在一起 讓電阻值變得超小. B) 另一種可能的狀況是 實際上要抽電阻的layer 跟你想像的不同 例如 你覺得 layer METAL1 的電阻太小 可以用 DRC rule COPY_METAL1 { COPY METAL1 } 執行DRC 再用RVE 貼回layout tool 中  看跟你畫的metal1 是否吻合. 有時候LVS rule 中的布林運算沒有寫好,  會產生奇怪的圖形, 也會造成xRC 抽出來的電阻怪怪的說.

抽出來的電阻太大時,如何debug?

 上一集,我們談到電阻有問題時的debug. 這一集,我們來看一下如果抽出很大的電阻時, 如何debug? 首先跟上一集一樣: 1. 將所有RC Reduction 的command 先關掉       例如PEX REDUCE MINRES COMBINE 5 2. 在PEX NETLIST 後面加上RLAYER RLENGTH RWIDTH       重抽一次 只要抽電阻就好      下 -pdb -r 即可.   再找出有問題的電阻是哪個layer 造成的,     RLENGTH / RWIDTH 是否異常? A) metal 層通常是RLENGTH 或RWIDTH 發生異常, 會讓抽出來的電阻過大. 這時候可以使用 PEX FRACTURE_2D 這個指令, 稍微改變一下有問題的電阻地方. 例如有問題的是 metal3 電阻: LAYER MARKER_LAYER_M3 33333      // 使用 33333層 定義一層新的marker layer LVS DB LAYER MARKER_LAYER_M3     // 使用LVS DB LAYER 把這層 marker layer 送到database中 CONNECT MARKER_LAYER_M3     // 定義connectivity 用這層新的marker layer 蓋有問題的metal3 區域, 再使用: PEX FRACTURE_2D metal3 MARKER_LAYER_M3 B) 另外,如果過大的電阻是出現在contact via層 將PEX REDUCE VIA RESISTANCE 設成 OFF 先試試看. 讓每一顆contact 或via 都抽出來.

如果遇到xRC 或 xACT 抽出來的電阻有問題時? 應該怎麼debug?

 1. 將所有RC Reduction 的command 先關掉       例如PEX REDUCE MINRES COMBINE 5       註: xACT 要將 PEX REDUCE ANALOG 設定成 NO 2. 在PEX NETLIST 後面加上RLAYER RLENGTH RWIDTH       重抽一次 只要抽電阻就好      下 -pdb -r 即可.   再找出有問題的電阻是哪個layer 造成的,     RLENGTH / RWIDTH 是否異常? 3. 使用 Calibre RVE 的Parasitic browser 功能      貼回去layout 看是否異常? 如果RLENGTH/RWIDTH 異常, 請回報原廠的AE技師維修.

執行完xRC 之後,想要檢查xRC抽出來的netlist 是否有斷線?

  這裡提供使用 SIMPLE NETLIST 來做比對的方法 :   1.       xRC 也寫出 SIMPLE NETLIST (不帶任何寄生元件,只有原本的device 的netlist) 記得在 rule 中 加入底下這一行 : PEX NETLIST SIMPLE “simple.sp” HSPICE SOURCENAMES 執行完 LVS, 再執行底下這個步驟 : >calibre -xrc -fmt -simple lvs.rule | tee fmt.log   2.       將原本的 lvs rule copy 成 svs.rule SOURCE PATH “simple.sp”  // SIMPLE NETLIST SOURCE PRIMARY top_cell SOURCE SYSTEM SPICE   LAYOUT PATH “output.sp” // xRC抽出來的NETLIST LAYOUT PRIMARY “top_cell” LAYOUT SYSTEM SPICE   LVS SPICE SLASH IS SAPCE NO LVS FILTER R SHORT             // 所有的電阻視為短路 LVS FILTER C OPEN               // 所有的電容視為開路    3.       Netlist 需要修改的部分有 有些 device 在原本的 lvs rule 定義成 M 開頭 , 可是寫出 NETLIST 變成 X 開頭 例如在 LVS rule 中 : DEVICE MP(P) PGAT PO1(G) PSD(S) PSD(D) NWL(B) NETLIST ELEMENT "X...

RC extraction 的軟體, 為什麼有時候會抽出斷線的Netlist?

有時候 circuit designer 會發現跑 po-sim 模擬時出現 NO DC PATH TO GROUND 的錯誤 , 追蹤後發現是 RC extraction 的軟體抽出來的 netlist 有斷線的節點 . 接下來 , 讓我們來討論一下這個情形 .   首先 , 造成斷線的原因 , 這邊整理三個可能發生的原因: 1.       LVS rule 造成的 2.       Layout 中的 pattern 圖形造成的 3.       Tool 本身的 bug   1.       LVS rule 造成的 : RC extraction 的軟體對於 CONNECTION 的定義比較嚴謹 , 基本上是透過 “CONNECT” 這個指令來得知 metal 與 metal 透過什麼 via 連接 . 例如 : CONNECT METAL1 METAL2 BY VIA1 METAL1 與 METAL2 透過 VIA1 連接上下層 .   有些 rule 中 , device 的 pin layer 的 net information 是透過繼承來的或是使用 STAMP , 雖然 LVS 可以跑可以 match, 但是抽 RC 時往往會出現問題 . 這個部份要請撰寫 LVS rule 的朋友們 , 多加注意 .   2.       Layout 中的 pattern 造成的 : 我們都知道 , 寄生電阻的計算公式是 電阻係數乘上線長除以線寬 . (R = RSH * L/W) 所以軟體在計算寄生電阻之前 , 會先處理 layout 圖形 , 把它變成一塊塊長方形 , 通常這個動作叫 fracturing. 在這個過程中有可能因為原本的 pattern 造成 fracturing 之後有縫隙 , 另一個可能是在做 fracture 時 , layout 圖形落在不同階層的 cel...