Требуется: T Ошибка долота

Я получаю следующие ошибки долота для io.out(i) := Cat(io.in1(0) ,io.in2) линии. Что это означает? и как мне это исправить? Пожалуйста помоги.

type mismatch;
[error]  found   : chisel3.core.UInt
[error]  required: T
[error]     io.out(i) := Cat(io.in1(0) ,io.in2)

type mismatch;
[error]  found   : chisel3.core.Vec[chisel3.core.UInt]
[error]  required: T
[error]     io.out(i) := Cat(io.in1(0) ,io.in2)

person Shubha    schedule 24.07.2018    source источник
comment
Можете ли вы поделиться источником, поскольку тип возвращаемого значения Cat - UInt, вероятно, тип io.out будет другим и требуется какое-то приведение.   -  person Chick Markley    schedule 24.07.2018


Ответы (1)


Как сказал Чик, нам действительно нужно увидеть больше контекста, но я думаю, что у меня достаточно, чтобы понять, что происходит. Одна часть сообщения об ошибке, которую я подозреваю, вы остановили:

[error] inferred type arguments [chisel3.core.Data] do not conform to method apply's type parameter bounds [T <: chisel3.Bits]
[error]   io.out(i) := Cat(io.in1(0), io.in2)
[error]

Это означает, что тип аргументов для Cat должен быть подтипом chisel3.Bits. Vec не является подтипом Bits, поэтому вы не можете передать Vec Cat.

Было бы полезно получить больше информации о том, что вы пытаетесь сделать, чтобы дать лучший совет, но если вы пытаетесь построить UInt, который является конкатенацией UInt и Vec, вы можете преобразовать Vec в UInt позвонив по номеру .asUInt, например. Cat(io.in1(0), io.in2.asUInt). Если вы пытаетесь построить больший Vec, добавив к нему UInt, вы можете попробовать io.in1(0) +: io.in2.

person Jack Koenig    schedule 24.07.2018