https://mp.weixin.qq.com/s/KqyklKrPLtPm38sftMYlHA

 
1. 使用Maven获取库
 
Chisel相关的库基本上都可以使用Maven获取到(https://mvnrepository.com/artifact/edu.berkeley.cs):
 
 
其中Chisel Iotesters是用来进行验证的库,可以看到各个版本及其发布日期:
 
随便打开一个版本:
可以看到该版本的基本信息,点击jar可以直接下载库的jar包。下面是使用各种构建工具如Maven/Gradle/SBT/Ivy等引入该库的方法。可以复制SBT的引入方法到build.sbt中,即可以下载这个库。
 
下方是该库所依赖的库的信息:
 
其中有chisel3和firrtl,可以看到比我们使用的chisel3 3.1.2新,需要找一个老一点的版本。
 
回溯发现chisel-iotesters 1.2.3刚好匹配,复制如下行到build.sbt:
libraryDependencies += "edu.berkeley.cs" %% "chisel-iotesters" % "1.2.3"
 
如下:
 
然后Intellij IDEA提示Import Changes,选择之后开始下载这个库:
 
点击箭头所示的按钮,可以看到同步的文字信息:
同步完成即可。
 
2. 创建FullAdderTester.scala
 
创建文件,并从chisel-tutorial项目中拷贝代码,如下:
 
直接在该文件中使用main函数验证:
 
看一下这一个Driver()函数签名:
 
这个函数有两个参数列表,即apply(args_a)(args_b)。
 
第一个参数列表包含用来创建一个待测试的模块的函数,即:dutGen: () => T,这个函数不接收参数,返回一个T类型的返回值,T <: MultiIOModule表明类型T是MultiIOModule的子类型,所以返回值是一个模块。
 
第二个参数列表包含一个产生测试器的函数:testerGen: T => PeekPokeTester[T], 即接收一个模块作为参数,返回一个Tester。这里我们返回class FullAdderTest(c: FullAdder) extends PeekPokeTester(c).
 
再来看我们的实现:
在对Driver()函数的调用中,提供了两个参数列表:Driver()()。第一个参数列表提供了一个函数参数,返回FullAdder模块实例,其余的参数都是用默认值。第二个参数列表提供了一个函数参数,返回FullAdderTester。
 
3. 直接执行验证
 
直接点击三角运行符号,运行main函数:
 
可以看到测试成功了,在9个时钟周期里,总共执行了8个测试,都成功了。
 
符合Tester的写法,2个expect循环了4次,总共8个测试。
 
4. sbt shell执行验证
 
compile:
 
因为测试代码放在test而不是main目录下,所以执行test:run命令:
 
也可以使用test:runMain FullAdderTester命令:
 
5. 附录

Chisel3 - 使用chisel-iotesters进行验证的更多相关文章

  1. Chisel3 - Chisel vs. Scala

    https://mp.weixin.qq.com/s/mTmXXBzSizgiigFYVQXKpw     介绍Chisel与Scala的不同与关联.   ​​   一. 层次高低   Chisel是 ...

  2. Chisel3 - model - Hardware Model

    https://mp.weixin.qq.com/s/x6j7LZg7i7i_KcNEA8YCQw   Chisel作为领域专用语言(DSL),用于构建硬件模型.待硬件模型建立后,再基于模型进行仿真. ...

  3. Chisel3 - bind - Binding

    https://mp.weixin.qq.com/s/2318e6VJ4wFGpWwBOmTikA   Chisel数据类型(Data)与Module的绑定关系,根据Data的使用方式不同,而有多种绑 ...

  4. Chisel3 - util - Valid

    https://mp.weixin.qq.com/s/L5eAwv--WzZdr-CfW2-XNA   Chisel提供的Valid接口.如果valid为置1,则表明输出的bits有效:反之,则输出无 ...

  5. Chisel3 - Tutorial - FullAdder

    https://mp.weixin.qq.com/s/Aye-SrUUuIP6_o67Rlt5OQ   全加器   逻辑图如下: ​​   参考链接: https://github.com/ucb-b ...

  6. Chisel3 - 模块

    https://mp.weixin.qq.com/s/2vjM-gcauvHnn6KJzlOm4g   Chisel的模块和Verilog的模块很相似,都用来定义模块结构(hierarchical s ...

  7. Chisel3 - 运算符和位宽推断

    https://mp.weixin.qq.com/s/rI-CJM6GyI6EUHPZ3uYiFg   如同Verilog中的众多运算符,Chisel也针对自身的数据类型,提供了很多运算符.   Ch ...

  8. Chisel3 - 接口方向(Direction)

    https://mp.weixin.qq.com/s/36jreQGpDLCCNfmUwI34lA   模块接口有三种方向:Input/Output/Inout.Chisel在声明模块接口的时候,也需 ...

  9. Chisel3 - 基本数据类型

    https://mp.weixin.qq.com/s/bSrM-wLRn7O_75xYKeoaEQ   Chisel中的基本数据类型,不是Verilog中的Wire和Reg.Wire和Register ...

随机推荐

  1. win10卸载多余应用-通过命令行卸载

    Win10 APP 卸载方式和明细,网络最全.直接包含了编辑好的文件,可以打开编辑或直接删除,部份APP可卸载,但注释了,各位可以看情况是否删除.直接把代码复制保存扩展名为“ps1”即可直接运行,这是 ...

  2. 不需要爬虫也能轻松获取 unsplash 上的图片

    我经常会使用 unsplash, 这里面的图片非常清爽,我的大多数文章的图片都是在这个网上找的,虽然也有同类型网站,但是用过一段时间以后基本都放弃了,图片质量参差不齐,筛选过程太费劲. 但是 unsp ...

  3. Spring Cloud 系列之 Config 配置中心(一)

    服务配置现状 配置文件是我们再熟悉不过的,在微服务系统中,每个微服务不仅仅只有代码,还需要连接其他资源,例如数据库的配置或功能性的开关 MySQL.Redis .Security 等相关的配置.除了项 ...

  4. 一文教你快速搞懂速度曲线规划之S形曲线(超详细+图文+推导+附件代码)

    本文介绍了运动控制终的S曲线,通过matlab和C语言实现并进行仿真:本文篇幅较长,请自备茶水: 请帮忙点个赞

  5. Linux设备子系统初始化

    本文介绍的内容是基于Linux3.1源码,并参考了很多网上找来的资料 Linux内核的启动的流程如下: start_kernel->rest_init->kernel_init->d ...

  6. mongodb cluster

    假设三台机器,ip分别为192.168.1.10,192.168.1.11,192.168.1.12,分别在每台电脑上下载并解压mongodb,关闭防火墙或者开放防火墙端口 一.安装shard 配置文 ...

  7. search(12)- elastic4s-聚合=桶+度量

    这篇我们介绍一下ES的聚合功能(aggregation).聚合是把索引数据可视化处理成可读有用数据的主要工具.聚合由bucket桶和metrics度量两部分组成. 所谓bucket就是SQL的GROU ...

  8. java中"no enclosing instance of type * is accessible"的解决方法

    这种情况一般发生在“在静态方法里面使用内部类” 测试代码: public class Test { public static void main(String[] args) { A a = new ...

  9. NOI Online #2 赛后题解

    color 题意 \(\;\) 给定\(p_1,p_2\),要求\(p_1\)的倍数格子填红色,\(p_2\)的倍数格子填蓝色,既是\(p_1\)又是\(p_2\)倍数的格子颜色任选.求是否存在一种填 ...

  10. springMVC 重定向带参数

    重定向时经常需要带上一定的标志位参数,当然,强大的springmvc提供了便利的操作. 只需要在方法参数中添加RedirectAttributes 或其子类即可! @RequestMapping(&q ...