☰
Synopsys 2020 EDA虚拟机镜像分享:DC/VCS/Verdi一站式环境
2026/10/4 1:02:33 网站建设 项目流程

EDA虚拟机分享2020版本(Synopsys2020)

我最早接触Synopsys工具链是在研究生阶段,那时候实验室里只有一台装了老版本DC的服务器,几个人排队等license。后来工作了,发现公司环境倒是齐全,VCS、DC、PT、Verdi一应俱全,可一回到家,想跑个RTL仿真或者综合实验,就只能干瞪眼。不是买不起正版,而是个人买EDA工具根本没必要——这是工业级工具,不是App。所以很长一段时间里,我都在折腾怎么搭一套能随时用的可复现环境。最后落脚点,就是一整套基于虚拟机的Synopsys 2020版本镜像分享。

这篇文章就写给那些需要Synopsys 2020工具链做学习、做实验、做论文复现,但没法拿到公司license或者不想污染自己主力系统的朋友。如果你正在准备数字IC相关的面试,或者学校课程里需要跑DC综合、Verdi看波形,那这套环境能帮你省下一整个周末的折腾时间。

1. 为什么选虚拟机而不是WSL或者裸装Linux

先说我踩过的坑。最早我想的是在Windows上直接装个WSL2,然后在里面装EDA工具。听起来很优雅,毕竟WSL2现在性能和集成度都不错。但真做起来,问题一堆。Synopsys工具对linux发行版的类型敏感,对glibc版本敏感,对图形界面连接也敏感。WSL2默认不跑X Server,需要额外配VcXsrv或者类似的东西,Verdi这种依赖图形界面的工具,就算通过X转发跑起来,刷新率也让人崩溃。

后来试过直接在本机装双系统,Ubuntu 20.04 LTS,然后装工具。这个方法可行,但有一个致命问题:license服务器配置。很多网上流传的license方案对你的Mac地址和hostname有要求,一旦你改个主机名,一切就要重新来。而且双系统意味着你在Windows和Linux之间切换要重启,做实验效率很低。

所以最后选了虚拟机方案,具体是VMware Workstation + Ubuntu 18.04 LTS。为什么是18.04而不是20.04?因为Synopsys 2020版本对Ubuntu 18.04的兼容性最稳。虽然20.04也能装,但我试下来在运行dc_shell-t的时候偶尔会遇到动态库兼容警告,虽然不影响跑,但看着难受。18.04配2020版,基本是网上所有EDA虚拟机方案里验证过最多、出问题最少的一个组合。这也是我推荐大家直接用现成虚拟机镜像而不是自己搭环境的核心原因。

2. 这套Synopsys 2020虚拟机里装了哪些工具

这套镜像不是只装了个孤零零的DC。我把平时学习和做实验最常用的一套东西都放了进去,基本上是数字IC设计前端的标准配置。

工具名称版本用途
Design Compiler2020.12RTL综合,把Verilog转成门级网表
VCS2020.12编译型仿真器,跑RTL和gate-level仿真
Verdi2020.12波形和调试工具,配合VCS用
PrimeTime2020.12静态时序分析

这套组合覆盖了从RTL编写、功能仿真、逻辑综合到时序验证的完整前端流程。说实在的,很多小公司的实际流程也就用到这些工具的前端部分。

除了EDA工具本身,系统里还装好了必要的库文件——比如libjpeg62、libpng16、libXext等一堆32位和64位兼容库。这些库在裸系统上通常缺一大堆,每次启动工具都会报"error while loading shared libraries",非常磨人。虚拟机镜像里已经全部处理好,开机就能用,省掉大量基础环境排查时间。

另外,我还在系统里放了一份专门的启动说明文档,里面写清楚了不同工具用什么命令启动、license服务怎么开。因为license这一块是很多人卡住的点,后面我会单独详细解释。

3. license问题的核心机制与常见误区

EDA虚拟机分享这个项目涉及的所有相关内容里,license问题至少占了一半的讨论热度。很多人在论坛上问为什么启动dc_shell报license错误,为什么Verdi起不来,其实问题往往出在license server的hostname和MAC地址匹配上。

先讲清楚机制。Synopsys工具的license机制是基于license server的。工具启动时,会通过环境变量SNPSLMD_LICENSE_FILE或者LM_LICENSE_FILE去指定一个端口和主机,比如27000@licserver。然后工具跟license server通信,检查license是否可用、feature是否匹配、过期时间是否合法。

