ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

从零搭建CentOS 7 EDA环境:IC618+SPECTRE18+Calibre2019全流程指南

从零搭建CentOS 7 EDA环境:IC618+SPECTRE18+Calibre2019全流程指南 1. 从零开始的EDA环境构建为什么是这套组合如果你刚踏入模拟集成电路设计的大门或者从其他领域转过来面对的第一个硬骨头往往不是电路理论而是那个传说中的“环境搭建”。论坛里、群里前辈们总是轻描淡写地说“装个Cadence跑个仿真看看。”但当你真正动手会发现从操作系统到仿真工具每一步都可能是个深坑。今天我就以一个过来人的身份带你完整走一遍从裸机CentOS 7到成功仿真一个CMOS反相器的全流程。这不是一份冷冰冰的官方文档而是我踩过无数坑后总结出的“生存指南”。我们选择的软件栈——CentOS 7 IC618 SPECTRE18 Calibre2019——在今天看来或许不是最新潮的但它却是工业界和学术界经过时间验证、最为稳定和普及的一套黄金组合。IC618作为Virtuoso平台的核心提供了强大的原理图输入和版图设计环境SPECTRE18是业界标准的模拟电路仿真器精度和可靠性有保障而Calibre2019则是物理验证DRC/LVS的标杆工具。至于操作系统CentOS 7以其极致的稳定性和对老硬件、老软件良好的兼容性成为了众多EDA环境的首选。虽然CentOS 7已停止维护转向Rocky Linux或AlmaLinux是未来趋势但对于学习、内部项目或特定工具链依赖这套环境依然是最务实、资料最全的起点。整个流程可以概括为三个核心阶段搭建稳固的底层系统CentOS 7、安装与配置核心EDA工具、最终完成一个简单电路CMOS反相器的仿真验证。我们将重点关注那些官方手册不会细说但又直接决定成败的细节比如依赖库的完整列表、诡异的权限问题、许可证配置的玄学以及如何让这几个“大家伙”和谐共处。2. 基石CentOS 7最小化安装与深度调优很多人觉得操作系统安装就是“下一步”到底但在EDA环境下一个未经调优的“毛坯”系统后期会带来无穷无尽的依赖库缺失和性能问题。我们的目标不是装一个通用的桌面系统而是打造一个为计算密集型任务服务的、干净且强壮的工作站。2.1 镜像选择与安装决策点首先前往CentOS官方归档站点或可靠的镜像站如阿里云、清华大学的开源镜像站获取CentOS-7-x86_64-Minimal-2009.iso这个镜像。选择“Minimal”版本至关重要它只包含最核心的系统组件没有多余的图形界面或软件包这保证了系统的纯净和高效。对于EDA服务器或虚拟机图形界面我们后续可以通过安装Xfce或GNOME来按需添加而不是一开始就背上整个GNOME的包袱。在虚拟机如VMware Workstation或VirtualBox或物理机上启动安装。关键分区方案我推荐如下/boot分区给1GB存放启动引导文件swap交换分区大小设置为物理内存的1.5到2倍例如机器有32GB内存swap给48-64GB根分区/分配剩余的所有空间建议不少于100GB。文件系统一律选择xfs它在处理大文件时性能比传统的ext4更优这对于动辄几十GB的仿真数据文件很有意义。在软件选择界面确保只勾选“Minimal Install”其他一概不选。安装完成后首次重启进入系统只有一个命令行终端在等你这就对了。2.2 网络、源与基础依赖的扎实准备连上网是第一步。如果你用的是动态IPDHCP通常网卡已经起来了。可以用ip addr命令查看。如果需要配置静态IP编辑网卡配置文件例如/etc/sysconfig/network-scripts/ifcfg-ens33网卡名可能不同设置BOOTPROTOstatic并配上IPADDR、NETMASK、GATEWAY和DNS1。接下来立刻更换yum源为国内镜像速度会有质的飞跃。这里以阿里云源为例# 备份原repo文件 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 下载阿里云repo文件 sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 清理并重建缓存 sudo yum clean all sudo yum makecache现在安装我们后续绝对会用到的基础开发工具和库sudo yum groupinstall -y Development Tools sudo yum install -y kernel-devel kernel-headers sudo yum install -y mesa-libGLU-devel libX11-devel libXext-devel libXtst-devel libXi-devel sudo yum install -y redhat-lsb-core compat-libstdc-33 glibc-devel sudo yum install -y ksh tcsh csh sudo yum install -y wget vim net-tools这一串命令的每一个包都有其使命Development Tools提供了gcc,g,make等编译工具链是很多软件安装的基础。kernel-devel内核开发包某些驱动或底层工具编译时需要。mesa-libGLU-devel及X11系列这是图形界面GUI的底层依赖即使你打算用终端模式一些EDA工具的安装程序或辅助功能也需要它们。compat-libstdc-33一个老版本的C兼容库很多商业软件包括我们待会儿要装的都依赖它但新系统默认不装这是超级常见的坑。ksh/tcsh/csh几种不同的Shell。Cadence的很多脚本默认使用csh或ksh不安装的话运行脚本时会报“未找到解释器”的错误。redhat-lsb-core提供lsb_release命令一些安装程序会用它来检查系统版本。2.3 用户、环境与防火墙的“规矩”不建议直接使用root用户进行日常EDA工作。创建一个专用用户例如icusersudo useradd icuser sudo passwd icuser # 设置密码为了安装软件方便可以将此用户加入wheel组拥有sudo权限sudo usermod -aG wheel icuser接下来为EDA环境设置独立的工作目录。我习惯在/opt或/home/icuser下创建eda目录所有软件都安装于此例如/home/icuser/eda/cadence、/home/icuser/eda/mentor。然后需要精心配置用户的环境变量这是所有软件能否被找到和调用的关键。编辑用户家目录下的.bashrc文件如果使用bashvim ~/.bashrc在文件末尾添加以下核心变量路径请根据你的实际安装位置修改# EDA工具根目录 export EDA_HOME/home/icuser/eda # Cadence 工具路径 export CDS_HOME$EDA_HOME/cadence export CDS_ROOT$CDS_HOME export CDS_INST_DIR$CDS_HOME export CDS_LIC_FILE5280localhost # 指向你的license服务器这里是示例 export CDS_Netlisting_ModeAnalog # 将Cadence可执行文件加入PATH export PATH$CDS_HOME/tools/bin:$CDS_HOME/tools/dfII/bin:$PATH # OAOpenAccess库路径IC618必须 export OA_HOME$CDS_HOME/oa_v22.60.052 export LD_LIBRARY_PATH$OA_HOME/lib/linux_rhel50_gcc44x_64/opt:$LD_LIBRARY_PATH # Calibre 路径 export MGC_HOME$EDA_HOME/mentor/calibre export PATH$MGC_HOME/bin:$PATH # 确保终端语言为英文避免软件出现乱码 export LANGen_US.UTF-8保存后执行source ~/.bashrc使配置生效。最后关闭SELinux和防火墙避免它们阻挡软件内部的网络通信对于内网学习环境sudo setenforce 0 # 临时关闭SELinux sudo sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config # 永久关闭 sudo systemctl stop firewalld # 停止防火墙 sudo systemctl disable firewalld # 禁用开机启动至此一个为EDA工作负载深度优化的CentOS 7基础系统就准备好了。它的干净、稳定和正确的依赖配置是后续所有复杂安装能否顺利的基石。3. IC618与SPECTRE18安装、破解与关键配置有了坚实的系统基础我们就可以开始安装核心的IC设计工具了。IC618和SPECTRE18通常打包在一起。你需要提前准备好安装镜像通常是ISO文件和对应的破解文件patch和license generator。请注意以下步骤涉及对软件进行配置以使用本地许可证请确保你拥有合法的软件使用许可。3.1 挂载镜像与启动安装程序首先将IC618的ISO安装镜像挂载到系统的一个目录下。假设镜像文件为IC618_Base.iso我们挂载到/mnt/isosudo mkdir -p /mnt/iso sudo mount -o loop /path/to/IC618_Base.iso /mnt/iso进入挂载点通常会看到一个名为IScape的目录这是Cadence的通用安装管理器。运行它cd /mnt/iso/IScape ./iscape.shIScape会启动一个图形化界面如果你的系统安装了X Window并且通过SSH连接时开启了X11转发。如果是在纯终端环境也可以使用-console选项启动控制台模式./iscape.sh -console在安装向导中你需要指定安装源选择Local Directory然后路径指向/mnt/iso。安装目标选择我们之前规划好的目录例如/home/icuser/eda/cadence。选择产品从列表中找到并勾选Virtuoso IC618和SPECTRE18可能显示为SPECTRE181等具体版本号。通常还会连带安装一些必要的库和工具如MMSIM、INCISIVE等保持默认勾选即可。依赖检查安装程序会检查系统是否缺少依赖库。如果前面基础准备做得好这里应该全部通过。如果有缺失它会给出包名按提示用yum install安装即可。开始安装。这个过程根据机器性能可能需要30分钟到数小时。3.2 License配置服务端与客户端的桥梁安装完成后工具还无法运行因为需要许可证。我们需要配置一个许可证服务器。这里以本地服务器为例。首先将破解包中的license generator通常是一个叫sfk或类似的可执行文件和patch脚本放到一个目录例如/home/icuser/crack。运行破解脚本它会修改安装目录下的某些二进制文件并生成一个license.dat文件。这是一个关键且敏感的步骤务必仔细阅读破解包内的README因为不同版本的破解方式可能有细微差别。生成的license.dat文件里第一行通常是SERVER your_hostname hostid 5280。这里的your_hostname是你的机器名用hostname命令查看hostid是网卡的MAC地址用ip addr查看通常取eth0或ens33的link/ether后面的地址。5280是默认的端口号。接下来我们需要启动许可证守护进程。Cadence工具通常使用FlexNetlmgrd来管理许可证。在安装目录下例如$CDS_HOME/share/license/可能会找到lmgrd和cdslmdCadence的许可证提供商守护进程。如果没有可能需要从破解包中复制过来。创建一个简单的启动脚本start_lic.sh#!/bin/bash export LM_LICENSE_FILE/home/icuser/crack/license.dat export CDS_LIC_FILE5280localhost $CDS_HOME/share/license/lmgrd -c $LM_LICENSE_FILE -l /tmp/license.log给脚本执行权限并运行chmod x start_lic.sh ./start_lic.sh。用lmstat命令检查许可证是否成功启动$CDS_HOME/share/license/lmstat -c 5280localhost如果看到cdslmd相关的特性如Virtuoso状态为UP说明成功。最后确保用户环境变量CDS_LIC_FILE我们在.bashrc里设过指向这个服务器即5280localhost。3.3 首次启动Virtuoso与可能遇到的“拦路虎”在终端输入virtuoso 启动IC618。如果一切顺利会弹出Virtuoso的启动界面然后进入主窗口。但更常见的情况是你会遇到一些错误。下面是我总结的几个高频问题及解决方案错误libXp.so.6: cannot open shared object file这是缺少32位图形库。解决sudo yum install libXp.x86_64 libXp.i686。类似地如果报错缺少其他libX开头的库用yum provides */libXXX.so*查找包名然后安装对应的64位和32位版本。**错误virtuoso: error while loading shared libraries: libstdc.so.6: versionGLIBCXX_3.4.20‘ not found** 这表示系统的libstdc库版本太旧。首先更新gccsudo yum install -y devtoolset-9然后启用它scl enable devtoolset-9 bash。但更一劳永逸的方法是找到高版本gcc的库文件例如在/opt/rh/devtoolset-9/root/usr/lib64/并将其路径添加到LD_LIBRARY_PATH环境变量中且要放在系统路径之前。错误启动后CIWCommand Interpreter Window窗口空白或闪退这很可能是OAOpenAccess库的路径问题。确认.bashrc中OA_HOME指向的路径是否正确以及LD_LIBRARY_PATH是否包含了$OA_HOME/lib/linux_rhel50_gcc44x_64/opt注意这个路径名可能因版本略有不同请检查实际目录。一个验证方法是在终端直接运行$OA_HOME/bin/oaCheck看是否有错误输出。错误无法找到许可证首先确认lmstat显示许可证服务是UP的。然后检查环境变量CDS_LIC_FILE是否设置正确并且当前shell已经source ~/.bashrc。也可以在Virtuoso启动命令前临时指定CDS_LIC_FILE5280localhost virtuoso 。如果还不行查看/tmp/license.log日志文件里面通常有详细的错误信息。当Virtuoso成功启动出现CIW窗口和库管理器时恭喜你最艰难的一步已经迈过去了。SPECTRE18作为仿真器通常已经集成在IC618的安装中无需单独安装其配置主要在仿真环境里进行。4. Calibre 2019物理验证工具的独立部署Calibre是Mentor现Siemens EDA的王牌物理验证工具用于做设计规则检查DRC和版图与原理图一致性检查LVS。它的安装相对独立。4.1 安装与基础路径设置获取Calibre 2019的安装包同样是一个或多个压缩文件。将其解压到目标目录例如/home/icuser/eda/mentor/mkdir -p /home/icuser/eda/mentor tar -xvf calibre_2019.tar -C /home/icuser/eda/mentor/解压后目录下通常会有calibre、mgc等文件夹。Calibre的核心可执行文件在calibre/bin下。接下来配置环境变量我们在.bashrc里已经添加了MGC_HOME和PATH。Calibre同样需要许可证。它的许可证管理通常与Cadence共用同一个lmgrd服务但需要额外的license.dat条目。你需要将Calibre的许可证特征码FEATURE行添加到之前那个license.dat文件中然后重启lmgrd服务。验证Calibre是否安装成功calibre -gui 如果弹出了Calibre的图形界面或者运行calibre -version能输出版本信息说明安装基本成功。4.2 与Virtuoso的集成让版图编辑器直接调用单独运行Calibre固然可以但效率太低。我们需要将它集成到Virtuoso的菜单中这样在画版图时可以直接点击菜单进行DRC/LVS检查。集成主要靠一个叫calibre.skl的“技能”文件。首先在Calibre安装目录下找到它通常路径是$MGC_HOME/shared/pkgs/icv/tools/queryskl/calibre.skl。我们需要将它复制到Virtuoso能加载的目录并修改其内容。复制文件mkdir -p ~/eda/cadence/dfII/local cp $MGC_HOME/shared/pkgs/icv/tools/queryskl/calibre.skl ~/eda/cadence/dfII/local/修改calibre.skl用文本编辑器打开这个文件。找到其中定义MGC_HOME和CALIBRE_HOME的行确保它们指向正确的路径。例如MGC_HOME /home/icuser/eda/mentor/calibre CALIBRE_HOME /home/icuser/eda/mentor/calibre同时检查文件中关于license路径的设置确保它指向你的license.dat文件或端口例如setenv MGLS_LICENSE_FILE 5280localhost。配置Virtuoso加载路径在用户家目录下创建或编辑.cdsinit文件。这个文件是Virtuoso启动时自动加载的初始化脚本。添加以下行; Load Calibre menu load(strcat(getShellEnvVar(MGC_HOME) /shared/pkgs/icv/tools/queryskl/calibre.skl))注意这里直接加载了原始路径下的文件而不是我们复制到local的那份。这是一种更稳妥的做法确保加载的是最新版本。重启Virtuoso。再次打开版图编辑器Layout XL你应该在顶部菜单栏或右键菜单里看到Calibre选项下面有Run DRC、Run LVS等子菜单。点击它们就能直接调用Calibre工具对当前打开的版图进行检查了。这个集成步骤是打通设计Virtuoso与验证Calibre的关键能极大提升工作效率。如果菜单没有出现请检查.cdsinit文件是否有语法错误每行结尾的分号是注释以及calibre.skl文件中的路径是否正确。5. 实战验收CMOS反相器仿真全流程环境搭好了工具齐备了是骡子是马拉出来溜溜。我们用一个最经典的CMOS反相器Inverter来验证整个流程是否通畅。这不仅仅是跑一个仿真更是对你搭建的环境进行一次全面的“体检”。5.1 创建库与电路图输入启动Virtuoso在终端输入virtuoso 等待主界面出现。创建新库Library在CIW窗口点击File-New-Library...。给库起个名字比如my_inverter_lib。Technology File一项暂时选择Attach to an existing techlib然后选择一个自带的通用工艺库例如NCSU_TechLib_tsmc02d如果没有可以先选Don‘t need a techfile这仅影响版图不影响原理图仿真。点击OK。创建Cell View在库管理器Library Manager中选中你刚创建的库my_inverter_lib然后点击File-New-Cell View...。Cell Name填inverterTool选择Composer-Schematic原理图编辑器。点击OK会打开一个空白的原理图编辑窗口。绘制反相器原理图按快捷键i或者点击左侧工具栏的Instance图标添加器件。在Library中浏览找到analogLib这个基本模拟器件库。从里面选择一个pmos和一个nmos晶体管一个vdc直流电压源一个gnd地一个vpulse脉冲电压源用作输入和一个cap电容作为负载。将它们Place到图纸上。按快捷键w或点击Wire图标进行连线。将pmos的源极接电源vdc的正极漏极与nmos的漏极相连作为输出端并接上负载电容的一端nmos的源极接地。两个栅极相连作为输入端接vpulse的信号端。vpulse和vdc的另一端接地。按快捷键p或点击Pin图标添加输入输出端口。添加两个引脚in方向input和out方向output并连接到对应网络。为器件设置参数。双击pmos和nmos在属性窗口的Model Name中填入晶体管模型名例如pmos和nmos这里需要你拥有对应工艺的模型文件对于首次测试可以使用analogLib自带的理想模型但属性里要设置W和L比如W1u L0.18u。双击vpulse设置电压幅度、周期等如V10, V21.8, Period20n。双击vdc设置直流电压如1.8。双击电容设置容值如10f。保存。你的第一个CMOS反相器原理图就完成了。5.2 配置仿真环境与运行SPECTRE启动ADE LAnalog Design Environment在原理图窗口点击Launch-ADE L。这会打开仿真设置界面。设置仿真器Simulator在ADE L窗口中点击Setup-Simulator/Directory/Host...。在Simulator下拉菜单中选择spectre。这就是我们安装的SPECTRE18仿真器。Working Directory可以保持默认或指定一个目录存放仿真数据。设置模型库Model Library点击Setup-Model Libraries...。这里需要添加你所用工艺对应的模型文件.scs文件。点击Browse找到模型文件路径并添加。对于初次测试你可以暂时不添加使用理想模型但仿真结果没有实际物理意义。添加后在Section栏通常填typical。设置分析Analysis点击Analyses-Choose...。选择tran瞬态分析。设置一个合理的仿真时间比如Stop Time为100n100纳秒。点击OK。选择输出信号在ADE L窗口的Outputs-To Be Plotted-Select On Schematic然后回到原理图窗口用鼠标点击你想观察的网络比如输入in和输出out。它们会自动被添加到输出列表中。运行仿真点击ADE L工具栏上绿色的Netlist and Run按钮或者按快捷键F5。软件会首先生成网表Netlist然后调用SPECTRE引擎进行仿真。下方状态栏会显示仿真进度。如果一切配置正确仿真会顺利完成并自动弹出波形查看器Waveform Viewer。你应该能看到输入in是一个方波而输出out是一个相位相反、经过反相器延迟和边沿变化的方波。恭喜这证明从原理图输入到SPECTRE仿真的整个链路是通的5.3 常见仿真失败排查与解决第一次仿真就成功是幸运的但遇到问题才是常态。下面是一些典型错误错误Unable to find the ‘spectre‘ executable in ...这说明系统找不到SPECTRE可执行文件。检查环境变量PATH是否包含了Cadence工具链的bin目录如$CDS_HOME/tools/bin。在终端输入which spectre看是否能找到。如果没有请确认.bashrc配置已生效或者尝试在ADE L的设置中手动指定Spectre Path。错误Model ‘nmos‘ is not defined这是没有正确加载晶体管模型。回到ADE L的Model Libraries设置确认添加的模型文件路径正确且文件确实存在。检查Section是否填写正确通常是typical,tt,ff,ss等。一个快速测试方法是在原理图中使用analogLib里的nmos4和pmos4并在属性里明确指定Model Name为nmos和pmos同时在Model Library中添加一个简单的模型定义文件。错误仿真不收敛No Convergence这是数值计算问题。对于简单的反相器通常不会发生。如果遇到可以尝试在ADE L中Setup-Simulation Options-Analog将Method从trap改为gear2only或者减小Relative Tolerancereltol比如从1e-3改为1e-6。更根本的解决方法是检查电路连接是否有短路、开路电源和地是否正确。仿真速度极慢或内存不足检查仿真时间步长。在tran分析设置中有一个Maximum Step选项将其设置为信号周期的1/100或更小例如对于1GHz信号周期1ns可以设为10p。这能防止因步长过大导致的精度问题和计算震荡。同时确保你的虚拟机或物理机分配了足够的内存对于小型仿真8GB以上是必要的。当波形成功显示你可以使用测量工具在波形窗口的Trace-Measure或类似菜单来测量反相器的延迟时间、上升/下降时间等关键参数。至此你已经完成了从零搭建环境到第一个电路仿真的完整闭环。这个过程里遇到的每一个错误和解决它的方法都比顺利安装让你收获更多。记住这个环境的状态做好备份比如虚拟机的快照它将成为你后续所有模拟电路学习与设计的坚实起点。
返回列表