Генераторы случайных тестов (часто сокращенно RTG или ISG [1] для Instruction Stream Generator или Instruction Sequence Generator [1] ) — это тип компьютерного программного обеспечения , которое используется при функциональной проверке микропроцессоров . Их основное применение заключается в предоставлении входного стимула для тестируемого устройства .
В среде моделирования / проверки испытательного стенда симулятор обрабатывает входные данные, созданные RTG, а мониторы покрытия могут использоваться для проверки того, что генератор правильно тестирует конструкцию. [2]
Генераторы случайных тестов варьируются по области применения от простых скриптов и параметризованных макросов , которые можно создать за несколько недель, до полнофункциональных систем, требующих обширной разработки программного обеспечения. Генераторы случайных тестов чаще всего создаются проектными организациями.
Генераторы тестов на основе таблиц являются самыми простыми из доступных RTG. Создание таких генераторов может быть выполнено относительно быстро, а требования к обслуживанию часто невелики. Эти генераторы работают, собирая знания об архитектуре набора инструкций проекта и сохраняя их в реляционной базе данных для последующего использования. Из-за своей упрощенной природы генераторы на основе таблиц могут использоваться менее квалифицированным персоналом для создания интересных тестов. Однако у этих генераторов есть недостаток, поскольку их реализация, как правило, ограничена простыми архитектурами. Использование на более сложных ISA может привести к невозможности достичь крайних случаев или создать сложные сценарии. Генераторы на основе таблиц также могут иногда генерировать недействительные тесты.
Статические генераторы похожи на генераторы на основе таблиц, за исключением того, что большая часть инструкций, операндов и выборки данных находится в сложном процедурном коде . Статические генераторы способны производить более случайное поведение, чем генераторы на основе таблиц, но все еще испытывают трудности с попаданием во многие угловые случаи. Кроме того, уровень навыков, требуемый для создания и поддержки такого инструмента, резко возрастает, как только достигается этот уровень сложности.
Динамические генераторы включают в себя значительные знания об архитектуре, которая тестируется. Они повышают способность менее опытных пользователей генерировать сложные тесты, которые могут поражать труднодоступные угловые случаи, не спотыкаясь о тонкие подводные камни программирования. Эти дополнительные знания, гибкость и простота использования отражаются в более сложном генераторе, и, следовательно, стоимость создания и обслуживания генератора выше, чем для табличных или статических генераторов.