Динамический испытательный жгут в долоте 3

Мы внедряем процессор в Chisel и имеем много очень сложных тестовых случаев. Для элементов, которые имеют много состояний, мы хотим генерировать длинные последовательности тестовых векторов на лету, а также вычислять правильный ответ на лету. В долоте 3 кажется, что единственный способ сделать это - взломать его, используя Java-интроспекцию, для подключения кода Scala к тестовому устройству C++ и генерирования векторов стимулов и правильных ответов в коде C++.

Не очень чисто. Есть ли способ остаться в рамках Scala и писать динамические тесты в коде Scala? До сих пор проблема заключалась в подключении Scala к C++, который генерируется Verilator. Есть ли чистый способ заставить сгенерированный Verilator симулятор C++ взаимодействовать с кодом тестового жгута Scala/Chisel, который генерирует векторы стимулов и тестирует ответы на лету?

Спасибо

1 ответ

Решение

Проверьте тестеры долота https://github.com/ucb-bar/chisel-testers. Они предоставляют бэкэнд Verilator, который будет управлять симулятором Verilator C++ для вас из Scala. В учебниках по долотам ( https://github.com/ucb-bar/chisel-tutorial) используются тестеры долотов, поэтому можно привести несколько простых примеров.

В частности, AdvTester является самой мощной методологией в тестерах зубил. Вы можете увидеть некоторые примеры использования в тестах для тестеров на долото: https://github.com/ucb-bar/chisel-testers/blob/master/src/test/scala/examples/AdvTesterSpec.scala и https: // github..com / UCB-бар / долото-тестеры / BLOB / Master / SRC / тест / / примеры Scala / DecoupledAdvTester.scala

Другие вопросы по тегам