scala - 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 文档没有填充它的文档。
解决方案
这两个 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
返回端口解耦端口
至于文档,对于解耦的助手来说,这绝对应该得到改进。我已在现有文档问题中添加了一条注释以执行此操作
推荐阅读
- html - 如何从选择元素中清除css?
- html - 在行 html 表中创建一个新行
- python - 你可以在使用 Python 的雨云图上让箱形图与半小提琴图重叠吗?
- python - 使用 Python 的 gremlin 模块将顶点添加到 Amazon Neptune 图形数据库
- php - Laravel Throwable 无法处理异常 - 得到 500 内部错误
- spring-webflux - 使用 Spring webflux,是否返回 Mono
与返回完全实现的 Foo 实例相比,减少序列化成本? - python - 如何为超过小时数的数据分配小时数?
- python - 将 chess.com 玩家游戏数据读入 spark 数据框
- c++ - Windows 窗体中的 C++ rtsp 流
- linux - SSL 无法在使用 NGINX 的 Dockerized certbot 中获取本地颁发者证书