尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

IC618集成Calibre2019:在Virtuoso中调出Calibre菜单并运行DRC/LVS

IC618集成Calibre2019:在Virtuoso中调出Calibre菜单并运行DRC/LVS 如果你已经跟着这个系列一路折腾到这儿那CentOS7、IC618、SPECTRE18和Calibre2019这几个大头应该都已经装好了。但我敢打赌很多人卡在一个很微妙的地方版图工具打开了Calibre命令行也能跑但在Virtuoso里怎么都调不出那个传说中的“Calibre”菜单。这篇就专门解决这件事目标是让你在IC618的Layout Editor里直接点菜单跑DRC/LVS而不是每次都在终端敲命令、再手动导GDS来回倒腾到怀疑人生。这篇文章的定位很明确给刚接触版图验证的小白、被集成问题折磨过的同学把“IC618集成Calibre2019”这一个坎彻底迈过去。1. 集成前需要摸清的底细1.1 确认Calibre安装和License状态千万别一上来就改配置先花两分钟确认你的Calibre2019是不是真的能独立跑起来。很多人折腾到最后发现不是集成问题而是Calibre本身就有问题白白浪费半天。先在终端里执行which calibre calibre -version正常情况下应该输出类似“Calibre 2019”之类的版本信息并且which calibre能找到可执行文件路径。如果提示“command not found”说明你的PATH环境变量根本没配好集成就无从谈起。接着检查license能否正常获取。不同的安装方式区别很大我遇见过的几种常见情况是使用license server方式环境变量指向porthost比如LM_LICENSE_FILE1717localhost使用license文件方式环境变量指向.dat或.lic文件路径有些版本还需要单独设置MGLS_LICENSE_FILE。验证license最直接的方式是随便跑一个Calibre命令比如执行calibre -gui能打开图形界面基本说明license没问题。如果启动时报错或者弹窗提示“Invalid license”那就先解决license问题再来做集成否则后面所有步骤都会卡住。1.2 环境变量该设哪些、为什么是这些在做集成前必须想清楚一件事Cadence Virtuoso本质上是一个SKILL解释器环境Calibre要被调用就得让Virtuoso能够找到Calibre相关的可执行文件和脚本文件。而这一切的基础就是环境变量。至少要保证这几个变量存在且正确MGC_HOMECalibre的安装根目录很多脚本会用它拼接路径。CALIBRE_HOME和MGC_HOME含义类似很多新版脚本用这个变量。PATH把$MGC_HOME/bin加进去否则calibre命令找不到。LM_LICENSE_FILE或MGLS_LICENSE_FILECalibre的license入口。设置这些变量时要注意一个坑如果你是bash用户经常有人把setenv和export混着写。setenv是csh/tcsh的语法在bash里会报错。应该用export MGC_HOME/opt/mentor/calibre2019 export CALIBRE_HOME/opt/mentor/calibre2019 export PATH$MGC_HOME/bin:$PATH export MGLS_LICENSE_FILE1717localhost如果你习惯用csh/tcsh那才需要setenv。我遇到过不止一个新手明明用的bash却复制了网上的setenv命令结果环境变量没设置成功后面全部白忙。1.3 一个干净的bashrc配置示例这里我直接给一份基于bash的参考配置你可以根据实际安装路径调整。假设Calibre2019安装在/opt/mentor/calibre2019Cadence IC618安装在/opt/cadence/IC618# Calibre 2019 export MGC_HOME/opt/mentor/calibre2019 export CALIBRE_HOME$MGC_HOME export PATH$MGC_HOME/bin:$PATH export MGLS_LICENSE_FILE1717localhost # Cadence IC618 export CDS_INST_DIR/opt/cadence/IC618 export PATH$CDS_INST_DIR/bin:$PATH export CDS_LIC_FILE1717localhost设置完后执行source ~/.bashrc或者重新打开终端。然后依次执行echo $MGC_HOME、echo $CALIBRE_HOME确认输出不为空再继续。这一步缺少了后面.cdsinit里用getShellEnvVar(CALIBRE_HOME)会返回空字符串导致加载脚本失败。2. 搞懂Calibre嵌入Virtuoso的原理2.1 Calibre在版图验证里到底干什么在正式写配置之前我还是想花点篇幅把原理讲透。因为很多人集成完只会机械操作一旦出了新问题就不知道怎么排查。Calibre在模拟版图设计里的位置简单说就三个字验证者。画完版图之后你要检查这个版图是否符合代工厂的规则DRC或者是否和原理图逻辑一致LVS。Calibre就是行业里最常用的验证工具之一。问题是版图是在Virtuoso的Layout Editor里画的。如果每做一次DRC都要从Virtuoso里导出GDS再到终端里跑Calibre最后再回来看结果效率太低。集成之后Virtuoso界面里会出现一个Calibre菜单直接在图形界面里配置规则文件、启动DRC/LVS、查看结果整个过程流畅很多。2.2 SKILL脚本是连接双方的桥那Virtuoso里怎么突然多出一个属于第三方工具的菜单靠的是一种叫SKILL的脚本语言。Cadence Virtuoso的所有操作底层都可以通过SKILL命令完成包括加载菜单、调用外部程序。Calibre官方提供了一系列SKILL脚本最常见的是calibre.skl它会往Virtuoso里注册一个Calibre菜单菜单里的每个功能项背后都对应着调用Calibre的命令和界面。所以在.cdsinit里加载calibre.skl本质上就是告诉Virtuoso“你启动的时候把这个外部菜单也一起挂载上”。这就是为什么很多人问“能不能不写.cdsinit、直接在界面上手动加载”——可以是可以但每次启动都要手动执行load命令显然不便于日常使用。2.3 为什么选.cdsinit而不是其他文件virtuoso启动时会自动加载当前用户主目录下的.cdsinit文件这个文件可以理解成Virtuoso的“开机自启动脚本”。只要把加载Calibre菜单的语句放进去启动时就会自动执行不需要每次手动操作。当然你也可以在site.sch这种系统级初始化文件里改效果类似但影响范围更广适合系统管理员统一配置。个人使用或学习环境直接改~/.cdsinit就够了改动小、影响范围可控。这里要特别注意如果你用的是Cadence自带的初始.cdsinit先备份一份改坏了随时能还原。3. 手把手把Calibre菜单请进Virtuoso3.1 第一步定位calibre.skl文件不同版本的Calibrecalibre.skl脚本位置可能略有区别但一般情况下都在$MGC_HOME/lib/目录下。先执行命令确认ls -l $MGC_HOME/lib/calibre.skl如果找不到用find全盘搜索一下find $MGC_HOME -name calibre*.skl 2/dev/null正常情况下应该能看到一个或多个.skl文件。注意有些教程会提到calibreMenus.il这类文件不同版本命名确实有差异但通常以官方实际提供的为准。calibre.skl是最常见的名字。3.2 第二步修改.cdsinit初始化文件现在打开用户主目录下的.cdsinit文件。注意这个文件默认是隐藏文件用ls看不到要用ls -a。如果你在安装完IC618之后从来没创建过这个文件也别慌常见做法是从Cadence安装目录复制一份默认的模板ls $CDS_INST_DIR/tools/dfII/etc/cdsinit cp $CDS_INST_DIR/tools/dfII/etc/cdsinit ~/.cdsinit然后在.cdsinit末尾添加一行加载Calibre菜单脚本的命令。为了让路径更灵活推荐用环境变量拼接load(strcat(getShellEnvVar(CALIBRE_HOME) /lib/calibre.skl))如果你不想依赖环境变量也可以直接写成绝对路径load(/opt/mentor/calibre2019/lib/calibre.skl)两种写法都可以但我个人推荐第一种。原因很简单以后换Calibre版本或者换机器只要环境变量改对了.cdsinit基本不用动。保存文件后启动Virtuoso时会自动加载。如果你已经在Virtuoso里想立即测试而不重启可以直接在CIW命令窗口敲同样的load命令也能实时加载。3.3 第三步启动virtuoso验证菜单加载完成之后打开或者新建一个Layout Editorlayout窗口查看菜单栏最右侧。正常情况下你会看到多出一个“Calibre”菜单展开之后能看到“Run DRC”“Run LVS”“Run PEX”等选项。如果菜单没有出现先不要急着改更多配置去CIW窗口就是Virtuoso启动时最下面的那个日志窗口向上翻看看有没有红色的报错信息。最常见的是*Error* load: file not found这说明load语句里的路径错了或者CALIBRE_HOME环境变量在Virtuoso的启动环境中没有生效。这里头有个很隐蔽的坑如果你的Virtuoso是从桌面菜单快捷方式启动的可能不会读取.bashrc里的环境变量导致getShellEnvVar(CALIBRE_HOME)返回空。解决方法是回到终端先确认环境变量已经设置好再从当前终端启动virtuoso。3.4 如果只想要某个项目的集成怎么办很多时候你同时在做好几个项目但只有某一个项目需要调用Calibre。这种情况下不一定要把加载语句写进~/.cdsinit全局文件。你可以在项目的工作目录下放一个.cdsinit这个目录下的.cdsinit会优于用户主目录下的.cdsinit被加载相当于项目级定制化。举个例子项目目录为/home/user/project_a把全局.cdsinit复制过去再在末尾加上Calibre加载语句。这样只在启动该项目时加载Calibre菜单其他项目保持原样。这种做法的好处是隔离性更强也适合多人共用服务器时避免干扰别人的环境。4. 集成之后的完整DRC实战4.1 从Layout到DRC规则文件设置集成完成后最好的验证方式就是实战跑一次DRC。打开你要验证的版图点击Calibre菜单里的“Run DRC”会弹出一个Calibre Interactive界面。在这个界面里需要重点配置几个东西Rule File代工厂提供的DRC规则文件通常是.drc或.cal后缀里面包含了各种设计规则定义。Run Directory存放运行结果和临时文件的目录建议给每个项目单独建一个目录方便管理。Top Cell当前要检查的顶层cell一般会自动识别。设置完成后点击“Run DRC”按钮。运行过程中可以观察界面下方的日志输出看到“DRC run completed”之类的提示就是跑完了。如果中间报错通常说明规则文件路径不对、Top Cell选错或者临时目录没有写权限。4.2 运行DRC并读懂RVE报告DRC跑完以后点击Calibre菜单里的“Run RVE”或者“Results View”打开结果查看器。RVE会把违例项以列表形式列出来点击某一条Virtuoso版图界面会自动定位到对应的坐标附近高亮显示出错位置。这里我分享一个经验新手第一次跑DRC看到满屏几百上千条违例千万别慌。先按类别过滤比如只看“short”或“violation”类一条条对照规则说明其实很多违例是重复或同源的。真正要关注的通常是面积、间距、金属密度这类硬性规则。4.3 顺手把LVS也配置好DRC过了接下来就要做LVS检查。点击Calibre菜单里的“Run LVS”同样是Calibre Interactive界面Rule File换成LVS规则文件通常是.lvs或.cal后缀。Source也就是原理图网表一般设置为“Schematic”。Layout设置为“Layout”Calibre会从当前版图提取网表。LVS运行结束后也要看RVE。如果界面上显示“Corresponding cells match”,说明版图和原理图一致。如果出现“hard”或“soft”不匹配需要用界面里提供的比对结果定位是连线问题还是器件参数问题。5. 玩不转时排查手册与踩坑记录5.1 菜单死活不出现的几个原因我在帮别人排错时遇到最多的就是“明明按教程改了.cdsinit菜单就是不出来”。总结下来无非这几种原因环境变量没在Virtuoso的启动进程里生效特别是通过桌面图标或快捷方式启动时最容易发生。calibre.skl路径写错了建议先在CIW里手动执行ls或load直接用完整路径测试比如load(/opt/mentor/calibre2019/lib/calibre.skl)如果这个能成功再排查环境变量问题。当前窗口不是Layout EditorCalibre菜单只在Layout Editoricfb/layout里出现如果你打开的是Schematic Editor菜单栏可能看不到。.cdsinit语法报错有时候用户从网上复制了一大段代码粘贴进来之后前面的代码有语法错误导致后面的load语句没有执行。排查思路很简单打开CIW窗口逐行执行load命令看到没有报错再新建Layout窗口查看菜单。5.2 License报错与环境变量冲突集成完成后点“Run DRC”如果立即弹出license相关错误别急着怪Calibre没装好。先检查一下MGLS_LICENSE_FILE和LM_LICENSE_FILE这两个变量有时会互相干扰。一个常见问题是Cadence的license和Mentor的license都用了LM_LICENSE_FILE导致变量被后设置的覆盖了。解决办法是专门为Calibre使用MGLS_LICENSE_FILE和Cadence的变量分开。很多Mentor工具优先读取MGLS_LICENSE_FILE如果这个变量没设置它会尝试用LM_LICENSE_FILE这时候就可能读到Cadence的license报出奇怪的错误。5.3 集成后运行功能异常的快速检查清单最后给大家整理一张快速检查清单遇到问题按顺序排查能省掉大半折腾时间现象排查点解决方向菜单未出现环境变量、.cdsinit路径确认CALIBRE_HOME检查load语句菜单出现但点击无反应初始化脚本未完全加载重启virtuoso或CIW手动loadDRC/LVS启动报license错MGLS_LICENSE_FILE单独指定Calibre的license找不到规则文件文件权限、路径给规则文件目录授权和正确路径运行中途报错中断磁盘空间、运行目录清理/tmp或指定足够空间的目录上周一个同事找我说Calibre菜单怎么都出不来Virtuoso还频繁崩溃。后来发现是他把.cdsinit里之前一些自定义快捷键的代码不小心删掉了一行括号导致整个初始化文件解析失败。这种问题肉眼很难看出来我建议改完.cdsinit后先执行load命令验证语法没问题再大量重启Virtuoso不然一遍遍地翻日志会非常痛苦。还有个小技巧如果你用的是csh系shell环境变量写法是setenv CALIBRE_HOME /opt/mentor/calibre2019变量名和值之间用空格不要加等号。真有人把两种语法混着写卡了好几天问我。学会区分bash和csh的语法对后续配置工作会省心不少。从最开始的安装CentOS7到装Cadence工具链再到把Calibre集成进Virtuoso这一路踩过的坑几乎都是细节问题环境变量是不是被覆盖了、脚本路径是不是写错了、启动方式是不是吞掉了配置。我个人现在每次配置完都会做一个最小化验证先命令行确认Calibre能跑再启动Virtuoso确认菜单出现最后拿一个简单的反相器版图跑一遍DRC和LVS。三步都通才算真正集成完成。这套方法我已经用在外培训时发的环境里帮好几个面板痛苦的同学省下了不止半天时间。你照着这篇操作下来如果还卡在某一步那大概率就是你安装路径或环境变量和我的例子不一样顺着检查清单排查一下问题基本都能定位到。
返回列表