在日常工作中,ICer的工作环境都是在服务器上,大型的模拟仿真需要较高的服务器配置。但是拥有一个小型的安装有所需Linux+EDA工具的移动工作平台,无疑将是一件爽不可言的事情。
最近新购置了一台轻薄本,准备用于移动办公,自己之前的老笔记本上安装有win+linux双系统,并在Linux上安装了IES,VCS+VERDI等全套的芯片设计验证工具链。这使得我非常希望新的轻薄本上也能兼顾这种需求。但是轻薄本的内存均较小,对其运行性能不是很放心,自己不想在这上面折腾双系统,加上功耗的问题,所以极力想减小使用虚拟机带来的额外开销。因此想到了win10的wsl子系统。
相对来说,wsl子系统可能会提供更顺畅的运行体验,而且相较于虚拟机和双系统日常使用更灵活,下面将介绍一下wsl子系统、wsl子系统图形界面、vcs+verdi工具链的安装过程。
先给大家show下效果
安装WSL子系统
- 打开“设置-更新与安全-开发者选项”,选择“开发人员模式”
- 在“控制面板-程序-启动或关闭Windows功能”中勾选“适用于Linux的Windows子系统”
- 打开Microsoft store,搜索ubuntu(或其他发行版本的linux,本文安装的ubuntu18.04),点击”获取“进行安装
至此,WSL子系统安装完成。
GUI图形界面
网上提供了很多中图形界面工具,本文选择了Xming,没有原因,只是觉着能解决问题就好
下载安装Xming到Windows中
在wsl子系统中运行vcs verdi等想看到GUI的程序前,在win系统中打开Xming,配置不用关系,默认就好;
在启动的wsl子系统中将DISPLAY环境变量写入你使用的bashrc中,默认是~/.bashr)c
# XMing display
export DISPLAY=:0.0
记得第一次写入要source ~/.bashrc使环境变量生效,可在终端运行:echo $DISPLAY检查设置是否成功;
后续使用中不需要在此执行source操纵,.bashrc会在每次打开终端时自动完成source;
至此,Xming图形界面的支持安装完成。
安装VCS+VERDI
本文的重点部分,工具链的安装
vcs verdi的安装包及lic文件请自行在网上下载,可在eetop论坛、ictown等网站找到。
将安装包放置在磁盘的某个盘符上,注意建立的文件夹最好不要使用中文,在WSL子系统看的c d e等磁盘均在/mnt/目录下,安装过程与在ubuntu下安装没有区别,请参考:
vcs+verdi安装教程
遇到的问题及解决办法
首先要解决的是软件源的问题,更新了软件源后,想要或者缺某个工具或库时可以直接执行:sudo apt-get install xxx 得到,更改软件源的办法:
更改软件源参考办法
- 问题1 运行报错:/bin/sh:0: Illegal option -h
解决办法:修改ubuntu上的/bin/sh
在ubuntu上,/bin/sh默认是链接到/bin/dash的,当你从源代码编译软件的时候,dash可能会导致一些错误,至少我遇到过 类似问题,因此,我把/bin/sh的连接改为了/bin/bash
如果你使用的就是6.10,那么应该这样做:
rm -f /bin/sh
ln -s /bin/bash /bin/sh
就可以用vcs了。
- 问题2 运行vcs报错:Makefile:104: recipe for target
‘product_timestamp’ failed
解决办法:
gcc降到4.8
- install gcc-4.8
sudo apt install gcc-4.8 g+±4.8 - start vcs
vcs -full64 -cpp g+±4.8 -cc gcc-4.8
-LDFLAGS -Wl,-no-as-needed …
参考问题2解决办法
- 问题3 运行vcs报错:/bin/vcs: line 2402: dc:
command not found
解决办法:
安装bc包?eetop上的回答,问题未解决,但是不影响功能的模拟仿真
- 问题4 vcs编译报错:
g++:error:/mnt/d/tools/install_dir/vcs_2016/linux/lib/ctype-stubs_32.a: No such file or directory
错误原因:据查可能是因为32 64位库的问题,处理办法是start vcs with “-full64 -cpp g+±4.8 -cc gcc-4.8 -LDFLAGS -Wl,-no-as-needed …”
最后分析原因是我把vcs在.zshrc中alias后加了这些options,但是不知道问什么写成脚本运行(shell makefile)就报错,是因为alias没起作用?原因未知;大家记得在自己的Makefile 或者shell脚本中加上这些options运行就没有问题了。