集成实验VCS实验报告_第1页
集成实验VCS实验报告_第2页
集成实验VCS实验报告_第3页
集成实验VCS实验报告_第4页
集成实验VCS实验报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、武汉大学电工电子实验教学示范中心集成电路设计实验实验报告电子信息 学院 电子信息工程 专业 2014 年 5 月 22 日实验名称8位累加器VCS CLI仿真验证(实验三)指导教师孙涛姓名江燕婷年级2011级学号25成绩一、预习部分1 实验目的(预期成果)2 实验基本原理(概要)3 主要仪器设备(实验条件,含必要的元器件、工具)一、实验目的掌握集成电路计算机设计工具验证仿真工具VCS(Verilog Compiled Simulator)的基本操作命令行命令,从集成电路Verilog 设计到VCS 验证的基本流程;掌握利用命令行来实现对Verilog 设计的调试与分析。二、实验基本原理 1.V

2、CS 是编译型Verilog 模拟器,它完全支持OVI 标准的cVerilog HDL 语言、PLI 和SDF。VCS 首先会读入Verilg 的源文件,检查语法及语言结构错误,即Compiler;然后结合测试模块,进行时序的仿真,即Simulator;最后根据时序图进行调试,修改源程序,即Debugger。 2.本次实验中需要用到的一些基本命令有:ls- 显示文件名cd- 转换目录cd/././-退出两层more- 以分页方式查看文件内容pwd- 显示当前路径 vcs source_file complie_time_options 编译verilog文件成为一个可执行的二进制文件,sour

3、ce_file 指所有用Verilog 编写的待测文件。simv run_time_options 运行可执行文件 vcs source_files R 单命令行方式,-R 表示编译后立即执行。 3.VCS调试的基本方式a.Verilog SystemTask calls主要是将一些函数加到测试模块中,从而实现相应的操作。b. CLI调试,实际上是用命令行的方式来进行调试。c. VirSim进行仿真、验证与调试。 4.8位累加器逻辑框图 图1 5.实验设备与软件平台UNIX 服务器,unix 工作站及Synopsys VCS。二、实验操作部分1 实验数据、表格及数据处理(综合结果概要、仿真波形

4、图、时序分析结果、signalTAPII 结果等)2 实验操作过程(可用图表示)3 结论三、实验操作过程1.VCS的编译此步骤实验内容参照实验讲义进行,略过。2. 利用Verilog SystemTask Calls进行调试。(1)在控制台下键入:cd ././lab2/parta进入lab2 的parta 部分, shell vcs f adder.f R,进行8 位的加法运算,但会出现如下的显示:图2这说明在源代码中存在错误,接下来要做的就是把错误找出来。(2)shellvi addertb.v进入vi编辑器对addertb.v文件修改。首先对add8 的模块进行检测,如图所示在相应部分添

5、加画圈部分代码。图3其中add8(u1)是指8 位加法器的低四位相加模块。加入后保存文件,shell vcs f adder.f R重新编译文件,会有如下的显示:图4(3)因此在add8(u1)中存在错误。为了进一步的检测,如图所示在相应部分继续添加画圈部分代码。图5为了设置断点将$finish 改为$stop,这样每当发现一个错误的时候,结果都会由$display 函数显示出来,同时仿真过程会停在出错的地方。shell vcs f adder.f R重新编译文件,VCS 在遇到$stop 后会停止仿真,同时进入CLI 的调试阶段。图6(4)可以看到在低位的相加上结果有误。为了确定最终的错误位

6、置还要继续下一组数据的相加,在CL 下多次输入”.”,最后可确定问题出在fa模块上。图7(5)Cl quit,退出CLI 模式。Shellvi fa.v进入vi编辑器对fa.v文件修改,问题出在数据相加时没有将cin 位加上。图8(6)修改后重新编译,然后运行程序。shell simv +monitoroff,此时可以看到无错误提示,即运算正确。图9(7)利用+monitoroff 可以在运行程序时跳过所有的$monitor 命令,从而加快运行速度。图103.利用VCS CLI进行调试(1) cd ./partb进入lab2的partb。再一次运行程序,看是否运行正确。shell vcs f

7、adder.f R,得到如下结果:图11为了可以解决出现的问题,这时需要在addertb.v 中设置断点,把$finish 改为$stop,如下:图12(2)接着编译并启动CLI 界面。shell vcs f adder.f +cli+3 R s l sim.log,-s 可以启动CLI 并且将仿真时间停在0 时刻,-l 可以将所写过的命令记录下来。cli_0 ?可以显示所在的位置,即位于模块的哪一层。cli_1 scope,cli_2.程序开始运行,有如下的显示。cli_3 show variables,会显示所有的变量。cli_4 print a_test a_test b_test ci

