Зубило выдает исключение с сообщением об ошибке разработки. Ниже приведен пример моего кода в качестве примера.
chisel3.core.Binding$ExpectedHardwareException: data to be connected 'chisel3.core.Bool@81' must be hardware, not a bare Chisel type. Perhaps you forgot to wrap it in Wire(_) or IO(_)?
Это сообщение об исключении интересно, поскольку 81
за chisel3.core.Bool@
выглядит как идентификатор, а не как хэш-код.
Действительно, Тип данных расширяет черту HasId
, которая имеет поле _id
, и
Поле _id
, кажется, генерирует уникальный идентификатор для каждого компонента.
Я думал, что тип данных переопределяет toString
, чтобы создать строку с type@ID
, но она не переопределяет. Вот почему $node
в приведенном ниже коде не должно быть в состоянии использовать ID.
throw Binding.ExpectedHardwareException(s"$prefix'$node' must be hardware, " +
"not a bare Chisel type. Perhaps you forgot to wrap it in Wire(_) or IO(_)?")
Вместо toString
в Data существует метод toNamed
. Однако этот метод, кажется, вызывается для генерации первого кода, а не для преобразования компонента в строку.
Почему тип данных может показывать свой идентификатор?
Если это не ID, а именно хэш-код, этот вопрос из моего недопонимания.