2. 测试环境搭建:硬件环境准备、软件工具链安装、EDA环境配置、License设置
环境搭建这件事,说难不难,说简单也不简单。我见过太多项目,最后卡在环境问题上——不是License没配好,就是EDA工具版本对不上。说白了,环境搭得稳,后面才能跑得快。
这一章,我把整个流程拆成四个部分来讲。你跟着走一遍,基本不会出大问题。
2.1 硬件环境准备
先说说硬件。做GEM验证,服务器是核心。我个人习惯用Linux工作站,CentOS 7或RHEL 8都行。内存至少64GB,推荐128GB以上。为什么呢?因为GEM的仿真模型比较大,内存小了,跑个回归测试直接卡死。
硬件最低配置清单:
- CPU:8核以上,主频2.5GHz+
- 内存:64GB起步,128GB推荐
- 硬盘:SSD 500GB+,用于存放工具和工程
- 网络:千兆以太网,用于License服务器通信
我在项目中遇到过一个问题:服务器硬盘用的是机械盘,结果每次编译都要等半小时。后来换成SSD,时间直接砍到10分钟。你想想看,这个差距有多大。
另外,如果你用的是虚拟机,记得给足资源。别抠门,CPU和内存给少了,后面有你受的。
2.2 软件工具链安装
软件工具链这块,我把它分成三类:基础工具、EDA工具、辅助工具。
| 类别 | 工具名称 | 版本要求 | 用途 |
|---|---|---|---|
| 基础工具 | GCC/G++ | 4.8.5+ | 编译C/C++代码 |
| 基础工具 | Make | 3.82+ | 构建管理 |
| 基础工具 | Perl | 5.16+ | 脚本处理 |
| EDA工具 | VCS | 2020.12+ | 仿真编译 |
| EDA工具 | Verdi | 2020.12+ | 波形调试 |
| 辅助工具 | Git | 2.0+ | 版本管理 |
| 辅助工具 | Python | 3.6+ | 自动化脚本 |
安装步骤其实不复杂,但要注意顺序。我建议先装基础工具,再装EDA工具。为什么呢?因为EDA工具依赖基础工具里的库文件。
举个例子,VCS安装时需要libstdc++.so.6这个库。如果GCC版本太低,这个库可能没有,或者版本不对。嗯,这里要注意,最好用系统自带的包管理器来装基础工具。
# 安装基础工具(CentOS 7示例)
sudo yum install -y gcc gcc-c++ make perl git python3
# 安装EDA工具(以VCS为例)
tar -xzf vcs-2020.12.tar.gz
cd vcs-2020.12
./install.sh -dir /tools/synopsys/vcs-2020.12
小技巧:安装EDA工具时,建议单独创建一个目录,比如 /tools。这样方便管理,也方便后续升级。
2.3 EDA环境配置
工具装好了,接下来就是配置环境变量。这一步很关键,配置不对,工具根本跑不起来。
我一般把环境变量写在 .bashrc 或 .cshrc 里。这样每次登录终端,环境就自动加载好了。
# .bashrc 配置示例
export SYNOPSYS=/tools/synopsys
export VCS_HOME=$SYNOPSYS/vcs-2020.12
export VERDI_HOME=$SYNOPSYS/verdi-2020.12
export PATH=$VCS_HOME/bin:$VERDI_HOME/bin:$PATH
export LD_LIBRARY_PATH=$VCS_HOME/lib:$VERDI_HOME/lib:$LD_LIBRARY_PATH
配置完记得 source 一下:
source ~/.bashrc
然后验证一下工具是否正常:
vcs -version
verdi -version
如果能看到版本号,说明环境配置成功了。
注意:不同EDA工具对环境变量的要求可能不一样。比如VCS需要设置SNPSLMD_LICENSE_FILE,Verdi需要设置LM_LICENSE_FILE。别搞混了。
2.4 License设置
License这块,是很多人容易踩坑的地方。我曾经因为License配置不对,折腾了一整天。
License有两种常见模式:浮动License和节点锁定License。GEM验证一般用浮动License,因为多台机器可以共享。
配置步骤:
- 把License文件放到指定目录,比如 /tools/licenses/
- 启动License服务器(lmgrd)
- 设置环境变量指向License文件
# 启动License服务器
lmgrd -c /tools/licenses/synopsys.dat -l /var/log/lmgrd.log
# 设置环境变量
export SNPSLMD_LICENSE_FILE=27000@license-server-ip
export LM_LICENSE_FILE=27000@license-server-ip
验证License是否生效:
lmstat -a -c 27000@license-server-ip
如果能看到Feature列表,说明License配置成功了。
避坑指南:我曾经遇到过一个问题——License服务器启动了,但客户端就是连不上。后来发现是防火墙没开端口。记得检查一下防火墙设置,把27000端口放行。
2.5 整体环境验证
所有配置完成后,我建议做一个整体验证。写一个简单的测试用例,跑一下仿真流程。
// test.sv
module test;
initial begin
$display("Hello, GEM World!");
#10 $finish;
end
endmodule
# 编译仿真
vcs -sverilog test.sv -o simv
./simv
如果能看到 "Hello, GEM World!" 输出,说明整个环境搭建成功了。
下面这张图,帮你梳理了整个环境搭建的流程:
环境搭建这块,看起来步骤多,但只要你按顺序来,每一步都验证一下,基本不会出大问题。我个人习惯是每做完一步,就做个简单测试,这样能快速定位问题。