在《Chisel实验笔记(二)》中。通过编写TestBench文件,然后使用Icarus Verilog、GtkWave能够測试,查看相关波形。比較直观,在《Chisel实验笔记(三)》直接对得到C++模拟器进行測试。也能够得到測试结果,实际上对C++模拟器进行測试也能够同一时候得到vcd文件,从而使用GtkWave查看波形,得到直观的结果。

本文就介绍了这个过程。

为了得到相应的vcd文件,须要对《Chisel实验笔记(三)》中的代码做一处改动:

在main方法的margs变量中添加一个參数"--vcd"。例如以下:

val margs=Array("--backend","c","--genHarness","--compile","--test","--vcd")  // 添加了一个“--vcd”參数

此时执行该程序。能够输出仿真结果例如以下:

<pre name="code" class="plain">STARTING ./Max2
RESET 5
POKE Max2.io_in0 <- 0x82
POKE Max2.io_in1 <- 0x80
STEP 1 -> 1
PEEK Max2.io_out -> 0x82
EXPECT Max2.io_out <- 130 == 130 PASS
POKE Max2.io_in0 <- 0x65
POKE Max2.io_in1 <- 0xae
STEP 1 -> 2
PEEK Max2.io_out -> 0xae
EXPECT Max2.io_out <- 174 == 174 PASS
POKE Max2.io_in0 <- 0xef
POKE Max2.io_in1 <- 0x3b
STEP 1 -> 3
PEEK Max2.io_out -> 0xef
EXPECT Max2.io_out <- 239 == 239 PASS
POKE Max2.io_in0 <- 0x9c
POKE Max2.io_in1 <- 0xb5
STEP 1 -> 4
PEEK Max2.io_out -> 0xb5
EXPECT Max2.io_out <- 181 == 181 PASS
POKE Max2.io_in0 <- 0x5b
POKE Max2.io_in1 <- 0x2d
STEP 1 -> 5
PEEK Max2.io_out -> 0x5b
EXPECT Max2.io_out <- 91 == 91 PASS
POKE Max2.io_in0 <- 0xc9
POKE Max2.io_in1 <- 0xda
STEP 1 -> 6
PEEK Max2.io_out -> 0xda
EXPECT Max2.io_out <- 218 == 218 PASS
POKE Max2.io_in0 <- 0x2a
POKE Max2.io_in1 <- 0xaa
STEP 1 -> 7
PEEK Max2.io_out -> 0xaa
EXPECT Max2.io_out <- 170 == 170 PASS
POKE Max2.io_in0 <- 0x31
POKE Max2.io_in1 <- 0x64
STEP 1 -> 8
PEEK Max2.io_out -> 0x64
EXPECT Max2.io_out <- 100 == 100 PASS
POKE Max2.io_in0 <- 0x7c
POKE Max2.io_in1 <- 0x86
STEP 1 -> 9
PEEK Max2.io_out -> 0x86
EXPECT Max2.io_out <- 134 == 134 PASS
POKE Max2.io_in0 <- 0x94
POKE Max2.io_in1 <- 0x4f
STEP 1 -> 10
PEEK Max2.io_out -> 0x94
EXPECT Max2.io_out <- 148 == 148 PASS
STEP 1 -> 11
RAN 11 CYCLES PASSED
PASSED


共生成了10组随机数,每次输出当中较大的数据。

同一时候得到了一个Max2.vcd文件,使用gtkwave Max2.vcd就可以打开该文件,结果例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGVpc2hhbmd3ZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

