首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ChiselTest -期望UInt中有一个位值

ChiselTest -期望UInt中有一个位值
EN

Stack Overflow用户
提问于 2022-03-09 18:44:16
回答 1查看 193关注 0票数 0

根据这个:https://github.com/chipsalliance/chisel3/issues/2439,我决定在可能的情况下将所有的VecBool更改为UInt。VecBool的一个特性是测试每个位的值很简单。

例如,假设我有一个返回UInt的模块。我想测试一个特定的位设置,但我不在乎其他位是什么。有了VecBool,我可以很容易地做到这一点:

代码语言:javascript
复制
dut.io.v(bit).expect(true.B)

是否有使用UInt的等价物?

代码语言:javascript
复制
dut.io.u(bit).expect(true.B)  // this isn't allowed

我能想出的最好办法就是这个丑陋的烂摊子:

代码语言:javascript
复制
assert(dut.io.u.peek().litValue & (1 << bit) != 0)

如果这是在Chisel中所能做的最好的事情,那么是否应该在UInt上存在一个特殊的UInt,用户可以期望在特定位上有一个值呢?

我想,对于UInt的子部分(也就是提取UInt的一部分进行测试),也可以问同样的问题。

EN

回答 1

Stack Overflow用户

发布于 2022-03-09 20:25:39

我能想到的改善“丑陋的混乱”建议的唯一方法是使用新的(自X.5.1以来) peekInt()方法。所以,就像:

代码语言:javascript
复制
assert(dut.io.u.peekInt() & (1 << bit) != 0)

我很乐意接受一个添加expectBit()类方法的PR。我们如何做到这一点有多种可能性:

  1. expectTrue(bit: Int)expectFalse(bit: Int)
  2. expectBit(bit: Int, value: BigInt)
  3. something?

就我个人而言,我更喜欢选项1,因为对于选项2,不清楚哪个参数是值,哪个参数是位。

让我们讨论一个最棘手的问题或公关。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71414516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档