简介:面向数字IC设计验证与FPGA开发人群,这份PDF教程专门解决在Ubuntu Linux环境里安装QuestaSim 2021.2仿真软件时遭遇到的各种实操问题。作者基于VMware Workstation 17 Pro + Ubuntu 20.04.5 LTS 64位平台亲测成功,将完整流程拆解为准备、安装、破解、环境配置四个阶段,便于逐步对照执行。文档首先交代如何从百度网盘下载安装包、使用解压密码2023,继而介绍修改可执行权限、启动安装向导、选择组件与目标目录;安装完成后,重点讲解利用licGen生成license.dat、通过ifconfig提取主机hostid、运行pubkey_verify打补丁、安装libxft2和lib32ncurses6等32位依赖库,最后正确设置.bashrc环境变量并输入vsim启动软件。资源为1个PDF文件,大小仅945KB,但信息密度高,覆盖了从零安装到成功运行的完整链路;同时针对ifconfig未安装、python版本不符等常见障碍给出了应对思路,能有效减少自行摸索的时间。该资源已有6661人学习下载,适合需要快速在Linux下搭建QuestaSim验证环境的在校学生、数字IC初学者及初级验证工程师。 搞数字IC仿真和FPGA验证的朋友,应该对QuestaSim不陌生。Mentor(现属Siemens EDA)家的这款仿真工具,在功能验证领域用得相当广,Verilog、VHDL、SystemVerilog的仿真回归基本都绕不开它。我之前一直在Windows下干活,后来为了把整个EDA工具链搬进Ubuntu,第一步就是装QuestaSim 2021 Linux版。说实话,这一趟下来踩坑不少,最折腾的还不是安装本身,而是依赖库补全和license匹配,前前后后花了将近一周才完全跑通。

这篇文章我把完整过程整理出来,从系统准备、32位兼容库、license配置到环境变量设置全流程走一遍,末尾附上我实际遇到的报错和排查方法。适合刚接触Linux的IC/FPGA验证新手,也适合准备从Windows工作流迁到Linux的老手参考。我用的环境是Ubuntu 20.04 LTS,虚拟机里操作,QuestaSim版本是2021.x Linux版,其他版本和发行版思路完全通用。

1. 安装前的准备工作

1.1 确认系统版本与硬件条件

动手之前先把Ubuntu版本和体系结构确认好,这步很多人跳过,后面装完启动报错才回头查。执行下面三条命令即可:

cat /etc/os-release
uname -m
free -h

uname -m 输出 x86_64 说明是64位系统,QuestaSim 2021对64位支持很成熟,这一点放心。内存建议至少4GB,磁盘预留20GB以上——QuestaSim本体大概占4~6GB,加上仿真时生成的中间文件和波形库,很容易超过10GB。我开虚拟机时给了8GB内存和60GB磁盘,跑中小规模验证工程绰绰有余。

如果你是物理机安装,注意网卡别用USB无线网卡,后续license绑定MAC地址时,有线网卡的MAC地址更稳定,无线网卡重启后地址飘了,license直接失效。虚拟机则无所谓,虚拟网卡的MAC地址只要不随便改,一样能绑。

1.2 补齐32位兼容库,这一步决定成败

QuestaSim虽然主体是64位程序,但内部有些组件和安装器还是按32位编译的,所以Ubuntu默认不带32位运行库时,最常见的结果就是:安装向导能跑完, vsim 一启动就报 error while loading shared libraries 。在Ubuntu 20.04上,我建议先把i386架构打开,然后一次装齐所有依赖:

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32z1 lib32gcc-s1 lib32stdc++6 libc6-i386 libxft2 libxrender1 libx11-6 libxext6 libcurl4 libncurses5

逐一说下这些包是干什么的: lib32z1 是32位的zlib压缩库,安装器解压组件用它; lib32stdc++6 是关键的C++标准库,缺它直接报 libstdc++.so.6 not found ; libc6-i386 是32位C库的基础; libxft2 和 libxrender1 是图形界面的字体渲染库,缺了 vsim 窗口会打不开或白屏; libncurses5 是终端界面的支持库。

