可以对向量 IO 进行部分赋值,如下所示:
import chisel3._
class example_1 extends Module {
val io = IO(new Bundle {
val in1 = Input(Vec(4, Bool())
val out1 = Output(Vec(4, Bool())
})
for (I <- 0 to 3){
io.out1(I) := io.in1(I)
}
}
是否可以对向量的多位切片进行部分分配。下面的代码不起作用
import chisel3._
class example_1 extends Module {
val io = IO(new Bundle {
val in1 = Input(Vec(4, Bool())
val out1 = Output(Vec(4, Bool())
})
for (I <- 0 to 1){
io.out1((I*2)+2-1, I*2) := io.in1((I*2)+2-1, I*2)
}
}
然而,人们会认为使用 slice 应该可以做到这一点,而 slice 用于引用 io.in1 向量的切片
val in1_sl = io.in1.slice(0, 2)
无法在赋值的 LHS 上使用 slice 来创建 io.out1 的切片:
io.out1.slice(0, 2) := io.in1.slice(0, 2)
我在这里使用的示例仅用于演示目的。