ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CentOS 7安装Cadence IC618全程实战:从零配置到PDK集成

CentOS 7安装Cadence IC618全程实战:从零配置到PDK集成 不废话直接进入正题。这篇文章写给两类人一类是在公司服务器上给团队搭EDA环境的运维或者CAD工程师另一类是自己在工作站上折腾、想用开源PDK跑跑仿真的IC设计初学者。IC618也就是Cadence Virtuoso的6.18版本目前绝大多数模拟/混合信号设计流程还是跑在它上面而CentOS又是服务器上最常见的发行版这俩组合在一起基本就是流片公司里的“标准配置”。我自己前后在不下五台不同配置的服务器上装过IC618从裸机CentOS 7.9到带NVIDIA显卡的工作站都踩过一遍所以这篇文章里的每一步都是实测过的。内容会覆盖系统准备、安装流程、环境变量、远程显示、常见坑排查最后附带PDK集成建议。只要你按步骤来大概率能在半天内跑起一个能用的virtuoso。1. 安装前的系统准备CentOS版本选型和依赖环境1.1 为什么CentOS 7.x还是最稳妥的选择Cadence官方对IC618的系统支持列表里RHEL 7.x和RHEL 8.x都在支持范围内。CentOS作为RHEL的二进制兼容发行版自然也是实际部署中的主力。我的建议是如果服务器是全新部署优先选CentOS 7.9因为IC618发布的主要验证环境就是基于RHEL 7.x的glibc版本、系统库依赖都在这个体系下测试得最充分。很多人在CentOS 8或者Stream上跑IC618也成功过但没必要冒险。特别是如果你还要用老版本的Calibre、Assura这些配套工具它们的兼容性往往比IC618更保守CentOS 7.9基本是最大公约数。CentOS 7.9的ISO可以从清华镜像站或者其他镜像源下载选CentOS-7-x86_64-Minimal-2009.iso即可安装时勾选“Development Tools”和“X Window System”两个组前者提供gcc、make这些基础编译工具后者是图形界面的前提。服务器上不需要装完整的GNOME桌面但X Window System和字体组件必须有否则virtuoso的GUI起不来。1.2 磁盘空间规划IC618远比你想象的占地方IC618的安装包解压之后base版本大约占用15GB左右如果加上hotfix、更新包轻松超过20GB。这还不算PDK库、工艺文件和各种第三方工具。我见过有人把IC618装在系统盘上结果跑了两三个PDK之后磁盘爆满整个服务器直接卡死。建议规划如下单独挂载一个/eda分区至少200GB起步如果不差钱直接上1TB因为PDK和仿真数据涨起来非常快。/tmp目录至少预留10GB空闲空间InstallScape在安装过程中会在/tmp下写临时文件空间不足会导致安装中断。如果用的是虚拟机比如VMware装的CentOS系统装完后才发现磁盘不够可以给虚拟机动态扩容然后在guest系统里用growpart和resize2fs把新增空间扩到根分区或新建/eda分区。磁盘挂载这块有个细节如果是新增一块虚拟磁盘用fdisk分区后需要改/etc/fstab加一行挂载项避免重启后分区丢失。我习惯的做法是mkfs.xfs /dev/sdb1 mkdir /eda echo /dev/sdb1 /eda xfs defaults 0 0 /etc/fstab mount -a df -hxfs是CentOS 7默认的文件系统不需要单独装包。挂载完确认一下/eda有写入权限即可。1.3 依赖库安装清单CentOS 7 minimal安装完以后系统只有最基本的库直接跑IC618的安装脚本大概率报错。你需要先装齐这些依赖yum install -y ksh csh tcsh glibc glibc-devel glibc.i686 \ libgcc libgcc.i686 libstdc libstdc.i686 \ elfutils-libelf elfutils-libelf-devel \ libX11 libX11-devel libXext libXext-devel \ libXrender libXrender-devel libXrandr libXft \ fontconfig fontconfig-devel freetype freetype-devel \ mesa-libGL mesa-libGLU mesa-libGLES \ libXp libXp-devel motif motif-devel \ openmotif openmotif-devel \ xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi \ xorg-x11-fonts-Type1 xorg-x11-fonts-misc \ xorg-x11-utils xorg-x11-xauth \ tcl tcl-devel tk tk-devel \ libnsl libnsl2.i686 compat-libstdc-33 \ redhat-lsb redhat-lsb-core注意glibc.i686和libstdc.i686这两个32位库IC618的启动脚本里有一部分工具链还是32位的缺了会直接提示No such file or directory而且是那种很迷惑的错误——文件明明存在执行却说找不到。原因就是动态链接器loader缺少32位库。这个问题后面在踩坑章节还会详细讲。另外有些机器上还需要libXft.so.2和libXrender.so.1这两个图形库virtuoso的GUI渲染依赖它们。用ldd命令可以检查ldd /eda/cadence/IC618/tools/dfII/bin/virtuoso | grep not found有缺失的库记下名字用yum provides */库名来定位是哪个包提供的再安装对应包。1.4 网络和主机名配置IC618的license使用flexlm机制服务器和客户端之间通过TCP/IP通信。安装前需要确认主机名解析正常。/etc/hosts里必须有本机主机名和IP的映射否则license校验会失败报错信息也不够直观。我在一台机器上遇到过hostname命令返回的是localhostlicense server始终起不来改完/etc/hosts就好了。防火墙开放license端口。Cadence默认的license端口是5280如果有专门的license server则要确保客户端能访问该服务器的5280端口。CentOS 7用firewalld管理防火墙firewall-cmd --permanent --add-port5280/tcp firewall-cmd --reload如果懒得折腾网络策略在纯内网环境下直接systemctl stop firewalld systemctl disable firewalld也问题不大但生产环境不建议这么干。2. IC618安装核心流程从安装包到license server2.1 用户与目录规划Cadence工具明确规定不能用root运行这是很多初装者容易忽略的。用root执行virtuoso轻则启动报错重则把$HOME下的配置文件权限搞乱后患无穷。建议专门创建一个EDA用户useradd -m -d /home/eda eda passwd eda目录规划上我的习惯是这样/eda/cadence/IC618IC618主安装目录/eda/cadence/installerInstallScape安装工具目录/eda/licenselicense文件存放目录/eda/pdk各工艺PDK库目录/home/eda用户家目录存放.cdsinit、.cdsenv等配置文件安装包放在/eda/install_packages下安装完可以删掉但建议保留一份备份在NAS上方便其他同事用时不用重新下载。2.2 用InstallScape安装IC618 base版本Cadence的安装包官方提供的是一个InstallScape平台工具通过它来安装所有产品。步骤如下解压安装包tar -xvf IC_618_Base.tar.gz tar -xvf IC_618_hotfix.tar.gz运行InstallScapecd /eda/installer ./iscape.sh如果报缺少Java环境先装openjdkyum install -y java-1.8.0-openjdk在InstallScape GUI中选择Install Products指定安装包的路径和安装目标目录/eda/cadence产品列表勾选IC618。整个过程会有交互式确认注意安装过程中会询问license文件路径这一步可以先跳过或者随意填路径后面通过环境变量指定也是可以的。InstallScape有时在CentOS 7上也会出现窗口渲染异常原因是缺少libXp库上面依赖清单里已经包含。如果GUI实在起不来可以在InstallScape目录下用命令行方式安装./iscape.sh -batch install -installer /eda/cadence/installer -source /eda/install_packages -target /eda/cadence IC618原理差不多核心还是把文件解压到目标目录并设置好目录结构。实测中GUI安装更直观命令行方式适合脚本化部署。2.3 Hotfix更新包实际生产必须打IC618 base装完接着要打hotfix。Hotfix包里包含大量bug修复和性能优化尤其是PDK适配和仿真器的改进。不打hotfix直接跑PDK经常会遇到莫名其妙的skill脚本错误。Hotfix的安装方式和base一样在InstallScape中选择Update指定hotfix安装包路径即可。需要注意的是hotfix的安装包编号要高于base版本号比如base是181hotfix是221打完hotfix后IC618目录下会多出tools.lnx86等更新后的工具链。判断hotfix是否生效可以看安装目录下的版本文件cat /eda/cadence/IC618/share/install/version.txt2.4 License配置与启动license serverIC618的license文件通常是.lic后缀内容里包含SERVER和VENDOR行。假设license文件在/eda/license/cadence_license.lic那么配置步骤如下确认license文件里的主机名和端口head -3 /eda/license/cadence_license.lic正确的格式类似SERVER hostname 001122334455 5280 VENDOR cdsd /eda/cadence/IC618/tools/bin/cdsd如果SERVER那一行无法启动逐项检查hostname是否和服务器实际主机名一致、MAC地址是否是本机网卡的第三列端口号比如5280是否被占用。启动license server/eda/cadence/IC618/tools/bin/lmgrd -c /eda/license/cadence_license.lic -l /eda/license/lmgrd.log查看日志确认license已启动tail -30 /eda/license/lmgrd.log看到类似Server started on hostname这样的信息就说明起来了。测试license可用性/eda/cadence/IC618/tools/bin/lmstat -c 5280localhost -a这里能列出已签发的feature。如果显示不出feature大概率是license文件格式或MAC地址的问题。IC618的license工具链里lmstat、lmdown、lmhostid这些命令都在tools/bin下可以直接用绝对路径调用。启动脚本可以写成一个systemd服务这样重启后license自动拉起[Unit] DescriptionCadence License Server Afternetwork.target [Service] Typeforking ExecStart/eda/cadence/IC618/tools/bin/lmgrd -c /eda/license/cadence_license.lic -l /eda/license/lmgrd.log Usereda Groupeda [Install] WantedBymulti-user.target保存到/etc/systemd/system/cadence-license.service然后systemctl daemon-reload systemctl enable cadence-license systemctl start cadence-license3. 环境变量配置让virtuoso找到工具链和license3.1 配置文件选bash还是cshCadence老派文档里默认csh/tcsh很多PDK自带的安装脚本也要求csh环境。但现在主流工作环境是bash两个都会遇到。我的建议是系统用户的登录shell用bash但在.bashrc里面对Cadence相关工具时必要时显式调用csh脚本或使用bash兼容写法。IC618更多的是读取环境变量来定位工具链对shell类型没有强制要求。3.2 核心环境变量详解打开/home/eda/.bashrc追加如下内容export CDS_INST_DIR/eda/cadence/IC618 export CDS_ROOT/eda/cadence/IC618 export CDS_INSTALL_DIR/eda/cadence/IC618 export PATH$CDS_INST_DIR/tools/bin:$CDS_INST_DIR/tools/dfII/bin:$PATH export CDS_LIC_FILE5280localhost export LM_LICENSE_FILE5280localhost export CDS_LOAD_ENVCWD export CDS_AUTO_64BITALL export OA_HOME$CDS_INST_DIR/oa_v22.60.040 export LD_LIBRARY_PATH$CDS_INST_DIR/tools/lib/64bit:$CDS_INST_DIR/tools/dfII/lib/64bit:$OA_HOME/lib/linux64:$LD_LIBRARY_PATH export DISPLAY:1 export LANGC逐个说下这些变量的作用因为很多人都是照抄出了问题不知道改哪里CDS_INST_DIRCadence安装主目录。几乎所有工具脚本都会用到这个变量来定位二进制文件写错了直接全局崩溃。CDS_LIC_FILE和LM_LICENSE_FILE指定license server地址。IC618优先读取CDS_LIC_FILE如果它指向的server不可用就不会自动去尝试LM_LICENSE_FILE所以两个变量都要配置且对齐到同一个server。CDS_LOGGING很多版本默认会把启动日志写到$HOME/CDS.log没什么用可以设置export CDS_LOGGING0关掉。CDS_AUTO_64BITALL强制以64位模式启动所有Cadence工具对IC618来说这是必须的它内部已经全面64位化。OA_HOMEOpenAccess数据库的路径IC618的版图库数据格式基于OpenAccessPDK和工艺库的读写都依赖这个库。这个变量如果缺失启动virtuoso时往往在加载PDK的环节报错。3.3 多版本工具链共存的小技巧如果服务器上同时装了IC617和IC618或者还有MMSIM、EXT建议把环境变量写成分段式alias cadenv_ic618export CDS_INST_DIR/eda/cadence/IC618; export PATH$CDS_INST_DIR/tools/bin:$CDS_INST_DIR/tools/dfII/bin:$PATH; export CDS_LIC_FILE5280localhost; export OA_HOME$CDS_INST_DIR/oa_v22.60.040 alias cadenv_ic617export CDS_INST_DIR/eda/cadence/IC617; export PATH$CDS_INST_DIR/tools/bin:$CDS_INST_DIR/tools/dfII/bin:$PATH; export CDS_LIC_FILE5280localhost; export OA_HOME$CDS_INST_DIR/oa_v22.40这样开会话后先敲cadenv_ic618再启动工具互不干扰。特别是tran仿真要用到MMSIM版本不同时这种切换方式非常实用。3.4 验证环境变量是否生效source ~/.bashrc which virtuoso virtuoso -V能打印出版本信息说明环境变量基本正确。如果which virtuoso找不到检查PATH路径是否写对tools/dfII/bin是在tools/bin之外独立存在的一个目录IC618的virtuoso可执行文件在tools/dfII/bin下。4. 远程图形界面VNC配置与显示问题实战4.1 服务器上跑GUI的前提IC618的virtuoso是图形界面工具在服务器上使用要么X11转发要么VNC远程桌面。X11转发通过SSH就可以配置简单但带宽高时卡顿严重尤其是操作版图时几乎没法用。VNC是做模拟设计推荐的方案延迟低、流畅度高。VNC的配置流程yum install -y tigervnc-server vncpasswd eda创建~/.vnc/xstartup内容如下#!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS exec gnome-session 或者更轻量地直接启动窗口管理器#!/bin/sh exec xfce4-session 如果没有装桌面先装yum install -y xfce4-session xfce4-terminal。启动VNCvncserver :1 -geometry 1920x1080 -depth 24然后客户端用VNC Viewer连接服务器IP:5901。DISPLAY:1这个环境变量在前面已经设置了就是给VNC用的。4.2 字体问题virtuoso界面中文乱码和字符显示VNC连上以后、启动virtuoso之前建议先把字体目录检查一下。IC618的GUI对字体路径很敏感我遇到过两次启动virtuoso后菜单栏全是空白方块原因都是X11字体没有安装完整。安装基础字体yum install -y xorg-x11-fonts-ISO8859-1-100dpi \ xorg-x11-fonts-ISO8859-1-75dpi \ xorg-x11-fonts-cyrillic然后刷新字体缓存fc-cache -fv如果还有中文字体乱码问题检查/etc/fonts/fonts.conf是否包含了中文字体路径。其实最省事的办法在.bashrc里统一设置export LANGC让virtuoso整个界面走英文彻底规避中文环境下字体回退的问题。这个方法我用到现在没有副作用。4.3 图形库缺失导致的白屏、闪退SSH转发方式启动virtuoso时如果遇到窗口闪现后立刻消失终端报错内容包含libGL error或者Mesa字样基本可以断定是OpenGL库缺失。VNC环境下则表现为版图窗口无法刷新拖动图层直接花屏。排查方法是先手动启动一次virtuoso看错误输出virtuoso -nograph这个命令会尝试无图形启动走到交互式shell说明GUI之外的工具链没问题。然后再正常启动逐层定位是库的问题还是显示服务器的问题。如果确认是libGL相关安装mesa库yum install -y mesa-libGL mesa-libGLU mesa-libGLES \ mesa-dri-driversNVIDIA显卡的服务器还需要装nvidia-settings和对应的CUDA驱动virtuoso对OpenGL硬件加速的支持不算特别好但装了驱动以后平滑度明显提升。4.4 进程与资源限制多用户服务器上EDA工具吃内存很厉害。IC618版本的virtuoso在大型版图上单进程可以轻松占到20GB以上RAM。建议检查系统层面几个限制打开文件数限制默认1024太低仿真时会产生大量临时文件很可能报too many open files。在/etc/security/limits.conf里加上eda soft nofile 65536 eda hard nofile 65536内核进程数限制大规模仿真时多核并行会启动几百个线程默认线程数限制也可能触发。共享内存df -h /dev/shm检查一下如果空间不足某些仿真器会报共享内存错误。可以修改/etc/fstab把/dev/shm设大一些或者直接在虚拟机上增加内存。5. 启动验证与PDK集成装好东西能跑起来才是终点5.1 跑通一次完整的virtuoso启动环境变量配置好了license也能签出接下来实际启动验证。以eda用户登录执行source ~/.bashrc cd ~ virtuoso 正常情况下一个CIWCommand Interpreter Window会弹出来里面是Cadence的欢迎日志和命令行交互区域。看到log里没有warning开头的报错基本就能确定安装没问题。如果CIW窗口弹出来又立刻关闭大概率是license没签下来。CIW窗口顶部会有一行卡住的时间同时在启动终端会输出license错误码。5.2 PDK安装与工艺库绑定现在IC618有了但没有PDK环境virtuoso只是一个空壳。以某个常见的开源PDK为例安装时在IC618的Library Manager里通过File - New - Library创建库然后通过PDK的安装脚本完成techfile绑定。PDK安装时的关键步骤指定OA版本PDK安装脚本会询问OA版本IC618默认使用OA 22.60安装包一般会自动识别。设置CDS_LIC_FILE有些PDK附带库的授权信息需要指向license server否则库能创建但无法读取底层器件参数。库路径规划库文件不要放在用户目录下容易因为权限问题导致其他用户无法访问。建议放在/eda/pdk下并设置好用户组权限。安装完成后在CIW窗口里执行ddGetObj(工艺库名)能返回库对象就说明PDK已经正确加载到virtuoso中。5.3 配置.cdsinit和.cdsenv每个用户的~/.cdsinit是virtuoso启动时的初始化脚本里面可以预设一些常用设置。我的cdsinit里一般包含load( strcat( getShellEnvVar(CDS_INST_DIR) /tools/dfII/samples/local/cdsinit ) )这个代码的作用是加载Cadence自带的示例配置里面包含最基本的skill路径和快捷键设置。~/.cdsenv则存放工具环境参数比如保存文件时的自动备份数量、版图显示网格大小等。这些配置在virtuoso里通过Options - Environment设置后会自动写入。5.4 仿真验证ADE L里跑一次DC仿真PDK装好后建议从PDK自带的example library里开一个原理图在ADE LAnalog Design Environment L里跑一次DC工作点仿真来验证全链路。仿真器选用spectre设置好model library路径一般在PDK的models目录下仿真类型选dc跑完后能在结果浏览器里看到器件的工作点参数。整个过程没问题说明从virtuoso到MMSIM仿真器的链路是通的。如果这步卡住检查一下MMSIM是否独立安装过还是用的IC618自带的spectre。通常建议单独安装最新版MMSIM并把它的bin目录放在PATH的最前面因为IC618自带版本往往不带最新工艺角模型支持。6. 安装和日常使用中的高频坑以及我的排查手法6.1 装好了却启动不了先按这个顺序排查每次有同事找我报障“virtuoso启动不了”我都是按照一套固定顺序排查效率很高第一步看报错输出。终端里直接跑virtuoso不要每次都用放后台。前台启动能直接看到错误码。第二步确认license状态。lmstat -a能看到当前签发的feature。常见的license错误码含义如下表错误码含义常规处理方法211license server连不上ping hostname检查防火墙确认lmgrd进程存活212license feature不存在或已过期检查license文件内容确认feature名、版本、有效期213license被占用等待或重启license server215license server拒绝连接检查端口号是否被其他程序占用217时间戳问题校准系统时间第三步检查动态库缺失。ldd -r加上grep not found前面已经提过是万能命令。第四步检查文件权限。如果安装目录的所有者是root而运行用户是eda很多二进制文件没有执行权限。安装完以后我习惯执行chown -R eda:eda /eda/cadence chmod -R 755 /eda/cadence6.2 libXp缺失引发的诡异问题CentOS 7 minimal安装时libXp默认不带IC618的InstallScape启动时如果提示error while loading shared libraries: libXp.so.6就到/usr/lib64/libXp.so.6确认一下。这个库在CentOS 7的官方源里已经放到了optional repo所以yum install --enablerepoepel libXp如果还装不上可以直接下载rpm包本地安装。libXp主要是老版本Motif应用的依赖IC618里的某些老模块还在用它装完就好了。6.3 32位库缺失的“文件明明在却执行不了”坑这个问题我在前面提过这里展开说。现象是/eda/cadence/IC618/tools/bin/lmgrd -bash: /eda/cadence/IC618/tools/bin/lmgrd: No such file or directoryls -l一看文件存在权限也对但就是提示找不到。这不是文件名问题是32位可执行文件在64位纯系统环境下缺少32位动态链接器。CentOS 7默认装了glibc的64位版本而lmgrd是32位程序需要yum install -y glibc.i686装完再执行问题消失。不仅是lmgrdInstallScape的某些组件、老的vmanager工具链也会踩这个坑。sysctl里看到类似问题第一时间想是不是32位库缺失。6.4 license server端口冲突服务器上如果装了其他使用flexlm的软件比如Synopsys的license或者多个Cadence版本共用一个license server端口一旦冲突lmgrd无法绑定端口license自动挂掉。排查方法netstat -tlnp | grep 5280有进程占用了就换一个不冲突的端口比如5288。或者用-i参数指定两个lic文件lmgrd -c cadence.lic:synopsys.lic -l /eda/license/lmgrd.log6.5 运行时间长以后virtuoso变卡这个问题严格说不是安装阶段的但用户装上跑了一周后会来问。virtuoso运行时间长了以后内存碎片化版图操作卡顿最简单有效的办法是定期重启virtuoso或者在CIW里执行ipcResetProcess把CIW的IPC连接重置一下。如果是长时间跑仿真后的GUI卡顿还可以执行hiResetAll重置窗口系统。这两个skill命令是Cadence工程师常用来“保命”的。6.6 hotfix版本不一致导致的PDK加载失败还有一种很隐蔽的问题base版本和hotfix版本之间跨度太大PDK加载时报Mismatch OA version错误。这是因为hotfix通常自带新版OpenAccess库和PDK编译时用的OA版本不一致。处理方式有两个如果不需要某些hotfix新特性退回base版本跑PDK。在oaConfig中设置setenv OA_HOME指向PDK编译时对应的OA版本强制PDK用匹配的OA库。一般情况下较新的PDK版本都会适配较新的hotfix所以建议大家安装时就把IC618 hotfix打到最新再装PDK这个次序不要反了。7. 安装完成后的加固与日常维护装好能用只是第一步服务器上的EDA环境长期稳定更重要。几个我实践中觉得值得做的事7.1 定期备份配置目录/home/eda下的.cdsinit、.cdsenv、.cdsplotinit、.Xauthority这些配置文件每次调优后都用脚本同步备份到/EDA/backup目录。服务器重装或者迁移时这些配置比安装包还珍贵。7.2 统一管理用户权限如果多个人共用服务器/eda目录下的权限规划不要图省事。建立cadence用户组把PDK库所在目录组权限设为可读个别需要写的目录比如仿真工作目录按项目划分。做一个简单的初始化脚本放在/etc/profile.d/cadence.sh里所有用户登录时自动加载环境变量避免每个人自己配导致版本混乱。但注意CDS_LOAD_ENV这种变量在共享脚本里设置即可个性化的.cdsenv留在各家自己的目录。7.3 性能调优CPU亲和性和内存分配跑大规模蒙特卡洛仿真时让仿真进程绑定在指定CPU核上能避免NUMA架构下的内存访问延迟。CentOS 7下用taskset手动设置或者numactl --interleaveall均衡分配内存。如果IC618跑在VMware虚拟机上注意给虚拟机开启CPU热插拔和内存热添加功能这样后端仿真资源不够时不用关机就能动态扩大。7.4 日志清理仿真跑多了$HOME/simulation和/tmp下全是临时文件动辄几十GB。写一个定时任务每周清理超过7天的中间文件find /home/eda/simulation -maxdepth 2 -type d -mtime 7 -exec rm -rf {} \;注意不要清掉还在运行中的仿真目录清理前先用ps确认一下。最后再说个细节有同事习惯在root下装了IC618后把环境变量写在/root/.bashrc里然后日常用su eda切用户去跑virtuoso结果发现环境变量全丢了。这个问题本质是su和su -的区别用su - eda做一个完整登录切换所有用户级配置文件才会被重新加载。这个小坑不算复杂但很多刚上手维护EDA服务器的人都会在上面耽误几分钟。如果看完这篇还有安装过程中卡住的点先对照第六节的排查表逐项过一遍基本能覆盖九成的问题。
返回列表