项目场景:
设想是将Calibre集成到cadence virtuoso中,但网上的解决办法尝试过在本机上实验都有点问题,因此想记录下来我的解决办法仅供参考。
问题描述:
安装好cadence, calibre之后打开virtuoso,CIW窗口显示
*Error* load: can't access file - "/opt/eda/Mentor/lib/calibre.skl"
问题是出在calibre.skl的加载路径出错,尝试网上的在工程目录下修改.cdsinit文件,添加calibre安装目录下的calibre.config里面的如下语句
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; check CALIBRE_HOME
;
cal_home=getShellEnvVar("CALIBRE_HOME")
if( cal_home==nil then
cal_home=getShellEnvVar("MGC_HOME")
if( cal_home!=nil then
printf("// CALIBRE_HOME environment variable not set; setting it to value of MGC_HOME\n");
)
)
if( cal_home!=nil && isDir(cal_home) && isReadable(cal_home) then
; Load calibre.skl or calibre.4.3.skl, not both!
; Load calibre.skl for Cadence versions 4.4 and greater
load(strcat(cal_home "/lib/calibre.skl"))
;;;;Load calibre.4.3.skl for Cadence version 4.3
;;; load(strcat(cal_home "/lib/calibre.4.3.skl"))
else
; CALIBRE_HOME is not set correctly. Report the problem.
printf("// Calibre Error: Environment variable ")
if( cal_home==nil || cal_home=="" then
printf("CALIBRE_HOME is not set.");
else
if( !isDir(cal_home) then
printf("CALIBRE_HOME does not point to a directory.");
else
if( !isReadable(cal_home) then
printf("CALIBRE_HOME points to an unreadable directory.");
)
)
)
printf(" Calibre Skill Interface not loaded.\n")
; Display a dialog box message about load failure.
hiDisplayAppDBox(
?name 'MGCHOMEErrorDlg
?dboxBanner "Calibre Error"
?dboxText "Calibre Skill Interface not loaded."
?dialogType hicErrorDialog
?dialogStyle 'modal
?buttonLayout 'Close
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
或者直接添加一句
load( strcat( getShellEnvVar("CALIBRE_HOME") "/lib/calibre.skl" ))
但是加载后发现打开virtuoso之后还是报错。
原因分析:
分析发现,可能其他目录下的.cdsinit文件优先工程目录(同.bashrc目录下)加载,因此calibre.skl加载路径还是不对。
解决方案:
使用命令
locate -b 'cdsinit'
找到/…/…/IC6_15_151/tools.lnx86/dfII/local/.cdsinit, 发现其中语句
;;(3) Integrate Calibre:
loadi(strcat(getShellEnvVar("MGC_HOME") "/lib/calibre.skl"))
所以原因就是cadence优先加载了这个语句,导致$MGC_HOME/lib/calibre.skl加载失败(路径错误),
后面将该语句改成loadi(strcat(getShellEnvVar("CALIBRE_HOME") "/lib/calibre.skl"))
, 重新打开virtuoso, calibre集成成功。