Chisel3 - 使用chisel-iotesters进行验证

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. 附录

转载于:https://www.cnblogs.com/wjcdx/p/10029712.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值