VCS中利用Makefile脚本仿真详细图解
来源:互联网 发布:淘宝店铺美工主管职责 编辑:程序博客网 时间:2024/05/01 17:44
1.可仿真的Verilog文件
通常是写一个module.v文件,然后写一个testbench即module_tb.v文件,该文件中例化module。可仿真的Verilog文件是指testbench即module_tb.v。
在VCS中module_tb.v除了声明timescale,初始化信号输入和例化module外,还需要加上波形输出函数$vcdpluson()和仿真时间控制函数$finish(),如下;
`timescale 1ns/1ns
module verilog_tb;
initial
begin
$vcdpluson();
//must write thisinitial if you want to view the waveform in DVE
end
initial
begin
#100 $finish();
//control thesimulation time, this example is 100ns
end
endmodule
本文先写一个简单的tb,先不包括例化module,仅仅只定义几个reg信号。下面为gen_circulation.v,其基本功能是生成多个重复波形,仿真时间为100ns,该文件在附件的gen_circulation文件夹中。具体可参考《VerilogHDL设计与实战》第10章。
`timescale 1ns/1ns
module gen_circulation;
reg a;
reg b;
reg c;
initial
begin
a = 0;
forever
#2 a = ~a;
end
initial
begin
b = 0;
end
always
#4 b = ~b;
initial
begin
c = 0;
forever
begin
#1 c= 1;
#2 c= 0;
#3 c= 1;
#4 c= 0;
end
end
initial
begin
$vcdpluson();
end
initial
begin
#100 $finish();
end
endmodule
2、通过Makefile脚本进行编译和仿真
采用Makefile脚本可以方便在VCS中的编译compile和仿真simulate以及清除文件clean,具体内容可以查看附件gen_circulation/Makefile。这里只讲解操作。
(1)首先确认安装了VCS软件,然后在gen_circulation文件夹中打开terminal,输入makecompile f=gen_circulation.v,然后可以看到下图编译成功的信息。通过makefile实际上输入的命令为vcs-sverilog -debug_all +notimingcheck +nospecify +v2k -l com.loggen_circulation.v,这些都可以不理会。
(2)然后在terminal中输入makesimulate,可以有如下仿真成功的信息。通过makefile实际上输入的命令为./simv-l sim.log +notimingcheck +nospecify,这些也可以不理会。
注:前面的makecompile f=gen_circulation.v和makesimulate两步可以合为一步执行makeall f= gen_circulation.v
(3)最后terminal中输入dve,打开波形查看的界面。
(4)FileOpen Database 选择对应的vcdplus.vpd文件
(5)选择a,b,c,右键选择Addto waves New wave view,这样就显示出了波形
(6)现在就可以查看波形。通过Makefile脚本进行编译和仿真的操作过程已结束,后面是一个稍微复杂一点的testbench,即含有module例化的testbench仿真。
(7)如果要清空gen_circulation文件夹中仿真过程产生的文件,可以在terminal中输入makeclean通过makefile实际上输入的命令为rm-rf csrc DVEfiles simv simv.daidir ucli.key VCS*和rm-rf *.log *.vpd *.ddc *.svf *.SDF *Synth *Netlist* work vsim*transcript,这些也可以不理会。
3含有module例化的testbench仿真half_adder
half_adder文件夹下有三个文件half_adder.v,half_adder_tb.v和Makefile,文件内容如下,
half_adder.v
module half_adder (
input I_a,
input I_b,
output O_sum,
output O_cout
);
assign O_sum = I_a ^ I_b;
assign O_cout = I_a & I_b;
endmodule
half_adder_tb.v
`timescale 1ns/1ns
`include "half_adder.v"
module half_adder_tb;
reg a;
reg b;
reg sum;
reg cout;
initial
begin
a=0;
forever
begin
#10 a=0;
#10 a=0;
#10 a=1;
#10 a=1;
end
end
initial
begin
b=0;
forever
begin
#10 b=0;
#10 b=1;
#10 b=0;
#10 b=1;
end
end
initial
begin
$vcdpluson(); // vcsdump waveform
end
initial
begin
#100 $finish();
end
half_adder U1_half_adder (
.I_a(a),
.I_b(b),
.O_sum(sum),
.O_cout(cout)
);
endmodule
在terminal中输入
make all f=half_adder_tb.v
然后打开波形
4总结
Makefile脚本能大大简化VCS中的仿真。
附:查看verilog对应的门级结构
VCS中不能查看verilog对应的门级结构,但是DC可以读入verilog文件对应到DC自带的GETCH库,然后打开gui查看门级结构。如果需要综合,则需要添加实际的库文件和时序约束。这里并没有综合,只是映射到DC自带的逻辑库GETCH库上。
(1)启动DC
dc_shell -topographical -64bit| tee log
(2)读入verilog文件
dc_shell-topo>read_veriloghalf_adder.v
(3)打开gui界面
dc_shell-topo>start_gui
(4)查看电路结构
- VCS中利用Makefile脚本仿真详细图解
- VCS中verilog和C语言混合仿真
- vcs ucli 仿真中突然断电 防止措施
- VCS仿真指南
- VCS makefile文件
- 使用VCS MX仿真VHDL
- vcs和verdi的联合仿真
- vcs和verdi的联合仿真
- vcs和verdi的联合仿真
- 对一段 makefile 脚本的详细注释
- Makefile中执行shell脚本
- Makefile中添加shell脚本
- linux中Makefile详细介绍
- SYNOPSYS VCS Makefile文件编写与研究
- SYNOPSYS VCS Makefile文件编写与研究
- SQL Server 2012 将数据导出为脚本详细图解
- SQL Server 2012将数据导出为脚本详细图解
- SVA在VCS和NC下仿真差异总结
- springMVC + velocity 的结合
- Windows系统下Python与NumPy安装方法
- 多用户开源商城,我选WSTMall
- 分布式锁
- Windows10 Apache2.4 PHP7 MySQL 5.7安装教程
- VCS中利用Makefile脚本仿真详细图解
- 从6个数字任选4个组合
- AsyncQueryHandler 异步查询框架
- AppCompatActivity 全屏
- EventBus3.0-粘性事件
- 好的插件
- HashMap的工作原理JDK1.6
- 安卓开发笔记(二)
- 有关Java学习的记录Two