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
调用的时钟处理,这些调用通常与 enqueue
和 dequeue
函数族一起使用。这可能是从 DUT 推断出来的,但检测 decoupled
接口目前有点困难。
对这些函数的样板调用可以更简洁地指定为
dut.input.initSource().setSourceClock(dut.clock)
dut.output.initSink().setSinkClock(dut.clock)
因为 initSource
和 initSync
return 端口解耦端口
至于文档,这绝对应该为解耦助手进行改进。我已将注释添加到现有 documentation issue
在 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
调用的时钟处理,这些调用通常与 enqueue
和 dequeue
函数族一起使用。这可能是从 DUT 推断出来的,但检测 decoupled
接口目前有点困难。
对这些函数的样板调用可以更简洁地指定为
dut.input.initSource().setSourceClock(dut.clock)
dut.output.initSink().setSinkClock(dut.clock)
因为 initSource
和 initSync
return 端口解耦端口
至于文档,这绝对应该为解耦助手进行改进。我已将注释添加到现有 documentation issue