前言
本教程通过 win10 下的 docker 实现,过程简单,不需要自己进行破解,同时是通过 wsl 方式实现,比虚拟机效率会更加高一些。
镜像是由网友制作的,eetop 链接为:http://bbs.eetop.cn/thread-883833-1-1.html
仅供个人学习使用
win10 下安装 docker
在官网找到 win10 的 docker 安装包,进行安装
https://docs.docker.com/docker-for-windows/install/
下载稳定版即可
使用前要安装 wsl2,作为 docker 在 win10 下的后端支持
https://docs.microsoft.com/en-us/windows/wsl/install-win10
下载好以后直接双击安装即可
docker 配置
在拉取镜像之前,先为 docker 设置镜像加速器,推荐阿里云的 docker 镜像加速服务
https://cn.aliyun.com/
注册以后,进入控制台,容器镜像服务 ->镜像加速器
然后打开 docker 的设置界面,Docker Engine,将刚刚的链接复制到下面
应用并重启即可。
默认的 docker 的目录是在 c 盘下的,镜像将来会占用 c 盘空间,接下来移动 docker 的目录
首先关闭 docker,然后创建一个目录D:SoftwareDatawsldocker-desktop-data
打开 cmd,wsl -l -v
可以看到由有两个 docker,我们只需要移动第二个就可以了
依次执行,
wsl --shutdown
wsl --export docker-desktop-data D:SoftwareDatawsldocker-desktop-datadocker-desktop-data.tar
检查以下目标目录有没有生成对应的文件docker-desktop-data.tar
wsl --unregister docker-desktop-data
wsl --import docker-desktop-data D:SoftwareDatawsldocker-desktop-data D:SoftwareDatawsldocker-desktop-datadocker-desktop-data.tar --version 2
移动完成
启动 docker 容器
通过开始菜单启动 docker 以后,打开 cmd,拉取镜像docker pull phyzli/ubuntu18.04_xfce4_vnc4server_synopsys2016
大概有十几 G,耐心等待。
镜像拉取完毕以后,启动镜像docker run -it -p 5902:5902 --hostname lizhen --mac-address 02:42:ac:11:00:02 -v //d/mydata:/mnt/mydata phyzli/ubuntu18.04_xfce4_vnc4server_synopsys2016
-p 5902:5902
是进行端口映射,--hostname lizhen --mac-address 02:42:ac:11:00:02
是在配置主机名和 mac 地址,和 license 绑定的,不能修改。-v //d/mydata:/mnt/mydata
是将 win10 下的目录//d/mydata
挂载到容器的/mnt/mydata
上,便于数据交换。
进入到容器内部以后就可以使用了,每次进入都需要使用命令lmgrd
激活 license
测试一下 vcs 是否正常,进入到我们挂载的目录mnt/mydata
,下面是tb.sv
的内容
module tb ();
initial begin
$display("hello vcs");
end
endmodule
vcs tb.sv
进行编译,然后./simv
进行仿真
接下来试一下 vnc 远程桌面,通过命令vncserver -geometry 1920x1080 :2
在容器内启动 vnc
然后回到 cmd,ipconfig
查看虚拟机的 ip
win10 中打开 vncviewer,配置连接,填入刚刚的 ipv4 地址,端口是 5902
进行连接,连接密码为zhenchen
进入图形化界面
下面试一下 vcs 和 verdi 的联合仿真,同样还是前面的tb.sv
vcs tb.sv -debug_all -lca -kdb
./simv -gui=verdi
其他
在进入容器后,直接exit
会退出容器,如果在启动容器时加上-d
,容器会在后台继续运行
通过docker ps -a
可以查看容器的状态
如果想要再启动容器,可以通过docker start ee
启动容器,ee
是容器 ID 的前两位,不用全部打完也可以
启动容器后如果要进入容器,通过指令docker exec -it ee bash
就能进入了
删除容器可以通过指令docker rm -f ee
,删除容器不会把前面挂载的文件夹删除,不用担心