Chisel 凿子hdl矢量范围赋值

Chisel 凿子hdl矢量范围赋值,chisel,Chisel,我是新来凿高密度脂蛋白。我有一个关于Vec作业的问题。假设我有一个向量,它有n个元素,每个元素都有w位SInt 我如何分配一系列元素,比如说我有两个向量:a=Vec(10,SInt(width=8)),我有b=Vec(3,SInt(width=8)),我如何分配b:=a(2:4) 我知道我可以做循环,有没有更优雅的方法呢?我还没有在上面找到任何示例代码或资料,因为(我似乎您正在寻找Vec中的切片函数 Vec类我找不到这样的函数 因此,简短的回答是不,没有现成的优雅方法来做到这一点 第二个最优雅的

我是新来凿高密度脂蛋白。我有一个关于Vec作业的问题。假设我有一个向量,它有n个元素,每个元素都有w位SInt

我如何分配一系列元素,比如说我有两个向量:
a=Vec(10,SInt(width=8))
,我有
b=Vec(3,SInt(width=8))
,我如何分配
b:=a(2:4)


我知道我可以做循环,有没有更优雅的方法呢?我还没有在上面找到任何示例代码或资料,因为(我似乎您正在寻找Vec中的切片函数 Vec类我找不到这样的函数

因此,简短的回答是不,没有现成的优雅方法来做到这一点

第二个最优雅的事情就是把这样一个函数 在项目的util库中,并尝试最终 使此函数向上游运行

在3中实现它可能如下所示:

class FooTester extends BasicTester {
  def slice[T <: Data](someVec: Vec[T], startIndex: Int, endIndex: Int) : Vec[T] = {
    Vec( for (i <- startIndex to endIndex) yield someVec(i) )
  }

  // An initialized Vec
  val a = Vec(
    Range(0, 10)
      .map(SInt(_, width=8))
  )

  // A declared Vec
  val b = Wire(Vec(3, SInt(width=8)))

  b := slice(a, 2, 4)

  assert(b(1) === SInt(3, width=8))

  when(Counter(10).inc()) {stop()}
}
class FooTester扩展了BasicTester{

def slice[T是的,我知道这是一种写入for循环的方法,但是还有更优雅的方法吗?