Как вы тестируете модули с входным портом ввода-вывода типа Vec, Bundle или их составом?
Другими словами, используя PeekPokeTester
, как правильно poke()
использовать порт типа Vec, Bundle или более сложную композицию этих двух типов? Спасибо!
Как вы тестируете модули с входным портом ввода-вывода типа Vec, Bundle или их составом?
Другими словами, используя PeekPokeTester
, как правильно poke()
использовать порт типа Vec, Bundle или более сложную композицию этих двух типов? Спасибо!
PeekPokeTester
имеет poke
методы для Bundle
и Vec
, но я не думаю, что у них есть обработка для вложенных версий.
Из ScalaDoc ( все ScalaDoc, относящиеся к Chisel, можно найти по адресу https://www.chisel-lang.org/ ):
def poke(signal: Aggregate, value: IndexedSeq[BigInt]): Unit
def poke(signal: Bundle, map: Map[String, BigInt]): Unit
Они принимают типы, аналогичные Bundle
и Vec
, но, к сожалению, они не выглядят вложенными, что не идеально.
Вы всегда можете написать специальные вспомогательные функции, которые просто определяют каждое отдельное поле, но это не очень общий характер.
Лучшее решение - использовать новую библиотеку модульных тестов chisel ChiselTest. Он поддерживает поиск, поиск и ожидание литералов Bundle. В частности, ознакомьтесь с примерами в ChiselTest unittest BundleLiteralsSpec.
VectorLiterals все еще находится в стадии разработки в Chisel, но написать для них более общие вспомогательные функции проще, чем связки.
.Lit()
функцию работать с моим настраиваемым типом данных. Очень странно и запутанно.
- person apen; 27.06.2020