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