LVS和DRC check互補
在 ASIC 物理實現(xiàn)中,一旦生成版圖(layout),它必須遵循成功制造的所有設計規(guī)則(Design Rule),并且必須匹配所需設計的原理圖(schematic)。為了在物理驗證中確保這一點,執(zhí)行設計規(guī)則檢查 (DRC) 以檢查layout是否遵循fault-less manufacturing rule。這種 DRC 檢查可提供良好的制造良率并防止制造過程中出現(xiàn)故障,但不能確保layout的正確性。需要確保設計的物理實現(xiàn)與設計的原理圖相同。為此,將layout netlist的電路與schematic netlist網表進行比較,稱為Layout versus Schematic (LVS)。
我以前用的比較多的跑DRC和LVS的工具是Calibre.
圖1 Layout和Schematic示意圖
一般LVS的輸入件如下:
GDS(layout stream file):LVS工具通過GDS提取生成layout netlist,用于LVS比較。
Schematic netlist:用作 LVS 比較的source netlist。
Rule deck file:Rule deck file由執(zhí)行 LVS 所需的指令和文件組成。Rule deck file還包含一個layer definition,這對于提取很有用。
Equivalence file:由cell pairs組成,其中一個來自layout netlist,另一個來自schematic netlist。
LVS Flow
LVS 不是一個簡單地將版圖與電路原理圖進行比較的過程,它需要分兩步完成。第—步“抽取”,第二步“比較”。首先根據 LVS 提取規(guī)則,EDA 工具從版圖中抽取出版圖所確定的網表文件; 然后將抽取出的網表文件與電路網表文件進行比較。需要說明的是:抽取的網表為晶體管級的 SPICE網表,而電路網表為門級的Verilog網表,該門級網表需要結合SPICE模型/CDL模型轉化為SPICE網表,才能與抽取的網表進行邏輯等效性比對。如果兩個網表的電路連接關系和器件完全一致則通過 LVS 檢査。反之,說明版圖存在與電路不一致的地方,需要進行檢査并加以處理或修改更正。
實現(xiàn)“抽取”的主要步驟是網表提取,它可以實現(xiàn)從版圖提取網表,包含連接關系提取和器件提取兩大模塊。連接關系提取模塊的主要功能是標識線網和為線網命名。標識線網是指把金屬、通孔、多晶等半導體劃分為不同的連通集合,從而生成不同的線網。器件提取模塊的主要功能是識別器件、計算器件屬性和輸出網表。
實現(xiàn)“比較“的步驟是網表比較,它包括網表預處理、版圖和原理圖網表比較。網表預處理的主要工作是串并聯(lián)結構約簡,虛擬器件過濾,門電路識別等。在版圖設計中,寬長較大的 MOS 管通常會采用版圖折疊的方法將其等效于多個晶體管的并聯(lián),所以為避免在檢査器件數目和尺寸時發(fā)生錯誤,需要把版圖中折疊的、并聯(lián)或串聯(lián)的器件合并成一個再進行比較。而門電路結構可以作為一個整體對待,以此減少需要處理的節(jié)點數量。
圖2 LVS過程示意圖
完成網表預處理后,則可以開始進行網表比較。網表比較本質上是圖同構問題。圖同構比較的是拓撲結構,不受節(jié)點的物理位置、距離、大小影響。若版圖網表和原理圖網表同構,則版圖上的每一個節(jié)點都唯一對應原理圖上的一個節(jié)點。
圖3 版圖和原理圖比較示意圖
Common LVS issues
LVS errors可以分為兩個大類:
Extraction Errors
?Text short and open
?Device extraction error
?Missing device terminal
?Extra device terminal
?Unused text
?Duplicate structure placement
Compare Errors
?Unmatched nets in the layout/schematic
?Unmatched devices in the layout/schematic
?Property errors
?Port swap errors
Open
具有相同layout text的net的shapes不相交或不接觸導致設計中有open(開路).。Opens 意味著設計中有floating connections. Floating connection會導致芯片的重大缺陷。所以發(fā)現(xiàn)和找到design中的open非常重要。在進入LVS環(huán)節(jié)前,在PnR工具中進行相關檢查很有幫助。
下面的示例顯示了 LVS 工具對設計中open的檢測。該工具生成的報告描述了設計中的open,如以下工具報告片段所示。
圖4 LVS report中的open
Error summary顯示檢測到的錯誤及其數量的總結。對于open,extractor 將open net提取為兩個不同的net,因此layout中的net數量大于schematic中的網絡數量,如報告所示。該報告顯示layout中的net數量以及相應的schematic。schematic net BUF_net_152645,在layout中用兩個net
N_11965140和N_11989743表示(因為open成兩段了),如報告中所述。
此類問題可以通過connet屬于同一net的的layout shape來解決
圖5 layout中的open
Short
如果layout中具有l(wèi)ayout text的layer重疊或相交,將導致short(短路)。設計中short的存在會導致芯片failure。在進入LVS環(huán)節(jié)前,在PnR工具中進行相關檢查很有幫助。
下面的示例顯示了 LVS 工具對設計中short的檢測。該工具生成的報告描述了設計中的short,如以下工具報告片段所示。
當設計中發(fā)生short時,extractor會將short的net extract為單個net,因此schematic中的兩個net只有一個對應的layout net,如報告中所述。N738 和 BUF_net_189972 是short net。
圖6 LVS report中的short
Short可以通過正確地重新繞線來解決。
圖7 layout中的Short
Internal shorts with Macros
在設計中,由于設計的復雜性或不正確的設置,PnR 工具可能會將macro的internal geometries(內部走線)制造short的方式對net進行布線。如果macro的 LEF 中缺少routing blockage,也會發(fā)生這種情況。有時在manual custom routing時,會在自定義routing和macro的內部routing之間創(chuàng)造成short。在 PnR 工具環(huán)境中不容易報告此類short violation。當我們將hard macro的 GDS 與頂層block merge時,short在 GDS 中是可見的。下面是一個片段,顯示了signal net如何錯誤地通過hard macro走線。由于hard macro的internal geometries的存在,因此該layer被block在macro上了。該net將導致macro的internal geometries short。
圖8 外部net和macro內部走線short(PnR tool view)
下面是merge后的 GDS 的片段,清楚地顯示了short。
圖9 外部net和macro內部走線short(GDS view)
生成的報告與上文所述的short報告類似。此示例的報告選段如下。
圖10 LVS report中的
PG short with signal net
當設計中有PG short時,很難識別。PG short可以是power net和ground net之間的short,也可以是power/ground net和signal net之間的short。當 PG net與相當長的signal net short時,并且由于 PG net連接到如此多的器件,很難精確定位short位置。
由于不正確的metal fill和manual routing changes,VSS net和其中一個signal net之間產生了short,如下圖所示。
圖11 錯誤的metal fill造成pg net和signal net的short
如果在merge database時缺少某些 spice 文件或 GDS 文件,則會顯示missing components錯誤。例如:如果您在設計中使用了單元 ABC,但未在 GDS list或spice list中定義該單元以用于 LVS 流程,則可能導致missing components錯誤。要么需要修改list,要么需要從 LVS 比較中排除 ABC 單元(這取決于單元的功能,在比較中只能排除physical-only單元)。
如果單元的 PG 引腳未使用 connect_pg_net 命令連接到任何power/ground net,則會導致大多數設計的器件mismatch和 LVS 錯誤。例如,即使標準單元 PG 引腳名稱為 VDD,工具也不會將其連接到設計的 VDD 網絡。我們需要使用下面的命令來連接這些引腳。
connect_pg_net -net VDD [get_pins -hierarchical */VDD]
結論
LVS 是驗證網表物理實現(xiàn)正確性的有用技術。open、short、missing components和Missing global net connect是可能影響設計功能的潛在問題,并且可能無法在物理設計早期檢測到,因此 LVS 有助于在設計中報告這些問題。一旦物理驗證工具報告了這些問題,就可以通過本文中討論的各種技術來解決。