很多硬件工程师桌面上都摆着Cadence的两个版本一个16.6一个17.4看起来只是多了个图标实际上这两个版本共存后的坑远比想象中多。我自己在公司里既要处理维护多年的老项目又要接新的高速板设计16.6和17.4都离不开被环境变量、文件关联、用户配置折腾过无数次。这篇文章就把我从安装顺序到环境变量配置的完整方案和踩坑记录写出来希望能让后来的人少走弯路。先说结论Cadence双版本共存的核心不在安装包本身而在于Windows的环境变量和用户目录如何隔离。如果这两块处理不好哪怕安装过程一切顺利启动时也会出现各种稀奇古怪的报错甚至新版软件会把旧版配置直接“改坏”。这篇文章适合刚接触双版本共存的新手也适合已经被折磨过但还没找到系统性方案的老手。1. 为什么需要双版本共存以及共存方案的根本思路1.1 16.6与17.4在实际工作中的角色差异很多人问16.6都多少年的老古董了为什么还要留着真实原因是很多公司历史项目、库文件、生产流程都沉淀在16.6上部分元件封装和PCB文件在17.4里打开虽然没问题但交给工厂或者外部协作方时对方用的还是16.6格式不兼容的麻烦就来了。17.4的优势也很明显尤其是HDI设计、嵌入式叠层、动态铺铜策略、约束管理器等模块比16.6顺手太多。特别是新项目需要处理高速差分对、DDR4/DDR5等场景时17.4的规则管理更直观仿真链路也更完整。这就形成了现实需求老项目继续用16.6维护新项目切到17.4而且随时可能来回切换。所以双版本共存不是“炫技”是工程师每天实际要面对的办公状态。1.2 虚拟机、双系统与本机直接安装的取舍既然要共存常规思路无非三种虚拟机装一个版本、双系统各装一个版本、同一Windows系统里直接装两个版本。虚拟机方案最安全版本之间完全隔离但我试过之后放弃了。Cadence这类大型EDA工具对显卡和CPU要求不低虚拟机里跑PCB设计尤其是铺铜、实时DRC、3D预览时卡顿感很明显影响工作效率。而且虚拟机里操作文件、映射网络驱动器都不方便。双系统方案也用过一段时间但切换成本太高每次都要重启电脑遇到紧急改板的时候急死人。所以最终还是选择了同一个Windows系统里直接安装双版本这也是大多数工程师最终的选择路径。本机直接安装唯一的风险就是环境冲突但只要把冲突点控制住这个方案最省心速度损失为0。冲突点归纳起来就是三样环境变量、注册表文件关联、用户配置目录。后面的所有内容都围绕这三样展开。1.3 双版本共存的核心矛盾CDSROOT、Path、HOME 三方撕扯Cadence的Windows版本运行时依赖几个关键环境变量CDSROOT决定了程序安装根目录在哪里Path决定了系统到哪里去找executable文件HOME决定了用户配置文件和环境配置模板存到哪里。双版本共存的本质问题在于CDSROOT、Path、HOME这三个变量在系统层面都是“单值”的而两套Cadence需要不同的值。如果只装一个版本Windows轻轻松松就能搞定但装了两个版本后系统只能把变量指向其中一个另一个就会被“冷落”。这就是为什么直接装完两个版本后经常出现双击.brd打开的是17.4而不是16.6或者在命令行敲allegro启动的总是后装的那一版。要解决这个问题硬碰硬地改系统变量不如做一套“可控切换”机制让两个版本按需接管这些变量。2. 安装顺序有讲究License的处理更是重中之重2.1 安装前必须做好的准备工作很多人在安装上栽跟头其实不是Cadence本身的问题而是Windows环境和安装包互相干扰。我安装前一定会做三件事第一关闭杀毒软件和Windows Defender实时监控。Cadence的License Manager和部分加密程序都会被误报一旦中途被拦截License服务就起不来。这不是教大家绕过安全软件而是安装期临时放行装完后再恢复监控。第二确认安装包版本和补丁包齐全。16.6和17.4都有多个更新补丁我推荐直接用带最新补丁的完整安装包或者安装完基础版本后立刻打补丁。不然遇到某些已知Bug排查起来非常浪费时间。第三管理员身份运行安装程序。Cadence需要写注册表、创建服务、添加环境变量没有管理员权限很容易半途报错。准备工作的优先级并不比安装本身低。我见过太多人在这一步偷懒结果后边反复重装。2.2 推荐的安装顺序先16.6后17.4经过多次不同组合的试验我推荐的顺序是先装16.6完整版再装17.4。原因有两个。其一License Manager的兼容性。16.6安装时会在系统里注册一套相对老牌的License服务17.4安装时如果检测到已有合法License服务可以复用同一套服务不用重复安装。反过来先装17.4再装16.616.6的License服务可能会和新版Manager产生端口或服务名冲突虽然也能解决但多花很多时间。其二文件关联的接管顺序。CAD工具默认会接管文件后缀的打开方式后安装的版本会覆盖先安装的版本。先装16.6再装17.417.4自然接管.brd和.dsn的默认打开方式这个状态是可控的后续可以再调整反过来安装的话16.6把关联抢过去反而不利于新项目使用17.4。安装16.6时License Server配置可以选择安装License Manager并启动服务监听端口默认5280。装17.4时安装程序会检测到本机已有License服务这时候务必选择“继续使用现有服务”或者“Skip License Manager安装”不要重新装一套。2.3 License环境变量的标准化两套版本共用一个License时环境变量是最简单的。我在系统变量里统一配置CDS_LIC_FILE5280localhost LM_LICENSE_FILE5280localhost注意这里必须指向同一个License服务。如果License文件本身支持两个版本的Feature那么两套Cadence都会从这个服务获取授权。如果公司的License模式不同比如浮点License走服务器就把localhost换成服务器IP。这个变量在后期版本切换时不需要改动因为两套版本用同一个授权来源。安装完之后先别急着打开软件。双击快捷方式之前先把环境变量和用户目录梳理清楚否则一启动就可能在后台生成一堆混乱的配置文件后续清理更麻烦。3. 环境变量配置是双版本共存的重头戏3.1 先搞明白Cadence运行时到底依赖哪些变量环境变量对很多非系统层开发者来说有点神秘其实可以把它理解为Windows给各软件描述“房间布局”的路牌。Cadence运行主要看这几个关键路由CDSROOTCadence安装根目录相当于“你的主程序在这个文件夹里”Path系统搜索可执行文件的路径清单相当于“去哪个目录找人”HOME用户配置目录的根路径相当于“软件写日记的地方”CDS_SITE共享库和配置文件的站点路径相当于“单位公共资料柜”CDS_LIC_FILE / LM_LICENSE_FILELicense授权服务位置相当于“大门钥匙在哪”双版本共存时如果这些变量混在一起问题就来了。比如CDSROOT指向17.416.6启动时却会努力去17.4目录下找它自己的很多配置文件轻则找不到菜单重则直接报错退出。3.2 一套不冲突的双版本环境变量方案我的环境变量配置思路是不在系统变量里精确指定某一个版本而是同时保留两个版本的对应信息通过切换脚本按需“激活”其中一个。我的电脑上16.6安装在 C:\Cadence\SPB_16.617.4安装在 C:\Cadence\SPB_17.4。系统级变量只保留CDS_LIC_FILE5280localhost LM_LICENSE_FILE5280localhost然后我手动建立了两个版本各自的启动脚本每个脚本启动前临时设置当前会话的环境变量。这样做的好处是系统级的环境变量保持干净不会影响机器上其他软件比如Git、Python、Java都依赖Path也不会因为切换版本而把系统Path搅乱。具体脚本内容我放在后面实操章节这里先说原理。3.3 环境变量切换的正确姿势很多人用setx命令直接修改系统变量来切换版本比如常驻两条setx CDSROOT命令。这样虽然对后续启动有效但是有两个问题第一setx修改系统变量后当前已经打开的进程不会生效必须新开窗口或者重启资源管理器才能感知。第二每次切换都动系统级变量一旦写错可能连带其他软件一起崩。更可控的方式是“会话级变量启动器脚本”。也就是在脚本里用set命令设置变量然后把目标程序启动起来。由于新启动的进程会继承当前cmd会话的环境变量所以启动的Cadence能按照你设定好的路径工作而对系统里其他的进程完全没有影响。这个概念非常重要理解了它后面就好办了。环境变量切换不应该是“终极改动”而应该是“局部影响”的精细操作。3.4 用户目录隔离双版本共存最容易被忽视的环节环境变量解决的是“软件从哪启动”的问题但Cadence启动后还要读取用户目录下的pcbenv文件夹里面存放着用户的env配置文件、菜单文件、快捷键、skill脚本等。如果不做隔离16.6和17.4会共用同一个用户目录。17.4启动时检测到老版本的用户配置会弹出一个迁移向导把老配置尝试转换成新版本格式。转换完成后16.6再去读这些被改动过的env和菜单文件就会出现快捷键丢失、菜单项不全、部分skill脚本失效的问题。这可太折腾了。所以我强烈建议给两个版本分别设置隔离的HOME目录而不是共用系统默认的用户路径。我用了两个目录C:\Cadence\home_16.6 C:\Cadence\home_17.4每个目录下会自动生成相应的pcbenv配置文件夹。这样两套软件的菜单、快捷键、脚本、绘图参数模板完全隔离互不干扰。需要注意一点HOME变量并不是只被Cadence使用。如果你机器上的Git、Python等工具也依赖HOME那么在启动脚本里用临时变量set HOME只影响Cadence这个子进程树不会全局污染。这也是脚本方案的一个隐性优点。3.5 文件关联与默认打开方式的处理双版本共存时.brd和.dsn文件的双击行为经常让人恼火。默认情况下后安装的版本会抢走文件关联。比如你先装了16.6然后又装了17.4那么双击.brd一定是用17.4打开。这个现象本质上是因为Windows注册表中的文件关联信息被后安装程序覆写了。解决办法有两条路。第一条路手动设置。右键点击.brd文件选择“打开方式”在列表中找到想用的Cadence版本勾选“始终使用此应用打开”。这个操作最直观但缺点是换版本时要重新设置。第二条路在切换脚本中一并处理文件关联。脚本里可以通过Windows的ftype和assoc命令调整默认关联不过Cadence的文件关联涉及多个ProgID具体键名在不同版本里并不完全一致强行用命令行修改反而容易把关联弄乱。所以我的建议是日常切版本用脚本文件打开方式用右键手动设置两者配合省心省力。4. 实操记录从零开始配置双版本共存4.1 第一步安装16.6与License Manager先说安装16.6的过程。安装包解压后以管理员身份运行setup.exe选择安装License Manager和Cadence SPB产品。License Manager安装完毕后用LmTools工具添加License文件并启动服务。确认服务状态显示为“Running”端口监听正常。可以用命令行验证lmutil lmstat -a -c 5280localhost看到服务在线后再继续装SPB主程序。安装SPB时选择产品模块这里建议PCB Design相关的核心模块全选包括Allegro PCB Design、OrCAD Capture等。装完后先不要急着破解或启动保持安装默认状态即可。4.2 第二步安装17.4并复用License17.4安装时安装程序会扫描本机已有的License服务。这一步要特别注意如果提示检测到已有License Manager直接选择“Use existing license server”不要在17.4安装过程中再启动一套新的License服务。其余流程照常选择安装路径和产品模块。17.4的界面和组件比16.6多不少但核心PCB Editor、Capture CIS这些必选即可。安装过程较长耐心等它跑完。装完后也先别启动接下来进入环境配置环节。4.3 第三步创建两套隔离的HOME目录打开资源管理器在C:\Cadence下面新建两个文件夹C:\Cadence\home_16.6C:\Cadence\home_17.4这两个目录就是两个版本各自的“用户状态空间”。第一次启动对应版本的Cadence后软件会自动在里面创建pcbenv文件夹存放env、菜单、脚本等。如果此前电脑上已经用16.6或17.4工作过一段时间默认的pcbenv目录里有你积累的快捷键和脚本可以在新建目录后手动把老目录下的env文件复制到对应版本的home目录下注意别把两个版本的env文件搞混。复制完再启动软件你会发现原先的键位习惯还在而版本之间互不干扰。4.4 第四步编写版本切换启动脚本这一步是整个方案的核心也是我最想让读者直接拿去用的部分。在某个固定位置比如C:\Cadence\Scripts下建立两个bat文件。启动16.6的脚本内容如下echo off set CDSROOTC:\Cadence\SPB_16.6 set HOMEC:\Cadence\home_16.6 set CDS_SITEC:\Cadence\SPB_16.6\share\local\pcb set PATH%CDSROOT%\tools\bin;%CDSROOT%\tools\fet\bin;%CDSROOT%\tools\pcb\bin;%CDSROOT%\tools\dfII\bin;%PATH% start %CDSROOT%\tools\bin\allegro.exe启动17.4的脚本内容如下echo off set CDSROOTC:\Cadence\SPB_17.4 set HOMEC:\Cadence\home_17.4 set CDS_SITEC:\Cadence\SPB_17.4\share\local\pcb set PATH%CDSROOT%\tools\bin;%CDSROOT%\tools\fet\bin;%CDSROOT%\tools\pcb\bin;%CDSROOT%\tools\dfII\bin;%PATH% start %CDSROOT%\tools\bin\allegro.exe灵活一点的方案是做一个带参数的脚本一个文件搞定两个版本echo off rem start_cadence.bat 16.6 或 start_cadence.bat 17.4 set VERSION%1 if %VERSION%16.6 ( set CDSROOTC:\Cadence\SPB_16.6 set HOMEC:\Cadence\home_16.6 ) else ( set CDSROOTC:\Cadence\SPB_17.4 set HOMEC:\Cadence\home_17.4 ) set CDS_SITE%CDSROOT%\share\local\pcb set PATH%CDSROOT%\tools\bin;%CDSROOT%\tools\fet\bin;%CDSROOT%\tools\pcb\bin;%CDSROOT%\tools\dfII\bin;%PATH% start %CDSROOT%\tools\bin\allegro.exe脚本里每一次调用都会在当前cmd窗口里先定义好需要的CDSROOT、HOME、Path再启动目标版本。这样系统级环境变量始终没被动过其他软件的运行环境保持稳定。用这个方式启动的Allegro进程环境中的HOME指向对应版本用户目录启动时会读取正确版本的配置过程中调用子进程比如Allegro调用的skill程序、仿真引擎也会继承同一套环境不会出现“主程序是17.4子进程跑到16.6找dll”的怪事。4.5 第五步验证版本切换与工程打开装完并写完脚本后做一遍完整验证先运行start_cadence.bat 16.6打开软件后在菜单Help-About里确认版本号是16.6然后新建或打开一个旧工程确认菜单、快捷键、封装库路径都正常。退出后运行start_cadence.bat 17.4同样确认版本号是17.4再打开一个新工程检查约束管理器、叠层设置、铺铜状态等关键功能是否可用。如果两边都能正常工作说明环境变量和HOME隔离都成功了。这时候再把.desktop或开始菜单的快捷方式指向bat脚本日常操作就顺手很多。如果还有问题直接进下一章排查。5. 双版本共存常见问题排查实录5.1 启动报错License not found或Invalid license双版本共存时License报错是最常见的。如果两个版本中只有一个能启动另一个报License错误大概率是系统环境变量或当前会话里的License变量没配对。检查顺序如下先用LmTools确认License服务状态确保监听端口是5280且服务在运行。然后在命令行里执行set CDS_LIC_FILE看看当前会话里这个变量指向哪里。如果是localhost还要确认端口号是否和服务端一致。最容易被忽视的是系统环境变量设置了CDS_LIC_FILE但你在脚本里又用set改了CDS_LIC_FILE导致实际指向错误。建议在启动脚本中明确设置License变量不要依赖系统变量。我在前面那些脚本里没有写License变量因为我机器系统变量里已经设好了如果你那边环境比较复杂也可以在脚本中加入一行set CDS_LIC_FILE5280localhost5.2 打开.brd文件时总是跳到同一个版本这个问题在前面文件关联的小节里说过。遇到时先别急着改注册表最快的办法是右键文件选择“打开方式”然后在弹出的列表里找到另一个版本的Allegro勾选“始终使用此应用打开”。如果列表里没出现想要的版本可以点击“选择其他应用”手动导航到对应版本的allegro.exe路径。16.6的可执行文件在C:\Cadence\SPB_16.6\tools\bin\allegro.exe17.4同理。想更高效的话放弃双击开文件也完全可以从Allegro的File Open对话框里打开文件或者直接把.brd文件拖进Allegro窗口。到了后期我基本就用这两种方式彻底绕开文件关联问题。5.3 高版本改了低版本的菜单和快捷键这个问题的根源就是HOME目录共用。如果遇到16.6菜单缺失、快捷键不管用去默认用户目录看看pcbenv文件夹是不是被改过了。解决办法是严格按照前面说的方法把两个版本的HOME隔离开。已经改坏的文件也没关系如果之前备份过env文件就恢复没备份的话只能重新配置了。这也是为什么我不厌其烦强调“一定要在第一次启动前就设置好HOME”。5.4 版本切换后封装库、仿真模型路径失效PCB设计离不开封装库。16.6和17.4对库的处理有差异16.6的封装和焊盘文件17.4基本能兼容但17.4生成的库文件16.6经常打不开因为新版会写入16.6不认识的新属性。所以我的库组织方式是共用库放在一个稳定目录比如C:\Cadence\share_lib里面的symbols和padstacks尽量用16.6能兼容的旧格式维护17.4的新项目额外数据放在C:\Cadence\lib_17.4通过Allegro的环境设置分别指定PSMPATH和PADPATH。版本切换脚本里也可以动态设置环境变量指向对应的库目录这样每次启动的都是正确配置。仿真时如果提示“器件未定义”或“模型路径错误”先检查环境变量里有没有把模型库路径指过去。很多时候不是模型本身有问题而是切换版本后找不到原来的模型搜索路径了。5.5 双版本共存问题速查表现象大概率原因解决办法启动报License错误License服务未启动或变量指向不对检查LmTools和CDS_LIC_FILE变量双击.brd总打开同一版本文件关联被固定到某个版本右键打开方式手动更改16.6菜单快捷键丢失两个版本共用HOME导致配置被改写隔离HOME目录并恢复备份env17.4打开老库缺封装PSMPATH/PADPATH没指向共用库在环境设置中补充库路径命令行直接敲allegro启动错版本Path里版本顺序不对用启动脚本指定CDSROOT后再启动安装17.4时又来一遍License引导安装程序没识别已有服务选Existing License Server别重复装杀毒软件拦截导致License服务失败主程序或License Manager被误杀安装期临时关闭实时监控装完恢复5.6 一个容易被忽视的细节环境变量与Path顺序如果机器上装了JDK、Python、Git等工具它们同样依赖Path环境变量。在给Cadence做版本切换时如果直接用setx改系统Path一旦顺序写错可能导致系统里其他命令行工具找不到可执行文件。这也是我一直强调用启动脚本临时设置Path的原因。脚本里set PATH那行代码是把Cadence的路径插在原有Path前面然后启动目标程序脚本退出后cmd窗口关闭整个环境恢复原样系统级Path纹丝不动。如果你手头已经改坏了Path恢复方法也很简单把原来的Path值先从系统变量里复制出来存成txt备份再手动把Cadence相关路径添加到末尾。建议所有动Path的操作前都先备份这个习惯能救很多急。6. 最后的几条实操心得个人经验里最有价值的一条双版本共存时所有的版本状态信息都应该以“脚本”为唯一入口而不是依赖桌面快捷方式或系统环境变量。把启动动作统一收敛到指定的bat脚本里能规避绝大多数环境冲突问题。第二条心得是关于备份的。在配置环境变量和HOME目录之前把原始的Path、系统变量、pcbenv目录都做一个快照备份。操作中一旦出问题可以直接回滚不用重装软件。第三条是版本切换后的首次启动一定要耐心等软件把初始化配置生成完不要频繁中断。第一次启动时会创建pcbenv和大量索引文件如果中途强杀进程下次启动可能出现莫名其妙的问题。按照这套方案配置好以后我日常使用基本不会再碰到版本混乱的情况。新的项目需要切换时只要双击对应版本的bat脚本Allegro就会以正确的方式打开。如果后续你还想深入优化可以把封装库管理、skill脚本同步、备份机制都整合到脚本里让整个Cadence工作环境变成一个真正可控的体系。
阅读完成 · 觉得有帮助?