chisel 3 中的动态测试工具

Posted

技术标签:

【中文标题】chisel 3 中的动态测试工具【英文标题】:Dynamic test harness in chisel 3 【发布时间】:2017-01-12 11:44:26 【问题描述】:

我们正在用 Chisel 实现一个处理器,并且有许多非常棘手的测试用例。对于具有大量状态的元素,我们希望动态生成长序列的测试向量,并动态计算正确的响应。在 Chisel 3 中,这样做的唯一方法似乎是破解它,使用 Java 内省,将 scala 代码连接到 C++ 测试工具,并在 C++ 代码中生成激励向量和正确响应。

不是很干净。有什么方法可以留在 Scala 框架内并在 Scala 代码中编写动态测试?到目前为止,问题一直是将 Scala 连接到 Verilator 生成的 C++。有没有一种干净的方法可以让 Verilator 生成的 C++ 模拟器与 Scala/Chisel 测试工具代码进行交互,从而生成激励向量并即时测试响应?

谢谢

【问题讨论】:

【参考方案1】:

查看凿子测试人员https://github.com/ucb-bar/chisel-testers。他们提供了一个 Verilator 后端,它将为您从 Scala 驱动 Verilator C++ 模拟器。凿子教程 (https://github.com/ucb-bar/chisel-tutorial) 使用凿子测试仪,因此可以提供一些简单的示例。

尤其是AdvTester 是chisel-testers 中最强大的方法。您可以在凿子测试仪的测试中看到一些用途:https://github.com/ucb-bar/chisel-testers/blob/master/src/test/scala/examples/AdvTesterSpec.scala 和 https://github.com/ucb-bar/chisel-testers/blob/master/src/test/scala/examples/DecoupledAdvTester.scala

【讨论】:

看来'chisel-testers' 是我们测试工具中使用的好工具。它同时实现了 peek 和 poke。

以上是关于chisel 3 中的动态测试工具的主要内容,如果未能解决你的问题,请参考以下文章

Scala/Chisel 中的函数式 for 循环

Chisel Tutorial——模块

Chisel3-Intellij IDEA安装Scala插件

Chisel3-Intellij IDEA安装Scala插件

Chisel3 - 基本数据类型

凿子中的systemverilog联合类型