4. 验证环境搭建:Linux环境配置、EDA工具安装与License设置

好,咱们进入第四章。这一章,说白了就是“磨刀”的环节。

很多同学觉得验证就是写代码、跑仿真,环境什么的随便搞搞就行。我刚开始也这么想,结果呢?有一次折腾了整整两天,就为了装一个VCS的补丁。后来我学乖了——环境搭得稳,后面才能跑得快。今天我就把这几年的经验,一股脑倒给你们。

4.1 Linux环境配置——你的“作战基地”

EDA工具基本都跑在Linux上。我个人习惯用CentOS 7或者Red Hat Enterprise Linux。Ubuntu也行,但有些老工具对Ubuntu的支持不太好,容易出幺蛾子。

第一步:检查系统版本

cat /etc/redhat-release
uname -a

确保是64位系统。现在基本没有32位的EDA工具了。

第二步:安装必要的依赖库

EDA工具依赖一堆共享库。缺一个,装到一半就报错,很烦人。我建议一次性装全:

yum groupinstall -y "Development Tools"
yum install -y glibc.i686 libstdc++.i686 zlib.i686
yum install -y ncurses-libs.i686 libXext.i686 libXtst.i686
yum install -y redhat-lsb-core
yum install -y perl perl-devel
yum install -y tcl tk

嗯,这里要注意:有些工具需要32位的库,比如VCS的老版本。你想想看,一个64位的系统,为了跑一个32位的工具,还得装兼容库。没办法,这就是现实。

我的小技巧: 装完依赖后,运行一下 ldconfig -p | grep lib,看看关键库是不是都在。我曾经因为缺了一个libXss.so.1,VCS死活起不来,查了半天才发现。

4.2 EDA工具安装——VCS与QuestaSim

EDA工具的安装,说白了就是解压、运行安装脚本、设置环境变量。但细节决定成败。

4.2.1 安装VCS

VCS是Synopsys家的仿真工具。安装包通常是一个压缩文件,比如 vcs_mx_vL-2016.06.tar

安装步骤:

  1. 解压安装包到目标目录,比如 /opt/synopsys/vcs
  2. 运行 ./installer./setup.sh
  3. 按照提示选择安装路径、组件
  4. 安装完成后,设置环境变量

环境变量设置(加到.bashrc或.cshrc里):

export VCS_HOME=/opt/synopsys/vcs
export PATH=$VCS_HOME/bin:$PATH
export LM_LICENSE_FILE=27000@license_server_ip
注意: VCS的安装路径不要有中文或空格。我见过有人把工具装在“我的工具”文件夹下,结果编译报错,全是乱码。老老实实用英文路径。

4.2.2 安装QuestaSim

QuestaSim是Mentor(现属Siemens)家的仿真器。安装方式和VCS类似,但有个坑——它需要配置一个叫 MGLS_LICENSE_FILE 的环境变量。

安装步骤:

  1. 解压安装包到 /opt/mentor/questa
  2. 运行 ./install./questasim-gui-xxx-linux
  3. 选择安装组件,建议全选
  4. 配置环境变量

环境变量设置:

export QUESTA_HOME=/opt/mentor/questa
export PATH=$QUESTA_HOME/bin:$PATH
export MGLS_LICENSE_FILE=1717@license_server_ip

这里有个细节:VCS和QuestaSim的License端口号不一样。VCS默认用27000,QuestaSim用1717。别搞混了,否则工具会报“License check failed”。

4.3 License设置与调试——最头疼的一环

License,说白了就是工具的“通行证”。没有它,工具就是个摆设。我见过太多人卡在这一步了。

4.3.1 License服务器配置

通常公司会有一台专门的License服务器。你需要做的是:

  1. 在服务器上安装 lmgrd(License守护进程)
  2. 准备好License文件(.lic或.dat)
  3. 启动License服务

启动命令:

lmgrd -c /path/to/license.dat -l /var/log/lmgrd.log

检查License状态:

lmstat -a -c /path/to/license.dat

如果看到 Server status: UP,恭喜你,License服务器跑起来了。

4.3.2 常见License问题与调试

我遇到过最典型的问题,就是“Feature not found”。明明License文件里有这个feature,但工具就是报找不到。为什么会这样?

原因通常有两个:

  • 环境变量没设对:检查 LM_LICENSE_FILEMGLS_LICENSE_FILE 是否指向正确的端口和服务器
  • License文件格式错误:有些License文件是加密的,需要特定的daemon
调试命令汇总:
# 检查环境变量
echo $LM_LICENSE_FILE

# 检查License服务器是否可达
telnet license_server_ip 27000

# 查看License详细信息
lmstat -a

# 查看特定feature
lmstat -f vcs_verilog

我曾经有一次,VCS报“License check out timeout”。查了半天,发现是防火墙把27000端口给封了。跟IT部门沟通后开了端口,问题解决。所以,如果你遇到类似问题,先检查网络连通性。

4.4 环境验证——跑一个Hello World

工具装好了,License也配好了。怎么知道一切正常?跑一个最简单的仿真。

创建一个test.sv文件:

module test;
  initial begin
    $display("Hello, Verification World!");
    $finish;
  end
endmodule

用VCS编译运行:

vcs -sverilog test.sv
./simv

用QuestaSim编译运行:

vlog test.sv
vsim -c test -do "run -all; exit"

如果看到“Hello, Verification World!”打印出来,恭喜你,环境搭建成功了!

我的建议: 把这个Hello World保存起来。以后每次换新机器、重装系统,都先跑一遍。能快速确认环境是否正常。

4.5 避坑指南——我踩过的那些坑

最后,分享几个我亲身经历过的坑:

  • 坑一: 安装路径有空格。VCS编译时,路径解析会出错。解决方案:用下划线或连字符代替空格。
  • 坑二: 环境变量没source。每次开新终端都要重新设置。解决方案:把环境变量写到 .bashrc.cshrc 里。
  • 坑三: License文件过期。有些License有有效期,过期了工具就用不了。解决方案:定期检查License有效期,提前续期。
  • 坑四: 多个License文件冲突。如果你同时用VCS和QuestaSim,它们的License文件可能会互相干扰。解决方案:分别设置 LM_LICENSE_FILEMGLS_LICENSE_FILE,不要混用。

嗯,环境搭建这部分,说难不难,说简单也不简单。关键是要细心、耐心。把这一步做好了,后面的验证工作才能顺利开展。好了,这一章就到这里。下一章,咱们开始写第一个验证组件——Driver。