简介:本资源是一份面向Cadence IC设计工程师与PDK迁移工程师的CDB工艺库向OpenAccess(OA)格式转换实战指南,专为解决IC617平台无法直接加载旧版CDB格式工艺库(如tsmc35mm等)导致的启动报错问题,例如'Warning: ddUpdateLibList: It appears that you are trying to run an OA executable on CDB data'。资源以PDF形式提供完整操作流程:涵盖cdb2oa命令行转换(-i input.cdb -o output.oa)、Conversion Toolbox图形化转换路径配置、Virtuoso中Library Path设置与PDK目录替换规范,以及关键排错要点与验证方法。包内仅含1个697KB的PDF文档,内容结构清晰,含界面截图、命令示例与典型错误分析,便于快速定位与执行。目前已有1551人学习下载,适合正面临IC514→IC617平台升级、需批量迁移老旧CDB工艺库的中高级IC设计人员高效复用。
1. CDB轉換為OA:不是簡單格式搬家,而是IC617啟動失敗的根治方案
你打開IC617 Virtuoso,畫面還沒加載完就彈出一串Warning:ddUpdateLibList: It appears that you are trying to run an OA executable on CDB data.—— 這不是報錯,是系統在明確拒絕你啟動。它不認你手裡那個「看著像PDK、放著像工藝庫、改名像能用」的tsmc35mm目錄。原因很直白:IC617是純OpenAccess(OA)架構,而你的工藝庫還卡在IC514時代的CDB(Cell Database)格式裡。CDB和OA不是同一套數據模型:CDB靠文件級硬鏈接+prop.xx元數據驅動,OA則依賴OA Server管理的對象關係與事務日誌。直接複製粘貼、改個路徑、甚至重裝PDK都沒用——這是底層數據結構的代際鴻溝。這份資源解決的不是「怎麼轉」,而是「為什麼非得轉、轉錯一步整個PDK就變黑匣子、以及轉完還不能直接用」這三層真實痛點。適用對象非常明確:正在從IC514/IC615升級到IC617的模擬/混合信號設計者、PDK集成工程師、或接手老項目的維護工程師。它不教Cadence基礎操作,只聚焦一個動作:讓你的舊PDK在IC617裡真正活過來,且後續能被Library Manager正確索引、被ADE L統計、被Assura正常調用。
2. cdb2oa工具原理與執行路徑:為什麼必須用Conversion Toolbox而不是手敲命令
2.1 為什麼cdb2oa -i input.cdb -o output.oa在實際場景中幾乎必然失敗
摘要裡給出的命令看似簡潔,但它是脫離Cadence OA生態的「偽命令」。真實情況是:cdb2oa本身不是獨立可執行二進制,而是Cadence IC617安裝包內嵌的一組Perl腳本+Tcl綁定模塊,其完整路徑通常為<IC617_HOME>/tools/dfII/bin/cdb2oa,且強依賴當前環境已加載OA Server上下文。若直接在shell中調用,會報錯Error: OA server not initialized或Cannot locate oaSession。更關鍵的是,CDB轉OA不是單文件映射——它要重建library→cell→view→instance的四層對象關係,並同步處理.cdslib中的DEFINE語句、prop.xx中的工藝參數、cds.lib裡的SOFTINCLUDE依賴鏈。手動指定-i/-o只能觸發最基礎的cell級轉換,缺失library descriptor、OA schema版本綁定、以及PDK特有的techFile關聯,結果就是Virtuoso能打開library但看不到任何cell,或者打開cell卻報View not found for view type 'schematic'。
2.2 Conversion Toolbox才是唯一受控入口:三步鎖死轉換一致性
Cadence官方將CDB→OA流程封裝進GUI工具箱,核心是為了強制執行三重校驗:
- 路徑解析校驗:自動掃描
cds.lib中所有DEFINE條目,識別出哪些library指向CDB目錄(含prop.xx文件),哪些已是OA格式; - 依賴拓撲校驗:分析
SOFTINCLUDE和HARDINCLUDE關係,確保被依賴的base PDK(如basic、analogLib)先於當前PDK轉換; - Schema版本綁定校驗:根據IC617的OA版本(通常是OA 2.2.1或2.3.0),自動選擇對應的
oaSchema模板,避免出現oaSchema version mismatch錯誤。
提示:Conversion Toolbox不在Virtuoso主菜單裡,必須通過IC617安裝目錄下的
tools/dfII/bin/convertToolbox啟動,或在終端輸入virtuoso -convert(注意不是virtuoso &)。啟動後界面標題明確寫著「CDB to OpenAccess Translator」,這是唯一合法入口。
2.3 實操:從cds.lib定位開始,精準選取待轉換PDK
假設你的PDK解壓在/home/CHEN/tsmc035mm_3d3v_5v_v2d7a_PDK/,且cds.lib內容如下:
DEFINE tsmc35mm /home/CHEN/tsmc035mm_3d3v_5v_v2d7a_PDK/tsmc35mm DEFINE basic /home/CHEN/tsmc035mm_3d3v_5v_v2d7a_PDK/basic SOFTINCLUDE tsmc35mm在Conversion Toolbox中執行:
- 點擊「Browse」按鈕,導航至
/home/CHEN/tsmc035mm_3d3v_5v_v2d7a_PDK/目錄; - 在「CDS Library File」欄位中,手動輸入完整路徑:
/home/CHEN/tsmc035mm_3d3v_5v_v2d7a_PDK/cds.lib; - 點擊「OK」後,工具會自動解析並列出所有
DEFINE條目,勾選tsmc35mm(主PDK)和basic(基礎庫),切勿勾選analogLib等Cadence自帶庫——它們已是OA格式,強制轉換會破壞IC617原生功能; - 在「Output Directory」中指定輸出路徑,強烈建議新建獨立目錄,例如
/home/CHEN/tsmc35mm_OA_converted/,而非覆蓋原目錄。
這一步的邏輯是:Conversion Toolbox不是簡單拷貝文件,而是以cds.lib為綱,構建一個「轉換任務圖」。它會遞歸掃描每個DEFINE路徑下的prop.xx是否存在(存在即判定為CDB)、檢查lib.defs是否包含oaSchemaVersion字段(存在即跳過)、並生成內部任務隊列。若跳過此步直接手動指定目錄,工具會因無法解析依賴關係而中斷。
3. 轉換後的OA目錄結構與Library Path重配置:為何複製進原PDK目錄反而會崩潰
3.1 轉換完成後的真實目錄長這樣:不是「文件搬家」,而是「對象重建」
成功運行Conversion Toolbox後,你在/home/CHEN/tsmc35mm_OA_converted/下看到的不是一堆.oa文件,而是一個嚴格遵循OA規範的目錄樹:
tsmc35mm_OA_converted/ ├── cds.lib # 已更新:所有DEFINE路徑指向新OA目錄 ├── tsmc35mm/ │ ├── lib.defs # 新增:定義OA library descriptor,含schema版本、techFile路徑 │ ├── techFile/ # 從原CDB的prop.xx提取並轉為OA techFile格式 │ └── cells/ # 每個cell子目錄下含:schematic、symbol、layout等view目錄 │ ├── nmos4/ │ │ ├── schematic/ # 內含oaDesign.oa(二進制OA對象) │ │ └── symbol/ # 內含oaSymbol.oa │ └── ... └── basic/ # 同樣結構,已轉為OA關鍵變化有三處:
lib.defs取代了CDB時代的prop.xx,它聲明了oaSchemaVersion "2.2.1"、techFile "./techFile/tsmc35mm.tf"、defaultViewName "schematic";- 所有cell目錄下的
oaDesign.oa是二進制OA對象,不可編輯,也不再有.cds或.sch文本文件; techFile目錄是獨立實體,不再嵌入cell中,而是由lib.defs全局指向——這是OA支持多工藝角(corner)仿真的基礎。
3.2 Library Path重配置:三處必須修改的位置,漏一處就白轉
Virtuoso不會自動識別新OA目錄,必須手動重置三處路徑:
cds.lib全局路徑:編輯/home/CHEN/tsmc35mm_OA_converted/cds.lib,確認DEFINE tsmc35mm指向/home/CHEN/tsmc35mm_OA_converted/tsmc35mm;- Virtuoso啟動時的
-cdslib參數:在終端啟動時必須顯式指定:
若忽略此參數,Virtuoso仍會讀取virtuoso -cdslib /home/CHEN/tsmc35mm_OA_converted/cds.lib$HOME/cds.lib或環境變量CDS_LIB_FILE,導致加載舊CDB庫; - Library Manager內的Path File:啟動Virtuoso後,點擊
Tools → Library Manager → File → Library Path...,在彈出窗口中:- 點擊「Add」→「Directory」→ 選擇
/home/CHEN/tsmc35mm_OA_converted/; - 取消勾選「Search subdirectories」(重要!否則會誤掃
/home/CHEN/tsmc35mm_OA_converted/tsmc35mm/cells/導致重複加載); - 點擊「Save As」,保存為
/home/CHEN/tsmc35mm_OA_converted/libpath.il; - 最後在Virtuoso中執行
load("/home/CHEN/tsmc35mm_OA_converted/libpath.il")加載新路徑。
- 點擊「Add」→「Directory」→ 選擇
這三步缺一不可。常見錯誤是只改cds.lib卻忘記啟動參數,結果Virtuoso啟動時加載的是默認cds.lib,而Library Manager裡看到的卻是新路徑——造成「Library Manager能列出來,但ADE L裡找不到cell」的玄學問題。
4. 避坑:CDB轉OA過程中最常見的五類翻車現場與血淚解法
4.1 現象:Conversion Toolbox啟動後立即報錯Error: Cannot find OA server
原因:IC617安裝時未正確配置OA Server環境變量,或當前shell未加載<IC617_HOME>/tools/dfII/cshrc.tools(csh)或<IC617_HOME>/tools/dfII/shrc.tools(bash)。
解決:
- 檢查
echo $OA_HOME是否輸出有效路徑(應為<IC617_HOME>/tools/dfII); - 執行
source <IC617_HOME>/tools/dfII/shrc.tools(Linux bash)或source <IC617_HOME>/tools/dfII/cshrc.tools(csh/tcsh); - 若仍報錯,手動啟動OA Server:
<IC617_HOME>/tools/dfII/bin/oaServer &,等待日誌顯示OA Server started successfully後再啟動Toolbox。
4.2 現象:轉換完成後Virtuoso報Warning: Library 'tsmc35mm' contains no valid views
原因:Conversion Toolbox雖生成了OA目錄,但lib.defs中defaultViewName值與實際存在的view目錄名不匹配。例如原CDB中schematic view叫schematic(末尾有空格),而OA要求嚴格命名,工具可能截斷為schematic,但lib.defs仍寫defaultViewName " schematic "。
解決:
- 用文本編輯器打開
/home/CHEN/tsmc35mm_OA_converted/tsmc35mm/lib.defs; - 查找
defaultViewName行,刪除前後空格,確保為defaultViewName "schematic"; - 同時檢查
/home/CHEN/tsmc35mm_OA_converted/tsmc35mm/cells/nmos4/下是否存在schematic/目錄(而非schematic /); - 修改後保存,並在Virtuoso中執行
ddUpdateLibList()刷新緩存。
4.3 現象:轉換後ADE L中能看見cell,但仿真報Error: Cannot resolve instance 'M1' of master 'nmos4'
原因:CDB時代的cell名稱含非法字符(如nmos4@3.3V),OA Schema要求cell名僅含字母、數字、下劃線。Conversion Toolbox默認會將@替換為_,但lib.defs中的masterName未同步更新。
解決:
- 在
/home/CHEN/tsmc35mm_OA_converted/tsmc35mm/cells/下查找實際生成的目錄名(如nmos4_3_3V); - 打開對應cell的
schematic/oaDesign.oa所在目錄,用oaDump工具查看對象:<IC617_HOME>/tools/dfII/bin/oaDump -f /home/CHEN/tsmc35mm_OA_converted/tsmc35mm/cells/nmos4_3_3V/schematic/oaDesign.oa | grep "masterName" - 若輸出為
masterName = "nmos4@3.3V",則需用oaEdit工具批量修正(見第5章); - 更穩妥做法:轉換前先用腳本清理原CDB目錄中的非法字符。
4.4 現象:轉換後Layout Editor打開cell報Error: View 'layout' not found
原因:原CDB PDK中layout view使用GDSII引用(gdsFile字段),而OA不支持直接掛載GDS,必須轉為OA native layout(.oa格式)。Conversion Toolbox默認跳過layout view轉換。
解決:
- 在Conversion Toolbox界面中,點擊「Options」→ 勾選「Convert Layout Views」;
- 若仍失敗,需手動執行GDS轉OA:
# 進入cell layout目錄 cd /home/CHEN/tsmc35mm_OA_converted/tsmc35mm/cells/nmos4/layout/ # 將gds文件轉為OA layout <IC617_HOME>/tools/dfII/bin/gds2oa -gds nmos4.gds -lib tsmc35mm -cell nmos4 -view layout - 轉換後確認目錄下生成
oaLayout.oa文件,並刪除原nmos4.gds。
4.5 現象:複製OA目錄到原PDK位置後,Virtuoso啟動報Error: Duplicate library name 'tsmc35mm'
原因:cds.lib中同時存在兩條DEFINE tsmc35mm語句(一條指向舊CDB,一條指向新OA),或環境變量CDS_LIB_FILE仍指向舊cds.lib。
解決:
- 執行
echo $CDS_LIB_FILE,若輸出非空,則在啟動Virtuoso前先unset CDS_LIB_FILE; - 檢查
$HOME/cds.lib、/usr/local/cds/cds.lib、<IC617_HOME>/tools/dfII/cds.lib三個位置,刪除所有冗餘DEFINE語句; - 最徹底方案:完全不用複製,直接在
cds.lib中將DEFINE tsmc35mm路徑改為/home/CHEN/tsmc35mm_OA_converted/tsmc35mm,並刪除原CDB目錄。
5. 進階驗證與修復:用oaDump/oaEdit定位隱藏缺陷並批量修正
5.1 用oaDump深挖OA對象結構,比Virtuoso GUI更早發現問題
oaDump是OA生態的瑞士軍刀,它能將二進制.oa文件反編譯為可讀文本,暴露GUI無法顯示的元數據缺陷。例如,當你懷疑某個cell的techFile綁定錯誤時:
<IC617_HOME>/tools/dfII/bin/oaDump \ -f /home/CHEN/tsmc35mm_OA_converted/tsmc35mm/cells/nmos4/schematic/oaDesign.oa \ -format text \ -show all > nmos4_dump.txt輸出文件中重點搜索以下字段:
| 字段名 | 正常值範例 | 異常表現 | 風險 |
|---|---|---|---|
techFile | "./techFile/tsmc35mm.tf" | ""或"../old_tech/prop.xx" | 仿真時無法讀取工藝參數 |
libraryName | "tsmc35mm" | "tsmc35mm_old" | Library Manager無法索引 |
viewType | "schematic" | "schematic "(末尾空格) | ADE L報View not found |
masterName | "nmos4" | "nmos4@3.3V" | 實例化時解析失敗 |
注意:
oaDump輸出極長(單cell常超萬行),建議配合grep精準定位:grep -A 5 -B 5 "techFile" nmos4_dump.txt。
5.2 用oaEdit批量修正masterName等字符串字段,避免手動改數百個cell
當oaDump發現大量cell的masterName含非法字符時,手動修改不現實。oaEdit提供Tcl接口實現批量修正:
# save as fix_masterName.tcl set lib [oaLibrary::open "tsmc35mm" "r"] foreach cellName [oaLibrary::getCellNames $lib] { set cell [oaCell::open $lib $cellName "r"] foreach viewName [oaCell::getViewNames $cell] { set view [oaView::open $cell $viewName "r"] set masterName [oaView::getMasterName $view] if {[string match "*@*" $masterName]} { set newMasterName [regsub -all {@} $masterName {_}] puts "Fixing $cellName:$viewName: $masterName -> $newMasterName" oaView::setMasterName $view $newMasterName } oaView::close $view } oaCell::close $cell } oaLibrary::close $lib執行方式:
virtuoso -nograph -replay fix_masterName.tcl此腳本會遍歷tsmc35mm庫中所有cell的所有view,將masterName中的@符號替換為_,並直接寫回OA對象。關鍵點在於:
- 必須用
-nograph參數啟動無GUI模式,避免Virtuoso界面干擾; -replay確保Tcl腳本在OA Server上下文中執行;oaView::setMasterName是OA API提供的安全寫入方法,比手動改.oa文件可靠百倍。
5.3 驗證轉換完整性:三層交叉檢查表
轉換完成後,我從不直接投入仿真,而是執行以下三層驗證:
| 驗證層級 | 檢查項目 | 命令/操作 | 通過標準 |
|---|---|---|---|
| 文件層 | OA目錄結構完整性 | `find /home/CHEN/tsmc35mm_OA_converted/tsmc35mm -name "oaDesign.oa" | wc -l` |
| 對象層 | techFile綁定有效性 | oaDump -f .../nmos4/schematic/oaDesign.oa | grep techFile | 輸出值必須指向./techFile/xxx.tf且文件存在 |
| 應用層 | ADE L實例化能力 | 在ADE L中創建testbench,嘗試inst nmos4 | 不報錯且Instance Properties中能正確顯示W=1u L=0.35u等參數 |
從那以後我每次完成CDB→OA轉換,都強制走一遍這三層驗證——哪怕只是臨時測試庫。因為曾有一次跳過對象層檢查,結果仿真跑了一整天才發現techFile指向了空路徑,所有器件參數全是默認值。希望幫到你。
本文还有配套的精品资源,点击获取