这套虚拟机镜像的license方案是基于本地节点锁定的。也就是说,license文件里绑定了这台虚拟机的hostname和MAC地址。这也是为什么几乎所有分享的Synopsys虚拟机都要求你别乱改hostname的原因。我一开始自己用的时候不懂,把虚拟机hostname改成自己喜欢的样子,结果所有工具都启动失败,报"Invalid host"错误。这个坑估计99%自己搭环境的人都踩过。

解决的办法很简单:保持默认hostname,不要动network配置。如果你确实需要改名,可以尝试用lmhostid命令查看当前机器ID,然后去生成匹配的license,但这就涉及比较复杂的操作了。既然我们用现成镜像,就直接遵守默认配置,省心。

还有一个常见的是license特征码模式。Synopsys有专门的SNPSLMD,它支持两种机制,老的是flexlm,新的是scl。2020版本使用的是较新的scl keygen模式。有用过老版工具经验的人可能会习惯性去搞老修炼方式,但在2020版上不生效,必须用配套的方式处理。镜像里已经把所有东西提前弄好了,不需要你再跑一遍keygen,启动即用。

4. 虚拟机性能调优的实用要点

这也是我从最初使用吃性能的PC到后来优化运行环境过程中积累下来的一些重要经验。

很多人拿到虚拟机之后,第一反应是用默认配置去跑,结果发现DC综合稍微大点的设计就慢得不行。但这套EDA虚拟机对性能确实是有要求的,VMware的默认设置往往不是最合适的。如果你用的是VMware Workstation 15及以上版本,拿到虚拟机后建议做以下几个调整。

内存分配至少8GB,最好是12GB。DC综合工具在编译大规模设计时内存消耗很夸张,我遇到过综合一个稍微大点的模块时内存占用突破10GB的情况。当然这和个人设计的复杂度有关,但内存宁可多不能少。

处理器分配2到4个核心。VMware中处理器设置可以按照每个处理器的内核数量配置,比如分配2个处理器,每个2核。实测下,DC的并行综合能力对多核的支持还算不错。如果只是在RTL仿真阶段,2个核也就够了,但后续要做综合,建议直接给4核。

硬盘建议使用独立SCSI模式而非NVMe。这一点很多小白不会注意到,但Synopsys 2020工具链在SCSI虚拟磁盘下的兼容性更好。旧版本工具对磁盘控制器类型敏感,SCSI虚拟磁盘出现莫名其妙IO错误的情况最少。

关掉3D加速。有些人在用Verdi看波形时觉得界面不够流畅,于是想着打开3D加速。但实际上EDA工具不需要3D加速,反而开着3D加速可能会在部分显卡驱动环境下触发X11渲染问题。关掉3D加速,用默认的标准VGA适配器,Verdi的波形缩放反而非常顺滑。

如果你用的主机是SSD,强烈建议把虚拟机文件放入SSD。看波形和跑仿真是随机IO密集的操作,SSD能明显减少等待感。我最初把镜像放在机械硬盘里跑,每开一次Verdi加载FSDB波形要等半天,后来迁移到SSD上,基本秒开。

5. 从开机到跑起第一个综合工程的完整流程

这里我完整走一遍流程,帮第一次用这个环境的朋友确认自己每一步做的对不对。

开机后,登录系统的用户名和密码默认在桌面的说明文件里有。如果没有特别注明,一般默认root权限,密码也是常见默认值。进入桌面后第一步,打开终端,输入lmstat -a检查license server是否正常运行。如果输出里有"license server UP"相关的字样,说明license服务正常,可以继续。

接下来就是启动工具。输入dc_shell-t进入Design Compiler的TCL模式。这里要注意,如果你直接输dc_shell而不带-t,进的是dcsh模式,语法风格完全不同。现在的教程和脚本基本都用TCL模式,建议统一用dc_shell-t。

为了验证环境没问题,我建议你跑一个最小设计,比如一个简单的D触发器。先写一个简单的Verilog文件,然后创建一个TCL脚本,内容大致是:

read_file {dff.v} current_design dff compile write -format verilog -output dff_gate.v

执行之后如果没有任何error,并且在当前目录下生成了dff_gate.v,说明综合流程打通了。这个时候再打开Verdi,看一下综合前后的波形对比,整个环境就确认没问题。

