戳或期待矢量端口的最佳方式

问题描述 投票:0回答:2

如果我需要测试模块:

class myModule extends Module{
  val io = IO( 
    new Bundle{
      val In = Input(Vec(4,SInt(16.W)))
      val Out = Output(Vec(4,SInt(16.W)))
    }
  )
  /*
   ...
  */
}

poke
io.In
向量的最佳方式是什么?我知道你总是可以做一个循环来单独戳
io.In
的每个元素。有没有更好的方法来做到这一点?我尝试过
poke(...io.In.toBits,/*some BigInt*/)
。好像没啥效果。

expect
向量上使用
io.Out
也是同样的问题。

chisel
2个回答
0
投票

我认为这个问题的答案将是尚未实现的向量文字。这些很可能是 2020 年夏季版本的一部分。 请参阅Vec 文字 Chisel3 Issue #849。与此同时,编写一些辅助方法来单独插入元素可能是您最好的选择。


0
投票

也许你可以认为这是一个循环,但我认为使用

.foreach
可以工作

var MyInput  = 15
var MyOutput = 30
dut.io.In.foreach(_.poke(MyInput))
dut.io.Out.foreach(_.expect(MyOutput))
© www.soinside.com 2019 - 2024. All rights reserved.