想在ubuntu底下开发FPGA的同学会发现Altera公司的Quartus II软件有linux版可以下载,但是如果大家用的是64位系统的话可能会痛苦地发现这货居然不能作RTL仿真。要么提示license要么都是sucessful就是不出Modelsim-Altera的界面。笔者也遇到了这两个问题,百度发现很少人谈及这个问题,也没有找到解决方法。搜索之,找到一篇文章,完美的解决了问题。翻译之,以帮助再遇到此问题的同学。
原文翻译如下:
尝试在比较现代的linux发行版上运行Mmodelsim时会遇到问题,幸运的是我从网上找到了一些有用的信息能够解决它们。这篇文章大部分借鉴了Arch linux社区的工作。
问题之一:免费版的Modelsim-Altera只有32位的但是如今linux电脑通常都是64位的。
因此需要安装32位的依赖库,幸运的是这在现代的linux,比如ubuntu14.04上支持的很好。
输入如下命令:
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install gcc-multilib g++-multilib \
lib32z1 lib32stdc++6 lib32gcc1 \
expat:i386 fontconfig:i386 libfreetype6:i386 libexpat1:i386 libc6:i386 libgtk-3-0:i386 \
libcanberra0:i386 libpng12-0:i386 libice6:i386 libsm6:i386 libncurses5:i386 zlib1g:i386 \
libx11-6:i386 libxau6:i386 libxdmcp6:i386 libxext6:i386 libxft2:i386 libxrender1:i386 \
libxt6:i386 libxtst6:i386
问题之二:当你运行vsim之时如果终端返回如下信息:
** Fatal: Read failure in vlm process (0,0)
Segmentation fault (core dumped)
那么很可能你需要编译另外版本的freetype,这是一个Mmodelsim使用的库。由于未知的原因Mmodelsim调用新版本的freetype会遇到问题。
首先下载freetype2.4.12的源代码:
http://download.savannah.gnu.org/releases/freetype/freetype-2.4.12.tar.bz2
再安装libfreetype6的编译依赖:
sudo apt-get build-dep -a i386 libfreetype6
解压源代码、配置并编译:
tar -xjvf freetype-2.4.12.tar.bz2
cd freetype-2.4.12
./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
make -j8
编译所得的库文件在"objs/.libs"目录之下。运行Mmodelsim需要这些文件,所以需要把他们复制到相关目录之下。
先进入安装了Mmodelsim的目录,在我的电脑上是:/opt/altera/13.1/modelsim_ase/
然后:
sudo mkdir lib32
sudo cp ~/Downloads/freetype-2.4.12/objs/.libs/libfreetype.so* ./lib32
再修改Mmodelsim的启动脚本使得刚刚编译的库能够被Mmodelsim调用:
sudo vim bin/vsim
找到下面这一行:
dir=`dirname $arg0`
在其下添加一行,内容如下:
export LD_LIBRARY_PATH=${dir}/lib32
现在就能调用Mmodelsim了!
ps:如果遇到的是问题二,问题一的那些库也要安装,不然编译会报错。