注意:如果你用的是Ubuntu 22.04或更新版本, libncurses5 已经不在官方源里。我的建议是直接退回20.04装QuestaSim,或者自己找deb包强装,但强装容易把系统依赖搞乱,没必要。QuestaSim 2021官方支持列表里明确写了20.04,用同样版本可以少踩很多坑。

1.3 规划安装目录与权限

安装目录我推荐 /opt/questasim ,或者 ~/eda/questasim 。两个原则:路径中不要有空格,目录层级不要太深。Windows用户迁过来经常习惯建 D:\Program Files\... 这种路径,Linux下带空格的路径会导致各种脚本和Makefile的转义问题,非常烦。

权限方面,如果装到 /opt 下,普通用户没有写权限,建议安装完把目录所有者改成自己:

sudo chown -R $USER:$USER /opt/questasim

这样后续添加仿真库、改配置文件都不用反复sudo。个人强烈不建议全程root操作,虽然装的时候省事,但跑仿真时生成的临时文件全是root属主,后面清理和权限管理都很麻烦。

2. 安装包与License的准备

2.1 安装包的获取与结构

QuestaSim 2021 Linux版安装包一般是 questasim-2021.x_1.linux.tar.gz 或类似命名,从官网注册下载即可,大概2~3GB。下载后先校验一下MD5,避免下载损坏导致安装到一半报错:

md5sum questasim-2021.x_1.linux.tar.gz

解压后你会看到 install.linux 或 install.linux64 这类的安装脚本。如果你下到的是 questasim-2021.x_1.linux.gz 这种非tar包,直接 gunzip 解压即可。解压目录建议放在 ~/download/questasim_installer 这种临时目录,安装完可以删除。

2.2 license文件与MAC地址匹配

这一步是大部分人卡住的重灾区。QuestaSim 2021用的是FlexLM授权机制,license文件里会绑定主机名和网卡MAC地址。如果你拿到的license是绑定了某台机器的 site license ,必须让当前机器的MAC地址和license文件里写的一致。

先查当前机器的MAC地址:

