使用Cadence工具完成數(shù)?;旌显O(shè)計流程簡介
掃描二維碼
隨時隨地手機看文章
眾所周知,Cadence的Virtuoso是模擬設(shè)計領(lǐng)域的核心工具,市占率達到75%,隨著近些年來Cadence在數(shù)字版圖設(shè)計(APR)領(lǐng)域的崛起,invs,PVS等一眾工具也都成了很多公司的首選后端流程工具。依照強強聯(lián)合的邏輯,將數(shù)模實現(xiàn)工具進行協(xié)同部署看起來就是那么的水到渠成,這里就以O(shè)A數(shù)據(jù)為起點,簡單介紹一下MSOT的簡單流程。閑言少敘,ICer GO!
通常而言,數(shù)據(jù)交互是跨工具的主要問題,所以常用的LEF/DEF/V/UPF/SDC etc.便成為了數(shù)字流程的主要交互文件,但是對于Virtuoso,由于是模擬的設(shè)計理念,上述的方法不是很合適,這里就需要引入Cadence的**OA(OpenAccess)**數(shù)據(jù)平臺。
數(shù)?;旌显O(shè)計(Mixed-Signal Design)概略
從Virtuoso IC61開始,數(shù)據(jù)都是以O(shè)A為數(shù)據(jù)保存格式的,尤其到了OA2.2,已經(jīng)可以實現(xiàn)很多公司/工具的數(shù)據(jù)互通, 包括Synopsys,mentor,TSMC等大廠的工具,譬如S家的Laker就可以和C家的virtuoso通過OA做數(shù)據(jù)互通;Calibre也可以打開Virtuoso的OA數(shù)據(jù)庫等。
類似的,innovus也提供OA數(shù)據(jù)創(chuàng)建、讀取和存儲,這樣就可以實現(xiàn)innovus和virtuoso的數(shù)據(jù)溝通。有了這種數(shù)據(jù)溝通,就可以解決一定的芯片設(shè)計需求。
對于現(xiàn)代的MS(mixed-signal)的芯片設(shè)計無外乎以下兩種設(shè)計方法:
-
Ad(大數(shù)小模,下左圖)結(jié)構(gòu):virtuoso 做top-design,頂層以及大部分工作在virtuoso完成,剩余的一小部分digital在innovus完成,兩者通過OA協(xié)同,最后使用virtuoso 完成TO
-
Da(大數(shù)小模,下右圖)結(jié)構(gòu):innovus做top-design,頂層以及大部分工作在innovus完成,剩余的一小部分analog在virtuoso完成,兩者通過OA協(xié)同,最后使用innovus 完成TO
如果,對于模擬數(shù)字交融的更為深入的情形,那么無論是使用vitruoso還是innovus完成最終的TO,二者都可以在數(shù)據(jù)的任何階段進行交互(PS:top的流程需要在項目初期定義完成,避免反復(fù)迭代)?;诖薈adence提出了(MSOT)的流程理念,這樣可以進一步淡化/模糊數(shù)模邊界,對于一個完整的設(shè)計也可以相對比較靈活,Cadence相信這樣可以更有利于設(shè)計的實現(xiàn)效果:
所以,無論是上述Da,Ad抑或MSOT,這個流程都需要對virtuoso和innovus兩個工具使用統(tǒng)一的設(shè)計數(shù)據(jù)平臺:OA數(shù)據(jù)。從不同的工具角度去看,OA數(shù)據(jù)也有些微的差異:
-
下左圖:virtuoso工具對于設(shè)計庫的需求(PDK):techdb, techfile.tf,pcell etc.
-
下右圖:virtuoso工具對于設(shè)計庫的需求(LEF):techlef,std-cell lef ,macro lef
OA DB 的創(chuàng)建和使用
如上所述,如果一個OA可以包含PDK和所有庫的LEF,那么就可以在virtuoso兩個工具在做平滑切換。這里有一個點要明確,對于virtuoso通常關(guān)注在模擬設(shè)計、版圖和仿真。而innovus需要關(guān)注的更多的是place,CTS和route,這個可能會在除去基礎(chǔ)的OA外用戶需要額外關(guān)注的。
綜上Cadence給出的解決方案就是:MSOA PDK (MixedSignal OpenAccess Process Design Kit ),這個OA的數(shù)據(jù)結(jié)構(gòu)是包含了上述virtuoso和innovus兩者都需要的東東。
- Foundry rules (from PDK)
- DR: default routing rules
- Spacing/pitch/width
- Tech LEF:
- NDR: none default routing rules
- Antenna
- Std-cell LEF
- IP LEF
Cadence提供一個流程幫助用戶在innovus里邊創(chuàng)建OA數(shù)據(jù)庫,來作為數(shù)據(jù)的起點(PS:類似的用戶也可以在virtuoso作為數(shù)據(jù)起點)
OA庫通常是由三個部分組成(從底到頂?shù)拇涡颍?/span>
- Technology DB:工藝相關(guān)的rule,layer等信息
- Library DB: IP/pcell/std-cell等基礎(chǔ)設(shè)計單元和對于的view管理
- Design DB:原理圖,版圖,網(wǎng)表等
考慮到工作數(shù)據(jù)維護的便利性,OA提供了refLib的理念,這個refLib通常只囊括工藝(technology)相關(guān)的信息,對于實際的設(shè)計庫,用戶可以對其進行對應(yīng)的設(shè)計(design)和基礎(chǔ)設(shè)計單元(library)的添加和維護??梢院唵卫斫鈘efLIb就是basic OA,設(shè)計的OA都可以將以這個refLib作為起點。
這里呈現(xiàn)一個以innovus為數(shù)據(jù)起點的簡化版的OA lib常見流程。依照上述講解,一個OA的lib的創(chuàng)建至少是需要兩個步驟的。具體流程見下圖:
- 打開任意一個已經(jīng)完成init design的invs數(shù)據(jù)庫
restoreDesign DBS/design.init.enc.dat design
- 導(dǎo)出OA tech file
這個可以理解為將invs的tech.lef轉(zhuǎn)換成virtuoso的的基礎(chǔ)技術(shù)文件:techfile.tf ,但是由于invs是一個簡化的設(shè)計環(huán)境(相較模擬設(shè)計而言),所以這里的數(shù)據(jù)量會較少,但是使用這個的好處是,用戶不用去花費大量的時間去解決techfile.tf和tech.lef的沖突。
write_oa_techfile oa.tf
- 創(chuàng)建OA的reference lib
基于上述的oa.tf創(chuàng)建的reference lib,可以理解為一個帶入了fab設(shè)計規(guī)則OA lib
techLoadDump -l-createLib oa.ref.lib oa.tf
基于OA系統(tǒng)數(shù)據(jù)規(guī)則,任何對于OA lib的創(chuàng)建都會在當(dāng)前目錄下的cds.lib添加OA lib的信息,如果cds.lib文件不存在則會自動重建。(PS:由于virtuoso和invs在調(diào)用OA lib的時候,都會使用這個文件,不建議手動修改/移除這個文件,)
# file cds.lib # indication libname libpath DEFINE oa.ref.lib oa.ref.lib
- 準(zhǔn)備LEF文件
在一個完成init_design的invs數(shù)據(jù)庫中,是可以方便的管理所有的LEF文件的。包括tefh.lef。所以invs提供了一個簡單的命令,可以將LEF分類別導(dǎo)出
# dump tech LEF write_lef_library -tech_only tech.lef # dump ALL IP/std-cell/antenna LEF write_lef_library -macro_only macr.lef
- 創(chuàng)建OA lib
有了上述的結(jié)果,此處可以創(chuàng)建OA lib了,此處分兩步
- 基于OA ref lib創(chuàng)建design的OA lib
lef2oa -pnrLibDataOnly\ -lef tech.lef \ -techRefs oa.ref.lib \ -lib design.oa.basic.lib
- 基于macro LEF 對OA lib進行增量調(diào)整
lef2oa -lef maco.lef \ -lib design.oa.basic.lib
這里創(chuàng)建了新的OA lib,所以cds.lib就會增加一個條目
# file cds.lib # indication libname libpath DEFINE oa.ref.lib oa.ref.lib DEFINE design.oa.basic.lib design.oa.basic.lib
到此design的OA lib就創(chuàng)建好了,這個OA lib和DBS/design.init.enc.dat相比,除過沒有實際的design(netlist)外,其他的fab、tech、IP等信息是完全一致的。
用戶可以把這個OA DB作為一個新的起點,對實際的設(shè)計進行導(dǎo)入,就可以完成design OA lib的部署:
Note:由于cds.lib的控制,下面的動作需要和上述命令在同一目錄下:
使用OA數(shù)據(jù)庫構(gòu)建floorplan:
1:配置basic OA lib
set init_oa_ref_lib design.oa.basic.lib
2:配置netlist
set init_verilog design.dc.v
3:配置top cell name
set init_top_cell design
4:配置mmmc
set init_mmmc_file design.viewDefinition.tcl
5:初始化design
init_design
6:導(dǎo)入floorplan DEF
defIn design.fp.def
7: 用OA數(shù)據(jù)結(jié)構(gòu)保存數(shù)據(jù): {lib_name top-cell view}
saveDesign -cellview{design.oa.floorplan.lib design floorplan}
同樣,cds.lib再一次添加了新條目
# file cds.lib # indication libname libpath DEFINE oa.ref.lib oa.ref.lib DEFINE design.oa.basic.lib design.oa.basic.lib DEFINE design.oa.floorplan.lib design.oa.floorplan.lib
在invs里邊,打開OA數(shù)據(jù)庫,并完成place
1:打開floorplan OA 數(shù)據(jù)庫
restoreDesign -cellview{design.oa.floorplan.lib design floorplan}
2:完成place
place_opt_design
3: 保存place數(shù)據(jù)庫
saveDesign -cellview{design.oa.floorplan.lib design floorplan}
cds.lib再次加入一個新的條目
# file cds.lib # indication libname libpath DEFINE oa.ref.lib oa.ref.lib DEFINE design.oa.basic.lib design.oa.basic.lib DEFINE design.oa.place.lib design.oa.place.lib
這里對同一個OA DB(design.oa.place.lib)分別使用invs和virtuoso打開,作為跨工具工作的一個注腳
這里以invs數(shù)據(jù)庫為起點,完成一個OA lib的創(chuàng)建,這個和Traditional MSOA PDK相比,少了tech rule (techfile.tf , 通常來自于PDK)的帶入,簡化的原因是由于tech.lef和techfile.tf通常有一些沖突/差異,其他的步驟都是一樣的。完整的Traditional MSOA PDK如下,可以作為參考理解其中的原理
到此,用戶已經(jīng)使用OA的數(shù)據(jù)庫完成了在invs里邊的place步驟,此時用戶如果需要,這個OA數(shù)據(jù)是可以直接傳遞給virtuoso(或者laker)用戶,完成后續(xù)的和模擬相關(guān)設(shè)計動作,然后可以再次返回invs進行后續(xù)的處置。用戶可以根據(jù)實際情況基于同一數(shù)據(jù)庫靈活選擇設(shè)計工具,從而推進Da或者Ad的設(shè)計。感謝Cadence的偉大創(chuàng)舉,感謝OA平臺,打通了數(shù)模設(shè)計的數(shù)據(jù)平移。
【敲黑板劃重點】
基于OA數(shù)據(jù)庫,發(fā)揮innovus和virtuoso的工具優(yōu)勢和特長,打破數(shù)模設(shè)計的阻隔,發(fā)揮不同工具的優(yōu)勢,完成芯片設(shè)計的訴求。





