chiseltest 测试工具中的 initSource、initSink 或 setSinkClock 的目的是什么?

What the purpose of `initSource`, `initSink` or `setSinkClock` in chiseltest test harness?

在 chisel-template test example 中有一些解耦值的初始化调用方法:

class GCDSpec extends FreeSpec with ChiselScalatestTester {

  "Gcd should calculate proper greatest common denominator" in {
    test(new DecoupledGcd(16)) { dut =>
      dut.input.initSource()
      dut.input.setSourceClock(dut.clock)
      dut.output.initSink()
      dut.output.setSinkClock(dut.clock)

//...

我找不到说明这些方法用途的文档。为什么我们必须对解耦输入进行 «init source or sink»?

api documentation 没有填充它的文档。

两个init方法做如下 dut.input.initSource() 将输入去耦的有效信号设置为 false.B dut.output.initSink() 将输出解耦的就绪信号设置为 false.B 我认为你可以自己手动完成这些。 时钟设置调用会做一些更复杂的事情,以便协调跨 fork 调用的时钟处理,这些调用通常与 enqueuedequeue 函数族一起使用。这可能是从 DUT 推断出来的,但检测 decoupled 接口目前有点困难。

对这些函数的样板调用可以更简洁地指定为

  dut.input.initSource().setSourceClock(dut.clock)
  dut.output.initSink().setSinkClock(dut.clock)

因为 initSourceinitSync return 端口解耦端口

至于文档,这绝对应该为解耦助手进行改进。我已将注释添加到现有 documentation issue