Chisel实验笔记(四)的更多相关文章

  1. java之jvm学习笔记四(安全管理器)

    java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...

  2. 20145221 《Java程序设计》实验报告四:Android开发基础

    20145221 <Java程序设计>实验报告四:Android开发基础 实验要求 基于Android Studio开发简单的Android应用并部署测试; 了解Android组件.布局管 ...

  3. Openstack实验笔记

    Openstack实验笔记 制作人:全心全意 Openstack:提供可靠的云部署方案及良好的扩展性 Openstack简单的说就是云操作系统,或者说是云管理平台,自身并不提供云服务,只是提供部署和管 ...

  4. Huawei-R&S-网络工程师实验笔记20190608-VLAN划分基础(基于端口、MAC地址、子网地址、协议)

    >Huawei-R&S-网络工程师实验笔记20190608-VLAN划分基础(基于端口.MAC地址.子网地址.协议) >>实验开始,先上拓扑图参考: 一.基于端口划分VLAN ...

  5. 官网实例详解-目录和实例简介-keras学习笔记四

    官网实例详解-目录和实例简介-keras学习笔记四 2018-06-11 10:36:18 wyx100 阅读数 4193更多 分类专栏: 人工智能 python 深度学习 keras   版权声明: ...

  6. Java IO学习笔记四:Socket基础

    作者:Grey 原文地址:Java IO学习笔记四:Socket基础 准备两个Linux实例(安装好jdk1.8),我准备的两个实例的ip地址分别为: io1实例:192.168.205.138 io ...

  7. ChCore Lab3 用户进程和异常处理 实验笔记

    本文为上海交大 ipads 研究所陈海波老师等人所著的<现代操作系统:原理与实现>的课程实验(LAB)的学习笔记的第三篇:用户进程与异常处理.所有章节的笔记可在此处查看:chcore | ...

  8. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  9. SQL*Loader实验笔记【二】

      所有SQL*Loader实验笔记 实验案例总结(1-7):     SQL*Loader实验笔记[一] 实验案例总结(8-13):   SQL*Loader实验笔记[二] 实验案例总结(14-19 ...

随机推荐

  1. linux网络启动报错

    报错信息: shutting down interface eth0: error:device "eth0" (/org/freedsktop/networkMaager/Dev ...

  2. 0x3A 博弈论之SG函数

    博弈即玄学啊 (除了nim和二分图博弈什么都不会 算是学了下SG函数吧 这个东西是针对有向图游戏的,相当于把一个局面看作一个点,到达下个局面相当于建一条边 必胜态SG值为0 那么对于一个点,他的SG值 ...

  3. HDFS 文件格式——SequenceFile RCFile

     HDFS块内行存储的例子  HDFS块内列存储的例子  HDFS块内RCFile方式存储的例子

  4. malloc和new出来的地址都是虚拟地址 你就说内存管理单元怎么可能让你直接操作硬件内存地址!

    malloc的实现与物理内存自然是无关的,内核为每个进程维护一张页表,页表存储进程空间内每页的虚拟地址,页表项中有的虚拟内存页对应着某个物理内存页面,也有的虚拟内存页没有实际的物理页面对应.无论mal ...

  5. 算法入门经典-第六章 例题6-21 SystemDependencies

    题意:软件组件之间会有依赖关系,比如你下一个Codeblocks你也得顺带着把编译器给下上.你的任务是模拟安装和卸载软件组件的过程.有以下五种指令,如果指令为“END”则退出程序:若为以下四种指令,则 ...

  6. Spark任务调度

    不多说,直接上干货! Spark任务调度 DAGScheduler 构建Stage—碰到shuffle就split 记录哪个RDD 或者Stage 输出被物化 重新提交shuffle 输出丢失的sta ...

  7. Oracle学习系类篇(三)

    1. 存储过程 CREATE  OR REPLACE PROCEDURE  SP_NAME( PM_NAME [IN/OUT/IN OUT] PM_TYPE...)            {AS}   ...

  8. 【原创】java的反射机制

    什么是java的反射?java在运行期间可以动态的加载.解析和使用一些在编译阶段并不确定的类型,这一机制被称作反射.它可以加载只有运行时才能确定的数据类型,解析类的内部结构,获取其基本信息,如方法.属 ...

  9. PHP中的类函数和类对象

    1.class_exists()函数接受表示类的字符串,检查并返回布尔值.如果类存在,返回true,否则返回false: echo class_exists('Computer'); 2.get_cl ...

  10. LeetCode(15)3Sum

    题目如下: Python代码: def threeSum(self, nums): res = [] nums.sort() for i in xrange(len(nums)-2): if i &g ...