Как тестировать модули с вводом bundle / vec?

Как вы тестируете модули с входным портом ввода-вывода типа Vec, Bundle или их составом?

Другими словами, используя PeekPokeTester, как правильно poke() использовать порт типа Vec, Bundle или более сложную композицию этих двух типов? Спасибо!


person apen    schedule 23.06.2020    source источник


Ответы (2)


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, но, к сожалению, они не выглядят вложенными, что не идеально.

person Jack Koenig    schedule 24.06.2020

Вы всегда можете написать специальные вспомогательные функции, которые просто определяют каждое отдельное поле, но это не очень общий характер.

Лучшее решение - использовать новую библиотеку модульных тестов chisel ChiselTest. Он поддерживает поиск, поиск и ожидание литералов Bundle. В частности, ознакомьтесь с примерами в ChiselTest unittest BundleLiteralsSpec.

VectorLiterals все еще находится в стадии разработки в Chisel, но написать для них более общие вспомогательные функции проще, чем связки.

person Chick Markley    schedule 24.06.2020
comment
Я пробовал пользоваться библиотекой. Я могу скомпилировать и запустить предоставленные примеры, но когда я пытаюсь добавить тесты в свой собственный код, мне не удалось заставить .Lit() функцию работать с моим настраиваемым типом данных. Очень странно и запутанно. - person apen; 27.06.2020