首页 范文大全 古典文学 职场知识 中国文学 公文书信 外国名著 寓言童话 百家讲坛 散文/诗歌 美文欣赏 礼仪知识 民俗风情
  • 工作总结
  • 工作计划
  • 心得体会
  • 竞聘演讲
  • 会议发言
  • 爱国演讲
  • 就职演说
  • 开业开幕
  • 思想学习
  • 征文演讲
  • 经验材料
  • 述职报告
  • 调研报告
  • 工作汇报
  • 年终总结
  • 申报材料
  • 学习体会
  • 企划方案
  • 活动方案
  • 技巧经验
  • 模板范例
  • 思想宣传
  • 经济工作
  • 工作报告
  • 组织人事
  • 反腐倡廉
  • 慰问贺电
  • 先进事迹
  • 思想汇报
  • 入党申请书
  • 党会发言
  • 先进性教育
  • 入团申请书
  • 个人简历
  • 演讲稿
  • 调查报告
  • 实习报告
  • 和谐社会
  • 观后感
  • 读后感
  • 作文范文
  • 自我鉴定
  • 讲话稿
  • 自查报告
  • 集成实验VCS实验报告

    时间:2020-10-17 12:34:04 来源:蒲公英阅读网 本文已影响 蒲公英阅读网手机站

    相关热词搜索:实验 集成 报告

     武汉大学 电工电子实验教学示范中心 集成电路设计实验实验报告 电子信息 学院

      电子信息工程

     专业

     XXXX

     年 X 月 XX 日

     实验名称 8 位累加器 VCS CLI 仿真验证(实验三) 指导教师

     姓名

     年级 级 学号

     成绩

     一、预习部分 1. 实验目的(预期成果)

     2. 实验基本原理(概要)

     3. 主要仪器设备(实验条件 , 含必要的元器件、工具)

     一、实验目的 掌握集成电路计算机设计工具验证仿真工具 VCS(Verilog Compiled Simulator)的基本操作命令行命令 , 从集成电路 Verilog 设计到 VCS 验证的基本流程;掌握利用命令行来实现对 Verilog 设计的调试与分析。

     二、实验基本原理

     1.VCS 是编译型 Verilog 模拟器 , 它完全支持 OVI 标准的 cVerilog HDL 语言、PLI 和 SDF。VCS 首先会读入 Verilg 的源文件 , 检查语法及语言结构错误 , 即Compiler;然后结合测试模块 , 进行时序的仿真 , 即 Simulator;最后根据时序图进行调试 , 修改源程序 , 即 Debugger。

     2.本次实验中需要用到的一些基本命令有:

     >ls- 显示文件名 >cd- 转换目录 >cd/../../-退出两层 >more- 以分页方式查看文件内容 >pwd- 显示当前路径 > vcs source_file [complie_time_options] 编译 verilog 文件成为一个可执行的二进制文件 , source_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. 实验数据、表格及数据处理(综合结果概要、仿真波形图、时序分析结果、signalTAPII 结果等)

     2. 实验操作过程(可用图表示)

     3. 结论

     三、实验操作过程 1.VCS 的编译 此步骤实验内容参照实验讲义进行 , 略过。

     2. 利用 Verilog SystemTask Calls 进行调试。

     (1)在控制台下键入:cd ../../lab2/parta 进入 lab2 的 parta 部分, shell> vcs –f adder.f –R ,进行 8 位的加法运算 , 但会出现如下的显示:

     图 2 这说明在源代码中存在错误 , 接下来要做的就是把错误找出来。

     (2)shell>vi addertb.v 进入 vi 编辑器对 addertb.v 文件修改。首先对 add8 的模块进行检测 , 如图所示在相应部分添加画圈部分代码。

     图 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)可以看到在低位的相加上结果有误。为了确定最终的错误位置还要继续下一组数据的相加 , 在 CL 下多次输入”.” , 最后可确定问题出在 fa 模块上。

     图 7 (5)Cl> quit , 退出 CLI 模式。Shell>vi fa.v 进入 vi 编辑器对 fa.v 文件修改 , 问题出在数据相加时没有将 cin 位加上。

     图 8

     (6)修改后重新编译 , 然后运行程序。shell> simv +monitoroff , 此时可以看到无错误提示 , 即运算正确。

     图 9 (7)利用+monitoroff 可以在运行程序时跳过所有的$monitor 命令 , 从而加快运行速度。

     图 10

     3.利用 VCS CLI 进行调试 (1) > cd ../partb 进入 lab2 的 partb。再一次运行程序 , 看是否运行正确。shell> vcs –f 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 cin_test cout_test sum_test 可显示所有的变量值。

     图 13

     (3) 可见 sum_test 的结果是不正确的 , cli_5>scope 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 中可以看到 , 在对结果的高四位以及输出进位的赋值均出现了错误。

     回到 CLI 环境下 , 进行如下的操作:cli_9> print zero_add_cin one_add_cin , 可得:

     zero_add_cin: 0 one_add_cin:1。对上述变量强制赋值 , 如下:

     cli_10> force zero_add_cin = 1 cli_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 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 结果正确 , 但由于仿真运行到断点出就停止了 , 那么断点后出现的错误就无法检测 到 , 所以需要去除断点的限制。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 文件 , 可以看到所有的操作都被记录在文件中。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 对 verilog 模型进行仿真包括哪两个步骤? 答:VCS 对 verilog 模型进行仿真包括两个步骤:(1)编译 verilog 文件成为一个可执行的二进制文件 , 命令为:> vcs source_file [complie_time_options];(2)运行可执行文件 ,

     >simv [run_time_options] 3. VCS 验证各选项参数的含义? 答:(1) -y lib_dir 在 lib_dir 的路径下的所有文件中寻找未被编译的相关模块 ,

     (2)+libext+lib_ext 在 lib_dir 的路径下使用文件的扩展名 lib_ext 来寻找文件 ,

     (3) -s 在 0 时刻停止仿真 ,

     (4) $stop 采用断点的方式停止仿真 , $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 , 其余的模块放在库文件的根目录下。

     -v lib_file 在文件 lib_file 中寻找未被编译的相关模块。

     -y lib_dir 在 lib_dir 的路径下的所有文件中寻找未被编译的相关模块。

     四、源代码(仅记录自己设计的 , 或者针对实验资料修改的部分)

     module fa(a, b, cin, sum, cout); input a, b, cin; output sum, cout; assign {cout, sum} = a + b+cin; endmodule

     教

     师

     评

     语

    • 范文大全
    • 职场知识
    • 精美散文
    • 名著
    • 讲坛
    • 诗歌
    • 礼仪知识