首页 > 解决方案 > chiseltest 测试工具中 `initSource`、`initSink` 或 `setSinkClock` 的用途是什么?

问题描述

在 chisel-template测试示例中,有一些用于解耦值的 init 调用方法:

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)

//...

我找不到解释这些方法用途的文档。为什么我们必须“初始化源或汇”的解耦输入?

api 文档没有填充它的文档。

标签: scalachiselchiseltest

解决方案


这两个 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返回端口解耦端口

至于文档,对于解耦的助手来说,这绝对应该得到改进。我已在现有文档问题中添加了一条注释以执行此操作


推荐阅读