8、n_test cout_test sum_test可显示所有的变量值。图13 (3) 可见sum_test 的结果是不正确的,cli_5scope u1可以进入u1(add8)模块。cli_6 show variables。cli_7 alias praves print a b sum sum_0 sum_1 cin c4 。为了方便可以利用alias 命令新设立一个命令praves,用来显示变量值,cli_8 prvaves。图14 (4) 可见问题出在高四位,为了确定错误需要检查源文件,另外开一个UNIX 的控制台。在add8.v中可以看到,在对结果的高四位以及输出进位的赋值均出现了错误

9、。回到CLI 环境下,进行如下的操作:cli_9 print zero_add_cin one_add_cin,可得:zero_add_cin: 0 one_add_cin:1。对上述变量强制赋值,如下:cli_10 force zero_add_cin = 1cli_11 force one_add_cin =0图15(5) 运用设定好的命令praves 来显示变量值, cli_12 pravas zero_add_cin one_add_cin,输出显示命令错误。cli_13 tbreak #10,cli_14 .,cli_15 praves, 输出显示命令错误。cli_16 print

10、a_test a_test b_test cin_test cout_test sum_test,如下所示:图16结果正确,现在add8 模块中设置断点,以变量c4 的上升沿位为标志。cli_17 always posedge u1.c4,cli_18 . 可以发现从60 时刻到26400 时刻均没有出现错误。cli_19 print a_test a_test b_test cin_test cout_test sum_test,显示变量值:a_test:01 b_test:08 cin_test:0 cout_test:0 sum_test:08结果正确,但由于仿真运行到断点出就停止了,那

11、么断点后出现的错误就无法检测到,所以需要去除断点的限制。cli_20 tbreak #1,cli_21 .,cli_22 show break会显示如图所示断点。(6) cli_24 delete 2,cli_25 . 则运行后成功编译如下图。图17(7)可以将上述命令写在一个约束文件(script file)中,然后直接运行。这里已有一个test.s的文件,下面来看如何运行。(8)cli_26 $reset,cli_30 source test.s,图18(9)cli_31 prtb,cli_32 . 可以看到运行无误,此时结束仿真,退出CLI,检查log 文件,可以看到所有的操作都被记录在

12、文件中。cli_33 $finish。图19图20(10) shell more sim.log可以看到所有命令均被记录,由此也可以完成约束文件的建立。三、实验效果分析(与预期结果的比较,实验中发现的问题。包括仪器设备等使用效果)四、实验思考题1 集成电路从设计到验证的基本流程?答:集成电路设计的基本流程是:(1)功能设计阶段,(2)设计描述和行为级验证,(3)逻辑综合,(4)门级验证,(5)布局和布线。验证过程:(1)用VCS编译Verilog源程序,(2)执行simv进行仿真验证,(3)在错误点停下,(4)确定错误并改正(4)编译仿真确认修改是否正确(5)解释结果。2 VCS 对veril

13、og 模型进行仿真包括哪两个步骤?答:VCS 对verilog 模型进行仿真包括两个步骤:(1)编译verilog文件成为一个可执行的二进制文件,命令为: vcs source_file complie_time_options;(2)运行可执行文件,simv run_time_options3 VCS 验证各选项参数的含义?答:(1) -y lib_dir 在lib_dir 的路径下的所有文件中寻找未被编译的相关模块,(2)+libext+lib_ext 在lib_dir 的路径下使用文件的扩展名lib_ext 来寻找文件,(3) -s 在0 时刻停止仿真,(4) $stop 采用断点的方式

14、停止仿真,$finish 终止仿真过程,$display 将数据或消息等显示在控制台上,(5)? 显示所在的位置,即位于模块的哪一层,(6) print 显示所有的变量值,(7)scope 进入指定模块。4 在lab1 中,能不能在adder.f 文件中加入-R?答:不能。-R的作用是显示文件及所有子目录,而adder.f为自定义格式,没有其他文件或子目录可以显示。5 在lab1 中,是否可以用-v 代替-y?如果可以该怎样进行?答:在lab1 中,可以用-v 代替-y,将命令行shell vcs addertb.v add8.v y ././lib +libext+.v R改为:shell vcs addertb.v add8.v v vcs因为partb文件夹下仅有两个文件:addertb.v,add8.v,其余的模块放在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论