VCS的使用也顺带提一下。VCS的编译命令是vcs -sverilog -debug_access+all。加上-debug_access+all的目的是生成完整的fsdb波形文件,这是Verdi调试的关键。没有这个选项,Verdi打开波形文件时会提示缺少信号信息。很多刚接触的人在这一步一头雾水,其实只是编译参数的问题。

整个流程从打开虚拟机到跑通一个小设计,正常情况下应该不超过半小时,包括熟悉命令的时间。如果超过这个时间还没搞定,往往是license服务没起,用lmstat查一下基本就能定位。

6. 我在实际使用中踩过的几个典型坑

每个用过Synopsys工具链的人,都会经历一段"工具报错不认识、上网搜也搜不明白"的阶段。这里我把踩过的比较有代表性的坑列出来,给新人一个心理预期。

第一个就是hostname被系统自动改掉。有些Linux发行版会自动从DHCP更新hostname,或者你在安装VMware Tools时不小心改了系统配置,导致license失效。排查方法很简单,用hostname命令查看当前主机名,再和license文件里的hostname做对比。

第二个是环境变量配置错误。镜像里默认在.bashrc中配置好了所有环境变量,但如果在打开终端前修改了环境变量文件,或者在非交互式shell里启动工具,部分环境变量可能不会生效。建议始终在正常交互式终端中启动工具。

第三个是文件权限问题。如果你从Windows宿主机往虚拟机里拖文件,默认文件权限可能是644甚至更宽松,但某些脚本文件需要执行权限。用chmod +x修一下就能解决,不是什么大事。

第四个是内存不足导致编译被杀。VMware默认的内存设置可能偏小,RTL仿真稍微复杂些就容易触发OOM,进程直接消失,查看vcs.log也看不到明确的error信息。建议先把内存调到至少8GB再跑工程。

第五个是Verdi打不开波形但工具本身能启动。这个通常是波形文件路径里有中文或者空格,Verdi对路径解析不够宽裕,把工程路径改成纯英文纯下划线就能解决。

这五个坑基本覆盖了绝大多数入门者会遇到的问题。以我的经验,只要提前知道这些,实际使用体验会顺畅非常多。

7. 这套环境还能怎么扩展

对于已经跑通基础流程的人来说,这套虚拟机完全可以扩展成一个更完整的学习和实验平台。

比如可以装一个开源RISC-V核,比如PicoRV32或者VexRiscv,用DC跑综合,用PT跑时序。这样就能从软件仿真走向真正的物理实现流程,学到的东西比单纯跑仿真深刻得多。

也可以把SystemVerilog的UVM环境放进来,配合VCS做验证实验。UVM验证是现代IC验证的主流方法学,很多时候公司面试会考察候选人对UVM机制的理解。尽管UVM框架代码可以自己写,但用真实工具链搭一套UVM环境跑通,理解完全不同。

还可以挂载一个共享目录,让Windows下的编辑器配合虚拟机内的工具链使用。我习惯在Windows上用VS Code写RTL,然后保存到共享目录,虚拟机里直接读取编译。这种"Windows编辑、Linux编译"的流程,比在Linux虚拟机里装编辑器舒服很多。

内存更大的机器还可以同时开两个虚拟机副本,一个跑综合,一个跑仿真,模拟一台小型服务器的工作模式。虽然不完全是真实环境,但对理解EDA流程的分布式分工有帮助。

8. 最后的个人体会

使用这套Synopsys 2020虚拟机这么长时间以来,我最深的感受是,一个好用的EDA学习环境对技术成长的推动比想象中大得多。在学校或公司,工具和环境往往是别人搭好的,你只需要专心写代码。但自己实际去搭建、去解决问题,碰到的每一个报错都是在加深对工具链底层的理解。

在家庭环境里能随时打开一个Verdi看波形,或者用DC综合一个自己设计的模块,这种"随时能跑实验"的便利性,远比想象中的更重要。尤其对于准备秋招或者正在做毕设的同学,技术能力其实就是在一次次"环境报错、查资料、修复、跑通"中积累出来的。

如果你拿到这套虚拟机镜像后遇到工具启动报错,先别急着怀疑镜像有问题,先把license服务状态、hostname、环境变量这三样查一遍,绝大多数问题都出在这三处。祝你在数字IC的学习路上少踩坑,多跑通。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询