[TOC]
# 前言
` `system verilog的仿真软件基本都要license,并且环境安装起来比较复杂。
` `在这里搭建VCS+Verdi环境用于仿真system verilog。
# 安装vcs+verdi
## vcs2016安装文件结构
–synopsys_installer #此程序用于安装下面三个程序。所以你想安装VCS,Verdi,SCL的任意一个,都需要这个文件。
–vcs_2016
–verdi_2016
–scl_11.9 #此程序统一管理license等破解文件
–scl_keygen #这个是破解程序(放在windows下的)。此文件用于生成license文件
## 软件包
[vcs2016](https://pan.baidu.com/s/1AHsMVCQ0So9K6opBmJlBWw) 提取码: hpta
## 解压相关压缩包
` `synopsys_installer是rar格式压缩包,可以在Windows下先解压。之后把四个文件夹:synopsys_installer、vcs_2016、verdi_2016、scl_v11.9传到deepin linux上。
## 安装synopsys installer
` `将对应的安装包下载解压之后,现在我们需要在Ubuntu里面安装synopsys installer,之后通过synopsys installer安装scl、verdi、vcs。
(1)解压后的synopsys_installer文件夹里有:
–checksum_info.txt
–installer_INSTALL_README.txt
–SynopsysInstaller_v3.3.run (可执行文件)
(2)在Deepin的shell环境下运行SynopsysInstaller_v3.3.run
command:
~~~bash
./SynopsysInstaller_v3.3.run
~~~
(3)第二步后得到在同一文件夹等到setup.sh文件。
## 建立相关文件夹
` `在第三步我们有了setup.sh文件,之后就是安装vcs, verdi, scl了
` `但是首先,必须先给这三个建立属于自己的文件夹。
command:
~~~bash
mkdir synopsys #这个是建一个总文件夹cd synopsys #切换到该文件夹 mkdir vcs_2016.06 #为vcs建立文件夹mkdir scl_11.9 #为scl建立文件夹mkdir verdi_2016.06-1 #为verdi建立文件夹
~~~
## 启动synopsys installer并安装
` `在第三步synopsys installer文件夹下我们得到setup.sh文件,切换到该文件夹下执行该文件
command:
~~~bash
cd synopsys_installer./setup.sh
~~~
![](https://img.kancloud.cn/1b/e5/1be5dd87135349a86fc3dd0c4abce9fa_579x266.png)
` `点击Start,有几个选项,什么站点信息,邮箱,名字,随便填就好了。Next后,得到
![](https://img.kancloud.cn/14/01/140199326c8043595cc9efe278371746_578x263.png)
` `这个Browse就是找到vcs, verdi, scl的位置。我们在第二步不是把vcs, verdi, scl三个软件的包传到Deepin上了吗。此时Browse就是找到这个我们需要安装的那个软件的软件包地址。
` `在这里,vcs、verdi、scl安装步骤是一样的,以vcs为例。
` `点击Browse后,选中第二步存放VCS的那个文件夹之后,点击Done–>Next。
` `接下来选择与自己系统相对应的版本选择安装,途中需要选择安装路径,选择在第4步建好的相应的文件夹,并且等待成功安装即可。
## window上或者使用wine获得license
以上5步便已经安装完毕了,但是,并没有license,所以不能打开软件。这个时候,就要用到scl_keygen这个文件夹了。
scl_keygen文件夹有:
![](https://img.kancloud.cn/4a/a3/4aa3fb0e89dcad1d6128f3339ac992c7_443x127.png)
` `使用deepin-wine打开scl_keygen.exe。
![](https://img.kancloud.cn/73/51/73514201faef6180e63ff4df15b33521_545x372.png)
` `只需要修改以上涂黑的三项:HOST ID Deamon、HOST ID Feature、HOST_Name
` `其中HOST ID Deamon和HOST ID Feature填的是一样的,HOST_Name填自己主机的名字。
**那怎么查看具体填什么?**
1、HOST ID Deamon和HOST_Name查看方法:
如下图,我使用的是无线。若用电缆,大部分是eth0,我虚拟机里面是ens33。HOST ID Deamon就是ether后面红色覆盖的12个字符(冒号除外);比如ether 00:0a:21:51:12:4w。则HOST ID Deamon就是:000a2151124w
![](https://img.kancloud.cn/83/ae/83ae785e1a847b3f5fb42f759958f021_629x157.png)
2、HOST_Name可以直接在终端输入hostname获得
~~~bash
hostname #直接在Terminal的shell里面输入
~~~
` `填好之后,直接点击Generate。在同一个文件夹就会出现Synopsys.dat。这个就是我们要的文件了。
## 修改Synopsys.dat文件并复制到对应文件夹
` `之前说过scl是一个统一管理Synopsys软件license的软件。
1、修改Synopsys.dat:
将第二行 修改成DAEMON snpslmd /home/路径/synopsys/scl_11.9/amd64/bin/snpslmd (这是你snpslmd对应的路径,修改成你自己的)
那怎么查看自己的snpslmd对应的路径?
在第五步安装SCL时,我们选择了一个目录去安装它。切换到SCL安装目录。然后用命令去查找snpslmd文件:
~~~bash
find ./ -name snpslmd
~~~
返回的就是snpslmd相对于现在目录的相对路径。我们再加上前面路径即可(直接pwd查看前面路径)
2、文件复制:
将Synopsys.dat文件复制到…/synopsys/vcs_2016.06/license/和…/synopsys/verdi_2016/license/两个文件夹中(这是你license对应的路径,修改成你自己的,如没有license文件夹,自己建即可)。
## 设置环境变量
```
#dve
export PATH=$PATH:/home/chenqw/synopsys/vcs_2016.06/gui/dve/bin #改成自己vcs的安装路径
alias dve=“dve -full64”
#VCS
export PATH=$PATH:/home/chenqw/synopsys/vcs_2016.06/bin #改成自己vcs的安装路径
alias vcs="vcs -full64 -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed" #vcs需要的固定的参数,注意系统要安装gcc-4.8和g++-4.8,这两个需要自己独立安装
#VERDI
export PATH=$PATH:/home/chenqw/synopsys/verdi_2016.06-1/bin #改Verdi安装路径
export VCS_HOME=/home/chenqw/synopsys/vcs_2016.06
export VERDI_HOME=/home/chenqw/synopsys/verdi_2016.06-1
export NOVAS_HOME=/home/chenqw/synopsys/verdi_2016.06-1
#LICENCE
export LM_LICENSE_FILE=27000@chenqw-pc #这个chenqw-pc改成自己的host name
alias lmg_vcs=“lmgrd -c /home/chenqw/synopsys/vcs_2016.06/license/Synopsys.dat” #注意改路径
#scl
export PATH=$PATH:/home/chenqw/synopsys/scl_11.9/linux/bin #改SCL安装路径
export VCS_ARCH_OVERRIDE=linux
```
以上的配置仅作参考,需要根据你的安装路径进行配置。
之后使配置文件立即生效即可:
~~~bash
source .bashrc
~~~
## 激活
激活license是最关键的步骤。在之前可能需要安装:
~~~bash
sudo apt-get install lsb-core #lsb-core
上述不可以时尝试使用
sudo apt-get install lsb-compat
~~~
因为激活的端口使用的是27000。我实现开放了此端口。开放端口的方法可自行百度。
接下来直接在终端输入
~~~bash
lmg_vcs
~~~
等待激活即可。
1、若途中有关TCP port的报错,查询27000端口进程,直接kill 掉等待27000端口完全释放再重新lmg\_vcs即可。
command:
sudo netstat -ap | grep 27000
kill -9 \*\*\*\*\*\*
2、Failed to open the TCP port number in the license问题:
如果遇到这个问题,可以在Terminal输入:lmdown
然后会问y/n,输入y。然后等待一会儿就可以了。注意要等待一会儿
参考:[http://bbs.eetop.cn/thread-307403-3-1.html](http://bbs.eetop.cn/thread-307403-3-1.html)
3、lmgrd can't make directory /usr/tmp/.flexlm when running server on Ubuntu问题:
这个问题,可以参考这个链接[http://www.myir-tech.com/faq\_list.asp?id=521](http://www.myir-tech.com/faq_list.asp?id=521)
就是:
```
sudo -i #切换到root权限
mkdir /usr/tmp/ #创建目录(Ubuntu下没有这个目录)
chmod 777 /usr/tmp/ #修改权限
```
lmdown一遍,等待一会儿,再重新lmg_vcs竟然好了。
![](https://img.kancloud.cn/cd/98/cd985f971a3a4e9ca799b20234b69f72_562x291.png)
如果你看到你的输出最下面几行和这个文件可以对应,就成功了。Enter一下就OK。
## 运行dve, vcs ,verdi
### 1、启动dve
~~~bash
dve #启动vcs图形界面
~~~
### 2、启动verdi:
~~~bash
verdi #启动verdi
~~~
1、在启动verdi时,可能会出现一个语法错误:
verdi_2016/bin/verdi: 433: /home/book/synopsysoftware/verdi_2016/bin/verdi: Syntax error: "(" unexpected
解决:
进入verdi安装目录下的/bin目录,里面有一个verdi的脚本,把这个脚本第433行的那个function去掉。
2、可能有些32位的共享包没有安装的情况,比如:libjpeg.so.62: cannot open shared object file: No such file or directory。
~~~
sudo apt install libjpeg62
~~~
3、或者是libpng12.so.0: cannot open shared object file: No such file or directory
```
sudo -i #先进入root权限
wget -q -O /tmp/libpng12.deb http://mirrors.kernel.org/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_amd64.deb
> && dpkg -i /tmp/libpng12.deb \
> && rm /tmp/libpng12.deb
#用wget得到相应的包
```
一切问题解决后,再返回到用户状态,执行:
![](https://img.kancloud.cn/e7/9e/e79edb074fe2516226262804c29a7c16_577x318.png)
## 使用
注意,在每重启一遍机器,想要运行dve或verdi之前,都要先运行
~~~bash
lmg_vcs
~~~
这个命令成功后,方可运行vcs和verdi.
# 上述方法可以在deepin v20中使用
![](https://img.kancloud.cn/bd/84/bd84cc6fd8a0a9682b2d191e805e92c9_1684x617.png)
已经验证过,但是需要注意的是有一些小问题,做以下记录:
**问题1:**
![](https://img.kancloud.cn/a5/69/a5697ef012554c692cbe2c6178f645ae_769x445.png)
**问题2:安装lsb-core失败,软件仓库中没有**
换用deepin 15.110的软件源后再安装。
**问题3:fish shell下的配置**
在fish shell下配置环境变量,需要更改文件 `~/.config/fish/config.fish`,我的更改如下:
```
####------ 配置 vcs -----------
#dve
set -x PATH $PATH /home/yhp/data/exsoft/vcs/vcs-mx_vL-2016.06/gui/dve/bin #改成自己vcs的安装路径
alias dve="dve -full64"
#VCS
set -x PATH $PATH /home/yhp/data/exsoft/vcs/vcs-mx_vL-2016.06/bin #改成自己vcs的安装路径
alias vcs="vcs -full64 -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed" #vcs需要的固定的参数,注意系统要安装gcc-4.8和g++-4.8,这两个需要自己独立安装
#VERDI
set -x PATH $PATH /home/yhp/data/exsoft/vcs/verdi_vL-2016.06-1/bin #改Verdi安装路径
set -x VCS_HOME /home/yhp/data/exsoft/vcs/vcs-mx_vL-2016.06
set -x VERDI_HOME /home/yhp/data/exsoft/vcs/verdi_vL-2016.06-1
set -x NOVAS_HOME /home/yhp/data/exsoft/vcs/verdi_vL-2016.06-1
#LICENCE
set -x LM_LICENSE_FILE 27000@yhp-PC #这个chenqw-pc改成自己的host name
alias lmg_vcs="lmgrd -c /home/yhp/data/exsoft/vcs/vcs-mx_vL-2016.06/license/Synopsys.dat" #注意改路径
#scl
set -x PATH $PATH /home/yhp/data/exsoft/vcs/scl_v11.9/amd64/bin #改SCL安装路径
set -x VCS_ARCH_OVERRIDE linux
###----------------------------
```
- 序
- 第1章 Linux下开发FPGA
- 1.1 Linux下安装diamond
- 1.2 使用轻量级linux仿真工具iverilog
- 1.3 使用linux shell来读写串口
- 1.4 嵌入式上的linux
- 设备数教程
- linux C 标准库文档
- linux 网络编程
- 开机启动流程
- 1.5 linux上实现与树莓派,FPGA等通信的串口脚本
- 第2章 Intel FPGA的使用
- 2.1 特别注意
- 2.2 高级应用开发流程
- 2.2.1 生成二进制bit流rbf
- 2.2.2 制作Preloader Image
- 2.2.2.1 生成BSP文件
- 2.2.2.2 编译preloader和uboot
- 2.2.2.3 更新SD的preloader和uboot
- 2.3 HPS使用
- 2.3.1 通过JTAG下载代码
- 2.3.2 HPS软件部分开发
- 2.3 quartus中IP核的使用
- 2.3.1 Intel中RS232串口IP的使用
- 2.4 一些问题的解决方法
- 2.4.1 关于引脚的复用的综合出错
- 第3章 关于C/C++的一些语法
- 3.1 C中数组作为形参不传长度
- 3.2 汇编中JUMP和CALL的区别
- 3.3 c++中map的使用
- 3.4 链表的一些应用
- 3.5 vector的使用
- 3.6 使用C实现一个简单的FIFO
- 3.6.1 循环队列
- 3.7 C语言不定长参数
- 3.8 AD采样计算同频信号的相位差
- 3.9 使用C实现栈
- 3.10 增量式PID
- 第4章 Xilinx的FPGA使用
- 4.1 Alinx使用中的一些问题及解决方法
- 4.1.1 在Genarate Bitstream时提示没有name.tcl
- 4.1.2 利用verilog求位宽
- 4.1.3 vivado中AXI写DDR说明
- 4.1.4 zynq中AXI GPIO中断问题
- 4.1.5 关于时序约束
- 4.1.6 zynq的PS端利用串口接收电脑的数据
- 4.1.7 SDK启动出错的解决方法
- 4.1.8 让工具综合是不优化某一模块的方法
- 4.1.9 固化程序(双核)
- 4.1.10 分配引脚时的问题
- 4.1.11 vivado仿真时相对文件路径的问题
- 4.2 GCC使用Attribute分配空间给变量
- 4.3 关于Zynq的DDR写入byte和word的方法
- 4.4 常用模块
- 4.4.1 I2S接收串转并
- 4.5 时钟约束
- 4.5.1 时钟约束
- 4.6 VIVADO使用
- 4.6.1 使用vivado进行仿真
- 4.7 关于PicoBlaze软核的使用
- 4.8 vivado一些IP的使用
- 4.8.1 float-point浮点单元的使用
- 4.10 zynq的双核中断
- 第5章 FPGA的那些好用的工具
- 5.1 iverilog
- 5.2 Arduino串口绘图器工具
- 5.3 LabVIEW
- 5.4 FPGA开发实用小工具
- 5.5 Linux下绘制时序图软件
- 5.6 verilog和VHDL相互转换工具
- 5.7 linux下搭建轻量易用的verilog仿真环境
- 5.8 VCS仿真verilog并查看波形
- 5.9 Verilog开源的综合工具-Yosys
- 5.10 sublim text3编辑器配置verilog编辑环境
- 5.11 在线工具
- 真值表 -> 逻辑表达式
- 5.12 Modelsim使用命令仿真
- 5.13 使用TCL实现的个人仿真脚本
- 5.14 在cygwin下使用命令行下载arduino代码到开发板
- 5.15 STM32开发
- 5.15.1 安装Atollic TrueSTUDIO for STM32
- 5.15.2 LED闪烁吧
- 5.15.3 模拟U盘
- 第6章 底层实现
- 6.1 硬件实现加法的流程
- 6.2 硬件实现乘法器
- 6.3 UART实现
- 6.3.1 通用串口发送模块
- 6.4 二进制数转BCD码
- 6.5 基本开源资源
- 6.5.1 深度资源
- 6.5.2 FreeCore资源集合
- 第7章 常用模块
- 7.1 温湿度传感器DHT11的verilog驱动
- 7.2 DAC7631驱动(verilog)
- 7.3 按键消抖
- 7.4 小脚丫数码管显示
- 7.5 verilog实现任意人数表决器
- 7.6 基本模块head.v
- 7.7 四相八拍步进电机驱动
- 7.8 单片机部分
- 7.8.1 I2C OLED驱动
- 第8章 verilog 扫盲区
- 8.1 时序电路中数据的读写
- 8.2 从RTL角度来看verilog中=和<=的区别
- 8.3 case和casez的区别
- 8.4 关于参数的传递与读取(paramter)
- 8.5 关于符号优先级
- 第9章 verilog中的一些语法使用
- 9.1 可综合的repeat
- 第10章 system verilog
- 10.1 简介
- 10.2 推荐demo学习网址
- 10.3 VCS在linux上环境的搭建
- 10.4 deepin15.11(linux)下搭建system verilog的vcs仿真环境
- 10.5 linux上使用vcs写的脚本仿真管理
- 10.6 system verilog基本语法
- 10.6.1 数据类型
- 10.6.2 枚举与字符串
- 第11章 tcl/tk的使用
- 11.1 使用Tcl/Tk
- 11.2 tcl基本语法教程
- 11.3 Tk的基本语法
- 11.3.1 建立按钮
- 11.3.2 复选框
- 11.3.3 单选框
- 11.3.4 标签
- 11.3.5 建立信息
- 11.3.6 建立输入框
- 11.3.7 旋转框
- 11.3.8 框架
- 11.3.9 标签框架
- 11.3.10 将窗口小部件分配到框架/标签框架
- 11.3.11 建立新的上层窗口
- 11.3.12 建立菜单
- 11.3.13 上层窗口建立菜单
- 11.3.14 建立滚动条
- 11.4 窗口管理器
- 11.5 一些学习的脚本
- 11.6 一些常用的操作语法实现
- 11.6.1 删除同一后缀的文件
- 11.7 在Lattice的Diamond中使用tcl
- 第12章 FPGA的重要知识
- 12.1 面积与速度的平衡与互换
- 12.2 硬件原则
- 12.3 系统原则
- 12.4 同步设计原则
- 12.5 乒乓操作
- 12.6 串并转换设计技巧
- 12.7 流水线操作设计思想
- 12.8 数据接口的同步方法
- 第13章 小项目
- 13.1 数字滤波器
- 13.2 FIFO
- 13.3 一个精简的CPU( mini-mcu )
- 13.3.1 基本功能实现
- 13.3.2 中断添加
- 13.3.3 使用中断实现流水灯(实际硬件验证)
- 13.3.4 综合一点的应用示例
- 13.4.5 使用flex开发汇编编译器
- 13.4.5 linux--Flex and Bison
- 13.4 有符号数转单精度浮点数
- 13.5 串口调试FPGA模板