转:Modelsim和Vcs+Verdi使用技巧(Linux)
Modelsim脚本自动仿真
1、创建文件 run.do,“#”为注释符号
quit -sim #退出上次仿真
.main clear #清除上次仿真所有文件以及打印信息
vlib work.veloce #创建veloce的工作环境
#-------------------------------------------------------------------------------------------------
vlog ./tb_XXXXXXX.v #testbench文件
vlog ./../src/*.v #代码源文件
vlog ./../ip_core/*.v #IP核
#--------------------------------------------------------------------------------------------------
#Alrera
vlog /opt/Quartus/13.1/quartus/eda/sim_lib/altera_mf.v #IP核仿真模型
vlog /opt/Quartus/13.1/quartus/eda/sim_lib/220model.v #IP核仿真模型
#--------------------------------------------------------------------------------------------------
#Xilinx
vlog /opt/Xilinx/Vivado/2015.4/data/verilog/src/unimacro/*.v #IP核仿真模型
vlog /opt/Xilinx/Vivado/2015.4/data/verilog/src/unisims/*.v #IP核仿真模型
vlog /opt/Xilinx/Vivado/2015.4/data/verilog/src/unisims_dr/*.v #IP核仿真模型
vlog /opt/Xilinx/Vivado/2015.4/data/verilog/src/xeclib/*.v #IP核仿真模型
vlog /opt/Xilinx/Vivado/2015.4/data/verilog/src/glbl.v #IP核仿真模型
#--------------------------------------------------------------------------------------------------
#LATTICE
vlog ./lattice/verilog/ecp3 #IP核仿真模型
vlog ./lattice/verilog/pmi #IP核仿真模型
#--------------------------------------------------------------------------------------------------
vsim -voptargs=+acc work.tb_XXXXXXXX
#--------------------------------------------------------------------------------------------------
add wave /tb_XXXX/i2s_XXX_inst/* #添加例化模块所有信号波形
do wave.do #若保存有新模型,用此语句可以复现已保存的波形
run 500000 ns #仿真运行时间
2、写完以上run.do文件后,在「 terminal 」中执行以下语句,则可以自动跑完仿真
[redhat@fpga marin]$ vsim -do run.do
Vcs+Verdi脚本自动仿真
0、定义环境变量,在.bashrc或者.cshrc文件中加入
##VCS
setenv VCS_HOME /work/tools/synopsys2015/vcs
setenv PATH $VCS_HOME/amd64/bin:$PATH
##Verdi
setenv VERDI_HOME /work/tools/synosys2015/verdi
setenv NOVAS_HOME /work/tools/synopsys2015/verdi
setenv LD_LIBRARY_PATH ${NOVAS_HOME}/share/PLI/VCS/LINUX64
setenv PATH $NOVAS_HOME/bin:$PATH
1、创建文件Makefile
#--------------------------------------------------------------------------------------------------
comp : clean vcs
#--------------------------------------------------------------------------------------------------
vcs :
vcs \
-f filelist.f \
-fsdb -full64 -R +vc +v2k -sverilog -debug_all vpi \
-P ${LD_LIBRARY_PATH}/novas.tab ${LD_LIBRARY_PATH}/pli.a \
| tee vcs.log &
#--------------------------------------------------------------------------------------------------
verdi :
verdi \
+v2k -sverilog -f filist.f -ssf tb.fsdb &
#--------------------------------------------------------------------------------------------------
clean :
rm -rf *~ core csrc simv* vc_hdrs.h ucli.key urg* *.log novas.* *.fsdb* verdiLog 64* DVEfiles *.vpd
#--------------------------------------------------------------------------------------------------
2、创建文件filelist.f,加入要编译的.v文件
#--------------------------------------------------------------------------------------------------
#Alrera
/opt/Quartus/13.1/quartus/eda/sim_lib/altera_mf.v #IP核仿真模型
/opt/Quartus/13.1/quartus/eda/sim_lib/220model.v #IP核仿真模型
#--------------------------------------------------------------------------------------------------
#Xilinx
-y /opt/Xilinx/Vivado/2015.4/data/verilog/src/unimacro #IP核仿真模型
-y /opt/Xilinx/Vivado/2015.4/data/verilog/src/unisims #IP核仿真模型
-y /opt/Xilinx/Vivado/2015.4/data/verilog/src/unisims_dr #IP核仿真模型
-y /opt/Xilinx/Vivado/2015.4/data/verilog/src/xeclib #IP核仿真模型
-y /opt/Xilinx/Vivado/2015.4/data/verilog/src/glbl.v #IP核仿真模型
+libext+.v+
#--------------------------------------------------------------------------------------------------
#LATTICE
-y ./lattice/verilog/ecp3 #IP核仿真模型
-y ./lattice/verilog/pmi #IP核仿真模型
+libext+.v+
#--------------------------------------------------------------------------------------------------
./tb_file/tb_XXXXX.v #加入test_bench文件
./src/*.v #加入源文件
./ip_core/*.v #加入IP核源文件
+incdir+directory+
3、在test_bench文件中添加如下代码,用于Vcs产生波形文件 tb.fsdb
initial
begin
$fsdbDumpfile("tb.fsdb");
$fsdbDumpSVA;
$fsdbDumpvars(0,tb_XXXX,"+all");
#200000
$finish;
end
4、如果是Lattice器件,还需在test_bench中加入如下代码
GSR GSR_INST ( .GSR(1'b1) );
PUR PUR_INST ( .PUT(1'b1) );
5、在「 terminal 」中输入如下命令运行VCS进行编译生成fsdb文件
[redhat@fpga marin]$ make comp
6、在「 terminal 」中输入如下命令运行Verdi把fsdb文件吃进去看波形
[redhat@fpga marin]$ make verdi
以上路径均需按照自己实际情况进行修改
转自:https://www.cnblogs.com/mage0306/p/10595328.html
转:Modelsim和Vcs+Verdi使用技巧(Linux)的更多相关文章
- 88.modelsim仿真do文件相关技巧
网上的关于DO文件的编写好像资料不多,比较杂,所以本人总结一下常用的简单语法,方便大家查看.其实本人也刚接触DO文件没多久,有纰漏很正常,欢迎指正批评,互相学习.PS:写得有点乱 还有一个值得注意 ...
- 本地上传文件至服务器的技巧(linux文件压缩及解压文件)
linux(ubuntu)文件解压及压缩文件 ubuntu支持文件的解压及压缩功能, 如果ubuntu上面没有安装过unzip工具的话,可以通过下面命令安装: sudo apt-get install ...
- [小技巧]Linux的一些信息获取
1. Linux 系统登录之后,显示如下 Last login: Thu Jan :: UTC on ttyS0 Linux xxx # PREEMPT Wed Jul :: CST armv7l 那 ...
- vcs/verdi filist
. 现在很多verilog 的filelist 文件中用如下形式来指定文件所在的目录就行了,而不必指定具体文件 ./testbench/ppc460_PLB4/p464s_test_top_tb.v ...
- 工程技巧Linux上建立工程项目
程序中用到的核心代码用库的形式进行封装,并且给出示例程序,下面给出一个程序文件夹的建立脚本. 如运行sh MakeProject.sh PersonNameIdentification PNILib ...
- linux 常用命令及技巧
linux 常用命令及技巧 linux 常用命令及技巧:linux 常用命令总结: 一. 通用命令: 1. date :print or set the system date and time 2. ...
- linux 小技巧(磁盘空间搜索)
这里记录一些linux 管理中可能会用到的又容易忘的一些小技巧. linux磁盘写入失败,提示磁盘空间不足.一般都会用df -h 或者df -i看是不是磁盘空间不足或者是inode空间不足.发生这种情 ...
- Linux下服务器端开发流程及相关工具介绍(C++)
去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...
- Linux基础精华
Linux基础精华 (继续跟新中...) 常用命令: Linux shell 环境 让你提升命令行效 率的 Bash 快捷键 [完整版] 设置你自己的liux alias Linux的Find使用 L ...
随机推荐
- Docker宿主机管理
不需要每次输入sudo 在当前用户的用户目录.bashrc中增加以下内容,此后使用docker命令时不需要每次都增加sudo. echo 'sudo usermod -aG docker $USER' ...
- POJ1741——Tree(树的点分治)
1 /* *********************************************** 2 Author :kuangbin 3 Created Time :2013-11-17 1 ...
- 使用Java api对HBase 2.4.5进行增删改查
1.运行hbase 2.新建maven项目 2.将hbase-site.xml放在项目的resources文件夹下 3.修改pom.xml文件,引入hbase相关资源 <repositories ...
- PHP中的国际化日历类
在 PHP 的国际化组件中,还有一个我们并不是很常用的跟日期相关的操作类,它就是日历操作类.说是日历,其实大部分还是对日期时间的操作,一般也是主要用于日期的格式化和比较之类的.但是通常我们直接使用 d ...
- CS:APP Chapter-6 存储器层次系统-读书笔记
存储器层次系统 笔记,应该不是一个大而全的文件,笔记应该是提纲挈领,是对思想的汇总浓缩,如果追求详实的内容反而是丢了初心. 计算机是抽象的,它的设计者努力让计算机变得简单,在设计上高度抽象,而计算机的 ...
- 大白话透彻讲解 Promise 的使用,读完你就懂了
一.为什么使用Promise? 我们知道 js 执行的时候,一次只能执行一个任务,它会阻塞其他任务.由于这个缺陷导致 js 的所有网络操作,浏览器事件,都必须是异步执行.异步执行可以使用回调函数执行. ...
- Appium Android Toast控件
Android Toast控件是Android系统级别的控件,不是App的控件,getPageSource是⽆法找到的. Toast介绍 1.背景 在安卓设备里面,使用各种手机应用程序的时候,需要先进 ...
- Centos7创建swap分区
创建4g swap分区 dd if=/dev/zero of=/var/swap bs=1024 count=4194304 mkswap /var/swap 激活swap分区 swapon /var ...
- Python代码阅读(第8篇):列表元素逻辑判断
Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码 本篇阅读的三份代码的功能分别是判断列表中的元素是否都符合给定的条件:判断列表中是否存在符合给定的条件的元素:以及判断列表中 ...
- 前段--->js
一,java script的引入方式 1,直接在script里书写你的代码 <script> alert("hbflfb")</script> 2,引入额外 ...