我们正在Chisel中实现一个处理器,并且有许多非常棘手的测试用例。对于具有大量状态的元素,我们希望动态生成长序列的测试向量,并同时计算正确的响应。在Chisel 3中,似乎唯一的方法是使用Java内省来破解它,将scala代码连接到C ++测试工具,并在C ++代码中生成激励向量和纠正响应。
不是很干净。有没有办法留在Scala框架中并在Scala代码中编写动态测试?到目前为止,问题一直是将Scala连接到由Verilator生成的C ++。是否有一种干净的方法可以使Verilator生成的C ++模拟器与Scala / Chisel测试工具代码交互,生成激励矢量并动态测试响应?
由于
答案 0 :(得分:0)
查看凿子测试人员https://github.com/ucb-bar/chisel-testers。它们提供了一个Verilator后端,可以从Scala为您驱动Verilator C ++模拟器。 Chisel Tutorials(https://github.com/ucb-bar/chisel-tutorial)使用Chisel Testers,因此可以提供一些简单的例子。
特别是,AdvTester
是凿子测试人员中最强大的方法。您可以在凿子测试人员的测试中看到一些用途: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