第一次把 IC617 装上、敲下virtuoso 回车之后等你的往往不是漂亮的原理图编辑器而是一个叫 CIW 的命令窗口加一整排英文菜单。我刚开始那几天最困惑的就是Library 到底是什么东西为什么 File → New → Library 点下去之后它还要问 attach 到哪个 tech library而那个 tech library 我又该去哪找。后来才明白Virtuoso 这套工具的心智模型跟多数画图软件不一样——它不是打开文件改文件而是在库Library里管理单元Cell每个单元下面挂着若干视图View。你把它当成一个自带层次概念的电路数据库很多操作反而顺了。这篇笔记按我自己上手 IC617也就是 IC6.1.7的顺序整理从怎么把软件跑起来、库路径怎么配到原理图怎么画、ADE 怎么设工艺角和激励再到版图与后仿以及那些教程里从来不写、但天天会遇到的坑。适合刚接触 Virtuoso 的在校同学、从其他 EDA 工具转过来的工程师也适合隔一段时间不用又要重新捡起来的老手当清单查。我尽量把为什么这么做讲清楚而不是只丢一串菜单路径因为菜单会变、逻辑不会变。1. 先把 IC617 跑起来启动、库路径和三个必须认识的目录1.1 为什么老手都是从终端起 virtuoso而不是双击图标IC617 是典型的 Linux 工作流工具它的启动依赖一堆环境变量可执行文件路径、license 路径、仿真器的视图列表配置等等。你在文件管理器里双击一个图标环境是干净的程序找不到 license 或者找不到 spectre就会弹一堆看不懂的报错。所以标准做法是在终端里先执行一套 setup 脚本再启动。典型的环境配置长这样写在个人的~/.bashrc或者项目自带的 setup 脚本里export CDS_INST_DIR/opt/eda/cadence/IC617 export PATH$CDS_INST_DIR/tools/bin:$CDS_INST_DIR/tools/dfII/bin:$PATH export CDS_LIC_FILE5280lic-server export CDS_Netlisting_ModeAnalog这几个变量里CDS_INST_DIR只是方便你自己引用真正起作用的是PATH和 license。CDS_LIC_FILE是 Cadence 自己的 license 变量很多站点也用通用的LM_LICENSE_FILE两个都写上不冲突。CDS_Netlisting_Mode这个很多人不知道它影响网表生成时对器件和属性的处理方式做模拟电路一般设成Analog做混合信号或者数字为主的流程可能是Digital设错了会出现一些莫名其妙的网表差异所以别随手抄别人的值。启动命令本身很简单cd ~/work/myproject virtuoso 注意前面那个cd。Virtuoso 会把你敲命令时所在的目录当成工作目录cds.lib会在当前目录找日志文件也写在当前目录。很多人抱怨我的库怎么都不见了九成是因为在错误的目录下启动了程序。另外还有一个virtuoso -nograph的模式不带图形界面用来跑批处理的 SKILL 脚本或者命令行仿真做回归测试的时候很有用。1.2 cds.libLibrary Manager 里空荡荡的真正原因cds.lib是 Virtuoso 的库索引文件本质上就是个文本文件告诉工具哪些库名对应磁盘上的哪些目录。它的语法就几条DEFINE mylib ./mylib DEFINE analogLib /opt/eda/cadence/IC617/tools/dfII/samples/local/analogLib INCLUDE /opt/eda/PDK/xxx/cds.lib SOFTINCLUDE ./team_lib/cds.libDEFINE是最常用的格式是DEFINE 库名 路径路径可以是相对当前目录的也可以是绝对的。INCLUDE用来把别人的 cds.lib 整个引进来——PDK 厂商给你的库通常就是这么挂的你不需要手动一个个 DEFINE直接 INCLUDE 他们的文件最省事将来 PDK 升级你也不用改。SOFTINCLUDE和INCLUDE的区别在于被引用的文件不存在时INCLUDE会报错SOFTINCLUDE只是安静跳过。多人协作的项目里把别人可能没有的库用 SOFTINCLUDE 写能避免每个人启动时都弹一堆警告。一个新建的库到底是什么就是一个目录里面的每个子目录是一个 cell单元cell 目录下面的每一个文件对应一个 view。所以mylib/inv/目录下有schematic这个文件就代表mylib库里的inv单元有一份原理图视图。理解这层映射关系之后很多问题就变成看目录这么简单。如果你打开 Library Manager 发现里面空荡荡的按这个顺序查当前目录下有没有 cds.libcds.lib 里有没有把 PDK 的 cds.lib INCLUDE 进来路径拼写对不对相对路径是相对启动目录不是相对 cds.lib 所在目录这一点坑过很多人路径里有没有中文或者空格。改完 cds.lib 之后Virtuoso 不会自动重新读稳妥的做法是重启程序或者在 CIW 里重新打开 Library Manager 刷新一次。注意cds.lib 里的路径尽量用绝对路径或者从项目根目录算起的相对路径不要用~这类符号某些版本展开不正常。1.3 新建 Library 时那个 attach 到底在做什么File → New → Library会让你填库名然后问你 attach 到哪个 technology library。这一步的含义是把一个 techfile工艺文件挂到你的库上techfile 里定义了金属层、通孔、设计规则相关的图层还有显示资源文件display resource。只有挂了 techfile 的库你进版图编辑器才能看到图层选择窗口LSW里有东西否则里面是空的根本没法画。关键点来了画原理图其实不强制要求 tech library。做前仿真的话真正决定器件模型的是仿真时加载的 model 文件PDK 里的.scs或.lib跟库有没有挂 techfile 没关系。所以如果只是想先画画原理图、跑跑仿真可以 attach 一个示例工艺比如教学用的 gpdk 系列或者干脆先不 attach版图阶段再补。但反过来说要画版图就必须挂这个顺序别搞反了。新建 cellview 的时候会让你选 view 类型常见的几种View 类型用途schematic原理图最常用symbol给上层调用的符号和 schematic 一一对应layout版图extracted / av_extracted寄生参数提取后的版图视图用于后仿behavioral / veriloga行为级模型用 Verilog-A 写config层次化的视图绑定配置混合信号里常用新手期用得上的就是前三个后面几个遇到再说。2. 原理图这一关命名、层次和那几个检查动作2.1 起名字比画图重要层次应该怎么切很多人第一张原理图喜欢把所有东西塞在一个 cellview 里一个运放从上到下几十个管子全平铺。这样做的直接后果是复用不了、改一个参数要满屏找、后仿真的网表又大又乱、LVS 报错时定位困难。更合理的做法是按功能切层次。拿一个两级运放举例我会这么切opamp_top只放输入对、第二级、补偿电容和偏置电流源的实例加上输入输出端口偏置电流产生单独做成bias_gen输出级如果需要缓冲再单独一个 cell。每个子 cell 自己做一次仿真验证顶层只关心接口。这样做的好处是验证过的子模块可以放心复用出问题的时候也容易二分定位——顶层换回理想源如果问题消失说明锅在子模块。命名上建议统一小写加下划线比如bias_gen、diff_pair、opamp_top。不要用空格不要用中文不要以数字开头也不要跟库里面已有的 cell 重名。Virtuoso 对大小写是敏感的Bias_gen和bias_gen是两个不同的 cell团队里混着用会让人抓狂。关于版本迭代我自己的习惯是在库名上做区分比如proj_v1、proj_v2而不是在 cell 名后面加_new、_final、_final2。后一种做法三个月之后你自己都不知道哪个是哪个。2.2 从器件库调管子instance 之后先看 CDF 参数快捷键i调出 Create Instance点 Browse 选库和 cell然后放置。放下去之后按q看属性Properties这里显示的就是 CDFComponent Description Format参数也就是这个器件对外暴露的可调项。模拟设计里最容易搞混的是m和nf。m是 multiplier意思是并联几份这个器件仿真器会把它当成多个器件并联处理nf是 number of fingers指的是这一个器件内部栅极被分成几根指。两者的物理含义不同用m并联时源漏区的寄生电容是按份数累加的而nf是共享扩散区的指状结构寄生更小。做高频或者大尺寸器件的时候这个区别会直接影响结果别随手用m代替nf。还有一个经常被忽略的点器件的 model name 必须能在仿真时加载的 model 文件里找到对应条目。如果调出来的管子 model 名是nch_mac而你加载的 model 文件里只有nch仿真时会直接报说找不到这个器件或者器件未定义。所以调管子之前先搞清楚你手上这个 PDK 的 model 文件里到底定义了哪些名字翻一下文件开头几十行就有。改完参数记得检查保存。原理图编辑器的F8是 Check and Save它会在保存前做一次语法检查把悬空端口、重名网络之类的问题先报出来。养成按F8而不是按F2的习惯能少踩很多坑。2.3 连线、网络命名和 Net Highlight连线用w画完一根线它会自动生成一个网络名比如net12但这类自动名字毫无意义。真正的做法是主动给关键网络起名Create → Label快捷键l点在线上输入名字比如vinp、vout、vcmfb。为什么要花这个时间三个理由。第一跑完仿真看波形的时候你会希望波形列表里写的是vout而不是net37第二后仿和 LVS 都依赖网络名做匹配名字乱了自动化流程就没法跑第三过两周你回来看这张图靠名字就能在三十秒内回忆起电路结构。跨页连接有两种方式一种是 global net全局网络同名即相连适合电源、地、偏置电流这类全芯片都要用的信号另一种是 off-page connector页连接器显式地声明这个信号从别的地方来适合模块之间传递的信号。我的习惯是电源地用 global其余信号一律用页连接器这样模块之间的接口一目了然不会出现某个信号其实全芯片连在一起但我没注意到的情况。保持连接正确之后可以用 Net Highlight 功能点一下某个网络全图中同名的线会一起高亮用来快速核对拓扑特别方便。2.4 Check and Save 过了仿真却报器件未定义怎么办器件未定义这类报错几乎每个新手都遇到过症状是原理图看着没问题、Check and Save 也不报错但一跑仿真或者生成网表就失败。我整理了一个排查顺序按这个顺序走基本都能定位排查项典型现象处理方式库不在 cds.lib 里报错里那个器件所属的库名你根本不认识在 cds.lib 里补 DEFINE 或 INCLUDEview 指向错误instance 的属性里 view 是空的或写了不存在的名字改成symbol或者实际存在的 viewswitch view list 没覆盖子 cell 有 schematic 但仿真器没去找在 Setup → Environment 里加上schematicmodel 名对不上 model 文件报找不到器件模型参数对照 model 文件改 CDF 里的 model 名CDF 被改坏器件参数面板显示异常、参数丢失从原始库重新拷贝一份器件别手改混用了不同仿真器的器件有些器件只在 spectre 下有定义确认仿真器与器件来源一致其中 switch view list 这条最隐蔽。Virtuoso 生成网表时会按一个列表顺序去找每个实例对应的视图默认大概长这样spectre cmos_sch schematic veriloga。如果某个子 cell 只有schematic而没有symbol而列表里没写schematic网表生成器就找不到它。所以 Setup → Environment 里那行配置别嫌麻烦该加就加。3. ADE 仿真链路从 setup 到波形3.1 ADE L 还是 ADE XL先想清楚要跑几个点ADE L 是单点仿真的环境一次跑一组参数出图、看波形、调参数都很轻快。ADE XL或者 GXL是给多点扫描和多工艺角用的一个 run 里可以包含若干个 corner结果放在同一个表格里对比还能做 Monte Carlo 和参数扫描。判断标准很简单如果你需要看的组合数超过三四个就该上 ADE XL。比如三个工艺角 × 三个温度 × 两个电源电压用 ADE L 意味着你要手动改配置跑十八次还得自己整理结果用 ADE XL 配一次跑完直接看表。反过来说如果只是在调偏置电流大小ADE L 改个值按一下就跑完了硬上 XL 反而是浪费。从原理图启动仿真的入口是Launch → ADE L或者Launch → ADE XL注意是从原理图窗口启动这样它会自动带上当前的 cellview 信息省得你再手动指。3.2 工艺角怎么设Model Libraries 加 section工艺角corner设置的核心就一句话把不同 corner 对应的 model 文件或同一文件里不同的 section 挂上去。PDK 给你的 model 文件通常长这样以 spectre 格式为例section tt parameters ... model nch nmos level... endsection tt section ss ... endsection ss在 ADE L 里Setup → Model Libraries添加文件路径然后在后面那一列填 section 名比如tt。在 ADE XL 里则是打开 Corners 面板为每个 corner 建一条记录每条记录里挂对应的 model 文件和 section还能顺带指定温度。这里有三个经验点值得说。第一section 名字一定要自己去文件里确认不要凭猜。不同 PDK 的命名五花八门有的是tt/ss/ff有的是typ/slow/fast还有的会把电压也编进去比如tt_1v8。猜错的结果通常是仿真能跑但不报错只是结果不对——这比报错还可怕。用grep section xxx.scs扫一眼十秒钟的事。第二前仿和后仿用的 model 文件可能不是一个。有些 PDK 会区分prelayout和postlayout两套模型后仿的时候要换成对应的版本。这个信息和 PDK 的说明文档放在一起第一次用的时候一定要看完那几页。第三温度是在 corner 里设不是在 source 里设。在 ADE L 里就是Setup → Temperature在 ADE XL 里就写进 corner 记录。混着设会出现我明明设了 85 度但结果像 27 度这种诡异现象。3.3 PWL 波形文件怎么导进来三种做法和它们的坑PWLpiece-wise linear就是把一段波形用若干个时间-幅值点描述出来点与点之间线性插值。导入方式有三种按数据量大小选。第一种数据量小的时候直接填在 source 的 PWL 字段里。analogLib里的vpwlf或者vpwl器件在属性面板里找到波形参数直接敲0 0 1n 1.8 10n 1.8 11n 0这种写法适合验证性的小信号改起来快但点多了面板会卡。第二种用文件。vpwlf这个器件本身就是PWL from file的意思属性里填文件名仿真器会去读。文件格式非常朴素一行一个时间点加一个值中间空格或 Tab 分隔// 注释可以这样写 0 0 1e-9 1.8 10e-9 1.8 11e-9 0单位后缀支持n、u、p、m、k、meg这些注意m是毫meg才是兆这个坑很多人踩过。第三种用行为级描述读文件比如在 Verilog-A 里用文件读取函数或者用仿真器的控制语句。这种做法最灵活适合复杂的激励比如从实测数据里导出来的长波形但调试成本也最高。不管用哪种方式有几个坑是通用的。时间点必须严格单调递增且不能重复。有重复时间点的话仿真器要么报错要么取最后一个值行为不确定。最后一个点一定要写成稳态值如果你只写到 10ns然后 stop time 设到 1us剩下的时间是线性外推出去的可能直接外推到天上去了。还有就是文件的路径建议写绝对路径或者放在仿真目录下用相对路径跨目录引用的时候很容易找不到文件却又不报明确错误。提示PWL 是时域描述做 AC 分析的时候它不会起作用。AC 分析需要的是 DC 工作点加小信号幅度和相位别指望用 PWL 去做频域激励。3.4 瞬态仿真不收敛一份从简到繁的排查清单不收敛是模拟仿真里最让人头疼的问题之一因为它给的信息往往很模糊就说convergence failed不说为什么。我的排查顺序是这样的先分清是直流工作点不收敛还是瞬态过程不收敛这两个的成因和解法完全不同。直流不收敛通常是因为电路里存在没有直流通路的浮空节点、正反馈回路、或者理想元件之间的矛盾。常见的检查点有没有节点只有电容连着、没有到地的直流通路有没有两个理想电压源直接并联有没有电流源接到高阻节点上导致电位漂移到电源轨之外模型文件里是不是有非物理的参数比如某些极端 corner 下的参数组合。针对这类问题可以给关键节点加一个很大的电阻到地比如 1G提供直流通路也可以用 nodeset 或者初始条件语句引导仿真器从一个合理的起点开始迭代spectre 里对应的做法是使用节点集语句或者读取节点集文件。这些都是帮仿真器一把的手段而不是改变电路本身。瞬态不收敛成因更多。我列一张常用参数表按我实际调整的顺序排参数 / 设置作用我的调整习惯精度预设控制整体误差容限从默认调到最保守一档先跑通相对容限相对误差上限默认 1e-3必要时收紧到 1e-4绝对电流容限电流量级小的节点电路电流很小的时候适当放松绝对电压容限电压误差下限默认 1e-6一般不动积分方法数值积分算法遇到振荡类问题时换成二阶梯形或齿轮法最大步长限制单步时间至少设置成信号周期的 1/20最小电容给每个节点加的虚拟电容最后手段会牺牲精度迭代次数上限单步内的牛顿迭代上限默认不够时适度提高调整顺序上我一般先看最大步长是不是设得太粗。很多不收敛其实是步长太粗导致仿真器跨过了电路的快速变化区加个合理的最大步长就好了。第二步换积分方法振荡类电路对这个很敏感。第三步才动各种容限参数。最后才考虑加虚拟电容因为这个会改变仿真结果只适合用来定位问题不适合交付。还有一个隐藏原因是电路本身的振荡。如果你设计的是一个本该闭环负反馈的系统但相位裕度不够它仿真起来就会真的振荡仿真器为了跟踪这种高频振荡会不断缩步长看起来就像不收敛。这时候不要怀疑仿真器去看一眼波形是不是真的在震多半是电路问题。4. 版图与后仿从 schematic 到 layout 的衔接4.1 为什么要用带连接关系的版图流程IC617 里的版图套件分几个层次基础版图编辑器、带连接关系的版本Layout XL/GXL。新手容易觉得我不就是从原理图照着画一遍吗于是纯手工画画完再跑 LVS结果一大堆连接错误。带连接关系的流程思路不一样它先从原理图生成一份版图骨架把该有的器件实例、端口pin、以及它们之间的连接关系都带过去你只需要摆放和连线。画完可以随时跑连接性检查工具会告诉你哪些网络还没连上、哪些器件还没放。这样做的效率差异在几十个器件的模块上可能还不明显到了几百个器件的时候就是几倍的差距。生成骨架的路径大致是Layout XL → Generate → All from Source前提是你的库挂了 techfile否则这一步会因为找不到图层定义而失败。生成的时候会让你选器件映射规则如果映射错了会出现生成了器件但尺寸不对或者器件根本没生成的情况映射关系在 PDK 文档里有说明。版图画完之后必须做的事DRC设计规则检查和 LVS版图与原理图一致性检查。IC617 本身带物理验证工具很多站点也会用第三方的验证工具具体跑哪个看你们团队的流程。LVS 失败时的排查思路是先看是不是器件数量对不上说明有器件被识别错或者压根没画再看是不是网络连接对不上说明连错线或者少了标签最后才看参数是否匹配。4.2 电阻不显示阻值这类显示问题的真正原因器件放上去了但看不到参数是个高频问题电阻值、管子尺寸都可能遇到。原因一般不在电路在显示设置上具体分三种情况。第一种原理图里 instance 的参数显示被关了。Virtuoso 里每个实例的显示是在Edit → Component Display里控制的你可以选择显示 label、显示参数值、或者两者都显示。默认情况下有些器件只显示名字不显示值需要手动打开。注意这个设置是针对单个实例的如果你希望某个 symbol 的所有实例都默认显示参数那要动 symbol 本身的 label 属性。第二种symbol 的 label 表达式没写对。symbol 是共享的它的显示内容由 label 的表达式决定。如果你想让某个自定义器件永远显示它的值就得在 symbol 上把 label 的表达式改成引用参数的写法。改完 symbol 之后已经画好的原理图不一定会立刻刷新可能需要关掉重新打开对应的 cellview。第三种你在版图里看参数。版图里的器件参数显示是通过标注annotate功能控制的跟原理图的设置完全是两码事。在版图里想看器件尺寸用标注功能把某一个层或者某一类器件的参数打到画面上。很多人对着一堆版图器件找不到参数其实是根本没开标注。4.3 后仿extracted view 和参数提取的取舍后仿真的流程是版图经过寄生参数提取生成一个带寄生的视图常见名字是av_extracted或者extracted然后仿真的时候让网表生成器优先使用这个视图而不是原始的 schematic。具体操作是改 Setup → Environment 里的 switch view list把av_extracted插到schematic前面。这样对层次里的每个 cell工具会优先找提取视图找不到才回退到原理图。这个机制很实用你只提取了关键模块的寄生其他模块自动用理想原理图不用手动指定。提取的时候有个关键参数是寄生电阻电容的阈值。阈值设得太小会把所有微不足道的寄生都提出来网表节点数暴涨仿真时间从几分钟变成几小时而且结果跟不提取也差不了多少。阈值设得太大重要寄生被丢掉后仿就失去意义了。合理做法是先按 PDK 推荐的默认阈值提取一版看看仿真时间能不能接受再看结果和前仿差多少据此微调。后仿不收敛的时候我的第一反应是先把寄生关掉或者把阈值调大跑一遍。如果能跑通说明是寄生引入的问题再逐步加回寄生定位如果还是跑不通那就是电路本身在前仿里就有隐患只是前仿掩盖了它。5. 日常踩坑环境变量、崩溃恢复和数据交付5.1 环境变量到底该写在哪里Virtuoso 相关的环境变量其实分三个层次搞混了就会出现我改了它怎么不生效的困惑。第一层是操作系统层面的环境变量比如PATH、license 路径这些写在 shell 的启动文件里~/.bashrc、~/.cshrc改完要重新登录或者重新 source 一次。第二层是工具内部的选项配置保存在.cdsenv文件里用envSetVal这类语句设置控制的是仿真器默认精度、编辑器默认行为这类东西。这个文件可以放在个人目录也可以放在项目目录项目目录的优先级更高。第三层是启动脚本.cdsinit用 SKILL 语言写可以设置快捷键、窗口位置、自动加载自定义菜单。比如hiSetBindKey(Layout KeyF2 hiZoomAbsoluteScale(hiGetCurrentWindow() 0.5)) envSetVal(spectre.envOpts modelFile string /path/to/model.scs).cdsinit有个坑如果里面有一句语法错误整个文件会被静默跳过后面的设置全都不生效而且不一定会弹明确的报错。所以改完.cdsinit之后要找一件可验证的事情测试一下比如某个快捷键是不是生效了确认它真的被加载了。另外启动目录下的.cdsinit会覆盖个人目录下的团队项目里经常靠这个机制统一配置但也可能造成我明明在家目录里设了却没生效的问题。5.2 崩溃退出之后先别急着重开Virtuoso 崩掉的时候会弹一个提示框大意是这个程序意外退出了为了帮助分析问题……然后你在终端里会看到一堆输出。这时候第一件事不是重开是保存现场。去看工作目录下的日志文件通常有CDS.log、cds.log这类名字尾巴上几十行往往就写着崩溃前最后做的事。如果是打开了一个巨大的波形文件或者某个操作特别频繁导致的崩溃日志里会有线索。然后是锁文件。Virtuoso 在编辑某个 cellview 的时候会生成一个锁文件如果程序异常退出锁文件可能留着重新打开的时候会提示这个 cell 正在被使用。处理方式是先确认没有别的 Virtuoso 进程在跑ps看一眼确认之后删掉对应目录下的锁文件再打开。这个操作一定要先确认多人共享目录的情况下删掉别人正在用的锁文件会让人家的工作丢失。自动保存方面Virtuoso 的编辑器里可以开启自动保存文件会带一个特定的后缀名放在同目录下。养成开启的习惯尤其是画大版图的时候。最后一步是复现。如果能想起崩溃前做了什么特别的操作就重做一遍看能不能复现。能复现的问题才是问题不能复现的只能先记下来下次遇到再说。5.3 数据出得去这个活才算干完仿真跑完、波形好看只是完成了百分之八十。剩下的百分之二十是数据交付。网表导出用File → Export → CDL得到的是标准的 CDL 格式网表给 LVS 或者交给下游流程用。导出的时候注意选对视图和器件映射否则出来的网表可能带一堆注释或者缺器件。波形数据导出简单的方式是从波形窗口直接另存成 CSV适合数据量不大的情况。数据量大或者需要批处理的用控制语句在仿真结束后自动输出比如按固定间隔采样后写到文件里这样能保证每次跑的结果格式一致方便后面用脚本处理。至于器件清单BOMIC 设计这边并没有像 PCB 工具那样一键导出的通用做法。常见的做法是写一段 SKILL 脚本遍历原理图的层次结构把器件类型和参数导成表格或者从导出的 CDL 网表里用脚本提取器件列表再加工。如果团队有现成的脚本直接用没有的话从 CDL 网表入手写个简单的解析脚本是最省力的路子。跨工具交接的时候版图通常导出成 GDS 格式网表导出成 CDL 或者 SPICE 格式。这两个是事实上的通用交换格式交出去之前确认一下层次结构是否需要打平、单位和精度是否一致。6. 热词纠偏哪些问题其实跟 IC617 没关系搜索 Cadence 相关问题时你会看到大量互相掺杂的关键词很多人一开始就被带偏了拿着 Virtuoso 的问题去搜 Allegro 的答案。我把常见热词分个类省得你走冤枉路。关键词实际所属工具/流程说明virtuoso、ADE L、工艺角、PWL 波形IC617 及模拟仿真流程本文讨论的范围导入工艺库、cds.lib、cellviewIC617 库管理上面第 1、2 章讲过瞬态不收敛、器件未定义仿真器层面第 3 章讲过版图、DRC、LVS、寄生提取IC617 版图与验证流程第 4 章讲过PCB 线宽、封装导入 PCB、ODBC 数据源板级 PCB 工具跟 IC617 不是一个工具原理图封装、导出 BOM板级原理图工具IC 侧的 BOM 做法看第 5 章HDL 概念工具、库设置数字前端流程另一条技术路线信号完整性理论分析与仿真高速板级仿真又是另一个方向各版本号下载、安装安装部署跟具体版本强相关看官方文档这张表不是要贬低哪一类问题而是想说清楚Cadence 的产品线铺得很宽从芯片级到板级到系统级都有工具搜索的时候带上工具名命中率会高很多。你拿cadence 怎么设置数据源去搜搜到的多半是板级工具的东西看半天跟你的 IC617 对不上号白白浪费时间。另外说一句我自己的体会版本号一定要带上一起搜。IC617 这个版本号本身就是一个很好的过滤器因为 IC6.1.7 和后面的 IC23.x 在菜单位置上有不少差异网上很多教程是更老的版本或者更新的版本写的照着做会发现菜单根本对不上。找不到对应版本的教程时我的办法是找相邻版本的教程看思路然后在自己的版本里四处翻一下菜单菜单会挪位置但功能逻辑基本不变。