EDA工具实战:在CentOS 6.5上部署Cadence INNOVUS 15.20的完整指南
1. 环境准备为什么选择CentOS 6.5这个“老古董”你可能要问了现在都什么年代了为什么还要在CentOS 6.5这么老的系统上折腾直接上CentOS 7或者8不行吗这个问题问得好也是很多刚接触这个场景的工程师的第一个疑惑。我刚开始接手一个老项目迁移任务时也这么想过。但现实情况是很多芯片设计公司的历史项目、特定工艺库甚至是某些客户的交付环境就被“锁死”在了特定的操作系统和EDA工具版本上。Cadence INNOVUS 15.20这个版本对运行环境有比较严格的要求尤其是在图形库和基础依赖的版本上。CentOS 6.5的库文件版本比如glibc与INNOVUS 15.20的兼容性经过了很多项目的实际验证可以说是“久经考验”的组合。在新版系统上你可能会遇到各种奇怪的库冲突、图形界面启动失败的问题排查起来非常耗时。所以在虚拟机里复现一个和生产环境一模一样的CentOS 6.5是最高效、最稳妥的做法。我这次实战用的虚拟机平台是VMware Workstation 14 Pro版本号是14.1.2。选择这个版本也是因为它对老系统客户机驱动的支持比较成熟稳定。你当然可以用更新的VMware或者VirtualBox但记得在创建虚拟机时客户机操作系统类型一定要明确选择“Red Hat Enterprise Linux 6”或“CentOS 6”这会影响虚拟机底层驱动的安装。系统镜像就用“CentOS-6.5-x86_64-minimal.iso”这个最小化安装版干净没有多余的软件方便我们从头配置。安装过程很简单记得给系统盘分配足够的空间我建议至少80GB因为EDA工具本身加上各种库和中间文件体积不小。网络配置选择“桥接模式”或者“NAT模式”都可以只要能连上互联网或者你的内部Yum源服务器就行。安装完成后第一件事就是用root用户登录然后运行yum update更新一下系统但千万不要升级内核或者关键库的大版本我们只需要安装安全补丁即可。2. 安装依赖包一个都不能少的“搭积木”游戏安装EDA工具尤其是像Cadence这样的商业软件最繁琐也最容易出错的就是系统依赖包的安装。你可以把它想象成搭积木INNOVUS是那个最顶层的、最华丽的城堡但它下面需要一层又一层特定形状的积木系统库来支撑。在CentOS 6.5上很多新系统默认就有的库它都没有需要我们手动一个个找出来装上。原始文章里给出了很长的yum install命令列表那是核心但我想结合我踩过的坑给你解释一下为什么需要这些包以及如何更聪明地搞定它们。首先配置本地Yum源是重中之重。因为CentOS 6.5的官方源早就停止了更新直接使用会报错。我的做法是先挂载CentOS 6.5的安装ISO镜像到虚拟机比如挂载到/mnt/cdrom。然后创建一个本地源配置文件cd /etc/yum.repos.d/ mkdir bak mv *.repo bak/ # 先备份原有源 vi local.repo在local.repo文件里输入以下内容[local] nameLocal CentOS 6.5 baseurlfile:///mnt/cdrom enabled1 gpgcheck0保存退出后运行yum clean all和yum makecache。这样我们就能从本地光盘安装大部分基础包了。对于本地源里没有的包或者需要从网上下载的你可以配置一个国内的CentOS 6 Vault源比如阿里云的镜像作为补充。网上有很多教程这里不展开。接下来就是执行那串长长的安装命令了。我把它分成了几个部分方便你理解第一部分Cadence INNOVUS核心图形和运行库。这些是软件启动和图形界面显示的基石。ksh、libXext、libXtst、libXt、openmotif这些都是必须的。特别要注意libGLU.so.1这个包在CentOS 6上安装它时必须加上--setoptprotected_multilibfalse这个参数否则会因为32位和64位库的冲突而安装失败。这个坑我踩过错误提示会让你摸不着头脑。第二部分字体包。这是最容易被忽略但一旦出问题又最让人头疼的部分。INNOVUS的图形界面需要显示大量文本和符号缺少字体会导致界面乱码、菜单显示不全甚至崩溃。所以那一大串xorg-x11-fonts-*的安装命令虽然看起来吓人但请务必执行。你可以直接复制粘贴原始文章里的那条很长的yum install xorg-x11-fonts-*命令它会安装几乎所有可能用到的字体类型。第三部分兼容库和桌面环境。compat-libstdc-33.i686、glibc.i686这些是32位兼容库因为很多EDA工具的历史二进制文件是32位的即使在64位系统上运行也需要这些库。yum groupinstall安装的“Desktop”等组是为了提供一个完整的图形化桌面环境比如GNOME。虽然理论上在命令行启动INNOVUS也可以但有完整的桌面环境在调试和日常使用中会方便很多。安装过程中可能会提示alliance等几个包找不到这很正常直接忽略就行不影响主体功能。3. 系统配置那些不起眼却关键的“开关”依赖包装好了就像积木都备齐了。但直接去搭城堡还是会散架。我们还需要进行一些系统层面的配置相当于把地基打牢把积木之间的卡扣调整好。这一步的细节直接决定了后续安装过程是顺风顺水还是一路报错。3.1 创建必要的软链接软链接相当于给一个文件或命令起了个“别名”。INNOVUS的安装脚本或运行时可能会去寻找一个旧版本命令或库文件但我们的系统里只有新版本。这时创建一个指向新版本的软链接就能“骗过”它。ln -s /usr/bin/awk /bin/awk确保/bin目录下能找到awk命令。ln -s /usr/lib/libstdc-3-libc6.2-2-2.10.0.so /usr/lib/libstdc-libc6.1-1.so.2这是一个非常经典的兼容性操作解决特定C运行库的符号链接问题。ln -s /bin/gunzip /bin/uncompress有些老脚本习惯用uncompress命令。在/lib64和/usr/lib64下创建libreadline和libhistory的软链接是为了满足某些工具对so.5版本库的调用需求而系统默认安装的是so.6。3.2 调整tmp目录权限Cadence的安装程序在解压和临时文件处理时会对/tmp或/usr/tmp有写操作。确保这些目录有正确的权限非常重要。执行chmod 755 /usr/tmp就是赋予所有用户读取和执行权限赋予所有者完全权限。这能避免安装过程中出现“权限被拒绝”的错误。3.3 配置主机名和回环地址这是至关重要的一步关系到License服务器的识别。很多朋友的License配置失败问题就出在这里。先用uname -n或者hostname命令查看当前系统的主机名假设是eda。编辑/etc/hosts文件确保有一行将主机名指向127.0.0.1本地回环地址。就像这样127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 eda ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6重点是127.0.0.1后面要跟上你的主机名eda。这样软件在寻找名为eda的License服务器时就会找到本机。为了让主机名永久生效还需要编辑/etc/sysconfig/network文件修改HOSTNAMEeda。然后运行hostname eda让修改立即生效。完成所有这些配置后强烈建议重启一次系统reboot。这能让所有的配置更改尤其是主机名和网络设置完全生效避免后续步骤出现灵异问题。4. 安装Cadence INNOVUS与安装器“斗智斗勇”好了前期铺垫了这么久终于要请出主角了。你需要准备好四个东西Cadence通用安装器IScape、INNOVUS 15.20基础安装包、对应的补丁文件、以及有效的License文件。通常这些文件是以压缩包形式存在的。4.1 解压并运行安装器我习惯在/eda目录下构建整个环境结构清晰。首先创建目录并解压安装器mkdir -p /eda/cds/Installer cd /path/to/your/installer_package # 切换到你的安装包所在目录 tar -zxvf IScape04.23-s010lnx86.t.Z -C /eda/cds/Installer/解压后进入安装器的bin目录运行图形化界面cd /eda/cds/Installer/iscape/bin ./iscape.sh如果一切顺利一个Java写的图形化安装界面应该会弹出来。如果没弹出来提示找不到Java或者图形错误请返回去检查第二步的依赖包尤其是libXp、openmotif和那些字体包是否都装全了。IScape这个安装器虽然老但它是安装所有Cadence工具的统一入口界面逻辑都差不多。4.2 通过IScape安装INNOVUS在IScape界面中选择“Install Software”然后它会让你指定一个“CDS_ROOT”目录这就是你Cadence工具的顶级安装目录我们设为/eda/cds。接着选择“Local Directory”或“Media”方式指向你存放INNOVUS15.20.000_Base安装包的位置。安装过程基本上是“下一步”到底但有几个地方要注意安装路径保持默认或按需修改。我建议就安装在/eda/cds/INNOVUS15.20下结构清晰。选择要安装的产品在列表里勾选“INNOVUS”或“Encounter”INNOVUS在早期版本中也叫Encounter。空间检查确保你的磁盘空间足够建议预留20GB以上。点击安装后就是漫长的等待。安装器会解压大量的文件。这个过程可能会花上半小时到一小时取决于你的虚拟机磁盘速度。喝杯咖啡耐心等待。4.3 打入补丁基础安装包只是“纯净版”通常需要打入补丁Patch来修复bug或增加功能。补丁一般是一个sh脚本。cp -rp /path/to/cadence_patch /eda/cds/ cd /eda/cds/cadence_patch ./cadence_patch.sh /eda/cds/INNOVUS15.20/运行补丁脚本并指定你的INNOVUS安装根目录作为参数。脚本会自动替换或更新一些文件。完成后这个cadence_patch目录就可以删除了。4.4 配置License这是临门一脚也是最容易卡住的地方。你需要一个有效的license.dat文件。将其拷贝到规划好的目录比如/eda/setups/license/。mkdir -p /eda/setups/license cp /path/to/license.dat /eda/setups/license/然后你必须编辑这个license.dat文件用vi打开它。找到里面以SERVER开头的一行大概长这样SERVER your_hostname ANY 5280你需要把这里的your_hostname替换成你实际的主机名也就是我们之前在/etc/hosts里配置的那个eda。同时确保后面的端口号比如5280没有被防火墙阻挡。修改后保存。5. 用户与环境变量为日常使用做好准备我们不可能一直用root用户来运行EDA工具这既不安全也不符合规范。需要创建一个专门的普通用户。useradd eda001 passwd eda001 # 随后设置密码接下来需要把这个用户的默认shell改为csh或tcsh因为Cadence的工具链很多脚本是基于C Shell的。chsh -s /bin/csh eda001最关键的一步来了配置环境变量。切换到eda001用户编辑它的家目录下的.cshrc文件如果用的是bash则是.bashrc。su - eda001 vi ~/.cshrc在文件末尾添加以下内容# Cadence INNOVUS 15.20 Environment setenv CDS_ROOT /eda/cds setenv LM_LICENSE_FILE 5280eda # 注意格式端口主机名 setenv OA_HOME /eda/cds/INNOVUS15.20/oa_v22.50.028/ set path ($CDS_ROOT/INNOVUS15.20/bin $path) set path ($CDS_ROOT/INNOVUS15.20/tools/bin $path) set path ($CDS_ROOT/INNOVUS15.20/tools/dfII/bin $path)这里有几个重点LM_LICENSE_FILE这里我用了5280eda的格式指向本机eda的5280端口。这和你license.dat文件里的SERVER行必须对应。你也可以用/eda/setups/license/license.dat这种指向文件的方式但端口主机名的方式更灵活。OA_HOME这个路径必须正确它指向INNOVUS安装目录下的oa_v*子目录。你需要自己ls一下/eda/cds/INNOVUS15.20/确认具体的文件夹名称然后修改这里的路径。这个变量不对软件启动会直接报错。PATH把INNOVUS的几个关键bin目录加到路径最前面这样你在终端里直接输入innovus就能启动软件了。保存文件后执行source ~/.cshrc让环境变量生效或者直接退出重新登录eda001用户。6. 启动验证与常见问题排错激动人心的时刻到了在终端里以eda001用户身份直接输入innovus或者innovus -gui如果一切配置完美你应该能看到INNOVUS的启动画面然后是它的主图形界面。第一次启动可能会慢一点。如果成功启动了你可以创建一个简单的测试设计或者打开一个示例文件看看布局布线等基本功能是否正常。但事情往往没那么顺利。下面是我遇到过的几个典型问题及解决办法问题一启动时报错提示找不到License。检查1echo $LM_LICENSE_FILE看环境变量设置是否正确。是否是5280你的主机名主机名是否和/etc/hosts、license.dat里的一致检查2运行lmstat -a -c 5280eda需要License管理工具lmutil通常随License包提供查看License服务器状态是否正常。如果没反应可能是License守护进程没启动或者防火墙挡住了端口。检查3直接用vi打开license.dat检查SERVER行主机名和端口检查DAEMON行路径是否正确。问题二启动时崩溃报错与图形或库相关。检查1在终端里运行innovus -nogui看能否进入命令行模式。如果能那问题很可能出在图形环境。回头仔细检查第二步中所有libX*、openmotif和字体包是否安装成功。检查2运行ldd /eda/cds/INNOVUS15.20/bin/innovus查看二进制文件依赖的库是否都能找到。如果有not found就缺哪个装哪个。检查3检查$OA_HOME环境变量是否设置正确路径是否存在。问题三软件界面字体显示为方块或乱码。这几乎可以肯定是字体包没装全。把第二步里那行长长的安装xorg-x11-fonts-*的命令再执行一遍确保所有字体包都安装上。安装后可能需要重启X Window注销再登录才能生效。把这些问题都解决了看到INNOVUS那个熟悉的界面弹出来那种成就感还是挺足的。整个过程就像在调试一个精密的古董仪器每一步都需要耐心和细致。最后再啰嗦一句这套方法和步骤是针对特定版本组合的。如果你用的是其他版本的Cadence工具或其他Linux发行版思路是相通的但具体的依赖包名、环境变量名可能需要调整。最好的老师就是软件的安装日志和报错信息多看看它们总能找到线索。