linux下的EDA——VCS使用
原帖地址:https://blog.csdn.net/moon9999/article/details/75283926
在Linux下对verilogHDL进行功能仿真时非常必要的,下面提供两种常见方式:
1.命令行方式
1)新建文件夹vcs_test,将所有的工程文件与tb文件复制入,testbench中可以没有在脚本文件中添加的函数,一般的tb文件就可以。
本例子中有三个文件:
clk_half.v, //对clk信号进行分频。
module clk_half(
clk_in
,rst
,clk_out
);
input clk_in;
input rst;
output reg clk_out; always @(posedge clk_in or posedge rst) begin
if (rst) begin
// reset
clk_out <= 0;
end
else begin
clk_out <= !clk_out;
end
end
endmodule
counter.v //简单的4位计数器。
module counter ( out, clk, reset ) ;
input clk, reset;
output [3:0] out;
reg [3:0] out; always @(posedge clk or posedge reset) begin
if (reset) begin
// reset
out <= 4'b0;
end
else begin
out <= out + 1'b1;
end
end wire clk_out;
clk_half u0(
.clk_in(clk),
.rst(reset),
.clk_out(clk_out)
); endmodule
counter_tb.v //testbench文件
`timescale 1ns/1ns module counter_tb () ;
wire [3:0] out;
reg clk=1'b0;
reg reset; counter u0 (
.out (out),
.reset (reset),
.clk (clk)
); always #10 clk =~ clk; initial begin
reset = 1'b0;
#4 reset = 1'b1;
#4 reset = 1'b0;
end initial begin
$dumpfile("counter.vcd");
$dumpvars(0,u0);
end initial #1000 $finish;
endmodule
2)运行vcs
在终端中输入
vcs -V -R counter_tb.v counter.v clk_half.v -o simv -gui -debug_pp
-V:Verbose模式,打印vcs在运行的过程中执行的C Compiler汇编器和链接器的指令
-R:这个指令是告诉VCS在编译完成以后直接运行可执行文件,如果你在编译的时候没有带上这个选项,编译完成以后VCS就退出了,但是你会发现在相应的目录下产生了以各可执行文件,默认叫simv-o:
-o:给后面的simv文件改名字,如改成counter.simv
-gui:调用VCS的图形化界面
-debug_pp:看波形必须要在debug模式下
其他一些指令
-q:退出模式;抑制了例如VCS使用的C编译器/VCS分析源文件、top层、制定的timescale的信息。
-notice:使能更详细的诊断信息。
-pvalue+parameter_hierarchical_name=value:这个选项是用来改变源文件中parameter参数值的命令。 例如:-pvalue+udut.uchip.ucore. IDLE =0
-full64:这个选项是为64位的操作系统准备的
-l filename:制定一个VCS产生的log文件名,如果你键入了-R选项,那么在编译和仿真的时候都会将log内容打印到log文件中
2)观察波形
执行上面的vcs命令或者再次输入simv,就会打开dve窗口。如下图所示:

选取信号,点击菜单add to waves->new wave view


现在可以用鼠标中键拖动信号到这个窗口,观察波形,或者把信号拖到代码窗口,找到对应代码。点解start菜单,可以进行可以看到信号。

2.脚本方式
vcs -R counter_tb.v counter.v clk_half.v +v2k +define+RTL_SAIF
+v2k: verilog 2000 ieee
+define+RTL_SAIF : define macro RTL_SAIF
其中counter_tb.v为testbench文件,counter.v、clk_half.v为工程文件,注意要把所有的工程.v文件都添加进去
保存文件
4)在终端运行vcs.scr脚本文件
在终端中输入
source vcs.scr
程序编译执行完后,打开dve,然后选择vcd波形文件,查看波形,也可以用verdi查看波形。
linux下的EDA——VCS使用的更多相关文章
- LINUX下编译安装PHP各种报错大集合
本文为大家整理汇总了一些linux下编译安装php各种报错大集合 ,感兴趣的同学参考下. nginx1.6.2-mysql5.5.32二进制,php安装报错解决: 123456 [root@clien ...
- linux下udev和mdev的使用
linux下设备文件系统有devfs.udev和mdev这三种. 一.devfs devfs是由Linux 2.4内核引入的,引入时被许多工程师给予了高度评价,它的出现使得设备驱动程序能自主地管理自己 ...
- NodeJs在Linux下使用的各种问题
环境:ubuntu16.04 ubuntu中安装NodeJs 通过apt-get命令安装后发现只能使用nodejs,而没有node命令 如果想避免这种情况请看下面连接的这种安装方式: 拓展见:Linu ...
- Linux下服务器端开发流程及相关工具介绍(C++)
去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...
- Linux下Nodejs安装(完整详细)
之前安装过windows下以及Mac下的node,感觉还是很方便的,不成想今天安装linux下的坑了老半天,特此记录. 首先去官网下载代码,这里一定要注意安装分两种,一种是Source Code源码, ...
- (转载)linux下各个文件夹的作用
linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基 ...
- 萌新笔记——linux下查看内存的使用情况
windows上有各种软件可以进行"一键加速"之类的操作,释放掉一些内存(虽然我暂时不知道是怎么办到的,有待后续学习).而任务管理器也可以很方便地查看各进程使用的内存情况,如下图: ...
- [每日Linux]Linux下xsell和xftp的使用
实验缘由: 1.xsell在Linux下的作用就是远程登录的一个界面,也就是实现访问在Windows下访问Linux服务器的功能.之前在数据挖掘实验中因为自己电脑的内存不够,曾经使用过实验室的服务器跑 ...
- Linux下的C Socket编程 -- server端的继续研究
Linux下的C Socket编程(四) 延长server的生命周期 在前面的一个个例子中,server在处理完一个连接后便会立即结束掉自己,然而这种server并不科学啊,server应该是能够一直 ...
随机推荐
- kudu的写数据流程
写入操作是指需进行插入.更新或删除操作的一组行.需要注意的事项是Kudu强制执行主关键字的唯一性,主关键字是可以更改行的唯一标识符.为了强制执行此约束条件,Kudu必须以不同的方式处理插入和更新操作, ...
- hdfs基本操作
hdfs基本操作 1.查询命令 hadoop dfs -ls / 查询/目录下的所有文件和文件夹 hadoop dfs -ls -R 以递归的方式查询/目录下的所有文件 2.创建文件夹 hadoo ...
- .net core跨平台的文件路径
windows下路径为:"xxxx\\yyyy" linux路径下为:"xxxx/yyyy" 用Path.Combine("xxxx",&q ...
- Java03动手动脑
1.当JAVA里定义的函数中去掉static后,怎么办? static代表静态,由于main函数是静态的,如果自己定义的函数方法加了static则在类加载时就一起加载了.但如果不写static,就必须 ...
- 牛客练习赛28B (经典)【线段树】
<题目链接> qn姐姐最好了~ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, 1 l r 询问区间[l,r]内的元素和 2 l r 询问区间[l,r]内的元 ...
- Jenkins环境搭建(1)-下载与安装
Jenkins简介 Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,它是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测试和部署技术. Jenk ...
- PhantomJS在Selenium中被标记为过时的应对措施
今天使用PhantomJS时,Selenium提示PhantomJS被标记不赞成,我就蒙了.PhantomJS可是Headless浏览器中相当知名的一款,标记为过时,代表着将在未来版本摒弃掉这个支持. ...
- XamarinAndroid组件教程设置动画的设置插值器
XamarinAndroid组件教程设置动画的设置插值器 为动画设置插值器,可以使用BaseItemAnimator抽象类中的SetInterpolator()方法,其语法形式如下: public v ...
- AGC 030B.Tree Burning(贪心)
题目链接 \(Description\) 有一个长为\(L\)的环,上面有\(n\)棵树,坐标分别为\(a_i\).初始时在原点. 每次你可以选择顺时针或逆时针走到第一棵没有被烧掉的树,停在这个位置, ...
- mysql中注释的添加修改
1 创建表的时候写注释,在使用comment关键字语法:create table 表名 (字段名 类型 comment '字段的注释' )comment='表的注释'; 查看一下 2 修改表的注释al ...