ip link show
# 或者
cat /sys/class/net/*/address

注意 ip link show 输出里的 link/ether 后面那串就是MAC地址。然后查看license文件开头的 SERVER 行,格式一般是:

SERVER 主机名 MAC地址 端口号

如果MAC对不上,两种办法:一是改license文件里的MAC,但有的license文件做了加密校验,改完会报无效license;二是改本地网卡的MAC地址,这个更通用。临时修改网卡MAC的命令:

sudo ip link set dev eth0 down
sudo ip link set dev eth0 address 00:11:22:33:44:55
sudo ip link set dev eth0 up

把 eth0 换成你的实际网卡名,MAC地址换成license文件里绑定的那一串。物理机重启后MAC会恢复,需要写进网络配置文件;虚拟机的话,直接在虚拟机的网卡设置里把MAC改为固定值就行,一劳永逸。

2.3 环境变量指向license

如果你用的是正版授权文件,把它放到固定目录,比如 /opt/questasim/licenses/license.dat ,然后在 ~/.bashrc 里设置:

export MGLS_LICENSE_FILE=/opt/questasim/licenses/license.dat

QuestaSim用的环境变量是 MGLS_LICENSE_FILE ,很多教程写的是 LM_LICENSE_FILE ,这两个其实FlexLM都能识别,但QuestaSim默认读 MGLS_LICENSE_FILE ,建议两个都设上,兼容性最好。设置完 source ~/.bashrc 。

提示:license文件路径不要放在家目录的下载文件夹里,万一哪天清理磁盘或者换用户登录,路径变了license就找不到了。放在安装目录下的 licenses 子目录最省心。

3. 一步步完成安装

3.1 解压并赋予可执行权限

先把安装包解压到临时目录,注意解压任务量大,耐心等:

mkdir -p ~/download/questasim_installer
tar zxvf questasim-2021.x_1.linux.tar.gz -C ~/download/questasim_installer
cd ~/download/questasim_installer
chmod +x install.linux

如果你的安装包是 vsim-2021.x-linux64 这种可执行文件形式,那就不需要解压,直接把整个文件拷到安装目录,加执行权限即可。不管是哪种形式,先 file install.linux 看一下文件格式,确认是可执行文件再往下走。

3.2 图形界面安装向导全流程

如果运行环境有桌面,直接启动安装向导:

sudo ./install.linux

启动后是InstallAnywhere风格的向导界面,流程很清晰,几个关键页面说明下:

  • Welcome:直接Next。
  • License Agreement:选接受。
  • Install Directory:改成 /opt/questasim ,注意路径不能有中文和空格。
  • Choose Components:默认全选即可,Modelsim兼容组件也可以勾上,有些老工程还需要它。
  • License Configuration:这里选 Specify license file ,然后填 /opt/questasim/licenses/license.dat 的路径。
  • 最后就是安装进度条,等5~10分钟。

整个安装过程完全依赖 libxft2 和 libxrender1 ,如果你前面跳过了32位库的安装,向导可能在第二步就崩溃闪退或者界面全是乱码。出现这种情况,回到第1.2节把依赖装齐再跑。

3.3 服务器无图形界面的安装方式

我实际用的环境是没有桌面的Ubuntu服务器,图形向导起不来。两种应对方案供参考:

第一种,用 xvfb 跑无头图形环境:

sudo apt install -y xvfb
sudo xvfb-run -a ./install.linux -i silent -DUSER_INSTALL_DIR=/opt/questasim

这种方式适合对InstallAnywhere命令参数比较熟的人,response文件写起来稍繁琐。

第二种更粗暴但更稳定:找一台带桌面的Ubuntu机器(同架构、同版本最好),按照3.2的步骤把QuestaSim装好,然后整个 /opt/questasim 目录打包,拷到目标服务器上解压,再把依赖库和目标机器的license文件配好,直接用。EDA工具不像业务软件那样依赖注册表,目录拷贝完全可迁移。我自己就是这么干的,实测一点问题没有。

3.4 环境变量配置与命令行补全

不管哪种方式装完,环境变量都要配。编辑 ~/.bashrc :

vim ~/.bashrc

追加以下内容:

export MGLS_LICENSE_FILE=/opt/questasim/licenses/license.dat
export LM_LICENSE_FILE=/opt/questasim/licenses/license.dat
export PATH=/opt/questasim/questasim/bin:$PATH

注意:QuestaSim 2021安装完成后的可执行文件不一定在 /opt/questasim/bin ,而是 /opt/questasim/questasim/bin 。安装日志里会打印实际路径, find /opt/questasim -name vsim 看一眼最准。

保存后执行 source ~/.bashrc ,然后验证:

which vsim
vsim -version

看到版本号输出就说明基本环境OK了。

4. 首次启动验证与常见报错处理

4.1 启动 vsim 时报缺共享库

首次运行 vsim 最常见的报错是:

vsim: error while loading shared libraries: libXft.so.2: cannot open shared object file

这个就是前面强调的 libxft2 没装。确认一下:

ldd /opt/questasim/questasim/bin/vsim | grep "not found"

ldd 会把所有缺失的动态库列出来,哪个not found补哪个。大部分情况回到第1.2节的依赖安装命令再跑一遍就能解决。装完再启动前,注意 sudo ldconfig 刷新一下动态链接库缓存。

4.2 license环境变量没生效

如果启动时提示:

License checkout failed: Invalid host

但license文件里的MAC和当前网卡明明一致,那优先检查环境变量是否真的传到了当前终端:

echo $MGLS_LICENSE_FILE

为空说明 ~/.bashrc 里的导出语句没生效。常见原因是改了 ~/.bashrc 后没有执行 source ,或者当前用户不是设置环境变量的那个用户。还有一个极易忽略的点:Questasim启动时会同时检查 /opt/questasim/questasim/etc 下是否有多余的旧license配置文件,有的话优先加载旧的,干扰正常判断。把不用的配置移走或者改名,再重启 vsim 。

4.3 做一个最小仿真验证

为了确认整套环境完全可用,建个最小的Verilog工程测试:

mkdir -p ~/tmp/test_run && cd ~/tmp/test_run
vim adder.v
module adder #(parameter WIDTH = 8)(
    input  [WIDTH-1:0] a,
    input  [WIDTH-1:0] b,
    output [WIDTH-1:0] sum
);
    assign sum = a + b;
endmodule

然后跑一下完整的仿真流程:

vlib work
vlog adder.v
vsim -c work.adder -do "add wave -radix hex a b sum; run 100ns; quit"

输出里出现 # Run: 100ns 或者 # End 字样就是仿真跑通了。用 -c 参数表示命令行模式,不带GUI,适合服务器或无头环境。

5. 常见问题与排查技巧实录

5.1 问题速查表

我把实际安装和使用中遇到的典型问题整理成下面的速查表,按出现频率排序:

报错现象 可能原因 解决办法
error while loading shared libraries 缺少32位兼容库 执行1.2节的依赖安装命令
License checkout failed: Invalid host MAC地址与license不匹配 检查网卡MAC,改为license绑定值
Cannot find license file 环境变量未设置或路径错误 检查 MGLS_LICENSE_FILE 和文件是否存在
安装向导闪退/白屏 缺图形库依赖 安装 libxft2 libxrender1
bash: ./vsim: cannot execute binary file 架构/位数不匹配 确认是64位系统,安装x86_64版本
打开后窗口空白无法操作 显示环境问题 检查 DISPLAY 变量,或用 vsim -c 命令行模式
Permission denied 运行不了 没有执行权限或属主不对 chmod +x 或 chown $USER

5.2 独家避坑技巧

这些是我实际折腾中拿到的一手经验,常规文档里鲜有提及:

第一, source ~/.bashrc 只对当前终端窗口生效。如果你用VS Code远程连服务器、再开多个终端,每个新终端都可能没有环境变量。建议在 /etc/environment 里也写一份环境变量,这样所有用户所有终端都能识别:

sudo vim /etc/environment

追加:

MGLS_LICENSE_FILE=/opt/questasim/licenses/license.dat
LM_LICENSE_FILE=/opt/questasim/licenses/license.dat

第二,Questasim启动时会读取当前用户 ~/.config/mentor 目录下的配置缓存,如果你曾经用错误的环境变量启动过,这个缓存里会记录坏状态。后续即使环境变量改对了, vsim 仍然报错。解决办法是删掉 ~/.config/mentor 目录再启动:

rm -rf ~/.config/mentor

第三,如果你的shell是zsh, ~/.bashrc 里的导出语句不会生效,必须写进 ~/.zshrc 。这个坑让很多用Oh My Zsh的同学白折腾半天。

5.3 后续使用建议

FAQ阶段结束后,聊一下日常使用心得。QuestaSim在Linux下的性能比Windows好不少,尤其是大批量回归测试,文件句柄和进程管理都更稳。建议日常跑仿真用命令行模式,需要看波形再启动GUI:

vsim -gui work.top &

还有一个小建议:安装完成后,把整个 /opt/questasim 目录备份一份。因为EDA工具的安装包动辄几个GB,而安装好的目录可以通过压缩打包整个备份。以后重装系统或者换服务器,直接解压依赖库、配好license就能用,省掉重复排队下载安装包的时间。我自己用的就是一个压缩后的 questasim_backup.tar.gz ,在新机器上从解压到跑通仿真不超过15分钟。

最后再分享一个小技巧:如果你同时装了Modelsim和QuestaSim,注意两者的license文件不要混用。Modelsim的license格式和QuestaSim看似一样,但功能特性授权不同,混用会导致某些高级库编译不过。最好在环境变量里分开设置,或者用 vsim -lmgl 参数显式指定扩展授权文件,这个参数在项目很大的时候尤其有用,可以避免莫名其妙的授权缺失问题。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

更多推荐