VCS软件简介
VCS( verilog compiled simulator )是编译型Verilog模拟器,它完全支持OVI标准的Verilog HDL语言、PLI和SDF。 VCS具有目前行业中最高的模拟性能,其出色的内存管理能力足以支持千万门级的ASIC设计,而其模拟精度也完全满足深亚微米ASIC Sign-Off的要求。VCS结合了节拍式算法和事件驱动算法,具有高性能、大规模和高精度的特点,适用于从行为级、RTL到Sign-Off等各个阶段。VCS已经将CoverMeter中所有的覆盖率测试功能集成,并提供VeraLite、CycleC等智能验证方法。VCS和Scirocco也支持混合语言仿真。VCS和Scirocco都集成了Virsim图形用户界面,它提供了对模拟结果的交互和后处理分析。VCS 2009.12 Linux 验证库建立在经实践验证的DesignWare验证IP的基准上,并添加了对Synopsys的参考验证方法学(RVM)和本征测试平台的支持,能够实现覆盖率驱动的测试平台方法学,而且其运行时间性能提高了5倍。 VCS 2009.12 Linux 验证库是业界范围最广的基于标准的验证IP产品组合,可以方便地集成到Verilog、SystmVerilog、VHDL和Openvera的测试平台中,用于生成总线通信以及协议违反检查。监测器提供了综合全面的报告,显示了对总线通信协议的功能覆盖率。VCS验证库的验证IP也包含在DesignWare库中,或作为独立的套件购买。主要优势:
● 业界范围最广的IP产品组合;
● 采用VCS & Pioneer NTB时,仿真性能有显著的提高;
● 可充分进行配置,达成对测试的更好控制和更快的开发测试易于使用的界面,并且提供测试平台示例,加快学习速度,并加速测试平台的开发过。
文件准备
以一个二分频模块为例演示VCS的最简单使用方式。
ClockDiv.v
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 10/13/2020
// Design Name: Sniper
// Module Name: ClockDiv
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module ClockDiv(
input clk,
input rst_n,
output reg clk_div
);
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
clk_div <= 1'b0;
else
clk_div <= ~clk_div;
end
endmodule
tb_ClockDiv.v
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 10/13/2020
// Author Name: Sniper
// Module Name: tb_ClockDiv
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module tb_ClockDiv;
//input
reg clk;
reg rst_n;
//output
wire clk_div;
initial
begin
clk = 0;
rst_n = 0;
#100;
rst_n = 1;
end
//clock
always #5 clk = ~clk;
//DUT
ClockDiv DUT
(
.clk(clk),
.rst_n(rst_n),
.clk_div(clk_div)
);
initial
begin
$dumpfile("curve.vcd");
$dumpvars(0,DUT);
end
initial #1000 $finish;
endmodule
VCS命令
Terminal中输入以下命令来编译文件:(也可以将命令写在shell脚本中)
vcs -R ClockDiv.v tb_ClockDiv.v
DVE看波形
Terminal中输入dve打开软件
dve
打开生成的.vcd波形文件:
打开新的波形显示窗口:
这里可以调整显示:
`
附录:VCS常用命令
- 在学习VCS(Verilog Compile Simulator)过程中遇到不知道的编译命令可以使用 vcs -full64 -help 来查看帮助.
- VCS学习过程中可能需要查看对应的 User Guide,一般情况下在vcs的安装目录下的doc文件夹里面会有PDF文件。
- VCS就是编译用户输入的源文件生成对应的可执行文件(默认是二进制的simv文件),在之后的仿真中运行这个可执行文件。
VCS语法
$ vcs [options] source_files
常用选项
-help //vcs帮助,有各编译选项意义;
-full64 //以64位模式编译设计并创建64位可执行文件用于64位模式下的模拟;
-vpi //允许使用vpi PLI访问例程;
-sverilog //允许在Accellera systemVerilog规范中使用Verilog语言扩展;
-v2k //使用Verilog 1364-2001标准;
-cpp //使用c++编译器;
-debug_pp //允许转储到VPD并使用UCLI命令和DVE;
-debug //启用UCLI命令和DVE;
-debug_all //启用UCLI命令和DVE,也使线路步进;
-notice //启用详细的诊断消息;
+lint=[no]ID|none|all,... //使能或者禁用verilog的lint消息;
+rad //对设计进行辐射技术优化;
+vcs+lic+wait //如果没有可用的通知,则告诉VCS等待网络许可证;
-f <filename> //指定一个文件,其中包含源文件和编译时选项的路径名列表;
-o <name> //指定输出可执行文件的文件名,默认为 simv;
-R //该选项告诉VCS在编译完后直接运行可执行程序,若没有该选项,那么vcs在编译后直接退出;
-l <filename> //(小写字母L)如果包含-R,-RI或-RIG选项,则指定VCS记录编译消息和运行时消息的日志文件;
-Mupdate[=0]:默认情况下,VCS会在编译之间覆盖Makefile。 如果希望在编译之间保存Makefile,请输入此内容选项与0参数。输入不带0参数的参数,指定默认情况下,增量编译和更新Makefile文件;
-CFLAGS <options> //将选项传递给C编译器,允许多个-CFLAGS,允许传递C编译器优化级别。
-timescale=<time_unit>/<time_precision> //指明时间精度;
-ucli //在运行时指定UCLI模式;
+incdir+<directory> //指定包含使用`include 编译器指令指定的文件的目录,可以指定多个目录,用+字符分隔每个路径名称;
+libext+<extension> //指定VCS仅在具有指定扩展名的Verilog库目录中搜索源文件,可以指定多个扩展名,用+字符分隔每个扩展名。例如+libext++.v指定搜索没有扩展名和库扩展名为.v的库文件。 输入-y选项时输入此选项。
+systemverilogext+<ext> //指定包含SystemVerilog源代码的源文件的文件扩展名;
-gui[=<dve|verdi>] //启动用户指定的图形用户界面,如果未提供参数,则在检测到有效的VCS_HOME环境变量时,VCS将启动Verdi。 否则DVE将默认启动;
-vcd <filename> //将输出VCD文件名设置为指定文件。默认文件名为verilog.dump。Verilog源代码中的$dumpfile系统任务将覆盖此选项;
-verdi //使用verdi图形界面;
+vcdfile+<filename> //指定想要用于后期处理的VCD文件;
-vpd_file <filename> //在运行时,定义VCS写入的VPD文件的替代名称,而不是缺省名称vcdplus.vpd;
+define+VCS //定义全局的VCS,编译器在编译时如果源文件有类似`ifdef VCS等字样,那么会执行定义之后的代码。
+vcs+vcdpluson //编译选项,加入后会使能产生vpd文件,默认文件名vcdplus.vpd