凿子如何连接到这样的端口?
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 测试了它。
我正在学习 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 测试了它。