凿子如何连接到这样的端口?

How does chisel connect to such a port?

我正在学习 Boomv3 的设计。

A部分有写口。格式为

val write_ports = Flipped(Vec(10, Valid(new RegisterFileWritePort(maxPregSz, registerWidth))))

B有一个写端口。格式为

val write_ports = Vec(5, Valid(new RegisterFileWritePort(maxPregSz, 4)))

C有一个写端口。格式为

val write_ports = Vec(5, Valid(new RegisterFileWritePort(maxPregSz, 4)))

我想将 B 和 C 连接到 A。

当我使用

A.write_ports  <> B.write_ports
A.write_ports  <> C.write_ports

,这里会出现failed @: Left and Right are different length Vecs错误。

但是我的本意是A的长度是10,B和C的长度都是5,这样就连起来了

但是我该怎么办呢?

通过这两个批量连接,Chisel 无法找到将 B 和 C 5 大小的 Vec 分配给 B 10 大小的 Vec 的位置。

您应该连接 B 和 C vec 并编写一个批量连接:

A.write_ports  <> B.write_ports ++ C.write_ports

我用 scatie here 测试了它。