凿子 3 中的动态测试线束

Dynamic test harness in chisel 3

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

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

谢谢

查看 Chisel 测试器 https://github.com/ucb-bar/chisel-testers. They provide a Verilator backend that will drive the Verilator C++ simulator for you from Scala. The Chisel Tutorials (https://github.com/ucb-bar/chisel-tutorial) 使用 Chisel 测试器,以便提供一些简单的示例。

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