在凿子iotesters中,我们通过了一个工厂,该工厂为凿子创建了凿子设计,例如()=>新的DUT,如下所示:
"Test" should "simulate" in {
chisel3.iotesters.Driver.execute(arguments, () => new DUT) { c => new MyPeekPokeTester(c) } should be (true)
}
如果我有很多测试和大型设计,则每项测试都会进行设计细化,从而导致运行时间较长。由于对于许多测试来说,可能是通过了完全相同的设计,因此出现了一个逻辑问题-是否有办法在多个测试中重用精心设计的设计(取决于后端的DUT.fir或DUT.v)?在每次测试开始时都会调用一次重置,因此不会引起功能问题。
答案 0 :(得分:2)
我建议构建一个聚集许多测试人员的PeekPokeTester。像
class MyMegaPeekPokeTester(c: MyDut) extends PeekPokeTester(c) {
new MyPeekPokeTester1(c) &&
new MyPeekPokeTester2(c) &&
...
new MyPeekPokeTesterN(c)
}
您可以通过多种方式来解决这个问题(将类放入列表中,以编程方式在它们之间调用reset等)。
我们正在努力对测试仪进行重构和现代化,此问题正在考虑中。一种复杂的情况是,PeekPokeTesters需要访问dut的实例,以便提供对IO的类型安全的访问。很难序列化或保留此信息。