验证与VCS使用

验证与VCS使用

ID:43503101

大小:779.22 KB

页数:20页

时间:2019-10-08

验证与VCS使用_第1页
验证与VCS使用_第2页
验证与VCS使用_第3页
验证与VCS使用_第4页
验证与VCS使用_第5页
资源描述:

《验证与VCS使用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第四章验证与VCS使用本章将讲述的内容:第一节验证。什么是验证。为什么需要验证。验证的重要性。如何进行验证第二节VCS简单使用方法2.1什么是VCS2.2VCS可以做什么2.3怎样进行验证2.4VCS的工作方式2.5VCS使用方法举个简单例子2.6VirSim的图形方式和每个窗口的介绍附录A.VCS的参数附录B.virsim简明帮助附录C.simv简明帮助第一节验证当代码编写完之后,怎么确定是正确的呢,代码能不能符合设计要求,能不能完成所需要的功能,这就是验证所要做的工作。验证在设计中有很重要的地位,从

2、设计流程中可以看到,几乎设计工作每前进一步,都要进行验证。对验证的要求,大多数人认为只要编译通过之后,能实现功能就可以了,其实决不仅仅这么简单,验证的目的应该是尽量多的找到代码中的错误,不管是编写错误还是功能错误,找出的错误越多,验证工作就做的越好越好。既然验证这么重要,如何进行验证呢?对于验证来说,不同等级的验证,它的方法是不一样的。什么是验证的等级,从设计流程(下图)可以看到,验证可以大致分为单独子模块验证、功能模块验证、系统顶级验证。。单独子模块验证,需要做的工作是验证它的功能和逻辑是否符合设计要

3、求。功能模块验证,需要验证这个模块的功能可不可以满足要求,是否会有非法数据或不该有的输出,错误的状态等。。系统顶级验证,更关注于系统整体的行为方式,模块间的联系和通讯,总线信号,数据流路径是否满足设计要求,数据处理或时序正确与否等。验证需要一个支持的平台,这就是test_bench,在这个测试平台上,有激励信号产生器、被测模块、响应分析和监测器,(下图)激励与控制:输入端口设置,测试向量,测试模式设置,同步。响应分析器和监测器:可以及时监控输出信号变化,可以判断输出信号是正确、合法、错误、非法等等。St

4、imulusMonitorModule&&ControlAnalyzertestbench可以用verilog描述语言搭建,也可以用C语言编写,如果用C语言编写,还需要相关的编译器并和与verilog的接口。第二节VCS的简单使用方法2.1什么是VCSVCS的全称是VerilogCompileSimulator,是Synopsys公司的强有力的电路仿真工具,可以进行电路的时序模拟。2.2VCS的工作方式VCS运行首先把输入的verilog源文件编译,然后生成可执行的模拟文件,也可以生成VCD或者VCD+

5、记录文件。然后运行这个可执行的文件,可以进行调试与分析;或者查看生成的VCD或者VCD+记录文件。还生成了一些供分析和查看的文件,以便于调试。2.3怎样进行仿真和验证仿真测试一个模块的大致步骤如下:(1)首先需要编写好模块的verilog代码。(2)搭建testbench,充分了解被测模块的特性,编写测试向量,输入端口的激励,编写响应分析和监测部分。(3)运行VCS进行模拟,查看输出或者波形。(4)若发现错误,分析错误类型和原因,修改代码或者修正测试方法,直到符合测试要求。2.4VCS的运行方式VCS的

6、运行方式有两种,一种是交互模式(interactivemode),一种是批处理模式(batchmode),两种方式各有优劣,具体用在不同的情况下。在测试小模块或者底层模块,情况不太复杂的时候,而又需要很详细信息的时候,可以采用交互模式,交互性能更好,显示更直观;当进行复杂测试而关注于整体性能,而不必去查看每个信号的时候,只需要查看所需要关心的信号即可,这种情况可以用批处理模式。2.5VCS简单使用例子下面用一个简单的例子来说明如何使用VCS这是个四位全加器的verilog代码,存储为add4.v,mod

7、uleaddr4(clk,in1,in2,sum,carry);output[3:0]sum;outputcarry;inputclk;input[3:0]in1,in2;reg[3:0]sum;regcarry;integertemp;initialbeginsum=0;carry=0;endalways@(posedgeclk)begintemp=in1+in2;sum=temp;if(temp>15)carry=1;elsecarry=0;endendmodule然后再根据这个模块写一个测试模块,

8、也称之为testbench,存为top.v,moduletop;regclk_reg;reg[3:0]in1_reg,in2_reg;wire[3:0]sum;wirecarry;addr4a4(clk_reg,in1_reg,in2_reg,sum,carry);parameterd=100;initialbeginclk_reg=0;in1_reg=0;in2_reg=0;repeat(16*100)begin#din1_reg=in1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。